@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,201 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Partner Readiness Analysis for AppSource Apps"
|
|
3
|
+
domain: "morgan-market"
|
|
4
|
+
difficulty: "advanced"
|
|
5
|
+
bc_versions: "18+"
|
|
6
|
+
tags: ["appsource", "partner-readiness", "extensibility", "telemetry", "access-modifiers", "events", "isv"]
|
|
7
|
+
samples: "samples/partner-readiness-checklist.md"
|
|
8
|
+
related_topics:
|
|
9
|
+
- "../jordan-bridge/event-architecture.md"
|
|
10
|
+
- "../alex-architect/api-interface-design-patterns.md"
|
|
11
|
+
- "../dean-debug/telemetry-fundamentals.md"
|
|
12
|
+
- "../seth-security/access-modifier-strategy.md"
|
|
13
|
+
---
|
|
14
|
+
# Partner Readiness Analysis for AppSource Apps
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Publishing an app to AppSource involves more than passing technical validation. A truly partner-ready app considers the full lifecycle: how partners will extend it, how you'll support it in production, how customers will integrate with it, and how the codebase will evolve over time.
|
|
19
|
+
|
|
20
|
+
**Core Principle**: AppSource validation is the minimum bar. Partner readiness is the path to marketplace success and sustainable business.
|
|
21
|
+
|
|
22
|
+
## The Partner Lifecycle Mindset
|
|
23
|
+
|
|
24
|
+
When you publish to AppSource, you're not just shipping code—you're entering a partnership ecosystem:
|
|
25
|
+
|
|
26
|
+
- **Partners (PTEs)** will build on top of your app
|
|
27
|
+
- **Customers** will integrate your app into their processes
|
|
28
|
+
- **You** will need to diagnose issues remotely
|
|
29
|
+
- **Microsoft** will evolve the platform under your app
|
|
30
|
+
|
|
31
|
+
Each of these relationships requires intentional design decisions that go beyond "does it work?"
|
|
32
|
+
|
|
33
|
+
## Partner Readiness Checklist
|
|
34
|
+
|
|
35
|
+
### 1. Event Architecture for Extensibility
|
|
36
|
+
|
|
37
|
+
**Why It Matters**: Partners and PTEs need to extend your app without modifying your code. Without proper events, they're stuck—or worse, they'll find workarounds that break on your next update.
|
|
38
|
+
|
|
39
|
+
**Key Questions**:
|
|
40
|
+
- [ ] Do critical business processes raise events before and after key operations?
|
|
41
|
+
- [ ] Can partners inject validation logic before you commit data?
|
|
42
|
+
- [ ] Can partners react to state changes without polling?
|
|
43
|
+
- [ ] Are events granular enough to be useful but not so numerous as to be noisy?
|
|
44
|
+
|
|
45
|
+
**What to Expose**:
|
|
46
|
+
- Document posting and state transitions
|
|
47
|
+
- Master data creation and modification
|
|
48
|
+
- Integration touchpoints (before/after external calls)
|
|
49
|
+
- Validation phases where partners might add business rules
|
|
50
|
+
|
|
51
|
+
**Anti-Patterns**:
|
|
52
|
+
- Raising events with insufficient context (missing key fields)
|
|
53
|
+
- Events that fire but can't influence the outcome
|
|
54
|
+
- Undocumented events that partners discover by accident
|
|
55
|
+
|
|
56
|
+
**Specialist Referral**: → **Jordan Bridge** for event architecture patterns and publisher/subscriber design
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
### 2. Telemetry for Production Support
|
|
61
|
+
|
|
62
|
+
**Why It Matters**: When something goes wrong at a customer site, you won't have debugger access. Telemetry is your eyes into production behavior—and your evidence when diagnosing "it doesn't work" reports.
|
|
63
|
+
|
|
64
|
+
**Key Questions**:
|
|
65
|
+
- [ ] Do you emit custom telemetry for key business operations?
|
|
66
|
+
- [ ] Can you identify which customer, which document, which operation from telemetry alone?
|
|
67
|
+
- [ ] Do you capture timing information for performance-sensitive operations?
|
|
68
|
+
- [ ] Are errors logged with enough context to diagnose without reproduction?
|
|
69
|
+
|
|
70
|
+
**What to Instrument**:
|
|
71
|
+
- External service calls (start, end, success/failure, duration)
|
|
72
|
+
- Long-running operations with intermediate checkpoints
|
|
73
|
+
- Error conditions with business context (not just technical stack traces)
|
|
74
|
+
- Configuration-dependent behavior branches
|
|
75
|
+
|
|
76
|
+
**Anti-Patterns**:
|
|
77
|
+
- Logging so verbose it becomes noise
|
|
78
|
+
- Missing correlation IDs across related operations
|
|
79
|
+
- Telemetry that exposes PII or sensitive business data
|
|
80
|
+
|
|
81
|
+
**Specialist Referral**: → **Dean Debug** for telemetry implementation patterns and KQL query strategies
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
### 3. Access Modifier Strategy
|
|
86
|
+
|
|
87
|
+
**Why It Matters**: Your `public` and `internal` decisions define your support surface. Everything marked `public` becomes a contract you must maintain. Everything marked `internal` gives you freedom to refactor.
|
|
88
|
+
|
|
89
|
+
**Key Questions**:
|
|
90
|
+
- [ ] Is every public procedure intentionally public, or just "default"?
|
|
91
|
+
- [ ] Are internal implementation details protected from external callers?
|
|
92
|
+
- [ ] Do codeunits have appropriate access modifiers (Public vs Internal)?
|
|
93
|
+
- [ ] Are procedures that partners SHOULD call clearly marked and documented?
|
|
94
|
+
|
|
95
|
+
**Strategic Decisions**:
|
|
96
|
+
- **Public Codeunits/Procedures**: Partner-facing API surface—document, version, maintain
|
|
97
|
+
- **Internal Codeunits/Procedures**: Implementation freedom—refactor without breaking partners
|
|
98
|
+
- **Protected Tables**: Control who can write to your data
|
|
99
|
+
- **Access = Public on Tables/Pages**: Required for extensibility, but increases your contract surface
|
|
100
|
+
|
|
101
|
+
**Anti-Patterns**:
|
|
102
|
+
- Making everything public "just in case"
|
|
103
|
+
- No documentation of what the public API actually is
|
|
104
|
+
- Changing internal behavior that partners somehow depended on
|
|
105
|
+
|
|
106
|
+
**Specialist Referral**: → **Seth Security** for access modifier strategy and encapsulation patterns
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### 4. Interface Architecture
|
|
111
|
+
|
|
112
|
+
**Why It Matters**: Interfaces enable dependency inversion—partners can provide implementations you call without tight coupling. This is essential for apps that need pluggable behavior.
|
|
113
|
+
|
|
114
|
+
**Key Questions**:
|
|
115
|
+
- [ ] Do you use interfaces where partner-provided implementations make sense?
|
|
116
|
+
- [ ] Are interfaces well-documented with clear implementation contracts?
|
|
117
|
+
- [ ] Can partners register their implementations without modifying your code?
|
|
118
|
+
- [ ] Is interface discovery and registration straightforward?
|
|
119
|
+
|
|
120
|
+
**Good Interface Candidates**:
|
|
121
|
+
- External system connectors (shipping, payment, tax services)
|
|
122
|
+
- Calculation engines with customer-specific logic
|
|
123
|
+
- Document generation with format variations
|
|
124
|
+
- Notification handlers with channel flexibility
|
|
125
|
+
|
|
126
|
+
**Anti-Patterns**:
|
|
127
|
+
- Interfaces without documentation of expected behavior
|
|
128
|
+
- No default implementation for optional interfaces
|
|
129
|
+
- Registration mechanisms that require insider knowledge
|
|
130
|
+
|
|
131
|
+
**Specialist Referral**: → **Alex Architect** for interface design patterns and facade architecture
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### 5. Upgrade and Migration Considerations
|
|
136
|
+
|
|
137
|
+
**Why It Matters**: Your app will evolve. Partners will have extensions depending on your schema and APIs. Breaking changes have real business impact.
|
|
138
|
+
|
|
139
|
+
**Key Questions**:
|
|
140
|
+
- [ ] Do you have a versioning strategy for your public API?
|
|
141
|
+
- [ ] Are breaking changes communicated before releases?
|
|
142
|
+
- [ ] Do upgrade codeunits handle data migration for schema changes?
|
|
143
|
+
- [ ] Is there a deprecation process for obsolete functionality?
|
|
144
|
+
|
|
145
|
+
**Best Practices**:
|
|
146
|
+
- Use `ObsoleteState` and `ObsoleteReason` to communicate deprecation timeline
|
|
147
|
+
- Provide upgrade codeunits for schema migrations
|
|
148
|
+
- Document breaking changes in release notes
|
|
149
|
+
- Give partners advance notice for significant changes
|
|
150
|
+
|
|
151
|
+
**Specialist Referral**: → **Logan Legacy** for upgrade codeunit patterns and migration strategies
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
### 6. Documentation for Partner Success
|
|
156
|
+
|
|
157
|
+
**Why It Matters**: Partners can't use what they can't discover. Documentation transforms your app from "code that works" to "platform partners can build on."
|
|
158
|
+
|
|
159
|
+
**Key Questions**:
|
|
160
|
+
- [ ] Are public APIs documented with usage examples?
|
|
161
|
+
- [ ] Are events discoverable with clear documentation of when they fire?
|
|
162
|
+
- [ ] Is there guidance for common extension scenarios?
|
|
163
|
+
- [ ] Do partners know how to get help when they're stuck?
|
|
164
|
+
|
|
165
|
+
**Documentation Assets**:
|
|
166
|
+
- API reference (procedures, parameters, return values)
|
|
167
|
+
- Event catalog (event, context, typical use cases)
|
|
168
|
+
- Integration guide (common partner scenarios)
|
|
169
|
+
- Troubleshooting guide (common issues and resolution)
|
|
170
|
+
|
|
171
|
+
**Specialist Referral**: → **Taylor Docs** for documentation structure and partner communication
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Analysis Workflow
|
|
176
|
+
|
|
177
|
+
When analyzing an app for partner readiness, work through each category systematically:
|
|
178
|
+
|
|
179
|
+
1. **Inventory**: What events, public APIs, and telemetry currently exist?
|
|
180
|
+
2. **Gap Analysis**: What's missing for each category based on the checklists?
|
|
181
|
+
3. **Priority Assessment**: Which gaps have the highest partner impact?
|
|
182
|
+
4. **Remediation Plan**: What changes are needed, and in what order?
|
|
183
|
+
5. **Specialist Handoffs**: Which specialists should address specific gaps?
|
|
184
|
+
|
|
185
|
+
## Continuous Improvement
|
|
186
|
+
|
|
187
|
+
Partner readiness isn't a one-time checklist—it's an ongoing discipline:
|
|
188
|
+
|
|
189
|
+
- **Gather Feedback**: Listen to partners using your app
|
|
190
|
+
- **Monitor Telemetry**: What operations cause the most issues?
|
|
191
|
+
- **Review Gaps**: After each release, what extension scenarios weren't supported?
|
|
192
|
+
- **Iterate**: Improve event coverage and documentation with each version
|
|
193
|
+
|
|
194
|
+
## Summary
|
|
195
|
+
|
|
196
|
+
AppSource validation asks: "Does this app work?"
|
|
197
|
+
|
|
198
|
+
Partner readiness asks: "Can partners succeed with this app?"
|
|
199
|
+
|
|
200
|
+
The difference is the foundation of a sustainable AppSource business.
|
|
201
|
+
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
# Partner Readiness Checklist Examples
|
|
2
|
+
|
|
3
|
+
## Event Architecture Review
|
|
4
|
+
|
|
5
|
+
### Good: Well-Designed Event Pattern
|
|
6
|
+
```al
|
|
7
|
+
codeunit 50100 "My Document Processor"
|
|
8
|
+
{
|
|
9
|
+
// Partners can validate before processing
|
|
10
|
+
[IntegrationEvent(false, false)]
|
|
11
|
+
local procedure OnBeforeProcessDocument(var MyDocument: Record "My Document"; var IsHandled: Boolean)
|
|
12
|
+
begin
|
|
13
|
+
end;
|
|
14
|
+
|
|
15
|
+
// Partners can react after processing
|
|
16
|
+
[IntegrationEvent(false, false)]
|
|
17
|
+
local procedure OnAfterProcessDocument(var MyDocument: Record "My Document"; Success: Boolean)
|
|
18
|
+
begin
|
|
19
|
+
end;
|
|
20
|
+
|
|
21
|
+
// Partners can add line-level logic
|
|
22
|
+
[IntegrationEvent(false, false)]
|
|
23
|
+
local procedure OnBeforeProcessDocumentLine(
|
|
24
|
+
var MyDocument: Record "My Document";
|
|
25
|
+
var MyDocumentLine: Record "My Document Line";
|
|
26
|
+
var IsHandled: Boolean)
|
|
27
|
+
begin
|
|
28
|
+
end;
|
|
29
|
+
|
|
30
|
+
procedure ProcessDocument(var MyDocument: Record "My Document")
|
|
31
|
+
var
|
|
32
|
+
IsHandled: Boolean;
|
|
33
|
+
begin
|
|
34
|
+
OnBeforeProcessDocument(MyDocument, IsHandled);
|
|
35
|
+
if IsHandled then
|
|
36
|
+
exit;
|
|
37
|
+
|
|
38
|
+
ProcessLines(MyDocument);
|
|
39
|
+
FinalizeDocument(MyDocument);
|
|
40
|
+
|
|
41
|
+
OnAfterProcessDocument(MyDocument, true);
|
|
42
|
+
end;
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Poor: Missing Event Context
|
|
47
|
+
```al
|
|
48
|
+
// ❌ Partners can't do anything useful with this
|
|
49
|
+
[IntegrationEvent(false, false)]
|
|
50
|
+
local procedure OnProcess()
|
|
51
|
+
begin
|
|
52
|
+
end;
|
|
53
|
+
|
|
54
|
+
// ❌ No IsHandled - partners can't prevent default behavior
|
|
55
|
+
[IntegrationEvent(false, false)]
|
|
56
|
+
local procedure OnBeforePost(DocumentNo: Code[20])
|
|
57
|
+
begin
|
|
58
|
+
end;
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Telemetry Implementation
|
|
64
|
+
|
|
65
|
+
### Good: Comprehensive Operation Telemetry
|
|
66
|
+
```al
|
|
67
|
+
codeunit 50101 "External Service Connector"
|
|
68
|
+
{
|
|
69
|
+
var
|
|
70
|
+
TelemetryCategory: Label 'MyApp-ExternalService', Locked = true;
|
|
71
|
+
|
|
72
|
+
procedure CallExternalService(DocumentNo: Code[20]): Boolean
|
|
73
|
+
var
|
|
74
|
+
StartTime: DateTime;
|
|
75
|
+
Duration: Duration;
|
|
76
|
+
CustomDimensions: Dictionary of [Text, Text];
|
|
77
|
+
begin
|
|
78
|
+
StartTime := CurrentDateTime();
|
|
79
|
+
|
|
80
|
+
CustomDimensions.Add('DocumentNo', DocumentNo);
|
|
81
|
+
CustomDimensions.Add('Operation', 'CallExternalService');
|
|
82
|
+
CustomDimensions.Add('Endpoint', GetEndpointName());
|
|
83
|
+
|
|
84
|
+
Session.LogMessage(
|
|
85
|
+
'MYAPP-0001',
|
|
86
|
+
'External service call started',
|
|
87
|
+
Verbosity::Normal,
|
|
88
|
+
DataClassification::SystemMetadata,
|
|
89
|
+
TelemetryScope::ExtensionPublisher,
|
|
90
|
+
CustomDimensions);
|
|
91
|
+
|
|
92
|
+
if not TryCallService(DocumentNo) then begin
|
|
93
|
+
Duration := CurrentDateTime() - StartTime;
|
|
94
|
+
CustomDimensions.Add('Duration', Format(Duration));
|
|
95
|
+
CustomDimensions.Add('ErrorMessage', GetLastErrorText());
|
|
96
|
+
|
|
97
|
+
Session.LogMessage(
|
|
98
|
+
'MYAPP-0002',
|
|
99
|
+
'External service call failed',
|
|
100
|
+
Verbosity::Error,
|
|
101
|
+
DataClassification::SystemMetadata,
|
|
102
|
+
TelemetryScope::ExtensionPublisher,
|
|
103
|
+
CustomDimensions);
|
|
104
|
+
exit(false);
|
|
105
|
+
end;
|
|
106
|
+
|
|
107
|
+
Duration := CurrentDateTime() - StartTime;
|
|
108
|
+
CustomDimensions.Add('Duration', Format(Duration));
|
|
109
|
+
|
|
110
|
+
Session.LogMessage(
|
|
111
|
+
'MYAPP-0003',
|
|
112
|
+
'External service call completed',
|
|
113
|
+
Verbosity::Normal,
|
|
114
|
+
DataClassification::SystemMetadata,
|
|
115
|
+
TelemetryScope::ExtensionPublisher,
|
|
116
|
+
CustomDimensions);
|
|
117
|
+
|
|
118
|
+
exit(true);
|
|
119
|
+
end;
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Poor: Insufficient Telemetry
|
|
124
|
+
```al
|
|
125
|
+
// ❌ No telemetry at all for external call
|
|
126
|
+
procedure CallExternalService(DocumentNo: Code[20]): Boolean
|
|
127
|
+
begin
|
|
128
|
+
exit(TryCallService(DocumentNo));
|
|
129
|
+
end;
|
|
130
|
+
|
|
131
|
+
// ❌ Telemetry without context
|
|
132
|
+
Session.LogMessage('MYAPP-0001', 'Service called', Verbosity::Normal,
|
|
133
|
+
DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Access Modifier Strategy
|
|
139
|
+
|
|
140
|
+
### Good: Intentional Access Control
|
|
141
|
+
```al
|
|
142
|
+
// Public codeunit - this is the partner-facing API
|
|
143
|
+
codeunit 50102 "My Document API"
|
|
144
|
+
{
|
|
145
|
+
Access = Public;
|
|
146
|
+
|
|
147
|
+
// Public procedure - documented contract for partners
|
|
148
|
+
procedure CreateDocument(CustomerNo: Code[20]): Code[20]
|
|
149
|
+
var
|
|
150
|
+
DocProcessor: Codeunit "My Document Processor Internal";
|
|
151
|
+
begin
|
|
152
|
+
exit(DocProcessor.CreateDocumentInternal(CustomerNo));
|
|
153
|
+
end;
|
|
154
|
+
|
|
155
|
+
// Public procedure - partners can call this
|
|
156
|
+
procedure GetDocumentStatus(DocumentNo: Code[20]): Enum "My Document Status"
|
|
157
|
+
begin
|
|
158
|
+
exit(GetStatusInternal(DocumentNo));
|
|
159
|
+
end;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Internal codeunit - implementation details hidden from partners
|
|
163
|
+
codeunit 50103 "My Document Processor Internal"
|
|
164
|
+
{
|
|
165
|
+
Access = Internal;
|
|
166
|
+
|
|
167
|
+
// Internal procedure - free to refactor
|
|
168
|
+
procedure CreateDocumentInternal(CustomerNo: Code[20]): Code[20]
|
|
169
|
+
begin
|
|
170
|
+
// Implementation that can change without breaking partners
|
|
171
|
+
end;
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Poor: Unintentional Public Surface
|
|
176
|
+
```al
|
|
177
|
+
// ❌ Everything public by default - massive support surface
|
|
178
|
+
codeunit 50104 "My Codeunit"
|
|
179
|
+
{
|
|
180
|
+
// All these become partner contracts accidentally
|
|
181
|
+
procedure DoTheThing()
|
|
182
|
+
procedure HelperMethod1()
|
|
183
|
+
procedure HelperMethod2()
|
|
184
|
+
procedure InternalCalculation()
|
|
185
|
+
procedure DebugOutput()
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Interface Architecture
|
|
192
|
+
|
|
193
|
+
### Good: Well-Documented Interface Pattern
|
|
194
|
+
```al
|
|
195
|
+
// Clear interface contract
|
|
196
|
+
interface "IShipping Provider"
|
|
197
|
+
{
|
|
198
|
+
/// <summary>
|
|
199
|
+
/// Calculates shipping rate for the given shipment parameters.
|
|
200
|
+
/// </summary>
|
|
201
|
+
/// <param name="Weight">Total weight in base unit of measure</param>
|
|
202
|
+
/// <param name="DestinationCountry">ISO country code</param>
|
|
203
|
+
/// <returns>Shipping cost in LCY</returns>
|
|
204
|
+
procedure CalculateRate(Weight: Decimal; DestinationCountry: Code[10]): Decimal;
|
|
205
|
+
|
|
206
|
+
/// <summary>
|
|
207
|
+
/// Creates a shipping label and returns the tracking number.
|
|
208
|
+
/// </summary>
|
|
209
|
+
/// <param name="ShipmentNo">The shipment document number</param>
|
|
210
|
+
/// <returns>Carrier tracking number</returns>
|
|
211
|
+
procedure CreateLabel(ShipmentNo: Code[20]): Text[50];
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Default implementation partners can reference
|
|
215
|
+
codeunit 50110 "Default Shipping Provider" implements "IShipping Provider"
|
|
216
|
+
{
|
|
217
|
+
procedure CalculateRate(Weight: Decimal; DestinationCountry: Code[10]): Decimal
|
|
218
|
+
begin
|
|
219
|
+
// Default flat-rate calculation
|
|
220
|
+
exit(Weight * 0.50);
|
|
221
|
+
end;
|
|
222
|
+
|
|
223
|
+
procedure CreateLabel(ShipmentNo: Code[20]): Text[50]
|
|
224
|
+
begin
|
|
225
|
+
// Default - no label creation
|
|
226
|
+
exit('');
|
|
227
|
+
end;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Registration mechanism
|
|
231
|
+
table 50100 "Shipping Provider Setup"
|
|
232
|
+
{
|
|
233
|
+
fields
|
|
234
|
+
{
|
|
235
|
+
field(1; "Primary Key"; Code[10]) { }
|
|
236
|
+
field(2; "Provider"; Enum "Shipping Provider") { }
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
enum 50100 "Shipping Provider" implements "IShipping Provider"
|
|
241
|
+
{
|
|
242
|
+
Extensible = true;
|
|
243
|
+
|
|
244
|
+
value(0; Default)
|
|
245
|
+
{
|
|
246
|
+
Implementation = "IShipping Provider" = "Default Shipping Provider";
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Partner Readiness Summary Report Template
|
|
254
|
+
|
|
255
|
+
```al
|
|
256
|
+
// Generate a readiness report for your app
|
|
257
|
+
codeunit 50199 "Partner Readiness Report"
|
|
258
|
+
{
|
|
259
|
+
procedure GenerateReport()
|
|
260
|
+
var
|
|
261
|
+
Report: TextBuilder;
|
|
262
|
+
begin
|
|
263
|
+
Report.AppendLine('# Partner Readiness Report');
|
|
264
|
+
Report.AppendLine('Generated: ' + Format(CurrentDateTime()));
|
|
265
|
+
Report.AppendLine('');
|
|
266
|
+
|
|
267
|
+
Report.AppendLine('## Event Coverage');
|
|
268
|
+
Report.AppendLine('- Integration Events: ' + Format(CountIntegrationEvents()));
|
|
269
|
+
Report.AppendLine('- Business Events: ' + Format(CountBusinessEvents()));
|
|
270
|
+
Report.AppendLine('');
|
|
271
|
+
|
|
272
|
+
Report.AppendLine('## Access Modifier Summary');
|
|
273
|
+
Report.AppendLine('- Public Codeunits: ' + Format(CountPublicCodeunits()));
|
|
274
|
+
Report.AppendLine('- Internal Codeunits: ' + Format(CountInternalCodeunits()));
|
|
275
|
+
Report.AppendLine('');
|
|
276
|
+
|
|
277
|
+
Report.AppendLine('## Telemetry Coverage');
|
|
278
|
+
Report.AppendLine('- LogMessage Calls: ' + Format(CountTelemetryCalls()));
|
|
279
|
+
Report.AppendLine('');
|
|
280
|
+
|
|
281
|
+
Report.AppendLine('## Interface Definitions');
|
|
282
|
+
Report.AppendLine('- Interfaces: ' + Format(CountInterfaces()));
|
|
283
|
+
Report.AppendLine('- Implementations: ' + Format(CountImplementations()));
|
|
284
|
+
|
|
285
|
+
Message(Report.ToText());
|
|
286
|
+
end;
|
|
287
|
+
}
|
|
288
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Parker Pragmatic - AI Trust & Transparency Domain
|
|
2
|
+
|
|
3
|
+
This domain contains knowledge specific to **Parker Pragmatic**, the AI Trust & Transparency Specialist.
|
|
4
|
+
|
|
5
|
+
## Focus Areas
|
|
6
|
+
|
|
7
|
+
- **Proposal-Based Development**: Creating reviewable, temporary implementation proposals
|
|
8
|
+
- **AI Transparency**: Explaining AI reasoning, capabilities, and limitations
|
|
9
|
+
- **Collaborative Validation**: Coordinating specialist review before changes
|
|
10
|
+
- **Trust Building**: Gradually building developer confidence in AI assistance
|
|
11
|
+
- **Verification-First Workflows**: Emphasizing testing and validation
|
|
12
|
+
|
|
13
|
+
## Domain Structure
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
parker-pragmatic/
|
|
17
|
+
├── proposal-workflows/ # Proposal creation and management patterns
|
|
18
|
+
├── specialist-coordination/ # Multi-specialist collaboration techniques
|
|
19
|
+
├── trust-building/ # Strategies for working with AI-skeptical developers
|
|
20
|
+
├── verification-patterns/ # Testing and validation approaches
|
|
21
|
+
└── ai-transparency/ # Explaining AI decisions and limitations
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Core Philosophy
|
|
25
|
+
|
|
26
|
+
Parker operates on the principle that **trust is built through transparency, verification, and control**. Rather than making direct changes, Parker creates safe, reviewable proposals that developers can evaluate with specialist input before deciding.
|
|
27
|
+
|
|
28
|
+
## Integration
|
|
29
|
+
|
|
30
|
+
Parker collaborates closely with:
|
|
31
|
+
- **Alex Architect**: Architecture and design validation
|
|
32
|
+
- **Dean Debug**: Performance and optimization review
|
|
33
|
+
- **Roger Reviewer**: Code quality assessment
|
|
34
|
+
- **Quinn Tester**: Testing and verification strategy
|
|
35
|
+
- **Maya Mentor**: Learning-focused explanations
|
|
36
|
+
|
|
37
|
+
## Methodology
|
|
38
|
+
|
|
39
|
+
See: `methodologies/workflows/proposal-review-workflow.md` for Parker's complete workflow.
|