@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.
Files changed (753) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +165 -0
  3. package/dist/cache/cache-manager.d.ts +95 -0
  4. package/dist/cache/cache-manager.d.ts.map +1 -0
  5. package/dist/cache/cache-manager.js +328 -0
  6. package/dist/cache/cache-manager.js.map +1 -0
  7. package/dist/cli/bc-code-intel-cli.d.ts +9 -0
  8. package/dist/cli/bc-code-intel-cli.d.ts.map +1 -0
  9. package/dist/cli/bc-code-intel-cli.js +440 -0
  10. package/dist/cli/bc-code-intel-cli.js.map +1 -0
  11. package/dist/config/config-loader.d.ts +28 -0
  12. package/dist/config/config-loader.d.ts.map +1 -0
  13. package/dist/config/config-loader.js +497 -0
  14. package/dist/config/config-loader.js.map +1 -0
  15. package/dist/config/config-validator.d.ts +84 -0
  16. package/dist/config/config-validator.d.ts.map +1 -0
  17. package/dist/config/config-validator.js +608 -0
  18. package/dist/config/config-validator.js.map +1 -0
  19. package/dist/config/test-config-loader.d.ts +10 -0
  20. package/dist/config/test-config-loader.d.ts.map +1 -0
  21. package/dist/config/test-config-loader.js +135 -0
  22. package/dist/config/test-config-loader.js.map +1 -0
  23. package/dist/config/test-enhanced-layer-service.d.ts +7 -0
  24. package/dist/config/test-enhanced-layer-service.d.ts.map +1 -0
  25. package/dist/config/test-enhanced-layer-service.js +104 -0
  26. package/dist/config/test-enhanced-layer-service.js.map +1 -0
  27. package/dist/config/test-git-layer.d.ts +7 -0
  28. package/dist/config/test-git-layer.d.ts.map +1 -0
  29. package/dist/config/test-git-layer.js +68 -0
  30. package/dist/config/test-git-layer.js.map +1 -0
  31. package/dist/dev/hot-reload.d.ts +91 -0
  32. package/dist/dev/hot-reload.d.ts.map +1 -0
  33. package/dist/dev/hot-reload.js +358 -0
  34. package/dist/dev/hot-reload.js.map +1 -0
  35. package/dist/index.d.ts +82 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +1211 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/layers/base-layer.d.ts +133 -0
  40. package/dist/layers/base-layer.d.ts.map +1 -0
  41. package/dist/layers/base-layer.js +290 -0
  42. package/dist/layers/base-layer.js.map +1 -0
  43. package/dist/layers/embedded-layer.d.ts +130 -0
  44. package/dist/layers/embedded-layer.d.ts.map +1 -0
  45. package/dist/layers/embedded-layer.js +612 -0
  46. package/dist/layers/embedded-layer.js.map +1 -0
  47. package/dist/layers/git-layer.d.ts +77 -0
  48. package/dist/layers/git-layer.d.ts.map +1 -0
  49. package/dist/layers/git-layer.js +529 -0
  50. package/dist/layers/git-layer.js.map +1 -0
  51. package/dist/layers/index.d.ts +12 -0
  52. package/dist/layers/index.d.ts.map +1 -0
  53. package/dist/layers/index.js +11 -0
  54. package/dist/layers/index.js.map +1 -0
  55. package/dist/layers/layer-service.d.ts +135 -0
  56. package/dist/layers/layer-service.d.ts.map +1 -0
  57. package/dist/layers/layer-service.js +586 -0
  58. package/dist/layers/layer-service.js.map +1 -0
  59. package/dist/layers/project-layer.d.ts +58 -0
  60. package/dist/layers/project-layer.d.ts.map +1 -0
  61. package/dist/layers/project-layer.js +286 -0
  62. package/dist/layers/project-layer.js.map +1 -0
  63. package/dist/monitoring/production-monitor.d.ts +148 -0
  64. package/dist/monitoring/production-monitor.d.ts.map +1 -0
  65. package/dist/monitoring/production-monitor.js +463 -0
  66. package/dist/monitoring/production-monitor.js.map +1 -0
  67. package/dist/performance/performance-monitor.d.ts +99 -0
  68. package/dist/performance/performance-monitor.d.ts.map +1 -0
  69. package/dist/performance/performance-monitor.js +253 -0
  70. package/dist/performance/performance-monitor.js.map +1 -0
  71. package/dist/sdk/bc-code-intel-client.d.ts +175 -0
  72. package/dist/sdk/bc-code-intel-client.d.ts.map +1 -0
  73. package/dist/sdk/bc-code-intel-client.js +380 -0
  74. package/dist/sdk/bc-code-intel-client.js.map +1 -0
  75. package/dist/search/intelligent-search.d.ts +97 -0
  76. package/dist/search/intelligent-search.d.ts.map +1 -0
  77. package/dist/search/intelligent-search.js +358 -0
  78. package/dist/search/intelligent-search.js.map +1 -0
  79. package/dist/security/access-control.d.ts +110 -0
  80. package/dist/security/access-control.d.ts.map +1 -0
  81. package/dist/security/access-control.js +353 -0
  82. package/dist/security/access-control.js.map +1 -0
  83. package/dist/services/code-analysis-service.d.ts +72 -0
  84. package/dist/services/code-analysis-service.d.ts.map +1 -0
  85. package/dist/services/code-analysis-service.js +818 -0
  86. package/dist/services/code-analysis-service.js.map +1 -0
  87. package/dist/services/enhanced-prompt-service.d.ts +56 -0
  88. package/dist/services/enhanced-prompt-service.d.ts.map +1 -0
  89. package/dist/services/enhanced-prompt-service.js +165 -0
  90. package/dist/services/enhanced-prompt-service.js.map +1 -0
  91. package/dist/services/knowledge-service.d.ts +90 -0
  92. package/dist/services/knowledge-service.d.ts.map +1 -0
  93. package/dist/services/knowledge-service.js +342 -0
  94. package/dist/services/knowledge-service.js.map +1 -0
  95. package/dist/services/methodology-service.d.ts +91 -0
  96. package/dist/services/methodology-service.d.ts.map +1 -0
  97. package/dist/services/methodology-service.js +423 -0
  98. package/dist/services/methodology-service.js.map +1 -0
  99. package/dist/services/multi-content-layer-service.d.ts +198 -0
  100. package/dist/services/multi-content-layer-service.d.ts.map +1 -0
  101. package/dist/services/multi-content-layer-service.js +991 -0
  102. package/dist/services/multi-content-layer-service.js.map +1 -0
  103. package/dist/services/roleplay-engine.d.ts +161 -0
  104. package/dist/services/roleplay-engine.d.ts.map +1 -0
  105. package/dist/services/roleplay-engine.js +994 -0
  106. package/dist/services/roleplay-engine.js.map +1 -0
  107. package/dist/services/session-storage/file-storage.d.ts +30 -0
  108. package/dist/services/session-storage/file-storage.d.ts.map +1 -0
  109. package/dist/services/session-storage/file-storage.js +229 -0
  110. package/dist/services/session-storage/file-storage.js.map +1 -0
  111. package/dist/services/session-storage/in-memory-storage.d.ts +31 -0
  112. package/dist/services/session-storage/in-memory-storage.d.ts.map +1 -0
  113. package/dist/services/session-storage/in-memory-storage.js +142 -0
  114. package/dist/services/session-storage/in-memory-storage.js.map +1 -0
  115. package/dist/services/specialist-discovery.d.ts +98 -0
  116. package/dist/services/specialist-discovery.d.ts.map +1 -0
  117. package/dist/services/specialist-discovery.js +387 -0
  118. package/dist/services/specialist-discovery.js.map +1 -0
  119. package/dist/services/specialist-loader.d.ts +101 -0
  120. package/dist/services/specialist-loader.d.ts.map +1 -0
  121. package/dist/services/specialist-loader.js +256 -0
  122. package/dist/services/specialist-loader.js.map +1 -0
  123. package/dist/services/specialist-session-manager.d.ts +76 -0
  124. package/dist/services/specialist-session-manager.d.ts.map +1 -0
  125. package/dist/services/specialist-session-manager.js +255 -0
  126. package/dist/services/specialist-session-manager.js.map +1 -0
  127. package/dist/services/workflow-service.d.ts +146 -0
  128. package/dist/services/workflow-service.d.ts.map +1 -0
  129. package/dist/services/workflow-service.js +409 -0
  130. package/dist/services/workflow-service.js.map +1 -0
  131. package/dist/setup/post-install.d.ts +12 -0
  132. package/dist/setup/post-install.d.ts.map +1 -0
  133. package/dist/setup/post-install.js +81 -0
  134. package/dist/setup/post-install.js.map +1 -0
  135. package/dist/streamlined-handlers.d.ts +94 -0
  136. package/dist/streamlined-handlers.d.ts.map +1 -0
  137. package/dist/streamlined-handlers.js +665 -0
  138. package/dist/streamlined-handlers.js.map +1 -0
  139. package/dist/test-enhanced-mcp-server.d.ts +7 -0
  140. package/dist/test-enhanced-mcp-server.d.ts.map +1 -0
  141. package/dist/test-enhanced-mcp-server.js +177 -0
  142. package/dist/test-enhanced-mcp-server.js.map +1 -0
  143. package/dist/tools/config-diagnostic-tools.d.ts +234 -0
  144. package/dist/tools/config-diagnostic-tools.d.ts.map +1 -0
  145. package/dist/tools/config-diagnostic-tools.js +887 -0
  146. package/dist/tools/config-diagnostic-tools.js.map +1 -0
  147. package/dist/tools/core-tools.d.ts +26 -0
  148. package/dist/tools/core-tools.d.ts.map +1 -0
  149. package/dist/tools/core-tools.js +241 -0
  150. package/dist/tools/core-tools.js.map +1 -0
  151. package/dist/tools/handoff-tools.d.ts +37 -0
  152. package/dist/tools/handoff-tools.d.ts.map +1 -0
  153. package/dist/tools/handoff-tools.js +265 -0
  154. package/dist/tools/handoff-tools.js.map +1 -0
  155. package/dist/tools/index.d.ts +61 -0
  156. package/dist/tools/index.d.ts.map +1 -0
  157. package/dist/tools/index.js +75 -0
  158. package/dist/tools/index.js.map +1 -0
  159. package/dist/tools/onboarding-tools.d.ts +43 -0
  160. package/dist/tools/onboarding-tools.d.ts.map +1 -0
  161. package/dist/tools/onboarding-tools.js +353 -0
  162. package/dist/tools/onboarding-tools.js.map +1 -0
  163. package/dist/tools/specialist-discovery-tools.d.ts +27 -0
  164. package/dist/tools/specialist-discovery-tools.d.ts.map +1 -0
  165. package/dist/tools/specialist-discovery-tools.js +275 -0
  166. package/dist/tools/specialist-discovery-tools.js.map +1 -0
  167. package/dist/tools/specialist-tools.d.ts +43 -0
  168. package/dist/tools/specialist-tools.d.ts.map +1 -0
  169. package/dist/tools/specialist-tools.js +372 -0
  170. package/dist/tools/specialist-tools.js.map +1 -0
  171. package/dist/tools/workspace-tools.d.ts +96 -0
  172. package/dist/tools/workspace-tools.d.ts.map +1 -0
  173. package/dist/tools/workspace-tools.js +188 -0
  174. package/dist/tools/workspace-tools.js.map +1 -0
  175. package/dist/types/bc-knowledge.d.ts +303 -0
  176. package/dist/types/bc-knowledge.d.ts.map +1 -0
  177. package/dist/types/bc-knowledge.js +69 -0
  178. package/dist/types/bc-knowledge.js.map +1 -0
  179. package/dist/types/config-types.d.ts +186 -0
  180. package/dist/types/config-types.d.ts.map +1 -0
  181. package/dist/types/config-types.js +109 -0
  182. package/dist/types/config-types.js.map +1 -0
  183. package/dist/types/enhanced-layer-types.d.ts +193 -0
  184. package/dist/types/enhanced-layer-types.d.ts.map +1 -0
  185. package/dist/types/enhanced-layer-types.js +9 -0
  186. package/dist/types/enhanced-layer-types.js.map +1 -0
  187. package/dist/types/index.d.ts +5 -0
  188. package/dist/types/index.d.ts.map +1 -0
  189. package/dist/types/index.js +7 -0
  190. package/dist/types/index.js.map +1 -0
  191. package/dist/types/layer-types.d.ts +173 -0
  192. package/dist/types/layer-types.d.ts.map +1 -0
  193. package/dist/types/layer-types.js +27 -0
  194. package/dist/types/layer-types.js.map +1 -0
  195. package/dist/types/roleplay-types.d.ts +156 -0
  196. package/dist/types/roleplay-types.d.ts.map +1 -0
  197. package/dist/types/roleplay-types.js +8 -0
  198. package/dist/types/roleplay-types.js.map +1 -0
  199. package/dist/types/session-types.d.ts +127 -0
  200. package/dist/types/session-types.d.ts.map +1 -0
  201. package/dist/types/session-types.js +8 -0
  202. package/dist/types/session-types.js.map +1 -0
  203. package/dist/utils/path-utils.d.ts +5 -0
  204. package/dist/utils/path-utils.d.ts.map +1 -0
  205. package/dist/utils/path-utils.js +14 -0
  206. package/dist/utils/path-utils.js.map +1 -0
  207. package/dist/workflows/domain-workflows.d.ts +8 -0
  208. package/dist/workflows/domain-workflows.d.ts.map +1 -0
  209. package/dist/workflows/domain-workflows.js +360 -0
  210. package/dist/workflows/domain-workflows.js.map +1 -0
  211. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +24 -0
  212. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +24 -0
  213. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +30 -0
  214. package/embedded-knowledge/AGENTS.md +178 -0
  215. package/embedded-knowledge/CONTRIBUTING.md +58 -0
  216. package/embedded-knowledge/LICENSE +21 -0
  217. package/embedded-knowledge/README.md +32 -0
  218. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +90 -0
  219. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +113 -0
  220. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +101 -0
  221. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +87 -0
  222. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +155 -0
  223. package/embedded-knowledge/domains/alex-architect/delegating-to-github-copilot-agents.md +371 -0
  224. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +138 -0
  225. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +79 -0
  226. package/embedded-knowledge/domains/alex-architect/object-id-ninja-integration.md +281 -0
  227. package/embedded-knowledge/domains/alex-architect/recommend-object-id-ninja.md +248 -0
  228. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +280 -0
  229. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +200 -0
  230. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +565 -0
  231. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +665 -0
  232. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +325 -0
  233. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +696 -0
  234. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +320 -0
  235. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +102 -0
  236. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +433 -0
  237. package/embedded-knowledge/domains/alex-architect/samples/testability-design-patterns.md +223 -0
  238. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +66 -0
  239. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +115 -0
  240. package/embedded-knowledge/domains/alex-architect/testability-design-patterns.md +77 -0
  241. package/embedded-knowledge/domains/casey-copilot/long-running-session-instructions.md +263 -0
  242. package/embedded-knowledge/domains/casey-copilot/samples/long-running-session-instructions.md +323 -0
  243. package/embedded-knowledge/domains/chris-config/configuration-file-discovery.md +846 -0
  244. package/embedded-knowledge/domains/chris-config/configuration-file-formats.md +595 -0
  245. package/embedded-knowledge/domains/chris-config/content-types-structure.md +421 -0
  246. package/embedded-knowledge/domains/chris-config/knowledge-content-creation.md +437 -0
  247. package/embedded-knowledge/domains/chris-config/layer-system-fundamentals.md +257 -0
  248. package/embedded-knowledge/domains/chris-config/multi-team-layer-configuration.md +302 -0
  249. package/embedded-knowledge/domains/chris-config/workspace-detection-solutions.md +336 -0
  250. package/embedded-knowledge/domains/dean-debug/bc-telemetry-buddy-integration.md +453 -0
  251. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +360 -0
  252. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +86 -0
  253. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +96 -0
  254. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +70 -0
  255. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +84 -0
  256. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +93 -0
  257. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +73 -0
  258. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +78 -0
  259. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +79 -0
  260. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +87 -0
  261. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +209 -0
  262. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +246 -0
  263. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +107 -0
  264. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +105 -0
  265. package/embedded-knowledge/domains/dean-debug/recommend-bc-telemetry-buddy.md +160 -0
  266. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +186 -0
  267. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +60 -0
  268. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +139 -0
  269. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +190 -0
  270. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +516 -0
  271. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +298 -0
  272. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +324 -0
  273. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +344 -0
  274. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +137 -0
  275. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +340 -0
  276. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +810 -0
  277. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +86 -0
  278. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +110 -0
  279. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +758 -0
  280. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +665 -0
  281. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +316 -0
  282. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +223 -0
  283. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +149 -0
  284. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +412 -0
  285. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +211 -0
  286. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +155 -0
  287. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +475 -0
  288. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +238 -0
  289. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +97 -0
  290. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +666 -0
  291. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +319 -0
  292. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +236 -0
  293. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +59 -0
  294. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +67 -0
  295. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +70 -0
  296. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +90 -0
  297. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +87 -0
  298. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +70 -0
  299. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +74 -0
  300. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +81 -0
  301. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +56 -0
  302. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +66 -0
  303. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +79 -0
  304. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +78 -0
  305. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +83 -0
  306. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +76 -0
  307. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +104 -0
  308. package/embedded-knowledge/domains/eva-errors/codeunit-run-pattern.md +159 -0
  309. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +145 -0
  310. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +104 -0
  311. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +114 -0
  312. package/embedded-knowledge/domains/eva-errors/samples/codeunit-run-pattern.md +239 -0
  313. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +356 -0
  314. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +256 -0
  315. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +101 -0
  316. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +108 -0
  317. package/embedded-knowledge/domains/eva-errors/samples/try-function-usage.md +195 -0
  318. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +80 -0
  319. package/embedded-knowledge/domains/eva-errors/try-function-usage.md +129 -0
  320. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +98 -0
  321. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +123 -0
  322. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +96 -0
  323. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +115 -0
  324. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +115 -0
  325. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +114 -0
  326. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +395 -0
  327. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +479 -0
  328. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +548 -0
  329. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +287 -0
  330. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +434 -0
  331. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +508 -0
  332. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +615 -0
  333. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +144 -0
  334. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +96 -0
  335. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +124 -0
  336. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +84 -0
  337. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +75 -0
  338. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +96 -0
  339. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +385 -0
  340. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +72 -0
  341. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +48 -0
  342. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +49 -0
  343. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +67 -0
  344. package/embedded-knowledge/domains/morgan-market/partner-readiness-analysis.md +201 -0
  345. package/embedded-knowledge/domains/morgan-market/samples/partner-readiness-checklist.md +288 -0
  346. package/embedded-knowledge/domains/parker-pragmatic/README.md +39 -0
  347. package/embedded-knowledge/domains/parker-pragmatic/proposal-workflows/creating-effective-proposals.md +583 -0
  348. package/embedded-knowledge/domains/parker-pragmatic/trust-building/working-with-ai-skeptics.md +587 -0
  349. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +119 -0
  350. package/embedded-knowledge/domains/quinn-tester/isolation-testing-patterns.md +82 -0
  351. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +123 -0
  352. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +64 -0
  353. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +60 -0
  354. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +83 -0
  355. package/embedded-knowledge/domains/quinn-tester/samples/isolation-testing-patterns.md +424 -0
  356. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +716 -0
  357. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +101 -0
  358. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +91 -0
  359. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +79 -0
  360. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +79 -0
  361. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +89 -0
  362. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +76 -0
  363. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +76 -0
  364. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +76 -0
  365. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +81 -0
  366. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +76 -0
  367. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +75 -0
  368. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +76 -0
  369. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +76 -0
  370. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +76 -0
  371. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +96 -0
  372. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +76 -0
  373. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +86 -0
  374. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +90 -0
  375. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +82 -0
  376. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +78 -0
  377. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +76 -0
  378. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +78 -0
  379. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +100 -0
  380. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +115 -0
  381. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +124 -0
  382. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +110 -0
  383. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +438 -0
  384. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +255 -0
  385. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +209 -0
  386. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +218 -0
  387. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +218 -0
  388. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +280 -0
  389. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +188 -0
  390. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +245 -0
  391. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +244 -0
  392. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +278 -0
  393. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +484 -0
  394. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +64 -0
  395. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +107 -0
  396. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +280 -0
  397. package/embedded-knowledge/domains/roger-reviewer/samples/testability-code-smells.md +256 -0
  398. package/embedded-knowledge/domains/roger-reviewer/testability-code-smells.md +67 -0
  399. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +75 -0
  400. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +67 -0
  401. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +76 -0
  402. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +98 -0
  403. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +128 -0
  404. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +75 -0
  405. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +95 -0
  406. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +141 -0
  407. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +91 -0
  408. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +118 -0
  409. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +111 -0
  410. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +113 -0
  411. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +127 -0
  412. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +141 -0
  413. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +66 -0
  414. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +96 -0
  415. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +161 -0
  416. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +177 -0
  417. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +239 -0
  418. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +346 -0
  419. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +298 -0
  420. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +677 -0
  421. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +117 -0
  422. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +75 -0
  423. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +169 -0
  424. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +399 -0
  425. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +356 -0
  426. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +889 -0
  427. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +84 -0
  428. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +127 -0
  429. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +89 -0
  430. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +516 -0
  431. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +61 -0
  432. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +427 -0
  433. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +122 -0
  434. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +96 -0
  435. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +101 -0
  436. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +149 -0
  437. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +107 -0
  438. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +95 -0
  439. package/embedded-knowledge/domains/seth-security/api-permission-model.md +115 -0
  440. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +78 -0
  441. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +373 -0
  442. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +308 -0
  443. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +146 -0
  444. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +79 -0
  445. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +78 -0
  446. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +81 -0
  447. package/embedded-knowledge/indexes/bc-version-matrix.json +188 -0
  448. package/embedded-knowledge/indexes/domain-catalog.json +106 -0
  449. package/embedded-knowledge/indexes/tags/abbreviations.json +1 -0
  450. package/embedded-knowledge/indexes/tags/abstraction.json +1 -0
  451. package/embedded-knowledge/indexes/tags/access-control.json +1 -0
  452. package/embedded-knowledge/indexes/tags/accessibility.json +1 -0
  453. package/embedded-knowledge/indexes/tags/actions.json +1 -0
  454. package/embedded-knowledge/indexes/tags/advanced-patterns.json +1 -0
  455. package/embedded-knowledge/indexes/tags/advanced.json +1 -0
  456. package/embedded-knowledge/indexes/tags/al-extension.json +1 -0
  457. package/embedded-knowledge/indexes/tags/al-generics.json +1 -0
  458. package/embedded-knowledge/indexes/tags/al-objects.json +1 -0
  459. package/embedded-knowledge/indexes/tags/al-syntax.json +1 -0
  460. package/embedded-knowledge/indexes/tags/algorithm-structure.json +1 -0
  461. package/embedded-knowledge/indexes/tags/alternatives.json +1 -0
  462. package/embedded-knowledge/indexes/tags/analytics.json +1 -0
  463. package/embedded-knowledge/indexes/tags/api-delegates.json +1 -0
  464. package/embedded-knowledge/indexes/tags/api-design.json +1 -0
  465. package/embedded-knowledge/indexes/tags/api-documentation.json +1 -0
  466. package/embedded-knowledge/indexes/tags/api-endpoints.json +1 -0
  467. package/embedded-knowledge/indexes/tags/api-extensibility.json +1 -0
  468. package/embedded-knowledge/indexes/tags/api-fieldsets.json +1 -0
  469. package/embedded-knowledge/indexes/tags/api-integration.json +1 -0
  470. package/embedded-knowledge/indexes/tags/api-interfaces.json +1 -0
  471. package/embedded-knowledge/indexes/tags/api-optimization.json +1 -0
  472. package/embedded-knowledge/indexes/tags/api-pages.json +1 -0
  473. package/embedded-knowledge/indexes/tags/api-patterns.json +1 -0
  474. package/embedded-knowledge/indexes/tags/api-permissions.json +1 -0
  475. package/embedded-knowledge/indexes/tags/api-responses.json +1 -0
  476. package/embedded-knowledge/indexes/tags/api-simplification.json +1 -0
  477. package/embedded-knowledge/indexes/tags/api.json +1 -0
  478. package/embedded-knowledge/indexes/tags/architecture.json +1 -0
  479. package/embedded-knowledge/indexes/tags/async-patterns.json +1 -0
  480. package/embedded-knowledge/indexes/tags/async-processing.json +1 -0
  481. package/embedded-knowledge/indexes/tags/automatic-registration.json +1 -0
  482. package/embedded-knowledge/indexes/tags/batch-operations.json +1 -0
  483. package/embedded-knowledge/indexes/tags/bc24-migration.json +1 -0
  484. package/embedded-knowledge/indexes/tags/begin-blocks.json +1 -0
  485. package/embedded-knowledge/indexes/tags/begin-end.json +1 -0
  486. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +1 -0
  487. package/embedded-knowledge/indexes/tags/best-practices.json +1 -0
  488. package/embedded-knowledge/indexes/tags/binding.json +1 -0
  489. package/embedded-knowledge/indexes/tags/block-structure.json +1 -0
  490. package/embedded-knowledge/indexes/tags/blocks.json +1 -0
  491. package/embedded-knowledge/indexes/tags/boolean-expressions.json +1 -0
  492. package/embedded-knowledge/indexes/tags/branching.json +1 -0
  493. package/embedded-knowledge/indexes/tags/breaking-changes.json +1 -0
  494. package/embedded-knowledge/indexes/tags/breakpoints.json +1 -0
  495. package/embedded-knowledge/indexes/tags/business-foundation.json +1 -0
  496. package/embedded-knowledge/indexes/tags/business-infrastructure.json +1 -0
  497. package/embedded-knowledge/indexes/tags/business-process.json +1 -0
  498. package/embedded-knowledge/indexes/tags/business-rules.json +1 -0
  499. package/embedded-knowledge/indexes/tags/caching.json +1 -0
  500. package/embedded-knowledge/indexes/tags/case-statements.json +1 -0
  501. package/embedded-knowledge/indexes/tags/case.json +1 -0
  502. package/embedded-knowledge/indexes/tags/code-analysis.json +1 -0
  503. package/embedded-knowledge/indexes/tags/code-clarity.json +1 -0
  504. package/embedded-knowledge/indexes/tags/code-comprehension.json +1 -0
  505. package/embedded-knowledge/indexes/tags/code-conversion.json +1 -0
  506. package/embedded-knowledge/indexes/tags/code-formatting.json +1 -0
  507. package/embedded-knowledge/indexes/tags/code-organization.json +1 -0
  508. package/embedded-knowledge/indexes/tags/code-patterns.json +1 -0
  509. package/embedded-knowledge/indexes/tags/code-quality.json +1 -0
  510. package/embedded-knowledge/indexes/tags/code-reuse.json +1 -0
  511. package/embedded-knowledge/indexes/tags/code-simplification.json +1 -0
  512. package/embedded-knowledge/indexes/tags/code-standards.json +1 -0
  513. package/embedded-knowledge/indexes/tags/code-structure.json +1 -0
  514. package/embedded-knowledge/indexes/tags/code-style.json +1 -0
  515. package/embedded-knowledge/indexes/tags/codeunit-design.json +1 -0
  516. package/embedded-knowledge/indexes/tags/command-queue.json +1 -0
  517. package/embedded-knowledge/indexes/tags/comments.json +1 -0
  518. package/embedded-knowledge/indexes/tags/compile-time-validation.json +1 -0
  519. package/embedded-knowledge/indexes/tags/complex-facade.json +1 -0
  520. package/embedded-knowledge/indexes/tags/complexity-hiding.json +1 -0
  521. package/embedded-knowledge/indexes/tags/complexity-management.json +1 -0
  522. package/embedded-knowledge/indexes/tags/compound-statements.json +1 -0
  523. package/embedded-knowledge/indexes/tags/concurrency.json +1 -0
  524. package/embedded-knowledge/indexes/tags/conditional-logic.json +1 -0
  525. package/embedded-knowledge/indexes/tags/conditional.json +1 -0
  526. package/embedded-knowledge/indexes/tags/conflict-resolution.json +1 -0
  527. package/embedded-knowledge/indexes/tags/consistency.json +1 -0
  528. package/embedded-knowledge/indexes/tags/contract-design.json +1 -0
  529. package/embedded-knowledge/indexes/tags/control-flow.json +1 -0
  530. package/embedded-knowledge/indexes/tags/conversion-guide.json +1 -0
  531. package/embedded-knowledge/indexes/tags/correlation.json +1 -0
  532. package/embedded-knowledge/indexes/tags/custom-messages.json +1 -0
  533. package/embedded-knowledge/indexes/tags/data-access.json +1 -0
  534. package/embedded-knowledge/indexes/tags/data-exposure.json +1 -0
  535. package/embedded-knowledge/indexes/tags/data-integrity.json +1 -0
  536. package/embedded-knowledge/indexes/tags/data-loading.json +1 -0
  537. package/embedded-knowledge/indexes/tags/data-manipulation.json +1 -0
  538. package/embedded-knowledge/indexes/tags/data-modeling.json +1 -0
  539. package/embedded-knowledge/indexes/tags/data-patterns.json +1 -0
  540. package/embedded-knowledge/indexes/tags/data-protection.json +1 -0
  541. package/embedded-knowledge/indexes/tags/data-validation.json +1 -0
  542. package/embedded-knowledge/indexes/tags/database.json +1 -0
  543. package/embedded-knowledge/indexes/tags/debugging.json +1 -0
  544. package/embedded-knowledge/indexes/tags/decision-making.json +1 -0
  545. package/embedded-knowledge/indexes/tags/declaration.json +1 -0
  546. package/embedded-knowledge/indexes/tags/default-messages.json +1 -0
  547. package/embedded-knowledge/indexes/tags/defensive-programming.json +1 -0
  548. package/embedded-knowledge/indexes/tags/deleteall.json +1 -0
  549. package/embedded-knowledge/indexes/tags/dependencies.json +1 -0
  550. package/embedded-knowledge/indexes/tags/deployment.json +1 -0
  551. package/embedded-knowledge/indexes/tags/developer-productivity.json +1 -0
  552. package/embedded-knowledge/indexes/tags/development-workflow.json +1 -0
  553. package/embedded-knowledge/indexes/tags/diagnostics.json +1 -0
  554. package/embedded-knowledge/indexes/tags/dimensions.json +1 -0
  555. package/embedded-knowledge/indexes/tags/documentation.json +1 -0
  556. package/embedded-knowledge/indexes/tags/early-exit.json +1 -0
  557. package/embedded-knowledge/indexes/tags/else-clauses.json +1 -0
  558. package/embedded-knowledge/indexes/tags/end-statements.json +1 -0
  559. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +1 -0
  560. package/embedded-knowledge/indexes/tags/entity-relationships.json +1 -0
  561. package/embedded-knowledge/indexes/tags/error-handling.json +1 -0
  562. package/embedded-knowledge/indexes/tags/error-messages.json +1 -0
  563. package/embedded-knowledge/indexes/tags/error-prevention.json +1 -0
  564. package/embedded-knowledge/indexes/tags/error-text.json +1 -0
  565. package/embedded-knowledge/indexes/tags/etag.json +1 -0
  566. package/embedded-knowledge/indexes/tags/event-bridge.json +1 -0
  567. package/embedded-knowledge/indexes/tags/event-payload.json +1 -0
  568. package/embedded-knowledge/indexes/tags/event-routing.json +1 -0
  569. package/embedded-knowledge/indexes/tags/events.json +1 -0
  570. package/embedded-knowledge/indexes/tags/execution-flow.json +1 -0
  571. package/embedded-knowledge/indexes/tags/expressions.json +1 -0
  572. package/embedded-knowledge/indexes/tags/extensibility.json +1 -0
  573. package/embedded-knowledge/indexes/tags/extensions.json +1 -0
  574. package/embedded-knowledge/indexes/tags/facade-composition.json +1 -0
  575. package/embedded-knowledge/indexes/tags/facade-pattern.json +1 -0
  576. package/embedded-knowledge/indexes/tags/field-control.json +1 -0
  577. package/embedded-knowledge/indexes/tags/field-exclusion.json +1 -0
  578. package/embedded-knowledge/indexes/tags/field-registration.json +1 -0
  579. package/embedded-knowledge/indexes/tags/field-state.json +1 -0
  580. package/embedded-knowledge/indexes/tags/field-validation.json +1 -0
  581. package/embedded-knowledge/indexes/tags/fielderror.json +1 -0
  582. package/embedded-knowledge/indexes/tags/fields.json +1 -0
  583. package/embedded-knowledge/indexes/tags/filtering.json +1 -0
  584. package/embedded-knowledge/indexes/tags/filters.json +1 -0
  585. package/embedded-knowledge/indexes/tags/formatting.json +1 -0
  586. package/embedded-knowledge/indexes/tags/generic-methods.json +1 -0
  587. package/embedded-knowledge/indexes/tags/http-status.json +1 -0
  588. package/embedded-knowledge/indexes/tags/if-statements.json +1 -0
  589. package/embedded-knowledge/indexes/tags/implementation.json +1 -0
  590. package/embedded-knowledge/indexes/tags/indentation.json +1 -0
  591. package/embedded-knowledge/indexes/tags/index-summary.json +277 -0
  592. package/embedded-knowledge/indexes/tags/indexing.json +1 -0
  593. package/embedded-knowledge/indexes/tags/inheritance.json +1 -0
  594. package/embedded-knowledge/indexes/tags/integration.json +1 -0
  595. package/embedded-knowledge/indexes/tags/integrity-checking.json +1 -0
  596. package/embedded-knowledge/indexes/tags/intellisense.json +1 -0
  597. package/embedded-knowledge/indexes/tags/interface-design.json +1 -0
  598. package/embedded-knowledge/indexes/tags/interface-segregation.json +1 -0
  599. package/embedded-knowledge/indexes/tags/isolation.json +1 -0
  600. package/embedded-knowledge/indexes/tags/job-processing.json +1 -0
  601. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +1 -0
  602. package/embedded-knowledge/indexes/tags/keywords.json +1 -0
  603. package/embedded-knowledge/indexes/tags/legacy-modernization.json +1 -0
  604. package/embedded-knowledge/indexes/tags/line-breaks.json +1 -0
  605. package/embedded-knowledge/indexes/tags/line-organization.json +1 -0
  606. package/embedded-knowledge/indexes/tags/line-positioning.json +1 -0
  607. package/embedded-knowledge/indexes/tags/localization.json +1 -0
  608. package/embedded-knowledge/indexes/tags/logging.json +1 -0
  609. package/embedded-knowledge/indexes/tags/loose-coupling.json +1 -0
  610. package/embedded-knowledge/indexes/tags/maintainability.json +1 -0
  611. package/embedded-knowledge/indexes/tags/memory-management.json +1 -0
  612. package/embedded-knowledge/indexes/tags/memory-optimization.json +1 -0
  613. package/embedded-knowledge/indexes/tags/memory.json +1 -0
  614. package/embedded-knowledge/indexes/tags/message-design.json +1 -0
  615. package/embedded-knowledge/indexes/tags/message-formatting.json +1 -0
  616. package/embedded-knowledge/indexes/tags/message-patterns.json +1 -0
  617. package/embedded-knowledge/indexes/tags/metadata-driven.json +1 -0
  618. package/embedded-knowledge/indexes/tags/method-comparison.json +1 -0
  619. package/embedded-knowledge/indexes/tags/module-architecture.json +1 -0
  620. package/embedded-knowledge/indexes/tags/module-validation.json +1 -0
  621. package/embedded-knowledge/indexes/tags/monitoring.json +1 -0
  622. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +1 -0
  623. package/embedded-knowledge/indexes/tags/multi-tenancy.json +1 -0
  624. package/embedded-knowledge/indexes/tags/multiple-values.json +1 -0
  625. package/embedded-knowledge/indexes/tags/naming-conventions.json +1 -0
  626. package/embedded-knowledge/indexes/tags/naming.json +1 -0
  627. package/embedded-knowledge/indexes/tags/navigation.json +1 -0
  628. package/embedded-knowledge/indexes/tags/nested-statements.json +1 -0
  629. package/embedded-knowledge/indexes/tags/no-series-conversion.json +1 -0
  630. package/embedded-knowledge/indexes/tags/no-series-validation.json +1 -0
  631. package/embedded-knowledge/indexes/tags/no-series.json +1 -0
  632. package/embedded-knowledge/indexes/tags/number-generation.json +1 -0
  633. package/embedded-knowledge/indexes/tags/object-documentation.json +1 -0
  634. package/embedded-knowledge/indexes/tags/odata.json +1 -0
  635. package/embedded-knowledge/indexes/tags/ondelete.json +1 -0
  636. package/embedded-knowledge/indexes/tags/onvalidate.json +1 -0
  637. package/embedded-knowledge/indexes/tags/operation-delegation.json +1 -0
  638. package/embedded-knowledge/indexes/tags/operation-safety.json +1 -0
  639. package/embedded-knowledge/indexes/tags/operators.json +1 -0
  640. package/embedded-knowledge/indexes/tags/optimization.json +1 -0
  641. package/embedded-knowledge/indexes/tags/order.json +1 -0
  642. package/embedded-knowledge/indexes/tags/organization.json +1 -0
  643. package/embedded-knowledge/indexes/tags/pages.json +1 -0
  644. package/embedded-knowledge/indexes/tags/parameters.json +1 -0
  645. package/embedded-knowledge/indexes/tags/patterns.json +1 -0
  646. package/embedded-knowledge/indexes/tags/performance-optimization.json +1 -0
  647. package/embedded-knowledge/indexes/tags/performance.json +1 -0
  648. package/embedded-knowledge/indexes/tags/placement.json +1 -0
  649. package/embedded-knowledge/indexes/tags/posting-codeunits.json +1 -0
  650. package/embedded-knowledge/indexes/tags/posting.json +1 -0
  651. package/embedded-knowledge/indexes/tags/preconditions.json +1 -0
  652. package/embedded-knowledge/indexes/tags/primary-key.json +1 -0
  653. package/embedded-knowledge/indexes/tags/privacy.json +1 -0
  654. package/embedded-knowledge/indexes/tags/process-automation.json +1 -0
  655. package/embedded-knowledge/indexes/tags/production.json +1 -0
  656. package/embedded-knowledge/indexes/tags/productivity.json +1 -0
  657. package/embedded-knowledge/indexes/tags/query-performance.json +1 -0
  658. package/embedded-knowledge/indexes/tags/queue-management.json +1 -0
  659. package/embedded-knowledge/indexes/tags/ranges.json +1 -0
  660. package/embedded-knowledge/indexes/tags/readability.json +1 -0
  661. package/embedded-knowledge/indexes/tags/record-access.json +1 -0
  662. package/embedded-knowledge/indexes/tags/record-methods.json +1 -0
  663. package/embedded-knowledge/indexes/tags/refactoring.json +1 -0
  664. package/embedded-knowledge/indexes/tags/reference.json +1 -0
  665. package/embedded-knowledge/indexes/tags/repeat-loops.json +1 -0
  666. package/embedded-knowledge/indexes/tags/repeat-statement.json +1 -0
  667. package/embedded-knowledge/indexes/tags/runtime-errors.json +1 -0
  668. package/embedded-knowledge/indexes/tags/runtime.json +1 -0
  669. package/embedded-knowledge/indexes/tags/safeguards.json +1 -0
  670. package/embedded-knowledge/indexes/tags/security.json +1 -0
  671. package/embedded-knowledge/indexes/tags/sequence-management.json +1 -0
  672. package/embedded-knowledge/indexes/tags/serialization.json +1 -0
  673. package/embedded-knowledge/indexes/tags/session-logmessage.json +1 -0
  674. package/embedded-knowledge/indexes/tags/session.json +1 -0
  675. package/embedded-knowledge/indexes/tags/setloadfields.json +1 -0
  676. package/embedded-knowledge/indexes/tags/shortcuts.json +1 -0
  677. package/embedded-knowledge/indexes/tags/sift.json +1 -0
  678. package/embedded-knowledge/indexes/tags/singleinstance.json +1 -0
  679. package/embedded-knowledge/indexes/tags/spacing.json +1 -0
  680. package/embedded-knowledge/indexes/tags/sql-translation.json +1 -0
  681. package/embedded-knowledge/indexes/tags/standards.json +1 -0
  682. package/embedded-knowledge/indexes/tags/statements.json +1 -0
  683. package/embedded-knowledge/indexes/tags/streaming.json +1 -0
  684. package/embedded-knowledge/indexes/tags/strong-typing.json +1 -0
  685. package/embedded-knowledge/indexes/tags/structural-patterns.json +1 -0
  686. package/embedded-knowledge/indexes/tags/structure.json +1 -0
  687. package/embedded-knowledge/indexes/tags/subscribers.json +1 -0
  688. package/embedded-knowledge/indexes/tags/switch.json +1 -0
  689. package/embedded-knowledge/indexes/tags/symbol-search.json +1 -0
  690. package/embedded-knowledge/indexes/tags/syntax.json +1 -0
  691. package/embedded-knowledge/indexes/tags/systemid.json +1 -0
  692. package/embedded-knowledge/indexes/tags/table-configuration.json +1 -0
  693. package/embedded-knowledge/indexes/tags/table-events.json +1 -0
  694. package/embedded-knowledge/indexes/tags/table-keys.json +1 -0
  695. package/embedded-knowledge/indexes/tags/table-safety.json +1 -0
  696. package/embedded-knowledge/indexes/tags/task-scheduler.json +1 -0
  697. package/embedded-knowledge/indexes/tags/telemetry.json +1 -0
  698. package/embedded-knowledge/indexes/tags/template-method.json +1 -0
  699. package/embedded-knowledge/indexes/tags/temporary-tables.json +1 -0
  700. package/embedded-knowledge/indexes/tags/testfield.json +1 -0
  701. package/embedded-knowledge/indexes/tags/tradeoffs.json +1 -0
  702. package/embedded-knowledge/indexes/tags/triggers.json +1 -0
  703. package/embedded-knowledge/indexes/tags/troubleshooting.json +1 -0
  704. package/embedded-knowledge/indexes/tags/type-safety.json +1 -0
  705. package/embedded-knowledge/indexes/tags/url-structure.json +1 -0
  706. package/embedded-knowledge/indexes/tags/user-experience.json +1 -0
  707. package/embedded-knowledge/indexes/tags/user-feedback.json +1 -0
  708. package/embedded-knowledge/indexes/tags/user-interface.json +1 -0
  709. package/embedded-knowledge/indexes/tags/validation-feedback.json +1 -0
  710. package/embedded-knowledge/indexes/tags/validation.json +1 -0
  711. package/embedded-knowledge/indexes/tags/variables.json +1 -0
  712. package/embedded-knowledge/indexes/tags/verbosity.json +1 -0
  713. package/embedded-knowledge/indexes/tags/vs-code.json +1 -0
  714. package/embedded-knowledge/indexes/tags/web-services.json +1 -0
  715. package/embedded-knowledge/indexes/tags/workflow-management.json +1 -0
  716. package/embedded-knowledge/indexes/tags/workflow-optimization.json +1 -0
  717. package/embedded-knowledge/indexes/tags/workflow-templates.json +1 -0
  718. package/embedded-knowledge/indexes/tags/workspace.json +1 -0
  719. package/embedded-knowledge/indexes/tags/xml-documentation.json +1 -0
  720. package/embedded-knowledge/indexes/topic-relationships.json +128 -0
  721. package/embedded-knowledge/methodologies/index.json +81 -0
  722. package/embedded-knowledge/methodologies/phases/analysis-full.md +208 -0
  723. package/embedded-knowledge/methodologies/phases/analysis-quick.md +44 -0
  724. package/embedded-knowledge/methodologies/phases/analysis.md +182 -0
  725. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +174 -0
  726. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +31 -0
  727. package/embedded-knowledge/methodologies/phases/execution-validation.md +174 -0
  728. package/embedded-knowledge/methodologies/phases/performance-full.md +211 -0
  729. package/embedded-knowledge/methodologies/phases/performance-quick.md +32 -0
  730. package/embedded-knowledge/methodologies/phases/performance.md +211 -0
  731. package/embedded-knowledge/methodologies/phases/verification-full.md +162 -0
  732. package/embedded-knowledge/methodologies/phases/verification-quick.md +48 -0
  733. package/embedded-knowledge/methodologies/phases/verification.md +146 -0
  734. package/embedded-knowledge/methodologies/workflow-enforcement.md +142 -0
  735. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +99 -0
  736. package/embedded-knowledge/methodologies/workflows/proposal-review-workflow.md +535 -0
  737. package/embedded-knowledge/specialists/alex-architect.md +305 -0
  738. package/embedded-knowledge/specialists/casey-copilot.md +314 -0
  739. package/embedded-knowledge/specialists/chris-config.md +226 -0
  740. package/embedded-knowledge/specialists/dean-debug.md +365 -0
  741. package/embedded-knowledge/specialists/eva-errors.md +291 -0
  742. package/embedded-knowledge/specialists/jordan-bridge.md +291 -0
  743. package/embedded-knowledge/specialists/logan-legacy.md +265 -0
  744. package/embedded-knowledge/specialists/maya-mentor.md +299 -0
  745. package/embedded-knowledge/specialists/morgan-market.md +281 -0
  746. package/embedded-knowledge/specialists/parker-pragmatic.md +564 -0
  747. package/embedded-knowledge/specialists/quinn-tester.md +323 -0
  748. package/embedded-knowledge/specialists/roger-reviewer.md +317 -0
  749. package/embedded-knowledge/specialists/sam-coder.md +342 -0
  750. package/embedded-knowledge/specialists/seth-security.md +290 -0
  751. package/embedded-knowledge/specialists/taylor-docs.md +312 -0
  752. package/embedded-knowledge/specialists/uma-ux.md +291 -0
  753. package/package.json +82 -0
@@ -0,0 +1,101 @@
1
+ ---
2
+ title: "TestField Best Practices and Patterns"
3
+ domain: "sam-coder"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["best-practices", "validation", "code-quality", "maintainability"]
7
+ prerequisites: ["testfield-basic-syntax", "testfield-error-handling"]
8
+ samples: "samples/testfield-patterns.md"
9
+ ---
10
+ # TestField Best Practices and Patterns
11
+
12
+ ## Overview
13
+
14
+ Effective TestField usage follows established patterns that ensure data integrity while maintaining code readability and performance. These practices have evolved from real-world BC development experience.
15
+
16
+ **Core Philosophy**: Use TestField for essential validations that prevent data corruption, complement with custom validation for business rule enforcement.
17
+
18
+ ## Fundamental Best Practices
19
+
20
+ ### Validation Placement Strategy
21
+ Place TestField calls at the beginning of procedures to fail fast and provide immediate feedback. Early validation prevents complex processing with invalid data and provides clear error context.
22
+
23
+ ### Logical Validation Grouping
24
+ Group related TestField calls to create clear validation blocks that represent business concepts. Organize validations by functional area (shipping, billing, customer data) for better code readability and maintenance.
25
+
26
+ ### Context-Appropriate Validation
27
+ Match validation intensity to business context - more thorough validation for critical operations, lighter validation for routine operations.
28
+
29
+ ## Design Patterns
30
+
31
+ ### Mandatory Field Pattern
32
+ Establish core validation procedures that verify essential fields for business entities. Focus on fields required for basic entity operation and integrity across all business scenarios.
33
+
34
+ ### Status-Driven Validation Pattern
35
+ Apply different validation rules based on record workflow status. Each status level has specific field requirements that must be validated before status transitions or processing.
36
+
37
+ ### Conditional Validation Pattern
38
+ Implement business rule-driven validation where field requirements depend on other field values or business context. Ensures data consistency while avoiding over-validation.
39
+
40
+ ## Advanced Patterns
41
+
42
+ ### Validation Factory Pattern
43
+ Create generic validation procedures that route different record types to appropriate validation logic. Enables consistent validation interface across multiple entity types.
44
+
45
+ ### Progressive Validation Pattern
46
+ Implement validation intensity levels based on business context. Basic operations require minimal validation while complex operations require comprehensive field validation.
47
+
48
+ ### Validation Chain Pattern
49
+ Structure validation as sequential steps where each step must pass before proceeding. Provides clear validation progression and enables early exit when validation fails.
50
+
51
+ ## Integration Patterns
52
+
53
+ ### Event-Driven Validation
54
+ Integrate TestField validation into table event subscribers for automatic validation during record operations. Ensures consistent validation across all insertion and modification paths.
55
+
56
+ ### API Validation Integration
57
+ Adapt TestField validation for API scenarios using TryFunction patterns. Capture validation errors and convert them to structured API response messages rather than allowing system errors to propagate.
58
+
59
+ ## Code Quality Practices
60
+
61
+ ### Readable Validation Blocks
62
+ Organize TestField calls with clear comments indicating validation purpose. Group related fields together and document business rationale for field requirements to improve code maintainability.
63
+
64
+ ### Validation Documentation
65
+ Document validation rules and business reasons for TestField usage, especially for complex business scenarios.
66
+
67
+ ### Maintainable Validation Logic
68
+ Structure validation procedures to be easily testable and maintainable as business rules evolve.
69
+
70
+ ## Common Anti-Patterns
71
+
72
+ ### Over-Validation
73
+ Avoid excessive TestField calls that create poor user experience without meaningful business value.
74
+
75
+ ### Mixed Concerns
76
+ Don't mix TestField validation with complex business logic in the same procedure.
77
+
78
+ ### Performance-Blind Validation
79
+ Avoid TestField in tight loops without considering cumulative performance impact.
80
+
81
+ ### Context-Blind Validation
82
+ Don't apply same validation rules across all scenarios without considering business context.
83
+
84
+ ## Testing Strategies
85
+
86
+ ### Validation Testing
87
+ Create test procedures that validate both successful and failing TestField scenarios. Test mandatory field validation by attempting validation with empty records and verifying error conditions trigger correctly.
88
+
89
+ For complete testing examples, see companion sample file with working AL test procedures.
90
+
91
+ ### Edge Case Testing
92
+ Test validation behavior with edge cases like empty strings, special characters, and boundary values.
93
+
94
+ ## Evolution and Maintenance
95
+
96
+ ### Validation Rule Changes
97
+ Plan for validation rule changes by structuring validation logic in dedicated procedures that can be easily modified.
98
+
99
+ ### Backward Compatibility
100
+ When changing validation rules, consider impact on existing data and provide migration paths.
101
+
@@ -0,0 +1,149 @@
1
+ ---
2
+ title: "Type-Safe Operations in AL"
3
+ domain: "sam-coder"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["type-safety", "compile-time-validation", "strong-typing", "error-prevention"]
7
+ prerequisites: ["al-data-types", "variable-declaration", "procedure-design"]
8
+ samples: "samples/type-safe-operations.md"
9
+ related_topics: ["generic-method-patterns-al", "template-method-pattern-al"]
10
+ ---
11
+
12
+ # Type-Safe Operations in AL
13
+
14
+ ## Overview
15
+
16
+ Type-Safe Operations in AL leverage the language's strong typing system to prevent runtime errors through compile-time validation. These patterns ensure operations are performed on compatible data types and help catch potential issues during development rather than runtime.
17
+
18
+ **Key Benefit**: Prevents runtime type errors through compile-time validation, improving code reliability and reducing debugging time in production systems.
19
+
20
+ ## Core Type Safety Principles
21
+
22
+ ### Strong Typing Enforcement
23
+ Leverage AL's strong typing system to ensure variables and parameters are used consistently with their declared types throughout the codebase.
24
+
25
+ ### Compile-Time Validation
26
+ Design code patterns that enable the compiler to catch type mismatches and incompatible operations before code execution.
27
+
28
+ ### Explicit Type Declarations
29
+ Use explicit type declarations and avoid implicit conversions that might hide potential type compatibility issues.
30
+
31
+ ## Essential Type Safety Patterns
32
+
33
+ ### Strongly-Typed Identifiers
34
+ Create specific types for different kinds of identifiers (customer IDs, item numbers, etc.) to prevent mixing incompatible identifier types.
35
+
36
+ ### Type-Safe Enumerations
37
+ Use enumeration types instead of generic integers or strings to represent limited sets of values with compile-time validation.
38
+
39
+ ### Parameter Type Validation
40
+ Design method signatures that use specific types rather than generic types to ensure callers provide appropriate data.
41
+
42
+ ## Advanced Type Safety Techniques
43
+
44
+ ### Type-Safe Builder Patterns
45
+ Implement builder patterns that use the type system to enforce correct construction sequences and prevent invalid object states.
46
+
47
+ ### Phantom Type Patterns
48
+ Use phantom types to track additional information in the type system without runtime overhead, enabling compile-time validation of complex constraints.
49
+
50
+ ### Type-Safe State Machines
51
+ Design state machine implementations that use the type system to prevent invalid state transitions and operations.
52
+
53
+ ## Data Conversion Safety
54
+
55
+ ### Safe Casting Patterns
56
+ - Implement safe type casting that validates compatibility before conversion
57
+ - Use explicit casting methods that provide clear error handling for invalid conversions
58
+ - Design conversion patterns that preserve data integrity during type changes
59
+ - Provide clear error messages for conversion failures
60
+
61
+ ### Validation-First Conversions
62
+ - Validate data compatibility before performing type conversions
63
+ - Implement pre-conversion validation that checks data ranges and formats
64
+ - Design conversion methods that fail fast for incompatible data
65
+ - Support conversion result validation to ensure successful transformation
66
+
67
+ ## Compile-Time Validation Strategies
68
+
69
+ ### Interface-Based Type Safety
70
+ Use interfaces to define type contracts that ensure objects provide required capabilities before being used in specific operations.
71
+
72
+ ### Generic Type Constraints
73
+ Apply generic type constraints to limit generic methods to types that support required operations, enabling compile-time validation.
74
+
75
+ ### Type System Integration
76
+ Integrate custom types with AL's type system to leverage built-in validation and conversion capabilities.
77
+
78
+ ## Error Prevention Patterns
79
+
80
+ ### Null Safety Patterns
81
+ Design patterns that minimize null reference exceptions through careful use of optional types and null checking strategies.
82
+
83
+ ### Range Validation Types
84
+ Create types that enforce valid ranges for numeric values, preventing out-of-range errors through type system constraints.
85
+
86
+ ### Format Validation Types
87
+ Implement types that enforce specific format requirements (email addresses, phone numbers) through type system validation.
88
+
89
+ ## Testing Type Safety
90
+
91
+ ### Compile-Time Test Validation
92
+ - Design tests that validate compile-time error detection for type safety violations
93
+ - Test that invalid type combinations are rejected by the compiler
94
+ - Validate that type constraints are properly enforced
95
+ - Ensure type safety doesn't compromise performance
96
+
97
+ ### Type Compatibility Testing
98
+ - Test type conversion scenarios to ensure safe handling of different data types
99
+ - Validate that type-safe patterns work correctly with edge cases
100
+ - Test integration scenarios where multiple type-safe patterns interact
101
+ - Ensure type safety works correctly across module boundaries
102
+
103
+ ## Integration with AL Features
104
+
105
+ ### Record Type Safety
106
+ Leverage AL record types to ensure type-safe database operations and prevent field type mismatches.
107
+
108
+ ### API Type Safety
109
+ Design API interfaces that use strong typing to ensure callers provide correct data types and receive predictable responses.
110
+
111
+ ### Event Type Safety
112
+ Implement type-safe event handling patterns that ensure event handlers receive correctly typed event data.
113
+
114
+ ## Performance Considerations
115
+
116
+ ### Type Safety Overhead
117
+ Balance type safety benefits with potential performance overhead from additional validation and type checking operations.
118
+
119
+ ### Optimization Strategies
120
+ Implement type safety patterns that compile to efficient code without runtime overhead when possible.
121
+
122
+ ### Validation Caching
123
+ Cache type validation results where appropriate to minimize repeated validation overhead in performance-critical scenarios.
124
+
125
+ ## Best Practices
126
+
127
+ ### Design Guidelines
128
+ - Use the most specific type appropriate for each variable and parameter
129
+ - Implement explicit validation for external data before type conversion
130
+ - Design type hierarchies that support both safety and flexibility
131
+ - Document type safety requirements and constraints clearly
132
+
133
+ ### Code Organization
134
+ - Group related type-safe operations into focused modules
135
+ - Create utility methods for common type-safe operations
136
+ - Implement consistent error handling for type safety violations
137
+ - Provide clear examples of correct type-safe usage patterns
138
+
139
+ ## Common Pitfalls
140
+
141
+ ### Over-Engineering Types
142
+ Avoid creating unnecessarily complex type hierarchies that make code harder to understand and maintain.
143
+
144
+ ### Performance Impact
145
+ Be mindful of performance implications when implementing extensive type validation in high-frequency operations.
146
+
147
+ *Complete type safety examples: samples/type-safe-operations.md*
148
+ *Generic method patterns: generic-method-patterns-al.md*
149
+ *Template method safety: template-method-pattern-al.md*
@@ -0,0 +1,107 @@
1
+ ---
2
+ title: "VS Code AL Extension Keyboard Shortcuts"
3
+ domain: "sam-coder"
4
+ difficulty: "beginner"
5
+ bc_versions: "14+"
6
+ tags: ["vs-code", "productivity", "shortcuts", "al-extension", "navigation"]
7
+ prerequisites: ["vs-code-setup", "al-extension-basics"]
8
+ ---
9
+
10
+ # VS Code AL Extension Keyboard Shortcuts
11
+
12
+ ## Overview
13
+
14
+ Master essential keyboard shortcuts for AL development in VS Code to dramatically increase coding speed and navigation efficiency. These shortcuts are specifically optimized for Business Central AL development workflows.
15
+
16
+ **Key Principle**: Muscle memory for these core shortcuts reduces context switching and maintains coding flow state.
17
+
18
+ ## Essential AL Development Shortcuts
19
+
20
+ ### Code Generation & IntelliSense
21
+ - **Ctrl+Space**: Trigger IntelliSense suggestions for AL objects and properties
22
+ - **Ctrl+Shift+Space**: Parameter hints for procedure calls and method signatures
23
+ - **Tab**: Accept IntelliSense suggestion and move to next parameter
24
+ - **Ctrl+.**: Quick actions and refactoring suggestions (AL-specific fixes)
25
+
26
+ ### Navigation & Symbol Management
27
+ - **F12**: Go to definition of AL object, procedure, or variable
28
+ - **Alt+F12**: Peek definition in popup window without navigation
29
+ - **Ctrl+F12**: Go to implementation (useful for interface implementations)
30
+ - **Shift+F12**: Find all references to current symbol across workspace
31
+ - **Ctrl+T**: Quick symbol search across entire AL workspace
32
+ - **Ctrl+Shift+O**: Navigate to symbol within current file
33
+ - **Ctrl+G**: Go to specific line number
34
+
35
+ ### AL Object Operations
36
+ - **Ctrl+Shift+P → "AL: Go!"**: Quick navigation to any AL object by name
37
+ - **Ctrl+Shift+P → "AL: Download symbols"**: Refresh symbol references
38
+ - **F7**: Compile current AL file and show diagnostics
39
+ - **Ctrl+Shift+F7**: Compile entire AL project
40
+ - **F5**: Start debugging session with AL debugger
41
+
42
+ ## Code Editing Efficiency
43
+
44
+ ### Selection & Manipulation
45
+ - **Ctrl+D**: Select next occurrence of current word (multi-cursor editing)
46
+ - **Ctrl+Shift+L**: Select all occurrences of current word
47
+ - **Alt+Click**: Add cursor at click position (multi-cursor)
48
+ - **Ctrl+Shift+K**: Delete entire line
49
+ - **Alt+Up/Down**: Move line or selection up/down
50
+ - **Shift+Alt+Up/Down**: Copy line or selection up/down
51
+
52
+ ### Code Structure Navigation
53
+ - **Ctrl+Shift+\\**: Jump to matching bracket/begin-end block
54
+ - **Ctrl+]**: Indent selected lines (AL code formatting)
55
+ - **Ctrl+[**: Outdent selected lines
56
+ - **Ctrl+K, Ctrl+C**: Comment selected lines
57
+ - **Ctrl+K, Ctrl+U**: Uncomment selected lines
58
+
59
+ ### AL-Specific Formatting
60
+ - **Shift+Alt+F**: Format entire AL document according to AL formatting rules
61
+ - **Ctrl+K, Ctrl+F**: Format selected AL code block
62
+ - **Ctrl+Shift+I**: Format selection with AL-specific indentation
63
+
64
+ ## Debugging & Problem Solving
65
+
66
+ ### Debugging Navigation
67
+ - **F9**: Toggle breakpoint on current line
68
+ - **F5**: Start/continue debugging
69
+ - **F10**: Step over (next line in same procedure)
70
+ - **F11**: Step into (enter called procedure)
71
+ - **Shift+F11**: Step out (return to calling procedure)
72
+ - **Ctrl+Shift+F5**: Restart debugging session
73
+
74
+ ### Problem Diagnosis
75
+ - **Ctrl+Shift+M**: Open Problems panel to view AL compilation errors
76
+ - **F8**: Go to next error/warning in current file
77
+ - **Shift+F8**: Go to previous error/warning in current file
78
+ - **Ctrl+Shift+U**: Open Output panel for AL compilation details
79
+
80
+ ## Customization & Productivity
81
+
82
+ ### Workspace Management
83
+ - **Ctrl+Shift+E**: Focus file explorer (AL object tree)
84
+ - **Ctrl+Shift+F**: Global search across AL workspace
85
+ - **Ctrl+Shift+H**: Global find and replace across AL files
86
+ - **Ctrl+,**: Open settings for AL extension configuration
87
+
88
+ ### Custom Keybinding Patterns
89
+ Most AL developers customize these common patterns:
90
+ - **AL object creation shortcuts**: Quick access to create new tables, pages, codeunits
91
+ - **Snippet triggers**: Custom shortcuts for frequently used AL code patterns
92
+ - **Build and deploy combinations**: Single-key publishing to sandbox environments
93
+
94
+ ## Best Practices
95
+
96
+ ### Learning Strategy
97
+ Start with 5-7 core shortcuts and add 2-3 new ones weekly until they become automatic. Focus on navigation shortcuts first, then code generation, finally debugging workflows.
98
+
99
+ ### Muscle Memory Development
100
+ Practice shortcuts during routine tasks rather than trying to memorize them separately. The most valuable shortcuts save 3+ seconds per use and occur multiple times per hour.
101
+
102
+ ### Team Consistency
103
+ Establish team standards for essential shortcuts to enable pair programming and knowledge sharing. Document custom keybindings in project documentation.
104
+
105
+ *Complete shortcut reference: samples/vs-code-shortcuts.md*
106
+ *Keybinding customization: samples/keybindings-json.md*
107
+ *AL extension configuration: sam-coder-index.json#vs-code-setup*
@@ -0,0 +1,95 @@
1
+ ---
2
+ title: "AL Temporary Table Safety"
3
+ domain: "seth-security"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["temporary-tables", "data-protection", "memory-management", "security"]
7
+ type: "improvement-pattern"
8
+ category: "security"
9
+ pattern_type: "good"
10
+ severity: "high"
11
+ impact_level: "high"
12
+ improvement_suggestion: "Implement secure temporary table handling to prevent data leakage and ensure proper cleanup"
13
+ implementation_steps: ["validate-data-scope", "implement-secure-cleanup", "test-isolation"]
14
+ validation_criteria: ["secure-data-handling", "proper-memory-cleanup"]
15
+ technical_areas: ["al-code", "data-management"]
16
+ samples: "samples/al-temporary-table-safety.md"
17
+ ---
18
+
19
+ # AL Temporary Table Safety
20
+
21
+ ## Overview
22
+
23
+ Temporary tables in AL provide in-memory data processing capabilities but require careful security considerations to prevent data leakage, unauthorized access, and memory management issues. Proper implementation ensures data protection while leveraging temporary table performance benefits.
24
+
25
+ **Key Principle**: Temporary tables must be properly scoped, cleared, and protected to prevent sensitive data exposure across user sessions or security contexts.
26
+
27
+ ## Strategic Framework
28
+
29
+ ### Data Isolation Requirements
30
+ **Session Isolation**: Temporary tables must not leak data between user sessions
31
+ **Permission Boundaries**: Temporary table data access respects underlying table permissions
32
+ **Memory Cleanup**: Sensitive data in temporary tables requires explicit clearing
33
+ **Scope Management**: Temporary tables should have minimal necessary lifetime
34
+
35
+ ### Security Context Preservation
36
+ Temporary tables inherit security context from their source data but require additional protection when crossing procedure boundaries or user contexts.
37
+
38
+ ### Data Protection Lifecycle
39
+ 1. **Creation**: Secure initialization with appropriate permissions
40
+ 2. **Population**: Controlled data access respecting source permissions
41
+ 3. **Processing**: Secure manipulation within authorized scope
42
+ 4. **Cleanup**: Explicit clearing of sensitive temporary data
43
+
44
+ ## Architecture Focus
45
+
46
+ ### Memory Security
47
+ **Data Residue Prevention**: Explicitly clear temporary tables containing sensitive information
48
+ **Scope Limitation**: Keep temporary table lifetime as short as possible
49
+ **Access Control**: Implement proper access controls for temporary table procedures
50
+ **Audit Considerations**: Log access to temporary tables containing sensitive data when required
51
+
52
+ ### Permission Integration
53
+ Temporary tables don't automatically inherit all security restrictions of their source tables. Additional validation may be required for sensitive operations.
54
+
55
+ ### Cross-Context Safety
56
+ When passing temporary tables between procedures or objects, ensure security context is properly maintained and validated.
57
+
58
+ ## Best Practices
59
+
60
+ ### Secure Initialization
61
+ - **Permission Validation**: Verify user permissions for underlying data before populating temporary tables
62
+ - **Data Filtering**: Apply appropriate filters based on user security context
63
+ - **Minimal Data**: Include only necessary fields and records in temporary tables
64
+ - **Clear Purpose**: Document temporary table purpose and expected data sensitivity
65
+
66
+ ### Lifecycle Management
67
+ - **Explicit Clearing**: Clear temporary tables containing sensitive data after use
68
+ - **Scope Control**: Limit temporary table accessibility to minimum required procedures
69
+ - **Error Handling**: Ensure temporary table cleanup occurs even in error scenarios
70
+ - **Resource Management**: Monitor temporary table memory usage in high-volume scenarios
71
+
72
+ ### Data Protection Patterns
73
+ - **Sensitive Data Identification**: Clearly identify and mark temporary tables containing sensitive information
74
+ - **Access Logging**: Log temporary table access for sensitive data when required for compliance
75
+ - **Encryption Consideration**: Consider additional protection for highly sensitive temporary data
76
+ - **Cleanup Verification**: Implement verification that sensitive temporary data is properly cleared
77
+
78
+ ### Error Scenario Handling
79
+ - **Finally Blocks**: Use try-finally patterns to ensure cleanup in error scenarios
80
+ - **Exception Safety**: Maintain data protection even when exceptions occur
81
+ - **Rollback Procedures**: Implement proper rollback for partially processed temporary data
82
+ - **Recovery Mechanisms**: Design recovery procedures for temporary table corruption scenarios
83
+
84
+ ## Anti-Patterns
85
+
86
+ ### Avoid These Approaches
87
+ - **Persistent Temporary Data**: Failing to clear sensitive temporary table data after use
88
+ - **Permission Bypass**: Using temporary tables to circumvent normal data access controls
89
+ - **Cross-Session Leakage**: Temporary table data accessible across user sessions
90
+ - **Uncontrolled Scope**: Temporary tables accessible from unauthorized code contexts
91
+
92
+ Using temporary tables to access data that users shouldn't normally see violates security principles and may expose sensitive information inappropriately.
93
+
94
+ *Related patterns: al-data-isolation.md, al-memory-management.md*
95
+ *Implementation examples: see samples/al-temporary-table-safety.md*
@@ -0,0 +1,115 @@
1
+ ---
2
+ title: "API Page Permission Model"
3
+ domain: "seth-security"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["api-permissions", "access-control", "security"]
7
+ samples: "samples/api-permission-model.md"
8
+ ---
9
+ # API Page Permission Model
10
+
11
+ ## Overview
12
+
13
+ API Pages in Business Central implement a comprehensive permission model that controls access to data and operations through OData endpoints. Understanding this permission model is essential for implementing secure API solutions that properly protect business data.
14
+
15
+ The permission system operates at multiple levels including page access, table permissions, field-level security, and operation-specific restrictions. Each level contributes to the overall security posture of API implementations.
16
+
17
+ Proper permission configuration ensures API consumers can only access authorized data and perform permitted operations, while maintaining system security and compliance requirements.
18
+
19
+ ## Page-Level Access Control
20
+
21
+ API Page access requires explicit permissions through the standard BC permission system. Users or service accounts accessing API endpoints must have appropriate permissions assigned through permission sets.
22
+
23
+ Page permissions control whether an API endpoint is accessible to a particular user or service account. Without proper page permissions, API requests will be rejected with authentication errors.
24
+
25
+ Consider the principle of least privilege when assigning page permissions. Grant only the minimum access required for legitimate API operations to reduce security exposure.
26
+
27
+ ## Table Permission Requirements
28
+
29
+ API Pages inherit table permissions from their source tables, requiring appropriate read, insert, modify, or delete permissions based on supported operations. Table permissions directly control what data operations are available through the API.
30
+
31
+ Different permission levels enable different OData operations. Read permissions enable GET operations, while insert permissions enable POST operations for creating new records through the API.
32
+
33
+ Table permissions may be filtered or restricted based on field values, enabling row-level security implementations. This allows fine-grained control over which records are accessible through API endpoints.
34
+
35
+ ## Field-Level Security
36
+
37
+ Individual field permissions control which table fields are accessible through API Pages. Fields without appropriate permissions are automatically excluded from API responses and cannot be modified through API operations.
38
+
39
+ Field security enables selective data exposure through APIs without requiring separate table structures. Sensitive fields can be protected while allowing access to general business data.
40
+
41
+ Consider field permission inheritance and dependencies when designing API security models. Related fields or calculated fields may require additional permission considerations.
42
+
43
+ ## Operation-Specific Permissions
44
+
45
+ Different OData operations require specific permission configurations. GET operations require read permissions, POST operations require insert permissions, and PATCH/PUT operations require modify permissions.
46
+
47
+ DELETE operations through API Pages require explicit delete permissions on the source table. Not all API implementations need to support delete operations, allowing for read-only or append-only API designs.
48
+
49
+ Permission requirements may vary based on API operation complexity. Operations that modify multiple tables or trigger business logic may require additional permission grants.
50
+
51
+ ## Service Account Security
52
+
53
+ API integrations typically use dedicated service accounts with restricted permission sets designed for specific integration scenarios. Service accounts should follow security best practices for automated system access.
54
+
55
+ Service account permissions should be regularly reviewed and maintained to ensure they remain appropriate for current integration requirements. Unused permissions should be removed to minimize security exposure.
56
+
57
+ Consider using Azure AD application registrations for API authentication when possible. This provides better audit trails and credential management compared to traditional BC user accounts.
58
+
59
+ ## Authentication and Authorization Flow
60
+
61
+ API Page security integrates with BC authentication mechanisms including basic authentication, OAuth 2.0, and Azure AD authentication. Choose authentication methods appropriate for security requirements and integration scenarios.
62
+
63
+ Authorization occurs after successful authentication, verifying that the authenticated account has appropriate permissions for the requested API operations. Failed authorization results in access denied responses.
64
+
65
+ Implement proper error handling for authentication and authorization failures to provide appropriate feedback to API consumers while avoiding security information disclosure.
66
+
67
+ ## Multi-Tenancy Security Considerations
68
+
69
+ In multi-tenant environments, permission models must ensure proper tenant isolation. API consumers should only access data within their authorized tenant boundaries.
70
+
71
+ Permission sets may need tenant-specific configurations to address different security requirements across tenants. Consider centralized permission management approaches for consistency.
72
+
73
+ Monitor cross-tenant access patterns to detect potential security issues or configuration errors that could compromise tenant data isolation.
74
+
75
+ ## Compliance and Audit Requirements
76
+
77
+ API permission models must support compliance requirements including data access auditing, permission change tracking, and access review processes.
78
+
79
+ Implement proper logging for API access patterns to support security monitoring and compliance reporting. Log both successful and failed access attempts for comprehensive audit trails.
80
+
81
+ Consider implementing automated permission review processes to ensure API access remains appropriate over time and changes in business requirements.
82
+
83
+ ## Dynamic Permission Scenarios
84
+
85
+ Some API implementations require dynamic permission evaluation based on data values, business logic, or contextual factors beyond standard BC permission sets.
86
+
87
+ Dynamic permissions may be implemented through custom business logic in API Pages or source tables. This enables complex security scenarios but requires careful implementation to avoid security vulnerabilities.
88
+
89
+ Consider performance impact of dynamic permission evaluation, especially for high-volume API scenarios where permission checks could become performance bottlenecks.
90
+
91
+ ## Security Monitoring and Alerting
92
+
93
+ Implement monitoring for unusual API access patterns that might indicate security issues or unauthorized access attempts. Monitor both successful and failed API requests for security indicators.
94
+
95
+ Set up alerting for permission-related errors or unusual access patterns that require investigation. Early detection of security issues enables rapid response and mitigation.
96
+
97
+ Regular security reviews should include analysis of API access patterns and permission effectiveness to identify optimization opportunities and potential security improvements.
98
+
99
+ ## Integration with External Security Systems
100
+
101
+ API permission models may need to integrate with external security systems, identity providers, or access management solutions. Plan integration approaches that maintain security effectiveness.
102
+
103
+ Consider federated identity scenarios where API consumers authenticate through external systems but require BC permissions for data access. Implement proper token validation and permission mapping.
104
+
105
+ External security integration should maintain audit trails and support compliance requirements while providing seamless authentication experiences for API consumers.
106
+
107
+ ## Best Practices
108
+
109
+ Follow the principle of least privilege when designing API permission models. Grant only the minimum permissions required for legitimate API operations.
110
+
111
+ Implement defense in depth through multiple security layers including authentication, authorization, field-level security, and business logic validation.
112
+
113
+ Document permission requirements and security assumptions for API implementations. This documentation supports security reviews and helps maintain consistent security practices.
114
+
115
+ Regularly review and validate API permission configurations to ensure they remain appropriate for current business requirements and security standards.
@@ -0,0 +1,78 @@
1
+ ---
2
+ title: "IsTemporary Table Safeguard Pattern for Data Protection"
3
+ domain: "seth-security"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["data-protection", "temporary-tables", "safeguards", "data-integrity", "error-prevention"]
7
+ prerequisites: ["al-tables", "data-access-patterns"]
8
+ ---
9
+ # IsTemporary Table Safeguard Pattern for Data Protection
10
+
11
+ ## Overview
12
+
13
+ The IsTemporary table safeguard pattern prevents accidental data modifications to permanent database tables by validating table state before performing destructive operations, protecting against data corruption and unintended database changes.
14
+
15
+ **Safety Principle**: Always verify table temporariness before bulk operations, modifications without keys, or destructive actions to prevent permanent data loss.
16
+
17
+ ## Strategic Framework
18
+
19
+ ### Data Protection Strategy
20
+ - **Validation gates**: Check IsTemporary before bulk insert/modify/delete operations
21
+ - **Operation scoping**: Restrict dangerous operations to temporary tables only
22
+ - **Error prevention**: Fail fast when permanent tables are used inappropriately
23
+ - **Developer safety**: Provide clear feedback for incorrect table usage patterns
24
+
25
+ ### Risk Mitigation Approach
26
+ - **Bulk operation safety**: Prevent mass data changes to production tables
27
+ - **Development protection**: Guard against test code affecting live data
28
+ - **Integration safety**: Validate table state in data import/export routines
29
+ - **Maintenance protection**: Ensure cleanup operations target appropriate tables
30
+
31
+ ## Architecture Patterns
32
+
33
+ ### Precondition Validation
34
+ Implement validation checks that verify table temporariness before executing operations that could affect large data sets or bypass normal business logic constraints.
35
+
36
+ ### Defensive Programming Pattern
37
+ Build safeguards into reusable procedures and functions that work with table data, ensuring they cannot accidentally corrupt permanent database tables.
38
+
39
+ ### Operation Context Awareness
40
+ Design data manipulation routines that understand whether they're working with temporary or permanent data and adjust their behavior accordingly.
41
+
42
+ ## Implementation Guidelines
43
+
44
+ ### Validation Implementation
45
+ - **Early validation**: Check IsTemporary at procedure entry points
46
+ - **Clear error messages**: Provide specific feedback about safeguard violations
47
+ - **Conditional operations**: Use IsTemporary state to determine operation safety
48
+ - **Logging integration**: Record safeguard violations for debugging and auditing
49
+
50
+ ### Bulk Operation Protection
51
+ Implement mandatory IsTemporary checks before DeleteAll, ModifyAll, and other bulk operations that could affect large numbers of records without individual validation.
52
+
53
+ ### Development Workflow Safety
54
+ Build IsTemporary validation into development and testing procedures to prevent test code from accidentally targeting production tables.
55
+
56
+ ## Best Practices
57
+
58
+ ### Safeguard Implementation
59
+ - **Consistent application**: Apply safeguards uniformly across similar operations
60
+ - **Performance consideration**: Balance safety checks with execution efficiency
61
+ - **Clear documentation**: Document why and when safeguards are required
62
+ - **Team training**: Ensure developers understand safeguard importance and usage
63
+
64
+ ### Error Handling Strategy
65
+ Provide clear, actionable error messages when safeguard violations occur, helping developers understand both the problem and the correct solution.
66
+
67
+ ### Code Review Integration
68
+ Include IsTemporary safeguard checks in code review checklists, especially for procedures that manipulate table data in bulk.
69
+
70
+ ## Anti-Patterns
71
+
72
+ ### Avoid These Approaches
73
+ - **Skipping validation**: Bypassing IsTemporary checks for "performance" reasons
74
+ - **Silent failures**: Not providing clear error messages when safeguards trigger
75
+ - **Inconsistent application**: Using safeguards in some functions but not others
76
+ - **Late validation**: Checking IsTemporary after beginning data modifications
77
+ - **Generic error handling**: Non-specific error messages that don't help debugging
78
+