d365fo-mcp 1.0.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 (1055) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +205 -0
  3. package/dist/bridge/bridgeAdapter.d.ts +319 -0
  4. package/dist/bridge/bridgeAdapter.d.ts.map +1 -0
  5. package/dist/bridge/bridgeAdapter.js +2003 -0
  6. package/dist/bridge/bridgeAdapter.js.map +1 -0
  7. package/dist/bridge/bridgeClient.d.ts +255 -0
  8. package/dist/bridge/bridgeClient.d.ts.map +1 -0
  9. package/dist/bridge/bridgeClient.js +741 -0
  10. package/dist/bridge/bridgeClient.js.map +1 -0
  11. package/dist/bridge/bridgeTypes.d.ts +561 -0
  12. package/dist/bridge/bridgeTypes.d.ts.map +1 -0
  13. package/dist/bridge/bridgeTypes.js +6 -0
  14. package/dist/bridge/bridgeTypes.js.map +1 -0
  15. package/dist/bridge/debouncedRefresh.d.ts +16 -0
  16. package/dist/bridge/debouncedRefresh.d.ts.map +1 -0
  17. package/dist/bridge/debouncedRefresh.js +77 -0
  18. package/dist/bridge/debouncedRefresh.js.map +1 -0
  19. package/dist/bridge/index.d.ts +21 -0
  20. package/dist/bridge/index.d.ts.map +1 -0
  21. package/dist/bridge/index.js +20 -0
  22. package/dist/bridge/index.js.map +1 -0
  23. package/dist/cli/commands/config.d.ts +8 -0
  24. package/dist/cli/commands/config.d.ts.map +1 -0
  25. package/dist/cli/commands/config.js +77 -0
  26. package/dist/cli/commands/config.js.map +1 -0
  27. package/dist/cli/commands/doctor.d.ts +2 -0
  28. package/dist/cli/commands/doctor.d.ts.map +1 -0
  29. package/dist/cli/commands/doctor.js +177 -0
  30. package/dist/cli/commands/doctor.js.map +1 -0
  31. package/dist/cli/commands/indexCmd.d.ts +8 -0
  32. package/dist/cli/commands/indexCmd.d.ts.map +1 -0
  33. package/dist/cli/commands/indexCmd.js +78 -0
  34. package/dist/cli/commands/indexCmd.js.map +1 -0
  35. package/dist/cli/commands/instance.d.ts +4 -0
  36. package/dist/cli/commands/instance.d.ts.map +1 -0
  37. package/dist/cli/commands/instance.js +183 -0
  38. package/dist/cli/commands/instance.js.map +1 -0
  39. package/dist/cli/commands/setup.d.ts +4 -0
  40. package/dist/cli/commands/setup.d.ts.map +1 -0
  41. package/dist/cli/commands/setup.js +246 -0
  42. package/dist/cli/commands/setup.js.map +1 -0
  43. package/dist/cli/commands/start.d.ts +2 -0
  44. package/dist/cli/commands/start.d.ts.map +1 -0
  45. package/dist/cli/commands/start.js +49 -0
  46. package/dist/cli/commands/start.js.map +1 -0
  47. package/dist/cli/commands/update.d.ts +4 -0
  48. package/dist/cli/commands/update.d.ts.map +1 -0
  49. package/dist/cli/commands/update.js +55 -0
  50. package/dist/cli/commands/update.js.map +1 -0
  51. package/dist/cli/context.d.ts +26 -0
  52. package/dist/cli/context.d.ts.map +1 -0
  53. package/dist/cli/context.js +38 -0
  54. package/dist/cli/context.js.map +1 -0
  55. package/dist/cli/envFile.d.ts +23 -0
  56. package/dist/cli/envFile.d.ts.map +1 -0
  57. package/dist/cli/envFile.js +79 -0
  58. package/dist/cli/envFile.js.map +1 -0
  59. package/dist/cli/exec.d.ts +13 -0
  60. package/dist/cli/exec.d.ts.map +1 -0
  61. package/dist/cli/exec.js +47 -0
  62. package/dist/cli/exec.js.map +1 -0
  63. package/dist/cli/index.d.ts +3 -0
  64. package/dist/cli/index.d.ts.map +1 -0
  65. package/dist/cli/index.js +122 -0
  66. package/dist/cli/index.js.map +1 -0
  67. package/dist/cli/instances.d.ts +19 -0
  68. package/dist/cli/instances.d.ts.map +1 -0
  69. package/dist/cli/instances.js +60 -0
  70. package/dist/cli/instances.js.map +1 -0
  71. package/dist/cli/mcpJson.d.ts +15 -0
  72. package/dist/cli/mcpJson.d.ts.map +1 -0
  73. package/dist/cli/mcpJson.js +44 -0
  74. package/dist/cli/mcpJson.js.map +1 -0
  75. package/dist/cli/settingsPrompt.d.ts +20 -0
  76. package/dist/cli/settingsPrompt.d.ts.map +1 -0
  77. package/dist/cli/settingsPrompt.js +150 -0
  78. package/dist/cli/settingsPrompt.js.map +1 -0
  79. package/dist/cli/settingsStore.d.ts +47 -0
  80. package/dist/cli/settingsStore.d.ts.map +1 -0
  81. package/dist/cli/settingsStore.js +144 -0
  82. package/dist/cli/settingsStore.js.map +1 -0
  83. package/dist/cli/target.d.ts +23 -0
  84. package/dist/cli/target.d.ts.map +1 -0
  85. package/dist/cli/target.js +62 -0
  86. package/dist/cli/target.js.map +1 -0
  87. package/dist/cli/ui.d.ts +26 -0
  88. package/dist/cli/ui.d.ts.map +1 -0
  89. package/dist/cli/ui.js +48 -0
  90. package/dist/cli/ui.js.map +1 -0
  91. package/dist/cli/xppConfig.d.ts +35 -0
  92. package/dist/cli/xppConfig.d.ts.map +1 -0
  93. package/dist/cli/xppConfig.js +97 -0
  94. package/dist/cli/xppConfig.js.map +1 -0
  95. package/dist/config/configFile.d.ts +50 -0
  96. package/dist/config/configFile.d.ts.map +1 -0
  97. package/dist/config/configFile.js +152 -0
  98. package/dist/config/configFile.js.map +1 -0
  99. package/dist/config/settings.d.ts +58 -0
  100. package/dist/config/settings.d.ts.map +1 -0
  101. package/dist/config/settings.js +641 -0
  102. package/dist/config/settings.js.map +1 -0
  103. package/dist/database/download.d.ts +27 -0
  104. package/dist/database/download.d.ts.map +1 -0
  105. package/dist/database/download.js +241 -0
  106. package/dist/database/download.js.map +1 -0
  107. package/dist/eval/audit/knowledgeAudit.d.ts +66 -0
  108. package/dist/eval/audit/knowledgeAudit.d.ts.map +1 -0
  109. package/dist/eval/audit/knowledgeAudit.js +117 -0
  110. package/dist/eval/audit/knowledgeAudit.js.map +1 -0
  111. package/dist/eval/audit/knowledgeAuditCli.d.ts +17 -0
  112. package/dist/eval/audit/knowledgeAuditCli.d.ts.map +1 -0
  113. package/dist/eval/audit/knowledgeAuditCli.js +83 -0
  114. package/dist/eval/audit/knowledgeAuditCli.js.map +1 -0
  115. package/dist/eval/audit/knowledgeRefs.d.ts +37 -0
  116. package/dist/eval/audit/knowledgeRefs.d.ts.map +1 -0
  117. package/dist/eval/audit/knowledgeRefs.js +150 -0
  118. package/dist/eval/audit/knowledgeRefs.js.map +1 -0
  119. package/dist/eval/audit/symbolLookup.d.ts +23 -0
  120. package/dist/eval/audit/symbolLookup.d.ts.map +1 -0
  121. package/dist/eval/audit/symbolLookup.js +80 -0
  122. package/dist/eval/audit/symbolLookup.js.map +1 -0
  123. package/dist/eval/coverage/coverage.d.ts +65 -0
  124. package/dist/eval/coverage/coverage.d.ts.map +1 -0
  125. package/dist/eval/coverage/coverage.js +136 -0
  126. package/dist/eval/coverage/coverage.js.map +1 -0
  127. package/dist/eval/coverage/coverageCli.d.ts +13 -0
  128. package/dist/eval/coverage/coverageCli.d.ts.map +1 -0
  129. package/dist/eval/coverage/coverageCli.js +106 -0
  130. package/dist/eval/coverage/coverageCli.js.map +1 -0
  131. package/dist/eval/coverage/sources.d.ts +17 -0
  132. package/dist/eval/coverage/sources.d.ts.map +1 -0
  133. package/dist/eval/coverage/sources.js +40 -0
  134. package/dist/eval/coverage/sources.js.map +1 -0
  135. package/dist/eval/coverage/taxonomy.d.ts +59 -0
  136. package/dist/eval/coverage/taxonomy.d.ts.map +1 -0
  137. package/dist/eval/coverage/taxonomy.js +400 -0
  138. package/dist/eval/coverage/taxonomy.js.map +1 -0
  139. package/dist/eval/improver/caseMining.d.ts +55 -0
  140. package/dist/eval/improver/caseMining.d.ts.map +1 -0
  141. package/dist/eval/improver/caseMining.js +64 -0
  142. package/dist/eval/improver/caseMining.js.map +1 -0
  143. package/dist/eval/improver/caseMiningCli.d.ts +10 -0
  144. package/dist/eval/improver/caseMiningCli.d.ts.map +1 -0
  145. package/dist/eval/improver/caseMiningCli.js +50 -0
  146. package/dist/eval/improver/caseMiningCli.js.map +1 -0
  147. package/dist/eval/improver/cli.d.ts +11 -0
  148. package/dist/eval/improver/cli.d.ts.map +1 -0
  149. package/dist/eval/improver/cli.js +73 -0
  150. package/dist/eval/improver/cli.js.map +1 -0
  151. package/dist/eval/improver/cluster.d.ts +47 -0
  152. package/dist/eval/improver/cluster.d.ts.map +1 -0
  153. package/dist/eval/improver/cluster.js +0 -0
  154. package/dist/eval/improver/cluster.js.map +1 -0
  155. package/dist/eval/improver/corpusIO.d.ts +26 -0
  156. package/dist/eval/improver/corpusIO.d.ts.map +1 -0
  157. package/dist/eval/improver/corpusIO.js +50 -0
  158. package/dist/eval/improver/corpusIO.js.map +1 -0
  159. package/dist/eval/improver/fixBrief.d.ts +34 -0
  160. package/dist/eval/improver/fixBrief.d.ts.map +1 -0
  161. package/dist/eval/improver/fixBrief.js +69 -0
  162. package/dist/eval/improver/fixBrief.js.map +1 -0
  163. package/dist/eval/improver/fixBriefCli.d.ts +11 -0
  164. package/dist/eval/improver/fixBriefCli.d.ts.map +1 -0
  165. package/dist/eval/improver/fixBriefCli.js +46 -0
  166. package/dist/eval/improver/fixBriefCli.js.map +1 -0
  167. package/dist/eval/improver/flakeDetection.d.ts +50 -0
  168. package/dist/eval/improver/flakeDetection.d.ts.map +1 -0
  169. package/dist/eval/improver/flakeDetection.js +0 -0
  170. package/dist/eval/improver/flakeDetection.js.map +1 -0
  171. package/dist/eval/improver/flakeDetectionCli.d.ts +8 -0
  172. package/dist/eval/improver/flakeDetectionCli.d.ts.map +1 -0
  173. package/dist/eval/improver/flakeDetectionCli.js +27 -0
  174. package/dist/eval/improver/flakeDetectionCli.js.map +1 -0
  175. package/dist/eval/improver/heldout.d.ts +44 -0
  176. package/dist/eval/improver/heldout.d.ts.map +1 -0
  177. package/dist/eval/improver/heldout.js +52 -0
  178. package/dist/eval/improver/heldout.js.map +1 -0
  179. package/dist/eval/improver/knowledgeFeedback.d.ts +56 -0
  180. package/dist/eval/improver/knowledgeFeedback.d.ts.map +1 -0
  181. package/dist/eval/improver/knowledgeFeedback.js +88 -0
  182. package/dist/eval/improver/knowledgeFeedback.js.map +1 -0
  183. package/dist/eval/improver/knowledgeFeedbackCli.d.ts +8 -0
  184. package/dist/eval/improver/knowledgeFeedbackCli.d.ts.map +1 -0
  185. package/dist/eval/improver/knowledgeFeedbackCli.js +28 -0
  186. package/dist/eval/improver/knowledgeFeedbackCli.js.map +1 -0
  187. package/dist/eval/improver/report.d.ts +36 -0
  188. package/dist/eval/improver/report.d.ts.map +1 -0
  189. package/dist/eval/improver/report.js +61 -0
  190. package/dist/eval/improver/report.js.map +1 -0
  191. package/dist/eval/improver/reportCli.d.ts +7 -0
  192. package/dist/eval/improver/reportCli.d.ts.map +1 -0
  193. package/dist/eval/improver/reportCli.js +27 -0
  194. package/dist/eval/improver/reportCli.js.map +1 -0
  195. package/dist/eval/oracle/actualArtifactResolution.d.ts +49 -0
  196. package/dist/eval/oracle/actualArtifactResolution.d.ts.map +1 -0
  197. package/dist/eval/oracle/actualArtifactResolution.js +73 -0
  198. package/dist/eval/oracle/actualArtifactResolution.js.map +1 -0
  199. package/dist/eval/oracle/cli.d.ts +30 -0
  200. package/dist/eval/oracle/cli.d.ts.map +1 -0
  201. package/dist/eval/oracle/cli.js +179 -0
  202. package/dist/eval/oracle/cli.js.map +1 -0
  203. package/dist/eval/oracle/diff.d.ts +26 -0
  204. package/dist/eval/oracle/diff.d.ts.map +1 -0
  205. package/dist/eval/oracle/diff.js +51 -0
  206. package/dist/eval/oracle/diff.js.map +1 -0
  207. package/dist/eval/oracle/index.d.ts +81 -0
  208. package/dist/eval/oracle/index.d.ts.map +1 -0
  209. package/dist/eval/oracle/index.js +55 -0
  210. package/dist/eval/oracle/index.js.map +1 -0
  211. package/dist/eval/oracle/normalize.d.ts +85 -0
  212. package/dist/eval/oracle/normalize.d.ts.map +1 -0
  213. package/dist/eval/oracle/normalize.js +321 -0
  214. package/dist/eval/oracle/normalize.js.map +1 -0
  215. package/dist/eval/oracle/score.d.ts +26 -0
  216. package/dist/eval/oracle/score.d.ts.map +1 -0
  217. package/dist/eval/oracle/score.js +15 -0
  218. package/dist/eval/oracle/score.js.map +1 -0
  219. package/dist/eval/oracle/systest.d.ts +30 -0
  220. package/dist/eval/oracle/systest.d.ts.map +1 -0
  221. package/dist/eval/oracle/systest.js +98 -0
  222. package/dist/eval/oracle/systest.js.map +1 -0
  223. package/dist/index.d.ts +6 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +753 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/knowledge/formPatterns/catalog/subPatterns/customFilters.d.ts +10 -0
  228. package/dist/knowledge/formPatterns/catalog/subPatterns/customFilters.d.ts.map +1 -0
  229. package/dist/knowledge/formPatterns/catalog/subPatterns/customFilters.js +38 -0
  230. package/dist/knowledge/formPatterns/catalog/subPatterns/customFilters.js.map +1 -0
  231. package/dist/knowledge/formPatterns/catalog/subPatterns/fields.d.ts +21 -0
  232. package/dist/knowledge/formPatterns/catalog/subPatterns/fields.d.ts.map +1 -0
  233. package/dist/knowledge/formPatterns/catalog/subPatterns/fields.js +168 -0
  234. package/dist/knowledge/formPatterns/catalog/subPatterns/fields.js.map +1 -0
  235. package/dist/knowledge/formPatterns/catalog/subPatterns/panels.d.ts +9 -0
  236. package/dist/knowledge/formPatterns/catalog/subPatterns/panels.d.ts.map +1 -0
  237. package/dist/knowledge/formPatterns/catalog/subPatterns/panels.js +47 -0
  238. package/dist/knowledge/formPatterns/catalog/subPatterns/panels.js.map +1 -0
  239. package/dist/knowledge/formPatterns/catalog/subPatterns/toolbar.d.ts +16 -0
  240. package/dist/knowledge/formPatterns/catalog/subPatterns/toolbar.d.ts.map +1 -0
  241. package/dist/knowledge/formPatterns/catalog/subPatterns/toolbar.js +124 -0
  242. package/dist/knowledge/formPatterns/catalog/subPatterns/toolbar.js.map +1 -0
  243. package/dist/knowledge/formPatterns/catalog/subPatterns/workspaceSections.d.ts +12 -0
  244. package/dist/knowledge/formPatterns/catalog/subPatterns/workspaceSections.d.ts.map +1 -0
  245. package/dist/knowledge/formPatterns/catalog/subPatterns/workspaceSections.js +36 -0
  246. package/dist/knowledge/formPatterns/catalog/subPatterns/workspaceSections.js.map +1 -0
  247. package/dist/knowledge/formPatterns/catalog/topLevel/common.d.ts +11 -0
  248. package/dist/knowledge/formPatterns/catalog/topLevel/common.d.ts.map +1 -0
  249. package/dist/knowledge/formPatterns/catalog/topLevel/common.js +37 -0
  250. package/dist/knowledge/formPatterns/catalog/topLevel/common.js.map +1 -0
  251. package/dist/knowledge/formPatterns/catalog/topLevel/detailsMaster.d.ts +8 -0
  252. package/dist/knowledge/formPatterns/catalog/topLevel/detailsMaster.d.ts.map +1 -0
  253. package/dist/knowledge/formPatterns/catalog/topLevel/detailsMaster.js +86 -0
  254. package/dist/knowledge/formPatterns/catalog/topLevel/detailsMaster.js.map +1 -0
  255. package/dist/knowledge/formPatterns/catalog/topLevel/detailsTransaction.d.ts +7 -0
  256. package/dist/knowledge/formPatterns/catalog/topLevel/detailsTransaction.d.ts.map +1 -0
  257. package/dist/knowledge/formPatterns/catalog/topLevel/detailsTransaction.js +69 -0
  258. package/dist/knowledge/formPatterns/catalog/topLevel/detailsTransaction.js.map +1 -0
  259. package/dist/knowledge/formPatterns/catalog/topLevel/dialog.d.ts +14 -0
  260. package/dist/knowledge/formPatterns/catalog/topLevel/dialog.d.ts.map +1 -0
  261. package/dist/knowledge/formPatterns/catalog/topLevel/dialog.js +187 -0
  262. package/dist/knowledge/formPatterns/catalog/topLevel/dialog.js.map +1 -0
  263. package/dist/knowledge/formPatterns/catalog/topLevel/factBox.d.ts +10 -0
  264. package/dist/knowledge/formPatterns/catalog/topLevel/factBox.d.ts.map +1 -0
  265. package/dist/knowledge/formPatterns/catalog/topLevel/factBox.js +54 -0
  266. package/dist/knowledge/formPatterns/catalog/topLevel/factBox.js.map +1 -0
  267. package/dist/knowledge/formPatterns/catalog/topLevel/listPage.d.ts +7 -0
  268. package/dist/knowledge/formPatterns/catalog/topLevel/listPage.d.ts.map +1 -0
  269. package/dist/knowledge/formPatterns/catalog/topLevel/listPage.js +33 -0
  270. package/dist/knowledge/formPatterns/catalog/topLevel/listPage.js.map +1 -0
  271. package/dist/knowledge/formPatterns/catalog/topLevel/lookup.d.ts +10 -0
  272. package/dist/knowledge/formPatterns/catalog/topLevel/lookup.d.ts.map +1 -0
  273. package/dist/knowledge/formPatterns/catalog/topLevel/lookup.js +95 -0
  274. package/dist/knowledge/formPatterns/catalog/topLevel/lookup.js.map +1 -0
  275. package/dist/knowledge/formPatterns/catalog/topLevel/simpleDetails.d.ts +16 -0
  276. package/dist/knowledge/formPatterns/catalog/topLevel/simpleDetails.d.ts.map +1 -0
  277. package/dist/knowledge/formPatterns/catalog/topLevel/simpleDetails.js +158 -0
  278. package/dist/knowledge/formPatterns/catalog/topLevel/simpleDetails.js.map +1 -0
  279. package/dist/knowledge/formPatterns/catalog/topLevel/simpleList.d.ts +7 -0
  280. package/dist/knowledge/formPatterns/catalog/topLevel/simpleList.d.ts.map +1 -0
  281. package/dist/knowledge/formPatterns/catalog/topLevel/simpleList.js +34 -0
  282. package/dist/knowledge/formPatterns/catalog/topLevel/simpleList.js.map +1 -0
  283. package/dist/knowledge/formPatterns/catalog/topLevel/simpleListDetails.d.ts +9 -0
  284. package/dist/knowledge/formPatterns/catalog/topLevel/simpleListDetails.d.ts.map +1 -0
  285. package/dist/knowledge/formPatterns/catalog/topLevel/simpleListDetails.js +99 -0
  286. package/dist/knowledge/formPatterns/catalog/topLevel/simpleListDetails.js.map +1 -0
  287. package/dist/knowledge/formPatterns/catalog/topLevel/tableOfContents.d.ts +8 -0
  288. package/dist/knowledge/formPatterns/catalog/topLevel/tableOfContents.d.ts.map +1 -0
  289. package/dist/knowledge/formPatterns/catalog/topLevel/tableOfContents.js +95 -0
  290. package/dist/knowledge/formPatterns/catalog/topLevel/tableOfContents.js.map +1 -0
  291. package/dist/knowledge/formPatterns/catalog/topLevel/task.d.ts +9 -0
  292. package/dist/knowledge/formPatterns/catalog/topLevel/task.d.ts.map +1 -0
  293. package/dist/knowledge/formPatterns/catalog/topLevel/task.js +42 -0
  294. package/dist/knowledge/formPatterns/catalog/topLevel/task.js.map +1 -0
  295. package/dist/knowledge/formPatterns/catalog/topLevel/wizard.d.ts +7 -0
  296. package/dist/knowledge/formPatterns/catalog/topLevel/wizard.d.ts.map +1 -0
  297. package/dist/knowledge/formPatterns/catalog/topLevel/wizard.js +42 -0
  298. package/dist/knowledge/formPatterns/catalog/topLevel/wizard.js.map +1 -0
  299. package/dist/knowledge/formPatterns/catalog/topLevel/workspace.d.ts +17 -0
  300. package/dist/knowledge/formPatterns/catalog/topLevel/workspace.d.ts.map +1 -0
  301. package/dist/knowledge/formPatterns/catalog/topLevel/workspace.js +157 -0
  302. package/dist/knowledge/formPatterns/catalog/topLevel/workspace.js.map +1 -0
  303. package/dist/knowledge/formPatterns/crossCheck.d.ts +44 -0
  304. package/dist/knowledge/formPatterns/crossCheck.d.ts.map +1 -0
  305. package/dist/knowledge/formPatterns/crossCheck.js +109 -0
  306. package/dist/knowledge/formPatterns/crossCheck.js.map +1 -0
  307. package/dist/knowledge/formPatterns/index.d.ts +30 -0
  308. package/dist/knowledge/formPatterns/index.d.ts.map +1 -0
  309. package/dist/knowledge/formPatterns/index.js +158 -0
  310. package/dist/knowledge/formPatterns/index.js.map +1 -0
  311. package/dist/knowledge/formPatterns/methodStubs.d.ts +45 -0
  312. package/dist/knowledge/formPatterns/methodStubs.d.ts.map +1 -0
  313. package/dist/knowledge/formPatterns/methodStubs.js +257 -0
  314. package/dist/knowledge/formPatterns/methodStubs.js.map +1 -0
  315. package/dist/knowledge/formPatterns/types.d.ts +115 -0
  316. package/dist/knowledge/formPatterns/types.d.ts.map +1 -0
  317. package/dist/knowledge/formPatterns/types.js +44 -0
  318. package/dist/knowledge/formPatterns/types.js.map +1 -0
  319. package/dist/metadata/enhancedParser.d.ts +91 -0
  320. package/dist/metadata/enhancedParser.d.ts.map +1 -0
  321. package/dist/metadata/enhancedParser.js +379 -0
  322. package/dist/metadata/enhancedParser.js.map +1 -0
  323. package/dist/metadata/formPatternMiner.d.ts +78 -0
  324. package/dist/metadata/formPatternMiner.d.ts.map +1 -0
  325. package/dist/metadata/formPatternMiner.js +220 -0
  326. package/dist/metadata/formPatternMiner.js.map +1 -0
  327. package/dist/metadata/labelParser.d.ts +71 -0
  328. package/dist/metadata/labelParser.d.ts.map +1 -0
  329. package/dist/metadata/labelParser.js +258 -0
  330. package/dist/metadata/labelParser.js.map +1 -0
  331. package/dist/metadata/symbolCountsWorker.d.ts +16 -0
  332. package/dist/metadata/symbolCountsWorker.d.ts.map +1 -0
  333. package/dist/metadata/symbolCountsWorker.js +42 -0
  334. package/dist/metadata/symbolCountsWorker.js.map +1 -0
  335. package/dist/metadata/symbolIndex.d.ts +474 -0
  336. package/dist/metadata/symbolIndex.d.ts.map +1 -0
  337. package/dist/metadata/symbolIndex.js +3152 -0
  338. package/dist/metadata/symbolIndex.js.map +1 -0
  339. package/dist/metadata/types.d.ts +267 -0
  340. package/dist/metadata/types.d.ts.map +1 -0
  341. package/dist/metadata/types.js +5 -0
  342. package/dist/metadata/types.js.map +1 -0
  343. package/dist/metadata/xmlParser.d.ts +232 -0
  344. package/dist/metadata/xmlParser.d.ts.map +1 -0
  345. package/dist/metadata/xmlParser.js +1021 -0
  346. package/dist/metadata/xmlParser.js.map +1 -0
  347. package/dist/metadata/xppDeclaration.d.ts +116 -0
  348. package/dist/metadata/xppDeclaration.d.ts.map +1 -0
  349. package/dist/metadata/xppDeclaration.js +350 -0
  350. package/dist/metadata/xppDeclaration.js.map +1 -0
  351. package/dist/middleware/apiKeyAuth.d.ts +7 -0
  352. package/dist/middleware/apiKeyAuth.d.ts.map +1 -0
  353. package/dist/middleware/apiKeyAuth.js +70 -0
  354. package/dist/middleware/apiKeyAuth.js.map +1 -0
  355. package/dist/middleware/rateLimiter.d.ts +7 -0
  356. package/dist/middleware/rateLimiter.d.ts.map +1 -0
  357. package/dist/middleware/rateLimiter.js +78 -0
  358. package/dist/middleware/rateLimiter.js.map +1 -0
  359. package/dist/prompts/codeReview.d.ts +8 -0
  360. package/dist/prompts/codeReview.d.ts.map +1 -0
  361. package/dist/prompts/codeReview.js +619 -0
  362. package/dist/prompts/codeReview.js.map +1 -0
  363. package/dist/prompts/index.d.ts +6 -0
  364. package/dist/prompts/index.d.ts.map +1 -0
  365. package/dist/prompts/index.js +6 -0
  366. package/dist/prompts/index.js.map +1 -0
  367. package/dist/prompts/systemInstructions.d.ts +33 -0
  368. package/dist/prompts/systemInstructions.d.ts.map +1 -0
  369. package/dist/prompts/systemInstructions.js +154 -0
  370. package/dist/prompts/systemInstructions.js.map +1 -0
  371. package/dist/resources/classResource.d.ts +17 -0
  372. package/dist/resources/classResource.d.ts.map +1 -0
  373. package/dist/resources/classResource.js +33 -0
  374. package/dist/resources/classResource.js.map +1 -0
  375. package/dist/resources/index.d.ts +20 -0
  376. package/dist/resources/index.d.ts.map +1 -0
  377. package/dist/resources/index.js +154 -0
  378. package/dist/resources/index.js.map +1 -0
  379. package/dist/server/mcpServer.d.ts +11 -0
  380. package/dist/server/mcpServer.d.ts.map +1 -0
  381. package/dist/server/mcpServer.js +185 -0
  382. package/dist/server/mcpServer.js.map +1 -0
  383. package/dist/server/serverMode.d.ts +53 -0
  384. package/dist/server/serverMode.d.ts.map +1 -0
  385. package/dist/server/serverMode.js +72 -0
  386. package/dist/server/serverMode.js.map +1 -0
  387. package/dist/server/toolAnnotations.d.ts +28 -0
  388. package/dist/server/toolAnnotations.d.ts.map +1 -0
  389. package/dist/server/toolAnnotations.js +70 -0
  390. package/dist/server/toolAnnotations.js.map +1 -0
  391. package/dist/server/toolSchemas/analyzeCode.d.ts +71 -0
  392. package/dist/server/toolSchemas/analyzeCode.d.ts.map +1 -0
  393. package/dist/server/toolSchemas/analyzeCode.js +50 -0
  394. package/dist/server/toolSchemas/analyzeCode.js.map +1 -0
  395. package/dist/server/toolSchemas/batchGetInfo.d.ts +32 -0
  396. package/dist/server/toolSchemas/batchGetInfo.d.ts.map +1 -0
  397. package/dist/server/toolSchemas/batchGetInfo.js +35 -0
  398. package/dist/server/toolSchemas/batchGetInfo.js.map +1 -0
  399. package/dist/server/toolSchemas/buildD365foProject.d.ts +44 -0
  400. package/dist/server/toolSchemas/buildD365foProject.d.ts.map +1 -0
  401. package/dist/server/toolSchemas/buildD365foProject.js +47 -0
  402. package/dist/server/toolSchemas/buildD365foProject.js.map +1 -0
  403. package/dist/server/toolSchemas/d365foFile.d.ts +99 -0
  404. package/dist/server/toolSchemas/d365foFile.d.ts.map +1 -0
  405. package/dist/server/toolSchemas/d365foFile.js +163 -0
  406. package/dist/server/toolSchemas/d365foFile.js.map +1 -0
  407. package/dist/server/toolSchemas/extensionInfo.d.ts +65 -0
  408. package/dist/server/toolSchemas/extensionInfo.d.ts.map +1 -0
  409. package/dist/server/toolSchemas/extensionInfo.js +73 -0
  410. package/dist/server/toolSchemas/extensionInfo.js.map +1 -0
  411. package/dist/server/toolSchemas/findReferences.d.ts +35 -0
  412. package/dist/server/toolSchemas/findReferences.d.ts.map +1 -0
  413. package/dist/server/toolSchemas/findReferences.js +35 -0
  414. package/dist/server/toolSchemas/findReferences.js.map +1 -0
  415. package/dist/server/toolSchemas/generateObject.d.ts +246 -0
  416. package/dist/server/toolSchemas/generateObject.d.ts.map +1 -0
  417. package/dist/server/toolSchemas/generateObject.js +158 -0
  418. package/dist/server/toolSchemas/generateObject.js.map +1 -0
  419. package/dist/server/toolSchemas/getKnowledge.d.ts +39 -0
  420. package/dist/server/toolSchemas/getKnowledge.d.ts.map +1 -0
  421. package/dist/server/toolSchemas/getKnowledge.js +46 -0
  422. package/dist/server/toolSchemas/getKnowledge.js.map +1 -0
  423. package/dist/server/toolSchemas/getMethod.d.ts +30 -0
  424. package/dist/server/toolSchemas/getMethod.d.ts.map +1 -0
  425. package/dist/server/toolSchemas/getMethod.js +34 -0
  426. package/dist/server/toolSchemas/getMethod.js.map +1 -0
  427. package/dist/server/toolSchemas/getObjectInfo.d.ts +24 -0
  428. package/dist/server/toolSchemas/getObjectInfo.d.ts.map +1 -0
  429. package/dist/server/toolSchemas/getObjectInfo.js +30 -0
  430. package/dist/server/toolSchemas/getObjectInfo.js.map +1 -0
  431. package/dist/server/toolSchemas/getWorkspaceInfo.d.ts +29 -0
  432. package/dist/server/toolSchemas/getWorkspaceInfo.d.ts.map +1 -0
  433. package/dist/server/toolSchemas/getWorkspaceInfo.js +29 -0
  434. package/dist/server/toolSchemas/getWorkspaceInfo.js.map +1 -0
  435. package/dist/server/toolSchemas/index.d.ts +1142 -0
  436. package/dist/server/toolSchemas/index.d.ts.map +1 -0
  437. package/dist/server/toolSchemas/index.js +60 -0
  438. package/dist/server/toolSchemas/index.js.map +1 -0
  439. package/dist/server/toolSchemas/labels.d.ts +172 -0
  440. package/dist/server/toolSchemas/labels.d.ts.map +1 -0
  441. package/dist/server/toolSchemas/labels.js +159 -0
  442. package/dist/server/toolSchemas/labels.js.map +1 -0
  443. package/dist/server/toolSchemas/objectPatterns.d.ts +93 -0
  444. package/dist/server/toolSchemas/objectPatterns.d.ts.map +1 -0
  445. package/dist/server/toolSchemas/objectPatterns.js +104 -0
  446. package/dist/server/toolSchemas/objectPatterns.js.map +1 -0
  447. package/dist/server/toolSchemas/prepare.d.ts +49 -0
  448. package/dist/server/toolSchemas/prepare.d.ts.map +1 -0
  449. package/dist/server/toolSchemas/prepare.js +57 -0
  450. package/dist/server/toolSchemas/prepare.js.map +1 -0
  451. package/dist/server/toolSchemas/reviewWorkspaceChanges.d.ts +20 -0
  452. package/dist/server/toolSchemas/reviewWorkspaceChanges.d.ts.map +1 -0
  453. package/dist/server/toolSchemas/reviewWorkspaceChanges.js +19 -0
  454. package/dist/server/toolSchemas/reviewWorkspaceChanges.js.map +1 -0
  455. package/dist/server/toolSchemas/runBpCheck.d.ts +36 -0
  456. package/dist/server/toolSchemas/runBpCheck.d.ts.map +1 -0
  457. package/dist/server/toolSchemas/runBpCheck.js +21 -0
  458. package/dist/server/toolSchemas/runBpCheck.js.map +1 -0
  459. package/dist/server/toolSchemas/runSystestClass.d.ts +32 -0
  460. package/dist/server/toolSchemas/runSystestClass.d.ts.map +1 -0
  461. package/dist/server/toolSchemas/runSystestClass.js +20 -0
  462. package/dist/server/toolSchemas/runSystestClass.js.map +1 -0
  463. package/dist/server/toolSchemas/search.d.ts +109 -0
  464. package/dist/server/toolSchemas/search.d.ts.map +1 -0
  465. package/dist/server/toolSchemas/search.js +123 -0
  466. package/dist/server/toolSchemas/search.js.map +1 -0
  467. package/dist/server/toolSchemas/securityInfo.d.ts +45 -0
  468. package/dist/server/toolSchemas/securityInfo.d.ts.map +1 -0
  469. package/dist/server/toolSchemas/securityInfo.js +39 -0
  470. package/dist/server/toolSchemas/securityInfo.js.map +1 -0
  471. package/dist/server/toolSchemas/suggestEdt.d.ts +29 -0
  472. package/dist/server/toolSchemas/suggestEdt.d.ts.map +1 -0
  473. package/dist/server/toolSchemas/suggestEdt.js +29 -0
  474. package/dist/server/toolSchemas/suggestEdt.js.map +1 -0
  475. package/dist/server/toolSchemas/triggerDbSync.d.ts +47 -0
  476. package/dist/server/toolSchemas/triggerDbSync.d.ts.map +1 -0
  477. package/dist/server/toolSchemas/triggerDbSync.js +31 -0
  478. package/dist/server/toolSchemas/triggerDbSync.js.map +1 -0
  479. package/dist/server/toolSchemas/undoLastModification.d.ts +20 -0
  480. package/dist/server/toolSchemas/undoLastModification.d.ts.map +1 -0
  481. package/dist/server/toolSchemas/undoLastModification.js +17 -0
  482. package/dist/server/toolSchemas/undoLastModification.js.map +1 -0
  483. package/dist/server/toolSchemas/updateSymbolIndex.d.ts +19 -0
  484. package/dist/server/toolSchemas/updateSymbolIndex.d.ts.map +1 -0
  485. package/dist/server/toolSchemas/updateSymbolIndex.js +18 -0
  486. package/dist/server/toolSchemas/updateSymbolIndex.js.map +1 -0
  487. package/dist/server/toolSchemas/validateCode.d.ts +35 -0
  488. package/dist/server/toolSchemas/validateCode.d.ts.map +1 -0
  489. package/dist/server/toolSchemas/validateCode.js +38 -0
  490. package/dist/server/toolSchemas/validateCode.js.map +1 -0
  491. package/dist/server/toolSchemas/validateObjectNaming.d.ts +33 -0
  492. package/dist/server/toolSchemas/validateObjectNaming.d.ts.map +1 -0
  493. package/dist/server/toolSchemas/validateObjectNaming.js +32 -0
  494. package/dist/server/toolSchemas/validateObjectNaming.js.map +1 -0
  495. package/dist/server/toolSchemas/verifyD365foProject.d.ts +50 -0
  496. package/dist/server/toolSchemas/verifyD365foProject.d.ts.map +1 -0
  497. package/dist/server/toolSchemas/verifyD365foProject.js +46 -0
  498. package/dist/server/toolSchemas/verifyD365foProject.js.map +1 -0
  499. package/dist/server/transport.d.ts +30 -0
  500. package/dist/server/transport.d.ts.map +1 -0
  501. package/dist/server/transport.js +391 -0
  502. package/dist/server/transport.js.map +1 -0
  503. package/dist/tools/analyzeCode.d.ts +17 -0
  504. package/dist/tools/analyzeCode.d.ts.map +1 -0
  505. package/dist/tools/analyzeCode.js +63 -0
  506. package/dist/tools/analyzeCode.js.map +1 -0
  507. package/dist/tools/analyzeCompleteness.d.ts +20 -0
  508. package/dist/tools/analyzeCompleteness.d.ts.map +1 -0
  509. package/dist/tools/analyzeCompleteness.js +103 -0
  510. package/dist/tools/analyzeCompleteness.js.map +1 -0
  511. package/dist/tools/analyzeExtensionPoints.d.ts +21 -0
  512. package/dist/tools/analyzeExtensionPoints.d.ts.map +1 -0
  513. package/dist/tools/analyzeExtensionPoints.js +343 -0
  514. package/dist/tools/analyzeExtensionPoints.js.map +1 -0
  515. package/dist/tools/analyzePatterns.d.ts +20 -0
  516. package/dist/tools/analyzePatterns.d.ts.map +1 -0
  517. package/dist/tools/analyzePatterns.js +71 -0
  518. package/dist/tools/analyzePatterns.js.map +1 -0
  519. package/dist/tools/apiUsagePatterns.d.ts +20 -0
  520. package/dist/tools/apiUsagePatterns.d.ts.map +1 -0
  521. package/dist/tools/apiUsagePatterns.js +136 -0
  522. package/dist/tools/apiUsagePatterns.js.map +1 -0
  523. package/dist/tools/batchGetInfo.d.ts +50 -0
  524. package/dist/tools/batchGetInfo.d.ts.map +1 -0
  525. package/dist/tools/batchGetInfo.js +52 -0
  526. package/dist/tools/batchGetInfo.js.map +1 -0
  527. package/dist/tools/batchSearch.d.ts +64 -0
  528. package/dist/tools/batchSearch.d.ts.map +1 -0
  529. package/dist/tools/batchSearch.js +265 -0
  530. package/dist/tools/batchSearch.js.map +1 -0
  531. package/dist/tools/buildProject.d.ts +28 -0
  532. package/dist/tools/buildProject.d.ts.map +1 -0
  533. package/dist/tools/buildProject.js +929 -0
  534. package/dist/tools/buildProject.js.map +1 -0
  535. package/dist/tools/classInfo.d.ts +8 -0
  536. package/dist/tools/classInfo.d.ts.map +1 -0
  537. package/dist/tools/classInfo.js +235 -0
  538. package/dist/tools/classInfo.js.map +1 -0
  539. package/dist/tools/codeGen.d.ts +19 -0
  540. package/dist/tools/codeGen.d.ts.map +1 -0
  541. package/dist/tools/codeGen.js +1956 -0
  542. package/dist/tools/codeGen.js.map +1 -0
  543. package/dist/tools/completion.d.ts +8 -0
  544. package/dist/tools/completion.d.ts.map +1 -0
  545. package/dist/tools/completion.js +272 -0
  546. package/dist/tools/completion.js.map +1 -0
  547. package/dist/tools/configKeyInfo.d.ts +22 -0
  548. package/dist/tools/configKeyInfo.d.ts.map +1 -0
  549. package/dist/tools/configKeyInfo.js +74 -0
  550. package/dist/tools/configKeyInfo.js.map +1 -0
  551. package/dist/tools/createD365File.d.ts +479 -0
  552. package/dist/tools/createD365File.d.ts.map +1 -0
  553. package/dist/tools/createD365File.js +4185 -0
  554. package/dist/tools/createD365File.js.map +1 -0
  555. package/dist/tools/createLabel.d.ts +51 -0
  556. package/dist/tools/createLabel.d.ts.map +1 -0
  557. package/dist/tools/createLabel.js +761 -0
  558. package/dist/tools/createLabel.js.map +1 -0
  559. package/dist/tools/d365foErrorHelp.d.ts +29 -0
  560. package/dist/tools/d365foErrorHelp.d.ts.map +1 -0
  561. package/dist/tools/d365foErrorHelp.js +389 -0
  562. package/dist/tools/d365foErrorHelp.js.map +1 -0
  563. package/dist/tools/d365foFile.d.ts +20 -0
  564. package/dist/tools/d365foFile.d.ts.map +1 -0
  565. package/dist/tools/d365foFile.js +58 -0
  566. package/dist/tools/d365foFile.js.map +1 -0
  567. package/dist/tools/d365foFileOpSpecs.d.ts +41 -0
  568. package/dist/tools/d365foFileOpSpecs.d.ts.map +1 -0
  569. package/dist/tools/d365foFileOpSpecs.js +336 -0
  570. package/dist/tools/d365foFileOpSpecs.js.map +1 -0
  571. package/dist/tools/dataEntityInfo.d.ts +23 -0
  572. package/dist/tools/dataEntityInfo.d.ts.map +1 -0
  573. package/dist/tools/dataEntityInfo.js +45 -0
  574. package/dist/tools/dataEntityInfo.js.map +1 -0
  575. package/dist/tools/dataEntityXml.d.ts +31 -0
  576. package/dist/tools/dataEntityXml.d.ts.map +1 -0
  577. package/dist/tools/dataEntityXml.js +131 -0
  578. package/dist/tools/dataEntityXml.js.map +1 -0
  579. package/dist/tools/dbSync.d.ts +8 -0
  580. package/dist/tools/dbSync.d.ts.map +1 -0
  581. package/dist/tools/dbSync.js +285 -0
  582. package/dist/tools/dbSync.js.map +1 -0
  583. package/dist/tools/edtInfo.d.ts +23 -0
  584. package/dist/tools/edtInfo.d.ts.map +1 -0
  585. package/dist/tools/edtInfo.js +122 -0
  586. package/dist/tools/edtInfo.js.map +1 -0
  587. package/dist/tools/enumInfo.d.ts +17 -0
  588. package/dist/tools/enumInfo.d.ts.map +1 -0
  589. package/dist/tools/enumInfo.js +44 -0
  590. package/dist/tools/enumInfo.js.map +1 -0
  591. package/dist/tools/extensionInfo.d.ts +26 -0
  592. package/dist/tools/extensionInfo.d.ts.map +1 -0
  593. package/dist/tools/extensionInfo.js +73 -0
  594. package/dist/tools/extensionInfo.js.map +1 -0
  595. package/dist/tools/extensionSearch.d.ts +20 -0
  596. package/dist/tools/extensionSearch.d.ts.map +1 -0
  597. package/dist/tools/extensionSearch.js +72 -0
  598. package/dist/tools/extensionSearch.js.map +1 -0
  599. package/dist/tools/extensionStrategyAdvisor.d.ts +15 -0
  600. package/dist/tools/extensionStrategyAdvisor.d.ts.map +1 -0
  601. package/dist/tools/extensionStrategyAdvisor.js +519 -0
  602. package/dist/tools/extensionStrategyAdvisor.js.map +1 -0
  603. package/dist/tools/findCocExtensions.d.ts +20 -0
  604. package/dist/tools/findCocExtensions.d.ts.map +1 -0
  605. package/dist/tools/findCocExtensions.js +285 -0
  606. package/dist/tools/findCocExtensions.js.map +1 -0
  607. package/dist/tools/findEventHandlers.d.ts +21 -0
  608. package/dist/tools/findEventHandlers.d.ts.map +1 -0
  609. package/dist/tools/findEventHandlers.js +196 -0
  610. package/dist/tools/findEventHandlers.js.map +1 -0
  611. package/dist/tools/findReferences.d.ts +30 -0
  612. package/dist/tools/findReferences.d.ts.map +1 -0
  613. package/dist/tools/findReferences.js +551 -0
  614. package/dist/tools/findReferences.js.map +1 -0
  615. package/dist/tools/formInfo.d.ts +13 -0
  616. package/dist/tools/formInfo.d.ts.map +1 -0
  617. package/dist/tools/formInfo.js +407 -0
  618. package/dist/tools/formInfo.js.map +1 -0
  619. package/dist/tools/formPattern.d.ts +19 -0
  620. package/dist/tools/formPattern.d.ts.map +1 -0
  621. package/dist/tools/formPattern.js +52 -0
  622. package/dist/tools/formPattern.js.map +1 -0
  623. package/dist/tools/generateD365Xml.d.ts +12 -0
  624. package/dist/tools/generateD365Xml.d.ts.map +1 -0
  625. package/dist/tools/generateD365Xml.js +1454 -0
  626. package/dist/tools/generateD365Xml.js.map +1 -0
  627. package/dist/tools/generateFindMethods.d.ts +69 -0
  628. package/dist/tools/generateFindMethods.d.ts.map +1 -0
  629. package/dist/tools/generateFindMethods.js +207 -0
  630. package/dist/tools/generateFindMethods.js.map +1 -0
  631. package/dist/tools/generateMetadata.d.ts +37 -0
  632. package/dist/tools/generateMetadata.d.ts.map +1 -0
  633. package/dist/tools/generateMetadata.js +213 -0
  634. package/dist/tools/generateMetadata.js.map +1 -0
  635. package/dist/tools/generateObject.d.ts +34 -0
  636. package/dist/tools/generateObject.d.ts.map +1 -0
  637. package/dist/tools/generateObject.js +47 -0
  638. package/dist/tools/generateObject.js.map +1 -0
  639. package/dist/tools/generateRelationXpp.d.ts +45 -0
  640. package/dist/tools/generateRelationXpp.d.ts.map +1 -0
  641. package/dist/tools/generateRelationXpp.js +129 -0
  642. package/dist/tools/generateRelationXpp.js.map +1 -0
  643. package/dist/tools/generateSmart.d.ts +32 -0
  644. package/dist/tools/generateSmart.d.ts.map +1 -0
  645. package/dist/tools/generateSmart.js +52 -0
  646. package/dist/tools/generateSmart.js.map +1 -0
  647. package/dist/tools/generateSmartForm.d.ts +82 -0
  648. package/dist/tools/generateSmartForm.d.ts.map +1 -0
  649. package/dist/tools/generateSmartForm.js +996 -0
  650. package/dist/tools/generateSmartForm.js.map +1 -0
  651. package/dist/tools/generateSmartReport.d.ts +90 -0
  652. package/dist/tools/generateSmartReport.d.ts.map +1 -0
  653. package/dist/tools/generateSmartReport.js +1254 -0
  654. package/dist/tools/generateSmartReport.js.map +1 -0
  655. package/dist/tools/generateSmartTable.d.ts +138 -0
  656. package/dist/tools/generateSmartTable.d.ts.map +1 -0
  657. package/dist/tools/generateSmartTable.js +1305 -0
  658. package/dist/tools/generateSmartTable.js.map +1 -0
  659. package/dist/tools/generateTableFields.d.ts +48 -0
  660. package/dist/tools/generateTableFields.d.ts.map +1 -0
  661. package/dist/tools/generateTableFields.js +186 -0
  662. package/dist/tools/generateTableFields.js.map +1 -0
  663. package/dist/tools/generateTableRelation.d.ts +35 -0
  664. package/dist/tools/generateTableRelation.d.ts.map +1 -0
  665. package/dist/tools/generateTableRelation.js +161 -0
  666. package/dist/tools/generateTableRelation.js.map +1 -0
  667. package/dist/tools/getFormPatternSpec.d.ts +13 -0
  668. package/dist/tools/getFormPatternSpec.d.ts.map +1 -0
  669. package/dist/tools/getFormPatternSpec.js +290 -0
  670. package/dist/tools/getFormPatternSpec.js.map +1 -0
  671. package/dist/tools/getFormPatterns.d.ts +68 -0
  672. package/dist/tools/getFormPatterns.d.ts.map +1 -0
  673. package/dist/tools/getFormPatterns.js +471 -0
  674. package/dist/tools/getFormPatterns.js.map +1 -0
  675. package/dist/tools/getKnowledge.d.ts +27 -0
  676. package/dist/tools/getKnowledge.d.ts.map +1 -0
  677. package/dist/tools/getKnowledge.js +50 -0
  678. package/dist/tools/getKnowledge.js.map +1 -0
  679. package/dist/tools/getLabelInfo.d.ts +21 -0
  680. package/dist/tools/getLabelInfo.d.ts.map +1 -0
  681. package/dist/tools/getLabelInfo.js +138 -0
  682. package/dist/tools/getLabelInfo.js.map +1 -0
  683. package/dist/tools/getMethod.d.ts +19 -0
  684. package/dist/tools/getMethod.d.ts.map +1 -0
  685. package/dist/tools/getMethod.js +77 -0
  686. package/dist/tools/getMethod.js.map +1 -0
  687. package/dist/tools/getMethodSource.d.ts +17 -0
  688. package/dist/tools/getMethodSource.d.ts.map +1 -0
  689. package/dist/tools/getMethodSource.js +161 -0
  690. package/dist/tools/getMethodSource.js.map +1 -0
  691. package/dist/tools/getObjectInfo.d.ts +17 -0
  692. package/dist/tools/getObjectInfo.d.ts.map +1 -0
  693. package/dist/tools/getObjectInfo.js +88 -0
  694. package/dist/tools/getObjectInfo.js.map +1 -0
  695. package/dist/tools/getTablePatterns.d.ts +45 -0
  696. package/dist/tools/getTablePatterns.d.ts.map +1 -0
  697. package/dist/tools/getTablePatterns.js +235 -0
  698. package/dist/tools/getTablePatterns.js.map +1 -0
  699. package/dist/tools/index.d.ts +11 -0
  700. package/dist/tools/index.d.ts.map +1 -0
  701. package/dist/tools/index.js +11 -0
  702. package/dist/tools/index.js.map +1 -0
  703. package/dist/tools/labels.d.ts +25 -0
  704. package/dist/tools/labels.d.ts.map +1 -0
  705. package/dist/tools/labels.js +111 -0
  706. package/dist/tools/labels.js.map +1 -0
  707. package/dist/tools/macroInfo.d.ts +23 -0
  708. package/dist/tools/macroInfo.d.ts.map +1 -0
  709. package/dist/tools/macroInfo.js +62 -0
  710. package/dist/tools/macroInfo.js.map +1 -0
  711. package/dist/tools/mapInfo.d.ts +21 -0
  712. package/dist/tools/mapInfo.d.ts.map +1 -0
  713. package/dist/tools/mapInfo.js +54 -0
  714. package/dist/tools/mapInfo.js.map +1 -0
  715. package/dist/tools/mapXml.d.ts +26 -0
  716. package/dist/tools/mapXml.d.ts.map +1 -0
  717. package/dist/tools/mapXml.js +88 -0
  718. package/dist/tools/mapXml.js.map +1 -0
  719. package/dist/tools/menuItemInfo.d.ts +20 -0
  720. package/dist/tools/menuItemInfo.d.ts.map +1 -0
  721. package/dist/tools/menuItemInfo.js +185 -0
  722. package/dist/tools/menuItemInfo.js.map +1 -0
  723. package/dist/tools/methodSignature.d.ts +33 -0
  724. package/dist/tools/methodSignature.d.ts.map +1 -0
  725. package/dist/tools/methodSignature.js +348 -0
  726. package/dist/tools/methodSignature.js.map +1 -0
  727. package/dist/tools/modifyD365File.d.ts +130 -0
  728. package/dist/tools/modifyD365File.d.ts.map +1 -0
  729. package/dist/tools/modifyD365File.js +2179 -0
  730. package/dist/tools/modifyD365File.js.map +1 -0
  731. package/dist/tools/objectInfoRegistry.d.ts +36 -0
  732. package/dist/tools/objectInfoRegistry.d.ts.map +1 -0
  733. package/dist/tools/objectInfoRegistry.js +98 -0
  734. package/dist/tools/objectInfoRegistry.js.map +1 -0
  735. package/dist/tools/objectPatterns.d.ts +16 -0
  736. package/dist/tools/objectPatterns.d.ts.map +1 -0
  737. package/dist/tools/objectPatterns.js +84 -0
  738. package/dist/tools/objectPatterns.js.map +1 -0
  739. package/dist/tools/prepare.d.ts +18 -0
  740. package/dist/tools/prepare.d.ts.map +1 -0
  741. package/dist/tools/prepare.js +47 -0
  742. package/dist/tools/prepare.js.map +1 -0
  743. package/dist/tools/prepareChange.d.ts +43 -0
  744. package/dist/tools/prepareChange.d.ts.map +1 -0
  745. package/dist/tools/prepareChange.js +327 -0
  746. package/dist/tools/prepareChange.js.map +1 -0
  747. package/dist/tools/prepareCreate.d.ts +45 -0
  748. package/dist/tools/prepareCreate.d.ts.map +1 -0
  749. package/dist/tools/prepareCreate.js +263 -0
  750. package/dist/tools/prepareCreate.js.map +1 -0
  751. package/dist/tools/queryInfo.d.ts +17 -0
  752. package/dist/tools/queryInfo.d.ts.map +1 -0
  753. package/dist/tools/queryInfo.js +46 -0
  754. package/dist/tools/queryInfo.js.map +1 -0
  755. package/dist/tools/queryViewXml.d.ts +36 -0
  756. package/dist/tools/queryViewXml.d.ts.map +1 -0
  757. package/dist/tools/queryViewXml.js +129 -0
  758. package/dist/tools/queryViewXml.js.map +1 -0
  759. package/dist/tools/renameLabel.d.ts +29 -0
  760. package/dist/tools/renameLabel.d.ts.map +1 -0
  761. package/dist/tools/renameLabel.js +377 -0
  762. package/dist/tools/renameLabel.js.map +1 -0
  763. package/dist/tools/repairFormControls.d.ts +21 -0
  764. package/dist/tools/repairFormControls.d.ts.map +1 -0
  765. package/dist/tools/repairFormControls.js +151 -0
  766. package/dist/tools/repairFormControls.js.map +1 -0
  767. package/dist/tools/reportInfo.d.ts +14 -0
  768. package/dist/tools/reportInfo.d.ts.map +1 -0
  769. package/dist/tools/reportInfo.js +302 -0
  770. package/dist/tools/reportInfo.js.map +1 -0
  771. package/dist/tools/resolveReferences.d.ts +89 -0
  772. package/dist/tools/resolveReferences.d.ts.map +1 -0
  773. package/dist/tools/resolveReferences.js +791 -0
  774. package/dist/tools/resolveReferences.js.map +1 -0
  775. package/dist/tools/reviewWorkspaceChanges.d.ts +14 -0
  776. package/dist/tools/reviewWorkspaceChanges.d.ts.map +1 -0
  777. package/dist/tools/reviewWorkspaceChanges.js +73 -0
  778. package/dist/tools/reviewWorkspaceChanges.js.map +1 -0
  779. package/dist/tools/runBpCheck.d.ts +14 -0
  780. package/dist/tools/runBpCheck.d.ts.map +1 -0
  781. package/dist/tools/runBpCheck.js +241 -0
  782. package/dist/tools/runBpCheck.js.map +1 -0
  783. package/dist/tools/search.d.ts +20 -0
  784. package/dist/tools/search.d.ts.map +1 -0
  785. package/dist/tools/search.js +246 -0
  786. package/dist/tools/search.js.map +1 -0
  787. package/dist/tools/searchLabels.d.ts +26 -0
  788. package/dist/tools/searchLabels.d.ts.map +1 -0
  789. package/dist/tools/searchLabels.js +91 -0
  790. package/dist/tools/searchLabels.js.map +1 -0
  791. package/dist/tools/searchUnified.d.ts +28 -0
  792. package/dist/tools/searchUnified.d.ts.map +1 -0
  793. package/dist/tools/searchUnified.js +48 -0
  794. package/dist/tools/searchUnified.js.map +1 -0
  795. package/dist/tools/securityArtifactInfo.d.ts +14 -0
  796. package/dist/tools/securityArtifactInfo.d.ts.map +1 -0
  797. package/dist/tools/securityArtifactInfo.js +192 -0
  798. package/dist/tools/securityArtifactInfo.js.map +1 -0
  799. package/dist/tools/securityCoverageInfo.d.ts +21 -0
  800. package/dist/tools/securityCoverageInfo.d.ts.map +1 -0
  801. package/dist/tools/securityCoverageInfo.js +248 -0
  802. package/dist/tools/securityCoverageInfo.js.map +1 -0
  803. package/dist/tools/securityInfo.d.ts +22 -0
  804. package/dist/tools/securityInfo.d.ts.map +1 -0
  805. package/dist/tools/securityInfo.js +43 -0
  806. package/dist/tools/securityInfo.js.map +1 -0
  807. package/dist/tools/securityPolicyInfo.d.ts +22 -0
  808. package/dist/tools/securityPolicyInfo.d.ts.map +1 -0
  809. package/dist/tools/securityPolicyInfo.js +49 -0
  810. package/dist/tools/securityPolicyInfo.js.map +1 -0
  811. package/dist/tools/securityPrivilegeXml.d.ts +21 -0
  812. package/dist/tools/securityPrivilegeXml.d.ts.map +1 -0
  813. package/dist/tools/securityPrivilegeXml.js +61 -0
  814. package/dist/tools/securityPrivilegeXml.js.map +1 -0
  815. package/dist/tools/serviceInfo.d.ts +25 -0
  816. package/dist/tools/serviceInfo.d.ts.map +1 -0
  817. package/dist/tools/serviceInfo.js +93 -0
  818. package/dist/tools/serviceInfo.js.map +1 -0
  819. package/dist/tools/suggestEdt.d.ts +15 -0
  820. package/dist/tools/suggestEdt.d.ts.map +1 -0
  821. package/dist/tools/suggestEdt.js +348 -0
  822. package/dist/tools/suggestEdt.js.map +1 -0
  823. package/dist/tools/suggestImplementation.d.ts +20 -0
  824. package/dist/tools/suggestImplementation.d.ts.map +1 -0
  825. package/dist/tools/suggestImplementation.js +144 -0
  826. package/dist/tools/suggestImplementation.js.map +1 -0
  827. package/dist/tools/sysTestRunner.d.ts +14 -0
  828. package/dist/tools/sysTestRunner.d.ts.map +1 -0
  829. package/dist/tools/sysTestRunner.js +145 -0
  830. package/dist/tools/sysTestRunner.js.map +1 -0
  831. package/dist/tools/tableExtensionInfo.d.ts +91 -0
  832. package/dist/tools/tableExtensionInfo.d.ts.map +1 -0
  833. package/dist/tools/tableExtensionInfo.js +305 -0
  834. package/dist/tools/tableExtensionInfo.js.map +1 -0
  835. package/dist/tools/tableInfo.d.ts +23 -0
  836. package/dist/tools/tableInfo.d.ts.map +1 -0
  837. package/dist/tools/tableInfo.js +125 -0
  838. package/dist/tools/tableInfo.js.map +1 -0
  839. package/dist/tools/toolHandler.d.ts +4 -0
  840. package/dist/tools/toolHandler.d.ts.map +1 -0
  841. package/dist/tools/toolHandler.js +508 -0
  842. package/dist/tools/toolHandler.js.map +1 -0
  843. package/dist/tools/undoLastModification.d.ts +15 -0
  844. package/dist/tools/undoLastModification.d.ts.map +1 -0
  845. package/dist/tools/undoLastModification.js +147 -0
  846. package/dist/tools/undoLastModification.js.map +1 -0
  847. package/dist/tools/updateSymbolIndex.d.ts +15 -0
  848. package/dist/tools/updateSymbolIndex.d.ts.map +1 -0
  849. package/dist/tools/updateSymbolIndex.js +520 -0
  850. package/dist/tools/updateSymbolIndex.js.map +1 -0
  851. package/dist/tools/validateCode.d.ts +24 -0
  852. package/dist/tools/validateCode.d.ts.map +1 -0
  853. package/dist/tools/validateCode.js +201 -0
  854. package/dist/tools/validateCode.js.map +1 -0
  855. package/dist/tools/validateFormPattern.d.ts +51 -0
  856. package/dist/tools/validateFormPattern.d.ts.map +1 -0
  857. package/dist/tools/validateFormPattern.js +201 -0
  858. package/dist/tools/validateFormPattern.js.map +1 -0
  859. package/dist/tools/validateObjectNaming.d.ts +21 -0
  860. package/dist/tools/validateObjectNaming.d.ts.map +1 -0
  861. package/dist/tools/validateObjectNaming.js +319 -0
  862. package/dist/tools/validateObjectNaming.js.map +1 -0
  863. package/dist/tools/validateXpp.d.ts +79 -0
  864. package/dist/tools/validateXpp.d.ts.map +1 -0
  865. package/dist/tools/validateXpp.js +705 -0
  866. package/dist/tools/validateXpp.js.map +1 -0
  867. package/dist/tools/verifyD365Project.d.ts +21 -0
  868. package/dist/tools/verifyD365Project.d.ts.map +1 -0
  869. package/dist/tools/verifyD365Project.js +299 -0
  870. package/dist/tools/verifyD365Project.js.map +1 -0
  871. package/dist/tools/viewInfo.d.ts +17 -0
  872. package/dist/tools/viewInfo.d.ts.map +1 -0
  873. package/dist/tools/viewInfo.js +46 -0
  874. package/dist/tools/viewInfo.js.map +1 -0
  875. package/dist/tools/xppKnowledge.d.ts +45 -0
  876. package/dist/tools/xppKnowledge.d.ts.map +1 -0
  877. package/dist/tools/xppKnowledge.js +2815 -0
  878. package/dist/tools/xppKnowledge.js.map +1 -0
  879. package/dist/types/context.d.ts +56 -0
  880. package/dist/types/context.d.ts.map +1 -0
  881. package/dist/types/context.js +5 -0
  882. package/dist/types/context.js.map +1 -0
  883. package/dist/utils/callDedup.d.ts +29 -0
  884. package/dist/utils/callDedup.d.ts.map +1 -0
  885. package/dist/utils/callDedup.js +87 -0
  886. package/dist/utils/callDedup.js.map +1 -0
  887. package/dist/utils/configManager.d.ts +307 -0
  888. package/dist/utils/configManager.d.ts.map +1 -0
  889. package/dist/utils/configManager.js +1169 -0
  890. package/dist/utils/configManager.js.map +1 -0
  891. package/dist/utils/d365XmlNormalizer.d.ts +9 -0
  892. package/dist/utils/d365XmlNormalizer.d.ts.map +1 -0
  893. package/dist/utils/d365XmlNormalizer.js +24 -0
  894. package/dist/utils/d365XmlNormalizer.js.map +1 -0
  895. package/dist/utils/edtExtensionValidator.d.ts +110 -0
  896. package/dist/utils/edtExtensionValidator.d.ts.map +1 -0
  897. package/dist/utils/edtExtensionValidator.js +367 -0
  898. package/dist/utils/edtExtensionValidator.js.map +1 -0
  899. package/dist/utils/eolUtils.d.ts +15 -0
  900. package/dist/utils/eolUtils.d.ts.map +1 -0
  901. package/dist/utils/eolUtils.js +21 -0
  902. package/dist/utils/eolUtils.js.map +1 -0
  903. package/dist/utils/extractManifest.d.ts +34 -0
  904. package/dist/utils/extractManifest.d.ts.map +1 -0
  905. package/dist/utils/extractManifest.js +43 -0
  906. package/dist/utils/extractManifest.js.map +1 -0
  907. package/dist/utils/fieldControlTypes.d.ts +44 -0
  908. package/dist/utils/fieldControlTypes.d.ts.map +1 -0
  909. package/dist/utils/fieldControlTypes.js +97 -0
  910. package/dist/utils/fieldControlTypes.js.map +1 -0
  911. package/dist/utils/formCloner.d.ts +77 -0
  912. package/dist/utils/formCloner.d.ts.map +1 -0
  913. package/dist/utils/formCloner.js +364 -0
  914. package/dist/utils/formCloner.js.map +1 -0
  915. package/dist/utils/formControlExpander.d.ts +68 -0
  916. package/dist/utils/formControlExpander.d.ts.map +1 -0
  917. package/dist/utils/formControlExpander.js +207 -0
  918. package/dist/utils/formControlExpander.js.map +1 -0
  919. package/dist/utils/formControlRepair.d.ts +81 -0
  920. package/dist/utils/formControlRepair.d.ts.map +1 -0
  921. package/dist/utils/formControlRepair.js +203 -0
  922. package/dist/utils/formControlRepair.js.map +1 -0
  923. package/dist/utils/formExtensionShapeValidator.d.ts +44 -0
  924. package/dist/utils/formExtensionShapeValidator.d.ts.map +1 -0
  925. package/dist/utils/formExtensionShapeValidator.js +99 -0
  926. package/dist/utils/formExtensionShapeValidator.js.map +1 -0
  927. package/dist/utils/formPatternTemplates.d.ts +77 -0
  928. package/dist/utils/formPatternTemplates.d.ts.map +1 -0
  929. package/dist/utils/formPatternTemplates.js +1917 -0
  930. package/dist/utils/formPatternTemplates.js.map +1 -0
  931. package/dist/utils/fsExtensionScanner.d.ts +76 -0
  932. package/dist/utils/fsExtensionScanner.d.ts.map +1 -0
  933. package/dist/utils/fsExtensionScanner.js +271 -0
  934. package/dist/utils/fsExtensionScanner.js.map +1 -0
  935. package/dist/utils/fuzzyMatching.d.ts +41 -0
  936. package/dist/utils/fuzzyMatching.d.ts.map +1 -0
  937. package/dist/utils/fuzzyMatching.js +186 -0
  938. package/dist/utils/fuzzyMatching.js.map +1 -0
  939. package/dist/utils/indexStaleness.d.ts +30 -0
  940. package/dist/utils/indexStaleness.d.ts.map +1 -0
  941. package/dist/utils/indexStaleness.js +104 -0
  942. package/dist/utils/indexStaleness.js.map +1 -0
  943. package/dist/utils/loadEnv.d.ts +32 -0
  944. package/dist/utils/loadEnv.d.ts.map +1 -0
  945. package/dist/utils/loadEnv.js +83 -0
  946. package/dist/utils/loadEnv.js.map +1 -0
  947. package/dist/utils/logger.d.ts +4 -0
  948. package/dist/utils/logger.d.ts.map +1 -0
  949. package/dist/utils/logger.js +11 -0
  950. package/dist/utils/logger.js.map +1 -0
  951. package/dist/utils/metadataResolver.d.ts +155 -0
  952. package/dist/utils/metadataResolver.d.ts.map +1 -0
  953. package/dist/utils/metadataResolver.js +277 -0
  954. package/dist/utils/metadataResolver.js.map +1 -0
  955. package/dist/utils/modelClassifier.d.ts +180 -0
  956. package/dist/utils/modelClassifier.d.ts.map +1 -0
  957. package/dist/utils/modelClassifier.js +373 -0
  958. package/dist/utils/modelClassifier.js.map +1 -0
  959. package/dist/utils/operationLocks.d.ts +26 -0
  960. package/dist/utils/operationLocks.d.ts.map +1 -0
  961. package/dist/utils/operationLocks.js +182 -0
  962. package/dist/utils/operationLocks.js.map +1 -0
  963. package/dist/utils/packageResolver.d.ts +52 -0
  964. package/dist/utils/packageResolver.d.ts.map +1 -0
  965. package/dist/utils/packageResolver.js +174 -0
  966. package/dist/utils/packageResolver.js.map +1 -0
  967. package/dist/utils/pathContainment.d.ts +60 -0
  968. package/dist/utils/pathContainment.d.ts.map +1 -0
  969. package/dist/utils/pathContainment.js +270 -0
  970. package/dist/utils/pathContainment.js.map +1 -0
  971. package/dist/utils/projectUtils.d.ts +14 -0
  972. package/dist/utils/projectUtils.d.ts.map +1 -0
  973. package/dist/utils/projectUtils.js +48 -0
  974. package/dist/utils/projectUtils.js.map +1 -0
  975. package/dist/utils/provenanceStore.d.ts +54 -0
  976. package/dist/utils/provenanceStore.d.ts.map +1 -0
  977. package/dist/utils/provenanceStore.js +203 -0
  978. package/dist/utils/provenanceStore.js.map +1 -0
  979. package/dist/utils/richContext.d.ts +45 -0
  980. package/dist/utils/richContext.d.ts.map +1 -0
  981. package/dist/utils/richContext.js +316 -0
  982. package/dist/utils/richContext.js.map +1 -0
  983. package/dist/utils/smartXmlBuilder.d.ts +187 -0
  984. package/dist/utils/smartXmlBuilder.d.ts.map +1 -0
  985. package/dist/utils/smartXmlBuilder.js +504 -0
  986. package/dist/utils/smartXmlBuilder.js.map +1 -0
  987. package/dist/utils/stdioSessionInfo.d.ts +53 -0
  988. package/dist/utils/stdioSessionInfo.d.ts.map +1 -0
  989. package/dist/utils/stdioSessionInfo.js +47 -0
  990. package/dist/utils/stdioSessionInfo.js.map +1 -0
  991. package/dist/utils/suggestionEngine.d.ts +20 -0
  992. package/dist/utils/suggestionEngine.d.ts.map +1 -0
  993. package/dist/utils/suggestionEngine.js +145 -0
  994. package/dist/utils/suggestionEngine.js.map +1 -0
  995. package/dist/utils/symbolLookup.d.ts +60 -0
  996. package/dist/utils/symbolLookup.d.ts.map +1 -0
  997. package/dist/utils/symbolLookup.js +0 -0
  998. package/dist/utils/symbolLookup.js.map +1 -0
  999. package/dist/utils/terminalUi.d.ts +85 -0
  1000. package/dist/utils/terminalUi.d.ts.map +1 -0
  1001. package/dist/utils/terminalUi.js +182 -0
  1002. package/dist/utils/terminalUi.js.map +1 -0
  1003. package/dist/utils/toolMetrics.d.ts +32 -0
  1004. package/dist/utils/toolMetrics.d.ts.map +1 -0
  1005. package/dist/utils/toolMetrics.js +89 -0
  1006. package/dist/utils/toolMetrics.js.map +1 -0
  1007. package/dist/utils/toolProgressMessage.d.ts +8 -0
  1008. package/dist/utils/toolProgressMessage.d.ts.map +1 -0
  1009. package/dist/utils/toolProgressMessage.js +182 -0
  1010. package/dist/utils/toolProgressMessage.js.map +1 -0
  1011. package/dist/utils/workspaceDetector.d.ts +51 -0
  1012. package/dist/utils/workspaceDetector.d.ts.map +1 -0
  1013. package/dist/utils/workspaceDetector.js +328 -0
  1014. package/dist/utils/workspaceDetector.js.map +1 -0
  1015. package/dist/utils/xppConfigProvider.d.ts +48 -0
  1016. package/dist/utils/xppConfigProvider.d.ts.map +1 -0
  1017. package/dist/utils/xppConfigProvider.js +121 -0
  1018. package/dist/utils/xppConfigProvider.js.map +1 -0
  1019. package/dist/utils/xppDocGen.d.ts +39 -0
  1020. package/dist/utils/xppDocGen.d.ts.map +1 -0
  1021. package/dist/utils/xppDocGen.js +518 -0
  1022. package/dist/utils/xppDocGen.js.map +1 -0
  1023. package/dist/utils/xppFormat.d.ts +21 -0
  1024. package/dist/utils/xppFormat.d.ts.map +1 -0
  1025. package/dist/utils/xppFormat.js +102 -0
  1026. package/dist/utils/xppFormat.js.map +1 -0
  1027. package/dist/utils/xppSelectLint.d.ts +18 -0
  1028. package/dist/utils/xppSelectLint.d.ts.map +1 -0
  1029. package/dist/utils/xppSelectLint.js +80 -0
  1030. package/dist/utils/xppSelectLint.js.map +1 -0
  1031. package/dist/validation/formPatternValidator.d.ts +53 -0
  1032. package/dist/validation/formPatternValidator.d.ts.map +1 -0
  1033. package/dist/validation/formPatternValidator.js +454 -0
  1034. package/dist/validation/formPatternValidator.js.map +1 -0
  1035. package/dist/workspace/contextRanker.d.ts +58 -0
  1036. package/dist/workspace/contextRanker.d.ts.map +1 -0
  1037. package/dist/workspace/contextRanker.js +216 -0
  1038. package/dist/workspace/contextRanker.js.map +1 -0
  1039. package/dist/workspace/contextSnapshot.d.ts +68 -0
  1040. package/dist/workspace/contextSnapshot.d.ts.map +1 -0
  1041. package/dist/workspace/contextSnapshot.js +193 -0
  1042. package/dist/workspace/contextSnapshot.js.map +1 -0
  1043. package/dist/workspace/hybridSearch.d.ts +39 -0
  1044. package/dist/workspace/hybridSearch.d.ts.map +1 -0
  1045. package/dist/workspace/hybridSearch.js +96 -0
  1046. package/dist/workspace/hybridSearch.js.map +1 -0
  1047. package/dist/workspace/workspaceScanner.d.ts +95 -0
  1048. package/dist/workspace/workspaceScanner.d.ts.map +1 -0
  1049. package/dist/workspace/workspaceScanner.js +247 -0
  1050. package/dist/workspace/workspaceScanner.js.map +1 -0
  1051. package/dist/workspace/workspaceUtils.d.ts +23 -0
  1052. package/dist/workspace/workspaceUtils.d.ts.map +1 -0
  1053. package/dist/workspace/workspaceUtils.js +77 -0
  1054. package/dist/workspace/workspaceUtils.js.map +1 -0
  1055. package/package.json +94 -0
package/dist/index.js ADDED
@@ -0,0 +1,753 @@
1
+ /**
2
+ * X++ MCP Code Completion Server
3
+ * Main entry point
4
+ */
5
+ // Load .env โ€” supports ENV_FILE env var for multi-instance setups (see src/utils/loadEnv.ts).
6
+ import { loadEnv } from './utils/loadEnv.js';
7
+ loadEnv(import.meta.url);
8
+ import { fileURLToPath } from 'url';
9
+ import { dirname, resolve } from 'path';
10
+ import express from 'express';
11
+ import compression from 'compression';
12
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
13
+ import { createXppMcpServer } from './server/mcpServer.js';
14
+ import { createStreamableHttpTransport } from './server/transport.js';
15
+ import { XppSymbolIndex } from './metadata/symbolIndex.js';
16
+ import { XppMetadataParser } from './metadata/xmlParser.js';
17
+ import { WorkspaceScanner } from './workspace/workspaceScanner.js';
18
+ import { HybridSearch } from './workspace/hybridSearch.js';
19
+ import { initializeDatabase } from './database/download.js';
20
+ import { initializeConfig, getConfigManager } from './utils/configManager.js';
21
+ import { SERVER_MODE, LOCAL_TOOLS, isToolAllowedInMode } from './server/serverMode.js';
22
+ import { TOOL_ANNOTATIONS } from './server/toolAnnotations.js';
23
+ import { apiKeyAuth } from './middleware/apiKeyAuth.js';
24
+ import { setInitializeParams } from './utils/stdioSessionInfo.js';
25
+ import { box, kv, sectionTitle, statusLine, spread, c, glyph, sanitize, supportsUnicode, log, shortPath, startupWarnings } from './utils/terminalUi.js';
26
+ import * as fs from 'fs/promises';
27
+ import * as fsSync from 'node:fs';
28
+ import { Transform } from 'node:stream';
29
+ // Filter verbose debug progress messages unless DEBUG_LOGGING is enabled.
30
+ const originalConsoleError = console.error;
31
+ const DEBUG_LOGGING = process.env.DEBUG_LOGGING === 'true';
32
+ // Optional file-based logging: set LOG_FILE to an absolute path to mirror stderr
33
+ // to a file (useful when the IDE doesn't expose MCP subprocess stderr).
34
+ const LOG_FILE = process.env.LOG_FILE;
35
+ let _logStream;
36
+ if (LOG_FILE) {
37
+ try {
38
+ _logStream = fsSync.createWriteStream(LOG_FILE, { flags: 'a', encoding: 'utf8' });
39
+ const banner = `\n${'โ”€'.repeat(72)}\n[d365fo-mcp] Started at ${new Date().toISOString()} pid=${process.pid}\n${'โ”€'.repeat(72)}\n`;
40
+ _logStream.write(banner);
41
+ // Tee: intercept process.stderr so every write also goes to the log file
42
+ const origStderrWrite = process.stderr.write.bind(process.stderr);
43
+ process.stderr.write = function (chunk, ...rest) {
44
+ _logStream.write(typeof chunk === 'string' ? chunk : chunk.toString('utf8'));
45
+ return origStderrWrite(chunk, ...rest);
46
+ };
47
+ }
48
+ catch (e) {
49
+ // Don't crash the server if the log file can't be opened
50
+ process.stderr.write(`[d365fo-mcp] โš ๏ธ Cannot open LOG_FILE=${LOG_FILE}: ${e}\n`);
51
+ _logStream = undefined;
52
+ }
53
+ }
54
+ console.error = (...args) => {
55
+ if (DEBUG_LOGGING) {
56
+ originalConsoleError(...args);
57
+ return;
58
+ }
59
+ const firstArg = String(args[0]);
60
+ // Suppress verbose operational debug messages from any tool/component prefix
61
+ // (pattern: message starts with "[module_name]"), but NEVER suppress if the
62
+ // message contains error/warning indicators โ€” those must always reach the client.
63
+ const hasErrorIndicator = firstArg.includes('Failed') ||
64
+ firstArg.includes('failed') ||
65
+ firstArg.includes('Error') ||
66
+ firstArg.includes('error') ||
67
+ firstArg.includes('โŒ') ||
68
+ firstArg.includes('โš ๏ธ') ||
69
+ firstArg.includes('[WARN]') ||
70
+ firstArg.includes('[ERROR]');
71
+ const isModuleDebugMessage = /^\[[\w\- ]+\]/.test(firstArg) && !hasErrorIndicator;
72
+ if (!isModuleDebugMessage) {
73
+ originalConsoleError(...args);
74
+ }
75
+ };
76
+ // โ”€โ”€โ”€ Global safety net โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
77
+ // An unhandled promise rejection terminates the Node process by default
78
+ // (Node โ‰ฅ15, --unhandled-rejections=throw). In stdio mode that kills the MCP
79
+ // subprocess and the client must restart it โ€” observed as "the server crashes
80
+ // on the first request and has to be restarted" when a background task (e.g.
81
+ // the async DB load) rejects before any tool call awaits it. Log and keep the
82
+ // server alive instead of dying. (stderr is already tee'd to LOG_FILE above.)
83
+ process.on('unhandledRejection', (reason) => {
84
+ const msg = reason instanceof Error ? (reason.stack ?? reason.message) : String(reason);
85
+ process.stderr.write(`[d365fo-mcp] โš ๏ธ Unhandled promise rejection (server staying up): ${msg}\n`);
86
+ });
87
+ // Same protection for SYNCHRONOUS uncaught exceptions โ€” a throw that escapes a
88
+ // timer/stream/event callback (not an awaited promise) would otherwise stop the
89
+ // process outright. For a stdio server that means the MCP client must respawn
90
+ // the subprocess after the very first failing request. Log the full stack so the
91
+ // root cause is diagnosable, then keep serving. (Genuinely fatal startup errors
92
+ // are still surfaced via main().catch โ†’ process.exit below.)
93
+ process.on('uncaughtException', (err) => {
94
+ process.stderr.write(`[d365fo-mcp] โš ๏ธ Uncaught exception (server staying up): ${err?.stack ?? err}\n`);
95
+ });
96
+ const PORT = parseInt(process.env.PORT || '8080');
97
+ // Derive server root from this file's location so paths are absolute
98
+ // regardless of process.cwd() โ€” critical when VS Code launches this as stdio subprocess.
99
+ const __serverDir = dirname(fileURLToPath(import.meta.url));
100
+ const DB_PATH = process.env.DB_PATH
101
+ ? resolve(process.env.DB_PATH)
102
+ : resolve(__serverDir, '../data/xpp-metadata.db');
103
+ const LABELS_DB_PATH = process.env.LABELS_DB_PATH
104
+ ? resolve(process.env.LABELS_DB_PATH)
105
+ : resolve(__serverDir, '../data/xpp-metadata-labels.db');
106
+ const METADATA_PATH = process.env.METADATA_PATH
107
+ ? resolve(process.env.METADATA_PATH)
108
+ : resolve(__serverDir, '../metadata');
109
+ // Detect if running in stdio mode (launched by MCP client as subprocess).
110
+ // Primary signal: stdin is NOT a TTY โ€” in Node.js isTTY is `true` for terminals
111
+ // and `undefined` (never `false`) for pipes, so use !isTTY, not === false.
112
+ // WEBSITES_PORT guards Azure App Service (HTTP-only, stdin may also be non-TTY there).
113
+ // MCP_FORCE_HTTP lets an operator explicitly keep HTTP even when stdin is piped.
114
+ const isStdioMode = !process.env.WEBSITES_PORT &&
115
+ process.env.MCP_FORCE_HTTP !== 'true' &&
116
+ (process.env.MCP_STDIO_MODE === 'true' || !process.stdin.isTTY);
117
+ const serverState = {
118
+ isReady: false,
119
+ isHealthy: false,
120
+ statusMessage: 'Starting...',
121
+ };
122
+ async function initializeServices() {
123
+ // -----------------------------------------------------------------------
124
+ // write-only mode: skip all database/symbol work โ€” LOCAL_TOOLS
125
+ // (create_d365fo_file, modify_d365fo_file, labels, verify_d365fo_project,
126
+ // get_workspace_info etc.) only need the config manager for path resolution,
127
+ // not the 1.5 GB symbol database.
128
+ // -----------------------------------------------------------------------
129
+ if (SERVER_MODE === 'write-only') {
130
+ log.info('Mode: write-only (local file-operations companion)');
131
+ log.detail('skipping database download and symbol index โ€” not needed here');
132
+ const config = await initializeConfig();
133
+ if (config?.servers?.context) {
134
+ log.ok('Configuration loaded from .mcp.json (servers.context)');
135
+ if (config.servers.context.workspacePath) {
136
+ log.detail(`workspace: ${config.servers.context.workspacePath}`);
137
+ }
138
+ }
139
+ else if (config) {
140
+ log.info('Configuration from environment (.mcp.json uses VS/Copilot registry format)');
141
+ }
142
+ else {
143
+ log.info('Configuration from environment variables');
144
+ }
145
+ const symbolIndex = new XppSymbolIndex(':memory:', ':memory:');
146
+ const parser = new XppMetadataParser();
147
+ const workspaceScanner = new WorkspaceScanner();
148
+ const hybridSearch = new HybridSearch(symbolIndex, workspaceScanner);
149
+ serverState.symbolIndex = symbolIndex;
150
+ serverState.parser = parser;
151
+ const context = { symbolIndex, parser, workspaceScanner, hybridSearch };
152
+ const mcpServer = createXppMcpServer(context);
153
+ log.ok('MCP Server initialized (write-only mode)');
154
+ return { mcpServer, symbolIndex, parser, workspaceScanner, hybridSearch, context };
155
+ }
156
+ // -----------------------------------------------------------------------
157
+ // full / read-only mode: full initialization with database
158
+ // -----------------------------------------------------------------------
159
+ try {
160
+ // Resolve configuration source โ€” report the outcome in a single line rather
161
+ // than a "loadingโ€ฆ" step followed by a result (the load is instant, and an
162
+ // absent .mcp.json is a normal case, not a warning).
163
+ const config = await initializeConfig();
164
+ if (config?.servers?.context) {
165
+ log.ok('Configuration loaded from .mcp.json (servers.context)');
166
+ if (config.servers.context.workspacePath) {
167
+ log.detail(`workspace: ${config.servers.context.workspacePath}`);
168
+ }
169
+ if (config.servers.context.packagePath) {
170
+ log.detail(`packages: ${config.servers.context.packagePath}`);
171
+ }
172
+ }
173
+ else if (config) {
174
+ // Home .mcp.json found but uses VS/Copilot server-registry format (servers.<name>).
175
+ // D365FO paths are supplied via process.env (D365FO_SOLUTIONS_PATH, DB_PATH, โ€ฆ).
176
+ log.info('Configuration from environment (.mcp.json uses VS/Copilot registry format)');
177
+ }
178
+ else {
179
+ log.info('Configuration from environment variables');
180
+ }
181
+ // Download database from blob storage if configured (only if remote is newer than local)
182
+ if (process.env.AZURE_STORAGE_CONNECTION_STRING && process.env.BLOB_CONTAINER_NAME) {
183
+ try {
184
+ serverState.statusMessage = 'Checking database version...';
185
+ await initializeDatabase();
186
+ }
187
+ catch (error) {
188
+ console.error(statusLine('warn', 'Failed to download database from blob storage:'), error);
189
+ log.detail('will attempt to use existing local database' + glyph.ellipsis);
190
+ // If download failed, check if local database exists and is valid
191
+ try {
192
+ await fs.access(DB_PATH);
193
+ log.detail('local database file exists, will attempt to use it');
194
+ }
195
+ catch {
196
+ log.warn('No local database available โ€” server will start with empty index');
197
+ }
198
+ }
199
+ }
200
+ // Initialize symbol index and parser (DB path is shown in the startup header).
201
+ // The open is synchronous and can block briefly on a large DB, so announce
202
+ // it first โ€” otherwise the output looks frozen during the load.
203
+ log.step('Loading symbols' + glyph.ellipsis);
204
+ serverState.statusMessage = 'Loading metadata database...';
205
+ const dbLoadStart = Date.now();
206
+ // Yield event loop so any pending MCP protocol messages (initialize exchange,
207
+ // roots/list, first tool call) can be queued before new Database() blocks.
208
+ // better-sqlite3 open is synchronous โ€” a 1.5 GB file can stall the loop for
209
+ // several seconds, causing the first client request to time out and cancel.
210
+ await new Promise(r => setImmediate(r));
211
+ let symbolIndex;
212
+ let dbHasSymbols = false;
213
+ try {
214
+ symbolIndex = new XppSymbolIndex(DB_PATH, LABELS_DB_PATH);
215
+ // Cheap O(1) probe โ€” NOT getSymbolCount(): a full COUNT scan of a 2 GB DB
216
+ // blocks the event loop for 30-60 s, which starves the MCP handshake and
217
+ // makes clients (VS Code Copilot) time out and kill the server.
218
+ dbHasSymbols = symbolIndex.hasAnySymbols();
219
+ }
220
+ catch (error) {
221
+ console.error(statusLine('err', 'Failed to open database:'), error);
222
+ // If database is corrupted, delete it and create new empty one
223
+ if (error.code === 'SQLITE_CORRUPT' || error.message?.includes('malformed')) {
224
+ log.warn('Database is corrupted โ€” removing and creating a fresh one' + glyph.ellipsis);
225
+ try {
226
+ await fs.unlink(DB_PATH);
227
+ log.detail('corrupted database removed');
228
+ }
229
+ catch (unlinkError) {
230
+ console.error(statusLine('warn', 'Failed to remove corrupted database:'), unlinkError);
231
+ }
232
+ // Try again with fresh database
233
+ symbolIndex = new XppSymbolIndex(DB_PATH, LABELS_DB_PATH);
234
+ dbHasSymbols = symbolIndex.hasAnySymbols();
235
+ log.warn('Symbol index is now empty. To restore, run: npm run index-metadata');
236
+ }
237
+ else {
238
+ throw error;
239
+ }
240
+ }
241
+ const parser = new XppMetadataParser();
242
+ // Check if database needs indexing
243
+ if (!dbHasSymbols) {
244
+ log.warn('No symbols found in database โ€” run `npm run index-metadata` first');
245
+ log.detail('or set METADATA_PATH and the server will index on startup');
246
+ // If metadata path exists, index it
247
+ try {
248
+ await fs.access(METADATA_PATH);
249
+ log.step(`Indexing metadata from ${METADATA_PATH}` + glyph.ellipsis);
250
+ serverState.statusMessage = 'Indexing metadata...';
251
+ const modelNamesStr = process.env.CUSTOM_MODELS || 'CustomModel';
252
+ const modelNames = modelNamesStr.split(',').map(m => m.trim()).filter(Boolean);
253
+ log.detail(`model names: ${modelNames.join(', ')}`);
254
+ // Single pass over all requested models โ€” the FTS index is rebuilt once at the
255
+ // end of the call, so looping per model would repeat a full-table rebuild.
256
+ log.detail(`indexing ${modelNames.join(', ')}` + glyph.ellipsis);
257
+ await symbolIndex.indexMetadataDirectory(METADATA_PATH, modelNames);
258
+ log.ok(`Indexed ${symbolIndex.getSymbolCount().toLocaleString('en-US')} symbols from ${modelNames.length} model(s)`);
259
+ }
260
+ catch {
261
+ log.warn('Metadata path not accessible โ€” starting with empty index');
262
+ }
263
+ }
264
+ else {
265
+ log.ok(`Database opened in ${((Date.now() - dbLoadStart) / 1000).toFixed(1)}s ${glyph.dot} counting symbols in background`);
266
+ // The count scan runs in a worker thread (getSymbolCounts) so it never
267
+ // blocks MCP requests; the breakdown is logged when it lands.
268
+ void symbolIndex.getSymbolCounts().then(({ total, byType: b }) => {
269
+ const n = (x) => (x || 0).toLocaleString('en-US');
270
+ log.ok(`Counted ${total.toLocaleString('en-US')} symbols in ${((Date.now() - dbLoadStart) / 1000).toFixed(1)}s`);
271
+ log.detail(`${n(b.class)} classes ${glyph.dot} ${n(b.table)} tables ${glyph.dot} ${n(b.form)} forms ${glyph.dot} ${n(b.query)} queries ${glyph.dot} ${n(b.view)} views`);
272
+ }).catch(err => {
273
+ console.error(statusLine('warn', 'Symbol count failed:'), err);
274
+ });
275
+ }
276
+ serverState.symbolIndex = symbolIndex;
277
+ serverState.parser = parser;
278
+ // Initialize workspace scanner and hybrid search
279
+ const workspaceScanner = new WorkspaceScanner();
280
+ const hybridSearch = new HybridSearch(symbolIndex, workspaceScanner);
281
+ // Create MCP server with full context
282
+ serverState.statusMessage = 'Initializing MCP server...';
283
+ const context = {
284
+ symbolIndex,
285
+ parser,
286
+ workspaceScanner,
287
+ hybridSearch,
288
+ };
289
+ const mcpServer = createXppMcpServer(context);
290
+ return { mcpServer, symbolIndex, parser, workspaceScanner, hybridSearch, context };
291
+ }
292
+ catch (error) {
293
+ console.error(statusLine('err', 'Initialization error:'), error);
294
+ serverState.statusMessage = `Initialization failed: ${error}`;
295
+ throw error;
296
+ }
297
+ }
298
+ async function initializeBridge(targetContext) {
299
+ try {
300
+ const { createBridgeClient } = await import('./bridge/bridgeClient.js');
301
+ const configMgr = getConfigManager();
302
+ await configMgr.ensureLoaded();
303
+ // Call getDevEnvironmentType() BEFORE getPackagePath() โ€” it triggers
304
+ // ensureXppConfig() which populates xppConfig.customPackagesPath.
305
+ // Without this ordering, getPackagePath() can't use the UDE custom path.
306
+ const devEnvType = await configMgr.getDevEnvironmentType();
307
+ // For UDE environments use getCustomPackagesPath() explicitly for the primary
308
+ // path. getPackagePath() has a priority chain where .rnrproj auto-detection
309
+ // (priority #3) can resolve to the Microsoft PackagesLocalDirectory before
310
+ // the UDE customPackagesPath check (priority #4), causing both
311
+ // --packages-path and --reference-packages-path to point to the same
312
+ // Microsoft directory and leaving custom metadata unresolvable.
313
+ let packagesPath;
314
+ let binPath;
315
+ let referencePackagesPath;
316
+ if (devEnvType === 'ude') {
317
+ const customPath = await configMgr.getCustomPackagesPath();
318
+ if (customPath)
319
+ packagesPath = customPath;
320
+ const msPath = await configMgr.getMicrosoftPackagesPath();
321
+ if (msPath) {
322
+ const { existsSync } = await import('fs');
323
+ const { join } = await import('path');
324
+ const candidate = join(msPath, 'bin');
325
+ if (existsSync(candidate))
326
+ binPath = candidate;
327
+ // Pass Microsoft packages as reference provider so both custom and
328
+ // Microsoft-shipped objects (forms, tables, classes, etc.) are resolvable.
329
+ referencePackagesPath = msPath;
330
+ }
331
+ }
332
+ else {
333
+ // Traditional: the MS PackagesLocalDirectory is the canonical metadata root.
334
+ const pldPath = configMgr.getPackagePath() ?? undefined;
335
+ // A custom metadata root โ€” e.g. a repo checkout configured via
336
+ // context.customPackagesPath / D365FO_CUSTOM_PACKAGES_PATH โ€” may hold the
337
+ // model being edited. If it differs from the PLD, make it the PRIMARY
338
+ // provider and keep the PLD as the reference provider so BOTH custom and
339
+ // Microsoft-shipped objects resolve. Without this, modify/create via the
340
+ // bridge can't find objects whose metadata lives outside the PLD (the
341
+ // bridge resolves objects by its configured roots, not per-call paths).
342
+ const customPath = await configMgr.getCustomPackagesPath();
343
+ const { existsSync } = await import('fs');
344
+ const { join, resolve } = await import('path');
345
+ const samePath = (a, b) => !!a && !!b && resolve(a).toLowerCase() === resolve(b).toLowerCase();
346
+ if (customPath && existsSync(customPath) && !samePath(customPath, pldPath)) {
347
+ packagesPath = customPath;
348
+ if (pldPath) {
349
+ referencePackagesPath = pldPath;
350
+ const candidate = join(pldPath, 'bin');
351
+ if (existsSync(candidate))
352
+ binPath = candidate;
353
+ }
354
+ }
355
+ else {
356
+ packagesPath = pldPath;
357
+ }
358
+ }
359
+ // Pass xref connection details for UDE environments
360
+ const xrefServer = await configMgr.getXrefDbServer() ?? undefined;
361
+ const xrefDatabase = await configMgr.getXrefDbName() ?? undefined;
362
+ const bridge = await createBridgeClient({
363
+ packagesPath,
364
+ referencePackagesPath,
365
+ binPath,
366
+ xrefServer,
367
+ xrefDatabase,
368
+ logFile: configMgr.getContext()?.bridgeLogFile ?? undefined,
369
+ });
370
+ if (bridge) {
371
+ targetContext.bridge = bridge;
372
+ const cap = `metadata ${bridge.metadataAvailable ? 'yes' : 'no'} ${glyph.dot} xref ${bridge.xrefAvailable ? 'yes' : 'no'}`;
373
+ return { ok: true, summary: `C# bridge connected (${devEnvType}) ${glyph.dot} ${cap}` };
374
+ }
375
+ return {
376
+ ok: false,
377
+ summary: `C# bridge unavailable (${devEnvType}) โ€” live metadata off, using the symbol index`,
378
+ detail: `packages: ${packagesPath ?? '(not detected โ€” check .mcp.json context.packagePath or PackagesLocalDirectory)'}`,
379
+ };
380
+ }
381
+ catch (err) {
382
+ return { ok: false, summary: `C# bridge unavailable: ${err}` };
383
+ }
384
+ }
385
+ async function main() {
386
+ // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
387
+ // Stdin sniffer: capture the `initialize` request params for get_workspace_info.
388
+ // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
389
+ /**
390
+ * Wraps process.stdin to capture the `initialize` request params (clientInfo,
391
+ * capabilities, roots) so get_workspace_info can surface them. Passes every
392
+ * byte through unchanged โ€” this feeds a real tool, it is not a diagnostic trace.
393
+ */
394
+ function createInitializeParamsSniffer() {
395
+ let buf = Buffer.alloc(0);
396
+ const t = new Transform({
397
+ transform(chunk, _enc, cb) {
398
+ buf = Buffer.concat([buf, chunk]);
399
+ // MCP stdio transport uses newline-delimited JSON: one object per line.
400
+ let newlineIdx;
401
+ while ((newlineIdx = buf.indexOf(0x0a)) !== -1) {
402
+ const line = buf.slice(0, newlineIdx).toString('utf8').replace(/\r$/, '');
403
+ buf = buf.slice(newlineIdx + 1);
404
+ if (!line.trim())
405
+ continue;
406
+ try {
407
+ const msg = JSON.parse(line);
408
+ if (msg.method === 'initialize' && msg.params) {
409
+ setInitializeParams(msg.params);
410
+ }
411
+ }
412
+ catch { /* non-JSON line, skip */ }
413
+ }
414
+ cb(null, chunk); // pass data through unchanged
415
+ },
416
+ });
417
+ process.stdin.pipe(t);
418
+ return t;
419
+ }
420
+ // CRITICAL: In STDIO mode, redirect all console.log/info/warn to stderr.
421
+ // GitHub Copilot reads stdout for MCP protocol only!
422
+ // Suppress verbose operational messages unless DEBUG_LOGGING=true โ€” every
423
+ // stderr line appears as "[warning] [server stderr]" in the MCP client UI,
424
+ // which is confusing when it's just normal startup/metrics output.
425
+ if (isStdioMode) {
426
+ const stderrWrite = (...args) => {
427
+ if (DEBUG_LOGGING) {
428
+ process.stderr.write(args.join(' ') + '\n');
429
+ return;
430
+ }
431
+ const msg = args.join(' ');
432
+ // Only forward genuine errors/warnings; suppress operational info.
433
+ if (msg.includes('โŒ') || msg.includes('โš ๏ธ') ||
434
+ msg.includes('Error') || msg.includes('error') ||
435
+ msg.includes('Failed') || msg.includes('failed')) {
436
+ process.stderr.write(msg + '\n');
437
+ }
438
+ };
439
+ console.log = stderrWrite;
440
+ console.info = stderrWrite;
441
+ console.warn = (...args) => process.stderr.write('[WARN] ' + args.join(' ') + '\n');
442
+ }
443
+ else {
444
+ // HTTP mode (e.g. `npm run dev` in PowerShell, or Azure App Service).
445
+ // Sanitise at the stream level so the classic Windows console (cp852) shows
446
+ // clean ASCII glyphs instead of mojibake, while modern terminals (Windows
447
+ // Terminal, VS Code) keep the emoji. Wrapping process.stdout/stderr.write โ€”
448
+ // rather than the console.* methods โ€” keeps the error-detection filter above
449
+ // working on the original (emoji-bearing) text, and catches direct
450
+ // process.stderr.write calls too. No-op when Unicode is supported.
451
+ // Safe in HTTP mode: the MCP protocol travels over HTTP sockets, not stdout.
452
+ if (!supportsUnicode) {
453
+ const wrapWrite = (stream) => {
454
+ const orig = stream.write.bind(stream);
455
+ stream.write = (chunk, ...rest) => typeof chunk === 'string' ? orig(sanitize(chunk), ...rest) : orig(chunk, ...rest);
456
+ };
457
+ wrapWrite(process.stdout);
458
+ wrapWrite(process.stderr);
459
+ }
460
+ // Redirect console.warn to stdout so Azure Log Stream shows red ONLY for
461
+ // console.error (real errors), not warnings.
462
+ console.warn = (...args) => process.stdout.write('[WARN] ' + args.join(' ') + '\n');
463
+ }
464
+ if (isStdioMode) {
465
+ // Pre-seed workspace so auto-detection starts before the first tool call.
466
+ // VS Code sets process.cwd() to the first workspace folder for stdio servers.
467
+ // VSCODE_WORKSPACE_FOLDER_PATHS is a more reliable VS Code-specific env var.
468
+ const envRoots = process.env.VSCODE_WORKSPACE_FOLDER_PATHS
469
+ ?.split(';')
470
+ .filter(Boolean)
471
+ .map(u => u.startsWith('file:///')
472
+ ? decodeURIComponent(u.slice(8)).replace(/\//g, '\\')
473
+ : u);
474
+ const initialWorkspace = envRoots?.[0] ?? process.cwd();
475
+ // Eagerly scan D365FO_SOLUTIONS_PATH so allDetectedProjects is populated before
476
+ // VS 2022 sends roots/list (usually within 1โ€“2 s of startup).
477
+ getConfigManager().initEagerScan();
478
+ getConfigManager().setRuntimeContext({ workspacePath: initialWorkspace });
479
+ // STDIO mode: connect transport BEFORE the heavy database open so the MCP
480
+ // handshake completes within VS 2022's initialization timeout (~10 s).
481
+ //
482
+ // Strategy:
483
+ // 1. Create a lightweight "stub" server with an in-memory (empty) symbol index.
484
+ // 2. Connect the stdio transport โ€” handshake completes immediately.
485
+ // 3. Yield the event loop (setImmediate) so VS 2022's `initialized` notification
486
+ // and the roots/list exchange are processed BEFORE the synchronous DB open
487
+ // blocks the event loop. Without this yield, project auto-detection via
488
+ // roots/list could be delayed until after DB load.
489
+ // 4. Run full initializeServices() in the background.
490
+ // 5. Swap the real symbol index into the context once init finishes.
491
+ // Tool handlers await ctx.dbReady so they always use the real index โ€”
492
+ // they will block (showing a spinner in the IDE) until the DB is ready,
493
+ // then execute immediately with full results.
494
+ // Step 1: lightweight stub + deferred dbReady promise
495
+ const stubIndex = new XppSymbolIndex(':memory:', ':memory:');
496
+ const stubParser = new XppMetadataParser();
497
+ const stubScanner = new WorkspaceScanner();
498
+ const stubHybrid = new HybridSearch(stubIndex, stubScanner);
499
+ let resolveDbReady;
500
+ let rejectDbReady;
501
+ const dbReadyPromise = new Promise((res, rej) => {
502
+ resolveDbReady = res;
503
+ rejectDbReady = rej;
504
+ });
505
+ // Floor handler: if the background DB load fails before any tool call awaits
506
+ // dbReady (e.g. the first request is a LOCAL tool, which skips the wait in
507
+ // toolHandler), the rejection would otherwise float and crash the stdio
508
+ // process. Attaching a catch here marks it handled; tool handlers that do
509
+ // await context.dbReady still receive and surface the rejection themselves.
510
+ dbReadyPromise.catch(() => { });
511
+ const stubContext = {
512
+ symbolIndex: stubIndex,
513
+ parser: stubParser,
514
+ workspaceScanner: stubScanner,
515
+ hybridSearch: stubHybrid,
516
+ dbReady: dbReadyPromise,
517
+ };
518
+ const mcpServer = createXppMcpServer(stubContext);
519
+ // Step 2: connect transport โ€” handshake completes here
520
+ // Always wrap stdin with the initialize-params sniffer so we can capture the
521
+ // `initialize` request params (clientInfo, capabilities) for get_workspace_info.
522
+ const transport = new StdioServerTransport(createInitializeParamsSniffer(), process.stdout);
523
+ await mcpServer.connect(transport);
524
+ log.ok('Stdio transport connected (DB loading in background)');
525
+ // Step 3: yield the event loop so `initialized` + roots/list can be processed
526
+ // BEFORE the synchronous new Database() call blocks the event loop.
527
+ await new Promise(resolve => setImmediate(resolve));
528
+ // Step 3b: Initialize C# bridge in parallel with DB load (non-blocking)
529
+ // The bridge provides live metadata from Microsoft's IMetadataProvider API
530
+ // and cross-reference queries โ€” only available on Windows VMs with D365FO.
531
+ void initializeBridge(stubContext).then(s => (s.ok ? log.ok(s.summary) : log.warn(s.summary)));
532
+ // Step 4: load real database in the background
533
+ const dbLoadStart = Date.now();
534
+ initializeServices().then(({ symbolIndex, parser, workspaceScanner, hybridSearch }) => {
535
+ // Step 5: patch the context references used by tool handlers
536
+ stubContext.symbolIndex = symbolIndex;
537
+ stubContext.parser = parser;
538
+ stubContext.workspaceScanner = workspaceScanner;
539
+ stubContext.hybridSearch = hybridSearch;
540
+ serverState.symbolIndex = symbolIndex;
541
+ serverState.parser = parser;
542
+ serverState.statusMessage = 'Ready';
543
+ // Resolve dbReady AFTER context is patched โ€” tools can now run with real index.
544
+ resolveDbReady();
545
+ log.ok(`Database loaded in ${Date.now() - dbLoadStart} ms โ€” all tools fully operational`);
546
+ // The in-memory stub symbol index is also unreachable once swapped.
547
+ try {
548
+ stubIndex.close();
549
+ }
550
+ catch { /* ignore */ }
551
+ }).catch(err => {
552
+ rejectDbReady(err);
553
+ console.error(statusLine('err', 'Background initialization failed:'), err);
554
+ });
555
+ // Log tool count immediately (transport is already connected).
556
+ // TOOL_ANNOTATIONS is guaranteed complete by tests/utils/toolInventory.test.ts,
557
+ // so its size tracks the real tool count without a hardcoded literal.
558
+ const totalTools = Object.keys(TOOL_ANNOTATIONS).length;
559
+ const localToolCount = LOCAL_TOOLS.size;
560
+ const toolCount = SERVER_MODE === 'write-only' ? localToolCount :
561
+ SERVER_MODE === 'read-only' ? totalTools - localToolCount : totalTools;
562
+ const toolDesc = SERVER_MODE === 'write-only' ? `(${Array.from(LOCAL_TOOLS).join(', ')})` :
563
+ SERVER_MODE === 'read-only' ? '(all except local tools)' :
564
+ '(2 discovery + 1 labels + 3 object-info + 2 intelligent + 2 smart-gen + 1 file-ops + 1 pattern-analysis + 5 security-ext + 5 sdlc-build + 2 code-review + 2 code-quality)';
565
+ log.ok(`Registered ${toolCount} X++ MCP tools ${toolDesc}`);
566
+ serverState.isReady = true;
567
+ serverState.isHealthy = true;
568
+ serverState.statusMessage = 'Loading database...';
569
+ }
570
+ else {
571
+ // HTTP mode โ€” bind the port immediately so Azure App Service does not kill
572
+ // the process during the (potentially long) database initialisation phase.
573
+ // The health endpoint returns 503 while the server is starting and 200 once
574
+ // fully ready. MCP routes are registered dynamically after initializeServices().
575
+ // Branded banner first โ€” connection details are known immediately, before
576
+ // the (potentially long) database load. Symbol counts are intentionally NOT
577
+ // shown here; they appear once during the load (`โœ“ Loaded โ€ฆ symbols`).
578
+ const host = process.env.HOST || '0.0.0.0';
579
+ const W = 50;
580
+ console.log('');
581
+ for (const line of box([
582
+ spread(c.bold('D365 F&O MCP Server'), c.dim('v1.0.0'), W),
583
+ c.gray('X++ Code Intelligence'),
584
+ ], W)) {
585
+ console.log(line);
586
+ }
587
+ console.log('');
588
+ console.log(kv('Mode', `HTTP ${c.dim(glyph.dot)} ${SERVER_MODE}`));
589
+ console.log(kv('Endpoint', c.cyan(`http://${host}:${PORT}/mcp`)));
590
+ console.log(kv('Health', c.cyan(`http://localhost:${PORT}/health`)));
591
+ console.log(kv('Runtime', `Node ${process.version} ${c.dim(glyph.dot)} pid ${process.pid}`));
592
+ console.log(kv('Database', c.dim(shortPath(DB_PATH))));
593
+ console.log('');
594
+ // Create Express app
595
+ const app = express();
596
+ // Trust proxy - required for Azure App Service (behind reverse proxy)
597
+ app.set('trust proxy', 1);
598
+ // Compress responses โ€” JSON search results can be 50โ€“200 KB;
599
+ // gzip typically gives 70โ€“80 % reduction and Azure egress billing benefits.
600
+ app.use(compression());
601
+ app.use(express.json());
602
+ // API key authentication โ€” enforced when API_KEY env var is set.
603
+ // Must be after express.json() but before route handlers.
604
+ // /health is excluded so Azure health probes still work unauthenticated.
605
+ app.use(apiKeyAuth);
606
+ // Health check endpoint โ€” dynamic: reflects serverState at request time
607
+ app.get('/health', (_req, res) => {
608
+ const ready = serverState.isReady;
609
+ return res.status(ready ? 200 : 503).json({
610
+ status: ready ? 'healthy' : 'starting',
611
+ ready,
612
+ service: 'd365fo-mcp-server',
613
+ version: '1.0.0',
614
+ message: serverState.statusMessage,
615
+ // Cached-only: a health probe must never trigger a 30-60 s COUNT scan.
616
+ symbols: serverState.symbolIndex?.getCachedSymbolCounts()?.total || 0,
617
+ });
618
+ });
619
+ // Early /mcp route โ€” returns 503 while services are loading so MCP clients
620
+ // (VS 2022, VS Code Copilot) get a proper JSON-RPC error instead of a 404
621
+ // during Azure cold start. Once initializeServices() finishes, the real
622
+ // transport route (registered later in the Express stack) handles requests.
623
+ // We call next() when ready so the real handler takes over.
624
+ app.post('/mcp', (_req, res, next) => {
625
+ if (serverState.isReady) {
626
+ // Services loaded โ€” let the real transport handler take over
627
+ next();
628
+ return;
629
+ }
630
+ res.status(503).json({
631
+ jsonrpc: '2.0',
632
+ error: { code: -32000, message: `Server is starting: ${serverState.statusMessage}` },
633
+ id: _req.body?.id ?? null,
634
+ });
635
+ });
636
+ // Bind port immediately โ€” Azure requires the port to be open within ~230 s
637
+ await new Promise(resolve => app.listen(PORT, host, () => resolve()));
638
+ // Initialise services in the background; register MCP routes once ready
639
+ initializeServices().then(async ({ mcpServer, symbolIndex, parser, workspaceScanner, hybridSearch, context }) => {
640
+ // Register MCP transport (Express supports dynamic route registration)
641
+ createStreamableHttpTransport(mcpServer, app, { symbolIndex, parser, workspaceScanner, hybridSearch });
642
+ serverState.isReady = true;
643
+ serverState.isHealthy = true;
644
+ serverState.statusMessage = 'Ready';
645
+ console.log('');
646
+ console.log(statusLine('ok', c.green(`Ready in ${process.uptime().toFixed(1)}s`)));
647
+ // C# bridge โ€” await its connection (bounded) so its status prints here, in
648
+ // order, instead of trailing after the tool list. A slow/hung bridge must
649
+ // never block startup, so cap the wait; it keeps connecting in the
650
+ // background afterwards and attaches to the context once ready.
651
+ if (context) {
652
+ const status = await Promise.race([
653
+ initializeBridge(context),
654
+ new Promise(r => setTimeout(() => r({ ok: true, summary: 'C# bridge still connecting in the background' + glyph.ellipsis }), 6000)),
655
+ ]);
656
+ if (status.ok)
657
+ log.ok(status.summary);
658
+ else
659
+ log.warn(status.summary);
660
+ if (status.detail)
661
+ log.detail(status.detail);
662
+ }
663
+ console.log('');
664
+ const toolCatalog = [
665
+ { icon: '๐Ÿ”', category: 'Search & Discovery', tools: [
666
+ { name: 'search', desc: 'Search 584K+ symbols: single, batch (queries[]) or scope=extensions' },
667
+ { name: 'batch_get_info', desc: 'Get detailed info for up to 10 objects in one parallel call' },
668
+ ] },
669
+ { icon: '๐Ÿท๏ธ ', category: 'Label Management', tools: [
670
+ { name: 'labels', desc: 'Unified label ops: action=search|info|create|rename (read/write)' },
671
+ ] },
672
+ { icon: '๐Ÿ“Š', category: 'Advanced Object Info', tools: [
673
+ { name: 'get_object_info', desc: 'Read any object by objectType: class/table/form/query/view/enum/edt/report/data-entity/menu-item/service/map/config-key/security-policy/macro' },
674
+ { name: 'get_method', desc: 'Method signature/source/both via include= (required before CoC extensions)' },
675
+ { name: 'find_references', desc: 'Where-used analysis across the entire codebase' },
676
+ ] },
677
+ { icon: '๐Ÿง ', category: 'Intelligent Code Generation', tools: [
678
+ { name: 'get_knowledge', desc: 'kind=knowledge|error โ€” X++ rulebook/patterns or D365FO error diagnosis' },
679
+ { name: 'analyze_code', desc: 'Learn from the codebase: mode=patterns|implementations|completeness|api-usage' },
680
+ ] },
681
+ { icon: '๐ŸŽจ', category: 'Smart Object Generation', tools: [
682
+ { name: 'generate_object', desc: 'mode=pattern (named X++ skeleton) | scaffold (whole table/form/report)' },
683
+ { name: 'suggest_edt', desc: 'Suggest EDT for field name using fuzzy matching' },
684
+ ] },
685
+ { icon: '๐Ÿ“', category: 'File & Metadata Operations', tools: [
686
+ { name: 'd365fo_file', desc: 'action=create|modify|generate โ€” write/edit AOT objects or emit XML (cloud)' },
687
+ ] },
688
+ { icon: '๐Ÿ“ˆ', category: 'Pattern Analysis', tools: [
689
+ { name: 'object_patterns', desc: 'domain=table|form โ€” table field/index patterns, or form-pattern toolkit (analyze/spec/validate)' },
690
+ ] },
691
+ { icon: '๐Ÿ”', category: 'Security & Extensions', tools: [
692
+ { name: 'security_info', desc: 'mode=artifact|coverage โ€” Privilege/Duty/Role chain, or who can access an object' },
693
+ { name: 'extension_info', desc: 'mode=coc|events|table-merge|points|strategy โ€” CoC/event-handler/extension analysis + strategy advice' },
694
+ { name: 'validate_object_naming', desc: 'Validate proposed extensions and object names against D365FO conventions' },
695
+ { name: 'get_workspace_info', desc: 'Detected workspace paths, model name, project file, and server mode' },
696
+ { name: 'verify_d365fo_project', desc: 'Verify objects exist on disk and are referenced in the .rnrproj project file' },
697
+ ] },
698
+ { icon: '๐Ÿ—๏ธ ', category: 'SDLC & Build Tools', tools: [
699
+ { name: 'update_symbol_index', desc: 'Index a newly generated XML file immediately (no restart needed)' },
700
+ { name: 'build_d365fo_project', desc: 'Run MSBuild compilation locally to capture errors' },
701
+ { name: 'trigger_db_sync', desc: 'Run a database sync for the current model' },
702
+ { name: 'run_bp_check', desc: 'Run Microsoft Best Practices (xppbp.exe) analysis' },
703
+ { name: 'run_systest_class', desc: 'Execute unit tests using SysTestConsole.exe' },
704
+ ] },
705
+ { icon: '๐Ÿ”„', category: 'Code Review & Source Control', tools: [
706
+ { name: 'review_workspace_changes', desc: 'AI-based D365FO code review on uncommitted X++ changes (git diff)' },
707
+ { name: 'undo_last_modification', desc: 'Safely revert last file change: checkout HEAD or delete untracked file' },
708
+ ] },
709
+ { icon: '๐Ÿงช', category: 'Code Quality & Grounding', tools: [
710
+ { name: 'validate_code', desc: 'mode=syntax (offline BP validator, SEL/COC/BP/TTS/XML) | references (semantic symbol resolver vs index)' },
711
+ { name: 'prepare', desc: 'Single-call context aggregator + grounding token: mode=change|create' },
712
+ ] },
713
+ ];
714
+ const filteredCatalog = toolCatalog
715
+ .map(cat => ({
716
+ ...cat,
717
+ // Same predicate as the ListTools filter and runtime gate, so the
718
+ // startup banner matches what the server actually exposes.
719
+ tools: cat.tools.filter(t => isToolAllowedInMode(SERVER_MODE, t.name)),
720
+ }))
721
+ .filter(cat => cat.tools.length > 0);
722
+ const totalTools = filteredCatalog.reduce((sum, cat) => sum + cat.tools.length, 0);
723
+ // Align tool names into a column (cap so long names don't push descriptions off-screen).
724
+ const nameW = Math.min(26, Math.max(...filteredCatalog.flatMap(cat => cat.tools.map(t => t.name.length))) + 2);
725
+ console.log(sectionTitle(`Tools (${totalTools})`));
726
+ console.log('');
727
+ for (const cat of filteredCatalog) {
728
+ console.log(` ${cat.icon} ${c.bold(c.cyan(cat.category))} ${c.dim(`(${cat.tools.length})`)}`);
729
+ for (const t of cat.tools) {
730
+ console.log(` ${t.name.padEnd(nameW)}${c.dim(t.desc)}`);
731
+ }
732
+ console.log('');
733
+ }
734
+ // End-of-startup recap โ€” surfaces any warnings the long tool list scrolled
735
+ // past, so the operator sees them without scrolling back up.
736
+ if (startupWarnings.length > 0) {
737
+ console.log(statusLine('warn', c.yellow(`${startupWarnings.length} warning${startupWarnings.length > 1 ? 's' : ''} during startup:`)));
738
+ for (const w of startupWarnings)
739
+ log.detail(w);
740
+ console.log('');
741
+ }
742
+ }).catch((err) => {
743
+ console.error(statusLine('err', 'Initialisation failed:'), err);
744
+ serverState.isHealthy = false;
745
+ serverState.statusMessage = `Initialisation failed: ${err}`;
746
+ });
747
+ }
748
+ }
749
+ main().catch((error) => {
750
+ console.error(statusLine('err', 'Fatal error:'), error);
751
+ process.exit(1);
752
+ });
753
+ //# sourceMappingURL=index.js.map