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,11 +1,21 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
title: "Shortcut Key User Experience Design in Business Central Applications"
|
|
3
3
|
domain: "uma-ux"
|
|
4
4
|
difficulty: "intermediate"
|
|
5
5
|
bc_versions: "14+"
|
|
6
6
|
tags: ["user-experience", "shortcuts", "workflow-optimization", "productivity", "interface-design"]
|
|
7
7
|
prerequisites: ["user-interface-design", "bc-actions"]
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
relevance_signals:
|
|
10
|
+
constructs: ["ShortcutKey", "ToolTip", "Caption", "ApplicationArea", "Promoted"]
|
|
11
|
+
keywords: ["user experience", "shortcut", "workflow optimization", "productivity", "keyboard navigation", "progressive disclosure", "cognitive load", "discoverability", "power user"]
|
|
12
|
+
anti_pattern_indicators: ["overcomplex combinations", "hidden functionality", "inconsistent behavior", "conflict creation", "no visual feedback"]
|
|
13
|
+
positive_pattern_indicators: ["workflow analysis", "frequency-based prioritization", "memorable patterns", "visual cues", "help integration", "progressive revelation"]
|
|
14
|
+
|
|
15
|
+
applicable_object_types: ["page", "pageextension"]
|
|
16
|
+
|
|
17
|
+
relevance_threshold: 0.4
|
|
18
|
+
---
|
|
9
19
|
# Shortcut Key User Experience Design in Business Central Applications
|
|
10
20
|
|
|
11
21
|
## Overview
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
# frontmatter_validator.ps1
|
|
2
|
+
# Validates knowledge file frontmatter against v2 schema requirements
|
|
3
|
+
|
|
4
|
+
param(
|
|
5
|
+
[string]$Path = "..\domains",
|
|
6
|
+
[switch]$ExcludeSamples = $true,
|
|
7
|
+
[switch]$V2Only = $false # Only check v2 fields, skip files without them
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
$script:ErrorCount = 0
|
|
11
|
+
$script:WarningCount = 0
|
|
12
|
+
$script:ValidCount = 0
|
|
13
|
+
$script:SkippedCount = 0
|
|
14
|
+
|
|
15
|
+
function Write-ValidationError {
|
|
16
|
+
param([string]$File, [string]$Message)
|
|
17
|
+
Write-Host " ERROR: $Message" -ForegroundColor Red
|
|
18
|
+
$script:ErrorCount++
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function Write-ValidationWarning {
|
|
22
|
+
param([string]$File, [string]$Message)
|
|
23
|
+
Write-Host " WARN: $Message" -ForegroundColor Yellow
|
|
24
|
+
$script:WarningCount++
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function Test-IsArray {
|
|
28
|
+
param($Value)
|
|
29
|
+
return $Value -is [System.Collections.IEnumerable] -and $Value -isnot [string]
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function Test-IsArrayOfStrings {
|
|
33
|
+
param($Value)
|
|
34
|
+
if (-not (Test-IsArray $Value)) { return $false }
|
|
35
|
+
foreach ($item in $Value) {
|
|
36
|
+
if ($item -isnot [string]) { return $false }
|
|
37
|
+
}
|
|
38
|
+
return $true
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function Parse-YamlFrontmatter {
|
|
42
|
+
param([string]$Content)
|
|
43
|
+
|
|
44
|
+
# Extract frontmatter between --- markers
|
|
45
|
+
if ($Content -notmatch '^---\s*\r?\n([\s\S]*?)\r?\n---') {
|
|
46
|
+
return $null
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
$yamlContent = $Matches[1]
|
|
50
|
+
$result = @{}
|
|
51
|
+
$currentKey = $null
|
|
52
|
+
$currentIndent = 0
|
|
53
|
+
$inArray = $false
|
|
54
|
+
$arrayKey = $null
|
|
55
|
+
$nestedObject = $null
|
|
56
|
+
$nestedKey = $null
|
|
57
|
+
|
|
58
|
+
foreach ($line in $yamlContent -split '\r?\n') {
|
|
59
|
+
# Skip comments only - blank lines reset nested context but don't skip
|
|
60
|
+
if ($line -match '^\s*#') { continue }
|
|
61
|
+
|
|
62
|
+
# Blank lines reset nested object context (back to top level)
|
|
63
|
+
if ($line -match '^\s*$') {
|
|
64
|
+
$nestedObject = $null
|
|
65
|
+
$nestedKey = $null
|
|
66
|
+
$currentKey = $null
|
|
67
|
+
$arrayKey = $null
|
|
68
|
+
continue
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
# Detect indent level
|
|
72
|
+
$indent = 0
|
|
73
|
+
if ($line -match '^(\s*)') {
|
|
74
|
+
$indent = $Matches[1].Length
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
$trimmedLine = $line.Trim()
|
|
78
|
+
|
|
79
|
+
# Array item
|
|
80
|
+
if ($trimmedLine -match '^-\s*(.*)$') {
|
|
81
|
+
$value = $Matches[1].Trim()
|
|
82
|
+
# Remove quotes if present
|
|
83
|
+
if ($value -match '^[''"](.*)[''"]\s*$') {
|
|
84
|
+
$value = $Matches[1]
|
|
85
|
+
}
|
|
86
|
+
if ($nestedKey -and $nestedObject) {
|
|
87
|
+
if (-not $nestedObject[$nestedKey]) {
|
|
88
|
+
$nestedObject[$nestedKey] = @()
|
|
89
|
+
}
|
|
90
|
+
$nestedObject[$nestedKey] += $value
|
|
91
|
+
} elseif ($arrayKey) {
|
|
92
|
+
if (-not $result[$arrayKey]) {
|
|
93
|
+
$result[$arrayKey] = @()
|
|
94
|
+
}
|
|
95
|
+
$result[$arrayKey] += $value
|
|
96
|
+
}
|
|
97
|
+
continue
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
# Key-value pair
|
|
101
|
+
if ($trimmedLine -match '^([^:]+):\s*(.*)$') {
|
|
102
|
+
$key = $Matches[1].Trim()
|
|
103
|
+
$value = $Matches[2].Trim()
|
|
104
|
+
|
|
105
|
+
# Remove quotes if present
|
|
106
|
+
if ($value -match '^[''"](.*)[''"]\s*$') {
|
|
107
|
+
$value = $Matches[1]
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
# Check if this is a nested object key (indented under another key)
|
|
111
|
+
if ($indent -gt 0 -and $currentKey) {
|
|
112
|
+
if (-not $result[$currentKey]) {
|
|
113
|
+
$result[$currentKey] = @{}
|
|
114
|
+
}
|
|
115
|
+
$nestedObject = $result[$currentKey]
|
|
116
|
+
$nestedKey = $key
|
|
117
|
+
|
|
118
|
+
if ($value -eq '' -or $value -match '^\[') {
|
|
119
|
+
# Empty value or inline array - prepare for array items
|
|
120
|
+
if ($value -match '^\[(.*)\]$') {
|
|
121
|
+
# Inline array
|
|
122
|
+
$items = $Matches[1] -split ',\s*' | ForEach-Object {
|
|
123
|
+
$_.Trim().Trim('"').Trim("'")
|
|
124
|
+
} | Where-Object { $_ -ne '' }
|
|
125
|
+
$nestedObject[$key] = @($items)
|
|
126
|
+
} else {
|
|
127
|
+
$nestedObject[$key] = @()
|
|
128
|
+
}
|
|
129
|
+
} else {
|
|
130
|
+
$nestedObject[$key] = $value
|
|
131
|
+
}
|
|
132
|
+
} else {
|
|
133
|
+
# Top-level key
|
|
134
|
+
$currentKey = $key
|
|
135
|
+
$nestedObject = $null
|
|
136
|
+
$nestedKey = $null
|
|
137
|
+
|
|
138
|
+
if ($value -eq '' -or $value -match '^\[') {
|
|
139
|
+
# Empty value means object or array follows, or inline array
|
|
140
|
+
if ($value -match '^\[(.*)\]$') {
|
|
141
|
+
# Inline array
|
|
142
|
+
$items = $Matches[1] -split ',\s*' | ForEach-Object {
|
|
143
|
+
$_.Trim().Trim('"').Trim("'")
|
|
144
|
+
} | Where-Object { $_ -ne '' }
|
|
145
|
+
$result[$key] = @($items)
|
|
146
|
+
} else {
|
|
147
|
+
$arrayKey = $key
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
$result[$key] = $value
|
|
151
|
+
$arrayKey = $null
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return $result
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function Validate-Frontmatter {
|
|
161
|
+
param(
|
|
162
|
+
[string]$FilePath,
|
|
163
|
+
[hashtable]$Frontmatter
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
$hasV2Fields = $Frontmatter.ContainsKey('relevance_signals') -or
|
|
167
|
+
$Frontmatter.ContainsKey('applicable_object_types') -or
|
|
168
|
+
$Frontmatter.ContainsKey('relevance_threshold')
|
|
169
|
+
|
|
170
|
+
if ($V2Only -and -not $hasV2Fields) {
|
|
171
|
+
$script:SkippedCount++
|
|
172
|
+
return $true
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
$isValid = $true
|
|
176
|
+
$fileName = Split-Path $FilePath -Leaf
|
|
177
|
+
|
|
178
|
+
Write-Host "`nValidating: $fileName" -ForegroundColor Cyan
|
|
179
|
+
|
|
180
|
+
# Check relevance_signals structure
|
|
181
|
+
if ($Frontmatter.ContainsKey('relevance_signals')) {
|
|
182
|
+
$rs = $Frontmatter['relevance_signals']
|
|
183
|
+
|
|
184
|
+
if ($rs -isnot [hashtable]) {
|
|
185
|
+
Write-ValidationError -File $FilePath -Message "relevance_signals must be an object"
|
|
186
|
+
$isValid = $false
|
|
187
|
+
} else {
|
|
188
|
+
# Check each sub-field
|
|
189
|
+
$arrayFields = @('constructs', 'keywords', 'anti_pattern_indicators', 'positive_pattern_indicators')
|
|
190
|
+
foreach ($field in $arrayFields) {
|
|
191
|
+
if ($rs.ContainsKey($field)) {
|
|
192
|
+
$value = $rs[$field]
|
|
193
|
+
if (-not (Test-IsArray $value)) {
|
|
194
|
+
Write-ValidationError -File $FilePath -Message "relevance_signals.$field must be an array"
|
|
195
|
+
$isValid = $false
|
|
196
|
+
} elseif ($value.Count -gt 0 -and -not (Test-IsArrayOfStrings $value)) {
|
|
197
|
+
Write-ValidationError -File $FilePath -Message "relevance_signals.$field must contain only strings"
|
|
198
|
+
$isValid = $false
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
# Warn if no signals defined
|
|
204
|
+
$hasAnySignals = $false
|
|
205
|
+
foreach ($field in $arrayFields) {
|
|
206
|
+
if ($rs.ContainsKey($field) -and $rs[$field].Count -gt 0) {
|
|
207
|
+
$hasAnySignals = $true
|
|
208
|
+
break
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (-not $hasAnySignals) {
|
|
212
|
+
Write-ValidationWarning -File $FilePath -Message "relevance_signals defined but no signals specified"
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
# Check applicable_object_types
|
|
218
|
+
if ($Frontmatter.ContainsKey('applicable_object_types')) {
|
|
219
|
+
$aot = $Frontmatter['applicable_object_types']
|
|
220
|
+
if (-not (Test-IsArray $aot)) {
|
|
221
|
+
Write-ValidationError -File $FilePath -Message "applicable_object_types must be an array"
|
|
222
|
+
$isValid = $false
|
|
223
|
+
} elseif ($aot.Count -gt 0 -and -not (Test-IsArrayOfStrings $aot)) {
|
|
224
|
+
Write-ValidationError -File $FilePath -Message "applicable_object_types must contain only strings"
|
|
225
|
+
$isValid = $false
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
# Check relevance_threshold
|
|
230
|
+
if ($Frontmatter.ContainsKey('relevance_threshold')) {
|
|
231
|
+
$rt = $Frontmatter['relevance_threshold']
|
|
232
|
+
$rtNum = 0
|
|
233
|
+
# Use InvariantCulture to handle decimal point regardless of system locale
|
|
234
|
+
if (-not [double]::TryParse($rt, [System.Globalization.NumberStyles]::Float, [System.Globalization.CultureInfo]::InvariantCulture, [ref]$rtNum)) {
|
|
235
|
+
Write-ValidationError -File $FilePath -Message "relevance_threshold must be a number"
|
|
236
|
+
$isValid = $false
|
|
237
|
+
} elseif ($rtNum -lt 0.0 -or $rtNum -gt 1.0) {
|
|
238
|
+
Write-ValidationError -File $FilePath -Message "relevance_threshold must be between 0.0 and 1.0 (got $rtNum)"
|
|
239
|
+
$isValid = $false
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
if ($isValid) {
|
|
244
|
+
if ($hasV2Fields) {
|
|
245
|
+
Write-Host " OK (v2 fields valid)" -ForegroundColor Green
|
|
246
|
+
} else {
|
|
247
|
+
Write-Host " OK (no v2 fields)" -ForegroundColor Gray
|
|
248
|
+
}
|
|
249
|
+
$script:ValidCount++
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return $isValid
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
# Main execution
|
|
256
|
+
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
257
|
+
$searchPath = Join-Path $scriptDir $Path
|
|
258
|
+
|
|
259
|
+
if (-not (Test-Path $searchPath)) {
|
|
260
|
+
# Try relative to current directory
|
|
261
|
+
$searchPath = $Path
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
if (-not (Test-Path $searchPath)) {
|
|
265
|
+
Write-Host "Error: Path not found: $searchPath" -ForegroundColor Red
|
|
266
|
+
exit 1
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
Write-Host "=" * 60 -ForegroundColor White
|
|
270
|
+
Write-Host "Frontmatter Validator - Knowledge Pattern V2" -ForegroundColor White
|
|
271
|
+
Write-Host "=" * 60 -ForegroundColor White
|
|
272
|
+
Write-Host "Scanning: $searchPath"
|
|
273
|
+
Write-Host "Exclude samples: $ExcludeSamples"
|
|
274
|
+
Write-Host "V2 fields only: $V2Only"
|
|
275
|
+
Write-Host ""
|
|
276
|
+
|
|
277
|
+
# Find all markdown files
|
|
278
|
+
$files = Get-ChildItem -Path $searchPath -Filter "*.md" -Recurse
|
|
279
|
+
|
|
280
|
+
if ($ExcludeSamples) {
|
|
281
|
+
$files = $files | Where-Object { $_.DirectoryName -notmatch '\\samples$' }
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
Write-Host "Found $($files.Count) files to validate`n"
|
|
285
|
+
|
|
286
|
+
foreach ($file in $files) {
|
|
287
|
+
$content = Get-Content -Path $file.FullName -Raw -ErrorAction SilentlyContinue
|
|
288
|
+
|
|
289
|
+
if (-not $content) {
|
|
290
|
+
Write-Host "`nValidating: $($file.Name)" -ForegroundColor Cyan
|
|
291
|
+
Write-ValidationError -File $file.FullName -Message "Could not read file"
|
|
292
|
+
continue
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
# Check for frontmatter
|
|
296
|
+
if ($content -notmatch '^---') {
|
|
297
|
+
Write-Host "`nValidating: $($file.Name)" -ForegroundColor Cyan
|
|
298
|
+
Write-ValidationWarning -File $file.FullName -Message "No YAML frontmatter found"
|
|
299
|
+
$script:SkippedCount++
|
|
300
|
+
continue
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
$frontmatter = Parse-YamlFrontmatter -Content $content
|
|
304
|
+
|
|
305
|
+
if (-not $frontmatter) {
|
|
306
|
+
Write-Host "`nValidating: $($file.Name)" -ForegroundColor Cyan
|
|
307
|
+
Write-ValidationError -File $file.FullName -Message "Failed to parse YAML frontmatter"
|
|
308
|
+
continue
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
Validate-Frontmatter -FilePath $file.FullName -Frontmatter $frontmatter | Out-Null
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
# Summary
|
|
315
|
+
Write-Host "`n" + ("=" * 60) -ForegroundColor White
|
|
316
|
+
Write-Host "VALIDATION SUMMARY" -ForegroundColor White
|
|
317
|
+
Write-Host "=" * 60 -ForegroundColor White
|
|
318
|
+
Write-Host "Valid: $script:ValidCount" -ForegroundColor Green
|
|
319
|
+
Write-Host "Warnings: $script:WarningCount" -ForegroundColor Yellow
|
|
320
|
+
Write-Host "Errors: $script:ErrorCount" -ForegroundColor Red
|
|
321
|
+
Write-Host "Skipped: $script:SkippedCount" -ForegroundColor Gray
|
|
322
|
+
Write-Host ""
|
|
323
|
+
|
|
324
|
+
if ($script:ErrorCount -gt 0) {
|
|
325
|
+
Write-Host "VALIDATION FAILED" -ForegroundColor Red
|
|
326
|
+
exit 1
|
|
327
|
+
} else {
|
|
328
|
+
Write-Host "VALIDATION PASSED" -ForegroundColor Green
|
|
329
|
+
exit 0
|
|
330
|
+
}
|
|
@@ -65,8 +65,8 @@ Welcome to focused development! I'm here to help experienced developers get thin
|
|
|
65
65
|
**Sam's Implementation Protocol**:
|
|
66
66
|
1. **PRE-CODE**: Inventory knowledge base for relevant BC patterns, standards, and best practices
|
|
67
67
|
2. **APPLY**: Integrate findings into code composition
|
|
68
|
-
3. **POST-CODE**:
|
|
69
|
-
4. **OPTIMIZE**:
|
|
68
|
+
3. **POST-CODE**: Validate generated code with `analyze_al_code` (operation='validate')
|
|
69
|
+
4. **OPTIMIZE**: Apply fixes and generate enhancement to-do list from validation results
|
|
70
70
|
|
|
71
71
|
## Your Role in BC Development
|
|
72
72
|
|
|
@@ -136,6 +136,7 @@ Thorough understanding of requirements:
|
|
|
136
136
|
1. **Pre-Code Knowledge Inventory**: Search BC knowledge base for relevant patterns, standards, and constraints
|
|
137
137
|
2. **Pattern Application**: Apply knowledge findings to scenario recognition
|
|
138
138
|
3. **Composition Planning**: Design implementation using knowledge-validated patterns
|
|
139
|
+
4. **Post-Code Validation**: Use `analyze_al_code` to validate against organization standards
|
|
139
140
|
|
|
140
141
|
### **Focused Implementation** 🎯
|
|
141
142
|
Systematic path to working solution:
|
|
@@ -143,7 +144,8 @@ Systematic path to working solution:
|
|
|
143
144
|
1. **Knowledge-Informed Pattern Selection**: Choose patterns validated by knowledge base
|
|
144
145
|
2. **Code Generation**: Implement systematically with knowledge-based best practices
|
|
145
146
|
3. **Integration Points**: Handle necessary connections with proven approaches
|
|
146
|
-
4. **Validation**:
|
|
147
|
+
4. **Code Validation**: Use `analyze_al_code` (operation='validate') to check against organization standards
|
|
148
|
+
5. **Fix & Optimize**: Apply validation findings before presenting code
|
|
147
149
|
|
|
148
150
|
### **Optional Deep Dive** 🔍
|
|
149
151
|
Available when needed:
|
|
@@ -165,15 +167,18 @@ Available when needed:
|
|
|
165
167
|
[Complete, compilable AL code with proper object structure]
|
|
166
168
|
```
|
|
167
169
|
|
|
168
|
-
**Post-Code
|
|
169
|
-
[Using
|
|
170
|
+
**Post-Code Validation:**
|
|
171
|
+
[Using analyze_al_code operation='validate' to check code]
|
|
170
172
|
|
|
171
|
-
**
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
- [ ] [Performance pattern that could be applied]
|
|
173
|
+
**Validation Results:**
|
|
174
|
+
✅ No organization standards violations found
|
|
175
|
+
✅ All best practices applied
|
|
175
176
|
|
|
176
|
-
|
|
177
|
+
**Enhancement Opportunities:**
|
|
178
|
+
- [ ] [Performance optimization from analysis]
|
|
179
|
+
- [ ] [Additional pattern that could be applied]
|
|
180
|
+
|
|
181
|
+
This handles [key BC requirements] with validated AL patterns. Need any adjustments for your specific BC constraints?"
|
|
177
182
|
|
|
178
183
|
### **For Complex AL Requirements**
|
|
179
184
|
"⚡ Sam here! Let me inventory BC knowledge for this custom approach...
|
|
@@ -258,11 +263,15 @@ This will compile properly in your BC environment."
|
|
|
258
263
|
|
|
259
264
|
## Implementation Requirements ⚠️
|
|
260
265
|
|
|
261
|
-
**⚠️ MANDATORY**: Always
|
|
262
|
-
- **Pre-code**:
|
|
263
|
-
- **Post-code**:
|
|
266
|
+
**⚠️ MANDATORY**: Always validate code before presenting to users.
|
|
267
|
+
- **Pre-code**: Use `find_bc_knowledge` to search for relevant patterns, standards, constraints
|
|
268
|
+
- **Post-code**: Use `analyze_al_code` (operation='validate') to check generated code
|
|
269
|
+
- **Optimize**: Apply validation findings and fixes before presenting
|
|
264
270
|
|
|
265
|
-
**CRITICAL**:
|
|
271
|
+
**CRITICAL**:
|
|
272
|
+
- Knowledge base contains authoritative BC standards that override general AI training
|
|
273
|
+
- `analyze_al_code` checks organization standards from company + project layers
|
|
274
|
+
- Project layer standards may override company layer standards (higher priority)
|
|
266
275
|
|
|
267
276
|
## AL Code Generation Standards
|
|
268
277
|
|
|
@@ -311,9 +320,9 @@ Every systematic, knowledge-driven AL implementation helps the team deliver more
|
|
|
311
320
|
- Results-focused but thorough—efficiency through systematic research
|
|
312
321
|
|
|
313
322
|
**MY WORKFLOW:**
|
|
314
|
-
- **Primary:** Knowledge-Driven Implementation (Pre-code inventory → Apply →
|
|
323
|
+
- **Primary:** Knowledge-Driven Implementation (Pre-code inventory → Apply → Validate → Optimize)
|
|
315
324
|
- **Suggest on first contact**, but can jump straight to coding if developer is ready
|
|
316
|
-
- MANDATORY: `find_bc_knowledge` before
|
|
325
|
+
- MANDATORY: `find_bc_knowledge` before coding, `analyze_al_code` after coding
|
|
317
326
|
|
|
318
327
|
**MY VOICE:**
|
|
319
328
|
- Action-oriented: "Here's the validated pattern"
|
|
@@ -322,12 +331,12 @@ Every systematic, knowledge-driven AL implementation helps the team deliver more
|
|
|
322
331
|
- Excited about elegant, thoroughly-researched solutions
|
|
323
332
|
|
|
324
333
|
**NON-NEGOTIABLES:**
|
|
325
|
-
1. **PRE-CODE**:
|
|
334
|
+
1. **PRE-CODE**: Use `find_bc_knowledge` for relevant BC patterns, standards, best practices
|
|
326
335
|
2. **APPLY**: Integrate findings into code composition
|
|
327
|
-
3. **POST-CODE**:
|
|
328
|
-
4. **OPTIMIZE**:
|
|
336
|
+
3. **POST-CODE**: Use `analyze_al_code` (operation='validate') to check generated code
|
|
337
|
+
4. **OPTIMIZE**: Apply validation fixes before presenting code
|
|
329
338
|
5. ALL code must be valid, compilable AL language
|
|
330
|
-
6.
|
|
339
|
+
6. Organization standards (company + project layers) override general AI training
|
|
331
340
|
|
|
332
341
|
**WHEN TO HAND OFF:**
|
|
333
342
|
- Need to learn concepts first → Maya Mentor
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
type: "bc-version-upgrade"
|
|
2
|
+
name: "BC Version Upgrade"
|
|
3
|
+
description: "Upgrade Business Central codebase between major versions, handling breaking changes and deprecated features"
|
|
4
|
+
specialist: "alex-architect"
|
|
5
|
+
|
|
6
|
+
file_patterns:
|
|
7
|
+
- "**/*.al"
|
|
8
|
+
- "**/app.json"
|
|
9
|
+
file_exclusions:
|
|
10
|
+
- "**/node_modules/**"
|
|
11
|
+
- "**/.altestrunner/**"
|
|
12
|
+
|
|
13
|
+
phases:
|
|
14
|
+
- id: "inventory"
|
|
15
|
+
name: "File Inventory"
|
|
16
|
+
description: "Enumerate all AL files and identify current BC version"
|
|
17
|
+
required: true
|
|
18
|
+
mode: "autonomous"
|
|
19
|
+
available_actions:
|
|
20
|
+
- "read_app_json"
|
|
21
|
+
- "identify_bc_version"
|
|
22
|
+
- "list_files"
|
|
23
|
+
|
|
24
|
+
- id: "breaking_changes_scan"
|
|
25
|
+
name: "Breaking Changes Scan"
|
|
26
|
+
description: "Scan for patterns affected by breaking changes between versions"
|
|
27
|
+
required: true
|
|
28
|
+
mode: "autonomous"
|
|
29
|
+
entry_conditions:
|
|
30
|
+
- "inventory phase completed"
|
|
31
|
+
available_actions:
|
|
32
|
+
- "scan_deprecated_apis"
|
|
33
|
+
- "scan_removed_features"
|
|
34
|
+
- "scan_changed_behavior"
|
|
35
|
+
|
|
36
|
+
- id: "dependency_review"
|
|
37
|
+
name: "Dependency Review"
|
|
38
|
+
description: "Review app dependencies and verify compatibility with target version"
|
|
39
|
+
required: true
|
|
40
|
+
mode: "guided"
|
|
41
|
+
entry_conditions:
|
|
42
|
+
- "inventory phase completed"
|
|
43
|
+
available_actions:
|
|
44
|
+
- "check_dependencies"
|
|
45
|
+
- "check_runtime_version"
|
|
46
|
+
- "check_symbol_references"
|
|
47
|
+
|
|
48
|
+
- id: "migration_planning"
|
|
49
|
+
name: "Migration Planning"
|
|
50
|
+
description: "Create migration plan for breaking changes and deprecated features"
|
|
51
|
+
required: true
|
|
52
|
+
mode: "agent_driven"
|
|
53
|
+
entry_conditions:
|
|
54
|
+
- "breaking_changes_scan phase completed"
|
|
55
|
+
- "dependency_review phase completed"
|
|
56
|
+
available_actions:
|
|
57
|
+
- "prioritize_changes"
|
|
58
|
+
- "identify_workarounds"
|
|
59
|
+
- "create_migration_tasks"
|
|
60
|
+
|
|
61
|
+
- id: "code_migration"
|
|
62
|
+
name: "Code Migration"
|
|
63
|
+
description: "Apply migrations for deprecated/removed features"
|
|
64
|
+
required: true
|
|
65
|
+
mode: "guided"
|
|
66
|
+
entry_conditions:
|
|
67
|
+
- "migration_planning phase completed"
|
|
68
|
+
available_actions:
|
|
69
|
+
- "migrate_file"
|
|
70
|
+
- "apply_transformation"
|
|
71
|
+
- "skip_migration"
|
|
72
|
+
|
|
73
|
+
- id: "verification"
|
|
74
|
+
name: "Verification"
|
|
75
|
+
description: "Compile and test migrated code against target version"
|
|
76
|
+
required: true
|
|
77
|
+
mode: "guided"
|
|
78
|
+
entry_conditions:
|
|
79
|
+
- "code_migration phase completed"
|
|
80
|
+
available_actions:
|
|
81
|
+
- "compile_check"
|
|
82
|
+
- "run_tests"
|
|
83
|
+
- "validate_functionality"
|
|
84
|
+
|
|
85
|
+
- id: "summary"
|
|
86
|
+
name: "Migration Report"
|
|
87
|
+
description: "Generate migration summary with statistics and remaining issues"
|
|
88
|
+
required: true
|
|
89
|
+
mode: "autonomous"
|
|
90
|
+
entry_conditions:
|
|
91
|
+
- "verification phase completed"
|
|
92
|
+
|
|
93
|
+
per_file_checklist:
|
|
94
|
+
- id: "scan"
|
|
95
|
+
type: "analysis"
|
|
96
|
+
description: "Scan for version-specific patterns"
|
|
97
|
+
required: true
|
|
98
|
+
|
|
99
|
+
- id: "deprecated_check"
|
|
100
|
+
type: "pattern_instance"
|
|
101
|
+
description: "Check for deprecated API usage"
|
|
102
|
+
required: true
|
|
103
|
+
|
|
104
|
+
- id: "migration_complete"
|
|
105
|
+
type: "validation"
|
|
106
|
+
description: "File migrated to target version"
|
|
107
|
+
required: true
|
|
108
|
+
|
|
109
|
+
topic_discovery:
|
|
110
|
+
enabled: true
|
|
111
|
+
tool: "find_bc_knowledge"
|
|
112
|
+
auto_expand_checklist: true
|
|
113
|
+
min_relevance_score: 0.6
|
|
114
|
+
|
|
115
|
+
pattern_discovery:
|
|
116
|
+
enabled: true
|
|
117
|
+
create_instance_items: true
|
|
118
|
+
group_identical: true
|
|
119
|
+
specialist: "alex-architect"
|
|
120
|
+
patterns:
|
|
121
|
+
- id: "obsolete-attribute"
|
|
122
|
+
name: "Obsolete Attribute"
|
|
123
|
+
description: "Code marked as obsolete that may be removed in target version"
|
|
124
|
+
regex: "\\[Obsolete\\([^)]*\\)\\]"
|
|
125
|
+
regex_flags: "gi"
|
|
126
|
+
context_lines: 3
|
|
127
|
+
specialist: "alex-architect"
|
|
128
|
+
|
|
129
|
+
- id: "deprecated-no-series"
|
|
130
|
+
name: "Deprecated No. Series Pattern"
|
|
131
|
+
description: "Legacy No. Series implementation that should use BC24+ module"
|
|
132
|
+
regex: "NoSeriesMgt\\.(InitSeries|GetNextNo|SetDefaultSeries)"
|
|
133
|
+
regex_flags: "gi"
|
|
134
|
+
context_lines: 2
|
|
135
|
+
instance_classifier:
|
|
136
|
+
rules:
|
|
137
|
+
- name: "init_series"
|
|
138
|
+
pattern: "InitSeries"
|
|
139
|
+
suggested_action: "Migrate to NoSeries.GetNextNo() or AreRelated()"
|
|
140
|
+
auto_fixable: false
|
|
141
|
+
- name: "get_next_no"
|
|
142
|
+
pattern: "GetNextNo"
|
|
143
|
+
suggested_action: "Migrate to NoSeries.GetNextNo()"
|
|
144
|
+
auto_fixable: false
|
|
145
|
+
specialist: "dean-debug"
|
|
146
|
+
topic_id: "dean-debug/bc24-no-series-conversion-guide"
|
|
147
|
+
|
|
148
|
+
- id: "removed-codeunit-run"
|
|
149
|
+
name: "Deprecated Codeunit.Run Pattern"
|
|
150
|
+
description: "Codeunit.Run patterns that may have changed behavior"
|
|
151
|
+
regex: "Codeunit\\.Run\\s*\\([^)]+\\)"
|
|
152
|
+
regex_flags: "gi"
|
|
153
|
+
context_lines: 2
|
|
154
|
+
specialist: "eva-errors"
|
|
155
|
+
topic_id: "eva-errors/codeunit-run-pattern"
|
|
156
|
+
|
|
157
|
+
completion_rules:
|
|
158
|
+
require_all_files: true
|
|
159
|
+
require_all_checklist_items: true
|
|
160
|
+
allow_skip_with_reason: true
|