@jwikman/bc-code-intelligence-mcp 1.5.7-dev.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 +21 -0
- package/README.md +165 -0
- package/dist/cache/cache-manager.d.ts +95 -0
- package/dist/cache/cache-manager.d.ts.map +1 -0
- package/dist/cache/cache-manager.js +328 -0
- package/dist/cache/cache-manager.js.map +1 -0
- package/dist/cli/bc-code-intel-cli.d.ts +9 -0
- package/dist/cli/bc-code-intel-cli.d.ts.map +1 -0
- package/dist/cli/bc-code-intel-cli.js +440 -0
- package/dist/cli/bc-code-intel-cli.js.map +1 -0
- package/dist/config/config-loader.d.ts +28 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +497 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config-validator.d.ts +84 -0
- package/dist/config/config-validator.d.ts.map +1 -0
- package/dist/config/config-validator.js +608 -0
- package/dist/config/config-validator.js.map +1 -0
- package/dist/config/test-config-loader.d.ts +10 -0
- package/dist/config/test-config-loader.d.ts.map +1 -0
- package/dist/config/test-config-loader.js +135 -0
- package/dist/config/test-config-loader.js.map +1 -0
- package/dist/config/test-enhanced-layer-service.d.ts +7 -0
- package/dist/config/test-enhanced-layer-service.d.ts.map +1 -0
- package/dist/config/test-enhanced-layer-service.js +104 -0
- package/dist/config/test-enhanced-layer-service.js.map +1 -0
- package/dist/config/test-git-layer.d.ts +7 -0
- package/dist/config/test-git-layer.d.ts.map +1 -0
- package/dist/config/test-git-layer.js +68 -0
- package/dist/config/test-git-layer.js.map +1 -0
- package/dist/dev/hot-reload.d.ts +91 -0
- package/dist/dev/hot-reload.d.ts.map +1 -0
- package/dist/dev/hot-reload.js +358 -0
- package/dist/dev/hot-reload.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1211 -0
- package/dist/index.js.map +1 -0
- package/dist/layers/base-layer.d.ts +133 -0
- package/dist/layers/base-layer.d.ts.map +1 -0
- package/dist/layers/base-layer.js +290 -0
- package/dist/layers/base-layer.js.map +1 -0
- package/dist/layers/embedded-layer.d.ts +130 -0
- package/dist/layers/embedded-layer.d.ts.map +1 -0
- package/dist/layers/embedded-layer.js +612 -0
- package/dist/layers/embedded-layer.js.map +1 -0
- package/dist/layers/git-layer.d.ts +77 -0
- package/dist/layers/git-layer.d.ts.map +1 -0
- package/dist/layers/git-layer.js +529 -0
- package/dist/layers/git-layer.js.map +1 -0
- package/dist/layers/index.d.ts +12 -0
- package/dist/layers/index.d.ts.map +1 -0
- package/dist/layers/index.js +11 -0
- package/dist/layers/index.js.map +1 -0
- package/dist/layers/layer-service.d.ts +135 -0
- package/dist/layers/layer-service.d.ts.map +1 -0
- package/dist/layers/layer-service.js +586 -0
- package/dist/layers/layer-service.js.map +1 -0
- package/dist/layers/project-layer.d.ts +58 -0
- package/dist/layers/project-layer.d.ts.map +1 -0
- package/dist/layers/project-layer.js +286 -0
- package/dist/layers/project-layer.js.map +1 -0
- package/dist/monitoring/production-monitor.d.ts +148 -0
- package/dist/monitoring/production-monitor.d.ts.map +1 -0
- package/dist/monitoring/production-monitor.js +463 -0
- package/dist/monitoring/production-monitor.js.map +1 -0
- package/dist/performance/performance-monitor.d.ts +99 -0
- package/dist/performance/performance-monitor.d.ts.map +1 -0
- package/dist/performance/performance-monitor.js +253 -0
- package/dist/performance/performance-monitor.js.map +1 -0
- package/dist/sdk/bc-code-intel-client.d.ts +175 -0
- package/dist/sdk/bc-code-intel-client.d.ts.map +1 -0
- package/dist/sdk/bc-code-intel-client.js +380 -0
- package/dist/sdk/bc-code-intel-client.js.map +1 -0
- package/dist/search/intelligent-search.d.ts +97 -0
- package/dist/search/intelligent-search.d.ts.map +1 -0
- package/dist/search/intelligent-search.js +358 -0
- package/dist/search/intelligent-search.js.map +1 -0
- package/dist/security/access-control.d.ts +110 -0
- package/dist/security/access-control.d.ts.map +1 -0
- package/dist/security/access-control.js +353 -0
- package/dist/security/access-control.js.map +1 -0
- package/dist/services/code-analysis-service.d.ts +72 -0
- package/dist/services/code-analysis-service.d.ts.map +1 -0
- package/dist/services/code-analysis-service.js +818 -0
- package/dist/services/code-analysis-service.js.map +1 -0
- package/dist/services/enhanced-prompt-service.d.ts +56 -0
- package/dist/services/enhanced-prompt-service.d.ts.map +1 -0
- package/dist/services/enhanced-prompt-service.js +165 -0
- package/dist/services/enhanced-prompt-service.js.map +1 -0
- package/dist/services/knowledge-service.d.ts +90 -0
- package/dist/services/knowledge-service.d.ts.map +1 -0
- package/dist/services/knowledge-service.js +342 -0
- package/dist/services/knowledge-service.js.map +1 -0
- package/dist/services/methodology-service.d.ts +91 -0
- package/dist/services/methodology-service.d.ts.map +1 -0
- package/dist/services/methodology-service.js +423 -0
- package/dist/services/methodology-service.js.map +1 -0
- package/dist/services/multi-content-layer-service.d.ts +198 -0
- package/dist/services/multi-content-layer-service.d.ts.map +1 -0
- package/dist/services/multi-content-layer-service.js +991 -0
- package/dist/services/multi-content-layer-service.js.map +1 -0
- package/dist/services/roleplay-engine.d.ts +161 -0
- package/dist/services/roleplay-engine.d.ts.map +1 -0
- package/dist/services/roleplay-engine.js +994 -0
- package/dist/services/roleplay-engine.js.map +1 -0
- package/dist/services/session-storage/file-storage.d.ts +30 -0
- package/dist/services/session-storage/file-storage.d.ts.map +1 -0
- package/dist/services/session-storage/file-storage.js +229 -0
- package/dist/services/session-storage/file-storage.js.map +1 -0
- package/dist/services/session-storage/in-memory-storage.d.ts +31 -0
- package/dist/services/session-storage/in-memory-storage.d.ts.map +1 -0
- package/dist/services/session-storage/in-memory-storage.js +142 -0
- package/dist/services/session-storage/in-memory-storage.js.map +1 -0
- package/dist/services/specialist-discovery.d.ts +98 -0
- package/dist/services/specialist-discovery.d.ts.map +1 -0
- package/dist/services/specialist-discovery.js +387 -0
- package/dist/services/specialist-discovery.js.map +1 -0
- package/dist/services/specialist-loader.d.ts +101 -0
- package/dist/services/specialist-loader.d.ts.map +1 -0
- package/dist/services/specialist-loader.js +256 -0
- package/dist/services/specialist-loader.js.map +1 -0
- package/dist/services/specialist-session-manager.d.ts +76 -0
- package/dist/services/specialist-session-manager.d.ts.map +1 -0
- package/dist/services/specialist-session-manager.js +255 -0
- package/dist/services/specialist-session-manager.js.map +1 -0
- package/dist/services/workflow-service.d.ts +146 -0
- package/dist/services/workflow-service.d.ts.map +1 -0
- package/dist/services/workflow-service.js +409 -0
- package/dist/services/workflow-service.js.map +1 -0
- package/dist/setup/post-install.d.ts +12 -0
- package/dist/setup/post-install.d.ts.map +1 -0
- package/dist/setup/post-install.js +81 -0
- package/dist/setup/post-install.js.map +1 -0
- package/dist/streamlined-handlers.d.ts +94 -0
- package/dist/streamlined-handlers.d.ts.map +1 -0
- package/dist/streamlined-handlers.js +665 -0
- package/dist/streamlined-handlers.js.map +1 -0
- package/dist/test-enhanced-mcp-server.d.ts +7 -0
- package/dist/test-enhanced-mcp-server.d.ts.map +1 -0
- package/dist/test-enhanced-mcp-server.js +177 -0
- package/dist/test-enhanced-mcp-server.js.map +1 -0
- package/dist/tools/config-diagnostic-tools.d.ts +234 -0
- package/dist/tools/config-diagnostic-tools.d.ts.map +1 -0
- package/dist/tools/config-diagnostic-tools.js +887 -0
- package/dist/tools/config-diagnostic-tools.js.map +1 -0
- package/dist/tools/core-tools.d.ts +26 -0
- package/dist/tools/core-tools.d.ts.map +1 -0
- package/dist/tools/core-tools.js +241 -0
- package/dist/tools/core-tools.js.map +1 -0
- package/dist/tools/handoff-tools.d.ts +37 -0
- package/dist/tools/handoff-tools.d.ts.map +1 -0
- package/dist/tools/handoff-tools.js +265 -0
- package/dist/tools/handoff-tools.js.map +1 -0
- package/dist/tools/index.d.ts +61 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +75 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/onboarding-tools.d.ts +43 -0
- package/dist/tools/onboarding-tools.d.ts.map +1 -0
- package/dist/tools/onboarding-tools.js +353 -0
- package/dist/tools/onboarding-tools.js.map +1 -0
- package/dist/tools/specialist-discovery-tools.d.ts +27 -0
- package/dist/tools/specialist-discovery-tools.d.ts.map +1 -0
- package/dist/tools/specialist-discovery-tools.js +275 -0
- package/dist/tools/specialist-discovery-tools.js.map +1 -0
- package/dist/tools/specialist-tools.d.ts +43 -0
- package/dist/tools/specialist-tools.d.ts.map +1 -0
- package/dist/tools/specialist-tools.js +372 -0
- package/dist/tools/specialist-tools.js.map +1 -0
- package/dist/tools/workspace-tools.d.ts +96 -0
- package/dist/tools/workspace-tools.d.ts.map +1 -0
- package/dist/tools/workspace-tools.js +188 -0
- package/dist/tools/workspace-tools.js.map +1 -0
- package/dist/types/bc-knowledge.d.ts +303 -0
- package/dist/types/bc-knowledge.d.ts.map +1 -0
- package/dist/types/bc-knowledge.js +69 -0
- package/dist/types/bc-knowledge.js.map +1 -0
- package/dist/types/config-types.d.ts +186 -0
- package/dist/types/config-types.d.ts.map +1 -0
- package/dist/types/config-types.js +109 -0
- package/dist/types/config-types.js.map +1 -0
- package/dist/types/enhanced-layer-types.d.ts +193 -0
- package/dist/types/enhanced-layer-types.d.ts.map +1 -0
- package/dist/types/enhanced-layer-types.js +9 -0
- package/dist/types/enhanced-layer-types.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/layer-types.d.ts +173 -0
- package/dist/types/layer-types.d.ts.map +1 -0
- package/dist/types/layer-types.js +27 -0
- package/dist/types/layer-types.js.map +1 -0
- package/dist/types/roleplay-types.d.ts +156 -0
- package/dist/types/roleplay-types.d.ts.map +1 -0
- package/dist/types/roleplay-types.js +8 -0
- package/dist/types/roleplay-types.js.map +1 -0
- package/dist/types/session-types.d.ts +127 -0
- package/dist/types/session-types.d.ts.map +1 -0
- package/dist/types/session-types.js +8 -0
- package/dist/types/session-types.js.map +1 -0
- package/dist/utils/path-utils.d.ts +5 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +14 -0
- package/dist/utils/path-utils.js.map +1 -0
- package/dist/workflows/domain-workflows.d.ts +8 -0
- package/dist/workflows/domain-workflows.d.ts.map +1 -0
- package/dist/workflows/domain-workflows.js +360 -0
- package/dist/workflows/domain-workflows.js.map +1 -0
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +24 -0
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +24 -0
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +30 -0
- package/embedded-knowledge/AGENTS.md +178 -0
- package/embedded-knowledge/CONTRIBUTING.md +58 -0
- package/embedded-knowledge/LICENSE +21 -0
- package/embedded-knowledge/README.md +32 -0
- package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +90 -0
- package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +113 -0
- package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +101 -0
- package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +87 -0
- package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +155 -0
- package/embedded-knowledge/domains/alex-architect/delegating-to-github-copilot-agents.md +371 -0
- package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +138 -0
- package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +79 -0
- package/embedded-knowledge/domains/alex-architect/object-id-ninja-integration.md +281 -0
- package/embedded-knowledge/domains/alex-architect/recommend-object-id-ninja.md +248 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +280 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +200 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +565 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +665 -0
- package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +325 -0
- package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +696 -0
- package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +320 -0
- package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +102 -0
- package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +433 -0
- package/embedded-knowledge/domains/alex-architect/samples/testability-design-patterns.md +223 -0
- package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +66 -0
- package/embedded-knowledge/domains/alex-architect/systemid-integration.md +115 -0
- package/embedded-knowledge/domains/alex-architect/testability-design-patterns.md +77 -0
- package/embedded-knowledge/domains/casey-copilot/long-running-session-instructions.md +263 -0
- package/embedded-knowledge/domains/casey-copilot/samples/long-running-session-instructions.md +323 -0
- package/embedded-knowledge/domains/chris-config/configuration-file-discovery.md +846 -0
- package/embedded-knowledge/domains/chris-config/configuration-file-formats.md +595 -0
- package/embedded-knowledge/domains/chris-config/content-types-structure.md +421 -0
- package/embedded-knowledge/domains/chris-config/knowledge-content-creation.md +437 -0
- package/embedded-knowledge/domains/chris-config/layer-system-fundamentals.md +257 -0
- package/embedded-knowledge/domains/chris-config/multi-team-layer-configuration.md +302 -0
- package/embedded-knowledge/domains/chris-config/workspace-detection-solutions.md +336 -0
- package/embedded-knowledge/domains/dean-debug/bc-telemetry-buddy-integration.md +453 -0
- package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +360 -0
- package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +86 -0
- package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +96 -0
- package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +70 -0
- package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +84 -0
- package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +93 -0
- package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +73 -0
- package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +78 -0
- package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +79 -0
- package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +87 -0
- package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +209 -0
- package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +246 -0
- package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +107 -0
- package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +105 -0
- package/embedded-knowledge/domains/dean-debug/recommend-bc-telemetry-buddy.md +160 -0
- package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +186 -0
- package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +60 -0
- package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +139 -0
- package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +190 -0
- package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +516 -0
- package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +298 -0
- package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +324 -0
- package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +344 -0
- package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +137 -0
- package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +340 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +810 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +86 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +110 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +758 -0
- package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +665 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +316 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +223 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +149 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +412 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +211 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +155 -0
- package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +475 -0
- package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +238 -0
- package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +97 -0
- package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +666 -0
- package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +319 -0
- package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +236 -0
- package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +59 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +67 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +70 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +90 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +87 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +70 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +74 -0
- package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +81 -0
- package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +56 -0
- package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +66 -0
- package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +79 -0
- package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +78 -0
- package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +83 -0
- package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +76 -0
- package/embedded-knowledge/domains/dean-debug/testfield-performance.md +104 -0
- package/embedded-knowledge/domains/eva-errors/codeunit-run-pattern.md +159 -0
- package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +145 -0
- package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +104 -0
- package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +114 -0
- package/embedded-knowledge/domains/eva-errors/samples/codeunit-run-pattern.md +239 -0
- package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +356 -0
- package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +256 -0
- package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +101 -0
- package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +108 -0
- package/embedded-knowledge/domains/eva-errors/samples/try-function-usage.md +195 -0
- package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +80 -0
- package/embedded-knowledge/domains/eva-errors/try-function-usage.md +129 -0
- package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +98 -0
- package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +123 -0
- package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +96 -0
- package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +115 -0
- package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +115 -0
- package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +114 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +395 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +479 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +548 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +287 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +434 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +508 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +615 -0
- package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +144 -0
- package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +96 -0
- package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +124 -0
- package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +84 -0
- package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +75 -0
- package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +96 -0
- package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +385 -0
- package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +72 -0
- package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +48 -0
- package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +49 -0
- package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +67 -0
- package/embedded-knowledge/domains/morgan-market/partner-readiness-analysis.md +201 -0
- package/embedded-knowledge/domains/morgan-market/samples/partner-readiness-checklist.md +288 -0
- package/embedded-knowledge/domains/parker-pragmatic/README.md +39 -0
- package/embedded-knowledge/domains/parker-pragmatic/proposal-workflows/creating-effective-proposals.md +583 -0
- package/embedded-knowledge/domains/parker-pragmatic/trust-building/working-with-ai-skeptics.md +587 -0
- package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +119 -0
- package/embedded-knowledge/domains/quinn-tester/isolation-testing-patterns.md +82 -0
- package/embedded-knowledge/domains/quinn-tester/rule-execution.md +123 -0
- package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +64 -0
- package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +60 -0
- package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +83 -0
- package/embedded-knowledge/domains/quinn-tester/samples/isolation-testing-patterns.md +424 -0
- package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +716 -0
- package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +101 -0
- package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +91 -0
- package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +79 -0
- package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +79 -0
- package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +89 -0
- package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +81 -0
- package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +75 -0
- package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +96 -0
- package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +86 -0
- package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +90 -0
- package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +82 -0
- package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +78 -0
- package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +78 -0
- package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +100 -0
- package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +115 -0
- package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +124 -0
- package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +110 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +438 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +255 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +209 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +218 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +218 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +280 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +188 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +245 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +244 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +278 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +484 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +64 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +107 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +280 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/testability-code-smells.md +256 -0
- package/embedded-knowledge/domains/roger-reviewer/testability-code-smells.md +67 -0
- package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +75 -0
- package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +67 -0
- package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +76 -0
- package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +98 -0
- package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +128 -0
- package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +75 -0
- package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +95 -0
- package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +141 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +91 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +118 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +111 -0
- package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +113 -0
- package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +127 -0
- package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +141 -0
- package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +66 -0
- package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +96 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +161 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +177 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +239 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +346 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +298 -0
- package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +677 -0
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +117 -0
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +75 -0
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +169 -0
- package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +399 -0
- package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +356 -0
- package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +889 -0
- package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +84 -0
- package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +127 -0
- package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +89 -0
- package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +516 -0
- package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +61 -0
- package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +427 -0
- package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +122 -0
- package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +96 -0
- package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +101 -0
- package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +149 -0
- package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +107 -0
- package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +95 -0
- package/embedded-knowledge/domains/seth-security/api-permission-model.md +115 -0
- package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +78 -0
- package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +373 -0
- package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +308 -0
- package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +146 -0
- package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +79 -0
- package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +78 -0
- package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +81 -0
- package/embedded-knowledge/indexes/bc-version-matrix.json +188 -0
- package/embedded-knowledge/indexes/domain-catalog.json +106 -0
- package/embedded-knowledge/indexes/tags/abbreviations.json +1 -0
- package/embedded-knowledge/indexes/tags/abstraction.json +1 -0
- package/embedded-knowledge/indexes/tags/access-control.json +1 -0
- package/embedded-knowledge/indexes/tags/accessibility.json +1 -0
- package/embedded-knowledge/indexes/tags/actions.json +1 -0
- package/embedded-knowledge/indexes/tags/advanced-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/advanced.json +1 -0
- package/embedded-knowledge/indexes/tags/al-extension.json +1 -0
- package/embedded-knowledge/indexes/tags/al-generics.json +1 -0
- package/embedded-knowledge/indexes/tags/al-objects.json +1 -0
- package/embedded-knowledge/indexes/tags/al-syntax.json +1 -0
- package/embedded-knowledge/indexes/tags/algorithm-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/alternatives.json +1 -0
- package/embedded-knowledge/indexes/tags/analytics.json +1 -0
- package/embedded-knowledge/indexes/tags/api-delegates.json +1 -0
- package/embedded-knowledge/indexes/tags/api-design.json +1 -0
- package/embedded-knowledge/indexes/tags/api-documentation.json +1 -0
- package/embedded-knowledge/indexes/tags/api-endpoints.json +1 -0
- package/embedded-knowledge/indexes/tags/api-extensibility.json +1 -0
- package/embedded-knowledge/indexes/tags/api-fieldsets.json +1 -0
- package/embedded-knowledge/indexes/tags/api-integration.json +1 -0
- package/embedded-knowledge/indexes/tags/api-interfaces.json +1 -0
- package/embedded-knowledge/indexes/tags/api-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/api-pages.json +1 -0
- package/embedded-knowledge/indexes/tags/api-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/api-permissions.json +1 -0
- package/embedded-knowledge/indexes/tags/api-responses.json +1 -0
- package/embedded-knowledge/indexes/tags/api-simplification.json +1 -0
- package/embedded-knowledge/indexes/tags/api.json +1 -0
- package/embedded-knowledge/indexes/tags/architecture.json +1 -0
- package/embedded-knowledge/indexes/tags/async-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/async-processing.json +1 -0
- package/embedded-knowledge/indexes/tags/automatic-registration.json +1 -0
- package/embedded-knowledge/indexes/tags/batch-operations.json +1 -0
- package/embedded-knowledge/indexes/tags/bc24-migration.json +1 -0
- package/embedded-knowledge/indexes/tags/begin-blocks.json +1 -0
- package/embedded-knowledge/indexes/tags/begin-end.json +1 -0
- package/embedded-knowledge/indexes/tags/behavioral-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/best-practices.json +1 -0
- package/embedded-knowledge/indexes/tags/binding.json +1 -0
- package/embedded-knowledge/indexes/tags/block-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/blocks.json +1 -0
- package/embedded-knowledge/indexes/tags/boolean-expressions.json +1 -0
- package/embedded-knowledge/indexes/tags/branching.json +1 -0
- package/embedded-knowledge/indexes/tags/breaking-changes.json +1 -0
- package/embedded-knowledge/indexes/tags/breakpoints.json +1 -0
- package/embedded-knowledge/indexes/tags/business-foundation.json +1 -0
- package/embedded-knowledge/indexes/tags/business-infrastructure.json +1 -0
- package/embedded-knowledge/indexes/tags/business-process.json +1 -0
- package/embedded-knowledge/indexes/tags/business-rules.json +1 -0
- package/embedded-knowledge/indexes/tags/caching.json +1 -0
- package/embedded-knowledge/indexes/tags/case-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/case.json +1 -0
- package/embedded-knowledge/indexes/tags/code-analysis.json +1 -0
- package/embedded-knowledge/indexes/tags/code-clarity.json +1 -0
- package/embedded-knowledge/indexes/tags/code-comprehension.json +1 -0
- package/embedded-knowledge/indexes/tags/code-conversion.json +1 -0
- package/embedded-knowledge/indexes/tags/code-formatting.json +1 -0
- package/embedded-knowledge/indexes/tags/code-organization.json +1 -0
- package/embedded-knowledge/indexes/tags/code-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/code-quality.json +1 -0
- package/embedded-knowledge/indexes/tags/code-reuse.json +1 -0
- package/embedded-knowledge/indexes/tags/code-simplification.json +1 -0
- package/embedded-knowledge/indexes/tags/code-standards.json +1 -0
- package/embedded-knowledge/indexes/tags/code-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/code-style.json +1 -0
- package/embedded-knowledge/indexes/tags/codeunit-design.json +1 -0
- package/embedded-knowledge/indexes/tags/command-queue.json +1 -0
- package/embedded-knowledge/indexes/tags/comments.json +1 -0
- package/embedded-knowledge/indexes/tags/compile-time-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/complex-facade.json +1 -0
- package/embedded-knowledge/indexes/tags/complexity-hiding.json +1 -0
- package/embedded-knowledge/indexes/tags/complexity-management.json +1 -0
- package/embedded-knowledge/indexes/tags/compound-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/concurrency.json +1 -0
- package/embedded-knowledge/indexes/tags/conditional-logic.json +1 -0
- package/embedded-knowledge/indexes/tags/conditional.json +1 -0
- package/embedded-knowledge/indexes/tags/conflict-resolution.json +1 -0
- package/embedded-knowledge/indexes/tags/consistency.json +1 -0
- package/embedded-knowledge/indexes/tags/contract-design.json +1 -0
- package/embedded-knowledge/indexes/tags/control-flow.json +1 -0
- package/embedded-knowledge/indexes/tags/conversion-guide.json +1 -0
- package/embedded-knowledge/indexes/tags/correlation.json +1 -0
- package/embedded-knowledge/indexes/tags/custom-messages.json +1 -0
- package/embedded-knowledge/indexes/tags/data-access.json +1 -0
- package/embedded-knowledge/indexes/tags/data-exposure.json +1 -0
- package/embedded-knowledge/indexes/tags/data-integrity.json +1 -0
- package/embedded-knowledge/indexes/tags/data-loading.json +1 -0
- package/embedded-knowledge/indexes/tags/data-manipulation.json +1 -0
- package/embedded-knowledge/indexes/tags/data-modeling.json +1 -0
- package/embedded-knowledge/indexes/tags/data-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/data-protection.json +1 -0
- package/embedded-knowledge/indexes/tags/data-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/database.json +1 -0
- package/embedded-knowledge/indexes/tags/debugging.json +1 -0
- package/embedded-knowledge/indexes/tags/decision-making.json +1 -0
- package/embedded-knowledge/indexes/tags/declaration.json +1 -0
- package/embedded-knowledge/indexes/tags/default-messages.json +1 -0
- package/embedded-knowledge/indexes/tags/defensive-programming.json +1 -0
- package/embedded-knowledge/indexes/tags/deleteall.json +1 -0
- package/embedded-knowledge/indexes/tags/dependencies.json +1 -0
- package/embedded-knowledge/indexes/tags/deployment.json +1 -0
- package/embedded-knowledge/indexes/tags/developer-productivity.json +1 -0
- package/embedded-knowledge/indexes/tags/development-workflow.json +1 -0
- package/embedded-knowledge/indexes/tags/diagnostics.json +1 -0
- package/embedded-knowledge/indexes/tags/dimensions.json +1 -0
- package/embedded-knowledge/indexes/tags/documentation.json +1 -0
- package/embedded-knowledge/indexes/tags/early-exit.json +1 -0
- package/embedded-knowledge/indexes/tags/else-clauses.json +1 -0
- package/embedded-knowledge/indexes/tags/end-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/enterprise-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/entity-relationships.json +1 -0
- package/embedded-knowledge/indexes/tags/error-handling.json +1 -0
- package/embedded-knowledge/indexes/tags/error-messages.json +1 -0
- package/embedded-knowledge/indexes/tags/error-prevention.json +1 -0
- package/embedded-knowledge/indexes/tags/error-text.json +1 -0
- package/embedded-knowledge/indexes/tags/etag.json +1 -0
- package/embedded-knowledge/indexes/tags/event-bridge.json +1 -0
- package/embedded-knowledge/indexes/tags/event-payload.json +1 -0
- package/embedded-knowledge/indexes/tags/event-routing.json +1 -0
- package/embedded-knowledge/indexes/tags/events.json +1 -0
- package/embedded-knowledge/indexes/tags/execution-flow.json +1 -0
- package/embedded-knowledge/indexes/tags/expressions.json +1 -0
- package/embedded-knowledge/indexes/tags/extensibility.json +1 -0
- package/embedded-knowledge/indexes/tags/extensions.json +1 -0
- package/embedded-knowledge/indexes/tags/facade-composition.json +1 -0
- package/embedded-knowledge/indexes/tags/facade-pattern.json +1 -0
- package/embedded-knowledge/indexes/tags/field-control.json +1 -0
- package/embedded-knowledge/indexes/tags/field-exclusion.json +1 -0
- package/embedded-knowledge/indexes/tags/field-registration.json +1 -0
- package/embedded-knowledge/indexes/tags/field-state.json +1 -0
- package/embedded-knowledge/indexes/tags/field-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/fielderror.json +1 -0
- package/embedded-knowledge/indexes/tags/fields.json +1 -0
- package/embedded-knowledge/indexes/tags/filtering.json +1 -0
- package/embedded-knowledge/indexes/tags/filters.json +1 -0
- package/embedded-knowledge/indexes/tags/formatting.json +1 -0
- package/embedded-knowledge/indexes/tags/generic-methods.json +1 -0
- package/embedded-knowledge/indexes/tags/http-status.json +1 -0
- package/embedded-knowledge/indexes/tags/if-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/implementation.json +1 -0
- package/embedded-knowledge/indexes/tags/indentation.json +1 -0
- package/embedded-knowledge/indexes/tags/index-summary.json +277 -0
- package/embedded-knowledge/indexes/tags/indexing.json +1 -0
- package/embedded-knowledge/indexes/tags/inheritance.json +1 -0
- package/embedded-knowledge/indexes/tags/integration.json +1 -0
- package/embedded-knowledge/indexes/tags/integrity-checking.json +1 -0
- package/embedded-knowledge/indexes/tags/intellisense.json +1 -0
- package/embedded-knowledge/indexes/tags/interface-design.json +1 -0
- package/embedded-knowledge/indexes/tags/interface-segregation.json +1 -0
- package/embedded-knowledge/indexes/tags/isolation.json +1 -0
- package/embedded-knowledge/indexes/tags/job-processing.json +1 -0
- package/embedded-knowledge/indexes/tags/keyboard-navigation.json +1 -0
- package/embedded-knowledge/indexes/tags/keywords.json +1 -0
- package/embedded-knowledge/indexes/tags/legacy-modernization.json +1 -0
- package/embedded-knowledge/indexes/tags/line-breaks.json +1 -0
- package/embedded-knowledge/indexes/tags/line-organization.json +1 -0
- package/embedded-knowledge/indexes/tags/line-positioning.json +1 -0
- package/embedded-knowledge/indexes/tags/localization.json +1 -0
- package/embedded-knowledge/indexes/tags/logging.json +1 -0
- package/embedded-knowledge/indexes/tags/loose-coupling.json +1 -0
- package/embedded-knowledge/indexes/tags/maintainability.json +1 -0
- package/embedded-knowledge/indexes/tags/memory-management.json +1 -0
- package/embedded-knowledge/indexes/tags/memory-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/memory.json +1 -0
- package/embedded-knowledge/indexes/tags/message-design.json +1 -0
- package/embedded-knowledge/indexes/tags/message-formatting.json +1 -0
- package/embedded-knowledge/indexes/tags/message-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/metadata-driven.json +1 -0
- package/embedded-knowledge/indexes/tags/method-comparison.json +1 -0
- package/embedded-knowledge/indexes/tags/module-architecture.json +1 -0
- package/embedded-knowledge/indexes/tags/module-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/monitoring.json +1 -0
- package/embedded-knowledge/indexes/tags/multi-layer-facade.json +1 -0
- package/embedded-knowledge/indexes/tags/multi-tenancy.json +1 -0
- package/embedded-knowledge/indexes/tags/multiple-values.json +1 -0
- package/embedded-knowledge/indexes/tags/naming-conventions.json +1 -0
- package/embedded-knowledge/indexes/tags/naming.json +1 -0
- package/embedded-knowledge/indexes/tags/navigation.json +1 -0
- package/embedded-knowledge/indexes/tags/nested-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/no-series-conversion.json +1 -0
- package/embedded-knowledge/indexes/tags/no-series-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/no-series.json +1 -0
- package/embedded-knowledge/indexes/tags/number-generation.json +1 -0
- package/embedded-knowledge/indexes/tags/object-documentation.json +1 -0
- package/embedded-knowledge/indexes/tags/odata.json +1 -0
- package/embedded-knowledge/indexes/tags/ondelete.json +1 -0
- package/embedded-knowledge/indexes/tags/onvalidate.json +1 -0
- package/embedded-knowledge/indexes/tags/operation-delegation.json +1 -0
- package/embedded-knowledge/indexes/tags/operation-safety.json +1 -0
- package/embedded-knowledge/indexes/tags/operators.json +1 -0
- package/embedded-knowledge/indexes/tags/optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/order.json +1 -0
- package/embedded-knowledge/indexes/tags/organization.json +1 -0
- package/embedded-knowledge/indexes/tags/pages.json +1 -0
- package/embedded-knowledge/indexes/tags/parameters.json +1 -0
- package/embedded-knowledge/indexes/tags/patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/performance-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/performance.json +1 -0
- package/embedded-knowledge/indexes/tags/placement.json +1 -0
- package/embedded-knowledge/indexes/tags/posting-codeunits.json +1 -0
- package/embedded-knowledge/indexes/tags/posting.json +1 -0
- package/embedded-knowledge/indexes/tags/preconditions.json +1 -0
- package/embedded-knowledge/indexes/tags/primary-key.json +1 -0
- package/embedded-knowledge/indexes/tags/privacy.json +1 -0
- package/embedded-knowledge/indexes/tags/process-automation.json +1 -0
- package/embedded-knowledge/indexes/tags/production.json +1 -0
- package/embedded-knowledge/indexes/tags/productivity.json +1 -0
- package/embedded-knowledge/indexes/tags/query-performance.json +1 -0
- package/embedded-knowledge/indexes/tags/queue-management.json +1 -0
- package/embedded-knowledge/indexes/tags/ranges.json +1 -0
- package/embedded-knowledge/indexes/tags/readability.json +1 -0
- package/embedded-knowledge/indexes/tags/record-access.json +1 -0
- package/embedded-knowledge/indexes/tags/record-methods.json +1 -0
- package/embedded-knowledge/indexes/tags/refactoring.json +1 -0
- package/embedded-knowledge/indexes/tags/reference.json +1 -0
- package/embedded-knowledge/indexes/tags/repeat-loops.json +1 -0
- package/embedded-knowledge/indexes/tags/repeat-statement.json +1 -0
- package/embedded-knowledge/indexes/tags/runtime-errors.json +1 -0
- package/embedded-knowledge/indexes/tags/runtime.json +1 -0
- package/embedded-knowledge/indexes/tags/safeguards.json +1 -0
- package/embedded-knowledge/indexes/tags/security.json +1 -0
- package/embedded-knowledge/indexes/tags/sequence-management.json +1 -0
- package/embedded-knowledge/indexes/tags/serialization.json +1 -0
- package/embedded-knowledge/indexes/tags/session-logmessage.json +1 -0
- package/embedded-knowledge/indexes/tags/session.json +1 -0
- package/embedded-knowledge/indexes/tags/setloadfields.json +1 -0
- package/embedded-knowledge/indexes/tags/shortcuts.json +1 -0
- package/embedded-knowledge/indexes/tags/sift.json +1 -0
- package/embedded-knowledge/indexes/tags/singleinstance.json +1 -0
- package/embedded-knowledge/indexes/tags/spacing.json +1 -0
- package/embedded-knowledge/indexes/tags/sql-translation.json +1 -0
- package/embedded-knowledge/indexes/tags/standards.json +1 -0
- package/embedded-knowledge/indexes/tags/statements.json +1 -0
- package/embedded-knowledge/indexes/tags/streaming.json +1 -0
- package/embedded-knowledge/indexes/tags/strong-typing.json +1 -0
- package/embedded-knowledge/indexes/tags/structural-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/structure.json +1 -0
- package/embedded-knowledge/indexes/tags/subscribers.json +1 -0
- package/embedded-knowledge/indexes/tags/switch.json +1 -0
- package/embedded-knowledge/indexes/tags/symbol-search.json +1 -0
- package/embedded-knowledge/indexes/tags/syntax.json +1 -0
- package/embedded-knowledge/indexes/tags/systemid.json +1 -0
- package/embedded-knowledge/indexes/tags/table-configuration.json +1 -0
- package/embedded-knowledge/indexes/tags/table-events.json +1 -0
- package/embedded-knowledge/indexes/tags/table-keys.json +1 -0
- package/embedded-knowledge/indexes/tags/table-safety.json +1 -0
- package/embedded-knowledge/indexes/tags/task-scheduler.json +1 -0
- package/embedded-knowledge/indexes/tags/telemetry.json +1 -0
- package/embedded-knowledge/indexes/tags/template-method.json +1 -0
- package/embedded-knowledge/indexes/tags/temporary-tables.json +1 -0
- package/embedded-knowledge/indexes/tags/testfield.json +1 -0
- package/embedded-knowledge/indexes/tags/tradeoffs.json +1 -0
- package/embedded-knowledge/indexes/tags/triggers.json +1 -0
- package/embedded-knowledge/indexes/tags/troubleshooting.json +1 -0
- package/embedded-knowledge/indexes/tags/type-safety.json +1 -0
- package/embedded-knowledge/indexes/tags/url-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/user-experience.json +1 -0
- package/embedded-knowledge/indexes/tags/user-feedback.json +1 -0
- package/embedded-knowledge/indexes/tags/user-interface.json +1 -0
- package/embedded-knowledge/indexes/tags/validation-feedback.json +1 -0
- package/embedded-knowledge/indexes/tags/validation.json +1 -0
- package/embedded-knowledge/indexes/tags/variables.json +1 -0
- package/embedded-knowledge/indexes/tags/verbosity.json +1 -0
- package/embedded-knowledge/indexes/tags/vs-code.json +1 -0
- package/embedded-knowledge/indexes/tags/web-services.json +1 -0
- package/embedded-knowledge/indexes/tags/workflow-management.json +1 -0
- package/embedded-knowledge/indexes/tags/workflow-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/workflow-templates.json +1 -0
- package/embedded-knowledge/indexes/tags/workspace.json +1 -0
- package/embedded-knowledge/indexes/tags/xml-documentation.json +1 -0
- package/embedded-knowledge/indexes/topic-relationships.json +128 -0
- package/embedded-knowledge/methodologies/index.json +81 -0
- package/embedded-knowledge/methodologies/phases/analysis-full.md +208 -0
- package/embedded-knowledge/methodologies/phases/analysis-quick.md +44 -0
- package/embedded-knowledge/methodologies/phases/analysis.md +182 -0
- package/embedded-knowledge/methodologies/phases/execution-validation-full.md +174 -0
- package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +31 -0
- package/embedded-knowledge/methodologies/phases/execution-validation.md +174 -0
- package/embedded-knowledge/methodologies/phases/performance-full.md +211 -0
- package/embedded-knowledge/methodologies/phases/performance-quick.md +32 -0
- package/embedded-knowledge/methodologies/phases/performance.md +211 -0
- package/embedded-knowledge/methodologies/phases/verification-full.md +162 -0
- package/embedded-knowledge/methodologies/phases/verification-quick.md +48 -0
- package/embedded-knowledge/methodologies/phases/verification.md +146 -0
- package/embedded-knowledge/methodologies/workflow-enforcement.md +142 -0
- package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +99 -0
- package/embedded-knowledge/methodologies/workflows/proposal-review-workflow.md +535 -0
- package/embedded-knowledge/specialists/alex-architect.md +305 -0
- package/embedded-knowledge/specialists/casey-copilot.md +314 -0
- package/embedded-knowledge/specialists/chris-config.md +226 -0
- package/embedded-knowledge/specialists/dean-debug.md +365 -0
- package/embedded-knowledge/specialists/eva-errors.md +291 -0
- package/embedded-knowledge/specialists/jordan-bridge.md +291 -0
- package/embedded-knowledge/specialists/logan-legacy.md +265 -0
- package/embedded-knowledge/specialists/maya-mentor.md +299 -0
- package/embedded-knowledge/specialists/morgan-market.md +281 -0
- package/embedded-knowledge/specialists/parker-pragmatic.md +564 -0
- package/embedded-knowledge/specialists/quinn-tester.md +323 -0
- package/embedded-knowledge/specialists/roger-reviewer.md +317 -0
- package/embedded-knowledge/specialists/sam-coder.md +342 -0
- package/embedded-knowledge/specialists/seth-security.md +290 -0
- package/embedded-knowledge/specialists/taylor-docs.md +312 -0
- package/embedded-knowledge/specialists/uma-ux.md +291 -0
- package/package.json +82 -0
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Delegating Coding Tasks to GitHub Copilot Agents"
|
|
3
|
+
domain: "alex-architect"
|
|
4
|
+
bc_versions: "14+"
|
|
5
|
+
difficulty: "intermediate"
|
|
6
|
+
tags: ["ai-workflow", "delegation", "github-copilot", "issue-creation", "context-management"]
|
|
7
|
+
related_topics:
|
|
8
|
+
- "../shared/naming-conventions.md"
|
|
9
|
+
- "../shared/object-numbering.md"
|
|
10
|
+
- "../../specialists/alex-architect.md"
|
|
11
|
+
applies_to:
|
|
12
|
+
- "GitHub Copilot Agents"
|
|
13
|
+
- "Issue Management"
|
|
14
|
+
- "AI-Assisted Development"
|
|
15
|
+
last_updated: "2025-10-26"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Delegating Coding Tasks to GitHub Copilot Agents
|
|
19
|
+
|
|
20
|
+
## Overview
|
|
21
|
+
GitHub Copilot Agents can execute coding tasks autonomously when assigned to Issues, but they operate with **limited context**—only what's in the Issue description and repository code. As an architect, your role is to craft Issues that provide sufficient context for Copilot Agents to implement BC solutions correctly, following your organization's standards.
|
|
22
|
+
|
|
23
|
+
**Key Challenge**: Unlike interactive Copilot sessions, Agents can't ask clarifying questions. All context must be front-loaded in the Issue.
|
|
24
|
+
|
|
25
|
+
## Essential Context for BC Coding Tasks
|
|
26
|
+
|
|
27
|
+
### 1. Object Identity & Numbering
|
|
28
|
+
Always specify exact object details to avoid ambiguity:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
## Object Details
|
|
32
|
+
- **Table**: `MyTable` (Table 50100)
|
|
33
|
+
- **Page**: `MyTable Card` (Page 50101)
|
|
34
|
+
- **Codeunit**: `MyTable Management` (Codeunit 50100)
|
|
35
|
+
- **Field to Add**: `Priority Code` (Field 50010, Code[20])
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Why This Matters**: BC has strict object ID requirements. Without this, Copilot Agent might:
|
|
39
|
+
- Use incorrect object IDs (causing conflicts)
|
|
40
|
+
- Create objects with wrong types
|
|
41
|
+
- Miss relationships between objects
|
|
42
|
+
|
|
43
|
+
### 2. Naming Conventions (Critical!)
|
|
44
|
+
Include your organization's naming standards, especially from loaded BC Code Intel layers:
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
## Naming Conventions
|
|
48
|
+
Following [Company Name] standards from company knowledge layer:
|
|
49
|
+
|
|
50
|
+
- **Prefixes**: All custom objects use `ABC_` prefix
|
|
51
|
+
- **Field Naming**: `ABC Description` not `ABCDescription` (space-separated)
|
|
52
|
+
- **Codeunit Methods**: PascalCase with verb-noun pattern (`CalculateTotalAmount`, not `CalcTotal`)
|
|
53
|
+
- **Variables**: Descriptive names, avoid abbreviations (`CustomerLedgerEntry`, not `CustLE`)
|
|
54
|
+
- **Boolean Fields**: Start with `Is`, `Has`, or `Can` (`IsBlocked`, `HasShipmentAddress`)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Pro Tip**: Reference your company's BC Code Intelligence layer explicitly:
|
|
58
|
+
```markdown
|
|
59
|
+
See company layer: `domains/naming-conventions/field-naming-standards.md`
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 3. Business Central Context
|
|
63
|
+
Provide BC-specific architectural context:
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
## BC Architecture Context
|
|
67
|
+
- **Pattern**: Follow standard BC document pattern (Header-Line structure)
|
|
68
|
+
- **Events**: Subscribe to `OnAfterInsert` trigger of Sales Header (Table 36)
|
|
69
|
+
- **Integration**: Must integrate with existing `Sales Order Processing` codeunit (50200)
|
|
70
|
+
- **Posting**: Use standard BC posting framework, not custom posting logic
|
|
71
|
+
- **Permissions**: Requires read access to Customer table, write to custom audit log
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 4. Data Model & Relationships
|
|
75
|
+
Explicitly define table relationships and key fields:
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
## Data Model
|
|
79
|
+
- `MyTable` relates to `Customer` (Table 18) via `Customer No.` field
|
|
80
|
+
- `Status` field (Option): Open=0, Released=1, Completed=2, Archived=3
|
|
81
|
+
- `Document No.` must use number series from `MyTable Setup` (Table 50110)
|
|
82
|
+
- FlowField: `Amount Including VAT` = SUM(MyTable Line.Amount Including VAT WHERE(Document No.=FIELD(Document No.)))
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 5. Standards & Patterns from Layers
|
|
86
|
+
Leverage knowledge from your BC Code Intelligence layers:
|
|
87
|
+
|
|
88
|
+
```markdown
|
|
89
|
+
## Implementation Standards
|
|
90
|
+
Per team layer (`domains/data-architecture/table-design-standards.md`):
|
|
91
|
+
- All master tables must have SystemId, SystemCreatedAt, SystemModifiedAt
|
|
92
|
+
- Description fields: Text[100], never Text[50]
|
|
93
|
+
- Amount fields: Always Decimal with AutoFormatType = 1
|
|
94
|
+
- Status fields: Use Option type with clear enum values
|
|
95
|
+
|
|
96
|
+
Per company layer (`domains/error-handling/validation-patterns.md`):
|
|
97
|
+
- Input validation in OnValidate triggers
|
|
98
|
+
- Error messages via Error() not Message()
|
|
99
|
+
- Use Error(Text000, FieldValue) pattern with text constants
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 6. API & Integration Requirements
|
|
103
|
+
If the task involves APIs or integrations:
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
## API Requirements
|
|
107
|
+
- REST endpoint pattern: `/api/v2.0/companies({companyId})/myTables({id})`
|
|
108
|
+
- Follow BC OData conventions (NavigationProperty for related entities)
|
|
109
|
+
- Support $filter, $expand, $select query parameters
|
|
110
|
+
- Page Type: API (PageType = API)
|
|
111
|
+
- EntityName: 'myTable', EntitySetName: 'myTables'
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 7. Test Requirements
|
|
115
|
+
Specify testing expectations:
|
|
116
|
+
|
|
117
|
+
```markdown
|
|
118
|
+
## Testing Requirements
|
|
119
|
+
- Unit tests: Validate field validation logic (use AL Test Codeunits)
|
|
120
|
+
- Test scenario: Create record with invalid Customer No., expect error
|
|
121
|
+
- Test scenario: Post document, verify ledger entries created correctly
|
|
122
|
+
- Edge case: Handle zero-quantity lines gracefully
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Complete Issue Template for Copilot Agent Handoff
|
|
126
|
+
|
|
127
|
+
```markdown
|
|
128
|
+
# Implement Sales Priority Management
|
|
129
|
+
|
|
130
|
+
## Context
|
|
131
|
+
We need to track priority levels for sales orders to optimize warehouse picking.
|
|
132
|
+
|
|
133
|
+
## Object Details
|
|
134
|
+
- **Table**: `Sales Priority` (Table 50100)
|
|
135
|
+
- Fields:
|
|
136
|
+
- Priority Code (Field 10, Code[10], Primary Key)
|
|
137
|
+
- Description (Field 20, Text[100])
|
|
138
|
+
- Warehouse Priority (Field 30, Integer, Range: 1-10)
|
|
139
|
+
- Is Default (Field 40, Boolean)
|
|
140
|
+
- **Page**: `Sales Priority List` (Page 50100, PageType: List)
|
|
141
|
+
- **Page**: `Sales Priority Card` (Page 50101, PageType: Card)
|
|
142
|
+
- **Table Extension**: `Sales Header Ext` (TableExtension 50100, Extends: Sales Header)
|
|
143
|
+
- New Field: Priority Code (Field 50100, Code[10], TableRelation to Sales Priority)
|
|
144
|
+
|
|
145
|
+
## Naming Conventions (Company Standard)
|
|
146
|
+
- Prefix: `ABC_` for all custom objects
|
|
147
|
+
- Field names: Space-separated words (`Priority Code` not `PriorityCode`)
|
|
148
|
+
- Variables: Full descriptive names (`SalesPriorityRecord` not `SPRec`)
|
|
149
|
+
- See: `company-layer/domains/naming-conventions/object-naming.md`
|
|
150
|
+
|
|
151
|
+
## Implementation Requirements
|
|
152
|
+
1. **Table Design**:
|
|
153
|
+
- Follow BC best practices: Include SystemId, Created/Modified audit fields
|
|
154
|
+
- Add standard Description field (Text[100])
|
|
155
|
+
- Warehouse Priority: Integer 1-10, with validation
|
|
156
|
+
- Only one record can have `Is Default = true` (validate on insert/modify)
|
|
157
|
+
|
|
158
|
+
2. **Pages**:
|
|
159
|
+
- List page: Show all priorities, editable grid
|
|
160
|
+
- Card page: Full details, actions for Set as Default
|
|
161
|
+
- Both pages: Follow BC standard page patterns (FastTabs, FactBoxes)
|
|
162
|
+
|
|
163
|
+
3. **Sales Integration**:
|
|
164
|
+
- Extend Sales Header with Priority Code field
|
|
165
|
+
- Default to "Is Default" priority on new sales orders
|
|
166
|
+
- Add Priority Code to Sales Order page (visible, editable)
|
|
167
|
+
|
|
168
|
+
4. **Validation Rules**:
|
|
169
|
+
- Priority Code: Cannot be blank
|
|
170
|
+
- Warehouse Priority: Range 1-10, error if outside range
|
|
171
|
+
- Is Default: Only one record can be default (validate via code)
|
|
172
|
+
|
|
173
|
+
5. **Permissions**:
|
|
174
|
+
- Create permission set: `ABC Sales Priority` (PermissionSet 50100)
|
|
175
|
+
- Grant read/insert/modify/delete on Sales Priority table
|
|
176
|
+
- Grant modify on Sales Header (for Priority Code field)
|
|
177
|
+
|
|
178
|
+
## Business Logic
|
|
179
|
+
- When `Is Default` is set to `true`, set all other records' `Is Default` to `false`
|
|
180
|
+
- On Sales Header insert, default `Priority Code` from Sales Priority where `Is Default = true`
|
|
181
|
+
- Validate that Priority Code exists in Sales Priority table
|
|
182
|
+
|
|
183
|
+
## Testing Scenarios
|
|
184
|
+
1. Create multiple priority records, verify only one can be default
|
|
185
|
+
2. Create new sales order, verify priority defaults correctly
|
|
186
|
+
3. Change priority on sales order, verify updates work
|
|
187
|
+
4. Delete priority that's in use on sales order, expect error
|
|
188
|
+
|
|
189
|
+
## Company-Specific Context
|
|
190
|
+
Per company layer standards:
|
|
191
|
+
- Error handling: Use Error(Text constants) pattern
|
|
192
|
+
- Table design: Include audit fields (SystemCreatedAt, SystemModifiedAt)
|
|
193
|
+
- Validation: OnValidate triggers, not in business logic codeunits
|
|
194
|
+
- See: `company-layer/domains/error-handling/validation-patterns.md`
|
|
195
|
+
|
|
196
|
+
## Expected Deliverables
|
|
197
|
+
- [ ] Table 50100: Sales Priority
|
|
198
|
+
- [ ] Page 50100: Sales Priority List
|
|
199
|
+
- [ ] Page 50101: Sales Priority Card
|
|
200
|
+
- [ ] TableExtension 50100: Sales Header with Priority Code field
|
|
201
|
+
- [ ] PageExtension: Sales Order page showing Priority Code
|
|
202
|
+
- [ ] PermissionSet 50100: ABC Sales Priority
|
|
203
|
+
- [ ] Basic AL test codeunit validating default priority logic
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Context Extraction from BC Code Intelligence Layers
|
|
207
|
+
|
|
208
|
+
When you have company/team layers loaded, extract this context for Issues:
|
|
209
|
+
|
|
210
|
+
### From Layer: Naming Conventions
|
|
211
|
+
```markdown
|
|
212
|
+
Per company naming standards:
|
|
213
|
+
- Object prefixes: [Extract from layer]
|
|
214
|
+
- Field naming pattern: [Extract from layer]
|
|
215
|
+
- Variable conventions: [Extract from layer]
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### From Layer: Data Architecture
|
|
219
|
+
```markdown
|
|
220
|
+
Per company table design standards:
|
|
221
|
+
- Required audit fields: [Extract from layer]
|
|
222
|
+
- Field type standards: [Extract from layer]
|
|
223
|
+
- Key/index patterns: [Extract from layer]
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### From Layer: Error Handling
|
|
227
|
+
```markdown
|
|
228
|
+
Per company error handling patterns:
|
|
229
|
+
- Validation approach: [Extract from layer]
|
|
230
|
+
- Error message format: [Extract from layer]
|
|
231
|
+
- Exception handling: [Extract from layer]
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### From Layer: API Design
|
|
235
|
+
```markdown
|
|
236
|
+
Per company API patterns:
|
|
237
|
+
- Endpoint conventions: [Extract from layer]
|
|
238
|
+
- Query parameter support: [Extract from layer]
|
|
239
|
+
- Response formats: [Extract from layer]
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Anti-Patterns: What NOT to Do
|
|
243
|
+
|
|
244
|
+
❌ **Vague Requirements**
|
|
245
|
+
```markdown
|
|
246
|
+
# Bad Issue
|
|
247
|
+
Add a priority field to sales orders.
|
|
248
|
+
```
|
|
249
|
+
**Problem**: No object IDs, no naming conventions, no data types, no validation rules.
|
|
250
|
+
|
|
251
|
+
❌ **Missing Object IDs**
|
|
252
|
+
```markdown
|
|
253
|
+
# Bad Issue
|
|
254
|
+
Create a Sales Priority table and pages.
|
|
255
|
+
```
|
|
256
|
+
**Problem**: Copilot Agent will guess object IDs, likely causing conflicts.
|
|
257
|
+
|
|
258
|
+
❌ **No Naming Standards**
|
|
259
|
+
```markdown
|
|
260
|
+
# Bad Issue
|
|
261
|
+
Create table SalesPrio with field PrioCode.
|
|
262
|
+
```
|
|
263
|
+
**Problem**: Doesn't follow company conventions, creates technical debt.
|
|
264
|
+
|
|
265
|
+
❌ **Ignoring Layer Context**
|
|
266
|
+
```markdown
|
|
267
|
+
# Bad Issue
|
|
268
|
+
Implement sales priority. Use standard BC patterns.
|
|
269
|
+
```
|
|
270
|
+
**Problem**: "Standard BC patterns" is vague. Company layer has specific patterns to follow.
|
|
271
|
+
|
|
272
|
+
## Best Practices for AI-to-AI Handoff
|
|
273
|
+
|
|
274
|
+
### 1. Front-Load All Context
|
|
275
|
+
Copilot Agents can't ask follow-up questions. Assume they need:
|
|
276
|
+
- Exact object IDs and names
|
|
277
|
+
- Complete naming conventions
|
|
278
|
+
- All business rules and validations
|
|
279
|
+
- Technical constraints (field types, ranges, relationships)
|
|
280
|
+
|
|
281
|
+
### 2. Reference Layer Knowledge
|
|
282
|
+
When you have company/team layers:
|
|
283
|
+
```markdown
|
|
284
|
+
See company layer: `domains/naming-conventions/field-naming.md`
|
|
285
|
+
See team layer: `domains/api-design/rest-endpoint-patterns.md`
|
|
286
|
+
```
|
|
287
|
+
This ensures consistency across development.
|
|
288
|
+
|
|
289
|
+
### 3. Provide Examples
|
|
290
|
+
Include code snippets showing expected patterns:
|
|
291
|
+
```al
|
|
292
|
+
// Expected validation pattern (per company standards):
|
|
293
|
+
trigger OnValidate()
|
|
294
|
+
begin
|
|
295
|
+
if "Warehouse Priority" < 1 or "Warehouse Priority" > 10 then
|
|
296
|
+
Error(OutsideOfAcceptablePriorityRangeErr, "Warehouse Priority", 1, 10);
|
|
297
|
+
end;
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### 4. Specify Acceptance Criteria
|
|
301
|
+
Clear, testable outcomes:
|
|
302
|
+
```markdown
|
|
303
|
+
## Acceptance Criteria
|
|
304
|
+
- [ ] Sales Priority table created with specified fields
|
|
305
|
+
- [ ] Only one record can have Is Default = true
|
|
306
|
+
- [ ] New sales orders default to default priority
|
|
307
|
+
- [ ] Unit tests pass for validation scenarios
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### 5. Link to Existing Code
|
|
311
|
+
If extending existing functionality:
|
|
312
|
+
```markdown
|
|
313
|
+
## Related Code
|
|
314
|
+
- Extend: Sales Header (Table 36)
|
|
315
|
+
- Pattern reference: Customer table (Table 18) for master data example
|
|
316
|
+
- Integration point: Release Sales Document codeunit (Codeunit 414)
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Integration with BC Code Intelligence Workflow
|
|
320
|
+
|
|
321
|
+
### Step 1: Discover Standards
|
|
322
|
+
Before creating the Issue, query your loaded layers:
|
|
323
|
+
```
|
|
324
|
+
Ask: "What are our company naming conventions for custom tables?"
|
|
325
|
+
Ask: "What validation patterns should I use per our team standards?"
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Step 2: Gather Object Context
|
|
329
|
+
Collect exact object information:
|
|
330
|
+
```
|
|
331
|
+
Ask: "What's our next available object ID in the 50100-50199 range?"
|
|
332
|
+
Ask: "What's the standard pattern for master data tables?"
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### Step 3: Craft Issue
|
|
336
|
+
Use the template above, incorporating layer-specific context.
|
|
337
|
+
|
|
338
|
+
### Step 4: Assign to Copilot Agent
|
|
339
|
+
Create GitHub Issue, assign to @copilot-agent, label appropriately.
|
|
340
|
+
|
|
341
|
+
### Step 5: Review Output
|
|
342
|
+
When Copilot Agent completes:
|
|
343
|
+
- Verify naming conventions match layer standards
|
|
344
|
+
- Check object IDs are correct
|
|
345
|
+
- Validate business logic implementation
|
|
346
|
+
- Ensure error handling follows patterns
|
|
347
|
+
|
|
348
|
+
## Version Compatibility
|
|
349
|
+
|
|
350
|
+
- **BC 14+**: GitHub Copilot Agents support AL language
|
|
351
|
+
- **BC 18+**: API page types, system fields
|
|
352
|
+
- **BC 19+**: Enhanced enum support
|
|
353
|
+
|
|
354
|
+
## See Also
|
|
355
|
+
- [Naming Conventions](../shared/naming-conventions.md) - Standard naming patterns
|
|
356
|
+
- [Object Numbering](../shared/object-numbering.md) - Object ID ranges and management
|
|
357
|
+
- [Table Design Best Practices](../data-architecture/table-design.md) - BC table patterns
|
|
358
|
+
- [Error Handling Patterns](../error-handling/validation.md) - Validation and error messages
|
|
359
|
+
- [Alex Architect Specialist](../../specialists/alex-architect.md) - Strategic planning and delegation
|
|
360
|
+
|
|
361
|
+
## Summary
|
|
362
|
+
|
|
363
|
+
Effective delegation to GitHub Copilot Agents requires **comprehensive upfront context**. As an architect, your role is to translate strategic requirements into detailed, actionable Issues that include:
|
|
364
|
+
|
|
365
|
+
1. **Exact object specifications** (IDs, names, types)
|
|
366
|
+
2. **Naming conventions** (from company/team layers)
|
|
367
|
+
3. **Business rules** (validation, logic, relationships)
|
|
368
|
+
4. **Standards compliance** (error handling, patterns, architecture)
|
|
369
|
+
5. **Acceptance criteria** (testable outcomes)
|
|
370
|
+
|
|
371
|
+
By leveraging BC Code Intelligence layers and following these patterns, you ensure Copilot Agents produce code that integrates seamlessly with your organization's standards and architecture.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Facade Pattern AL Implementation"
|
|
3
|
+
domain: "alex-architect"
|
|
4
|
+
difficulty: "intermediate"
|
|
5
|
+
bc_versions: "14+"
|
|
6
|
+
tags: ["facade-pattern", "structural-patterns", "api-simplification", "complexity-hiding"]
|
|
7
|
+
prerequisites: ["object-orientation-al", "interface-basics", "module-design"]
|
|
8
|
+
samples: "samples/facade-pattern-al.md"
|
|
9
|
+
related_topics: ["complex-facade-patterns", "adapter-pattern-al"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Facade Pattern AL Implementation
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
The Facade Pattern provides a simplified interface to a complex subsystem, hiding the complexity of multiple interacting objects behind a single, easy-to-use interface. In AL development, facades are essential for creating clean APIs and managing complex business logic interactions.
|
|
17
|
+
|
|
18
|
+
**Key Benefit**: Simplifies client code by providing a unified interface to complex subsystems while maintaining loose coupling and flexibility.
|
|
19
|
+
|
|
20
|
+
## Core Facade Architecture
|
|
21
|
+
|
|
22
|
+
### Unified Interface Design
|
|
23
|
+
Create single interfaces that encapsulate complex operations across multiple AL objects, procedures, and business logic components.
|
|
24
|
+
|
|
25
|
+
### Complexity Encapsulation
|
|
26
|
+
Hide implementation details of complex subsystems behind simple, focused facade methods that handle coordination and orchestration.
|
|
27
|
+
|
|
28
|
+
### Dependency Management
|
|
29
|
+
Manage dependencies between multiple subsystem components within the facade, preventing clients from needing to understand complex relationships.
|
|
30
|
+
|
|
31
|
+
## Implementation Strategies
|
|
32
|
+
|
|
33
|
+
### Business Process Facades
|
|
34
|
+
Design facades that encapsulate complete business processes, coordinating multiple tables, pages, and codeunits to provide single-operation interfaces.
|
|
35
|
+
|
|
36
|
+
### Data Access Facades
|
|
37
|
+
Implement facades that simplify complex data access patterns, hiding join operations, filtering logic, and data transformation from client code.
|
|
38
|
+
|
|
39
|
+
### Integration Facades
|
|
40
|
+
Create facades for external system integration that hide protocol details, authentication, and error handling behind simple method calls.
|
|
41
|
+
|
|
42
|
+
## AL-Specific Patterns
|
|
43
|
+
|
|
44
|
+
### Codeunit Facade Implementation
|
|
45
|
+
Use codeunits as facade implementations that coordinate multiple AL objects while providing clean, procedure-based interfaces.
|
|
46
|
+
|
|
47
|
+
### Table Facade Extensions
|
|
48
|
+
Extend table objects with facade methods that encapsulate complex business logic while maintaining data integrity and validation rules.
|
|
49
|
+
|
|
50
|
+
### Page Integration Facades
|
|
51
|
+
Design page-level facades that coordinate multiple page elements and actions to provide simplified user interaction patterns.
|
|
52
|
+
|
|
53
|
+
## Advanced Facade Techniques
|
|
54
|
+
|
|
55
|
+
### Layered Facade Architecture
|
|
56
|
+
Implement multiple facade layers that provide different levels of abstraction for different types of clients and usage scenarios.
|
|
57
|
+
|
|
58
|
+
### Context-Aware Facades
|
|
59
|
+
Design facades that adapt their behavior based on user context, permissions, or system configuration while maintaining consistent interfaces.
|
|
60
|
+
|
|
61
|
+
### Event-Integrated Facades
|
|
62
|
+
Integrate facade operations with AL event systems to provide notifications and enable extensibility without facade modification.
|
|
63
|
+
|
|
64
|
+
## Performance Considerations
|
|
65
|
+
|
|
66
|
+
### Operation Optimization
|
|
67
|
+
Optimize facade operations to minimize unnecessary object instantiation and method calls while maintaining interface simplicity.
|
|
68
|
+
|
|
69
|
+
### Caching Integration
|
|
70
|
+
Implement intelligent caching within facades to improve performance for frequently accessed complex operations.
|
|
71
|
+
|
|
72
|
+
### Resource Management
|
|
73
|
+
Design facades to efficiently manage resources and connections, especially for integration and external system access scenarios.
|
|
74
|
+
|
|
75
|
+
## Error Handling and Validation
|
|
76
|
+
|
|
77
|
+
### Unified Error Management
|
|
78
|
+
- Implement consistent error handling across all facade operations
|
|
79
|
+
- Provide meaningful error messages that abstract subsystem complexity
|
|
80
|
+
- Support error recovery and retry mechanisms within facade logic
|
|
81
|
+
- Maintain error logging and diagnostics for troubleshooting
|
|
82
|
+
|
|
83
|
+
### Input Validation
|
|
84
|
+
- Centralize validation logic within facade methods
|
|
85
|
+
- Provide comprehensive parameter validation before subsystem operations
|
|
86
|
+
- Support business rule validation across multiple subsystem components
|
|
87
|
+
- Enable early error detection to prevent inconsistent states
|
|
88
|
+
|
|
89
|
+
## Best Practices
|
|
90
|
+
|
|
91
|
+
### Design Principles
|
|
92
|
+
- Keep facade interfaces focused and cohesive
|
|
93
|
+
- Implement facades at appropriate abstraction levels for target clients
|
|
94
|
+
- Maintain clear separation between facade logic and subsystem implementation
|
|
95
|
+
- Design for both simplicity and extensibility
|
|
96
|
+
|
|
97
|
+
### Documentation Standards
|
|
98
|
+
- Provide clear documentation for facade capabilities and limitations
|
|
99
|
+
- Include examples of common usage patterns and scenarios
|
|
100
|
+
- Document any performance characteristics or constraints
|
|
101
|
+
- Maintain clear guidance for when to use facade versus direct subsystem access
|
|
102
|
+
|
|
103
|
+
## Integration Patterns
|
|
104
|
+
|
|
105
|
+
### Service Layer Integration
|
|
106
|
+
Integrate facades with service layer patterns to provide business service interfaces that coordinate multiple business capabilities.
|
|
107
|
+
|
|
108
|
+
### API Gateway Patterns
|
|
109
|
+
Use facades as API gateways that provide external access to internal Business Central capabilities with appropriate security and validation.
|
|
110
|
+
|
|
111
|
+
### Microservice Coordination
|
|
112
|
+
Design facades that coordinate microservice interactions while providing unified interfaces for complex business operations.
|
|
113
|
+
|
|
114
|
+
## Testing Strategies
|
|
115
|
+
|
|
116
|
+
### Facade Testing
|
|
117
|
+
- Implement comprehensive testing for facade operations and edge cases
|
|
118
|
+
- Mock subsystem dependencies to enable isolated facade testing
|
|
119
|
+
- Test error handling and recovery scenarios thoroughly
|
|
120
|
+
- Validate facade performance under different load conditions
|
|
121
|
+
|
|
122
|
+
### Integration Testing
|
|
123
|
+
- Test complete end-to-end scenarios through facade interfaces
|
|
124
|
+
- Validate subsystem coordination and data consistency
|
|
125
|
+
- Test facade behavior under various system conditions and configurations
|
|
126
|
+
- Ensure facade operations maintain transactional integrity
|
|
127
|
+
|
|
128
|
+
## Common Pitfalls
|
|
129
|
+
|
|
130
|
+
### Over-Simplification
|
|
131
|
+
Avoid over-simplifying facades to the point where necessary functionality becomes inaccessible to clients requiring more control.
|
|
132
|
+
|
|
133
|
+
### Facade Bloat
|
|
134
|
+
Prevent facades from becoming bloated with too many responsibilities that reduce their effectiveness and maintainability.
|
|
135
|
+
|
|
136
|
+
*Complete facade implementation examples: samples/facade-pattern-al.md*
|
|
137
|
+
*Complex facade patterns: complex-facade-patterns.md*
|
|
138
|
+
*Related structural patterns: adapter-pattern-al.md*
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "AL Facade Pattern for External API Integration"
|
|
3
|
+
domain: "alex-architect"
|
|
4
|
+
difficulty: "intermediate"
|
|
5
|
+
bc_versions: "14+"
|
|
6
|
+
tags: ["facade-pattern", "api-integration", "abstraction", "maintainability"]
|
|
7
|
+
samples: "samples/facade-pattern.md"
|
|
8
|
+
type: improvement-pattern
|
|
9
|
+
category: "architectural-patterns"
|
|
10
|
+
pattern_type: good
|
|
11
|
+
severity: medium
|
|
12
|
+
impact_level: medium
|
|
13
|
+
improvement_suggestion: "Use facade pattern to simplify external API integration"
|
|
14
|
+
implementation_steps: ["create-facade-codeunit", "abstract-api-calls", "centralize-error-handling"]
|
|
15
|
+
validation_criteria: ["single-entry-point", "hidden-complexity", "clean-interfaces"]
|
|
16
|
+
technical_areas: ["al-code", "integration"]
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# AL Facade Pattern for External API Integration
|
|
20
|
+
|
|
21
|
+
## Overview
|
|
22
|
+
|
|
23
|
+
The facade pattern creates a unified, simplified interface to complex external API systems. Instead of exposing raw API complexity throughout your AL codebase, the facade provides a clean business-focused entry point that handles all technical implementation details internally.
|
|
24
|
+
|
|
25
|
+
**Core Principle**: One dedicated codeunit acts as the single gateway to external systems, abstracting authentication, error handling, retry logic, and data transformation.
|
|
26
|
+
|
|
27
|
+
## Strategic Framework
|
|
28
|
+
|
|
29
|
+
### When to Apply Facade Pattern
|
|
30
|
+
- **Multiple API endpoints** required for single business operation
|
|
31
|
+
- **Complex authentication flows** (OAuth, JWT, multi-step auth)
|
|
32
|
+
- **Inconsistent external API responses** requiring normalization
|
|
33
|
+
- **Rate limiting and retry logic** needed across multiple calls
|
|
34
|
+
- **Future API changes** anticipated requiring isolation from business logic
|
|
35
|
+
|
|
36
|
+
### Architecture Benefits
|
|
37
|
+
- **Dependency Isolation**: External system changes don't cascade through codebase
|
|
38
|
+
- **Simplified Testing**: Clear boundaries for mocking external dependencies
|
|
39
|
+
- **Centralized Logic**: Authentication, error handling, and retry patterns in one place
|
|
40
|
+
- **Business Focus**: Consuming objects work with business concepts, not technical APIs
|
|
41
|
+
|
|
42
|
+
## Architecture Focus
|
|
43
|
+
|
|
44
|
+
### Facade Structure
|
|
45
|
+
Create a dedicated codeunit containing:
|
|
46
|
+
- **Public Methods**: Business-focused operations (GetCustomerData, SyncOrderStatus)
|
|
47
|
+
- **Private Methods**: Technical API calls, authentication, error handling
|
|
48
|
+
- **Internal State**: Connection management, token caching, configuration
|
|
49
|
+
|
|
50
|
+
### Interface Design Principles
|
|
51
|
+
- **Business Language**: Method names reflect business operations, not API endpoints
|
|
52
|
+
- **Simplified Parameters**: Hide complex API parameter mapping from consumers
|
|
53
|
+
- **Consistent Returns**: Standardized response patterns regardless of underlying API variations
|
|
54
|
+
- **Error Abstraction**: Convert technical errors to business-meaningful messages
|
|
55
|
+
|
|
56
|
+
## Best Practices
|
|
57
|
+
|
|
58
|
+
### Implementation Guidelines
|
|
59
|
+
- **Single Responsibility**: Each facade handles one external system or related service group
|
|
60
|
+
- **Stateless Design**: Avoid maintaining connection state between method calls
|
|
61
|
+
- **Configuration Driven**: Use setup tables for URLs, credentials, and API versions
|
|
62
|
+
- **Comprehensive Logging**: Log all external interactions for troubleshooting
|
|
63
|
+
|
|
64
|
+
### Error Handling Strategy
|
|
65
|
+
- **Graceful Degradation**: Provide fallback behaviors when external systems unavailable
|
|
66
|
+
- **Retry Logic**: Implement exponential backoff for transient failures
|
|
67
|
+
- **Circuit Breaker**: Prevent cascading failures when external system is down
|
|
68
|
+
- **User-Friendly Messages**: Translate technical errors to actionable business guidance
|
|
69
|
+
|
|
70
|
+
## Anti-Patterns
|
|
71
|
+
|
|
72
|
+
### Avoid These Approaches
|
|
73
|
+
- **Direct API Calls** scattered throughout business logic objects
|
|
74
|
+
- **Shared HTTP Client** instances without proper abstraction layer
|
|
75
|
+
- **Exposed Technical Details** like HTTP status codes in business methods
|
|
76
|
+
- **Mixed Responsibilities** combining business logic with API communication
|
|
77
|
+
|
|
78
|
+
**Implementation Reference**: see samples/facade-pattern.md
|
|
79
|
+
**Related Patterns**: error-handling-patterns.md, api-authentication-patterns.md
|