bc-code-intelligence-mcp 1.5.9 → 1.6.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 (565) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +165 -165
  3. package/dist/config/config-loader.js +6 -6
  4. package/dist/config/config-loader.js.map +1 -1
  5. package/dist/index.d.ts +9 -8
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +93 -211
  8. package/dist/index.js.map +1 -1
  9. package/dist/layers/base-layer.d.ts +6 -6
  10. package/dist/layers/base-layer.d.ts.map +1 -1
  11. package/dist/layers/base-layer.js +15 -15
  12. package/dist/layers/base-layer.js.map +1 -1
  13. package/dist/layers/embedded-layer.d.ts +2 -2
  14. package/dist/layers/embedded-layer.d.ts.map +1 -1
  15. package/dist/layers/embedded-layer.js +59 -43
  16. package/dist/layers/embedded-layer.js.map +1 -1
  17. package/dist/layers/git-layer.d.ts +4 -2
  18. package/dist/layers/git-layer.d.ts.map +1 -1
  19. package/dist/layers/git-layer.js +70 -23
  20. package/dist/layers/git-layer.js.map +1 -1
  21. package/dist/layers/project-layer.d.ts +2 -2
  22. package/dist/layers/project-layer.d.ts.map +1 -1
  23. package/dist/layers/project-layer.js +58 -44
  24. package/dist/layers/project-layer.js.map +1 -1
  25. package/dist/services/code-analysis-service.d.ts +100 -2
  26. package/dist/services/code-analysis-service.d.ts.map +1 -1
  27. package/dist/services/code-analysis-service.js +274 -8
  28. package/dist/services/code-analysis-service.js.map +1 -1
  29. package/dist/services/knowledge-service.d.ts.map +1 -1
  30. package/dist/services/knowledge-service.js.map +1 -1
  31. package/dist/services/methodology-service.d.ts +34 -2
  32. package/dist/services/methodology-service.d.ts.map +1 -1
  33. package/dist/services/methodology-service.js +284 -29
  34. package/dist/services/methodology-service.js.map +1 -1
  35. package/dist/services/multi-content-layer-service.d.ts +5 -0
  36. package/dist/services/multi-content-layer-service.d.ts.map +1 -1
  37. package/dist/services/multi-content-layer-service.js +57 -9
  38. package/dist/services/multi-content-layer-service.js.map +1 -1
  39. package/dist/services/relevance-index-service.d.ts +95 -0
  40. package/dist/services/relevance-index-service.d.ts.map +1 -0
  41. package/dist/services/relevance-index-service.js +321 -0
  42. package/dist/services/relevance-index-service.js.map +1 -0
  43. package/dist/services/specialist-loader.d.ts +1 -0
  44. package/dist/services/specialist-loader.d.ts.map +1 -1
  45. package/dist/services/specialist-loader.js +1 -0
  46. package/dist/services/specialist-loader.js.map +1 -1
  47. package/dist/services/workflow-service.d.ts +12 -0
  48. package/dist/services/workflow-service.d.ts.map +1 -1
  49. package/dist/services/workflow-service.js +30 -0
  50. package/dist/services/workflow-service.js.map +1 -1
  51. package/dist/services/{enhanced-prompt-service.d.ts → workflow-specialist-router.d.ts} +41 -4
  52. package/dist/services/workflow-specialist-router.d.ts.map +1 -0
  53. package/dist/services/{enhanced-prompt-service.js → workflow-specialist-router.js} +150 -24
  54. package/dist/services/workflow-specialist-router.js.map +1 -0
  55. package/dist/services/workflow-v2/index.d.ts +6 -0
  56. package/dist/services/workflow-v2/index.d.ts.map +1 -0
  57. package/dist/services/workflow-v2/index.js +6 -0
  58. package/dist/services/workflow-v2/index.js.map +1 -0
  59. package/dist/services/workflow-v2/workflow-definitions.d.ts +53 -0
  60. package/dist/services/workflow-v2/workflow-definitions.d.ts.map +1 -0
  61. package/dist/services/workflow-v2/workflow-definitions.js +722 -0
  62. package/dist/services/workflow-v2/workflow-definitions.js.map +1 -0
  63. package/dist/services/workflow-v2/workflow-session-manager.d.ts +140 -0
  64. package/dist/services/workflow-v2/workflow-session-manager.d.ts.map +1 -0
  65. package/dist/services/workflow-v2/workflow-session-manager.js +820 -0
  66. package/dist/services/workflow-v2/workflow-session-manager.js.map +1 -0
  67. package/dist/tools/{workspace-tools.d.ts → _shared/workspace-constants.d.ts} +4 -51
  68. package/dist/tools/_shared/workspace-constants.d.ts.map +1 -0
  69. package/dist/tools/_shared/workspace-constants.js +53 -0
  70. package/dist/tools/_shared/workspace-constants.js.map +1 -0
  71. package/dist/tools/analyze_al_code/handler.d.ts +12 -0
  72. package/dist/tools/analyze_al_code/handler.d.ts.map +1 -0
  73. package/dist/tools/analyze_al_code/handler.js +312 -0
  74. package/dist/tools/analyze_al_code/handler.js.map +1 -0
  75. package/dist/tools/analyze_al_code/schema.d.ts +8 -0
  76. package/dist/tools/analyze_al_code/schema.d.ts.map +1 -0
  77. package/dist/tools/analyze_al_code/schema.js +54 -0
  78. package/dist/tools/analyze_al_code/schema.js.map +1 -0
  79. package/dist/tools/ask_bc_expert/handler.d.ts +21 -0
  80. package/dist/tools/ask_bc_expert/handler.d.ts.map +1 -0
  81. package/dist/tools/ask_bc_expert/handler.js +118 -0
  82. package/dist/tools/ask_bc_expert/handler.js.map +1 -0
  83. package/dist/tools/ask_bc_expert/schema.d.ts +8 -0
  84. package/dist/tools/ask_bc_expert/schema.d.ts.map +1 -0
  85. package/dist/tools/ask_bc_expert/schema.js +33 -0
  86. package/dist/tools/ask_bc_expert/schema.js.map +1 -0
  87. package/dist/tools/create_layer_content/handler.d.ts +17 -0
  88. package/dist/tools/create_layer_content/handler.d.ts.map +1 -0
  89. package/dist/tools/create_layer_content/handler.js +248 -0
  90. package/dist/tools/create_layer_content/handler.js.map +1 -0
  91. package/dist/tools/create_layer_content/schema.d.ts +9 -0
  92. package/dist/tools/create_layer_content/schema.d.ts.map +1 -0
  93. package/dist/tools/create_layer_content/schema.js +42 -0
  94. package/dist/tools/create_layer_content/schema.js.map +1 -0
  95. package/dist/tools/debug/diagnose_git_layer/handler.d.ts +6 -0
  96. package/dist/tools/debug/diagnose_git_layer/handler.d.ts.map +1 -0
  97. package/dist/tools/debug/diagnose_git_layer/handler.js +286 -0
  98. package/dist/tools/debug/diagnose_git_layer/handler.js.map +1 -0
  99. package/dist/tools/debug/diagnose_git_layer/schema.d.ts +6 -0
  100. package/dist/tools/debug/diagnose_git_layer/schema.d.ts.map +1 -0
  101. package/dist/tools/debug/diagnose_git_layer/schema.js +35 -0
  102. package/dist/tools/debug/diagnose_git_layer/schema.js.map +1 -0
  103. package/dist/tools/debug/diagnose_local_layer/handler.d.ts +6 -0
  104. package/dist/tools/debug/diagnose_local_layer/handler.d.ts.map +1 -0
  105. package/dist/tools/debug/diagnose_local_layer/handler.js +285 -0
  106. package/dist/tools/debug/diagnose_local_layer/handler.js.map +1 -0
  107. package/dist/tools/debug/diagnose_local_layer/schema.d.ts +6 -0
  108. package/dist/tools/debug/diagnose_local_layer/schema.d.ts.map +1 -0
  109. package/dist/tools/debug/diagnose_local_layer/schema.js +16 -0
  110. package/dist/tools/debug/diagnose_local_layer/schema.js.map +1 -0
  111. package/dist/tools/debug/get_layer_diagnostics/handler.d.ts +7 -0
  112. package/dist/tools/debug/get_layer_diagnostics/handler.d.ts.map +1 -0
  113. package/dist/tools/debug/get_layer_diagnostics/handler.js +46 -0
  114. package/dist/tools/debug/get_layer_diagnostics/handler.js.map +1 -0
  115. package/dist/tools/debug/get_layer_diagnostics/schema.d.ts +6 -0
  116. package/dist/tools/debug/get_layer_diagnostics/schema.d.ts.map +1 -0
  117. package/dist/tools/debug/get_layer_diagnostics/schema.js +20 -0
  118. package/dist/tools/debug/get_layer_diagnostics/schema.js.map +1 -0
  119. package/dist/tools/debug/reload_layers/handler.d.ts +8 -0
  120. package/dist/tools/debug/reload_layers/handler.d.ts.map +1 -0
  121. package/dist/tools/debug/reload_layers/handler.js +83 -0
  122. package/dist/tools/debug/reload_layers/handler.js.map +1 -0
  123. package/dist/tools/debug/reload_layers/schema.d.ts +6 -0
  124. package/dist/tools/debug/reload_layers/schema.d.ts.map +1 -0
  125. package/dist/tools/debug/reload_layers/schema.js +20 -0
  126. package/dist/tools/debug/reload_layers/schema.js.map +1 -0
  127. package/dist/tools/debug/test_azure_devops_pat/handler.d.ts +6 -0
  128. package/dist/tools/debug/test_azure_devops_pat/handler.d.ts.map +1 -0
  129. package/dist/tools/debug/test_azure_devops_pat/handler.js +16 -0
  130. package/dist/tools/debug/test_azure_devops_pat/handler.js.map +1 -0
  131. package/dist/tools/debug/test_azure_devops_pat/schema.d.ts +6 -0
  132. package/dist/tools/debug/test_azure_devops_pat/schema.d.ts.map +1 -0
  133. package/dist/tools/debug/test_azure_devops_pat/schema.js +27 -0
  134. package/dist/tools/debug/test_azure_devops_pat/schema.js.map +1 -0
  135. package/dist/tools/debug/validate_layer_config/handler.d.ts +6 -0
  136. package/dist/tools/debug/validate_layer_config/handler.d.ts.map +1 -0
  137. package/dist/tools/debug/validate_layer_config/handler.js +17 -0
  138. package/dist/tools/debug/validate_layer_config/handler.js.map +1 -0
  139. package/dist/tools/debug/validate_layer_config/schema.d.ts +6 -0
  140. package/dist/tools/debug/validate_layer_config/schema.d.ts.map +1 -0
  141. package/dist/tools/debug/validate_layer_config/schema.js +21 -0
  142. package/dist/tools/debug/validate_layer_config/schema.js.map +1 -0
  143. package/dist/tools/find_bc_knowledge/handler.d.ts +21 -0
  144. package/dist/tools/find_bc_knowledge/handler.d.ts.map +1 -0
  145. package/dist/tools/find_bc_knowledge/handler.js +71 -0
  146. package/dist/tools/find_bc_knowledge/handler.js.map +1 -0
  147. package/dist/tools/find_bc_knowledge/schema.d.ts +8 -0
  148. package/dist/tools/find_bc_knowledge/schema.d.ts.map +1 -0
  149. package/dist/tools/find_bc_knowledge/schema.js +35 -0
  150. package/dist/tools/find_bc_knowledge/schema.js.map +1 -0
  151. package/dist/tools/get_bc_topic/handler.d.ts +12 -0
  152. package/dist/tools/get_bc_topic/handler.d.ts.map +1 -0
  153. package/dist/tools/get_bc_topic/handler.js +35 -0
  154. package/dist/tools/get_bc_topic/handler.js.map +1 -0
  155. package/dist/tools/get_bc_topic/schema.d.ts +8 -0
  156. package/dist/tools/get_bc_topic/schema.d.ts.map +1 -0
  157. package/dist/tools/get_bc_topic/schema.js +29 -0
  158. package/dist/tools/get_bc_topic/schema.js.map +1 -0
  159. package/dist/tools/get_codelens_mappings/handler.d.ts +8 -0
  160. package/dist/tools/get_codelens_mappings/handler.d.ts.map +1 -0
  161. package/dist/tools/get_codelens_mappings/handler.js +79 -0
  162. package/dist/tools/get_codelens_mappings/handler.js.map +1 -0
  163. package/dist/tools/get_codelens_mappings/schema.d.ts +9 -0
  164. package/dist/tools/get_codelens_mappings/schema.d.ts.map +1 -0
  165. package/dist/tools/get_codelens_mappings/schema.js +16 -0
  166. package/dist/tools/get_codelens_mappings/schema.js.map +1 -0
  167. package/dist/tools/get_workspace_info/handler.d.ts +16 -0
  168. package/dist/tools/get_workspace_info/handler.d.ts.map +1 -0
  169. package/dist/tools/get_workspace_info/handler.js +36 -0
  170. package/dist/tools/get_workspace_info/handler.js.map +1 -0
  171. package/dist/tools/get_workspace_info/schema.d.ts +8 -0
  172. package/dist/tools/get_workspace_info/schema.d.ts.map +1 -0
  173. package/dist/tools/get_workspace_info/schema.js +15 -0
  174. package/dist/tools/get_workspace_info/schema.js.map +1 -0
  175. package/dist/tools/handlers.d.ts +48 -0
  176. package/dist/tools/handlers.d.ts.map +1 -0
  177. package/dist/tools/handlers.js +81 -0
  178. package/dist/tools/handlers.js.map +1 -0
  179. package/dist/tools/index.d.ts +132 -38
  180. package/dist/tools/index.d.ts.map +1 -1
  181. package/dist/tools/index.js +184 -52
  182. package/dist/tools/index.js.map +1 -1
  183. package/dist/tools/list_prompts/handler.d.ts +11 -0
  184. package/dist/tools/list_prompts/handler.d.ts.map +1 -0
  185. package/dist/tools/list_prompts/handler.js +102 -0
  186. package/dist/tools/list_prompts/handler.js.map +1 -0
  187. package/dist/tools/list_prompts/schema.d.ts +9 -0
  188. package/dist/tools/list_prompts/schema.d.ts.map +1 -0
  189. package/dist/tools/list_prompts/schema.js +28 -0
  190. package/dist/tools/list_prompts/schema.js.map +1 -0
  191. package/dist/tools/list_specialists/handler.d.ts +12 -0
  192. package/dist/tools/list_specialists/handler.d.ts.map +1 -0
  193. package/dist/tools/list_specialists/handler.js +68 -0
  194. package/dist/tools/list_specialists/handler.js.map +1 -0
  195. package/dist/tools/list_specialists/schema.d.ts +8 -0
  196. package/dist/tools/list_specialists/schema.d.ts.map +1 -0
  197. package/dist/tools/list_specialists/schema.js +24 -0
  198. package/dist/tools/list_specialists/schema.js.map +1 -0
  199. package/dist/tools/scaffold_layer_repo/handler.d.ts +15 -0
  200. package/dist/tools/scaffold_layer_repo/handler.d.ts.map +1 -0
  201. package/dist/tools/scaffold_layer_repo/handler.js +410 -0
  202. package/dist/tools/scaffold_layer_repo/handler.js.map +1 -0
  203. package/dist/tools/scaffold_layer_repo/schema.d.ts +9 -0
  204. package/dist/tools/scaffold_layer_repo/schema.d.ts.map +1 -0
  205. package/dist/tools/scaffold_layer_repo/schema.js +35 -0
  206. package/dist/tools/scaffold_layer_repo/schema.js.map +1 -0
  207. package/dist/tools/set_workspace_info/handler.d.ts +22 -0
  208. package/dist/tools/set_workspace_info/handler.d.ts.map +1 -0
  209. package/dist/tools/set_workspace_info/handler.js +60 -0
  210. package/dist/tools/set_workspace_info/handler.js.map +1 -0
  211. package/dist/tools/set_workspace_info/schema.d.ts +8 -0
  212. package/dist/tools/set_workspace_info/schema.d.ts.map +1 -0
  213. package/dist/tools/set_workspace_info/schema.js +25 -0
  214. package/dist/tools/set_workspace_info/schema.js.map +1 -0
  215. package/dist/tools/validate_layer_repo/handler.d.ts +10 -0
  216. package/dist/tools/validate_layer_repo/handler.d.ts.map +1 -0
  217. package/dist/tools/validate_layer_repo/handler.js +148 -0
  218. package/dist/tools/validate_layer_repo/handler.js.map +1 -0
  219. package/dist/tools/validate_layer_repo/schema.d.ts +9 -0
  220. package/dist/tools/validate_layer_repo/schema.d.ts.map +1 -0
  221. package/dist/tools/validate_layer_repo/schema.js +21 -0
  222. package/dist/tools/validate_layer_repo/schema.js.map +1 -0
  223. package/dist/tools/workflow_batch/handler.d.ts +21 -0
  224. package/dist/tools/workflow_batch/handler.d.ts.map +1 -0
  225. package/dist/tools/workflow_batch/handler.js +304 -0
  226. package/dist/tools/workflow_batch/handler.js.map +1 -0
  227. package/dist/tools/workflow_batch/schema.d.ts +8 -0
  228. package/dist/tools/workflow_batch/schema.d.ts.map +1 -0
  229. package/dist/tools/workflow_batch/schema.js +76 -0
  230. package/dist/tools/workflow_batch/schema.js.map +1 -0
  231. package/dist/tools/workflow_cancel/handler.d.ts +21 -0
  232. package/dist/tools/workflow_cancel/handler.d.ts.map +1 -0
  233. package/dist/tools/workflow_cancel/handler.js +157 -0
  234. package/dist/tools/workflow_cancel/handler.js.map +1 -0
  235. package/dist/tools/workflow_cancel/schema.d.ts +8 -0
  236. package/dist/tools/workflow_cancel/schema.d.ts.map +1 -0
  237. package/dist/tools/workflow_cancel/schema.js +34 -0
  238. package/dist/tools/workflow_cancel/schema.js.map +1 -0
  239. package/dist/tools/workflow_complete/handler.d.ts +21 -0
  240. package/dist/tools/workflow_complete/handler.d.ts.map +1 -0
  241. package/dist/tools/workflow_complete/handler.js +124 -0
  242. package/dist/tools/workflow_complete/handler.js.map +1 -0
  243. package/dist/tools/workflow_complete/schema.d.ts +8 -0
  244. package/dist/tools/workflow_complete/schema.d.ts.map +1 -0
  245. package/dist/tools/workflow_complete/schema.js +45 -0
  246. package/dist/tools/workflow_complete/schema.js.map +1 -0
  247. package/dist/tools/workflow_list/handler.d.ts +19 -0
  248. package/dist/tools/workflow_list/handler.d.ts.map +1 -0
  249. package/dist/tools/workflow_list/handler.js +58 -0
  250. package/dist/tools/workflow_list/handler.js.map +1 -0
  251. package/dist/tools/workflow_list/schema.d.ts +8 -0
  252. package/dist/tools/workflow_list/schema.d.ts.map +1 -0
  253. package/dist/tools/workflow_list/schema.js +26 -0
  254. package/dist/tools/workflow_list/schema.js.map +1 -0
  255. package/dist/tools/workflow_next/handler.d.ts +21 -0
  256. package/dist/tools/workflow_next/handler.d.ts.map +1 -0
  257. package/dist/tools/workflow_next/handler.js +90 -0
  258. package/dist/tools/workflow_next/handler.js.map +1 -0
  259. package/dist/tools/workflow_next/schema.d.ts +8 -0
  260. package/dist/tools/workflow_next/schema.d.ts.map +1 -0
  261. package/dist/tools/workflow_next/schema.js +28 -0
  262. package/dist/tools/workflow_next/schema.js.map +1 -0
  263. package/dist/tools/workflow_progress/handler.d.ts +21 -0
  264. package/dist/tools/workflow_progress/handler.d.ts.map +1 -0
  265. package/dist/tools/workflow_progress/handler.js +147 -0
  266. package/dist/tools/workflow_progress/handler.js.map +1 -0
  267. package/dist/tools/workflow_progress/schema.d.ts +8 -0
  268. package/dist/tools/workflow_progress/schema.d.ts.map +1 -0
  269. package/dist/tools/workflow_progress/schema.js +111 -0
  270. package/dist/tools/workflow_progress/schema.js.map +1 -0
  271. package/dist/tools/workflow_start/handler.d.ts +21 -0
  272. package/dist/tools/workflow_start/handler.d.ts.map +1 -0
  273. package/dist/tools/workflow_start/handler.js +133 -0
  274. package/dist/tools/workflow_start/handler.js.map +1 -0
  275. package/dist/tools/workflow_start/schema.d.ts +8 -0
  276. package/dist/tools/workflow_start/schema.d.ts.map +1 -0
  277. package/dist/tools/workflow_start/schema.js +102 -0
  278. package/dist/tools/workflow_start/schema.js.map +1 -0
  279. package/dist/tools/workflow_status/handler.d.ts +21 -0
  280. package/dist/tools/workflow_status/handler.d.ts.map +1 -0
  281. package/dist/tools/workflow_status/handler.js +107 -0
  282. package/dist/tools/workflow_status/handler.js.map +1 -0
  283. package/dist/tools/workflow_status/schema.d.ts +8 -0
  284. package/dist/tools/workflow_status/schema.d.ts.map +1 -0
  285. package/dist/tools/workflow_status/schema.js +33 -0
  286. package/dist/tools/workflow_status/schema.js.map +1 -0
  287. package/dist/types/bc-knowledge.d.ts +64 -13
  288. package/dist/types/bc-knowledge.d.ts.map +1 -1
  289. package/dist/types/bc-knowledge.js +15 -0
  290. package/dist/types/bc-knowledge.js.map +1 -1
  291. package/dist/types/enhanced-layer-types.d.ts +3 -3
  292. package/dist/types/enhanced-layer-types.d.ts.map +1 -1
  293. package/dist/types/workflow-v2-types.d.ts +577 -0
  294. package/dist/types/workflow-v2-types.d.ts.map +1 -0
  295. package/dist/types/workflow-v2-types.js +10 -0
  296. package/dist/types/workflow-v2-types.js.map +1 -0
  297. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +23 -23
  298. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +23 -23
  299. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +29 -29
  300. package/embedded-knowledge/AGENTS.md +177 -177
  301. package/embedded-knowledge/CONTRIBUTING.md +57 -57
  302. package/embedded-knowledge/LICENSE +20 -20
  303. package/embedded-knowledge/README.md +31 -31
  304. package/embedded-knowledge/codelens-mappings.yaml +111 -0
  305. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +10 -0
  306. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +10 -0
  307. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +10 -0
  308. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +10 -0
  309. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +10 -0
  310. package/embedded-knowledge/domains/alex-architect/delegating-to-github-copilot-agents.md +10 -0
  311. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +10 -0
  312. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +10 -0
  313. package/embedded-knowledge/domains/alex-architect/object-id-ninja-integration.md +10 -0
  314. package/embedded-knowledge/domains/alex-architect/recommend-object-id-ninja.md +10 -0
  315. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +12 -2
  316. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +12 -2
  317. package/embedded-knowledge/domains/alex-architect/testability-design-patterns.md +10 -0
  318. package/embedded-knowledge/domains/casey-copilot/long-running-session-instructions.md +10 -0
  319. package/embedded-knowledge/domains/chris-config/configuration-file-discovery.md +10 -0
  320. package/embedded-knowledge/domains/chris-config/configuration-file-formats.md +10 -0
  321. package/embedded-knowledge/domains/chris-config/content-types-structure.md +10 -0
  322. package/embedded-knowledge/domains/chris-config/knowledge-content-creation.md +10 -0
  323. package/embedded-knowledge/domains/chris-config/layer-system-fundamentals.md +10 -0
  324. package/embedded-knowledge/domains/chris-config/multi-team-layer-configuration.md +10 -0
  325. package/embedded-knowledge/domains/chris-config/workspace-detection-solutions.md +10 -0
  326. package/embedded-knowledge/domains/dean-debug/bc-telemetry-buddy-integration.md +10 -0
  327. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +10 -0
  328. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +12 -2
  329. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +12 -2
  330. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +12 -2
  331. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +10 -0
  332. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +12 -2
  333. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +10 -0
  334. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +12 -2
  335. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +10 -0
  336. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +10 -0
  337. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +10 -0
  338. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +10 -0
  339. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +10 -0
  340. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +12 -2
  341. package/embedded-knowledge/domains/dean-debug/recommend-bc-telemetry-buddy.md +10 -0
  342. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +12 -2
  343. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +12 -2
  344. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +10 -0
  345. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +10 -0
  346. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +12 -2
  347. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +12 -2
  348. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +12 -2
  349. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +10 -0
  350. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +12 -2
  351. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +12 -2
  352. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +12 -2
  353. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +12 -2
  354. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +12 -2
  355. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +12 -2
  356. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +12 -2
  357. package/embedded-knowledge/domains/eva-errors/codeunit-run-pattern.md +10 -0
  358. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +12 -2
  359. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +12 -2
  360. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +12 -2
  361. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +12 -2
  362. package/embedded-knowledge/domains/eva-errors/try-function-usage.md +10 -0
  363. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +10 -0
  364. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +12 -2
  365. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +10 -0
  366. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +12 -2
  367. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +12 -2
  368. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +12 -2
  369. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +10 -0
  370. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +12 -2
  371. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +12 -2
  372. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +12 -2
  373. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +12 -2
  374. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +12 -2
  375. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +12 -2
  376. package/embedded-knowledge/domains/morgan-market/partner-readiness-analysis.md +10 -0
  377. package/embedded-knowledge/domains/parker-pragmatic/proposal-workflows/creating-effective-proposals.md +10 -0
  378. package/embedded-knowledge/domains/parker-pragmatic/trust-building/working-with-ai-skeptics.md +10 -0
  379. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +12 -2
  380. package/embedded-knowledge/domains/quinn-tester/isolation-testing-patterns.md +10 -0
  381. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +12 -2
  382. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +12 -2
  383. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +12 -2
  384. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +10 -0
  385. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +10 -0
  386. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +10 -0
  387. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +10 -0
  388. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +12 -2
  389. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +10 -0
  390. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +10 -0
  391. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +10 -0
  392. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +10 -0
  393. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +10 -0
  394. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +10 -0
  395. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +10 -0
  396. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +10 -0
  397. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +10 -0
  398. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +10 -0
  399. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +10 -0
  400. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +10 -0
  401. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +12 -2
  402. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +10 -0
  403. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +12 -2
  404. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +12 -2
  405. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +10 -0
  406. package/embedded-knowledge/domains/roger-reviewer/testability-code-smells.md +10 -0
  407. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +10 -0
  408. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +12 -2
  409. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +10 -0
  410. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +10 -0
  411. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +10 -0
  412. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +10 -0
  413. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +10 -0
  414. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +10 -0
  415. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +12 -2
  416. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +10 -0
  417. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +10 -0
  418. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +10 -0
  419. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +10 -0
  420. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +10 -0
  421. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +10 -0
  422. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +10 -0
  423. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +12 -2
  424. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +10 -0
  425. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +12 -2
  426. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +10 -0
  427. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +10 -0
  428. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +10 -0
  429. package/embedded-knowledge/domains/seth-security/api-permission-model.md +12 -2
  430. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +12 -2
  431. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +155 -145
  432. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +10 -0
  433. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +12 -2
  434. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +12 -2
  435. package/embedded-knowledge/scripts/frontmatter_validator.ps1 +330 -0
  436. package/embedded-knowledge/specialists/sam-coder.md +29 -20
  437. package/embedded-knowledge/workflows/bc-version-upgrade.yaml +160 -0
  438. package/embedded-knowledge/workflows/code-review.yaml +148 -0
  439. package/embedded-knowledge/workflows/error-to-errorinfo-migration.yaml +137 -0
  440. package/embedded-knowledge/workflows/onboarding.yaml +124 -0
  441. package/embedded-knowledge/workflows/performance-audit.yaml +148 -0
  442. package/embedded-knowledge/workflows/proposal-review.yaml +117 -0
  443. package/embedded-knowledge/workflows/security-audit.yaml +139 -0
  444. package/package.json +83 -81
  445. package/dist/cache/cache-manager.d.ts +0 -95
  446. package/dist/cache/cache-manager.d.ts.map +0 -1
  447. package/dist/cache/cache-manager.js +0 -328
  448. package/dist/cache/cache-manager.js.map +0 -1
  449. package/dist/cli/bc-code-intel-cli.d.ts +0 -9
  450. package/dist/cli/bc-code-intel-cli.d.ts.map +0 -1
  451. package/dist/cli/bc-code-intel-cli.js +0 -440
  452. package/dist/cli/bc-code-intel-cli.js.map +0 -1
  453. package/dist/config/test-config-loader.d.ts +0 -10
  454. package/dist/config/test-config-loader.d.ts.map +0 -1
  455. package/dist/config/test-config-loader.js +0 -135
  456. package/dist/config/test-config-loader.js.map +0 -1
  457. package/dist/config/test-enhanced-layer-service.d.ts +0 -7
  458. package/dist/config/test-enhanced-layer-service.d.ts.map +0 -1
  459. package/dist/config/test-enhanced-layer-service.js +0 -104
  460. package/dist/config/test-enhanced-layer-service.js.map +0 -1
  461. package/dist/config/test-git-layer.d.ts +0 -7
  462. package/dist/config/test-git-layer.d.ts.map +0 -1
  463. package/dist/config/test-git-layer.js +0 -68
  464. package/dist/config/test-git-layer.js.map +0 -1
  465. package/dist/dev/hot-reload.d.ts +0 -91
  466. package/dist/dev/hot-reload.d.ts.map +0 -1
  467. package/dist/dev/hot-reload.js +0 -358
  468. package/dist/dev/hot-reload.js.map +0 -1
  469. package/dist/layers/layer-service.d.ts +0 -135
  470. package/dist/layers/layer-service.d.ts.map +0 -1
  471. package/dist/layers/layer-service.js +0 -586
  472. package/dist/layers/layer-service.js.map +0 -1
  473. package/dist/monitoring/production-monitor.d.ts +0 -148
  474. package/dist/monitoring/production-monitor.d.ts.map +0 -1
  475. package/dist/monitoring/production-monitor.js +0 -463
  476. package/dist/monitoring/production-monitor.js.map +0 -1
  477. package/dist/performance/performance-monitor.d.ts +0 -99
  478. package/dist/performance/performance-monitor.d.ts.map +0 -1
  479. package/dist/performance/performance-monitor.js +0 -253
  480. package/dist/performance/performance-monitor.js.map +0 -1
  481. package/dist/sdk/bc-code-intel-client.d.ts +0 -175
  482. package/dist/sdk/bc-code-intel-client.d.ts.map +0 -1
  483. package/dist/sdk/bc-code-intel-client.js +0 -380
  484. package/dist/sdk/bc-code-intel-client.js.map +0 -1
  485. package/dist/search/intelligent-search.d.ts +0 -97
  486. package/dist/search/intelligent-search.d.ts.map +0 -1
  487. package/dist/search/intelligent-search.js +0 -358
  488. package/dist/search/intelligent-search.js.map +0 -1
  489. package/dist/security/access-control.d.ts +0 -110
  490. package/dist/security/access-control.d.ts.map +0 -1
  491. package/dist/security/access-control.js +0 -353
  492. package/dist/security/access-control.js.map +0 -1
  493. package/dist/services/enhanced-prompt-service.d.ts.map +0 -1
  494. package/dist/services/enhanced-prompt-service.js.map +0 -1
  495. package/dist/services/roleplay-engine.d.ts +0 -161
  496. package/dist/services/roleplay-engine.d.ts.map +0 -1
  497. package/dist/services/roleplay-engine.js +0 -994
  498. package/dist/services/roleplay-engine.js.map +0 -1
  499. package/dist/setup/post-install.d.ts +0 -12
  500. package/dist/setup/post-install.d.ts.map +0 -1
  501. package/dist/setup/post-install.js +0 -81
  502. package/dist/setup/post-install.js.map +0 -1
  503. package/dist/streamlined-handlers.d.ts +0 -87
  504. package/dist/streamlined-handlers.d.ts.map +0 -1
  505. package/dist/streamlined-handlers.js +0 -685
  506. package/dist/streamlined-handlers.js.map +0 -1
  507. package/dist/test-enhanced-mcp-server.d.ts +0 -7
  508. package/dist/test-enhanced-mcp-server.d.ts.map +0 -1
  509. package/dist/test-enhanced-mcp-server.js +0 -177
  510. package/dist/test-enhanced-mcp-server.js.map +0 -1
  511. package/dist/tools/config-diagnostic-tools.d.ts +0 -234
  512. package/dist/tools/config-diagnostic-tools.d.ts.map +0 -1
  513. package/dist/tools/config-diagnostic-tools.js +0 -887
  514. package/dist/tools/config-diagnostic-tools.js.map +0 -1
  515. package/dist/tools/core-tools.d.ts +0 -26
  516. package/dist/tools/core-tools.d.ts.map +0 -1
  517. package/dist/tools/core-tools.js +0 -245
  518. package/dist/tools/core-tools.js.map +0 -1
  519. package/dist/tools/handoff-tools.d.ts +0 -37
  520. package/dist/tools/handoff-tools.d.ts.map +0 -1
  521. package/dist/tools/handoff-tools.js +0 -265
  522. package/dist/tools/handoff-tools.js.map +0 -1
  523. package/dist/tools/onboarding-tools.d.ts +0 -43
  524. package/dist/tools/onboarding-tools.d.ts.map +0 -1
  525. package/dist/tools/onboarding-tools.js +0 -353
  526. package/dist/tools/onboarding-tools.js.map +0 -1
  527. package/dist/tools/specialist-discovery-tools.d.ts +0 -27
  528. package/dist/tools/specialist-discovery-tools.d.ts.map +0 -1
  529. package/dist/tools/specialist-discovery-tools.js +0 -281
  530. package/dist/tools/specialist-discovery-tools.js.map +0 -1
  531. package/dist/tools/specialist-tools.d.ts +0 -43
  532. package/dist/tools/specialist-tools.d.ts.map +0 -1
  533. package/dist/tools/specialist-tools.js +0 -378
  534. package/dist/tools/specialist-tools.js.map +0 -1
  535. package/dist/tools/workspace-tools.d.ts.map +0 -1
  536. package/dist/tools/workspace-tools.js +0 -188
  537. package/dist/tools/workspace-tools.js.map +0 -1
  538. package/dist/types/roleplay-types.d.ts +0 -156
  539. package/dist/types/roleplay-types.d.ts.map +0 -1
  540. package/dist/types/roleplay-types.js +0 -8
  541. package/dist/types/roleplay-types.js.map +0 -1
  542. package/dist/utils/path-utils.d.ts +0 -5
  543. package/dist/utils/path-utils.d.ts.map +0 -1
  544. package/dist/utils/path-utils.js +0 -14
  545. package/dist/utils/path-utils.js.map +0 -1
  546. package/dist/workflows/domain-workflows.d.ts +0 -8
  547. package/dist/workflows/domain-workflows.d.ts.map +0 -1
  548. package/dist/workflows/domain-workflows.js +0 -360
  549. package/dist/workflows/domain-workflows.js.map +0 -1
  550. package/embedded-knowledge/methodologies/index.json +0 -81
  551. package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
  552. package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
  553. package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
  554. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
  555. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
  556. package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
  557. package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
  558. package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
  559. package/embedded-knowledge/methodologies/phases/performance.md +0 -211
  560. package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
  561. package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
  562. package/embedded-knowledge/methodologies/phases/verification.md +0 -146
  563. package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
  564. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
  565. package/embedded-knowledge/methodologies/workflows/proposal-review-workflow.md +0 -535
@@ -0,0 +1,286 @@
1
+ import simpleGit from 'simple-git';
2
+ import { join } from 'path';
3
+ export function createDiagnoseGitLayerHandler() {
4
+ return async function diagnoseGitLayer(args) {
5
+ const { git_url, auth_type, token_env_var, branch = 'main', test_type = 'full' } = args;
6
+ const diagnostics = {
7
+ timestamp: new Date().toISOString(),
8
+ url: git_url,
9
+ auth_type,
10
+ tests: []
11
+ };
12
+ // Test 1: URL Format Validation
13
+ if (test_type === 'connectivity' || test_type === 'full') {
14
+ const urlTest = validateGitUrl(git_url);
15
+ diagnostics.tests.push(urlTest);
16
+ }
17
+ // Test 2: Authentication Configuration
18
+ if (test_type === 'authentication' || test_type === 'full') {
19
+ const authTest = await testAuthConfiguration(git_url, auth_type, token_env_var);
20
+ diagnostics.tests.push(authTest);
21
+ }
22
+ // Test 3: Network Connectivity (if full test)
23
+ if (test_type === 'connectivity' || test_type === 'full') {
24
+ const connectivityTest = await testGitConnectivity(git_url, auth_type, token_env_var);
25
+ diagnostics.tests.push(connectivityTest);
26
+ }
27
+ // Test 4: Clone Test (if full or clone test)
28
+ if (test_type === 'clone' || test_type === 'full') {
29
+ const cloneTest = await testGitClone(git_url, auth_type, token_env_var, branch);
30
+ diagnostics.tests.push(cloneTest);
31
+ }
32
+ // Generate recommendations based on failures
33
+ const recommendations = generateRecommendations(diagnostics.tests, auth_type);
34
+ return {
35
+ content: [{
36
+ type: 'text',
37
+ text: JSON.stringify({
38
+ ...diagnostics,
39
+ summary: generateDiagnosticSummary(diagnostics.tests),
40
+ recommendations
41
+ }, null, 2)
42
+ }]
43
+ };
44
+ };
45
+ }
46
+ function validateGitUrl(url) {
47
+ const test = {
48
+ name: 'URL Format Validation',
49
+ passed: false,
50
+ details: {}
51
+ };
52
+ // Check URL format
53
+ try {
54
+ const urlObj = new URL(url);
55
+ test.details.protocol = urlObj.protocol;
56
+ test.details.hostname = urlObj.hostname;
57
+ test.details.pathname = urlObj.pathname;
58
+ // Azure DevOps specific validation
59
+ if (url.includes('dev.azure.com') || url.includes('visualstudio.com')) {
60
+ test.details.provider = 'Azure DevOps';
61
+ // Parse Azure DevOps URL components
62
+ const azureMatch = url.match(/dev\.azure\.com\/([^\/]+)\/([^\/]+)\/_git\/(.+?)(?:\.git)?$/);
63
+ if (azureMatch) {
64
+ test.details.organization = azureMatch[1];
65
+ test.details.project = azureMatch[2];
66
+ test.details.repository = azureMatch[3];
67
+ test.passed = true;
68
+ test.details.message = 'Valid Azure DevOps URL format';
69
+ }
70
+ else {
71
+ test.details.message = 'Invalid Azure DevOps URL format. Expected: https://dev.azure.com/{org}/{project}/_git/{repo}';
72
+ test.details.recommendation = 'Verify your Azure DevOps repository URL format';
73
+ }
74
+ }
75
+ else if (url.includes('github.com')) {
76
+ test.details.provider = 'GitHub';
77
+ test.passed = true;
78
+ }
79
+ else if (url.includes('gitlab.com')) {
80
+ test.details.provider = 'GitLab';
81
+ test.passed = true;
82
+ }
83
+ else {
84
+ test.details.provider = 'Unknown';
85
+ test.passed = true; // Generic git URL
86
+ }
87
+ }
88
+ catch (error) {
89
+ test.details.message = `Invalid URL: ${error instanceof Error ? error.message : String(error)}`;
90
+ test.details.recommendation = 'Provide a valid HTTP(S) or SSH URL';
91
+ }
92
+ return test;
93
+ }
94
+ async function testAuthConfiguration(url, authType, tokenEnvVar) {
95
+ const test = {
96
+ name: 'Authentication Configuration',
97
+ passed: false,
98
+ details: {}
99
+ };
100
+ test.details.auth_type = authType;
101
+ if (authType === 'token') {
102
+ if (!tokenEnvVar) {
103
+ test.details.message = 'Token environment variable not specified';
104
+ test.details.recommendation = 'Specify token_env_var parameter';
105
+ return test;
106
+ }
107
+ test.details.token_env_var = tokenEnvVar;
108
+ const tokenValue = process.env[tokenEnvVar];
109
+ if (!tokenValue) {
110
+ test.details.message = `Environment variable ${tokenEnvVar} not set or empty`;
111
+ test.details.recommendation = `Set ${tokenEnvVar} environment variable with your PAT`;
112
+ test.details.check_instructions = [
113
+ `Run: echo $env:${tokenEnvVar} (PowerShell) or echo $${tokenEnvVar} (Bash)`,
114
+ 'Verify the PAT is not expired',
115
+ 'Ensure the PAT has "Code (Read)" permission for Azure DevOps'
116
+ ];
117
+ return test;
118
+ }
119
+ test.details.token_length = tokenValue.length;
120
+ test.details.token_prefix = tokenValue.substring(0, 4) + '...';
121
+ // Azure DevOps PAT validation
122
+ if (url.includes('dev.azure.com')) {
123
+ // Azure DevOps PATs are typically 52 characters
124
+ if (tokenValue.length === 52) {
125
+ test.passed = true;
126
+ test.details.message = 'PAT format appears valid for Azure DevOps';
127
+ }
128
+ else {
129
+ test.details.message = `PAT length (${tokenValue.length}) unusual for Azure DevOps (expected 52 characters)`;
130
+ test.details.recommendation = 'Verify this is a valid Azure DevOps Personal Access Token';
131
+ }
132
+ }
133
+ else {
134
+ test.passed = true;
135
+ test.details.message = 'Token configuration present';
136
+ }
137
+ }
138
+ else if (authType === 'ssh') {
139
+ test.details.message = 'SSH authentication configured';
140
+ test.passed = true;
141
+ }
142
+ else {
143
+ test.details.message = `Unsupported auth type: ${authType}`;
144
+ test.details.recommendation = 'Use "token", "basic", or "ssh" for auth_type';
145
+ }
146
+ return test;
147
+ }
148
+ async function testGitConnectivity(url, authType, tokenEnvVar) {
149
+ const test = {
150
+ name: 'Git Connectivity Test',
151
+ passed: false,
152
+ details: {}
153
+ };
154
+ try {
155
+ const git = simpleGit();
156
+ // Prepare URL with auth for ls-remote test
157
+ let testUrl = url;
158
+ if (authType === 'token' && tokenEnvVar) {
159
+ const token = process.env[tokenEnvVar];
160
+ if (token && testUrl.startsWith('https://')) {
161
+ // For Azure DevOps, use empty username with PAT
162
+ testUrl = testUrl.replace('https://', `https://:${token}@`);
163
+ }
164
+ }
165
+ // Try ls-remote to test connectivity without cloning
166
+ const result = await git.listRemote(['--heads', testUrl]);
167
+ test.passed = true;
168
+ test.details.message = 'Successfully connected to repository';
169
+ test.details.branches_found = result.split('\n').filter(Boolean).length;
170
+ }
171
+ catch (error) {
172
+ test.details.message = 'Failed to connect to repository';
173
+ test.details.error = error.message;
174
+ // Parse common error scenarios
175
+ if (error.message.includes('Authentication failed') || error.message.includes('403')) {
176
+ test.details.issue = 'Authentication failure';
177
+ test.details.recommendation = 'Verify PAT is valid and has Code (Read) permission';
178
+ }
179
+ else if (error.message.includes('Could not resolve host')) {
180
+ test.details.issue = 'Network/DNS issue';
181
+ test.details.recommendation = 'Check network connection and URL hostname';
182
+ }
183
+ else if (error.message.includes('Repository not found') || error.message.includes('404')) {
184
+ test.details.issue = 'Repository not found';
185
+ test.details.recommendation = 'Verify repository URL and access permissions';
186
+ }
187
+ else {
188
+ test.details.issue = 'Unknown error';
189
+ test.details.recommendation = 'Check error message for details';
190
+ }
191
+ }
192
+ return test;
193
+ }
194
+ async function testGitClone(url, authType, tokenEnvVar, branch) {
195
+ const test = {
196
+ name: 'Git Clone Test',
197
+ passed: false,
198
+ details: {}
199
+ };
200
+ const tempDir = join(process.cwd(), '.bckb-diagnostic-temp', Date.now().toString());
201
+ try {
202
+ const git = simpleGit();
203
+ // Prepare URL with auth
204
+ let cloneUrl = url;
205
+ if (authType === 'token' && tokenEnvVar) {
206
+ const token = process.env[tokenEnvVar];
207
+ if (token && cloneUrl.startsWith('https://')) {
208
+ // For Azure DevOps, use empty username with PAT as password
209
+ cloneUrl = cloneUrl.replace('https://', `https://:${token}@`);
210
+ }
211
+ }
212
+ test.details.clone_url_format = cloneUrl.replace(/:([^@]+)@/, ':***@'); // Mask token in output
213
+ await git.clone(cloneUrl, tempDir, [
214
+ '--depth', '1',
215
+ '--single-branch',
216
+ '--branch', branch
217
+ ]);
218
+ test.passed = true;
219
+ test.details.message = `Successfully cloned repository (branch: ${branch})`;
220
+ test.details.temp_location = tempDir;
221
+ }
222
+ catch (error) {
223
+ test.details.message = 'Clone failed';
224
+ test.details.error = error.message;
225
+ // Detailed error analysis
226
+ if (error.message.includes('authentication failed') || error.message.includes('invalid credentials')) {
227
+ test.details.issue = 'Authentication failed during clone';
228
+ test.details.recommendation = [
229
+ 'Verify PAT is valid and not expired',
230
+ 'Ensure PAT has "Code (Read)" scope in Azure DevOps',
231
+ 'Check that the PAT belongs to a user with repository access',
232
+ 'Try regenerating the PAT in Azure DevOps'
233
+ ];
234
+ }
235
+ else if (error.message.includes(`Couldn't find remote ref ${branch}`)) {
236
+ test.details.issue = `Branch '${branch}' not found`;
237
+ test.details.recommendation = `Verify branch name - try 'main' or 'master'`;
238
+ }
239
+ else {
240
+ test.details.issue = 'Clone operation failed';
241
+ test.details.recommendation = 'Review error message for specific cause';
242
+ }
243
+ }
244
+ return test;
245
+ }
246
+ function generateDiagnosticSummary(tests) {
247
+ const passed = tests.filter(t => t.passed).length;
248
+ const failed = tests.filter(t => !t.passed).length;
249
+ return {
250
+ total_tests: tests.length,
251
+ passed,
252
+ failed,
253
+ overall_status: failed === 0 ? 'PASS' : 'FAIL',
254
+ failed_tests: tests.filter(t => !t.passed).map(t => t.name)
255
+ };
256
+ }
257
+ function generateRecommendations(tests, authType) {
258
+ const recommendations = [];
259
+ const failedTests = tests.filter(t => !t.passed);
260
+ if (failedTests.length === 0) {
261
+ return ['All tests passed! Git layer should work with this configuration.'];
262
+ }
263
+ // URL format issues
264
+ if (failedTests.some(t => t.name === 'URL Format Validation')) {
265
+ recommendations.push('Fix the repository URL format before proceeding');
266
+ }
267
+ // Auth configuration issues
268
+ if (failedTests.some(t => t.name === 'Authentication Configuration')) {
269
+ recommendations.push('Configure authentication properly (set environment variable with valid PAT)');
270
+ if (authType === 'token') {
271
+ recommendations.push('For Azure DevOps: Create a PAT with "Code (Read)" scope at https://dev.azure.com/{org}/_usersSettings/tokens');
272
+ }
273
+ }
274
+ // Connectivity issues
275
+ if (failedTests.some(t => t.name === 'Git Connectivity Test')) {
276
+ recommendations.push('Test network connectivity and verify repository URL');
277
+ recommendations.push('Ensure firewall/proxy allows git protocol access');
278
+ }
279
+ // Clone issues
280
+ if (failedTests.some(t => t.name === 'Git Clone Test')) {
281
+ recommendations.push('Review clone test error details for specific issue');
282
+ recommendations.push('Verify PAT permissions include repository access');
283
+ }
284
+ return recommendations;
285
+ }
286
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/tools/debug/diagnose_git_layer/handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Schema for diagnose_git_layer tool
3
+ */
4
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
5
+ export declare const diagnoseGitLayerTool: Tool;
6
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/tools/debug/diagnose_git_layer/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,eAAO,MAAM,oBAAoB,EAAE,IAiClC,CAAC"}
@@ -0,0 +1,35 @@
1
+ export const diagnoseGitLayerTool = {
2
+ name: 'diagnose_git_layer',
3
+ description: 'Diagnose git layer authentication and connectivity issues. Use this when git layers fail to load or Azure DevOps PAT authentication is not working.',
4
+ inputSchema: {
5
+ type: 'object',
6
+ properties: {
7
+ git_url: {
8
+ type: 'string',
9
+ description: 'Git repository URL to test (e.g., https://dev.azure.com/org/project/_git/repo)'
10
+ },
11
+ auth_type: {
12
+ type: 'string',
13
+ enum: ['token', 'basic', 'ssh'],
14
+ description: 'Authentication type being used'
15
+ },
16
+ token_env_var: {
17
+ type: 'string',
18
+ description: 'Environment variable name containing the PAT/token (if using token auth)'
19
+ },
20
+ branch: {
21
+ type: 'string',
22
+ description: 'Branch to test (defaults to main)',
23
+ default: 'main'
24
+ },
25
+ test_type: {
26
+ type: 'string',
27
+ enum: ['connectivity', 'authentication', 'clone', 'full'],
28
+ description: 'Type of diagnostic test to run',
29
+ default: 'full'
30
+ }
31
+ },
32
+ required: ['git_url', 'auth_type']
33
+ }
34
+ };
35
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/tools/debug/diagnose_git_layer/schema.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,qJAAqJ;IAClK,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gFAAgF;aAC9F;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;gBAC/B,WAAW,EAAE,gCAAgC;aAC9C;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0EAA0E;aACxF;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mCAAmC;gBAChD,OAAO,EAAE,MAAM;aAChB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC;gBACzD,WAAW,EAAE,gCAAgC;gBAC7C,OAAO,EAAE,MAAM;aAChB;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;KACnC;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Handler for diagnose_local_layer tool
3
+ */
4
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
5
+ export declare function createDiagnoseLocalLayerHandler(): (args: any) => Promise<CallToolResult>;
6
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/tools/debug/diagnose_local_layer/handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAKpE,wBAAgB,+BAA+B,KACJ,MAAM,GAAG,KAAG,OAAO,CAAC,cAAc,CAAC,CAyL7E"}
@@ -0,0 +1,285 @@
1
+ import { existsSync, accessSync, constants as fsConstants } from 'fs';
2
+ import { stat, readdir, readFile } from 'fs/promises';
3
+ import { join } from 'path';
4
+ export function createDiagnoseLocalLayerHandler() {
5
+ return async function diagnoseLocalLayer(args) {
6
+ const { layer_path = './bc-code-intel-overrides' } = args;
7
+ const diagnostics = {
8
+ timestamp: new Date().toISOString(),
9
+ layer_path,
10
+ tests: []
11
+ };
12
+ // Test 1: Path Existence
13
+ const pathTest = {
14
+ name: 'Path Existence Check',
15
+ passed: false,
16
+ details: {}
17
+ };
18
+ pathTest.details.absolute_path = join(process.cwd(), layer_path);
19
+ pathTest.details.exists = existsSync(pathTest.details.absolute_path);
20
+ if (pathTest.details.exists) {
21
+ pathTest.passed = true;
22
+ pathTest.details.message = 'Directory exists';
23
+ }
24
+ else {
25
+ pathTest.details.message = 'Directory does not exist';
26
+ pathTest.details.recommendation = `Create directory: mkdir ${layer_path}`;
27
+ }
28
+ diagnostics.tests.push(pathTest);
29
+ // Test 2: Permissions Check
30
+ if (pathTest.details.exists) {
31
+ const permTest = {
32
+ name: 'Path Permissions Check',
33
+ passed: false,
34
+ details: {}
35
+ };
36
+ try {
37
+ accessSync(pathTest.details.absolute_path, fsConstants.R_OK);
38
+ permTest.details.readable = true;
39
+ }
40
+ catch {
41
+ permTest.details.readable = false;
42
+ }
43
+ try {
44
+ accessSync(pathTest.details.absolute_path, fsConstants.W_OK);
45
+ permTest.details.writable = true;
46
+ }
47
+ catch {
48
+ permTest.details.writable = false;
49
+ }
50
+ if (permTest.details.readable) {
51
+ permTest.passed = true;
52
+ permTest.details.message = 'Directory is accessible';
53
+ }
54
+ else {
55
+ permTest.details.message = 'Directory is not readable';
56
+ permTest.details.recommendation = 'Check file permissions on the directory';
57
+ }
58
+ diagnostics.tests.push(permTest);
59
+ }
60
+ // Test 3: Content Discovery
61
+ if (pathTest.details.exists) {
62
+ const contentTest = {
63
+ name: 'Content Discovery',
64
+ passed: false,
65
+ details: {}
66
+ };
67
+ try {
68
+ const files = await readdir(pathTest.details.absolute_path);
69
+ contentTest.details.total_files = files.length;
70
+ // Check for markdown files
71
+ const mdFiles = files.filter(f => f.endsWith('.md'));
72
+ contentTest.details.markdown_files = mdFiles.length;
73
+ // Check for expected directories
74
+ const expectedDirs = ['domains', 'topics', 'overrides', 'specialists'];
75
+ const foundDirs = files.filter(f => expectedDirs.includes(f));
76
+ contentTest.details.expected_directories_found = foundDirs;
77
+ // Recursively count markdown files
78
+ let totalMdFiles = mdFiles.length;
79
+ for (const item of files) {
80
+ const itemPath = join(pathTest.details.absolute_path, item);
81
+ try {
82
+ const stats = await stat(itemPath);
83
+ if (stats.isDirectory()) {
84
+ const subFiles = await countMarkdownFiles(itemPath);
85
+ totalMdFiles += subFiles;
86
+ }
87
+ }
88
+ catch {
89
+ // Skip inaccessible items
90
+ }
91
+ }
92
+ contentTest.details.total_markdown_files = totalMdFiles;
93
+ if (totalMdFiles > 0) {
94
+ contentTest.passed = true;
95
+ contentTest.details.message = `Found ${totalMdFiles} markdown file(s)`;
96
+ }
97
+ else {
98
+ contentTest.details.message = 'No markdown files found';
99
+ contentTest.details.recommendation = 'Add .md files to the directory or subdirectories (domains/, topics/, overrides/)';
100
+ contentTest.details.example_structure = [
101
+ `${layer_path}/domains/performance/my-optimization.md`,
102
+ `${layer_path}/topics/company-specific-pattern.md`,
103
+ `${layer_path}/overrides/existing-topic-override.md`
104
+ ];
105
+ }
106
+ }
107
+ catch (error) {
108
+ contentTest.details.message = 'Failed to read directory contents';
109
+ contentTest.details.error = error.message;
110
+ }
111
+ diagnostics.tests.push(contentTest);
112
+ }
113
+ // Test 4: Markdown File Validation (sample)
114
+ if (pathTest.details.exists) {
115
+ const validationTest = {
116
+ name: 'Markdown File Validation',
117
+ passed: false,
118
+ details: {}
119
+ };
120
+ try {
121
+ const sampleMdFiles = await findSampleMarkdownFiles(pathTest.details.absolute_path, 3);
122
+ validationTest.details.files_checked = sampleMdFiles.length;
123
+ if (sampleMdFiles.length > 0) {
124
+ const validFiles = [];
125
+ const invalidFiles = [];
126
+ for (const file of sampleMdFiles) {
127
+ const isValid = await validateMarkdownFile(file);
128
+ if (isValid) {
129
+ validFiles.push(file);
130
+ }
131
+ else {
132
+ invalidFiles.push(file);
133
+ }
134
+ }
135
+ validationTest.details.valid_files = validFiles.length;
136
+ validationTest.details.invalid_files = invalidFiles.length;
137
+ if (validFiles.length > 0) {
138
+ validationTest.passed = true;
139
+ validationTest.details.message = `${validFiles.length} of ${sampleMdFiles.length} files have valid frontmatter`;
140
+ }
141
+ else {
142
+ validationTest.details.message = 'No valid markdown files with frontmatter found';
143
+ validationTest.details.recommendation = 'Ensure markdown files have YAML frontmatter with title, domain, etc.';
144
+ }
145
+ if (invalidFiles.length > 0) {
146
+ validationTest.details.invalid_file_examples = invalidFiles.slice(0, 2);
147
+ validationTest.details.issue = 'Some files missing or have invalid YAML frontmatter';
148
+ }
149
+ }
150
+ }
151
+ catch (error) {
152
+ validationTest.details.message = 'Failed to validate markdown files';
153
+ validationTest.details.error = error.message;
154
+ }
155
+ diagnostics.tests.push(validationTest);
156
+ }
157
+ // Generate recommendations
158
+ const recommendations = generateLocalLayerRecommendations(diagnostics.tests);
159
+ return {
160
+ content: [{
161
+ type: 'text',
162
+ text: JSON.stringify({
163
+ ...diagnostics,
164
+ summary: generateDiagnosticSummary(diagnostics.tests),
165
+ recommendations
166
+ }, null, 2)
167
+ }]
168
+ };
169
+ };
170
+ }
171
+ async function countMarkdownFiles(dir) {
172
+ let count = 0;
173
+ try {
174
+ const files = await readdir(dir);
175
+ for (const file of files) {
176
+ const filePath = join(dir, file);
177
+ try {
178
+ const stats = await stat(filePath);
179
+ if (stats.isDirectory()) {
180
+ count += await countMarkdownFiles(filePath);
181
+ }
182
+ else if (file.endsWith('.md')) {
183
+ count++;
184
+ }
185
+ }
186
+ catch {
187
+ // Skip inaccessible files
188
+ }
189
+ }
190
+ }
191
+ catch {
192
+ // Skip inaccessible directories
193
+ }
194
+ return count;
195
+ }
196
+ async function findSampleMarkdownFiles(dir, limit) {
197
+ const files = [];
198
+ const findInDir = async (currentDir) => {
199
+ if (files.length >= limit)
200
+ return;
201
+ try {
202
+ const items = await readdir(currentDir);
203
+ for (const item of items) {
204
+ if (files.length >= limit)
205
+ break;
206
+ const itemPath = join(currentDir, item);
207
+ try {
208
+ const stats = await stat(itemPath);
209
+ if (stats.isDirectory()) {
210
+ await findInDir(itemPath);
211
+ }
212
+ else if (item.endsWith('.md')) {
213
+ files.push(itemPath);
214
+ }
215
+ }
216
+ catch {
217
+ // Skip inaccessible items
218
+ }
219
+ }
220
+ }
221
+ catch {
222
+ // Skip inaccessible directories
223
+ }
224
+ };
225
+ await findInDir(dir);
226
+ return files;
227
+ }
228
+ async function validateMarkdownFile(filePath) {
229
+ try {
230
+ const content = await readFile(filePath, 'utf-8');
231
+ // Check for YAML frontmatter
232
+ const frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
233
+ if (!frontmatterMatch) {
234
+ return false;
235
+ }
236
+ // Basic validation - has some required fields
237
+ const frontmatter = frontmatterMatch[1];
238
+ return frontmatter.includes('title:') || frontmatter.includes('domain:');
239
+ }
240
+ catch {
241
+ return false;
242
+ }
243
+ }
244
+ function generateDiagnosticSummary(tests) {
245
+ const passed = tests.filter(t => t.passed).length;
246
+ const failed = tests.filter(t => !t.passed).length;
247
+ return {
248
+ total_tests: tests.length,
249
+ passed,
250
+ failed,
251
+ overall_status: failed === 0 ? 'PASS' : 'FAIL',
252
+ failed_tests: tests.filter(t => !t.passed).map(t => t.name)
253
+ };
254
+ }
255
+ function generateLocalLayerRecommendations(tests) {
256
+ const recommendations = [];
257
+ const failedTests = tests.filter(t => !t.passed);
258
+ if (failedTests.length === 0) {
259
+ return ['All local layer checks passed! Layer should be loading correctly.'];
260
+ }
261
+ // Path doesn't exist
262
+ if (failedTests.some(t => t.name === 'Path Existence Check')) {
263
+ recommendations.push('Create the local layer directory before adding content');
264
+ recommendations.push('Use: mkdir -p ./bc-code-intel-overrides/domains');
265
+ }
266
+ // Permission issues
267
+ if (failedTests.some(t => t.name === 'Path Permissions Check')) {
268
+ recommendations.push('Fix directory permissions to allow read access');
269
+ recommendations.push('Check ownership and group permissions');
270
+ }
271
+ // No content
272
+ if (failedTests.some(t => t.name === 'Content Discovery')) {
273
+ recommendations.push('Add markdown files with BC knowledge to the directory');
274
+ recommendations.push('Organize in subdirectories: domains/, topics/, or overrides/');
275
+ recommendations.push('Each .md file should have YAML frontmatter with title, domain, tags, etc.');
276
+ }
277
+ // Invalid files
278
+ if (failedTests.some(t => t.name === 'Markdown File Validation')) {
279
+ recommendations.push('Ensure markdown files have proper YAML frontmatter (---...---)');
280
+ recommendations.push('Required frontmatter fields: title, domain');
281
+ recommendations.push('See embedded knowledge files for examples');
282
+ }
283
+ return recommendations;
284
+ }
285
+ //# sourceMappingURL=handler.js.map