bc-code-intelligence-mcp 1.5.9 → 1.6.0

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 (598) hide show
  1. package/dist/index.d.ts +9 -8
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +93 -211
  4. package/dist/index.js.map +1 -1
  5. package/dist/layers/base-layer.d.ts +6 -6
  6. package/dist/layers/base-layer.d.ts.map +1 -1
  7. package/dist/layers/base-layer.js +15 -15
  8. package/dist/layers/base-layer.js.map +1 -1
  9. package/dist/layers/embedded-layer.d.ts +2 -2
  10. package/dist/layers/embedded-layer.d.ts.map +1 -1
  11. package/dist/layers/embedded-layer.js +32 -16
  12. package/dist/layers/embedded-layer.js.map +1 -1
  13. package/dist/layers/git-layer.d.ts +2 -2
  14. package/dist/layers/git-layer.d.ts.map +1 -1
  15. package/dist/layers/git-layer.js +23 -9
  16. package/dist/layers/git-layer.js.map +1 -1
  17. package/dist/layers/project-layer.d.ts +2 -2
  18. package/dist/layers/project-layer.d.ts.map +1 -1
  19. package/dist/layers/project-layer.js +25 -11
  20. package/dist/layers/project-layer.js.map +1 -1
  21. package/dist/services/code-analysis-service.d.ts +100 -2
  22. package/dist/services/code-analysis-service.d.ts.map +1 -1
  23. package/dist/services/code-analysis-service.js +274 -8
  24. package/dist/services/code-analysis-service.js.map +1 -1
  25. package/dist/services/knowledge-service.d.ts.map +1 -1
  26. package/dist/services/knowledge-service.js.map +1 -1
  27. package/dist/services/methodology-service.d.ts +34 -2
  28. package/dist/services/methodology-service.d.ts.map +1 -1
  29. package/dist/services/methodology-service.js +279 -24
  30. package/dist/services/methodology-service.js.map +1 -1
  31. package/dist/services/multi-content-layer-service.d.ts.map +1 -1
  32. package/dist/services/multi-content-layer-service.js +26 -9
  33. package/dist/services/multi-content-layer-service.js.map +1 -1
  34. package/dist/services/relevance-index-service.d.ts +95 -0
  35. package/dist/services/relevance-index-service.d.ts.map +1 -0
  36. package/dist/services/relevance-index-service.js +321 -0
  37. package/dist/services/relevance-index-service.js.map +1 -0
  38. package/dist/services/roleplay-engine.d.ts +8 -0
  39. package/dist/services/roleplay-engine.d.ts.map +1 -1
  40. package/dist/services/roleplay-engine.js +35 -3
  41. package/dist/services/roleplay-engine.js.map +1 -1
  42. package/dist/services/specialist-loader.d.ts +1 -0
  43. package/dist/services/specialist-loader.d.ts.map +1 -1
  44. package/dist/services/specialist-loader.js +1 -0
  45. package/dist/services/specialist-loader.js.map +1 -1
  46. package/dist/services/workflow-service.d.ts +12 -0
  47. package/dist/services/workflow-service.d.ts.map +1 -1
  48. package/dist/services/workflow-service.js +30 -0
  49. package/dist/services/workflow-service.js.map +1 -1
  50. package/dist/services/{enhanced-prompt-service.d.ts → workflow-specialist-router.d.ts} +41 -4
  51. package/dist/services/workflow-specialist-router.d.ts.map +1 -0
  52. package/dist/services/{enhanced-prompt-service.js → workflow-specialist-router.js} +150 -24
  53. package/dist/services/workflow-specialist-router.js.map +1 -0
  54. package/dist/services/workflow-v2/index.d.ts +6 -0
  55. package/dist/services/workflow-v2/index.d.ts.map +1 -0
  56. package/dist/services/workflow-v2/index.js +6 -0
  57. package/dist/services/workflow-v2/index.js.map +1 -0
  58. package/dist/services/workflow-v2/workflow-definitions.d.ts +53 -0
  59. package/dist/services/workflow-v2/workflow-definitions.d.ts.map +1 -0
  60. package/dist/services/workflow-v2/workflow-definitions.js +722 -0
  61. package/dist/services/workflow-v2/workflow-definitions.js.map +1 -0
  62. package/dist/services/workflow-v2/workflow-session-manager.d.ts +140 -0
  63. package/dist/services/workflow-v2/workflow-session-manager.d.ts.map +1 -0
  64. package/dist/services/workflow-v2/workflow-session-manager.js +820 -0
  65. package/dist/services/workflow-v2/workflow-session-manager.js.map +1 -0
  66. package/dist/streamlined-handlers.d.ts +7 -86
  67. package/dist/streamlined-handlers.d.ts.map +1 -1
  68. package/dist/streamlined-handlers.js +23 -679
  69. package/dist/streamlined-handlers.js.map +1 -1
  70. package/dist/tools/_shared/workspace-constants.d.ts +49 -0
  71. package/dist/tools/_shared/workspace-constants.d.ts.map +1 -0
  72. package/dist/tools/_shared/workspace-constants.js +53 -0
  73. package/dist/tools/_shared/workspace-constants.js.map +1 -0
  74. package/dist/tools/advance_workflow/handler.d.ts +21 -0
  75. package/dist/tools/advance_workflow/handler.d.ts.map +1 -0
  76. package/dist/tools/advance_workflow/handler.js +58 -0
  77. package/dist/tools/advance_workflow/handler.js.map +1 -0
  78. package/dist/tools/advance_workflow/schema.d.ts +8 -0
  79. package/dist/tools/advance_workflow/schema.d.ts.map +1 -0
  80. package/dist/tools/advance_workflow/schema.js +28 -0
  81. package/dist/tools/advance_workflow/schema.js.map +1 -0
  82. package/dist/tools/analyze_al_code/handler.d.ts +12 -0
  83. package/dist/tools/analyze_al_code/handler.d.ts.map +1 -0
  84. package/dist/tools/analyze_al_code/handler.js +312 -0
  85. package/dist/tools/analyze_al_code/handler.js.map +1 -0
  86. package/dist/tools/analyze_al_code/schema.d.ts +8 -0
  87. package/dist/tools/analyze_al_code/schema.d.ts.map +1 -0
  88. package/dist/tools/analyze_al_code/schema.js +54 -0
  89. package/dist/tools/analyze_al_code/schema.js.map +1 -0
  90. package/dist/tools/ask_bc_expert/handler.d.ts +21 -0
  91. package/dist/tools/ask_bc_expert/handler.d.ts.map +1 -0
  92. package/dist/tools/ask_bc_expert/handler.js +118 -0
  93. package/dist/tools/ask_bc_expert/handler.js.map +1 -0
  94. package/dist/tools/ask_bc_expert/schema.d.ts +8 -0
  95. package/dist/tools/ask_bc_expert/schema.d.ts.map +1 -0
  96. package/dist/tools/ask_bc_expert/schema.js +33 -0
  97. package/dist/tools/ask_bc_expert/schema.js.map +1 -0
  98. package/dist/tools/context-snapshot/handler.d.ts +14 -0
  99. package/dist/tools/context-snapshot/handler.d.ts.map +1 -0
  100. package/dist/tools/context-snapshot/handler.js +143 -0
  101. package/dist/tools/context-snapshot/handler.js.map +1 -0
  102. package/dist/tools/context-snapshot/schema.d.ts +11 -0
  103. package/dist/tools/context-snapshot/schema.d.ts.map +1 -0
  104. package/dist/tools/context-snapshot/schema.js +46 -0
  105. package/dist/tools/context-snapshot/schema.js.map +1 -0
  106. package/dist/tools/core-tools.d.ts +1 -1
  107. package/dist/tools/core-tools.d.ts.map +1 -1
  108. package/dist/tools/core-tools.js +26 -9
  109. package/dist/tools/core-tools.js.map +1 -1
  110. package/dist/tools/create_layer_content/handler.d.ts +17 -0
  111. package/dist/tools/create_layer_content/handler.d.ts.map +1 -0
  112. package/dist/tools/create_layer_content/handler.js +248 -0
  113. package/dist/tools/create_layer_content/handler.js.map +1 -0
  114. package/dist/tools/create_layer_content/schema.d.ts +9 -0
  115. package/dist/tools/create_layer_content/schema.d.ts.map +1 -0
  116. package/dist/tools/create_layer_content/schema.js +42 -0
  117. package/dist/tools/create_layer_content/schema.js.map +1 -0
  118. package/dist/tools/debug/diagnose_git_layer/handler.d.ts +6 -0
  119. package/dist/tools/debug/diagnose_git_layer/handler.d.ts.map +1 -0
  120. package/dist/tools/debug/diagnose_git_layer/handler.js +286 -0
  121. package/dist/tools/debug/diagnose_git_layer/handler.js.map +1 -0
  122. package/dist/tools/debug/diagnose_git_layer/schema.d.ts +6 -0
  123. package/dist/tools/debug/diagnose_git_layer/schema.d.ts.map +1 -0
  124. package/dist/tools/debug/diagnose_git_layer/schema.js +35 -0
  125. package/dist/tools/debug/diagnose_git_layer/schema.js.map +1 -0
  126. package/dist/tools/debug/diagnose_local_layer/handler.d.ts +6 -0
  127. package/dist/tools/debug/diagnose_local_layer/handler.d.ts.map +1 -0
  128. package/dist/tools/debug/diagnose_local_layer/handler.js +285 -0
  129. package/dist/tools/debug/diagnose_local_layer/handler.js.map +1 -0
  130. package/dist/tools/debug/diagnose_local_layer/schema.d.ts +6 -0
  131. package/dist/tools/debug/diagnose_local_layer/schema.d.ts.map +1 -0
  132. package/dist/tools/debug/diagnose_local_layer/schema.js +16 -0
  133. package/dist/tools/debug/diagnose_local_layer/schema.js.map +1 -0
  134. package/dist/tools/debug/get_layer_diagnostics/handler.d.ts +7 -0
  135. package/dist/tools/debug/get_layer_diagnostics/handler.d.ts.map +1 -0
  136. package/dist/tools/debug/get_layer_diagnostics/handler.js +46 -0
  137. package/dist/tools/debug/get_layer_diagnostics/handler.js.map +1 -0
  138. package/dist/tools/debug/get_layer_diagnostics/schema.d.ts +6 -0
  139. package/dist/tools/debug/get_layer_diagnostics/schema.d.ts.map +1 -0
  140. package/dist/tools/debug/get_layer_diagnostics/schema.js +20 -0
  141. package/dist/tools/debug/get_layer_diagnostics/schema.js.map +1 -0
  142. package/dist/tools/debug/reload_layers/handler.d.ts +8 -0
  143. package/dist/tools/debug/reload_layers/handler.d.ts.map +1 -0
  144. package/dist/tools/debug/reload_layers/handler.js +83 -0
  145. package/dist/tools/debug/reload_layers/handler.js.map +1 -0
  146. package/dist/tools/debug/reload_layers/schema.d.ts +6 -0
  147. package/dist/tools/debug/reload_layers/schema.d.ts.map +1 -0
  148. package/dist/tools/debug/reload_layers/schema.js +20 -0
  149. package/dist/tools/debug/reload_layers/schema.js.map +1 -0
  150. package/dist/tools/debug/test_azure_devops_pat/handler.d.ts +6 -0
  151. package/dist/tools/debug/test_azure_devops_pat/handler.d.ts.map +1 -0
  152. package/dist/tools/debug/test_azure_devops_pat/handler.js +16 -0
  153. package/dist/tools/debug/test_azure_devops_pat/handler.js.map +1 -0
  154. package/dist/tools/debug/test_azure_devops_pat/schema.d.ts +6 -0
  155. package/dist/tools/debug/test_azure_devops_pat/schema.d.ts.map +1 -0
  156. package/dist/tools/debug/test_azure_devops_pat/schema.js +27 -0
  157. package/dist/tools/debug/test_azure_devops_pat/schema.js.map +1 -0
  158. package/dist/tools/debug/validate_layer_config/handler.d.ts +6 -0
  159. package/dist/tools/debug/validate_layer_config/handler.d.ts.map +1 -0
  160. package/dist/tools/debug/validate_layer_config/handler.js +17 -0
  161. package/dist/tools/debug/validate_layer_config/handler.js.map +1 -0
  162. package/dist/tools/debug/validate_layer_config/schema.d.ts +6 -0
  163. package/dist/tools/debug/validate_layer_config/schema.d.ts.map +1 -0
  164. package/dist/tools/debug/validate_layer_config/schema.js +21 -0
  165. package/dist/tools/debug/validate_layer_config/schema.js.map +1 -0
  166. package/dist/tools/find_bc_knowledge/handler.d.ts +21 -0
  167. package/dist/tools/find_bc_knowledge/handler.d.ts.map +1 -0
  168. package/dist/tools/find_bc_knowledge/handler.js +71 -0
  169. package/dist/tools/find_bc_knowledge/handler.js.map +1 -0
  170. package/dist/tools/find_bc_knowledge/schema.d.ts +8 -0
  171. package/dist/tools/find_bc_knowledge/schema.d.ts.map +1 -0
  172. package/dist/tools/find_bc_knowledge/schema.js +35 -0
  173. package/dist/tools/find_bc_knowledge/schema.js.map +1 -0
  174. package/dist/tools/get_bc_topic/handler.d.ts +12 -0
  175. package/dist/tools/get_bc_topic/handler.d.ts.map +1 -0
  176. package/dist/tools/get_bc_topic/handler.js +35 -0
  177. package/dist/tools/get_bc_topic/handler.js.map +1 -0
  178. package/dist/tools/get_bc_topic/schema.d.ts +8 -0
  179. package/dist/tools/get_bc_topic/schema.d.ts.map +1 -0
  180. package/dist/tools/get_bc_topic/schema.js +29 -0
  181. package/dist/tools/get_bc_topic/schema.js.map +1 -0
  182. package/dist/tools/get_codelens_mappings/handler.d.ts +8 -0
  183. package/dist/tools/get_codelens_mappings/handler.d.ts.map +1 -0
  184. package/dist/tools/get_codelens_mappings/handler.js +79 -0
  185. package/dist/tools/get_codelens_mappings/handler.js.map +1 -0
  186. package/dist/tools/get_codelens_mappings/schema.d.ts +9 -0
  187. package/dist/tools/get_codelens_mappings/schema.d.ts.map +1 -0
  188. package/dist/tools/get_codelens_mappings/schema.js +16 -0
  189. package/dist/tools/get_codelens_mappings/schema.js.map +1 -0
  190. package/dist/tools/get_workflow_help/handler.d.ts +12 -0
  191. package/dist/tools/get_workflow_help/handler.d.ts.map +1 -0
  192. package/dist/tools/get_workflow_help/handler.js +54 -0
  193. package/dist/tools/get_workflow_help/handler.js.map +1 -0
  194. package/dist/tools/get_workflow_help/schema.d.ts +8 -0
  195. package/dist/tools/get_workflow_help/schema.d.ts.map +1 -0
  196. package/dist/tools/get_workflow_help/schema.js +25 -0
  197. package/dist/tools/get_workflow_help/schema.js.map +1 -0
  198. package/dist/tools/get_workspace_info/handler.d.ts +16 -0
  199. package/dist/tools/get_workspace_info/handler.d.ts.map +1 -0
  200. package/dist/tools/get_workspace_info/handler.js +36 -0
  201. package/dist/tools/get_workspace_info/handler.js.map +1 -0
  202. package/dist/tools/get_workspace_info/schema.d.ts +8 -0
  203. package/dist/tools/get_workspace_info/schema.d.ts.map +1 -0
  204. package/dist/tools/get_workspace_info/schema.js +15 -0
  205. package/dist/tools/get_workspace_info/schema.js.map +1 -0
  206. package/dist/tools/handlers.d.ts +48 -0
  207. package/dist/tools/handlers.d.ts.map +1 -0
  208. package/dist/tools/handlers.js +81 -0
  209. package/dist/tools/handlers.js.map +1 -0
  210. package/dist/tools/index.d.ts +132 -38
  211. package/dist/tools/index.d.ts.map +1 -1
  212. package/dist/tools/index.js +184 -52
  213. package/dist/tools/index.js.map +1 -1
  214. package/dist/tools/knowledge-query/handler.d.ts +29 -0
  215. package/dist/tools/knowledge-query/handler.d.ts.map +1 -0
  216. package/dist/tools/knowledge-query/handler.js +85 -0
  217. package/dist/tools/knowledge-query/handler.js.map +1 -0
  218. package/dist/tools/knowledge-query/schema.d.ts +12 -0
  219. package/dist/tools/knowledge-query/schema.d.ts.map +1 -0
  220. package/dist/tools/knowledge-query/schema.js +64 -0
  221. package/dist/tools/knowledge-query/schema.js.map +1 -0
  222. package/dist/tools/list_prompts/handler.d.ts +11 -0
  223. package/dist/tools/list_prompts/handler.d.ts.map +1 -0
  224. package/dist/tools/list_prompts/handler.js +102 -0
  225. package/dist/tools/list_prompts/handler.js.map +1 -0
  226. package/dist/tools/list_prompts/schema.d.ts +9 -0
  227. package/dist/tools/list_prompts/schema.d.ts.map +1 -0
  228. package/dist/tools/list_prompts/schema.js +28 -0
  229. package/dist/tools/list_prompts/schema.js.map +1 -0
  230. package/dist/tools/list_specialists/handler.d.ts +12 -0
  231. package/dist/tools/list_specialists/handler.d.ts.map +1 -0
  232. package/dist/tools/list_specialists/handler.js +68 -0
  233. package/dist/tools/list_specialists/handler.js.map +1 -0
  234. package/dist/tools/list_specialists/schema.d.ts +8 -0
  235. package/dist/tools/list_specialists/schema.d.ts.map +1 -0
  236. package/dist/tools/list_specialists/schema.js +24 -0
  237. package/dist/tools/list_specialists/schema.js.map +1 -0
  238. package/dist/tools/scaffold_layer_repo/handler.d.ts +15 -0
  239. package/dist/tools/scaffold_layer_repo/handler.d.ts.map +1 -0
  240. package/dist/tools/scaffold_layer_repo/handler.js +410 -0
  241. package/dist/tools/scaffold_layer_repo/handler.js.map +1 -0
  242. package/dist/tools/scaffold_layer_repo/schema.d.ts +9 -0
  243. package/dist/tools/scaffold_layer_repo/schema.d.ts.map +1 -0
  244. package/dist/tools/scaffold_layer_repo/schema.js +35 -0
  245. package/dist/tools/scaffold_layer_repo/schema.js.map +1 -0
  246. package/dist/tools/set_workspace_info/handler.d.ts +22 -0
  247. package/dist/tools/set_workspace_info/handler.d.ts.map +1 -0
  248. package/dist/tools/set_workspace_info/handler.js +60 -0
  249. package/dist/tools/set_workspace_info/handler.js.map +1 -0
  250. package/dist/tools/set_workspace_info/schema.d.ts +8 -0
  251. package/dist/tools/set_workspace_info/schema.d.ts.map +1 -0
  252. package/dist/tools/set_workspace_info/schema.js +25 -0
  253. package/dist/tools/set_workspace_info/schema.js.map +1 -0
  254. package/dist/tools/specialist-consult/handler.d.ts +23 -0
  255. package/dist/tools/specialist-consult/handler.d.ts.map +1 -0
  256. package/dist/tools/specialist-consult/handler.js +120 -0
  257. package/dist/tools/specialist-consult/handler.js.map +1 -0
  258. package/dist/tools/specialist-consult/schema.d.ts +11 -0
  259. package/dist/tools/specialist-consult/schema.d.ts.map +1 -0
  260. package/dist/tools/specialist-consult/schema.js +47 -0
  261. package/dist/tools/specialist-consult/schema.js.map +1 -0
  262. package/dist/tools/specialist-list/handler.d.ts +14 -0
  263. package/dist/tools/specialist-list/handler.d.ts.map +1 -0
  264. package/dist/tools/specialist-list/handler.js +70 -0
  265. package/dist/tools/specialist-list/handler.js.map +1 -0
  266. package/dist/tools/specialist-list/schema.d.ts +11 -0
  267. package/dist/tools/specialist-list/schema.d.ts.map +1 -0
  268. package/dist/tools/specialist-list/schema.js +29 -0
  269. package/dist/tools/specialist-list/schema.js.map +1 -0
  270. package/dist/tools/start_bc_workflow/handler.d.ts +21 -0
  271. package/dist/tools/start_bc_workflow/handler.d.ts.map +1 -0
  272. package/dist/tools/start_bc_workflow/handler.js +237 -0
  273. package/dist/tools/start_bc_workflow/handler.js.map +1 -0
  274. package/dist/tools/start_bc_workflow/schema.d.ts +8 -0
  275. package/dist/tools/start_bc_workflow/schema.d.ts.map +1 -0
  276. package/dist/tools/start_bc_workflow/schema.js +43 -0
  277. package/dist/tools/start_bc_workflow/schema.js.map +1 -0
  278. package/dist/tools/validate_layer_repo/handler.d.ts +10 -0
  279. package/dist/tools/validate_layer_repo/handler.d.ts.map +1 -0
  280. package/dist/tools/validate_layer_repo/handler.js +148 -0
  281. package/dist/tools/validate_layer_repo/handler.js.map +1 -0
  282. package/dist/tools/validate_layer_repo/schema.d.ts +9 -0
  283. package/dist/tools/validate_layer_repo/schema.d.ts.map +1 -0
  284. package/dist/tools/validate_layer_repo/schema.js +21 -0
  285. package/dist/tools/validate_layer_repo/schema.js.map +1 -0
  286. package/dist/tools/workflow-execute/handler.d.ts +44 -0
  287. package/dist/tools/workflow-execute/handler.d.ts.map +1 -0
  288. package/dist/tools/workflow-execute/handler.js +333 -0
  289. package/dist/tools/workflow-execute/handler.js.map +1 -0
  290. package/dist/tools/workflow-execute/schema.d.ts +13 -0
  291. package/dist/tools/workflow-execute/schema.d.ts.map +1 -0
  292. package/dist/tools/workflow-execute/schema.js +108 -0
  293. package/dist/tools/workflow-execute/schema.js.map +1 -0
  294. package/dist/tools/workflow_batch/handler.d.ts +21 -0
  295. package/dist/tools/workflow_batch/handler.d.ts.map +1 -0
  296. package/dist/tools/workflow_batch/handler.js +304 -0
  297. package/dist/tools/workflow_batch/handler.js.map +1 -0
  298. package/dist/tools/workflow_batch/schema.d.ts +8 -0
  299. package/dist/tools/workflow_batch/schema.d.ts.map +1 -0
  300. package/dist/tools/workflow_batch/schema.js +76 -0
  301. package/dist/tools/workflow_batch/schema.js.map +1 -0
  302. package/dist/tools/workflow_cancel/handler.d.ts +21 -0
  303. package/dist/tools/workflow_cancel/handler.d.ts.map +1 -0
  304. package/dist/tools/workflow_cancel/handler.js +157 -0
  305. package/dist/tools/workflow_cancel/handler.js.map +1 -0
  306. package/dist/tools/workflow_cancel/schema.d.ts +8 -0
  307. package/dist/tools/workflow_cancel/schema.d.ts.map +1 -0
  308. package/dist/tools/workflow_cancel/schema.js +34 -0
  309. package/dist/tools/workflow_cancel/schema.js.map +1 -0
  310. package/dist/tools/workflow_complete/handler.d.ts +21 -0
  311. package/dist/tools/workflow_complete/handler.d.ts.map +1 -0
  312. package/dist/tools/workflow_complete/handler.js +124 -0
  313. package/dist/tools/workflow_complete/handler.js.map +1 -0
  314. package/dist/tools/workflow_complete/schema.d.ts +8 -0
  315. package/dist/tools/workflow_complete/schema.d.ts.map +1 -0
  316. package/dist/tools/workflow_complete/schema.js +45 -0
  317. package/dist/tools/workflow_complete/schema.js.map +1 -0
  318. package/dist/tools/workflow_list/handler.d.ts +19 -0
  319. package/dist/tools/workflow_list/handler.d.ts.map +1 -0
  320. package/dist/tools/workflow_list/handler.js +58 -0
  321. package/dist/tools/workflow_list/handler.js.map +1 -0
  322. package/dist/tools/workflow_list/schema.d.ts +8 -0
  323. package/dist/tools/workflow_list/schema.d.ts.map +1 -0
  324. package/dist/tools/workflow_list/schema.js +26 -0
  325. package/dist/tools/workflow_list/schema.js.map +1 -0
  326. package/dist/tools/workflow_next/handler.d.ts +21 -0
  327. package/dist/tools/workflow_next/handler.d.ts.map +1 -0
  328. package/dist/tools/workflow_next/handler.js +90 -0
  329. package/dist/tools/workflow_next/handler.js.map +1 -0
  330. package/dist/tools/workflow_next/schema.d.ts +8 -0
  331. package/dist/tools/workflow_next/schema.d.ts.map +1 -0
  332. package/dist/tools/workflow_next/schema.js +28 -0
  333. package/dist/tools/workflow_next/schema.js.map +1 -0
  334. package/dist/tools/workflow_progress/handler.d.ts +21 -0
  335. package/dist/tools/workflow_progress/handler.d.ts.map +1 -0
  336. package/dist/tools/workflow_progress/handler.js +147 -0
  337. package/dist/tools/workflow_progress/handler.js.map +1 -0
  338. package/dist/tools/workflow_progress/schema.d.ts +8 -0
  339. package/dist/tools/workflow_progress/schema.d.ts.map +1 -0
  340. package/dist/tools/workflow_progress/schema.js +111 -0
  341. package/dist/tools/workflow_progress/schema.js.map +1 -0
  342. package/dist/tools/workflow_start/handler.d.ts +21 -0
  343. package/dist/tools/workflow_start/handler.d.ts.map +1 -0
  344. package/dist/tools/workflow_start/handler.js +133 -0
  345. package/dist/tools/workflow_start/handler.js.map +1 -0
  346. package/dist/tools/workflow_start/schema.d.ts +8 -0
  347. package/dist/tools/workflow_start/schema.d.ts.map +1 -0
  348. package/dist/tools/workflow_start/schema.js +102 -0
  349. package/dist/tools/workflow_start/schema.js.map +1 -0
  350. package/dist/tools/workflow_start_v2/handler.d.ts +21 -0
  351. package/dist/tools/workflow_start_v2/handler.d.ts.map +1 -0
  352. package/dist/tools/workflow_start_v2/handler.js +133 -0
  353. package/dist/tools/workflow_start_v2/handler.js.map +1 -0
  354. package/dist/tools/workflow_start_v2/schema.d.ts +8 -0
  355. package/dist/tools/workflow_start_v2/schema.d.ts.map +1 -0
  356. package/dist/tools/workflow_start_v2/schema.js +102 -0
  357. package/dist/tools/workflow_start_v2/schema.js.map +1 -0
  358. package/dist/tools/workflow_status/handler.d.ts +21 -0
  359. package/dist/tools/workflow_status/handler.d.ts.map +1 -0
  360. package/dist/tools/workflow_status/handler.js +107 -0
  361. package/dist/tools/workflow_status/handler.js.map +1 -0
  362. package/dist/tools/workflow_status/schema.d.ts +8 -0
  363. package/dist/tools/workflow_status/schema.d.ts.map +1 -0
  364. package/dist/tools/workflow_status/schema.js +33 -0
  365. package/dist/tools/workflow_status/schema.js.map +1 -0
  366. package/dist/types/bc-knowledge.d.ts +64 -13
  367. package/dist/types/bc-knowledge.d.ts.map +1 -1
  368. package/dist/types/bc-knowledge.js +15 -0
  369. package/dist/types/bc-knowledge.js.map +1 -1
  370. package/dist/types/enhanced-layer-types.d.ts +3 -3
  371. package/dist/types/enhanced-layer-types.d.ts.map +1 -1
  372. package/dist/types/workflow-v2-types.d.ts +577 -0
  373. package/dist/types/workflow-v2-types.d.ts.map +1 -0
  374. package/dist/types/workflow-v2-types.js +10 -0
  375. package/dist/types/workflow-v2-types.js.map +1 -0
  376. package/embedded-knowledge/codelens-mappings.yaml +111 -0
  377. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +10 -0
  378. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +10 -0
  379. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +10 -0
  380. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +10 -0
  381. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +10 -0
  382. package/embedded-knowledge/domains/alex-architect/delegating-to-github-copilot-agents.md +10 -0
  383. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +10 -0
  384. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +10 -0
  385. package/embedded-knowledge/domains/alex-architect/object-id-ninja-integration.md +10 -0
  386. package/embedded-knowledge/domains/alex-architect/recommend-object-id-ninja.md +10 -0
  387. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +12 -2
  388. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +12 -2
  389. package/embedded-knowledge/domains/alex-architect/testability-design-patterns.md +10 -0
  390. package/embedded-knowledge/domains/casey-copilot/long-running-session-instructions.md +10 -0
  391. package/embedded-knowledge/domains/chris-config/configuration-file-discovery.md +10 -0
  392. package/embedded-knowledge/domains/chris-config/configuration-file-formats.md +10 -0
  393. package/embedded-knowledge/domains/chris-config/content-types-structure.md +10 -0
  394. package/embedded-knowledge/domains/chris-config/knowledge-content-creation.md +10 -0
  395. package/embedded-knowledge/domains/chris-config/layer-system-fundamentals.md +10 -0
  396. package/embedded-knowledge/domains/chris-config/multi-team-layer-configuration.md +10 -0
  397. package/embedded-knowledge/domains/chris-config/workspace-detection-solutions.md +10 -0
  398. package/embedded-knowledge/domains/dean-debug/bc-telemetry-buddy-integration.md +10 -0
  399. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +10 -0
  400. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +12 -2
  401. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +12 -2
  402. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +12 -2
  403. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +10 -0
  404. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +12 -2
  405. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +10 -0
  406. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +12 -2
  407. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +10 -0
  408. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +10 -0
  409. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +10 -0
  410. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +10 -0
  411. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +10 -0
  412. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +12 -2
  413. package/embedded-knowledge/domains/dean-debug/recommend-bc-telemetry-buddy.md +10 -0
  414. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +12 -2
  415. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +12 -2
  416. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +10 -0
  417. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +10 -0
  418. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +12 -2
  419. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +12 -2
  420. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +12 -2
  421. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +10 -0
  422. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +12 -2
  423. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +12 -2
  424. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +12 -2
  425. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +12 -2
  426. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +12 -2
  427. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +12 -2
  428. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +12 -2
  429. package/embedded-knowledge/domains/eva-errors/codeunit-run-pattern.md +10 -0
  430. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +12 -2
  431. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +12 -2
  432. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +12 -2
  433. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +12 -2
  434. package/embedded-knowledge/domains/eva-errors/try-function-usage.md +10 -0
  435. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +10 -0
  436. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +12 -2
  437. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +10 -0
  438. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +12 -2
  439. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +12 -2
  440. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +12 -2
  441. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +10 -0
  442. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +12 -2
  443. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +12 -2
  444. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +12 -2
  445. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +12 -2
  446. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +12 -2
  447. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +12 -2
  448. package/embedded-knowledge/domains/morgan-market/partner-readiness-analysis.md +10 -0
  449. package/embedded-knowledge/domains/parker-pragmatic/proposal-workflows/creating-effective-proposals.md +10 -0
  450. package/embedded-knowledge/domains/parker-pragmatic/trust-building/working-with-ai-skeptics.md +10 -0
  451. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +12 -2
  452. package/embedded-knowledge/domains/quinn-tester/isolation-testing-patterns.md +10 -0
  453. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +12 -2
  454. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +12 -2
  455. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +12 -2
  456. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +10 -0
  457. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +10 -0
  458. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +10 -0
  459. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +10 -0
  460. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +12 -2
  461. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +10 -0
  462. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +10 -0
  463. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +10 -0
  464. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +10 -0
  465. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +10 -0
  466. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +10 -0
  467. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +10 -0
  468. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +10 -0
  469. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +10 -0
  470. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +10 -0
  471. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +10 -0
  472. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +10 -0
  473. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +12 -2
  474. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +10 -0
  475. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +12 -2
  476. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +12 -2
  477. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +10 -0
  478. package/embedded-knowledge/domains/roger-reviewer/testability-code-smells.md +10 -0
  479. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +10 -0
  480. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +12 -2
  481. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +10 -0
  482. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +10 -0
  483. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +10 -0
  484. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +10 -0
  485. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +10 -0
  486. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +10 -0
  487. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +12 -2
  488. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +10 -0
  489. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +10 -0
  490. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +10 -0
  491. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +10 -0
  492. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +10 -0
  493. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +10 -0
  494. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +10 -0
  495. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +12 -2
  496. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +10 -0
  497. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +12 -2
  498. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +10 -0
  499. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +10 -0
  500. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +10 -0
  501. package/embedded-knowledge/domains/seth-security/api-permission-model.md +12 -2
  502. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +12 -2
  503. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +10 -0
  504. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +10 -0
  505. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +12 -2
  506. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +12 -2
  507. package/embedded-knowledge/scripts/frontmatter_validator.ps1 +330 -0
  508. package/embedded-knowledge/specialists/sam-coder.md +29 -20
  509. package/embedded-knowledge/workflows/bc-version-upgrade.yaml +160 -0
  510. package/embedded-knowledge/workflows/code-review.yaml +148 -0
  511. package/embedded-knowledge/workflows/error-to-errorinfo-migration.yaml +137 -0
  512. package/embedded-knowledge/workflows/onboarding.yaml +124 -0
  513. package/embedded-knowledge/workflows/performance-audit.yaml +148 -0
  514. package/embedded-knowledge/workflows/proposal-review.yaml +117 -0
  515. package/embedded-knowledge/workflows/security-audit.yaml +139 -0
  516. package/package.json +4 -2
  517. package/dist/cache/cache-manager.d.ts +0 -95
  518. package/dist/cache/cache-manager.d.ts.map +0 -1
  519. package/dist/cache/cache-manager.js +0 -328
  520. package/dist/cache/cache-manager.js.map +0 -1
  521. package/dist/cli/bc-code-intel-cli.d.ts +0 -9
  522. package/dist/cli/bc-code-intel-cli.d.ts.map +0 -1
  523. package/dist/cli/bc-code-intel-cli.js +0 -440
  524. package/dist/cli/bc-code-intel-cli.js.map +0 -1
  525. package/dist/config/test-config-loader.d.ts +0 -10
  526. package/dist/config/test-config-loader.d.ts.map +0 -1
  527. package/dist/config/test-config-loader.js +0 -135
  528. package/dist/config/test-config-loader.js.map +0 -1
  529. package/dist/config/test-enhanced-layer-service.d.ts +0 -7
  530. package/dist/config/test-enhanced-layer-service.d.ts.map +0 -1
  531. package/dist/config/test-enhanced-layer-service.js +0 -104
  532. package/dist/config/test-enhanced-layer-service.js.map +0 -1
  533. package/dist/config/test-git-layer.d.ts +0 -7
  534. package/dist/config/test-git-layer.d.ts.map +0 -1
  535. package/dist/config/test-git-layer.js +0 -68
  536. package/dist/config/test-git-layer.js.map +0 -1
  537. package/dist/dev/hot-reload.d.ts +0 -91
  538. package/dist/dev/hot-reload.d.ts.map +0 -1
  539. package/dist/dev/hot-reload.js +0 -358
  540. package/dist/dev/hot-reload.js.map +0 -1
  541. package/dist/layers/layer-service.d.ts +0 -135
  542. package/dist/layers/layer-service.d.ts.map +0 -1
  543. package/dist/layers/layer-service.js +0 -586
  544. package/dist/layers/layer-service.js.map +0 -1
  545. package/dist/monitoring/production-monitor.d.ts +0 -148
  546. package/dist/monitoring/production-monitor.d.ts.map +0 -1
  547. package/dist/monitoring/production-monitor.js +0 -463
  548. package/dist/monitoring/production-monitor.js.map +0 -1
  549. package/dist/performance/performance-monitor.d.ts +0 -99
  550. package/dist/performance/performance-monitor.d.ts.map +0 -1
  551. package/dist/performance/performance-monitor.js +0 -253
  552. package/dist/performance/performance-monitor.js.map +0 -1
  553. package/dist/sdk/bc-code-intel-client.d.ts +0 -175
  554. package/dist/sdk/bc-code-intel-client.d.ts.map +0 -1
  555. package/dist/sdk/bc-code-intel-client.js +0 -380
  556. package/dist/sdk/bc-code-intel-client.js.map +0 -1
  557. package/dist/search/intelligent-search.d.ts +0 -97
  558. package/dist/search/intelligent-search.d.ts.map +0 -1
  559. package/dist/search/intelligent-search.js +0 -358
  560. package/dist/search/intelligent-search.js.map +0 -1
  561. package/dist/security/access-control.d.ts +0 -110
  562. package/dist/security/access-control.d.ts.map +0 -1
  563. package/dist/security/access-control.js +0 -353
  564. package/dist/security/access-control.js.map +0 -1
  565. package/dist/services/enhanced-prompt-service.d.ts.map +0 -1
  566. package/dist/services/enhanced-prompt-service.js.map +0 -1
  567. package/dist/setup/post-install.d.ts +0 -12
  568. package/dist/setup/post-install.d.ts.map +0 -1
  569. package/dist/setup/post-install.js +0 -81
  570. package/dist/setup/post-install.js.map +0 -1
  571. package/dist/test-enhanced-mcp-server.d.ts +0 -7
  572. package/dist/test-enhanced-mcp-server.d.ts.map +0 -1
  573. package/dist/test-enhanced-mcp-server.js +0 -177
  574. package/dist/test-enhanced-mcp-server.js.map +0 -1
  575. package/dist/tools/specialist-tools.d.ts +0 -43
  576. package/dist/tools/specialist-tools.d.ts.map +0 -1
  577. package/dist/tools/specialist-tools.js +0 -378
  578. package/dist/tools/specialist-tools.js.map +0 -1
  579. package/dist/utils/path-utils.d.ts +0 -5
  580. package/dist/utils/path-utils.d.ts.map +0 -1
  581. package/dist/utils/path-utils.js +0 -14
  582. package/dist/utils/path-utils.js.map +0 -1
  583. package/embedded-knowledge/methodologies/index.json +0 -81
  584. package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
  585. package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
  586. package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
  587. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
  588. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
  589. package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
  590. package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
  591. package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
  592. package/embedded-knowledge/methodologies/phases/performance.md +0 -211
  593. package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
  594. package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
  595. package/embedded-knowledge/methodologies/phases/verification.md +0 -146
  596. package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
  597. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
  598. package/embedded-knowledge/methodologies/workflows/proposal-review-workflow.md +0 -535
@@ -7,6 +7,16 @@ tags: ["generic-methods", "type-safety", "code-reuse", "al-generics"]
7
7
  prerequisites: ["al-basics", "interface-implementation", "advanced-al-features"]
8
8
  samples: "samples/generic-method-patterns.md"
9
9
  related_topics: ["type-safe-operations-al", "template-method-pattern-al"]
10
+
11
+ relevance_signals:
12
+ constructs: ["interface", "Variant", "RecordRef", "FieldRef"]
13
+ keywords: ["generic methods", "type-safe", "code reuse", "type parameter", "constraint", "type inference"]
14
+ anti_pattern_indicators: ["over-generalization", "constraint misuse", "performance degradation", "complex type hierarchies"]
15
+ positive_pattern_indicators: ["type-safe algorithms", "generic factory", "interface-based generics", "meaningful type parameters"]
16
+
17
+ applicable_object_types: ["codeunit", "interface"]
18
+
19
+ relevance_threshold: 0.5
10
20
  ---
11
21
 
12
22
  # Generic Method Patterns in AL
@@ -6,6 +6,16 @@ bc_versions: "16+"
6
6
  tags: ["events", "binding", "conditional", "runtime"]
7
7
  prerequisites: ["event-subscriber-basics", "binding-patterns"]
8
8
  samples: "samples/manual-binding.md"
9
+
10
+ relevance_signals:
11
+ constructs: ["EventSubscriber", "BindSubscription", "UnbindSubscription"]
12
+ keywords: ["manual binding", "conditional subscriber", "runtime binding", "event registration", "feature toggle", "multi-tenant"]
13
+ anti_pattern_indicators: ["failed deregistration", "registration failures", "inconsistent binding state", "missing lifecycle management"]
14
+ positive_pattern_indicators: ["conditional event processing", "dynamic binding", "feature-flag-controlled", "explicit lifecycle management"]
15
+
16
+ applicable_object_types: ["codeunit"]
17
+
18
+ relevance_threshold: 0.6
9
19
  ---
10
20
  # Manual Binding for Conditional Event Subscribers
11
21
 
@@ -6,6 +6,16 @@ bc_versions: "14+"
6
6
  tags: ["nested-statements", "code-organization", "readability", "complexity-management"]
7
7
  prerequisites: ["compound-statement-readability", "al-control-flow"]
8
8
  samples: "samples/nested-compound-best-practices.md"
9
+
10
+ relevance_signals:
11
+ constructs: ["begin", "end", "if", "then", "else", "while", "repeat"]
12
+ keywords: ["nested statements", "compound blocks", "nesting depth", "code organization", "complexity management", "readability"]
13
+ anti_pattern_indicators: ["deep nesting", "excessive complexity", "more than three levels", "cognitive overload"]
14
+ positive_pattern_indicators: ["depth limitation", "logical organization", "strategic extraction", "consistent formatting"]
15
+
16
+ applicable_object_types: ["codeunit", "page", "table", "report"]
17
+
18
+ relevance_threshold: 0.5
9
19
  ---
10
20
  # AL Nested Compound Statement Best Practices
11
21
 
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  title: "Converting AL Single Statements to Compound Blocks"
3
3
  domain: "sam-coder"
4
4
  difficulty: "beginner"
@@ -6,7 +6,17 @@ bc_versions: "14+"
6
6
  tags: ["refactoring", "compound-statements", "code-conversion", "development-workflow"]
7
7
  prerequisites: ["al-syntax-basics", "compound-statement-readability"]
8
8
  samples: "samples/single-to-compound-conversion.md"
9
- ---
9
+
10
+ relevance_signals:
11
+ constructs: ["begin", "end", "if", "then", "else", "while", "repeat"]
12
+ keywords: ["refactoring", "compound statements", "code conversion", "begin-end blocks", "single statement", "future-proofing"]
13
+ anti_pattern_indicators: ["single statement without begin-end", "if-then without block", "inconsistent patterns"]
14
+ positive_pattern_indicators: ["compound block structure", "explicit begin-end", "consistent refactoring", "safe transformation"]
15
+
16
+ applicable_object_types: ["codeunit", "page", "table", "report"]
17
+
18
+ relevance_threshold: 0.4
19
+ ---
10
20
  # Converting AL Single Statements to Compound Blocks
11
21
 
12
22
  ## Overview
@@ -7,6 +7,16 @@ tags: ["template-method", "behavioral-patterns", "algorithm-structure", "inherit
7
7
  prerequisites: ["object-orientation-al", "inheritance-patterns", "virtual-methods"]
8
8
  samples: "samples/template-method-pattern.md"
9
9
  related_topics: ["business-process-template-patterns", "type-safe-operations-al"]
10
+
11
+ relevance_signals:
12
+ constructs: ["interface", "implements", "procedure"]
13
+ keywords: ["template method", "algorithm skeleton", "extension points", "inheritance", "virtual method", "behavioral pattern"]
14
+ anti_pattern_indicators: ["template complexity", "inflexible design", "too many extension points"]
15
+ positive_pattern_indicators: ["stable algorithm framework", "customizable steps", "invariant operations", "clear extension points"]
16
+
17
+ applicable_object_types: ["codeunit", "interface"]
18
+
19
+ relevance_threshold: 0.5
10
20
  ---
11
21
 
12
22
  # Template Method Pattern in AL
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  title: "TestField Best Practices and Patterns"
3
3
  domain: "sam-coder"
4
4
  difficulty: "intermediate"
@@ -6,7 +6,17 @@ bc_versions: "14+"
6
6
  tags: ["best-practices", "validation", "code-quality", "maintainability"]
7
7
  prerequisites: ["testfield-basic-syntax", "testfield-error-handling"]
8
8
  samples: "samples/testfield-patterns.md"
9
- ---
9
+
10
+ relevance_signals:
11
+ constructs: ["TestField", "FieldError", "Error"]
12
+ keywords: ["TestField", "validation", "mandatory field", "data integrity", "field validation", "status-driven validation"]
13
+ anti_pattern_indicators: ["over-validation", "mixed concerns", "performance-blind validation", "context-blind validation"]
14
+ positive_pattern_indicators: ["fail fast", "logical validation grouping", "context-appropriate validation", "progressive validation"]
15
+
16
+ applicable_object_types: ["codeunit", "page", "table"]
17
+
18
+ relevance_threshold: 0.6
19
+ ---
10
20
  # TestField Best Practices and Patterns
11
21
 
12
22
  ## Overview
@@ -7,6 +7,16 @@ tags: ["type-safety", "compile-time-validation", "strong-typing", "error-prevent
7
7
  prerequisites: ["al-data-types", "variable-declaration", "procedure-design"]
8
8
  samples: "samples/type-safe-operations.md"
9
9
  related_topics: ["generic-method-patterns-al", "template-method-pattern-al"]
10
+
11
+ relevance_signals:
12
+ constructs: ["Enum", "interface", "Option", "Record"]
13
+ keywords: ["type safety", "compile-time validation", "strong typing", "type-safe", "explicit type declarations", "enumeration"]
14
+ anti_pattern_indicators: ["over-engineering types", "implicit conversion", "type mismatch", "weak typing"]
15
+ positive_pattern_indicators: ["strongly-typed identifiers", "type-safe enumerations", "explicit type declarations", "compile-time checking"]
16
+
17
+ applicable_object_types: ["codeunit", "table", "enum", "interface"]
18
+
19
+ relevance_threshold: 0.5
10
20
  ---
11
21
 
12
22
  # Type-Safe Operations in AL
@@ -5,6 +5,16 @@ difficulty: "beginner"
5
5
  bc_versions: "14+"
6
6
  tags: ["vs-code", "productivity", "shortcuts", "al-extension", "navigation"]
7
7
  prerequisites: ["vs-code-setup", "al-extension-basics"]
8
+
9
+ relevance_signals:
10
+ constructs: []
11
+ keywords: ["keyboard shortcuts", "VS Code", "productivity", "IntelliSense", "debugging", "F12", "Ctrl+Space", "navigation"]
12
+ anti_pattern_indicators: []
13
+ positive_pattern_indicators: ["muscle memory", "coding flow", "efficient navigation", "shortcut mastery"]
14
+
15
+ applicable_object_types: ["codeunit", "page", "table", "report", "query", "xmlport", "enum", "interface"]
16
+
17
+ relevance_threshold: 0.3
8
18
  ---
9
19
 
10
20
  # VS Code AL Extension Keyboard Shortcuts
@@ -14,6 +14,16 @@ implementation_steps: ["validate-data-scope", "implement-secure-cleanup", "test-
14
14
  validation_criteria: ["secure-data-handling", "proper-memory-cleanup"]
15
15
  technical_areas: ["al-code", "data-management"]
16
16
  samples: "samples/al-temporary-table-safety.md"
17
+
18
+ relevance_signals:
19
+ constructs: ["IsTemporary", "DeleteAll", "ModifyAll", "Insert", "Delete", "Modify", "Reset", "Copy"]
20
+ keywords: ["temporary table", "in-memory", "data leakage", "memory management", "session isolation", "security context", "data protection", "cleanup", "scope management"]
21
+ anti_pattern_indicators: ["persistent temporary data", "permission bypass", "cross-session leakage", "uncontrolled scope", "failing to clear"]
22
+ positive_pattern_indicators: ["secure initialization", "permission validation", "explicit clearing", "try-finally", "error handling cleanup", "minimal data", "data filtering"]
23
+
24
+ applicable_object_types: ["codeunit", "table", "page", "report"]
25
+
26
+ relevance_threshold: 0.7
17
27
  ---
18
28
 
19
29
  # AL Temporary Table Safety
@@ -1,11 +1,21 @@
1
- ---
1
+ ---
2
2
  title: "API Page Permission Model"
3
3
  domain: "seth-security"
4
4
  difficulty: "intermediate"
5
5
  bc_versions: "14+"
6
6
  tags: ["api-permissions", "access-control", "security"]
7
7
  samples: "samples/api-permission-model.md"
8
- ---
8
+
9
+ relevance_signals:
10
+ constructs: ["APIPublisher", "APIGroup", "APIVersion", "ODataKeyFields", "EntityName", "EntitySetName", "Permissions", "TableData"]
11
+ keywords: ["API page", "OData", "permission model", "access control", "service account", "authentication", "authorization", "field-level security", "tenant isolation", "compliance", "audit"]
12
+ anti_pattern_indicators: ["missing permissions", "no authentication", "unprotected API", "exposed sensitive fields", "bypass security"]
13
+ positive_pattern_indicators: ["least privilege", "defense in depth", "permission sets", "field permissions", "audit trail", "service account", "OAuth"]
14
+
15
+ applicable_object_types: ["page", "permissionset", "codeunit"]
16
+
17
+ relevance_threshold: 0.7
18
+ ---
9
19
  # API Page Permission Model
10
20
 
11
21
  ## Overview
@@ -1,11 +1,21 @@
1
- ---
1
+ ---
2
2
  title: "IsTemporary Table Safeguard Pattern for Data Protection"
3
3
  domain: "seth-security"
4
4
  difficulty: "intermediate"
5
5
  bc_versions: "14+"
6
6
  tags: ["data-protection", "temporary-tables", "safeguards", "data-integrity", "error-prevention"]
7
7
  prerequisites: ["al-tables", "data-access-patterns"]
8
- ---
8
+
9
+ relevance_signals:
10
+ constructs: ["IsTemporary", "DeleteAll", "ModifyAll", "Insert", "Delete", "Modify", "Error"]
11
+ keywords: ["temporary table", "safeguard", "data protection", "bulk operation", "validation gate", "error prevention", "permanent table", "database safety"]
12
+ anti_pattern_indicators: ["skipping validation", "silent failure", "late validation", "generic error handling", "bypassing IsTemporary check"]
13
+ positive_pattern_indicators: ["early validation", "clear error messages", "conditional operations", "defensive programming", "precondition check"]
14
+
15
+ applicable_object_types: ["codeunit", "table", "page", "report"]
16
+
17
+ relevance_threshold: 0.7
18
+ ---
9
19
  # IsTemporary Table Safeguard Pattern for Data Protection
10
20
 
11
21
  ## Overview
@@ -14,6 +14,16 @@ implementation_steps: ["identify-object-name", "apply-object-type-suffix", "vali
14
14
  validation_criteria: ["consistent-naming-application", "standards-compliance"]
15
15
  technical_areas: ["al-code", "file-organization"]
16
16
  related_topics: ["al-variable-naming-conventions", "al-standard-abbreviations"]
17
+
18
+ relevance_signals:
19
+ constructs: []
20
+ keywords: ["file naming", "naming convention", "TableExt", "PageExt", "Codeunit", "Table", "Page", "Report", "Query", "XMLport", "Enum", "Interface", "PermissionSet", "Pascal Case"]
21
+ anti_pattern_indicators: ["Tab-Ext", "Pag-Ext", "Cod50100", "object ID in filename", "underscore notation", "inconsistent casing"]
22
+ positive_pattern_indicators: ["ObjectName.ObjectType.al", "Pascal Case", "descriptive", "consistent prefixes", "logical grouping"]
23
+
24
+ applicable_object_types: ["codeunit", "table", "tableextension", "page", "pageextension", "report", "reportextension", "query", "xmlport", "enum", "enumextension", "interface", "permissionset", "permissionsetextension", "profile", "controladdin"]
25
+
26
+ relevance_threshold: 0.5
17
27
  ---
18
28
 
19
29
  # AL File Naming Conventions
@@ -5,6 +5,16 @@ difficulty: "intermediate"
5
5
  bc_versions: "18+"
6
6
  tags: ["xml-documentation", "intellisense", "api-documentation", "object-documentation"]
7
7
  prerequisites: ["al-objects", "xml-basics"]
8
+
9
+ relevance_signals:
10
+ constructs: ["summary", "param", "returns", "example", "remarks"]
11
+ keywords: ["XML documentation", "IntelliSense", "API documentation", "triple-slash", "documentation comment", "object documentation", "procedure documentation"]
12
+ anti_pattern_indicators: ["minimal documentation", "copy-paste descriptions", "outdated information", "excessive detail", "missing parameter info"]
13
+ positive_pattern_indicators: ["complete coverage", "clear language", "accurate information", "meaningful examples", "version control", "review process"]
14
+
15
+ applicable_object_types: ["codeunit", "table", "page", "report", "query", "xmlport", "enum", "interface"]
16
+
17
+ relevance_threshold: 0.4
8
18
  ---
9
19
  # AL XML Documentation Comment Structure for Objects
10
20
 
@@ -1,11 +1,21 @@
1
- ---
1
+ ---
2
2
  title: "Business Central Action Shortcut Key Syntax and Implementation"
3
3
  domain: "uma-ux"
4
4
  difficulty: "intermediate"
5
5
  bc_versions: "14+"
6
6
  tags: ["shortcuts", "actions", "user-interface", "accessibility", "keyboard-navigation"]
7
7
  prerequisites: ["bc-actions", "page-design"]
8
- ---
8
+
9
+ relevance_signals:
10
+ constructs: ["ShortcutKey", "ApplicationArea", "Promoted", "PromotedCategory", "ToolTip", "Caption"]
11
+ keywords: ["shortcut key", "keyboard shortcut", "action", "accessibility", "keyboard navigation", "Ctrl", "Alt", "Shift", "F-key", "modifier key"]
12
+ anti_pattern_indicators: ["conflicting assignments", "obscure combinations", "inconsistent patterns", "missing accessibility", "undocumented shortcuts"]
13
+ positive_pattern_indicators: ["intuitive mapping", "standard conventions", "conflict avoidance", "accessibility compliance", "tooltip inclusion"]
14
+
15
+ applicable_object_types: ["page", "pageextension"]
16
+
17
+ relevance_threshold: 0.4
18
+ ---
9
19
  # Business Central Action Shortcut Key Syntax and Implementation
10
20
 
11
21
  ## Overview
@@ -1,11 +1,21 @@
1
- ---
1
+ ---
2
2
  title: "Shortcut Key User Experience Design in Business Central Applications"
3
3
  domain: "uma-ux"
4
4
  difficulty: "intermediate"
5
5
  bc_versions: "14+"
6
6
  tags: ["user-experience", "shortcuts", "workflow-optimization", "productivity", "interface-design"]
7
7
  prerequisites: ["user-interface-design", "bc-actions"]
8
- ---
8
+
9
+ relevance_signals:
10
+ constructs: ["ShortcutKey", "ToolTip", "Caption", "ApplicationArea", "Promoted"]
11
+ keywords: ["user experience", "shortcut", "workflow optimization", "productivity", "keyboard navigation", "progressive disclosure", "cognitive load", "discoverability", "power user"]
12
+ anti_pattern_indicators: ["overcomplex combinations", "hidden functionality", "inconsistent behavior", "conflict creation", "no visual feedback"]
13
+ positive_pattern_indicators: ["workflow analysis", "frequency-based prioritization", "memorable patterns", "visual cues", "help integration", "progressive revelation"]
14
+
15
+ applicable_object_types: ["page", "pageextension"]
16
+
17
+ relevance_threshold: 0.4
18
+ ---
9
19
  # Shortcut Key User Experience Design in Business Central Applications
10
20
 
11
21
  ## Overview
@@ -0,0 +1,330 @@
1
+ # frontmatter_validator.ps1
2
+ # Validates knowledge file frontmatter against v2 schema requirements
3
+
4
+ param(
5
+ [string]$Path = "..\domains",
6
+ [switch]$ExcludeSamples = $true,
7
+ [switch]$V2Only = $false # Only check v2 fields, skip files without them
8
+ )
9
+
10
+ $script:ErrorCount = 0
11
+ $script:WarningCount = 0
12
+ $script:ValidCount = 0
13
+ $script:SkippedCount = 0
14
+
15
+ function Write-ValidationError {
16
+ param([string]$File, [string]$Message)
17
+ Write-Host " ERROR: $Message" -ForegroundColor Red
18
+ $script:ErrorCount++
19
+ }
20
+
21
+ function Write-ValidationWarning {
22
+ param([string]$File, [string]$Message)
23
+ Write-Host " WARN: $Message" -ForegroundColor Yellow
24
+ $script:WarningCount++
25
+ }
26
+
27
+ function Test-IsArray {
28
+ param($Value)
29
+ return $Value -is [System.Collections.IEnumerable] -and $Value -isnot [string]
30
+ }
31
+
32
+ function Test-IsArrayOfStrings {
33
+ param($Value)
34
+ if (-not (Test-IsArray $Value)) { return $false }
35
+ foreach ($item in $Value) {
36
+ if ($item -isnot [string]) { return $false }
37
+ }
38
+ return $true
39
+ }
40
+
41
+ function Parse-YamlFrontmatter {
42
+ param([string]$Content)
43
+
44
+ # Extract frontmatter between --- markers
45
+ if ($Content -notmatch '^---\s*\r?\n([\s\S]*?)\r?\n---') {
46
+ return $null
47
+ }
48
+
49
+ $yamlContent = $Matches[1]
50
+ $result = @{}
51
+ $currentKey = $null
52
+ $currentIndent = 0
53
+ $inArray = $false
54
+ $arrayKey = $null
55
+ $nestedObject = $null
56
+ $nestedKey = $null
57
+
58
+ foreach ($line in $yamlContent -split '\r?\n') {
59
+ # Skip comments only - blank lines reset nested context but don't skip
60
+ if ($line -match '^\s*#') { continue }
61
+
62
+ # Blank lines reset nested object context (back to top level)
63
+ if ($line -match '^\s*$') {
64
+ $nestedObject = $null
65
+ $nestedKey = $null
66
+ $currentKey = $null
67
+ $arrayKey = $null
68
+ continue
69
+ }
70
+
71
+ # Detect indent level
72
+ $indent = 0
73
+ if ($line -match '^(\s*)') {
74
+ $indent = $Matches[1].Length
75
+ }
76
+
77
+ $trimmedLine = $line.Trim()
78
+
79
+ # Array item
80
+ if ($trimmedLine -match '^-\s*(.*)$') {
81
+ $value = $Matches[1].Trim()
82
+ # Remove quotes if present
83
+ if ($value -match '^[''"](.*)[''"]\s*$') {
84
+ $value = $Matches[1]
85
+ }
86
+ if ($nestedKey -and $nestedObject) {
87
+ if (-not $nestedObject[$nestedKey]) {
88
+ $nestedObject[$nestedKey] = @()
89
+ }
90
+ $nestedObject[$nestedKey] += $value
91
+ } elseif ($arrayKey) {
92
+ if (-not $result[$arrayKey]) {
93
+ $result[$arrayKey] = @()
94
+ }
95
+ $result[$arrayKey] += $value
96
+ }
97
+ continue
98
+ }
99
+
100
+ # Key-value pair
101
+ if ($trimmedLine -match '^([^:]+):\s*(.*)$') {
102
+ $key = $Matches[1].Trim()
103
+ $value = $Matches[2].Trim()
104
+
105
+ # Remove quotes if present
106
+ if ($value -match '^[''"](.*)[''"]\s*$') {
107
+ $value = $Matches[1]
108
+ }
109
+
110
+ # Check if this is a nested object key (indented under another key)
111
+ if ($indent -gt 0 -and $currentKey) {
112
+ if (-not $result[$currentKey]) {
113
+ $result[$currentKey] = @{}
114
+ }
115
+ $nestedObject = $result[$currentKey]
116
+ $nestedKey = $key
117
+
118
+ if ($value -eq '' -or $value -match '^\[') {
119
+ # Empty value or inline array - prepare for array items
120
+ if ($value -match '^\[(.*)\]$') {
121
+ # Inline array
122
+ $items = $Matches[1] -split ',\s*' | ForEach-Object {
123
+ $_.Trim().Trim('"').Trim("'")
124
+ } | Where-Object { $_ -ne '' }
125
+ $nestedObject[$key] = @($items)
126
+ } else {
127
+ $nestedObject[$key] = @()
128
+ }
129
+ } else {
130
+ $nestedObject[$key] = $value
131
+ }
132
+ } else {
133
+ # Top-level key
134
+ $currentKey = $key
135
+ $nestedObject = $null
136
+ $nestedKey = $null
137
+
138
+ if ($value -eq '' -or $value -match '^\[') {
139
+ # Empty value means object or array follows, or inline array
140
+ if ($value -match '^\[(.*)\]$') {
141
+ # Inline array
142
+ $items = $Matches[1] -split ',\s*' | ForEach-Object {
143
+ $_.Trim().Trim('"').Trim("'")
144
+ } | Where-Object { $_ -ne '' }
145
+ $result[$key] = @($items)
146
+ } else {
147
+ $arrayKey = $key
148
+ }
149
+ } else {
150
+ $result[$key] = $value
151
+ $arrayKey = $null
152
+ }
153
+ }
154
+ }
155
+ }
156
+
157
+ return $result
158
+ }
159
+
160
+ function Validate-Frontmatter {
161
+ param(
162
+ [string]$FilePath,
163
+ [hashtable]$Frontmatter
164
+ )
165
+
166
+ $hasV2Fields = $Frontmatter.ContainsKey('relevance_signals') -or
167
+ $Frontmatter.ContainsKey('applicable_object_types') -or
168
+ $Frontmatter.ContainsKey('relevance_threshold')
169
+
170
+ if ($V2Only -and -not $hasV2Fields) {
171
+ $script:SkippedCount++
172
+ return $true
173
+ }
174
+
175
+ $isValid = $true
176
+ $fileName = Split-Path $FilePath -Leaf
177
+
178
+ Write-Host "`nValidating: $fileName" -ForegroundColor Cyan
179
+
180
+ # Check relevance_signals structure
181
+ if ($Frontmatter.ContainsKey('relevance_signals')) {
182
+ $rs = $Frontmatter['relevance_signals']
183
+
184
+ if ($rs -isnot [hashtable]) {
185
+ Write-ValidationError -File $FilePath -Message "relevance_signals must be an object"
186
+ $isValid = $false
187
+ } else {
188
+ # Check each sub-field
189
+ $arrayFields = @('constructs', 'keywords', 'anti_pattern_indicators', 'positive_pattern_indicators')
190
+ foreach ($field in $arrayFields) {
191
+ if ($rs.ContainsKey($field)) {
192
+ $value = $rs[$field]
193
+ if (-not (Test-IsArray $value)) {
194
+ Write-ValidationError -File $FilePath -Message "relevance_signals.$field must be an array"
195
+ $isValid = $false
196
+ } elseif ($value.Count -gt 0 -and -not (Test-IsArrayOfStrings $value)) {
197
+ Write-ValidationError -File $FilePath -Message "relevance_signals.$field must contain only strings"
198
+ $isValid = $false
199
+ }
200
+ }
201
+ }
202
+
203
+ # Warn if no signals defined
204
+ $hasAnySignals = $false
205
+ foreach ($field in $arrayFields) {
206
+ if ($rs.ContainsKey($field) -and $rs[$field].Count -gt 0) {
207
+ $hasAnySignals = $true
208
+ break
209
+ }
210
+ }
211
+ if (-not $hasAnySignals) {
212
+ Write-ValidationWarning -File $FilePath -Message "relevance_signals defined but no signals specified"
213
+ }
214
+ }
215
+ }
216
+
217
+ # Check applicable_object_types
218
+ if ($Frontmatter.ContainsKey('applicable_object_types')) {
219
+ $aot = $Frontmatter['applicable_object_types']
220
+ if (-not (Test-IsArray $aot)) {
221
+ Write-ValidationError -File $FilePath -Message "applicable_object_types must be an array"
222
+ $isValid = $false
223
+ } elseif ($aot.Count -gt 0 -and -not (Test-IsArrayOfStrings $aot)) {
224
+ Write-ValidationError -File $FilePath -Message "applicable_object_types must contain only strings"
225
+ $isValid = $false
226
+ }
227
+ }
228
+
229
+ # Check relevance_threshold
230
+ if ($Frontmatter.ContainsKey('relevance_threshold')) {
231
+ $rt = $Frontmatter['relevance_threshold']
232
+ $rtNum = 0
233
+ # Use InvariantCulture to handle decimal point regardless of system locale
234
+ if (-not [double]::TryParse($rt, [System.Globalization.NumberStyles]::Float, [System.Globalization.CultureInfo]::InvariantCulture, [ref]$rtNum)) {
235
+ Write-ValidationError -File $FilePath -Message "relevance_threshold must be a number"
236
+ $isValid = $false
237
+ } elseif ($rtNum -lt 0.0 -or $rtNum -gt 1.0) {
238
+ Write-ValidationError -File $FilePath -Message "relevance_threshold must be between 0.0 and 1.0 (got $rtNum)"
239
+ $isValid = $false
240
+ }
241
+ }
242
+
243
+ if ($isValid) {
244
+ if ($hasV2Fields) {
245
+ Write-Host " OK (v2 fields valid)" -ForegroundColor Green
246
+ } else {
247
+ Write-Host " OK (no v2 fields)" -ForegroundColor Gray
248
+ }
249
+ $script:ValidCount++
250
+ }
251
+
252
+ return $isValid
253
+ }
254
+
255
+ # Main execution
256
+ $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
257
+ $searchPath = Join-Path $scriptDir $Path
258
+
259
+ if (-not (Test-Path $searchPath)) {
260
+ # Try relative to current directory
261
+ $searchPath = $Path
262
+ }
263
+
264
+ if (-not (Test-Path $searchPath)) {
265
+ Write-Host "Error: Path not found: $searchPath" -ForegroundColor Red
266
+ exit 1
267
+ }
268
+
269
+ Write-Host "=" * 60 -ForegroundColor White
270
+ Write-Host "Frontmatter Validator - Knowledge Pattern V2" -ForegroundColor White
271
+ Write-Host "=" * 60 -ForegroundColor White
272
+ Write-Host "Scanning: $searchPath"
273
+ Write-Host "Exclude samples: $ExcludeSamples"
274
+ Write-Host "V2 fields only: $V2Only"
275
+ Write-Host ""
276
+
277
+ # Find all markdown files
278
+ $files = Get-ChildItem -Path $searchPath -Filter "*.md" -Recurse
279
+
280
+ if ($ExcludeSamples) {
281
+ $files = $files | Where-Object { $_.DirectoryName -notmatch '\\samples$' }
282
+ }
283
+
284
+ Write-Host "Found $($files.Count) files to validate`n"
285
+
286
+ foreach ($file in $files) {
287
+ $content = Get-Content -Path $file.FullName -Raw -ErrorAction SilentlyContinue
288
+
289
+ if (-not $content) {
290
+ Write-Host "`nValidating: $($file.Name)" -ForegroundColor Cyan
291
+ Write-ValidationError -File $file.FullName -Message "Could not read file"
292
+ continue
293
+ }
294
+
295
+ # Check for frontmatter
296
+ if ($content -notmatch '^---') {
297
+ Write-Host "`nValidating: $($file.Name)" -ForegroundColor Cyan
298
+ Write-ValidationWarning -File $file.FullName -Message "No YAML frontmatter found"
299
+ $script:SkippedCount++
300
+ continue
301
+ }
302
+
303
+ $frontmatter = Parse-YamlFrontmatter -Content $content
304
+
305
+ if (-not $frontmatter) {
306
+ Write-Host "`nValidating: $($file.Name)" -ForegroundColor Cyan
307
+ Write-ValidationError -File $file.FullName -Message "Failed to parse YAML frontmatter"
308
+ continue
309
+ }
310
+
311
+ Validate-Frontmatter -FilePath $file.FullName -Frontmatter $frontmatter | Out-Null
312
+ }
313
+
314
+ # Summary
315
+ Write-Host "`n" + ("=" * 60) -ForegroundColor White
316
+ Write-Host "VALIDATION SUMMARY" -ForegroundColor White
317
+ Write-Host "=" * 60 -ForegroundColor White
318
+ Write-Host "Valid: $script:ValidCount" -ForegroundColor Green
319
+ Write-Host "Warnings: $script:WarningCount" -ForegroundColor Yellow
320
+ Write-Host "Errors: $script:ErrorCount" -ForegroundColor Red
321
+ Write-Host "Skipped: $script:SkippedCount" -ForegroundColor Gray
322
+ Write-Host ""
323
+
324
+ if ($script:ErrorCount -gt 0) {
325
+ Write-Host "VALIDATION FAILED" -ForegroundColor Red
326
+ exit 1
327
+ } else {
328
+ Write-Host "VALIDATION PASSED" -ForegroundColor Green
329
+ exit 0
330
+ }