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.
- package/LICENSE +21 -0
- package/README.md +205 -0
- package/dist/bridge/bridgeAdapter.d.ts +319 -0
- package/dist/bridge/bridgeAdapter.d.ts.map +1 -0
- package/dist/bridge/bridgeAdapter.js +2003 -0
- package/dist/bridge/bridgeAdapter.js.map +1 -0
- package/dist/bridge/bridgeClient.d.ts +255 -0
- package/dist/bridge/bridgeClient.d.ts.map +1 -0
- package/dist/bridge/bridgeClient.js +741 -0
- package/dist/bridge/bridgeClient.js.map +1 -0
- package/dist/bridge/bridgeTypes.d.ts +561 -0
- package/dist/bridge/bridgeTypes.d.ts.map +1 -0
- package/dist/bridge/bridgeTypes.js +6 -0
- package/dist/bridge/bridgeTypes.js.map +1 -0
- package/dist/bridge/debouncedRefresh.d.ts +16 -0
- package/dist/bridge/debouncedRefresh.d.ts.map +1 -0
- package/dist/bridge/debouncedRefresh.js +77 -0
- package/dist/bridge/debouncedRefresh.js.map +1 -0
- package/dist/bridge/index.d.ts +21 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +20 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/cli/commands/config.d.ts +8 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +77 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +177 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/indexCmd.d.ts +8 -0
- package/dist/cli/commands/indexCmd.d.ts.map +1 -0
- package/dist/cli/commands/indexCmd.js +78 -0
- package/dist/cli/commands/indexCmd.js.map +1 -0
- package/dist/cli/commands/instance.d.ts +4 -0
- package/dist/cli/commands/instance.d.ts.map +1 -0
- package/dist/cli/commands/instance.js +183 -0
- package/dist/cli/commands/instance.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +4 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +246 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/start.d.ts +2 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +49 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/update.d.ts +4 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +55 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/context.d.ts +26 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/context.js +38 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/envFile.d.ts +23 -0
- package/dist/cli/envFile.d.ts.map +1 -0
- package/dist/cli/envFile.js +79 -0
- package/dist/cli/envFile.js.map +1 -0
- package/dist/cli/exec.d.ts +13 -0
- package/dist/cli/exec.d.ts.map +1 -0
- package/dist/cli/exec.js +47 -0
- package/dist/cli/exec.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +122 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/instances.d.ts +19 -0
- package/dist/cli/instances.d.ts.map +1 -0
- package/dist/cli/instances.js +60 -0
- package/dist/cli/instances.js.map +1 -0
- package/dist/cli/mcpJson.d.ts +15 -0
- package/dist/cli/mcpJson.d.ts.map +1 -0
- package/dist/cli/mcpJson.js +44 -0
- package/dist/cli/mcpJson.js.map +1 -0
- package/dist/cli/settingsPrompt.d.ts +20 -0
- package/dist/cli/settingsPrompt.d.ts.map +1 -0
- package/dist/cli/settingsPrompt.js +150 -0
- package/dist/cli/settingsPrompt.js.map +1 -0
- package/dist/cli/settingsStore.d.ts +47 -0
- package/dist/cli/settingsStore.d.ts.map +1 -0
- package/dist/cli/settingsStore.js +144 -0
- package/dist/cli/settingsStore.js.map +1 -0
- package/dist/cli/target.d.ts +23 -0
- package/dist/cli/target.d.ts.map +1 -0
- package/dist/cli/target.js +62 -0
- package/dist/cli/target.js.map +1 -0
- package/dist/cli/ui.d.ts +26 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +48 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/cli/xppConfig.d.ts +35 -0
- package/dist/cli/xppConfig.d.ts.map +1 -0
- package/dist/cli/xppConfig.js +97 -0
- package/dist/cli/xppConfig.js.map +1 -0
- package/dist/config/configFile.d.ts +50 -0
- package/dist/config/configFile.d.ts.map +1 -0
- package/dist/config/configFile.js +152 -0
- package/dist/config/configFile.js.map +1 -0
- package/dist/config/settings.d.ts +58 -0
- package/dist/config/settings.d.ts.map +1 -0
- package/dist/config/settings.js +641 -0
- package/dist/config/settings.js.map +1 -0
- package/dist/database/download.d.ts +27 -0
- package/dist/database/download.d.ts.map +1 -0
- package/dist/database/download.js +241 -0
- package/dist/database/download.js.map +1 -0
- package/dist/eval/audit/knowledgeAudit.d.ts +66 -0
- package/dist/eval/audit/knowledgeAudit.d.ts.map +1 -0
- package/dist/eval/audit/knowledgeAudit.js +117 -0
- package/dist/eval/audit/knowledgeAudit.js.map +1 -0
- package/dist/eval/audit/knowledgeAuditCli.d.ts +17 -0
- package/dist/eval/audit/knowledgeAuditCli.d.ts.map +1 -0
- package/dist/eval/audit/knowledgeAuditCli.js +83 -0
- package/dist/eval/audit/knowledgeAuditCli.js.map +1 -0
- package/dist/eval/audit/knowledgeRefs.d.ts +37 -0
- package/dist/eval/audit/knowledgeRefs.d.ts.map +1 -0
- package/dist/eval/audit/knowledgeRefs.js +150 -0
- package/dist/eval/audit/knowledgeRefs.js.map +1 -0
- package/dist/eval/audit/symbolLookup.d.ts +23 -0
- package/dist/eval/audit/symbolLookup.d.ts.map +1 -0
- package/dist/eval/audit/symbolLookup.js +80 -0
- package/dist/eval/audit/symbolLookup.js.map +1 -0
- package/dist/eval/coverage/coverage.d.ts +65 -0
- package/dist/eval/coverage/coverage.d.ts.map +1 -0
- package/dist/eval/coverage/coverage.js +136 -0
- package/dist/eval/coverage/coverage.js.map +1 -0
- package/dist/eval/coverage/coverageCli.d.ts +13 -0
- package/dist/eval/coverage/coverageCli.d.ts.map +1 -0
- package/dist/eval/coverage/coverageCli.js +106 -0
- package/dist/eval/coverage/coverageCli.js.map +1 -0
- package/dist/eval/coverage/sources.d.ts +17 -0
- package/dist/eval/coverage/sources.d.ts.map +1 -0
- package/dist/eval/coverage/sources.js +40 -0
- package/dist/eval/coverage/sources.js.map +1 -0
- package/dist/eval/coverage/taxonomy.d.ts +59 -0
- package/dist/eval/coverage/taxonomy.d.ts.map +1 -0
- package/dist/eval/coverage/taxonomy.js +400 -0
- package/dist/eval/coverage/taxonomy.js.map +1 -0
- package/dist/eval/improver/caseMining.d.ts +55 -0
- package/dist/eval/improver/caseMining.d.ts.map +1 -0
- package/dist/eval/improver/caseMining.js +64 -0
- package/dist/eval/improver/caseMining.js.map +1 -0
- package/dist/eval/improver/caseMiningCli.d.ts +10 -0
- package/dist/eval/improver/caseMiningCli.d.ts.map +1 -0
- package/dist/eval/improver/caseMiningCli.js +50 -0
- package/dist/eval/improver/caseMiningCli.js.map +1 -0
- package/dist/eval/improver/cli.d.ts +11 -0
- package/dist/eval/improver/cli.d.ts.map +1 -0
- package/dist/eval/improver/cli.js +73 -0
- package/dist/eval/improver/cli.js.map +1 -0
- package/dist/eval/improver/cluster.d.ts +47 -0
- package/dist/eval/improver/cluster.d.ts.map +1 -0
- package/dist/eval/improver/cluster.js +0 -0
- package/dist/eval/improver/cluster.js.map +1 -0
- package/dist/eval/improver/corpusIO.d.ts +26 -0
- package/dist/eval/improver/corpusIO.d.ts.map +1 -0
- package/dist/eval/improver/corpusIO.js +50 -0
- package/dist/eval/improver/corpusIO.js.map +1 -0
- package/dist/eval/improver/fixBrief.d.ts +34 -0
- package/dist/eval/improver/fixBrief.d.ts.map +1 -0
- package/dist/eval/improver/fixBrief.js +69 -0
- package/dist/eval/improver/fixBrief.js.map +1 -0
- package/dist/eval/improver/fixBriefCli.d.ts +11 -0
- package/dist/eval/improver/fixBriefCli.d.ts.map +1 -0
- package/dist/eval/improver/fixBriefCli.js +46 -0
- package/dist/eval/improver/fixBriefCli.js.map +1 -0
- package/dist/eval/improver/flakeDetection.d.ts +50 -0
- package/dist/eval/improver/flakeDetection.d.ts.map +1 -0
- package/dist/eval/improver/flakeDetection.js +0 -0
- package/dist/eval/improver/flakeDetection.js.map +1 -0
- package/dist/eval/improver/flakeDetectionCli.d.ts +8 -0
- package/dist/eval/improver/flakeDetectionCli.d.ts.map +1 -0
- package/dist/eval/improver/flakeDetectionCli.js +27 -0
- package/dist/eval/improver/flakeDetectionCli.js.map +1 -0
- package/dist/eval/improver/heldout.d.ts +44 -0
- package/dist/eval/improver/heldout.d.ts.map +1 -0
- package/dist/eval/improver/heldout.js +52 -0
- package/dist/eval/improver/heldout.js.map +1 -0
- package/dist/eval/improver/knowledgeFeedback.d.ts +56 -0
- package/dist/eval/improver/knowledgeFeedback.d.ts.map +1 -0
- package/dist/eval/improver/knowledgeFeedback.js +88 -0
- package/dist/eval/improver/knowledgeFeedback.js.map +1 -0
- package/dist/eval/improver/knowledgeFeedbackCli.d.ts +8 -0
- package/dist/eval/improver/knowledgeFeedbackCli.d.ts.map +1 -0
- package/dist/eval/improver/knowledgeFeedbackCli.js +28 -0
- package/dist/eval/improver/knowledgeFeedbackCli.js.map +1 -0
- package/dist/eval/improver/report.d.ts +36 -0
- package/dist/eval/improver/report.d.ts.map +1 -0
- package/dist/eval/improver/report.js +61 -0
- package/dist/eval/improver/report.js.map +1 -0
- package/dist/eval/improver/reportCli.d.ts +7 -0
- package/dist/eval/improver/reportCli.d.ts.map +1 -0
- package/dist/eval/improver/reportCli.js +27 -0
- package/dist/eval/improver/reportCli.js.map +1 -0
- package/dist/eval/oracle/actualArtifactResolution.d.ts +49 -0
- package/dist/eval/oracle/actualArtifactResolution.d.ts.map +1 -0
- package/dist/eval/oracle/actualArtifactResolution.js +73 -0
- package/dist/eval/oracle/actualArtifactResolution.js.map +1 -0
- package/dist/eval/oracle/cli.d.ts +30 -0
- package/dist/eval/oracle/cli.d.ts.map +1 -0
- package/dist/eval/oracle/cli.js +179 -0
- package/dist/eval/oracle/cli.js.map +1 -0
- package/dist/eval/oracle/diff.d.ts +26 -0
- package/dist/eval/oracle/diff.d.ts.map +1 -0
- package/dist/eval/oracle/diff.js +51 -0
- package/dist/eval/oracle/diff.js.map +1 -0
- package/dist/eval/oracle/index.d.ts +81 -0
- package/dist/eval/oracle/index.d.ts.map +1 -0
- package/dist/eval/oracle/index.js +55 -0
- package/dist/eval/oracle/index.js.map +1 -0
- package/dist/eval/oracle/normalize.d.ts +85 -0
- package/dist/eval/oracle/normalize.d.ts.map +1 -0
- package/dist/eval/oracle/normalize.js +321 -0
- package/dist/eval/oracle/normalize.js.map +1 -0
- package/dist/eval/oracle/score.d.ts +26 -0
- package/dist/eval/oracle/score.d.ts.map +1 -0
- package/dist/eval/oracle/score.js +15 -0
- package/dist/eval/oracle/score.js.map +1 -0
- package/dist/eval/oracle/systest.d.ts +30 -0
- package/dist/eval/oracle/systest.d.ts.map +1 -0
- package/dist/eval/oracle/systest.js +98 -0
- package/dist/eval/oracle/systest.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +753 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/customFilters.d.ts +10 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/customFilters.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/customFilters.js +38 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/customFilters.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/fields.d.ts +21 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/fields.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/fields.js +168 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/fields.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/panels.d.ts +9 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/panels.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/panels.js +47 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/panels.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/toolbar.d.ts +16 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/toolbar.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/toolbar.js +124 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/toolbar.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/workspaceSections.d.ts +12 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/workspaceSections.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/workspaceSections.js +36 -0
- package/dist/knowledge/formPatterns/catalog/subPatterns/workspaceSections.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/common.d.ts +11 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/common.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/common.js +37 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/common.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/detailsMaster.d.ts +8 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/detailsMaster.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/detailsMaster.js +86 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/detailsMaster.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/detailsTransaction.d.ts +7 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/detailsTransaction.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/detailsTransaction.js +69 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/detailsTransaction.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/dialog.d.ts +14 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/dialog.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/dialog.js +187 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/dialog.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/factBox.d.ts +10 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/factBox.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/factBox.js +54 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/factBox.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/listPage.d.ts +7 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/listPage.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/listPage.js +33 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/listPage.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/lookup.d.ts +10 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/lookup.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/lookup.js +95 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/lookup.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleDetails.d.ts +16 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleDetails.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleDetails.js +158 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleDetails.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleList.d.ts +7 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleList.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleList.js +34 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleList.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleListDetails.d.ts +9 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleListDetails.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleListDetails.js +99 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/simpleListDetails.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/tableOfContents.d.ts +8 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/tableOfContents.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/tableOfContents.js +95 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/tableOfContents.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/task.d.ts +9 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/task.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/task.js +42 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/task.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/wizard.d.ts +7 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/wizard.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/wizard.js +42 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/wizard.js.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/workspace.d.ts +17 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/workspace.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/workspace.js +157 -0
- package/dist/knowledge/formPatterns/catalog/topLevel/workspace.js.map +1 -0
- package/dist/knowledge/formPatterns/crossCheck.d.ts +44 -0
- package/dist/knowledge/formPatterns/crossCheck.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/crossCheck.js +109 -0
- package/dist/knowledge/formPatterns/crossCheck.js.map +1 -0
- package/dist/knowledge/formPatterns/index.d.ts +30 -0
- package/dist/knowledge/formPatterns/index.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/index.js +158 -0
- package/dist/knowledge/formPatterns/index.js.map +1 -0
- package/dist/knowledge/formPatterns/methodStubs.d.ts +45 -0
- package/dist/knowledge/formPatterns/methodStubs.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/methodStubs.js +257 -0
- package/dist/knowledge/formPatterns/methodStubs.js.map +1 -0
- package/dist/knowledge/formPatterns/types.d.ts +115 -0
- package/dist/knowledge/formPatterns/types.d.ts.map +1 -0
- package/dist/knowledge/formPatterns/types.js +44 -0
- package/dist/knowledge/formPatterns/types.js.map +1 -0
- package/dist/metadata/enhancedParser.d.ts +91 -0
- package/dist/metadata/enhancedParser.d.ts.map +1 -0
- package/dist/metadata/enhancedParser.js +379 -0
- package/dist/metadata/enhancedParser.js.map +1 -0
- package/dist/metadata/formPatternMiner.d.ts +78 -0
- package/dist/metadata/formPatternMiner.d.ts.map +1 -0
- package/dist/metadata/formPatternMiner.js +220 -0
- package/dist/metadata/formPatternMiner.js.map +1 -0
- package/dist/metadata/labelParser.d.ts +71 -0
- package/dist/metadata/labelParser.d.ts.map +1 -0
- package/dist/metadata/labelParser.js +258 -0
- package/dist/metadata/labelParser.js.map +1 -0
- package/dist/metadata/symbolCountsWorker.d.ts +16 -0
- package/dist/metadata/symbolCountsWorker.d.ts.map +1 -0
- package/dist/metadata/symbolCountsWorker.js +42 -0
- package/dist/metadata/symbolCountsWorker.js.map +1 -0
- package/dist/metadata/symbolIndex.d.ts +474 -0
- package/dist/metadata/symbolIndex.d.ts.map +1 -0
- package/dist/metadata/symbolIndex.js +3152 -0
- package/dist/metadata/symbolIndex.js.map +1 -0
- package/dist/metadata/types.d.ts +267 -0
- package/dist/metadata/types.d.ts.map +1 -0
- package/dist/metadata/types.js +5 -0
- package/dist/metadata/types.js.map +1 -0
- package/dist/metadata/xmlParser.d.ts +232 -0
- package/dist/metadata/xmlParser.d.ts.map +1 -0
- package/dist/metadata/xmlParser.js +1021 -0
- package/dist/metadata/xmlParser.js.map +1 -0
- package/dist/metadata/xppDeclaration.d.ts +116 -0
- package/dist/metadata/xppDeclaration.d.ts.map +1 -0
- package/dist/metadata/xppDeclaration.js +350 -0
- package/dist/metadata/xppDeclaration.js.map +1 -0
- package/dist/middleware/apiKeyAuth.d.ts +7 -0
- package/dist/middleware/apiKeyAuth.d.ts.map +1 -0
- package/dist/middleware/apiKeyAuth.js +70 -0
- package/dist/middleware/apiKeyAuth.js.map +1 -0
- package/dist/middleware/rateLimiter.d.ts +7 -0
- package/dist/middleware/rateLimiter.d.ts.map +1 -0
- package/dist/middleware/rateLimiter.js +78 -0
- package/dist/middleware/rateLimiter.js.map +1 -0
- package/dist/prompts/codeReview.d.ts +8 -0
- package/dist/prompts/codeReview.d.ts.map +1 -0
- package/dist/prompts/codeReview.js +619 -0
- package/dist/prompts/codeReview.js.map +1 -0
- package/dist/prompts/index.d.ts +6 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +6 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/systemInstructions.d.ts +33 -0
- package/dist/prompts/systemInstructions.d.ts.map +1 -0
- package/dist/prompts/systemInstructions.js +154 -0
- package/dist/prompts/systemInstructions.js.map +1 -0
- package/dist/resources/classResource.d.ts +17 -0
- package/dist/resources/classResource.d.ts.map +1 -0
- package/dist/resources/classResource.js +33 -0
- package/dist/resources/classResource.js.map +1 -0
- package/dist/resources/index.d.ts +20 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +154 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/server/mcpServer.d.ts +11 -0
- package/dist/server/mcpServer.d.ts.map +1 -0
- package/dist/server/mcpServer.js +185 -0
- package/dist/server/mcpServer.js.map +1 -0
- package/dist/server/serverMode.d.ts +53 -0
- package/dist/server/serverMode.d.ts.map +1 -0
- package/dist/server/serverMode.js +72 -0
- package/dist/server/serverMode.js.map +1 -0
- package/dist/server/toolAnnotations.d.ts +28 -0
- package/dist/server/toolAnnotations.d.ts.map +1 -0
- package/dist/server/toolAnnotations.js +70 -0
- package/dist/server/toolAnnotations.js.map +1 -0
- package/dist/server/toolSchemas/analyzeCode.d.ts +71 -0
- package/dist/server/toolSchemas/analyzeCode.d.ts.map +1 -0
- package/dist/server/toolSchemas/analyzeCode.js +50 -0
- package/dist/server/toolSchemas/analyzeCode.js.map +1 -0
- package/dist/server/toolSchemas/batchGetInfo.d.ts +32 -0
- package/dist/server/toolSchemas/batchGetInfo.d.ts.map +1 -0
- package/dist/server/toolSchemas/batchGetInfo.js +35 -0
- package/dist/server/toolSchemas/batchGetInfo.js.map +1 -0
- package/dist/server/toolSchemas/buildD365foProject.d.ts +44 -0
- package/dist/server/toolSchemas/buildD365foProject.d.ts.map +1 -0
- package/dist/server/toolSchemas/buildD365foProject.js +47 -0
- package/dist/server/toolSchemas/buildD365foProject.js.map +1 -0
- package/dist/server/toolSchemas/d365foFile.d.ts +99 -0
- package/dist/server/toolSchemas/d365foFile.d.ts.map +1 -0
- package/dist/server/toolSchemas/d365foFile.js +163 -0
- package/dist/server/toolSchemas/d365foFile.js.map +1 -0
- package/dist/server/toolSchemas/extensionInfo.d.ts +65 -0
- package/dist/server/toolSchemas/extensionInfo.d.ts.map +1 -0
- package/dist/server/toolSchemas/extensionInfo.js +73 -0
- package/dist/server/toolSchemas/extensionInfo.js.map +1 -0
- package/dist/server/toolSchemas/findReferences.d.ts +35 -0
- package/dist/server/toolSchemas/findReferences.d.ts.map +1 -0
- package/dist/server/toolSchemas/findReferences.js +35 -0
- package/dist/server/toolSchemas/findReferences.js.map +1 -0
- package/dist/server/toolSchemas/generateObject.d.ts +246 -0
- package/dist/server/toolSchemas/generateObject.d.ts.map +1 -0
- package/dist/server/toolSchemas/generateObject.js +158 -0
- package/dist/server/toolSchemas/generateObject.js.map +1 -0
- package/dist/server/toolSchemas/getKnowledge.d.ts +39 -0
- package/dist/server/toolSchemas/getKnowledge.d.ts.map +1 -0
- package/dist/server/toolSchemas/getKnowledge.js +46 -0
- package/dist/server/toolSchemas/getKnowledge.js.map +1 -0
- package/dist/server/toolSchemas/getMethod.d.ts +30 -0
- package/dist/server/toolSchemas/getMethod.d.ts.map +1 -0
- package/dist/server/toolSchemas/getMethod.js +34 -0
- package/dist/server/toolSchemas/getMethod.js.map +1 -0
- package/dist/server/toolSchemas/getObjectInfo.d.ts +24 -0
- package/dist/server/toolSchemas/getObjectInfo.d.ts.map +1 -0
- package/dist/server/toolSchemas/getObjectInfo.js +30 -0
- package/dist/server/toolSchemas/getObjectInfo.js.map +1 -0
- package/dist/server/toolSchemas/getWorkspaceInfo.d.ts +29 -0
- package/dist/server/toolSchemas/getWorkspaceInfo.d.ts.map +1 -0
- package/dist/server/toolSchemas/getWorkspaceInfo.js +29 -0
- package/dist/server/toolSchemas/getWorkspaceInfo.js.map +1 -0
- package/dist/server/toolSchemas/index.d.ts +1142 -0
- package/dist/server/toolSchemas/index.d.ts.map +1 -0
- package/dist/server/toolSchemas/index.js +60 -0
- package/dist/server/toolSchemas/index.js.map +1 -0
- package/dist/server/toolSchemas/labels.d.ts +172 -0
- package/dist/server/toolSchemas/labels.d.ts.map +1 -0
- package/dist/server/toolSchemas/labels.js +159 -0
- package/dist/server/toolSchemas/labels.js.map +1 -0
- package/dist/server/toolSchemas/objectPatterns.d.ts +93 -0
- package/dist/server/toolSchemas/objectPatterns.d.ts.map +1 -0
- package/dist/server/toolSchemas/objectPatterns.js +104 -0
- package/dist/server/toolSchemas/objectPatterns.js.map +1 -0
- package/dist/server/toolSchemas/prepare.d.ts +49 -0
- package/dist/server/toolSchemas/prepare.d.ts.map +1 -0
- package/dist/server/toolSchemas/prepare.js +57 -0
- package/dist/server/toolSchemas/prepare.js.map +1 -0
- package/dist/server/toolSchemas/reviewWorkspaceChanges.d.ts +20 -0
- package/dist/server/toolSchemas/reviewWorkspaceChanges.d.ts.map +1 -0
- package/dist/server/toolSchemas/reviewWorkspaceChanges.js +19 -0
- package/dist/server/toolSchemas/reviewWorkspaceChanges.js.map +1 -0
- package/dist/server/toolSchemas/runBpCheck.d.ts +36 -0
- package/dist/server/toolSchemas/runBpCheck.d.ts.map +1 -0
- package/dist/server/toolSchemas/runBpCheck.js +21 -0
- package/dist/server/toolSchemas/runBpCheck.js.map +1 -0
- package/dist/server/toolSchemas/runSystestClass.d.ts +32 -0
- package/dist/server/toolSchemas/runSystestClass.d.ts.map +1 -0
- package/dist/server/toolSchemas/runSystestClass.js +20 -0
- package/dist/server/toolSchemas/runSystestClass.js.map +1 -0
- package/dist/server/toolSchemas/search.d.ts +109 -0
- package/dist/server/toolSchemas/search.d.ts.map +1 -0
- package/dist/server/toolSchemas/search.js +123 -0
- package/dist/server/toolSchemas/search.js.map +1 -0
- package/dist/server/toolSchemas/securityInfo.d.ts +45 -0
- package/dist/server/toolSchemas/securityInfo.d.ts.map +1 -0
- package/dist/server/toolSchemas/securityInfo.js +39 -0
- package/dist/server/toolSchemas/securityInfo.js.map +1 -0
- package/dist/server/toolSchemas/suggestEdt.d.ts +29 -0
- package/dist/server/toolSchemas/suggestEdt.d.ts.map +1 -0
- package/dist/server/toolSchemas/suggestEdt.js +29 -0
- package/dist/server/toolSchemas/suggestEdt.js.map +1 -0
- package/dist/server/toolSchemas/triggerDbSync.d.ts +47 -0
- package/dist/server/toolSchemas/triggerDbSync.d.ts.map +1 -0
- package/dist/server/toolSchemas/triggerDbSync.js +31 -0
- package/dist/server/toolSchemas/triggerDbSync.js.map +1 -0
- package/dist/server/toolSchemas/undoLastModification.d.ts +20 -0
- package/dist/server/toolSchemas/undoLastModification.d.ts.map +1 -0
- package/dist/server/toolSchemas/undoLastModification.js +17 -0
- package/dist/server/toolSchemas/undoLastModification.js.map +1 -0
- package/dist/server/toolSchemas/updateSymbolIndex.d.ts +19 -0
- package/dist/server/toolSchemas/updateSymbolIndex.d.ts.map +1 -0
- package/dist/server/toolSchemas/updateSymbolIndex.js +18 -0
- package/dist/server/toolSchemas/updateSymbolIndex.js.map +1 -0
- package/dist/server/toolSchemas/validateCode.d.ts +35 -0
- package/dist/server/toolSchemas/validateCode.d.ts.map +1 -0
- package/dist/server/toolSchemas/validateCode.js +38 -0
- package/dist/server/toolSchemas/validateCode.js.map +1 -0
- package/dist/server/toolSchemas/validateObjectNaming.d.ts +33 -0
- package/dist/server/toolSchemas/validateObjectNaming.d.ts.map +1 -0
- package/dist/server/toolSchemas/validateObjectNaming.js +32 -0
- package/dist/server/toolSchemas/validateObjectNaming.js.map +1 -0
- package/dist/server/toolSchemas/verifyD365foProject.d.ts +50 -0
- package/dist/server/toolSchemas/verifyD365foProject.d.ts.map +1 -0
- package/dist/server/toolSchemas/verifyD365foProject.js +46 -0
- package/dist/server/toolSchemas/verifyD365foProject.js.map +1 -0
- package/dist/server/transport.d.ts +30 -0
- package/dist/server/transport.d.ts.map +1 -0
- package/dist/server/transport.js +391 -0
- package/dist/server/transport.js.map +1 -0
- package/dist/tools/analyzeCode.d.ts +17 -0
- package/dist/tools/analyzeCode.d.ts.map +1 -0
- package/dist/tools/analyzeCode.js +63 -0
- package/dist/tools/analyzeCode.js.map +1 -0
- package/dist/tools/analyzeCompleteness.d.ts +20 -0
- package/dist/tools/analyzeCompleteness.d.ts.map +1 -0
- package/dist/tools/analyzeCompleteness.js +103 -0
- package/dist/tools/analyzeCompleteness.js.map +1 -0
- package/dist/tools/analyzeExtensionPoints.d.ts +21 -0
- package/dist/tools/analyzeExtensionPoints.d.ts.map +1 -0
- package/dist/tools/analyzeExtensionPoints.js +343 -0
- package/dist/tools/analyzeExtensionPoints.js.map +1 -0
- package/dist/tools/analyzePatterns.d.ts +20 -0
- package/dist/tools/analyzePatterns.d.ts.map +1 -0
- package/dist/tools/analyzePatterns.js +71 -0
- package/dist/tools/analyzePatterns.js.map +1 -0
- package/dist/tools/apiUsagePatterns.d.ts +20 -0
- package/dist/tools/apiUsagePatterns.d.ts.map +1 -0
- package/dist/tools/apiUsagePatterns.js +136 -0
- package/dist/tools/apiUsagePatterns.js.map +1 -0
- package/dist/tools/batchGetInfo.d.ts +50 -0
- package/dist/tools/batchGetInfo.d.ts.map +1 -0
- package/dist/tools/batchGetInfo.js +52 -0
- package/dist/tools/batchGetInfo.js.map +1 -0
- package/dist/tools/batchSearch.d.ts +64 -0
- package/dist/tools/batchSearch.d.ts.map +1 -0
- package/dist/tools/batchSearch.js +265 -0
- package/dist/tools/batchSearch.js.map +1 -0
- package/dist/tools/buildProject.d.ts +28 -0
- package/dist/tools/buildProject.d.ts.map +1 -0
- package/dist/tools/buildProject.js +929 -0
- package/dist/tools/buildProject.js.map +1 -0
- package/dist/tools/classInfo.d.ts +8 -0
- package/dist/tools/classInfo.d.ts.map +1 -0
- package/dist/tools/classInfo.js +235 -0
- package/dist/tools/classInfo.js.map +1 -0
- package/dist/tools/codeGen.d.ts +19 -0
- package/dist/tools/codeGen.d.ts.map +1 -0
- package/dist/tools/codeGen.js +1956 -0
- package/dist/tools/codeGen.js.map +1 -0
- package/dist/tools/completion.d.ts +8 -0
- package/dist/tools/completion.d.ts.map +1 -0
- package/dist/tools/completion.js +272 -0
- package/dist/tools/completion.js.map +1 -0
- package/dist/tools/configKeyInfo.d.ts +22 -0
- package/dist/tools/configKeyInfo.d.ts.map +1 -0
- package/dist/tools/configKeyInfo.js +74 -0
- package/dist/tools/configKeyInfo.js.map +1 -0
- package/dist/tools/createD365File.d.ts +479 -0
- package/dist/tools/createD365File.d.ts.map +1 -0
- package/dist/tools/createD365File.js +4185 -0
- package/dist/tools/createD365File.js.map +1 -0
- package/dist/tools/createLabel.d.ts +51 -0
- package/dist/tools/createLabel.d.ts.map +1 -0
- package/dist/tools/createLabel.js +761 -0
- package/dist/tools/createLabel.js.map +1 -0
- package/dist/tools/d365foErrorHelp.d.ts +29 -0
- package/dist/tools/d365foErrorHelp.d.ts.map +1 -0
- package/dist/tools/d365foErrorHelp.js +389 -0
- package/dist/tools/d365foErrorHelp.js.map +1 -0
- package/dist/tools/d365foFile.d.ts +20 -0
- package/dist/tools/d365foFile.d.ts.map +1 -0
- package/dist/tools/d365foFile.js +58 -0
- package/dist/tools/d365foFile.js.map +1 -0
- package/dist/tools/d365foFileOpSpecs.d.ts +41 -0
- package/dist/tools/d365foFileOpSpecs.d.ts.map +1 -0
- package/dist/tools/d365foFileOpSpecs.js +336 -0
- package/dist/tools/d365foFileOpSpecs.js.map +1 -0
- package/dist/tools/dataEntityInfo.d.ts +23 -0
- package/dist/tools/dataEntityInfo.d.ts.map +1 -0
- package/dist/tools/dataEntityInfo.js +45 -0
- package/dist/tools/dataEntityInfo.js.map +1 -0
- package/dist/tools/dataEntityXml.d.ts +31 -0
- package/dist/tools/dataEntityXml.d.ts.map +1 -0
- package/dist/tools/dataEntityXml.js +131 -0
- package/dist/tools/dataEntityXml.js.map +1 -0
- package/dist/tools/dbSync.d.ts +8 -0
- package/dist/tools/dbSync.d.ts.map +1 -0
- package/dist/tools/dbSync.js +285 -0
- package/dist/tools/dbSync.js.map +1 -0
- package/dist/tools/edtInfo.d.ts +23 -0
- package/dist/tools/edtInfo.d.ts.map +1 -0
- package/dist/tools/edtInfo.js +122 -0
- package/dist/tools/edtInfo.js.map +1 -0
- package/dist/tools/enumInfo.d.ts +17 -0
- package/dist/tools/enumInfo.d.ts.map +1 -0
- package/dist/tools/enumInfo.js +44 -0
- package/dist/tools/enumInfo.js.map +1 -0
- package/dist/tools/extensionInfo.d.ts +26 -0
- package/dist/tools/extensionInfo.d.ts.map +1 -0
- package/dist/tools/extensionInfo.js +73 -0
- package/dist/tools/extensionInfo.js.map +1 -0
- package/dist/tools/extensionSearch.d.ts +20 -0
- package/dist/tools/extensionSearch.d.ts.map +1 -0
- package/dist/tools/extensionSearch.js +72 -0
- package/dist/tools/extensionSearch.js.map +1 -0
- package/dist/tools/extensionStrategyAdvisor.d.ts +15 -0
- package/dist/tools/extensionStrategyAdvisor.d.ts.map +1 -0
- package/dist/tools/extensionStrategyAdvisor.js +519 -0
- package/dist/tools/extensionStrategyAdvisor.js.map +1 -0
- package/dist/tools/findCocExtensions.d.ts +20 -0
- package/dist/tools/findCocExtensions.d.ts.map +1 -0
- package/dist/tools/findCocExtensions.js +285 -0
- package/dist/tools/findCocExtensions.js.map +1 -0
- package/dist/tools/findEventHandlers.d.ts +21 -0
- package/dist/tools/findEventHandlers.d.ts.map +1 -0
- package/dist/tools/findEventHandlers.js +196 -0
- package/dist/tools/findEventHandlers.js.map +1 -0
- package/dist/tools/findReferences.d.ts +30 -0
- package/dist/tools/findReferences.d.ts.map +1 -0
- package/dist/tools/findReferences.js +551 -0
- package/dist/tools/findReferences.js.map +1 -0
- package/dist/tools/formInfo.d.ts +13 -0
- package/dist/tools/formInfo.d.ts.map +1 -0
- package/dist/tools/formInfo.js +407 -0
- package/dist/tools/formInfo.js.map +1 -0
- package/dist/tools/formPattern.d.ts +19 -0
- package/dist/tools/formPattern.d.ts.map +1 -0
- package/dist/tools/formPattern.js +52 -0
- package/dist/tools/formPattern.js.map +1 -0
- package/dist/tools/generateD365Xml.d.ts +12 -0
- package/dist/tools/generateD365Xml.d.ts.map +1 -0
- package/dist/tools/generateD365Xml.js +1454 -0
- package/dist/tools/generateD365Xml.js.map +1 -0
- package/dist/tools/generateFindMethods.d.ts +69 -0
- package/dist/tools/generateFindMethods.d.ts.map +1 -0
- package/dist/tools/generateFindMethods.js +207 -0
- package/dist/tools/generateFindMethods.js.map +1 -0
- package/dist/tools/generateMetadata.d.ts +37 -0
- package/dist/tools/generateMetadata.d.ts.map +1 -0
- package/dist/tools/generateMetadata.js +213 -0
- package/dist/tools/generateMetadata.js.map +1 -0
- package/dist/tools/generateObject.d.ts +34 -0
- package/dist/tools/generateObject.d.ts.map +1 -0
- package/dist/tools/generateObject.js +47 -0
- package/dist/tools/generateObject.js.map +1 -0
- package/dist/tools/generateRelationXpp.d.ts +45 -0
- package/dist/tools/generateRelationXpp.d.ts.map +1 -0
- package/dist/tools/generateRelationXpp.js +129 -0
- package/dist/tools/generateRelationXpp.js.map +1 -0
- package/dist/tools/generateSmart.d.ts +32 -0
- package/dist/tools/generateSmart.d.ts.map +1 -0
- package/dist/tools/generateSmart.js +52 -0
- package/dist/tools/generateSmart.js.map +1 -0
- package/dist/tools/generateSmartForm.d.ts +82 -0
- package/dist/tools/generateSmartForm.d.ts.map +1 -0
- package/dist/tools/generateSmartForm.js +996 -0
- package/dist/tools/generateSmartForm.js.map +1 -0
- package/dist/tools/generateSmartReport.d.ts +90 -0
- package/dist/tools/generateSmartReport.d.ts.map +1 -0
- package/dist/tools/generateSmartReport.js +1254 -0
- package/dist/tools/generateSmartReport.js.map +1 -0
- package/dist/tools/generateSmartTable.d.ts +138 -0
- package/dist/tools/generateSmartTable.d.ts.map +1 -0
- package/dist/tools/generateSmartTable.js +1305 -0
- package/dist/tools/generateSmartTable.js.map +1 -0
- package/dist/tools/generateTableFields.d.ts +48 -0
- package/dist/tools/generateTableFields.d.ts.map +1 -0
- package/dist/tools/generateTableFields.js +186 -0
- package/dist/tools/generateTableFields.js.map +1 -0
- package/dist/tools/generateTableRelation.d.ts +35 -0
- package/dist/tools/generateTableRelation.d.ts.map +1 -0
- package/dist/tools/generateTableRelation.js +161 -0
- package/dist/tools/generateTableRelation.js.map +1 -0
- package/dist/tools/getFormPatternSpec.d.ts +13 -0
- package/dist/tools/getFormPatternSpec.d.ts.map +1 -0
- package/dist/tools/getFormPatternSpec.js +290 -0
- package/dist/tools/getFormPatternSpec.js.map +1 -0
- package/dist/tools/getFormPatterns.d.ts +68 -0
- package/dist/tools/getFormPatterns.d.ts.map +1 -0
- package/dist/tools/getFormPatterns.js +471 -0
- package/dist/tools/getFormPatterns.js.map +1 -0
- package/dist/tools/getKnowledge.d.ts +27 -0
- package/dist/tools/getKnowledge.d.ts.map +1 -0
- package/dist/tools/getKnowledge.js +50 -0
- package/dist/tools/getKnowledge.js.map +1 -0
- package/dist/tools/getLabelInfo.d.ts +21 -0
- package/dist/tools/getLabelInfo.d.ts.map +1 -0
- package/dist/tools/getLabelInfo.js +138 -0
- package/dist/tools/getLabelInfo.js.map +1 -0
- package/dist/tools/getMethod.d.ts +19 -0
- package/dist/tools/getMethod.d.ts.map +1 -0
- package/dist/tools/getMethod.js +77 -0
- package/dist/tools/getMethod.js.map +1 -0
- package/dist/tools/getMethodSource.d.ts +17 -0
- package/dist/tools/getMethodSource.d.ts.map +1 -0
- package/dist/tools/getMethodSource.js +161 -0
- package/dist/tools/getMethodSource.js.map +1 -0
- package/dist/tools/getObjectInfo.d.ts +17 -0
- package/dist/tools/getObjectInfo.d.ts.map +1 -0
- package/dist/tools/getObjectInfo.js +88 -0
- package/dist/tools/getObjectInfo.js.map +1 -0
- package/dist/tools/getTablePatterns.d.ts +45 -0
- package/dist/tools/getTablePatterns.d.ts.map +1 -0
- package/dist/tools/getTablePatterns.js +235 -0
- package/dist/tools/getTablePatterns.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/labels.d.ts +25 -0
- package/dist/tools/labels.d.ts.map +1 -0
- package/dist/tools/labels.js +111 -0
- package/dist/tools/labels.js.map +1 -0
- package/dist/tools/macroInfo.d.ts +23 -0
- package/dist/tools/macroInfo.d.ts.map +1 -0
- package/dist/tools/macroInfo.js +62 -0
- package/dist/tools/macroInfo.js.map +1 -0
- package/dist/tools/mapInfo.d.ts +21 -0
- package/dist/tools/mapInfo.d.ts.map +1 -0
- package/dist/tools/mapInfo.js +54 -0
- package/dist/tools/mapInfo.js.map +1 -0
- package/dist/tools/mapXml.d.ts +26 -0
- package/dist/tools/mapXml.d.ts.map +1 -0
- package/dist/tools/mapXml.js +88 -0
- package/dist/tools/mapXml.js.map +1 -0
- package/dist/tools/menuItemInfo.d.ts +20 -0
- package/dist/tools/menuItemInfo.d.ts.map +1 -0
- package/dist/tools/menuItemInfo.js +185 -0
- package/dist/tools/menuItemInfo.js.map +1 -0
- package/dist/tools/methodSignature.d.ts +33 -0
- package/dist/tools/methodSignature.d.ts.map +1 -0
- package/dist/tools/methodSignature.js +348 -0
- package/dist/tools/methodSignature.js.map +1 -0
- package/dist/tools/modifyD365File.d.ts +130 -0
- package/dist/tools/modifyD365File.d.ts.map +1 -0
- package/dist/tools/modifyD365File.js +2179 -0
- package/dist/tools/modifyD365File.js.map +1 -0
- package/dist/tools/objectInfoRegistry.d.ts +36 -0
- package/dist/tools/objectInfoRegistry.d.ts.map +1 -0
- package/dist/tools/objectInfoRegistry.js +98 -0
- package/dist/tools/objectInfoRegistry.js.map +1 -0
- package/dist/tools/objectPatterns.d.ts +16 -0
- package/dist/tools/objectPatterns.d.ts.map +1 -0
- package/dist/tools/objectPatterns.js +84 -0
- package/dist/tools/objectPatterns.js.map +1 -0
- package/dist/tools/prepare.d.ts +18 -0
- package/dist/tools/prepare.d.ts.map +1 -0
- package/dist/tools/prepare.js +47 -0
- package/dist/tools/prepare.js.map +1 -0
- package/dist/tools/prepareChange.d.ts +43 -0
- package/dist/tools/prepareChange.d.ts.map +1 -0
- package/dist/tools/prepareChange.js +327 -0
- package/dist/tools/prepareChange.js.map +1 -0
- package/dist/tools/prepareCreate.d.ts +45 -0
- package/dist/tools/prepareCreate.d.ts.map +1 -0
- package/dist/tools/prepareCreate.js +263 -0
- package/dist/tools/prepareCreate.js.map +1 -0
- package/dist/tools/queryInfo.d.ts +17 -0
- package/dist/tools/queryInfo.d.ts.map +1 -0
- package/dist/tools/queryInfo.js +46 -0
- package/dist/tools/queryInfo.js.map +1 -0
- package/dist/tools/queryViewXml.d.ts +36 -0
- package/dist/tools/queryViewXml.d.ts.map +1 -0
- package/dist/tools/queryViewXml.js +129 -0
- package/dist/tools/queryViewXml.js.map +1 -0
- package/dist/tools/renameLabel.d.ts +29 -0
- package/dist/tools/renameLabel.d.ts.map +1 -0
- package/dist/tools/renameLabel.js +377 -0
- package/dist/tools/renameLabel.js.map +1 -0
- package/dist/tools/repairFormControls.d.ts +21 -0
- package/dist/tools/repairFormControls.d.ts.map +1 -0
- package/dist/tools/repairFormControls.js +151 -0
- package/dist/tools/repairFormControls.js.map +1 -0
- package/dist/tools/reportInfo.d.ts +14 -0
- package/dist/tools/reportInfo.d.ts.map +1 -0
- package/dist/tools/reportInfo.js +302 -0
- package/dist/tools/reportInfo.js.map +1 -0
- package/dist/tools/resolveReferences.d.ts +89 -0
- package/dist/tools/resolveReferences.d.ts.map +1 -0
- package/dist/tools/resolveReferences.js +791 -0
- package/dist/tools/resolveReferences.js.map +1 -0
- package/dist/tools/reviewWorkspaceChanges.d.ts +14 -0
- package/dist/tools/reviewWorkspaceChanges.d.ts.map +1 -0
- package/dist/tools/reviewWorkspaceChanges.js +73 -0
- package/dist/tools/reviewWorkspaceChanges.js.map +1 -0
- package/dist/tools/runBpCheck.d.ts +14 -0
- package/dist/tools/runBpCheck.d.ts.map +1 -0
- package/dist/tools/runBpCheck.js +241 -0
- package/dist/tools/runBpCheck.js.map +1 -0
- package/dist/tools/search.d.ts +20 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +246 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/searchLabels.d.ts +26 -0
- package/dist/tools/searchLabels.d.ts.map +1 -0
- package/dist/tools/searchLabels.js +91 -0
- package/dist/tools/searchLabels.js.map +1 -0
- package/dist/tools/searchUnified.d.ts +28 -0
- package/dist/tools/searchUnified.d.ts.map +1 -0
- package/dist/tools/searchUnified.js +48 -0
- package/dist/tools/searchUnified.js.map +1 -0
- package/dist/tools/securityArtifactInfo.d.ts +14 -0
- package/dist/tools/securityArtifactInfo.d.ts.map +1 -0
- package/dist/tools/securityArtifactInfo.js +192 -0
- package/dist/tools/securityArtifactInfo.js.map +1 -0
- package/dist/tools/securityCoverageInfo.d.ts +21 -0
- package/dist/tools/securityCoverageInfo.d.ts.map +1 -0
- package/dist/tools/securityCoverageInfo.js +248 -0
- package/dist/tools/securityCoverageInfo.js.map +1 -0
- package/dist/tools/securityInfo.d.ts +22 -0
- package/dist/tools/securityInfo.d.ts.map +1 -0
- package/dist/tools/securityInfo.js +43 -0
- package/dist/tools/securityInfo.js.map +1 -0
- package/dist/tools/securityPolicyInfo.d.ts +22 -0
- package/dist/tools/securityPolicyInfo.d.ts.map +1 -0
- package/dist/tools/securityPolicyInfo.js +49 -0
- package/dist/tools/securityPolicyInfo.js.map +1 -0
- package/dist/tools/securityPrivilegeXml.d.ts +21 -0
- package/dist/tools/securityPrivilegeXml.d.ts.map +1 -0
- package/dist/tools/securityPrivilegeXml.js +61 -0
- package/dist/tools/securityPrivilegeXml.js.map +1 -0
- package/dist/tools/serviceInfo.d.ts +25 -0
- package/dist/tools/serviceInfo.d.ts.map +1 -0
- package/dist/tools/serviceInfo.js +93 -0
- package/dist/tools/serviceInfo.js.map +1 -0
- package/dist/tools/suggestEdt.d.ts +15 -0
- package/dist/tools/suggestEdt.d.ts.map +1 -0
- package/dist/tools/suggestEdt.js +348 -0
- package/dist/tools/suggestEdt.js.map +1 -0
- package/dist/tools/suggestImplementation.d.ts +20 -0
- package/dist/tools/suggestImplementation.d.ts.map +1 -0
- package/dist/tools/suggestImplementation.js +144 -0
- package/dist/tools/suggestImplementation.js.map +1 -0
- package/dist/tools/sysTestRunner.d.ts +14 -0
- package/dist/tools/sysTestRunner.d.ts.map +1 -0
- package/dist/tools/sysTestRunner.js +145 -0
- package/dist/tools/sysTestRunner.js.map +1 -0
- package/dist/tools/tableExtensionInfo.d.ts +91 -0
- package/dist/tools/tableExtensionInfo.d.ts.map +1 -0
- package/dist/tools/tableExtensionInfo.js +305 -0
- package/dist/tools/tableExtensionInfo.js.map +1 -0
- package/dist/tools/tableInfo.d.ts +23 -0
- package/dist/tools/tableInfo.d.ts.map +1 -0
- package/dist/tools/tableInfo.js +125 -0
- package/dist/tools/tableInfo.js.map +1 -0
- package/dist/tools/toolHandler.d.ts +4 -0
- package/dist/tools/toolHandler.d.ts.map +1 -0
- package/dist/tools/toolHandler.js +508 -0
- package/dist/tools/toolHandler.js.map +1 -0
- package/dist/tools/undoLastModification.d.ts +15 -0
- package/dist/tools/undoLastModification.d.ts.map +1 -0
- package/dist/tools/undoLastModification.js +147 -0
- package/dist/tools/undoLastModification.js.map +1 -0
- package/dist/tools/updateSymbolIndex.d.ts +15 -0
- package/dist/tools/updateSymbolIndex.d.ts.map +1 -0
- package/dist/tools/updateSymbolIndex.js +520 -0
- package/dist/tools/updateSymbolIndex.js.map +1 -0
- package/dist/tools/validateCode.d.ts +24 -0
- package/dist/tools/validateCode.d.ts.map +1 -0
- package/dist/tools/validateCode.js +201 -0
- package/dist/tools/validateCode.js.map +1 -0
- package/dist/tools/validateFormPattern.d.ts +51 -0
- package/dist/tools/validateFormPattern.d.ts.map +1 -0
- package/dist/tools/validateFormPattern.js +201 -0
- package/dist/tools/validateFormPattern.js.map +1 -0
- package/dist/tools/validateObjectNaming.d.ts +21 -0
- package/dist/tools/validateObjectNaming.d.ts.map +1 -0
- package/dist/tools/validateObjectNaming.js +319 -0
- package/dist/tools/validateObjectNaming.js.map +1 -0
- package/dist/tools/validateXpp.d.ts +79 -0
- package/dist/tools/validateXpp.d.ts.map +1 -0
- package/dist/tools/validateXpp.js +705 -0
- package/dist/tools/validateXpp.js.map +1 -0
- package/dist/tools/verifyD365Project.d.ts +21 -0
- package/dist/tools/verifyD365Project.d.ts.map +1 -0
- package/dist/tools/verifyD365Project.js +299 -0
- package/dist/tools/verifyD365Project.js.map +1 -0
- package/dist/tools/viewInfo.d.ts +17 -0
- package/dist/tools/viewInfo.d.ts.map +1 -0
- package/dist/tools/viewInfo.js +46 -0
- package/dist/tools/viewInfo.js.map +1 -0
- package/dist/tools/xppKnowledge.d.ts +45 -0
- package/dist/tools/xppKnowledge.d.ts.map +1 -0
- package/dist/tools/xppKnowledge.js +2815 -0
- package/dist/tools/xppKnowledge.js.map +1 -0
- package/dist/types/context.d.ts +56 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +5 -0
- package/dist/types/context.js.map +1 -0
- package/dist/utils/callDedup.d.ts +29 -0
- package/dist/utils/callDedup.d.ts.map +1 -0
- package/dist/utils/callDedup.js +87 -0
- package/dist/utils/callDedup.js.map +1 -0
- package/dist/utils/configManager.d.ts +307 -0
- package/dist/utils/configManager.d.ts.map +1 -0
- package/dist/utils/configManager.js +1169 -0
- package/dist/utils/configManager.js.map +1 -0
- package/dist/utils/d365XmlNormalizer.d.ts +9 -0
- package/dist/utils/d365XmlNormalizer.d.ts.map +1 -0
- package/dist/utils/d365XmlNormalizer.js +24 -0
- package/dist/utils/d365XmlNormalizer.js.map +1 -0
- package/dist/utils/edtExtensionValidator.d.ts +110 -0
- package/dist/utils/edtExtensionValidator.d.ts.map +1 -0
- package/dist/utils/edtExtensionValidator.js +367 -0
- package/dist/utils/edtExtensionValidator.js.map +1 -0
- package/dist/utils/eolUtils.d.ts +15 -0
- package/dist/utils/eolUtils.d.ts.map +1 -0
- package/dist/utils/eolUtils.js +21 -0
- package/dist/utils/eolUtils.js.map +1 -0
- package/dist/utils/extractManifest.d.ts +34 -0
- package/dist/utils/extractManifest.d.ts.map +1 -0
- package/dist/utils/extractManifest.js +43 -0
- package/dist/utils/extractManifest.js.map +1 -0
- package/dist/utils/fieldControlTypes.d.ts +44 -0
- package/dist/utils/fieldControlTypes.d.ts.map +1 -0
- package/dist/utils/fieldControlTypes.js +97 -0
- package/dist/utils/fieldControlTypes.js.map +1 -0
- package/dist/utils/formCloner.d.ts +77 -0
- package/dist/utils/formCloner.d.ts.map +1 -0
- package/dist/utils/formCloner.js +364 -0
- package/dist/utils/formCloner.js.map +1 -0
- package/dist/utils/formControlExpander.d.ts +68 -0
- package/dist/utils/formControlExpander.d.ts.map +1 -0
- package/dist/utils/formControlExpander.js +207 -0
- package/dist/utils/formControlExpander.js.map +1 -0
- package/dist/utils/formControlRepair.d.ts +81 -0
- package/dist/utils/formControlRepair.d.ts.map +1 -0
- package/dist/utils/formControlRepair.js +203 -0
- package/dist/utils/formControlRepair.js.map +1 -0
- package/dist/utils/formExtensionShapeValidator.d.ts +44 -0
- package/dist/utils/formExtensionShapeValidator.d.ts.map +1 -0
- package/dist/utils/formExtensionShapeValidator.js +99 -0
- package/dist/utils/formExtensionShapeValidator.js.map +1 -0
- package/dist/utils/formPatternTemplates.d.ts +77 -0
- package/dist/utils/formPatternTemplates.d.ts.map +1 -0
- package/dist/utils/formPatternTemplates.js +1917 -0
- package/dist/utils/formPatternTemplates.js.map +1 -0
- package/dist/utils/fsExtensionScanner.d.ts +76 -0
- package/dist/utils/fsExtensionScanner.d.ts.map +1 -0
- package/dist/utils/fsExtensionScanner.js +271 -0
- package/dist/utils/fsExtensionScanner.js.map +1 -0
- package/dist/utils/fuzzyMatching.d.ts +41 -0
- package/dist/utils/fuzzyMatching.d.ts.map +1 -0
- package/dist/utils/fuzzyMatching.js +186 -0
- package/dist/utils/fuzzyMatching.js.map +1 -0
- package/dist/utils/indexStaleness.d.ts +30 -0
- package/dist/utils/indexStaleness.d.ts.map +1 -0
- package/dist/utils/indexStaleness.js +104 -0
- package/dist/utils/indexStaleness.js.map +1 -0
- package/dist/utils/loadEnv.d.ts +32 -0
- package/dist/utils/loadEnv.d.ts.map +1 -0
- package/dist/utils/loadEnv.js +83 -0
- package/dist/utils/loadEnv.js.map +1 -0
- package/dist/utils/logger.d.ts +4 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +11 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/metadataResolver.d.ts +155 -0
- package/dist/utils/metadataResolver.d.ts.map +1 -0
- package/dist/utils/metadataResolver.js +277 -0
- package/dist/utils/metadataResolver.js.map +1 -0
- package/dist/utils/modelClassifier.d.ts +180 -0
- package/dist/utils/modelClassifier.d.ts.map +1 -0
- package/dist/utils/modelClassifier.js +373 -0
- package/dist/utils/modelClassifier.js.map +1 -0
- package/dist/utils/operationLocks.d.ts +26 -0
- package/dist/utils/operationLocks.d.ts.map +1 -0
- package/dist/utils/operationLocks.js +182 -0
- package/dist/utils/operationLocks.js.map +1 -0
- package/dist/utils/packageResolver.d.ts +52 -0
- package/dist/utils/packageResolver.d.ts.map +1 -0
- package/dist/utils/packageResolver.js +174 -0
- package/dist/utils/packageResolver.js.map +1 -0
- package/dist/utils/pathContainment.d.ts +60 -0
- package/dist/utils/pathContainment.d.ts.map +1 -0
- package/dist/utils/pathContainment.js +270 -0
- package/dist/utils/pathContainment.js.map +1 -0
- package/dist/utils/projectUtils.d.ts +14 -0
- package/dist/utils/projectUtils.d.ts.map +1 -0
- package/dist/utils/projectUtils.js +48 -0
- package/dist/utils/projectUtils.js.map +1 -0
- package/dist/utils/provenanceStore.d.ts +54 -0
- package/dist/utils/provenanceStore.d.ts.map +1 -0
- package/dist/utils/provenanceStore.js +203 -0
- package/dist/utils/provenanceStore.js.map +1 -0
- package/dist/utils/richContext.d.ts +45 -0
- package/dist/utils/richContext.d.ts.map +1 -0
- package/dist/utils/richContext.js +316 -0
- package/dist/utils/richContext.js.map +1 -0
- package/dist/utils/smartXmlBuilder.d.ts +187 -0
- package/dist/utils/smartXmlBuilder.d.ts.map +1 -0
- package/dist/utils/smartXmlBuilder.js +504 -0
- package/dist/utils/smartXmlBuilder.js.map +1 -0
- package/dist/utils/stdioSessionInfo.d.ts +53 -0
- package/dist/utils/stdioSessionInfo.d.ts.map +1 -0
- package/dist/utils/stdioSessionInfo.js +47 -0
- package/dist/utils/stdioSessionInfo.js.map +1 -0
- package/dist/utils/suggestionEngine.d.ts +20 -0
- package/dist/utils/suggestionEngine.d.ts.map +1 -0
- package/dist/utils/suggestionEngine.js +145 -0
- package/dist/utils/suggestionEngine.js.map +1 -0
- package/dist/utils/symbolLookup.d.ts +60 -0
- package/dist/utils/symbolLookup.d.ts.map +1 -0
- package/dist/utils/symbolLookup.js +0 -0
- package/dist/utils/symbolLookup.js.map +1 -0
- package/dist/utils/terminalUi.d.ts +85 -0
- package/dist/utils/terminalUi.d.ts.map +1 -0
- package/dist/utils/terminalUi.js +182 -0
- package/dist/utils/terminalUi.js.map +1 -0
- package/dist/utils/toolMetrics.d.ts +32 -0
- package/dist/utils/toolMetrics.d.ts.map +1 -0
- package/dist/utils/toolMetrics.js +89 -0
- package/dist/utils/toolMetrics.js.map +1 -0
- package/dist/utils/toolProgressMessage.d.ts +8 -0
- package/dist/utils/toolProgressMessage.d.ts.map +1 -0
- package/dist/utils/toolProgressMessage.js +182 -0
- package/dist/utils/toolProgressMessage.js.map +1 -0
- package/dist/utils/workspaceDetector.d.ts +51 -0
- package/dist/utils/workspaceDetector.d.ts.map +1 -0
- package/dist/utils/workspaceDetector.js +328 -0
- package/dist/utils/workspaceDetector.js.map +1 -0
- package/dist/utils/xppConfigProvider.d.ts +48 -0
- package/dist/utils/xppConfigProvider.d.ts.map +1 -0
- package/dist/utils/xppConfigProvider.js +121 -0
- package/dist/utils/xppConfigProvider.js.map +1 -0
- package/dist/utils/xppDocGen.d.ts +39 -0
- package/dist/utils/xppDocGen.d.ts.map +1 -0
- package/dist/utils/xppDocGen.js +518 -0
- package/dist/utils/xppDocGen.js.map +1 -0
- package/dist/utils/xppFormat.d.ts +21 -0
- package/dist/utils/xppFormat.d.ts.map +1 -0
- package/dist/utils/xppFormat.js +102 -0
- package/dist/utils/xppFormat.js.map +1 -0
- package/dist/utils/xppSelectLint.d.ts +18 -0
- package/dist/utils/xppSelectLint.d.ts.map +1 -0
- package/dist/utils/xppSelectLint.js +80 -0
- package/dist/utils/xppSelectLint.js.map +1 -0
- package/dist/validation/formPatternValidator.d.ts +53 -0
- package/dist/validation/formPatternValidator.d.ts.map +1 -0
- package/dist/validation/formPatternValidator.js +454 -0
- package/dist/validation/formPatternValidator.js.map +1 -0
- package/dist/workspace/contextRanker.d.ts +58 -0
- package/dist/workspace/contextRanker.d.ts.map +1 -0
- package/dist/workspace/contextRanker.js +216 -0
- package/dist/workspace/contextRanker.js.map +1 -0
- package/dist/workspace/contextSnapshot.d.ts +68 -0
- package/dist/workspace/contextSnapshot.d.ts.map +1 -0
- package/dist/workspace/contextSnapshot.js +193 -0
- package/dist/workspace/contextSnapshot.js.map +1 -0
- package/dist/workspace/hybridSearch.d.ts +39 -0
- package/dist/workspace/hybridSearch.d.ts.map +1 -0
- package/dist/workspace/hybridSearch.js +96 -0
- package/dist/workspace/hybridSearch.js.map +1 -0
- package/dist/workspace/workspaceScanner.d.ts +95 -0
- package/dist/workspace/workspaceScanner.d.ts.map +1 -0
- package/dist/workspace/workspaceScanner.js +247 -0
- package/dist/workspace/workspaceScanner.js.map +1 -0
- package/dist/workspace/workspaceUtils.d.ts +23 -0
- package/dist/workspace/workspaceUtils.d.ts.map +1 -0
- package/dist/workspace/workspaceUtils.js +77 -0
- package/dist/workspace/workspaceUtils.js.map +1 -0
- package/package.json +94 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Instructions Prompt for X++ Development
|
|
3
|
+
* Optimized for MCP-capable AI clients (GitHub Copilot, Claude Code) in Visual Studio 2022 / 2026
|
|
4
|
+
*
|
|
5
|
+
* NOTE: This file is the MCP prompt source of truth for AI system instructions.
|
|
6
|
+
* The static instruction layers (.github/copilot-instructions.md, CLAUDE.md)
|
|
7
|
+
* mirror these rules. If you update rules here, sync them there too.
|
|
8
|
+
*
|
|
9
|
+
* Kept deliberately under 200 lines: the prompt holds only the tool decision
|
|
10
|
+
* tree and hard prohibitions. Everything that is a rule about CODE lives in
|
|
11
|
+
* the queryable knowledge base — get_xpp_knowledge (see the ID table below).
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Get the system instructions prompt definition
|
|
15
|
+
*/
|
|
16
|
+
export function getSystemInstructionsPromptDefinition() {
|
|
17
|
+
return {
|
|
18
|
+
name: 'xpp_system_instructions',
|
|
19
|
+
description: 'System instructions for AI assistants (GitHub Copilot, Claude Code) when working with D365 Finance & Operations X++ development',
|
|
20
|
+
arguments: [],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Handle the system instructions prompt request
|
|
25
|
+
*/
|
|
26
|
+
export function handleSystemInstructionsPrompt() {
|
|
27
|
+
return {
|
|
28
|
+
messages: [
|
|
29
|
+
{
|
|
30
|
+
role: 'user',
|
|
31
|
+
content: {
|
|
32
|
+
type: 'text',
|
|
33
|
+
text: `# X++ Development System Instructions
|
|
34
|
+
|
|
35
|
+
You are an AI assistant with access to D365FO MCP tools, assisting with Dynamics 365 Finance & Operations (D365FO) X++ development in Visual Studio 2022 / 2026.
|
|
36
|
+
|
|
37
|
+
## Core Principle
|
|
38
|
+
|
|
39
|
+
**Before generating ANY X++ code, ALWAYS query the MCP tools.** Your training data may be outdated — the server pre-indexes 584,799+ objects from the user's real environment (<10ms cached queries). Trust the tools, not your training data.
|
|
40
|
+
|
|
41
|
+
## Decision Tree (evaluate FIRST for every request)
|
|
42
|
+
|
|
43
|
+
1. **Creating D365FO object?** → \`prepare(mode="create")\` → generate → \`validate_code(mode="references")\` + \`validate_code(mode="syntax")\` → \`d365fo_file(action="create")\` (never \`create_file\`)
|
|
44
|
+
2. **Extending/modifying existing object?** → \`prepare(mode="change")\` → generate → \`validate_code(mode="references")\` + \`validate_code(mode="syntax")\` → confirm in chat → \`d365fo_file(action="modify")\`
|
|
45
|
+
3. **Creating a NEW form?** → \`object_patterns(domain="form", action="analyze", recommend={...})\` → \`object_patterns(domain="form", action="spec")\` → \`generate_object(mode="scaffold", objectType="form", cloneFrom=..., tableMapping=...)\` → \`object_patterns(domain="form", action="validate")\` → \`d365fo_file(action="create")\`
|
|
46
|
+
4. **Need object/field/method info?** → \`search\` (unknown names; batch via \`queries[]\`) or \`get_object_info(objectType, name)\`/\`batch_get_info\` (known names)
|
|
47
|
+
5. **How does X work / which pattern?** → \`get_knowledge(kind="knowledge", id)\` + \`analyze_code(mode="patterns", scenario)\`
|
|
48
|
+
6. **Error diagnosis?** → \`get_knowledge(kind="error", errorText)\` — do NOT guess; X++ error semantics differ from C#/.NET
|
|
49
|
+
|
|
50
|
+
## Tool Selection
|
|
51
|
+
|
|
52
|
+
| Need | Tool |
|
|
53
|
+
|------|------|
|
|
54
|
+
| Find objects by concept | \`search(query, type?)\` — multiple: \`search(queries[])\` |
|
|
55
|
+
| Only custom/ISV code | \`search(query, scope="extensions")\` |
|
|
56
|
+
| Full info for KNOWN names | \`get_object_info(objectType, name, options?)\` — objectType ∈ class/table/form/query/view/enum/edt/report/data-entity/menu-item/service/map/config-key/security-policy/macro. 2+ objects: \`batch_get_info(objects[])\` |
|
|
57
|
+
| Member names by prefix | \`get_object_info(objectType="class", name, options={members:"names", prefix})\` |
|
|
58
|
+
| Exact signature before CoC | \`get_method(include="signature")\` (included in \`prepare(mode="change")\`) |
|
|
59
|
+
| Where is X used | \`find_references(targetName)\` |
|
|
60
|
+
| Which extension mechanism | \`extension_info(mode="strategy", goal)\` BEFORE any extension work |
|
|
61
|
+
| Existing CoC / event handlers | \`extension_info(mode="coc"|"events"|"points", target)\` |
|
|
62
|
+
| Labels | \`labels(action="search")\` (reuse first) → \`labels(action="create")\` |
|
|
63
|
+
| EDT for a new field | \`suggest_edt(fieldName)\` (included in \`prepare(mode="create")\`) |
|
|
64
|
+
| Scaffold via template | \`generate_object(mode="pattern", pattern, name)\`, \`generate_object(mode="scaffold", objectType="table"|"form"|"report", name)\` |
|
|
65
|
+
| Security objects | \`security_info(mode="coverage")\` → \`generate_object(mode="pattern", pattern='security-privilege'/'menu-item')\` → \`security_info(mode="artifact")\` |
|
|
66
|
+
|
|
67
|
+
## Grounded Workflows (3 calls each)
|
|
68
|
+
|
|
69
|
+
**Extension (CoC, event handler, table/form extension):**
|
|
70
|
+
1. \`prepare(mode="change", goal, objectName, methodName?)\` — ONE call: signature, existing wrappers, eligibility, strategy + \`groundingToken\`
|
|
71
|
+
2. Generate → \`validate_code(mode="references", code)\` + \`validate_code(mode="syntax", code)\` — fix errors in the same turn
|
|
72
|
+
3. \`d365fo_file(action="create")\`/\`d365fo_file(action="modify")\` with \`groundingToken\`
|
|
73
|
+
|
|
74
|
+
**New objects:**
|
|
75
|
+
1. \`prepare(mode="create", goal, objectName, objectType, fieldsHint?)\` — ONE call: collision check, naming, EDT suggestions, labels, property defaults + \`groundingToken\`
|
|
76
|
+
2. Generate → \`validate_code(mode="references", code)\` + \`validate_code(mode="syntax", code)\` — fix errors in the same turn
|
|
77
|
+
3. \`d365fo_file(action="create", ..., groundingToken=...)\`
|
|
78
|
+
|
|
79
|
+
**New forms:** never hand-write form XML — follow Decision Tree #3 (cloning preserves patterns/sub-patterns; FP001-FP005/FP007 violations BLOCK the write). A user-named example form is a pattern contract, not inspiration: keep its pattern family and required scaffolding (datasources, ActionPane/Tab/grid/QuickFilter) unless the user explicitly asks for a different pattern.
|
|
80
|
+
|
|
81
|
+
## Hard Rules
|
|
82
|
+
|
|
83
|
+
### Target model & paths
|
|
84
|
+
- Model name and project path come from \`.mcp.json\` — **never ask the user, never scan the filesystem** (no Get-ChildItem/dir/ls/find).
|
|
85
|
+
- **Never infer the target model from search results.** Model names in results are the SOURCE model of that object. All writes go to the configured model from \`.mcp.json\`.
|
|
86
|
+
- **Never switch projects autonomously.** If a different model seems needed, ASK the user first.
|
|
87
|
+
|
|
88
|
+
### Reuse before creating
|
|
89
|
+
- \`prepare(mode="change")\` returns existing CoC wrappers and event handlers — if an extension or handler class in the custom model already owns the target object, add the new method THERE. Never create a parallel feature-named class (\`<Target>_<Feature>_Extension\`, \`<Form>_<Feature>_EH\`) unless the user explicitly asks for a separate class.
|
|
90
|
+
- **The artifact suffix is not the feature name.** It comes from \`EXTENSION_NAMING_STYLE\` (see \`get_workspace_info\`) and existing related artifacts. Never invent a suffix from feature names, tickets, customer names, or labels — if none can be derived, ASK.
|
|
91
|
+
|
|
92
|
+
### Writes apply immediately (no preview)
|
|
93
|
+
\`d365fo_file(action="modify")\` and \`d365fo_file(action="create")\` write to disk the moment they are called — VS 2022 Copilot Chat has no Keep/Undo UI. Therefore:
|
|
94
|
+
1. Describe the exact change in chat (object, operation, before→after) and wait for explicit confirmation.
|
|
95
|
+
2. Call the tool ONCE. \`isError=true\` → the change did NOT apply: fix the cause, retry. Success → it is done; do not wait for further approval.
|
|
96
|
+
3. Revert with \`undo_last_modification\` (or pass \`createBackup=true\`).
|
|
97
|
+
4. Before multi-file tasks, suggest a feature branch (\`git switch -c mcp/<task>\`) — propose, never create branches autonomously.
|
|
98
|
+
5. **The resulting diff must be additive or narrowly targeted.** After a write, verify via \`review_workspace_changes\` (or re-read with \`get_object_info\`) that no unrelated XML nodes — \`<DataSources>\`, \`<Controls>\`, methods, pattern metadata — disappeared. If they did, the edit failed: \`undo_last_modification\` and retry with a targeted operation.
|
|
99
|
+
|
|
100
|
+
### D365FO files: MCP tools ONLY
|
|
101
|
+
- ⛔ **NEVER** use \`create_file\`, \`edit_file\`, \`apply_patch\`, \`replace_string_in_file\`, \`str_replace_editor\`, or any built-in file-write tool on .xml/.xpp files — not even as a fallback. They bypass IMetadataProvider and corrupt VS 2022's in-memory model. If \`d365fo_file(action="modify")\` errors, STOP and report the error verbatim.
|
|
102
|
+
- ⛔ **NEVER** run PowerShell/Python scripts for D365FO operations — they hang in VS 2022 MCP integration. No MCP tool for it → tell the user to do it manually in the AOT.
|
|
103
|
+
- Use \`search\`/\`get_object_info\` instead of \`code_search\`/\`read_file\` for D365FO objects (avoids 350+ model folder scans).
|
|
104
|
+
|
|
105
|
+
### Builds are user-triggered
|
|
106
|
+
**NEVER run \`build_d365fo_project()\` automatically** — builds block the user. Run it only on explicit request ("build", "compile", "check errors"); then fix any X++ errors via \`d365fo_file(action="modify")\` and rebuild until clean.
|
|
107
|
+
|
|
108
|
+
## Non-Negotiable Code Rules (always enforced)
|
|
109
|
+
|
|
110
|
+
- \`today()\` → \`DateTimeUtil::getToday(DateTimeUtil::getUserPreferredTimeZone())\`
|
|
111
|
+
- \`forceLiterals\` is FORBIDDEN — SQL injection risk
|
|
112
|
+
- No function calls in \`where\` — assign to a local variable first
|
|
113
|
+
- No nested \`while select\` — use \`join\` or pre-load to \`Map\`/temp table
|
|
114
|
+
- \`crossCompany\` goes on the OUTER (driving) buffer only
|
|
115
|
+
- CoC: NEVER copy default parameter values into the wrapper signature; \`next\` at first-level statement scope; extension class \`final\` + \`[ExtensionOf(...)]\`, named \`{Target}{Prefix}_Extension\`
|
|
116
|
+
- \`doInsert\`/\`doUpdate\`/\`doDelete\` only for data-fix/migration
|
|
117
|
+
- No literal strings in \`Info()\`/\`error()\`/labels — use \`@Model:LabelId\` (reuse via \`labels(action="search")\` first)
|
|
118
|
+
- Every public/protected member needs a meaningful \`/// <summary>\` (not "MyClass class.")
|
|
119
|
+
|
|
120
|
+
**For full rules and examples call \`get_xpp_knowledge(id)\` BEFORE generating code:**
|
|
121
|
+
|
|
122
|
+
| Knowledge ID | Covers |
|
|
123
|
+
|---|---|
|
|
124
|
+
| \`select-statement\` | Select grammar, FindOptions, crossCompany, joins, aggregates |
|
|
125
|
+
| \`coc-authoring\` / \`coc\` | CoC non-negotiables, Hookable/Wrappable, form CoC |
|
|
126
|
+
| \`event-handlers\` | DataEventHandler/SubscribesTo, handler class conventions |
|
|
127
|
+
| \`sysoperation\` | Batch: DataContract + Service + Controller (replaces RunBase) |
|
|
128
|
+
| \`bp-rules\` | BP checker rules: labels, EDT relations, alternate keys, XML doc, EDT-extension limits |
|
|
129
|
+
| \`number-sequences\` | NumberSeq setup and runtime consumption |
|
|
130
|
+
| \`workflow\` | WorkflowDocument/Type/Approval structure |
|
|
131
|
+
| \`sysextension\` | SysPlugin/SysExtension strategy dispatch |
|
|
132
|
+
| \`security-privileges-duties\` | Privilege/duty/role authoring |
|
|
133
|
+
| \`custom-services\` | Custom services & OData actions (SysEntryPointAttribute, service groups) |
|
|
134
|
+
| \`table-inheritance\` | SupportInheritance/Extends, InstanceRelationType discriminator |
|
|
135
|
+
| \`async-retryable-batch\` | BatchRetryable/isRetryable, runAsync, SysOperationSandbox |
|
|
136
|
+
| \`occ-unitofwork\` | OCC (OccEnabled/RecVersion/UpdateConflict) and UnitOfWork |
|
|
137
|
+
| \`caching\` | CacheLookup semantics, SysGlobalObjectCache, RecordViewCache |
|
|
138
|
+
| \`xpp-class-rules\`, \`sysda\`, \`query-object-model\`, \`formrun-lifecycle\` | Class rules, SysDa, Query API, form lifecycle |
|
|
139
|
+
|
|
140
|
+
When uncertain about syntax, consult Microsoft Learn (\`dynamics365/fin-ops-core/dev-itpro\`) — not AX 2012 training data.
|
|
141
|
+
|
|
142
|
+
## Error Recovery
|
|
143
|
+
|
|
144
|
+
Tool returns no results → try alternative terms (Cust vs Customer), \`type='all'\`, check spelling; then tell the user the object may not exist. Read every write-tool response: \`isError=true\` means NOT applied.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
**Remember: Trust the tools, not your training data, for D365FO development. Accuracy over assumptions.**`
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=systemInstructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"systemInstructions.js","sourceRoot":"","sources":["../../src/prompts/systemInstructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH,MAAM,UAAU,qCAAqC;IACnD,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,iIAAiI;QAC9I,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0GAmH0F;iBACjG;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Resource helpers: X++ Class Source Code.
|
|
3
|
+
* Exposes class source via xpp://class/{className} URIs. Pure helpers
|
|
4
|
+
* consumed by the unified resource registrar (resources/index.ts), which
|
|
5
|
+
* owns the actual request handlers.
|
|
6
|
+
*/
|
|
7
|
+
import type { XppServerContext } from '../types/context.js';
|
|
8
|
+
export declare const CLASS_URI_PREFIX = "xpp://class/";
|
|
9
|
+
/** True when a URI addresses a class source resource. */
|
|
10
|
+
export declare function isClassUri(uri: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Read the full X++ source for a class addressed by an xpp://class/{name} URI.
|
|
13
|
+
* Returns the reconstructed source (declaration + methods).
|
|
14
|
+
* Throws when the class is unknown or cannot be parsed.
|
|
15
|
+
*/
|
|
16
|
+
export declare function readClassSource(context: XppServerContext, uri: string): Promise<string>;
|
|
17
|
+
//# sourceMappingURL=classResource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classResource.d.ts","sourceRoot":"","sources":["../../src/resources/classResource.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Resource helpers: X++ Class Source Code.
|
|
3
|
+
* Exposes class source via xpp://class/{className} URIs. Pure helpers
|
|
4
|
+
* consumed by the unified resource registrar (resources/index.ts), which
|
|
5
|
+
* owns the actual request handlers.
|
|
6
|
+
*/
|
|
7
|
+
export const CLASS_URI_PREFIX = 'xpp://class/';
|
|
8
|
+
/** True when a URI addresses a class source resource. */
|
|
9
|
+
export function isClassUri(uri) {
|
|
10
|
+
return uri.startsWith(CLASS_URI_PREFIX);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Read the full X++ source for a class addressed by an xpp://class/{name} URI.
|
|
14
|
+
* Returns the reconstructed source (declaration + methods).
|
|
15
|
+
* Throws when the class is unknown or cannot be parsed.
|
|
16
|
+
*/
|
|
17
|
+
export async function readClassSource(context, uri) {
|
|
18
|
+
const { symbolIndex, parser } = context;
|
|
19
|
+
const className = uri.slice(CLASS_URI_PREFIX.length);
|
|
20
|
+
const classSymbol = symbolIndex.getSymbolByName(className, 'class');
|
|
21
|
+
if (!classSymbol) {
|
|
22
|
+
throw new Error(`Class "${className}" not found`);
|
|
23
|
+
}
|
|
24
|
+
const classInfo = await parser.parseClassFile(classSymbol.filePath);
|
|
25
|
+
if (!classInfo.success || !classInfo.data) {
|
|
26
|
+
throw new Error(`Failed to parse class: ${classInfo.error || 'Unknown error'}`);
|
|
27
|
+
}
|
|
28
|
+
return [
|
|
29
|
+
classInfo.data.declaration,
|
|
30
|
+
...classInfo.data.methods.map((m) => m.source),
|
|
31
|
+
].join('\n\n');
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=classResource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classResource.js","sourceRoot":"","sources":["../../src/resources/classResource.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE/C,yDAAyD;AACzD,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAyB,EACzB,GAAW;IAEX,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,WAAW,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEpE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpE,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,OAAO;QACL,SAAS,CAAC,IAAI,CAAC,WAAW;QAC1B,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;KACnE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified MCP Resource registrar.
|
|
3
|
+
*
|
|
4
|
+
* The MCP SDK keeps ONE handler per request schema — a second
|
|
5
|
+
* server.setRequestHandler(ListResourcesRequestSchema, …) call would silently
|
|
6
|
+
* overwrite the first. This module is the single dispatcher for ListResources /
|
|
7
|
+
* ListResourceTemplates / ReadResource, routing by URI scheme so class and
|
|
8
|
+
* workspace resources can coexist.
|
|
9
|
+
*
|
|
10
|
+
* Resources exposed:
|
|
11
|
+
* • xpp://class/{className} — class source (resource template)
|
|
12
|
+
* • workspace://context — curated context snapshot (JSON)
|
|
13
|
+
* • workspace://stats — symbol-index + workspace statistics (JSON)
|
|
14
|
+
* • workspace://files — list of X++ files in the workspace (JSON)
|
|
15
|
+
* • workspace://recent-changes — uncommitted X++ changes vs HEAD (JSON)
|
|
16
|
+
*/
|
|
17
|
+
import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
18
|
+
import type { XppServerContext } from '../types/context.js';
|
|
19
|
+
export declare function registerResources(server: Server, context: XppServerContext): void;
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAMxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAuD5D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAgGjF"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified MCP Resource registrar.
|
|
3
|
+
*
|
|
4
|
+
* The MCP SDK keeps ONE handler per request schema — a second
|
|
5
|
+
* server.setRequestHandler(ListResourcesRequestSchema, …) call would silently
|
|
6
|
+
* overwrite the first. This module is the single dispatcher for ListResources /
|
|
7
|
+
* ListResourceTemplates / ReadResource, routing by URI scheme so class and
|
|
8
|
+
* workspace resources can coexist.
|
|
9
|
+
*
|
|
10
|
+
* Resources exposed:
|
|
11
|
+
* • xpp://class/{className} — class source (resource template)
|
|
12
|
+
* • workspace://context — curated context snapshot (JSON)
|
|
13
|
+
* • workspace://stats — symbol-index + workspace statistics (JSON)
|
|
14
|
+
* • workspace://files — list of X++ files in the workspace (JSON)
|
|
15
|
+
* • workspace://recent-changes — uncommitted X++ changes vs HEAD (JSON)
|
|
16
|
+
*/
|
|
17
|
+
import { ListResourcesRequestSchema, ListResourceTemplatesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
18
|
+
import { isClassUri, readClassSource, CLASS_URI_PREFIX } from './classResource.js';
|
|
19
|
+
import { buildContextSnapshot } from '../workspace/contextSnapshot.js';
|
|
20
|
+
const WORKSPACE_RESOURCES = [
|
|
21
|
+
{
|
|
22
|
+
uri: 'workspace://context',
|
|
23
|
+
name: 'Workspace Context Snapshot',
|
|
24
|
+
description: 'Curated snapshot of the current work: active model/project, recently ' +
|
|
25
|
+
'edited objects, uncommitted X++ changes and index freshness. Read this ' +
|
|
26
|
+
'first to ground a session.',
|
|
27
|
+
mimeType: 'application/json',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
uri: 'workspace://active',
|
|
31
|
+
name: 'Active Object',
|
|
32
|
+
description: 'The object the developer is most likely working on (most recently ' +
|
|
33
|
+
'modified X++ file) enriched with its indexed metadata. Proxy for editor ' +
|
|
34
|
+
'focus — MCP exposes roots, not the cursor.',
|
|
35
|
+
mimeType: 'application/json',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
uri: 'workspace://stats',
|
|
39
|
+
name: 'Workspace Statistics',
|
|
40
|
+
description: 'Symbol-index totals by type, indexed models and workspace file counts.',
|
|
41
|
+
mimeType: 'application/json',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
uri: 'workspace://files',
|
|
45
|
+
name: 'Workspace Files',
|
|
46
|
+
description: 'List of X++ metadata files detected in the workspace (most recent first).',
|
|
47
|
+
mimeType: 'application/json',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
uri: 'workspace://recent-changes',
|
|
51
|
+
name: 'Recent Workspace Changes',
|
|
52
|
+
description: 'Uncommitted X++ object files (vs HEAD + untracked). Empty when not a git repo.',
|
|
53
|
+
mimeType: 'application/json',
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
function json(uri, data) {
|
|
57
|
+
return {
|
|
58
|
+
contents: [
|
|
59
|
+
{
|
|
60
|
+
uri,
|
|
61
|
+
mimeType: 'application/json',
|
|
62
|
+
text: JSON.stringify(data, null, 2),
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function registerResources(server, context) {
|
|
68
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
|
|
69
|
+
resources: WORKSPACE_RESOURCES.map((r) => ({ ...r })),
|
|
70
|
+
}));
|
|
71
|
+
// Classes are exposed as a template instead of being enumerated (100k+ entries) —
|
|
72
|
+
// clients resolve xpp://class/<ClassName> on demand.
|
|
73
|
+
server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => ({
|
|
74
|
+
resourceTemplates: [
|
|
75
|
+
{
|
|
76
|
+
uriTemplate: `${CLASS_URI_PREFIX}{className}`,
|
|
77
|
+
name: 'X++ Class Source',
|
|
78
|
+
description: 'Full source of an X++ class by name, e.g. xpp://class/CustTable',
|
|
79
|
+
mimeType: 'text/x-xpp',
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
}));
|
|
83
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
84
|
+
const uri = request.params.uri;
|
|
85
|
+
if (isClassUri(uri)) {
|
|
86
|
+
const source = await readClassSource(context, uri);
|
|
87
|
+
return {
|
|
88
|
+
contents: [{ uri, mimeType: 'text/x-xpp', text: source }],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (uri.startsWith('workspace://')) {
|
|
92
|
+
const snapshot = await buildContextSnapshot(context);
|
|
93
|
+
switch (uri) {
|
|
94
|
+
case 'workspace://context':
|
|
95
|
+
return json(uri, snapshot);
|
|
96
|
+
case 'workspace://active': {
|
|
97
|
+
const active = snapshot.activeObject;
|
|
98
|
+
// Enrich with indexed metadata (signature/model) when the type maps
|
|
99
|
+
// to an indexable symbol type. 'unknown' files are returned as-is.
|
|
100
|
+
let indexed = null;
|
|
101
|
+
if (active && active.type !== 'unknown') {
|
|
102
|
+
try {
|
|
103
|
+
const sym = context.symbolIndex.getSymbolByName(active.name, active.type);
|
|
104
|
+
if (sym) {
|
|
105
|
+
indexed = {
|
|
106
|
+
name: sym.name,
|
|
107
|
+
type: sym.type,
|
|
108
|
+
model: sym.model,
|
|
109
|
+
signature: sym.signature,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
/* enrichment optional */
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return json(uri, {
|
|
118
|
+
activeObject: active,
|
|
119
|
+
indexed,
|
|
120
|
+
note: active
|
|
121
|
+
? 'Proxy for the active file (most recently modified). Not editor-cursor state.'
|
|
122
|
+
: 'No workspace files detected — cannot infer an active object.',
|
|
123
|
+
generatedAt: snapshot.generatedAt,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
case 'workspace://stats':
|
|
127
|
+
return json(uri, {
|
|
128
|
+
index: snapshot.index,
|
|
129
|
+
workspacePath: snapshot.workspacePath,
|
|
130
|
+
recentObjectCount: snapshot.recentObjects.length,
|
|
131
|
+
uncommittedFileCount: snapshot.uncommittedFiles.length,
|
|
132
|
+
generatedAt: snapshot.generatedAt,
|
|
133
|
+
});
|
|
134
|
+
case 'workspace://files':
|
|
135
|
+
return json(uri, {
|
|
136
|
+
workspacePath: snapshot.workspacePath,
|
|
137
|
+
files: snapshot.recentObjects,
|
|
138
|
+
note: snapshot.recentObjects.length === 0
|
|
139
|
+
? 'No workspace path configured or no X++ files found.'
|
|
140
|
+
: `Showing the ${snapshot.recentObjects.length} most recently edited objects.`,
|
|
141
|
+
generatedAt: snapshot.generatedAt,
|
|
142
|
+
});
|
|
143
|
+
case 'workspace://recent-changes':
|
|
144
|
+
return json(uri, {
|
|
145
|
+
workspacePath: snapshot.workspacePath,
|
|
146
|
+
uncommittedFiles: snapshot.uncommittedFiles,
|
|
147
|
+
generatedAt: snapshot.generatedAt,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
throw new Error(`Unknown resource: ${uri}`);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Configuration and Setup
|
|
3
|
+
* Registers tools, resources, and prompts for X++ code completion
|
|
4
|
+
*/
|
|
5
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
6
|
+
import type { XppServerContext } from '../types/context.js';
|
|
7
|
+
export type { XppServerContext };
|
|
8
|
+
export { SERVER_MODE, LOCAL_TOOLS, WRITE_TOOLS } from './serverMode.js';
|
|
9
|
+
export type { ServerMode } from './serverMode.js';
|
|
10
|
+
export declare function createXppMcpServer(context: XppServerContext): Server;
|
|
11
|
+
//# sourceMappingURL=mcpServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpServer.d.ts","sourceRoot":"","sources":["../../src/server/mcpServer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAUnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAS5D,YAAY,EAAE,gBAAgB,EAAE,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAsElD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA2HpE"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Configuration and Setup
|
|
3
|
+
* Registers tools, resources, and prompts for X++ code completion
|
|
4
|
+
*/
|
|
5
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
6
|
+
import { ListToolsRequestSchema, InitializedNotificationSchema, RootsListChangedNotificationSchema, ListRootsResultSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { registerToolHandler } from '../tools/toolHandler.js';
|
|
8
|
+
import { registerResources } from '../resources/index.js';
|
|
9
|
+
import { registerCodeReviewPrompt } from '../prompts/codeReview.js';
|
|
10
|
+
import { SERVER_MODE, LOCAL_TOOLS, isToolAllowedInMode } from './serverMode.js';
|
|
11
|
+
import { TOOL_ANNOTATIONS } from './toolAnnotations.js';
|
|
12
|
+
import { getConfigManager } from '../utils/configManager.js';
|
|
13
|
+
const DEBUG_LOGGING = process.env.DEBUG_LOGGING === 'true';
|
|
14
|
+
import { setLastRoots, recordRootsListChanged } from '../utils/stdioSessionInfo.js';
|
|
15
|
+
import { toolSchemas } from './toolSchemas/index.js';
|
|
16
|
+
export { SERVER_MODE, LOCAL_TOOLS, WRITE_TOOLS } from './serverMode.js';
|
|
17
|
+
/**
|
|
18
|
+
* Convert a file:// URI to a local path. Duplicated from transport.ts to avoid
|
|
19
|
+
* a circular dependency between transport and mcpServer.
|
|
20
|
+
*/
|
|
21
|
+
function fileUriToPath(uri) {
|
|
22
|
+
if (!uri)
|
|
23
|
+
return null;
|
|
24
|
+
if (uri.startsWith('file:///')) {
|
|
25
|
+
const decoded = decodeURIComponent(uri.slice('file:///'.length));
|
|
26
|
+
if (process.platform === 'win32') {
|
|
27
|
+
return decoded.replace(/\//g, '\\');
|
|
28
|
+
}
|
|
29
|
+
return '/' + decoded;
|
|
30
|
+
}
|
|
31
|
+
if (uri.startsWith('file://')) {
|
|
32
|
+
const decoded = decodeURIComponent(uri.slice('file://'.length));
|
|
33
|
+
return process.platform === 'win32' ? decoded.replace(/\//g, '\\') : decoded;
|
|
34
|
+
}
|
|
35
|
+
if (uri.length > 2 && (uri[1] === ':' || uri.startsWith('\\\\') || uri.startsWith('/')))
|
|
36
|
+
return uri;
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Apply MCP roots list to ConfigManager. All roots are passed so unambiguous
|
|
41
|
+
* single-project matches still work when the client sends multiple roots.
|
|
42
|
+
*/
|
|
43
|
+
function applyRootsToConfig(roots) {
|
|
44
|
+
if (!roots?.length) {
|
|
45
|
+
// Empty roots/list can mean a solution is closing (transition state); keep
|
|
46
|
+
// the current detection result and wait for the next roots/list_changed.
|
|
47
|
+
if (DEBUG_LOGGING) {
|
|
48
|
+
process.stderr.write('[mcpServer] roots/list received (0 root(s)) — solution closing or no workspace open\n');
|
|
49
|
+
}
|
|
50
|
+
setLastRoots([]);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (DEBUG_LOGGING) {
|
|
54
|
+
process.stderr.write(`[mcpServer] roots/list received (${roots.length} root(s)):\n`);
|
|
55
|
+
roots.forEach((r, i) => process.stderr.write(` [${i}] ${r.uri}\n`));
|
|
56
|
+
}
|
|
57
|
+
// Persisted so get_workspace_info can display them.
|
|
58
|
+
setLastRoots(roots.map(r => r.uri));
|
|
59
|
+
const paths = roots
|
|
60
|
+
.map(r => fileUriToPath(r.uri))
|
|
61
|
+
.filter((p) => p !== null);
|
|
62
|
+
if (paths.length === 0)
|
|
63
|
+
return;
|
|
64
|
+
// configManager picks the most specific unambiguous path among all roots.
|
|
65
|
+
getConfigManager().setRuntimeContextFromRoots(paths).then(() => {
|
|
66
|
+
if (DEBUG_LOGGING) {
|
|
67
|
+
const { modelName, source, projectPath, solutionPath, workspacePath } = getConfigManager().getDetectionSummary();
|
|
68
|
+
process.stderr.write(`[mcpServer] ✅ Project detection result:\n` +
|
|
69
|
+
` Model name : ${modelName ?? '(unknown)'} (source: ${source})\n` +
|
|
70
|
+
` Project path: ${projectPath ?? '(not set)'}\n` +
|
|
71
|
+
` Solution : ${solutionPath ?? '(not set)'}\n` +
|
|
72
|
+
` Workspace : ${workspacePath ?? '(not set)'}\n`);
|
|
73
|
+
}
|
|
74
|
+
}).catch(err => {
|
|
75
|
+
process.stderr.write(`[mcpServer] ⚠️ setRuntimeContextFromRoots error: ${err}\n`);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
export function createXppMcpServer(context) {
|
|
79
|
+
const serverNameSuffix = SERVER_MODE !== 'full' ? ` (${SERVER_MODE})` : '';
|
|
80
|
+
const server = new Server({
|
|
81
|
+
name: `d365fo-mcp-server${serverNameSuffix}`,
|
|
82
|
+
version: '1.0.0',
|
|
83
|
+
}, {
|
|
84
|
+
capabilities: {
|
|
85
|
+
tools: {},
|
|
86
|
+
resources: {},
|
|
87
|
+
prompts: {},
|
|
88
|
+
logging: {},
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
// Workspace roots: stdio clients (VS Code, VS 2022) send roots after
|
|
92
|
+
// initialization; request them here and refresh on roots/list_changed.
|
|
93
|
+
server.setNotificationHandler(InitializedNotificationSchema, async () => {
|
|
94
|
+
if (DEBUG_LOGGING) {
|
|
95
|
+
process.stderr.write(`[mcpServer ${new Date().toISOString().slice(11, 23)}] ⚡ 'initialized' notification received — requesting roots/list\n`);
|
|
96
|
+
}
|
|
97
|
+
// Only stdio clients (VS Code, VS 2022) advertise the roots capability.
|
|
98
|
+
// HTTP / Azure clients do not — skipping the call avoids a -32001 timeout
|
|
99
|
+
// that would otherwise be logged as a spurious warning in Azure Monitor.
|
|
100
|
+
if (!server.getClientCapabilities()?.roots) {
|
|
101
|
+
if (DEBUG_LOGGING) {
|
|
102
|
+
process.stderr.write(`[mcpServer] ℹ️ Client has no roots capability — skipping roots/list\n`);
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// HTTP transports (Azure App Service, MCP_FORCE_HTTP) are request-response only —
|
|
107
|
+
// the server cannot initiate requests back to the client. Even if the client
|
|
108
|
+
// declares `roots` capability, calling roots/list would always time out (-32001).
|
|
109
|
+
const isHttpMode = !!process.env.WEBSITES_PORT || process.env.MCP_FORCE_HTTP === 'true';
|
|
110
|
+
if (isHttpMode) {
|
|
111
|
+
if (DEBUG_LOGGING) {
|
|
112
|
+
process.stderr.write(`[mcpServer] ℹ️ HTTP mode — skipping roots/list (transport is request-response only)\n`);
|
|
113
|
+
}
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (await getConfigManager().isStaticallyConfigured()) {
|
|
117
|
+
if (DEBUG_LOGGING) {
|
|
118
|
+
process.stderr.write(`[mcpServer] ℹ️ Static config complete — skipping roots/list (instanced mode)\n`);
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
const result = await server.request({ method: 'roots/list', params: {} }, ListRootsResultSchema);
|
|
124
|
+
applyRootsToConfig(result.roots ?? []);
|
|
125
|
+
}
|
|
126
|
+
catch (e) {
|
|
127
|
+
process.stderr.write(`[mcpServer] ⚠️ roots/list failed: ${e}\n`);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
server.setNotificationHandler(RootsListChangedNotificationSchema, async () => {
|
|
131
|
+
recordRootsListChanged();
|
|
132
|
+
if (DEBUG_LOGGING) {
|
|
133
|
+
process.stderr.write(`[mcpServer ${new Date().toISOString().slice(11, 23)}] 🔄 'roots/list_changed' notification — re-requesting roots/list\n`);
|
|
134
|
+
}
|
|
135
|
+
const isHttpMode = !!process.env.WEBSITES_PORT || process.env.MCP_FORCE_HTTP === 'true';
|
|
136
|
+
if (!server.getClientCapabilities()?.roots || isHttpMode) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// Instanced mode: workspace is immutable per server instance — the
|
|
140
|
+
// notification is irrelevant and the request would time out over mcp-remote.
|
|
141
|
+
if (await getConfigManager().isStaticallyConfigured()) {
|
|
142
|
+
if (DEBUG_LOGGING) {
|
|
143
|
+
process.stderr.write(`[mcpServer] ℹ️ Static config complete — skipping roots/list on change (instanced mode)\n`);
|
|
144
|
+
}
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const result = await server.request({ method: 'roots/list', params: {} }, ListRootsResultSchema);
|
|
149
|
+
applyRootsToConfig(result.roots ?? []);
|
|
150
|
+
}
|
|
151
|
+
catch { }
|
|
152
|
+
});
|
|
153
|
+
registerToolHandler(server, context);
|
|
154
|
+
registerResources(server, context);
|
|
155
|
+
registerCodeReviewPrompt(server, context);
|
|
156
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
157
|
+
const allTools = {
|
|
158
|
+
tools: [...toolSchemas],
|
|
159
|
+
};
|
|
160
|
+
// Attach MCP tool annotations (display title + behavior hints).
|
|
161
|
+
// VS Code shows annotations.title in the chat UI ("Ran Search D365FO index"
|
|
162
|
+
// instead of "Ran search") and uses readOnlyHint to skip write confirmations.
|
|
163
|
+
allTools.tools = allTools.tools.map(t => ({
|
|
164
|
+
...t,
|
|
165
|
+
annotations: TOOL_ANNOTATIONS[t.name],
|
|
166
|
+
}));
|
|
167
|
+
// Apply server mode filter. ALWAYS_TOOLS bypass the partition and stay
|
|
168
|
+
// published in every mode. isToolAllowedInMode is shared with the runtime
|
|
169
|
+
// gate in toolHandler so the list and the call-time enforcement can't drift.
|
|
170
|
+
if (SERVER_MODE === 'read-only') {
|
|
171
|
+
allTools.tools = allTools.tools.filter(t => isToolAllowedInMode(SERVER_MODE, t.name));
|
|
172
|
+
console.error(`[MCP Server] Tool list filtered for read-only mode: ${allTools.tools.length} tools (local tools excluded)`);
|
|
173
|
+
}
|
|
174
|
+
else if (SERVER_MODE === 'write-only') {
|
|
175
|
+
allTools.tools = allTools.tools.filter(t => isToolAllowedInMode(SERVER_MODE, t.name));
|
|
176
|
+
console.error(`[MCP Server] Tool list filtered for write-only mode: ${allTools.tools.length} tools (${Array.from(LOCAL_TOOLS).join(', ')})`);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
console.error(`[MCP Server] Tool list in full mode: ${allTools.tools.length} tools (no filtering)`);
|
|
180
|
+
}
|
|
181
|
+
return allTools;
|
|
182
|
+
});
|
|
183
|
+
return server;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=mcpServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpServer.js","sourceRoot":"","sources":["../../src/server/mcpServer.ts"],"names":[],"mappings":"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"}
|