bc-code-intelligence-mcp 1.1.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 (638) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +107 -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 +441 -0
  10. package/dist/cli/bc-code-intel-cli.js.map +1 -0
  11. package/dist/config/config-loader.d.ts +21 -0
  12. package/dist/config/config-loader.d.ts.map +1 -0
  13. package/dist/config/config-loader.js +402 -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 +604 -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 +57 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +673 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/layers/base-layer.d.ts +83 -0
  40. package/dist/layers/base-layer.d.ts.map +1 -0
  41. package/dist/layers/base-layer.js +166 -0
  42. package/dist/layers/base-layer.js.map +1 -0
  43. package/dist/layers/embedded-layer.d.ts +53 -0
  44. package/dist/layers/embedded-layer.d.ts.map +1 -0
  45. package/dist/layers/embedded-layer.js +238 -0
  46. package/dist/layers/embedded-layer.js.map +1 -0
  47. package/dist/layers/git-layer.d.ts +54 -0
  48. package/dist/layers/git-layer.d.ts.map +1 -0
  49. package/dist/layers/git-layer.js +369 -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 +129 -0
  56. package/dist/layers/layer-service.d.ts.map +1 -0
  57. package/dist/layers/layer-service.js +570 -0
  58. package/dist/layers/layer-service.js.map +1 -0
  59. package/dist/layers/project-layer.d.ts +50 -0
  60. package/dist/layers/project-layer.d.ts.map +1 -0
  61. package/dist/layers/project-layer.js +256 -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 +355 -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 +811 -0
  86. package/dist/services/code-analysis-service.js.map +1 -0
  87. package/dist/services/knowledge-service.d.ts +91 -0
  88. package/dist/services/knowledge-service.d.ts.map +1 -0
  89. package/dist/services/knowledge-service.js +370 -0
  90. package/dist/services/knowledge-service.js.map +1 -0
  91. package/dist/services/methodology-service.d.ts +91 -0
  92. package/dist/services/methodology-service.d.ts.map +1 -0
  93. package/dist/services/methodology-service.js +408 -0
  94. package/dist/services/methodology-service.js.map +1 -0
  95. package/dist/services/workflow-service.d.ts +132 -0
  96. package/dist/services/workflow-service.d.ts.map +1 -0
  97. package/dist/services/workflow-service.js +277 -0
  98. package/dist/services/workflow-service.js.map +1 -0
  99. package/dist/setup/post-install.d.ts +12 -0
  100. package/dist/setup/post-install.d.ts.map +1 -0
  101. package/dist/setup/post-install.js +81 -0
  102. package/dist/setup/post-install.js.map +1 -0
  103. package/dist/streamlined-handlers.d.ts +51 -0
  104. package/dist/streamlined-handlers.d.ts.map +1 -0
  105. package/dist/streamlined-handlers.js +287 -0
  106. package/dist/streamlined-handlers.js.map +1 -0
  107. package/dist/streamlined-tools.d.ts +316 -0
  108. package/dist/streamlined-tools.d.ts.map +1 -0
  109. package/dist/streamlined-tools.js +189 -0
  110. package/dist/streamlined-tools.js.map +1 -0
  111. package/dist/test-enhanced-mcp-server.d.ts +7 -0
  112. package/dist/test-enhanced-mcp-server.d.ts.map +1 -0
  113. package/dist/test-enhanced-mcp-server.js +177 -0
  114. package/dist/test-enhanced-mcp-server.js.map +1 -0
  115. package/dist/types/bc-knowledge.d.ts +294 -0
  116. package/dist/types/bc-knowledge.d.ts.map +1 -0
  117. package/dist/types/bc-knowledge.js +44 -0
  118. package/dist/types/bc-knowledge.js.map +1 -0
  119. package/dist/types/config-types.d.ts +180 -0
  120. package/dist/types/config-types.d.ts.map +1 -0
  121. package/dist/types/config-types.js +104 -0
  122. package/dist/types/config-types.js.map +1 -0
  123. package/dist/types/index.d.ts +5 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/index.js +7 -0
  126. package/dist/types/index.js.map +1 -0
  127. package/dist/types/layer-types.d.ts +171 -0
  128. package/dist/types/layer-types.d.ts.map +1 -0
  129. package/dist/types/layer-types.js +27 -0
  130. package/dist/types/layer-types.js.map +1 -0
  131. package/dist/types/persona-types.d.ts +77 -0
  132. package/dist/types/persona-types.d.ts.map +1 -0
  133. package/dist/types/persona-types.js +341 -0
  134. package/dist/types/persona-types.js.map +1 -0
  135. package/dist/utils/path-utils.d.ts +5 -0
  136. package/dist/utils/path-utils.d.ts.map +1 -0
  137. package/dist/utils/path-utils.js +14 -0
  138. package/dist/utils/path-utils.js.map +1 -0
  139. package/dist/workflows/domain-workflows.d.ts +8 -0
  140. package/dist/workflows/domain-workflows.d.ts.map +1 -0
  141. package/dist/workflows/domain-workflows.js +360 -0
  142. package/dist/workflows/domain-workflows.js.map +1 -0
  143. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +24 -0
  144. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +24 -0
  145. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +30 -0
  146. package/embedded-knowledge/AGENTS.md +69 -0
  147. package/embedded-knowledge/CONTRIBUTING.md +58 -0
  148. package/embedded-knowledge/LICENSE +21 -0
  149. package/embedded-knowledge/README.md +15 -0
  150. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +90 -0
  151. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +113 -0
  152. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +101 -0
  153. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +87 -0
  154. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +155 -0
  155. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +138 -0
  156. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +79 -0
  157. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +280 -0
  158. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +200 -0
  159. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +565 -0
  160. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +665 -0
  161. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +325 -0
  162. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +696 -0
  163. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +320 -0
  164. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +102 -0
  165. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +433 -0
  166. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +66 -0
  167. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +115 -0
  168. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +295 -0
  169. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +86 -0
  170. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +96 -0
  171. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +70 -0
  172. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +84 -0
  173. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +93 -0
  174. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +73 -0
  175. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +78 -0
  176. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +79 -0
  177. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +87 -0
  178. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +209 -0
  179. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +246 -0
  180. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +107 -0
  181. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +105 -0
  182. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +186 -0
  183. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +60 -0
  184. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +139 -0
  185. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +190 -0
  186. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +516 -0
  187. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +298 -0
  188. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +324 -0
  189. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +344 -0
  190. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +137 -0
  191. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +340 -0
  192. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +810 -0
  193. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +86 -0
  194. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +110 -0
  195. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +758 -0
  196. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +665 -0
  197. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +316 -0
  198. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +223 -0
  199. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +149 -0
  200. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +412 -0
  201. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +211 -0
  202. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +155 -0
  203. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +475 -0
  204. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +238 -0
  205. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +97 -0
  206. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +666 -0
  207. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +319 -0
  208. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +236 -0
  209. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +59 -0
  210. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +67 -0
  211. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +70 -0
  212. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +90 -0
  213. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +87 -0
  214. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +70 -0
  215. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +74 -0
  216. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +81 -0
  217. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +56 -0
  218. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +66 -0
  219. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +79 -0
  220. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +78 -0
  221. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +83 -0
  222. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +76 -0
  223. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +104 -0
  224. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +145 -0
  225. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +104 -0
  226. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +114 -0
  227. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +356 -0
  228. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +256 -0
  229. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +101 -0
  230. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +108 -0
  231. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +80 -0
  232. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +98 -0
  233. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +123 -0
  234. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +96 -0
  235. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +115 -0
  236. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +115 -0
  237. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +114 -0
  238. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +395 -0
  239. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +479 -0
  240. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +548 -0
  241. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +287 -0
  242. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +434 -0
  243. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +508 -0
  244. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +615 -0
  245. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +144 -0
  246. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +96 -0
  247. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +124 -0
  248. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +84 -0
  249. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +75 -0
  250. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +96 -0
  251. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +385 -0
  252. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +72 -0
  253. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +48 -0
  254. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +49 -0
  255. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +67 -0
  256. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +119 -0
  257. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +123 -0
  258. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +64 -0
  259. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +60 -0
  260. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +83 -0
  261. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +716 -0
  262. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +101 -0
  263. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +91 -0
  264. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +79 -0
  265. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +79 -0
  266. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +89 -0
  267. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +76 -0
  268. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +76 -0
  269. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +76 -0
  270. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +81 -0
  271. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +76 -0
  272. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +75 -0
  273. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +76 -0
  274. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +76 -0
  275. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +76 -0
  276. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +96 -0
  277. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +76 -0
  278. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +86 -0
  279. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +90 -0
  280. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +82 -0
  281. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +78 -0
  282. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +76 -0
  283. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +78 -0
  284. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +100 -0
  285. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +115 -0
  286. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +124 -0
  287. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +110 -0
  288. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +438 -0
  289. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +255 -0
  290. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +209 -0
  291. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +218 -0
  292. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +218 -0
  293. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +280 -0
  294. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +188 -0
  295. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +245 -0
  296. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +244 -0
  297. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +278 -0
  298. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +484 -0
  299. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +64 -0
  300. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +107 -0
  301. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +280 -0
  302. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +75 -0
  303. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +67 -0
  304. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +76 -0
  305. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +98 -0
  306. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +128 -0
  307. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +75 -0
  308. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +95 -0
  309. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +141 -0
  310. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +91 -0
  311. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +118 -0
  312. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +111 -0
  313. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +113 -0
  314. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +127 -0
  315. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +141 -0
  316. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +66 -0
  317. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +96 -0
  318. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +161 -0
  319. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +177 -0
  320. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +239 -0
  321. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +346 -0
  322. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +298 -0
  323. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +677 -0
  324. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +117 -0
  325. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +75 -0
  326. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +169 -0
  327. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +399 -0
  328. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +356 -0
  329. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +889 -0
  330. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +84 -0
  331. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +127 -0
  332. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +89 -0
  333. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +516 -0
  334. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +61 -0
  335. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +427 -0
  336. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +122 -0
  337. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +96 -0
  338. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +101 -0
  339. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +149 -0
  340. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +107 -0
  341. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +95 -0
  342. package/embedded-knowledge/domains/seth-security/api-permission-model.md +115 -0
  343. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +78 -0
  344. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +373 -0
  345. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +308 -0
  346. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +79 -0
  347. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +78 -0
  348. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +81 -0
  349. package/embedded-knowledge/indexes/bc-version-matrix.json +188 -0
  350. package/embedded-knowledge/indexes/domain-catalog.json +106 -0
  351. package/embedded-knowledge/indexes/tags/abbreviations.json +1 -0
  352. package/embedded-knowledge/indexes/tags/abstraction.json +1 -0
  353. package/embedded-knowledge/indexes/tags/access-control.json +1 -0
  354. package/embedded-knowledge/indexes/tags/accessibility.json +1 -0
  355. package/embedded-knowledge/indexes/tags/actions.json +1 -0
  356. package/embedded-knowledge/indexes/tags/advanced-patterns.json +1 -0
  357. package/embedded-knowledge/indexes/tags/advanced.json +1 -0
  358. package/embedded-knowledge/indexes/tags/al-extension.json +1 -0
  359. package/embedded-knowledge/indexes/tags/al-generics.json +1 -0
  360. package/embedded-knowledge/indexes/tags/al-objects.json +1 -0
  361. package/embedded-knowledge/indexes/tags/al-syntax.json +1 -0
  362. package/embedded-knowledge/indexes/tags/algorithm-structure.json +1 -0
  363. package/embedded-knowledge/indexes/tags/alternatives.json +1 -0
  364. package/embedded-knowledge/indexes/tags/analytics.json +1 -0
  365. package/embedded-knowledge/indexes/tags/api-delegates.json +1 -0
  366. package/embedded-knowledge/indexes/tags/api-design.json +1 -0
  367. package/embedded-knowledge/indexes/tags/api-documentation.json +1 -0
  368. package/embedded-knowledge/indexes/tags/api-endpoints.json +1 -0
  369. package/embedded-knowledge/indexes/tags/api-extensibility.json +1 -0
  370. package/embedded-knowledge/indexes/tags/api-fieldsets.json +1 -0
  371. package/embedded-knowledge/indexes/tags/api-integration.json +1 -0
  372. package/embedded-knowledge/indexes/tags/api-interfaces.json +1 -0
  373. package/embedded-knowledge/indexes/tags/api-optimization.json +1 -0
  374. package/embedded-knowledge/indexes/tags/api-pages.json +1 -0
  375. package/embedded-knowledge/indexes/tags/api-patterns.json +1 -0
  376. package/embedded-knowledge/indexes/tags/api-permissions.json +1 -0
  377. package/embedded-knowledge/indexes/tags/api-responses.json +1 -0
  378. package/embedded-knowledge/indexes/tags/api-simplification.json +1 -0
  379. package/embedded-knowledge/indexes/tags/api.json +1 -0
  380. package/embedded-knowledge/indexes/tags/architecture.json +1 -0
  381. package/embedded-knowledge/indexes/tags/async-patterns.json +1 -0
  382. package/embedded-knowledge/indexes/tags/async-processing.json +1 -0
  383. package/embedded-knowledge/indexes/tags/automatic-registration.json +1 -0
  384. package/embedded-knowledge/indexes/tags/batch-operations.json +1 -0
  385. package/embedded-knowledge/indexes/tags/bc24-migration.json +1 -0
  386. package/embedded-knowledge/indexes/tags/begin-blocks.json +1 -0
  387. package/embedded-knowledge/indexes/tags/begin-end.json +1 -0
  388. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +1 -0
  389. package/embedded-knowledge/indexes/tags/best-practices.json +1 -0
  390. package/embedded-knowledge/indexes/tags/binding.json +1 -0
  391. package/embedded-knowledge/indexes/tags/block-structure.json +1 -0
  392. package/embedded-knowledge/indexes/tags/blocks.json +1 -0
  393. package/embedded-knowledge/indexes/tags/boolean-expressions.json +1 -0
  394. package/embedded-knowledge/indexes/tags/branching.json +1 -0
  395. package/embedded-knowledge/indexes/tags/breaking-changes.json +1 -0
  396. package/embedded-knowledge/indexes/tags/breakpoints.json +1 -0
  397. package/embedded-knowledge/indexes/tags/business-foundation.json +1 -0
  398. package/embedded-knowledge/indexes/tags/business-infrastructure.json +1 -0
  399. package/embedded-knowledge/indexes/tags/business-process.json +1 -0
  400. package/embedded-knowledge/indexes/tags/business-rules.json +1 -0
  401. package/embedded-knowledge/indexes/tags/caching.json +1 -0
  402. package/embedded-knowledge/indexes/tags/case-statements.json +1 -0
  403. package/embedded-knowledge/indexes/tags/case.json +1 -0
  404. package/embedded-knowledge/indexes/tags/code-analysis.json +1 -0
  405. package/embedded-knowledge/indexes/tags/code-clarity.json +1 -0
  406. package/embedded-knowledge/indexes/tags/code-comprehension.json +1 -0
  407. package/embedded-knowledge/indexes/tags/code-conversion.json +1 -0
  408. package/embedded-knowledge/indexes/tags/code-formatting.json +1 -0
  409. package/embedded-knowledge/indexes/tags/code-organization.json +1 -0
  410. package/embedded-knowledge/indexes/tags/code-patterns.json +1 -0
  411. package/embedded-knowledge/indexes/tags/code-quality.json +1 -0
  412. package/embedded-knowledge/indexes/tags/code-reuse.json +1 -0
  413. package/embedded-knowledge/indexes/tags/code-simplification.json +1 -0
  414. package/embedded-knowledge/indexes/tags/code-standards.json +1 -0
  415. package/embedded-knowledge/indexes/tags/code-structure.json +1 -0
  416. package/embedded-knowledge/indexes/tags/code-style.json +1 -0
  417. package/embedded-knowledge/indexes/tags/codeunit-design.json +1 -0
  418. package/embedded-knowledge/indexes/tags/command-queue.json +1 -0
  419. package/embedded-knowledge/indexes/tags/comments.json +1 -0
  420. package/embedded-knowledge/indexes/tags/compile-time-validation.json +1 -0
  421. package/embedded-knowledge/indexes/tags/complex-facade.json +1 -0
  422. package/embedded-knowledge/indexes/tags/complexity-hiding.json +1 -0
  423. package/embedded-knowledge/indexes/tags/complexity-management.json +1 -0
  424. package/embedded-knowledge/indexes/tags/compound-statements.json +1 -0
  425. package/embedded-knowledge/indexes/tags/concurrency.json +1 -0
  426. package/embedded-knowledge/indexes/tags/conditional-logic.json +1 -0
  427. package/embedded-knowledge/indexes/tags/conditional.json +1 -0
  428. package/embedded-knowledge/indexes/tags/conflict-resolution.json +1 -0
  429. package/embedded-knowledge/indexes/tags/consistency.json +1 -0
  430. package/embedded-knowledge/indexes/tags/contract-design.json +1 -0
  431. package/embedded-knowledge/indexes/tags/control-flow.json +1 -0
  432. package/embedded-knowledge/indexes/tags/conversion-guide.json +1 -0
  433. package/embedded-knowledge/indexes/tags/correlation.json +1 -0
  434. package/embedded-knowledge/indexes/tags/custom-messages.json +1 -0
  435. package/embedded-knowledge/indexes/tags/data-access.json +1 -0
  436. package/embedded-knowledge/indexes/tags/data-exposure.json +1 -0
  437. package/embedded-knowledge/indexes/tags/data-integrity.json +1 -0
  438. package/embedded-knowledge/indexes/tags/data-loading.json +1 -0
  439. package/embedded-knowledge/indexes/tags/data-manipulation.json +1 -0
  440. package/embedded-knowledge/indexes/tags/data-modeling.json +1 -0
  441. package/embedded-knowledge/indexes/tags/data-patterns.json +1 -0
  442. package/embedded-knowledge/indexes/tags/data-protection.json +1 -0
  443. package/embedded-knowledge/indexes/tags/data-validation.json +1 -0
  444. package/embedded-knowledge/indexes/tags/database.json +1 -0
  445. package/embedded-knowledge/indexes/tags/debugging.json +1 -0
  446. package/embedded-knowledge/indexes/tags/decision-making.json +1 -0
  447. package/embedded-knowledge/indexes/tags/declaration.json +1 -0
  448. package/embedded-knowledge/indexes/tags/default-messages.json +1 -0
  449. package/embedded-knowledge/indexes/tags/defensive-programming.json +1 -0
  450. package/embedded-knowledge/indexes/tags/deleteall.json +1 -0
  451. package/embedded-knowledge/indexes/tags/dependencies.json +1 -0
  452. package/embedded-knowledge/indexes/tags/deployment.json +1 -0
  453. package/embedded-knowledge/indexes/tags/developer-productivity.json +1 -0
  454. package/embedded-knowledge/indexes/tags/development-workflow.json +1 -0
  455. package/embedded-knowledge/indexes/tags/diagnostics.json +1 -0
  456. package/embedded-knowledge/indexes/tags/dimensions.json +1 -0
  457. package/embedded-knowledge/indexes/tags/documentation.json +1 -0
  458. package/embedded-knowledge/indexes/tags/early-exit.json +1 -0
  459. package/embedded-knowledge/indexes/tags/else-clauses.json +1 -0
  460. package/embedded-knowledge/indexes/tags/end-statements.json +1 -0
  461. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +1 -0
  462. package/embedded-knowledge/indexes/tags/entity-relationships.json +1 -0
  463. package/embedded-knowledge/indexes/tags/error-handling.json +1 -0
  464. package/embedded-knowledge/indexes/tags/error-messages.json +1 -0
  465. package/embedded-knowledge/indexes/tags/error-prevention.json +1 -0
  466. package/embedded-knowledge/indexes/tags/error-text.json +1 -0
  467. package/embedded-knowledge/indexes/tags/etag.json +1 -0
  468. package/embedded-knowledge/indexes/tags/event-bridge.json +1 -0
  469. package/embedded-knowledge/indexes/tags/event-payload.json +1 -0
  470. package/embedded-knowledge/indexes/tags/event-routing.json +1 -0
  471. package/embedded-knowledge/indexes/tags/events.json +1 -0
  472. package/embedded-knowledge/indexes/tags/execution-flow.json +1 -0
  473. package/embedded-knowledge/indexes/tags/expressions.json +1 -0
  474. package/embedded-knowledge/indexes/tags/extensibility.json +1 -0
  475. package/embedded-knowledge/indexes/tags/extensions.json +1 -0
  476. package/embedded-knowledge/indexes/tags/facade-composition.json +1 -0
  477. package/embedded-knowledge/indexes/tags/facade-pattern.json +1 -0
  478. package/embedded-knowledge/indexes/tags/field-control.json +1 -0
  479. package/embedded-knowledge/indexes/tags/field-exclusion.json +1 -0
  480. package/embedded-knowledge/indexes/tags/field-registration.json +1 -0
  481. package/embedded-knowledge/indexes/tags/field-state.json +1 -0
  482. package/embedded-knowledge/indexes/tags/field-validation.json +1 -0
  483. package/embedded-knowledge/indexes/tags/fielderror.json +1 -0
  484. package/embedded-knowledge/indexes/tags/fields.json +1 -0
  485. package/embedded-knowledge/indexes/tags/filtering.json +1 -0
  486. package/embedded-knowledge/indexes/tags/filters.json +1 -0
  487. package/embedded-knowledge/indexes/tags/formatting.json +1 -0
  488. package/embedded-knowledge/indexes/tags/generic-methods.json +1 -0
  489. package/embedded-knowledge/indexes/tags/http-status.json +1 -0
  490. package/embedded-knowledge/indexes/tags/if-statements.json +1 -0
  491. package/embedded-knowledge/indexes/tags/implementation.json +1 -0
  492. package/embedded-knowledge/indexes/tags/indentation.json +1 -0
  493. package/embedded-knowledge/indexes/tags/index-summary.json +277 -0
  494. package/embedded-knowledge/indexes/tags/indexing.json +1 -0
  495. package/embedded-knowledge/indexes/tags/inheritance.json +1 -0
  496. package/embedded-knowledge/indexes/tags/integration.json +1 -0
  497. package/embedded-knowledge/indexes/tags/integrity-checking.json +1 -0
  498. package/embedded-knowledge/indexes/tags/intellisense.json +1 -0
  499. package/embedded-knowledge/indexes/tags/interface-design.json +1 -0
  500. package/embedded-knowledge/indexes/tags/interface-segregation.json +1 -0
  501. package/embedded-knowledge/indexes/tags/isolation.json +1 -0
  502. package/embedded-knowledge/indexes/tags/job-processing.json +1 -0
  503. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +1 -0
  504. package/embedded-knowledge/indexes/tags/keywords.json +1 -0
  505. package/embedded-knowledge/indexes/tags/legacy-modernization.json +1 -0
  506. package/embedded-knowledge/indexes/tags/line-breaks.json +1 -0
  507. package/embedded-knowledge/indexes/tags/line-organization.json +1 -0
  508. package/embedded-knowledge/indexes/tags/line-positioning.json +1 -0
  509. package/embedded-knowledge/indexes/tags/localization.json +1 -0
  510. package/embedded-knowledge/indexes/tags/logging.json +1 -0
  511. package/embedded-knowledge/indexes/tags/loose-coupling.json +1 -0
  512. package/embedded-knowledge/indexes/tags/maintainability.json +1 -0
  513. package/embedded-knowledge/indexes/tags/memory-management.json +1 -0
  514. package/embedded-knowledge/indexes/tags/memory-optimization.json +1 -0
  515. package/embedded-knowledge/indexes/tags/memory.json +1 -0
  516. package/embedded-knowledge/indexes/tags/message-design.json +1 -0
  517. package/embedded-knowledge/indexes/tags/message-formatting.json +1 -0
  518. package/embedded-knowledge/indexes/tags/message-patterns.json +1 -0
  519. package/embedded-knowledge/indexes/tags/metadata-driven.json +1 -0
  520. package/embedded-knowledge/indexes/tags/method-comparison.json +1 -0
  521. package/embedded-knowledge/indexes/tags/module-architecture.json +1 -0
  522. package/embedded-knowledge/indexes/tags/module-validation.json +1 -0
  523. package/embedded-knowledge/indexes/tags/monitoring.json +1 -0
  524. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +1 -0
  525. package/embedded-knowledge/indexes/tags/multi-tenancy.json +1 -0
  526. package/embedded-knowledge/indexes/tags/multiple-values.json +1 -0
  527. package/embedded-knowledge/indexes/tags/naming-conventions.json +1 -0
  528. package/embedded-knowledge/indexes/tags/naming.json +1 -0
  529. package/embedded-knowledge/indexes/tags/navigation.json +1 -0
  530. package/embedded-knowledge/indexes/tags/nested-statements.json +1 -0
  531. package/embedded-knowledge/indexes/tags/no-series-conversion.json +1 -0
  532. package/embedded-knowledge/indexes/tags/no-series-validation.json +1 -0
  533. package/embedded-knowledge/indexes/tags/no-series.json +1 -0
  534. package/embedded-knowledge/indexes/tags/number-generation.json +1 -0
  535. package/embedded-knowledge/indexes/tags/object-documentation.json +1 -0
  536. package/embedded-knowledge/indexes/tags/odata.json +1 -0
  537. package/embedded-knowledge/indexes/tags/ondelete.json +1 -0
  538. package/embedded-knowledge/indexes/tags/onvalidate.json +1 -0
  539. package/embedded-knowledge/indexes/tags/operation-delegation.json +1 -0
  540. package/embedded-knowledge/indexes/tags/operation-safety.json +1 -0
  541. package/embedded-knowledge/indexes/tags/operators.json +1 -0
  542. package/embedded-knowledge/indexes/tags/optimization.json +1 -0
  543. package/embedded-knowledge/indexes/tags/order.json +1 -0
  544. package/embedded-knowledge/indexes/tags/organization.json +1 -0
  545. package/embedded-knowledge/indexes/tags/pages.json +1 -0
  546. package/embedded-knowledge/indexes/tags/parameters.json +1 -0
  547. package/embedded-knowledge/indexes/tags/patterns.json +1 -0
  548. package/embedded-knowledge/indexes/tags/performance-optimization.json +1 -0
  549. package/embedded-knowledge/indexes/tags/performance.json +1 -0
  550. package/embedded-knowledge/indexes/tags/placement.json +1 -0
  551. package/embedded-knowledge/indexes/tags/posting-codeunits.json +1 -0
  552. package/embedded-knowledge/indexes/tags/posting.json +1 -0
  553. package/embedded-knowledge/indexes/tags/preconditions.json +1 -0
  554. package/embedded-knowledge/indexes/tags/primary-key.json +1 -0
  555. package/embedded-knowledge/indexes/tags/privacy.json +1 -0
  556. package/embedded-knowledge/indexes/tags/process-automation.json +1 -0
  557. package/embedded-knowledge/indexes/tags/production.json +1 -0
  558. package/embedded-knowledge/indexes/tags/productivity.json +1 -0
  559. package/embedded-knowledge/indexes/tags/query-performance.json +1 -0
  560. package/embedded-knowledge/indexes/tags/queue-management.json +1 -0
  561. package/embedded-knowledge/indexes/tags/ranges.json +1 -0
  562. package/embedded-knowledge/indexes/tags/readability.json +1 -0
  563. package/embedded-knowledge/indexes/tags/record-access.json +1 -0
  564. package/embedded-knowledge/indexes/tags/record-methods.json +1 -0
  565. package/embedded-knowledge/indexes/tags/refactoring.json +1 -0
  566. package/embedded-knowledge/indexes/tags/reference.json +1 -0
  567. package/embedded-knowledge/indexes/tags/repeat-loops.json +1 -0
  568. package/embedded-knowledge/indexes/tags/repeat-statement.json +1 -0
  569. package/embedded-knowledge/indexes/tags/runtime-errors.json +1 -0
  570. package/embedded-knowledge/indexes/tags/runtime.json +1 -0
  571. package/embedded-knowledge/indexes/tags/safeguards.json +1 -0
  572. package/embedded-knowledge/indexes/tags/security.json +1 -0
  573. package/embedded-knowledge/indexes/tags/sequence-management.json +1 -0
  574. package/embedded-knowledge/indexes/tags/serialization.json +1 -0
  575. package/embedded-knowledge/indexes/tags/session-logmessage.json +1 -0
  576. package/embedded-knowledge/indexes/tags/session.json +1 -0
  577. package/embedded-knowledge/indexes/tags/setloadfields.json +1 -0
  578. package/embedded-knowledge/indexes/tags/shortcuts.json +1 -0
  579. package/embedded-knowledge/indexes/tags/sift.json +1 -0
  580. package/embedded-knowledge/indexes/tags/singleinstance.json +1 -0
  581. package/embedded-knowledge/indexes/tags/spacing.json +1 -0
  582. package/embedded-knowledge/indexes/tags/sql-translation.json +1 -0
  583. package/embedded-knowledge/indexes/tags/standards.json +1 -0
  584. package/embedded-knowledge/indexes/tags/statements.json +1 -0
  585. package/embedded-knowledge/indexes/tags/streaming.json +1 -0
  586. package/embedded-knowledge/indexes/tags/strong-typing.json +1 -0
  587. package/embedded-knowledge/indexes/tags/structural-patterns.json +1 -0
  588. package/embedded-knowledge/indexes/tags/structure.json +1 -0
  589. package/embedded-knowledge/indexes/tags/subscribers.json +1 -0
  590. package/embedded-knowledge/indexes/tags/switch.json +1 -0
  591. package/embedded-knowledge/indexes/tags/symbol-search.json +1 -0
  592. package/embedded-knowledge/indexes/tags/syntax.json +1 -0
  593. package/embedded-knowledge/indexes/tags/systemid.json +1 -0
  594. package/embedded-knowledge/indexes/tags/table-configuration.json +1 -0
  595. package/embedded-knowledge/indexes/tags/table-events.json +1 -0
  596. package/embedded-knowledge/indexes/tags/table-keys.json +1 -0
  597. package/embedded-knowledge/indexes/tags/table-safety.json +1 -0
  598. package/embedded-knowledge/indexes/tags/task-scheduler.json +1 -0
  599. package/embedded-knowledge/indexes/tags/telemetry.json +1 -0
  600. package/embedded-knowledge/indexes/tags/template-method.json +1 -0
  601. package/embedded-knowledge/indexes/tags/temporary-tables.json +1 -0
  602. package/embedded-knowledge/indexes/tags/testfield.json +1 -0
  603. package/embedded-knowledge/indexes/tags/tradeoffs.json +1 -0
  604. package/embedded-knowledge/indexes/tags/triggers.json +1 -0
  605. package/embedded-knowledge/indexes/tags/troubleshooting.json +1 -0
  606. package/embedded-knowledge/indexes/tags/type-safety.json +1 -0
  607. package/embedded-knowledge/indexes/tags/url-structure.json +1 -0
  608. package/embedded-knowledge/indexes/tags/user-experience.json +1 -0
  609. package/embedded-knowledge/indexes/tags/user-feedback.json +1 -0
  610. package/embedded-knowledge/indexes/tags/user-interface.json +1 -0
  611. package/embedded-knowledge/indexes/tags/validation-feedback.json +1 -0
  612. package/embedded-knowledge/indexes/tags/validation.json +1 -0
  613. package/embedded-knowledge/indexes/tags/variables.json +1 -0
  614. package/embedded-knowledge/indexes/tags/verbosity.json +1 -0
  615. package/embedded-knowledge/indexes/tags/vs-code.json +1 -0
  616. package/embedded-knowledge/indexes/tags/web-services.json +1 -0
  617. package/embedded-knowledge/indexes/tags/workflow-management.json +1 -0
  618. package/embedded-knowledge/indexes/tags/workflow-optimization.json +1 -0
  619. package/embedded-knowledge/indexes/tags/workflow-templates.json +1 -0
  620. package/embedded-knowledge/indexes/tags/workspace.json +1 -0
  621. package/embedded-knowledge/indexes/tags/xml-documentation.json +1 -0
  622. package/embedded-knowledge/indexes/topic-relationships.json +128 -0
  623. package/embedded-knowledge/methodologies/index.json +81 -0
  624. package/embedded-knowledge/methodologies/phases/analysis-full.md +208 -0
  625. package/embedded-knowledge/methodologies/phases/analysis-quick.md +44 -0
  626. package/embedded-knowledge/methodologies/phases/analysis.md +182 -0
  627. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +174 -0
  628. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +31 -0
  629. package/embedded-knowledge/methodologies/phases/execution-validation.md +174 -0
  630. package/embedded-knowledge/methodologies/phases/performance-full.md +211 -0
  631. package/embedded-knowledge/methodologies/phases/performance-quick.md +32 -0
  632. package/embedded-knowledge/methodologies/phases/performance.md +211 -0
  633. package/embedded-knowledge/methodologies/phases/verification-full.md +162 -0
  634. package/embedded-knowledge/methodologies/phases/verification-quick.md +48 -0
  635. package/embedded-knowledge/methodologies/phases/verification.md +146 -0
  636. package/embedded-knowledge/methodologies/workflow-enforcement.md +142 -0
  637. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +99 -0
  638. package/package.json +74 -0
package/dist/index.js ADDED
@@ -0,0 +1,673 @@
1
+ #!/usr/bin/env node
2
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
5
+ import { fileURLToPath } from 'url';
6
+ import { dirname, join } from 'path';
7
+ import { readFileSync } from 'fs';
8
+ import { streamlinedTools } from './streamlined-tools.js';
9
+ import { createStreamlinedHandlers } from './streamlined-handlers.js';
10
+ import { KnowledgeService } from './services/knowledge-service.js';
11
+ import { CodeAnalysisService } from './services/code-analysis-service.js';
12
+ import { MethodologyService } from './services/methodology-service.js';
13
+ import { WorkflowService } from './services/workflow-service.js';
14
+ import { LayerService } from './layers/layer-service.js';
15
+ import { ConfigurationLoader } from './config/config-loader.js';
16
+ import { ConfigurationValidator } from './config/config-validator.js';
17
+ import { domainWorkflows } from './workflows/domain-workflows.js';
18
+ /**
19
+ * BCKB MCP Server
20
+ *
21
+ * Business Central Knowledge Base Model Context Protocol Server
22
+ * Surfaces atomic BC knowledge topics for intelligent AI consumption
23
+ * via GitHub Copilot, Claude, and other LLM tools.
24
+ */
25
+ class BCKBServer {
26
+ server;
27
+ knowledgeService;
28
+ codeAnalysisService;
29
+ methodologyService;
30
+ workflowService;
31
+ layerService;
32
+ configuration;
33
+ configLoader;
34
+ getPackageVersion() {
35
+ try {
36
+ const __filename = fileURLToPath(import.meta.url);
37
+ const __dirname = dirname(__filename);
38
+ const packagePath = join(__dirname, '..', 'package.json');
39
+ const packageJson = JSON.parse(readFileSync(packagePath, 'utf8'));
40
+ return packageJson.version;
41
+ }
42
+ catch {
43
+ return '1.0.0'; // fallback
44
+ }
45
+ }
46
+ constructor() {
47
+ // Initialize MCP server
48
+ this.server = new Server({
49
+ name: 'bckb-server',
50
+ version: this.getPackageVersion(),
51
+ });
52
+ // Initialize configuration loader
53
+ this.configLoader = new ConfigurationLoader();
54
+ // Services will be initialized asynchronously in run()
55
+ this.setupToolHandlers();
56
+ this.setupPrompts();
57
+ }
58
+ setupToolHandlers() {
59
+ // List available tools
60
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
61
+ return {
62
+ tools: streamlinedTools
63
+ };
64
+ });
65
+ // Handle tool calls
66
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
67
+ const { name, arguments: args } = request.params;
68
+ try {
69
+ // Create streamlined handlers with all services
70
+ const handlers = createStreamlinedHandlers(this.server, {
71
+ knowledgeService: this.knowledgeService,
72
+ codeAnalysisService: this.codeAnalysisService,
73
+ methodologyService: this.methodologyService,
74
+ workflowService: this.workflowService,
75
+ layerService: this.layerService
76
+ });
77
+ // Execute the appropriate handler
78
+ const handler = handlers[name];
79
+ if (!handler) {
80
+ throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
81
+ }
82
+ return await handler(args);
83
+ }
84
+ catch (error) {
85
+ if (error instanceof McpError) {
86
+ throw error;
87
+ }
88
+ throw new McpError(ErrorCode.InternalError, `Tool execution failed: ${error instanceof Error ? error.message : String(error)}`);
89
+ }
90
+ });
91
+ }
92
+ /**
93
+ * Setup prompts for workflow pipelines
94
+ */
95
+ setupPrompts() {
96
+ console.error('🎯 Setting up MCP Prompts for workflow pipelines...');
97
+ // Define workflow prompts that guide users through structured pipelines
98
+ const workflowPrompts = [
99
+ {
100
+ name: 'workflow_code_optimization',
101
+ description: 'Optimize existing Business Central code using systematic analysis phases',
102
+ arguments: [
103
+ {
104
+ name: 'code_location',
105
+ description: 'Path to the code file or description of the code to optimize',
106
+ required: true
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ name: 'workflow_architecture_review',
112
+ description: 'Conduct comprehensive architecture review of Business Central solution',
113
+ arguments: [
114
+ {
115
+ name: 'scope',
116
+ description: 'Scope of review (module, solution, or specific components)',
117
+ required: true
118
+ }
119
+ ]
120
+ },
121
+ {
122
+ name: 'workflow_security_audit',
123
+ description: 'Perform security analysis and compliance check for Business Central implementation',
124
+ arguments: [
125
+ {
126
+ name: 'audit_scope',
127
+ description: 'Security audit scope (permissions, data access, API security, etc.)',
128
+ required: true
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ name: 'workflow_performance_analysis',
134
+ description: 'Analyze and optimize Business Central performance issues',
135
+ arguments: [
136
+ {
137
+ name: 'performance_concern',
138
+ description: 'Description of performance issue or area to analyze',
139
+ required: true
140
+ }
141
+ ]
142
+ },
143
+ {
144
+ name: 'workflow_integration_design',
145
+ description: 'Design robust integration patterns for Business Central',
146
+ arguments: [
147
+ {
148
+ name: 'integration_type',
149
+ description: 'Type of integration (API, data sync, external service, etc.)',
150
+ required: true
151
+ }
152
+ ]
153
+ },
154
+ {
155
+ name: 'workflow_upgrade_planning',
156
+ description: 'Plan Business Central version upgrade with risk assessment',
157
+ arguments: [
158
+ {
159
+ name: 'current_version',
160
+ description: 'Current Business Central version',
161
+ required: true
162
+ },
163
+ {
164
+ name: 'target_version',
165
+ description: 'Target Business Central version',
166
+ required: true
167
+ }
168
+ ]
169
+ },
170
+ {
171
+ name: 'workflow_testing_strategy',
172
+ description: 'Develop comprehensive testing strategy for Business Central solutions',
173
+ arguments: [
174
+ {
175
+ name: 'testing_scope',
176
+ description: 'Scope of testing (unit, integration, user acceptance, etc.)',
177
+ required: true
178
+ }
179
+ ]
180
+ },
181
+ {
182
+ name: 'workflow_new_developer_onboarding',
183
+ description: 'Guide new developer through Business Central development onboarding',
184
+ arguments: [
185
+ {
186
+ name: 'experience_level',
187
+ description: 'Developer experience level (beginner, intermediate, expert)',
188
+ required: true
189
+ },
190
+ {
191
+ name: 'focus_area',
192
+ description: 'Primary focus area for onboarding (development, customization, integration)',
193
+ required: false
194
+ }
195
+ ]
196
+ },
197
+ {
198
+ name: 'workflow_pure_review',
199
+ description: 'Conduct pure review and analysis without implementation changes',
200
+ arguments: [
201
+ {
202
+ name: 'review_target',
203
+ description: 'What to review (code, architecture, documentation, processes)',
204
+ required: true
205
+ },
206
+ {
207
+ name: 'review_depth',
208
+ description: 'Review depth (surface, detailed, comprehensive)',
209
+ required: false
210
+ }
211
+ ]
212
+ }
213
+ ];
214
+ // Register prompt list handler
215
+ this.server.setRequestHandler(ListPromptsRequestSchema, async () => ({
216
+ prompts: workflowPrompts.map(p => ({
217
+ name: p.name,
218
+ description: p.description,
219
+ arguments: p.arguments
220
+ }))
221
+ }));
222
+ // Register get prompt handler for all workflows
223
+ this.server.setRequestHandler(GetPromptRequestSchema, async (request) => {
224
+ const { name, arguments: args } = request.params;
225
+ const prompt = workflowPrompts.find(p => p.name === name);
226
+ if (!prompt) {
227
+ throw new McpError(ErrorCode.InvalidRequest, `Unknown prompt: ${name}`);
228
+ }
229
+ try {
230
+ // Convert workflow name to type and create start request
231
+ const workflowTypeMap = {
232
+ 'workflow_code_optimization': 'new-bc-app',
233
+ 'workflow_architecture_review': 'enhance-bc-app',
234
+ 'workflow_security_audit': 'debug-bc-issues',
235
+ 'workflow_performance_analysis': 'debug-bc-issues',
236
+ 'workflow_integration_design': 'add-ecosystem-features',
237
+ 'workflow_upgrade_planning': 'upgrade-bc-version',
238
+ 'workflow_testing_strategy': 'modernize-bc-code',
239
+ 'workflow_new_developer_onboarding': 'onboard-developer',
240
+ 'workflow_pure_review': 'review-bc-code'
241
+ };
242
+ const workflowType = workflowTypeMap[name];
243
+ if (!workflowType) {
244
+ throw new Error(`Unknown workflow type: ${name}`);
245
+ }
246
+ const startRequest = {
247
+ workflow_type: workflowType,
248
+ project_context: args?.code_location || args?.scope || args?.audit_scope ||
249
+ args?.performance_concern || args?.integration_type ||
250
+ args?.testing_scope || args?.review_target ||
251
+ 'General workflow request',
252
+ bc_version: args?.target_version || args?.current_version,
253
+ additional_context: args
254
+ };
255
+ // Start the workflow session
256
+ const session = await this.workflowService.startWorkflow(startRequest);
257
+ // Get the initial guidance for this workflow
258
+ const initialGuidance = await this.workflowService.getPhaseGuidance(session.id);
259
+ return {
260
+ description: `Starting ${workflowType} workflow`,
261
+ messages: [
262
+ {
263
+ role: 'user',
264
+ content: {
265
+ type: 'text',
266
+ text: initialGuidance
267
+ }
268
+ }
269
+ ]
270
+ };
271
+ }
272
+ catch (error) {
273
+ throw new McpError(ErrorCode.InternalError, `Failed to start workflow: ${error instanceof Error ? error.message : String(error)}`);
274
+ }
275
+ });
276
+ console.error('✅ MCP Prompts configured for workflow orchestration');
277
+ }
278
+ /**
279
+ * Initialize all services with configuration
280
+ */
281
+ async initializeServices(configResult) {
282
+ console.error('🔧 Initializing BCKB services with layered configuration...');
283
+ // Store configuration
284
+ this.configuration = configResult.config;
285
+ // Initialize layer service with configuration
286
+ this.layerService = new LayerService();
287
+ await this.layerService.initializeFromConfiguration(this.configuration);
288
+ // Initialize legacy knowledge service for backward compatibility
289
+ const __filename = fileURLToPath(import.meta.url);
290
+ const __dirname = dirname(__filename);
291
+ const legacyConfig = {
292
+ knowledge_base_path: process.env['BCKB_KB_PATH'] || join(__dirname, '../embedded-knowledge'),
293
+ indexes_path: process.env['BCKB_INDEXES_PATH'] || join(__dirname, '../embedded-knowledge/indexes'),
294
+ methodologies_path: process.env['BCKB_METHODOLOGIES_PATH'] || join(__dirname, '../embedded-knowledge/methodologies'),
295
+ cache_size: this.configuration.cache.max_size_mb * 1024, // Convert MB to entries approximation
296
+ max_search_results: 20,
297
+ default_bc_version: 'BC22',
298
+ enable_fuzzy_search: true,
299
+ search_threshold: 0.6
300
+ };
301
+ this.knowledgeService = new KnowledgeService(legacyConfig);
302
+ await this.knowledgeService.initialize();
303
+ this.codeAnalysisService = new CodeAnalysisService(this.knowledgeService);
304
+ this.methodologyService = new MethodologyService(this.knowledgeService, legacyConfig.methodologies_path);
305
+ // Initialize workflow service with persona registry
306
+ const { PersonaRegistry } = await import('./types/persona-types.js');
307
+ const personaRegistry = PersonaRegistry.getInstance();
308
+ this.workflowService = new WorkflowService(this.knowledgeService, this.methodologyService, personaRegistry);
309
+ console.error('✅ All services initialized successfully');
310
+ // Validate tool contracts at startup
311
+ await this.validateToolContracts();
312
+ }
313
+ /**
314
+ * Validate that all tool schemas match service implementations
315
+ */
316
+ async validateToolContracts() {
317
+ try {
318
+ console.error('🔍 Validating tool contracts...');
319
+ const handlers = createStreamlinedHandlers(this.server, {
320
+ knowledgeService: this.knowledgeService,
321
+ codeAnalysisService: this.codeAnalysisService,
322
+ methodologyService: this.methodologyService,
323
+ workflowService: this.workflowService,
324
+ layerService: this.layerService
325
+ });
326
+ let hasIssues = false;
327
+ for (const tool of streamlinedTools) {
328
+ if (!handlers[tool.name]) {
329
+ console.error(`❌ No handler found for tool: ${tool.name}`);
330
+ hasIssues = true;
331
+ }
332
+ }
333
+ if (hasIssues) {
334
+ console.error('💥 Contract validation failed! Server may have dead ends.');
335
+ // Don't fail startup, but warn loudly
336
+ }
337
+ else {
338
+ console.error('✅ Tool contract validation passed');
339
+ }
340
+ }
341
+ catch (error) {
342
+ console.error(`⚠️ Contract validation error: ${error}`);
343
+ // Don't fail startup for validation errors
344
+ }
345
+ }
346
+ /**
347
+ * Generate comprehensive system analytics
348
+ */
349
+ async generateSystemAnalytics(includeTopicAnalytics, includeLayerPerformance, includeConfigurationInsights) {
350
+ const analytics = {
351
+ timestamp: new Date().toISOString(),
352
+ system_overview: {
353
+ server_version: this.getPackageVersion(),
354
+ layers_active: this.layerService?.getLayers().length || 0,
355
+ configuration_loaded: !!this.configuration,
356
+ total_topics: this.layerService?.getAllTopicIds().length || 0
357
+ }
358
+ };
359
+ if (includeTopicAnalytics && this.layerService) {
360
+ analytics.topic_analytics = await this.generateTopicAnalytics();
361
+ }
362
+ if (includeLayerPerformance && this.layerService) {
363
+ analytics.layer_performance = this.generateLayerPerformanceAnalytics();
364
+ }
365
+ if (includeConfigurationInsights && this.configuration) {
366
+ analytics.configuration_insights = await this.generateConfigurationInsights();
367
+ }
368
+ return analytics;
369
+ }
370
+ /**
371
+ * Generate topic distribution and coverage analytics
372
+ */
373
+ async generateTopicAnalytics() {
374
+ const allTopicIds = this.layerService.getAllTopicIds();
375
+ const domainDistribution = {};
376
+ const difficultyDistribution = {};
377
+ const overrideStats = this.layerService.getOverriddenTopics();
378
+ // Analyze a sample of topics for domain/difficulty distribution
379
+ const sampleSize = Math.min(50, allTopicIds.length);
380
+ const sampleTopics = allTopicIds.slice(0, sampleSize);
381
+ for (const topicId of sampleTopics) {
382
+ const resolution = await this.layerService.resolveTopic(topicId);
383
+ if (resolution) {
384
+ const domain = resolution.topic.frontmatter.domain;
385
+ const difficulty = resolution.topic.frontmatter.difficulty;
386
+ domainDistribution[domain] = (domainDistribution[domain] || 0) + 1;
387
+ difficultyDistribution[difficulty] = (difficultyDistribution[difficulty] || 0) + 1;
388
+ }
389
+ }
390
+ return {
391
+ total_topics: allTopicIds.length,
392
+ analyzed_sample: sampleSize,
393
+ domain_distribution: domainDistribution,
394
+ difficulty_distribution: difficultyDistribution,
395
+ override_statistics: {
396
+ total_overrides: Object.keys(overrideStats).length,
397
+ override_percentage: allTopicIds.length > 0
398
+ ? ((Object.keys(overrideStats).length / allTopicIds.length) * 100).toFixed(1) + '%'
399
+ : '0%'
400
+ },
401
+ coverage_insights: {
402
+ domains_covered: Object.keys(domainDistribution).length,
403
+ difficulty_levels: Object.keys(difficultyDistribution).length,
404
+ most_common_domain: Object.entries(domainDistribution).sort(([, a], [, b]) => b - a)[0]?.[0] || 'N/A',
405
+ most_common_difficulty: Object.entries(difficultyDistribution).sort(([, a], [, b]) => b - a)[0]?.[0] || 'N/A'
406
+ }
407
+ };
408
+ }
409
+ /**
410
+ * Generate layer performance analytics
411
+ */
412
+ generateLayerPerformanceAnalytics() {
413
+ const layerStats = this.layerService.getLayerStatistics();
414
+ const layers = this.layerService.getLayers();
415
+ const layerMetrics = layers.map(layer => {
416
+ const stats = layer.getStatistics();
417
+ return {
418
+ name: layer.name,
419
+ priority: layer.priority,
420
+ enabled: layer.enabled,
421
+ topic_count: stats.topicCount,
422
+ index_count: stats.indexCount,
423
+ memory_usage_mb: stats.memoryUsage?.total ? (stats.memoryUsage.total / (1024 * 1024)).toFixed(2) : 'N/A',
424
+ load_time_ms: stats.loadTimeMs,
425
+ type: layer.constructor.name
426
+ };
427
+ });
428
+ return {
429
+ system_totals: {
430
+ total_layers: layerStats.total.layers,
431
+ total_topics: layerStats.total.totalTopics,
432
+ total_indexes: layerStats.total.totalIndexes,
433
+ total_memory_mb: layerStats.total.memoryUsage ? (layerStats.total.memoryUsage / (1024 * 1024)).toFixed(2) : 'N/A'
434
+ },
435
+ layer_metrics: layerMetrics,
436
+ performance_insights: {
437
+ fastest_layer: layerMetrics.sort((a, b) => (a.load_time_ms || 0) - (b.load_time_ms || 0))[0]?.name || 'N/A',
438
+ most_topics: layerMetrics.sort((a, b) => b.topic_count - a.topic_count)[0]?.name || 'N/A',
439
+ layer_efficiency: layerMetrics.length > 0
440
+ ? (layerStats.total.totalTopics / layerMetrics.length).toFixed(1) + ' topics/layer avg'
441
+ : 'N/A'
442
+ }
443
+ };
444
+ }
445
+ /**
446
+ * Generate configuration optimization insights
447
+ */
448
+ async generateConfigurationInsights() {
449
+ const validator = new ConfigurationValidator();
450
+ const validation = await validator.validate(this.configuration);
451
+ const insights = {
452
+ configuration_quality: {
453
+ overall_score: validation.score,
454
+ is_valid: validation.valid,
455
+ error_count: validation.errors.length,
456
+ warning_count: validation.warnings.length
457
+ },
458
+ layer_configuration: {
459
+ total_layers: this.configuration.layers.length,
460
+ enabled_layers: this.configuration.layers.filter(l => l.enabled).length,
461
+ layer_types: this.configuration.layers.reduce((acc, layer) => {
462
+ acc[layer.source.type] = (acc[layer.source.type] || 0) + 1;
463
+ return acc;
464
+ }, {}),
465
+ priority_distribution: this.configuration.layers.map(l => l.priority).sort((a, b) => a - b)
466
+ },
467
+ optimization_recommendations: []
468
+ };
469
+ // Generate optimization recommendations
470
+ if (this.configuration.layers.filter(l => l.enabled).length < 2) {
471
+ insights.optimization_recommendations.push({
472
+ type: 'layer_diversity',
473
+ message: 'Consider adding more layer types (git, local overrides) for better customization',
474
+ impact: 'medium'
475
+ });
476
+ }
477
+ if (this.configuration.performance.max_concurrent_loads < 3) {
478
+ insights.optimization_recommendations.push({
479
+ type: 'performance',
480
+ message: 'Increase max_concurrent_loads for better performance on modern systems',
481
+ impact: 'low'
482
+ });
483
+ }
484
+ if (!this.configuration.security.validate_sources) {
485
+ insights.optimization_recommendations.push({
486
+ type: 'security',
487
+ message: 'Enable source validation for better security',
488
+ impact: 'high'
489
+ });
490
+ }
491
+ if (validation.warnings.length > 0) {
492
+ insights.optimization_recommendations.push({
493
+ type: 'configuration',
494
+ message: `Address ${validation.warnings.length} configuration warnings`,
495
+ impact: 'medium'
496
+ });
497
+ }
498
+ return insights;
499
+ }
500
+ async generateOptimizationWorkflow(params) {
501
+ // Use domain workflows for comprehensive scenario coverage
502
+ const baseWorkflows = domainWorkflows;
503
+ // Additional legacy workflow mapping
504
+ const legacyWorkflows = {
505
+ 'slow report': {
506
+ steps: [
507
+ {
508
+ step_number: 1,
509
+ title: 'Analyze Current Data Access Patterns',
510
+ description: 'Review report dataset access, joins, and aggregations to identify bottlenecks',
511
+ related_topics: ['query-performance-patterns', 'sift-technology-fundamentals'],
512
+ validation_criteria: ['Query execution times documented', 'Data volume assessed'],
513
+ estimated_time: '30 minutes'
514
+ },
515
+ {
516
+ step_number: 2,
517
+ title: 'Implement SIFT Indexes',
518
+ description: 'Add SIFT indexes for aggregation operations and enable MaintainSIFTIndex',
519
+ related_topics: ['sift-index-fundamentals', 'maintainsiftindex-property-behavior'],
520
+ validation_criteria: ['SIFT keys created', 'MaintainSIFTIndex enabled', 'Aggregations use CalcSums'],
521
+ estimated_time: '45 minutes'
522
+ },
523
+ {
524
+ step_number: 3,
525
+ title: 'Optimize Field Loading',
526
+ description: 'Use SetLoadFields to reduce memory usage and network traffic',
527
+ related_topics: ['setloadfields-optimization', 'memory-optimization'],
528
+ validation_criteria: ['SetLoadFields implemented', 'Only required fields loaded'],
529
+ estimated_time: '20 minutes'
530
+ },
531
+ {
532
+ step_number: 4,
533
+ title: 'Performance Testing and Validation',
534
+ description: 'Measure performance improvements and validate against targets',
535
+ related_topics: ['performance-monitoring', 'performance-best-practices'],
536
+ validation_criteria: ['Performance metrics collected', 'Target response time achieved'],
537
+ estimated_time: '30 minutes'
538
+ }
539
+ ],
540
+ learning_path: ['sift-technology-fundamentals', 'query-performance-patterns', 'performance-monitoring'],
541
+ success_metrics: ['Report execution time reduced by 70%+', 'Memory usage optimized', 'User satisfaction improved'],
542
+ common_pitfalls: ['Not enabling MaintainSIFTIndex', 'Loading unnecessary fields', 'Missing performance baselines']
543
+ }
544
+ };
545
+ // Merge domain workflows with legacy workflows
546
+ const allWorkflows = { ...baseWorkflows, ...legacyWorkflows };
547
+ // Find matching workflow or create generic one
548
+ const scenario = params.scenario.toLowerCase();
549
+ let workflow = null;
550
+ for (const [key, value] of Object.entries(allWorkflows)) {
551
+ if (scenario.includes(key)) {
552
+ workflow = value;
553
+ break;
554
+ }
555
+ }
556
+ if (!workflow) {
557
+ // Generate generic optimization workflow
558
+ workflow = {
559
+ steps: [
560
+ {
561
+ step_number: 1,
562
+ title: 'Identify Performance Bottlenecks',
563
+ description: 'Analyze the scenario to pinpoint specific performance issues',
564
+ related_topics: ['performance-monitoring', 'query-performance-patterns'],
565
+ validation_criteria: ['Bottlenecks identified', 'Performance baseline established'],
566
+ estimated_time: '30 minutes'
567
+ },
568
+ {
569
+ step_number: 2,
570
+ title: 'Apply Targeted Optimizations',
571
+ description: 'Implement specific BC optimization patterns based on identified issues',
572
+ related_topics: ['performance-best-practices', 'memory-optimization'],
573
+ validation_criteria: ['Optimizations implemented', 'Code patterns improved'],
574
+ estimated_time: '60 minutes'
575
+ },
576
+ {
577
+ step_number: 3,
578
+ title: 'Validate and Monitor',
579
+ description: 'Test improvements and establish ongoing monitoring',
580
+ related_topics: ['performance-monitoring'],
581
+ validation_criteria: ['Performance improved', 'Monitoring established'],
582
+ estimated_time: '20 minutes'
583
+ }
584
+ ],
585
+ learning_path: ['performance-best-practices', 'performance-monitoring'],
586
+ success_metrics: ['Measurable performance improvement', 'Sustainable solution implemented'],
587
+ common_pitfalls: ['Premature optimization', 'Insufficient testing', 'Missing monitoring']
588
+ };
589
+ }
590
+ return {
591
+ scenario: params.scenario,
592
+ workflow,
593
+ constraints: params.constraints || [],
594
+ target_performance: params.target_performance
595
+ };
596
+ }
597
+ async run() {
598
+ try {
599
+ console.error(`🚀 BCKB MCP Server v${this.getPackageVersion()} starting...`);
600
+ // Load configuration
601
+ console.error('📋 Loading configuration...');
602
+ const configResult = await this.configLoader.loadConfiguration();
603
+ if (configResult.validation_errors.length > 0) {
604
+ console.error('❌ Configuration validation errors:');
605
+ configResult.validation_errors.forEach(error => {
606
+ console.error(` - ${error.field}: ${error.message}`);
607
+ });
608
+ process.exit(1);
609
+ }
610
+ if (configResult.warnings.length > 0) {
611
+ console.error('⚠️ Configuration warnings:');
612
+ configResult.warnings.forEach(warning => {
613
+ console.error(` - ${warning.type}: ${warning.message}`);
614
+ });
615
+ }
616
+ console.error(`✅ Configuration loaded with ${configResult.config.layers.length} layers`);
617
+ // Initialize all services
618
+ await this.initializeServices(configResult);
619
+ // Start MCP server
620
+ console.error('🌐 Starting MCP transport...');
621
+ const transport = new StdioServerTransport();
622
+ await this.server.connect(transport);
623
+ console.error('✅ BCKB MCP Server v2.0 started successfully');
624
+ console.error(`📊 System Status:`);
625
+ console.error(` - ${this.layerService.getLayers().length} layers active`);
626
+ console.error(` - ${this.layerService.getAllTopicIds().length} topics available`);
627
+ console.error(` - Configuration quality: ${await this.getConfigurationQuality()}/100`);
628
+ }
629
+ catch (error) {
630
+ console.error('💥 Fatal error during server startup:', error);
631
+ console.error('Error stack:', error instanceof Error ? error.stack : 'No stack trace');
632
+ process.exit(1);
633
+ }
634
+ }
635
+ /**
636
+ * Get configuration quality score for startup diagnostics
637
+ */
638
+ async getConfigurationQuality() {
639
+ if (!this.configuration)
640
+ return 0;
641
+ try {
642
+ const validator = new ConfigurationValidator();
643
+ const validation = await validator.validate(this.configuration);
644
+ return validation.score;
645
+ }
646
+ catch {
647
+ return 0;
648
+ }
649
+ }
650
+ }
651
+ // Start the server
652
+ async function main() {
653
+ const server = new BCKBServer();
654
+ await server.run();
655
+ }
656
+ // Handle process termination
657
+ process.on('SIGINT', async () => {
658
+ console.error('BCKB MCP Server shutting down...');
659
+ process.exit(0);
660
+ });
661
+ process.on('SIGTERM', async () => {
662
+ console.error('BCKB MCP Server shutting down...');
663
+ process.exit(0);
664
+ });
665
+ // Run server if this is the main module
666
+ if (process.argv[1]?.endsWith('index.js')) {
667
+ main().catch((error) => {
668
+ console.error('Fatal error in BCKB MCP Server:', error);
669
+ process.exit(1);
670
+ });
671
+ }
672
+ export { BCKBServer };
673
+ //# sourceMappingURL=index.js.map