@microsoft/teamsfx-core 3.0.15 → 3.0.16-beta.2026073102.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/build/client/aadAppClient.d.ts.map +1 -1
- package/build/client/aadAppClient.js +6 -6
- package/build/client/aadAppClient.js.map +1 -1
- package/build/common/featureFlags.d.ts +0 -5
- package/build/common/featureFlags.d.ts.map +1 -1
- package/build/common/featureFlags.js +0 -5
- package/build/common/featureFlags.js.map +1 -1
- package/build/common/httpProxy.d.ts +21 -0
- package/build/common/httpProxy.d.ts.map +1 -0
- package/build/common/httpProxy.js +117 -0
- package/build/common/httpProxy.js.map +1 -0
- package/build/common/mcpToolFetcher.d.ts +90 -0
- package/build/common/mcpToolFetcher.d.ts.map +1 -0
- package/build/common/mcpToolFetcher.js +404 -0
- package/build/common/mcpToolFetcher.js.map +1 -0
- package/build/common/odrProvider.d.ts +43 -0
- package/build/common/odrProvider.d.ts.map +1 -0
- package/build/common/odrProvider.js +154 -0
- package/build/common/odrProvider.js.map +1 -0
- package/build/common/openApiParserOptions.d.ts +3 -0
- package/build/common/openApiParserOptions.d.ts.map +1 -0
- package/build/common/openApiParserOptions.js +61 -0
- package/build/common/openApiParserOptions.js.map +1 -0
- package/build/common/secretmasker/dict.d.ts.map +1 -1
- package/build/common/secretmasker/dict.js +5 -2
- package/build/common/secretmasker/dict.js.map +1 -1
- package/build/common/secretmasker/feature.js.map +1 -1
- package/build/common/templates-config.json +5 -5
- package/build/component/coordinator/index.d.ts.map +1 -1
- package/build/component/coordinator/index.js.map +1 -1
- package/build/component/deps-checker/internal/dotnetChecker.js.map +1 -1
- package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.d.ts +3 -0
- package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.d.ts.map +1 -1
- package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.js +38 -3
- package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.js.map +1 -1
- package/build/component/driver/script/scriptDriver.js +1 -1
- package/build/component/driver/script/scriptDriver.js.map +1 -1
- package/build/component/driver/teamsApp/create.d.ts.map +1 -1
- package/build/component/driver/teamsApp/create.js +3 -3
- package/build/component/driver/teamsApp/create.js.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.d.ts +1 -0
- package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.js +23 -0
- package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js.map +1 -1
- package/build/component/generator/declarativeAgent/helper.d.ts.map +1 -1
- package/build/component/generator/declarativeAgent/helper.js +25 -2
- package/build/component/generator/declarativeAgent/helper.js.map +1 -1
- package/build/component/generator/generatorAction.d.ts +3 -1
- package/build/component/generator/generatorAction.d.ts.map +1 -1
- package/build/component/generator/generatorAction.js.map +1 -1
- package/build/component/generator/officeAddin/generator.d.ts +1 -0
- package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
- package/build/component/generator/officeAddin/generator.js +109 -2
- package/build/component/generator/officeAddin/generator.js.map +1 -1
- package/build/component/generator/openApiSpec/helper.d.ts +2 -3
- package/build/component/generator/openApiSpec/helper.d.ts.map +1 -1
- package/build/component/generator/openApiSpec/helper.js +19 -57
- package/build/component/generator/openApiSpec/helper.js.map +1 -1
- package/build/component/generator/templateHelper.d.ts +10 -2
- package/build/component/generator/templateHelper.d.ts.map +1 -1
- package/build/component/generator/templateHelper.js +16 -3
- package/build/component/generator/templateHelper.js.map +1 -1
- package/build/component/generator/templates/metadata/index.d.ts +15 -0
- package/build/component/generator/templates/metadata/index.d.ts.map +1 -1
- package/build/component/generator/templates/metadata/index.js +39 -0
- package/build/component/generator/templates/metadata/index.js.map +1 -1
- package/build/component/generator/templates/templateNames.d.ts +2 -0
- package/build/component/generator/templates/templateNames.d.ts.map +1 -1
- package/build/component/generator/templates/templateNames.js +2 -0
- package/build/component/generator/templates/templateNames.js.map +1 -1
- package/build/component/generator/utils.d.ts.map +1 -1
- package/build/component/generator/utils.js +6 -0
- package/build/component/generator/utils.js.map +1 -1
- package/build/component/generator/v4TemplateBridge.d.ts +4 -1
- package/build/component/generator/v4TemplateBridge.d.ts.map +1 -1
- package/build/component/generator/v4TemplateBridge.js +19 -3
- package/build/component/generator/v4TemplateBridge.js.map +1 -1
- package/build/component/utils/envUtil.d.ts.map +1 -1
- package/build/component/utils/envUtil.js +2 -2
- package/build/component/utils/envUtil.js.map +1 -1
- package/build/component/utils/fileOperation.d.ts.map +1 -1
- package/build/component/utils/fileOperation.js +4 -1
- package/build/component/utils/fileOperation.js.map +1 -1
- package/build/component/utils/mcpAuthScaffolder.d.ts +28 -0
- package/build/component/utils/mcpAuthScaffolder.d.ts.map +1 -1
- package/build/component/utils/mcpAuthScaffolder.js +39 -4
- package/build/component/utils/mcpAuthScaffolder.js.map +1 -1
- package/build/component/utils/mcpToolFetcher.d.ts +1 -72
- package/build/component/utils/mcpToolFetcher.d.ts.map +1 -1
- package/build/component/utils/mcpToolFetcher.js +1 -227
- package/build/component/utils/mcpToolFetcher.js.map +1 -1
- package/build/component/utils/odrProvider.d.ts +1 -55
- package/build/component/utils/odrProvider.d.ts.map +1 -1
- package/build/component/utils/odrProvider.js +1 -101
- package/build/component/utils/odrProvider.js.map +1 -1
- package/build/core/FxCore.d.ts.map +1 -1
- package/build/core/FxCore.declarativeAgent.d.ts.map +1 -1
- package/build/core/FxCore.declarativeAgent.js +110 -3
- package/build/core/FxCore.declarativeAgent.js.map +1 -1
- package/build/core/FxCore.js +4 -6
- package/build/core/FxCore.js.map +1 -1
- package/build/core/createFrontDoorAdapters.d.ts +4 -27
- package/build/core/createFrontDoorAdapters.d.ts.map +1 -1
- package/build/core/createFrontDoorAdapters.js +17 -157
- package/build/core/createFrontDoorAdapters.js.map +1 -1
- package/build/core/createProjectFrontDoor.d.ts +10 -12
- package/build/core/createProjectFrontDoor.d.ts.map +1 -1
- package/build/core/createProjectFrontDoor.js +143 -106
- package/build/core/createProjectFrontDoor.js.map +1 -1
- package/build/core/modifyProjectFrontDoor.d.ts +0 -1
- package/build/core/modifyProjectFrontDoor.d.ts.map +1 -1
- package/build/core/modifyProjectFrontDoor.js +0 -2
- package/build/core/modifyProjectFrontDoor.js.map +1 -1
- package/build/index.d.ts +3 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +9 -1
- package/build/index.js.map +1 -1
- package/build/question/create.d.ts.map +1 -1
- package/build/question/create.js +2 -1
- package/build/question/create.js.map +1 -1
- package/build/question/inputs/AddKnowledgeInputs.d.ts.map +1 -1
- package/build/question/inputs/CreateProjectInputs.d.ts +4 -0
- package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
- package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
- package/build/question/options/CreateProjectOptions.js +14 -0
- package/build/question/options/CreateProjectOptions.js.map +1 -1
- package/build/question/other.d.ts.map +1 -1
- package/build/question/other.js +11 -1
- package/build/question/other.js.map +1 -1
- package/build/question/questionNames.d.ts +2 -0
- package/build/question/questionNames.d.ts.map +1 -1
- package/build/question/questionNames.js +2 -0
- package/build/question/questionNames.js.map +1 -1
- package/build/question/scaffold/constructNode.d.ts +3 -1
- package/build/question/scaffold/constructNode.d.ts.map +1 -1
- package/build/question/scaffold/constructNode.js +50 -0
- package/build/question/scaffold/constructNode.js.map +1 -1
- package/build/question/scaffold/vsc/CapabilityOptions.d.ts +2 -0
- package/build/question/scaffold/vsc/CapabilityOptions.d.ts.map +1 -1
- package/build/question/scaffold/vsc/CapabilityOptions.js +16 -0
- package/build/question/scaffold/vsc/CapabilityOptions.js.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts +19 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js +39 -7
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
- package/build/v4/buildTarget/parseSelector.d.ts +6 -2
- package/build/v4/buildTarget/parseSelector.d.ts.map +1 -1
- package/build/v4/buildTarget/parseSelector.js +58 -45
- package/build/v4/buildTarget/parseSelector.js.map +1 -1
- package/build/v4/buildTarget/resolveBuildTarget.d.ts +21 -7
- package/build/v4/buildTarget/resolveBuildTarget.d.ts.map +1 -1
- package/build/v4/buildTarget/resolveBuildTarget.js +97 -52
- package/build/v4/buildTarget/resolveBuildTarget.js.map +1 -1
- package/build/v4/collectInputs/collectInputs.d.ts +51 -10
- package/build/v4/collectInputs/collectInputs.d.ts.map +1 -1
- package/build/v4/collectInputs/collectInputs.js +287 -91
- package/build/v4/collectInputs/collectInputs.js.map +1 -1
- package/build/v4/distribution/createQuestions.d.ts.map +1 -1
- package/build/v4/distribution/createQuestions.js +2 -29
- package/build/v4/distribution/createQuestions.js.map +1 -1
- package/build/v4/distribution/declarativePackage.d.ts.map +1 -1
- package/build/v4/distribution/declarativePackage.js +2 -30
- package/build/v4/distribution/declarativePackage.js.map +1 -1
- package/build/v4/distribution/questionFragments.d.ts +11 -0
- package/build/v4/distribution/questionFragments.d.ts.map +1 -0
- package/build/v4/distribution/questionFragments.js +130 -0
- package/build/v4/distribution/questionFragments.js.map +1 -0
- package/build/v4/engineVersion.d.ts +7 -0
- package/build/v4/engineVersion.d.ts.map +1 -0
- package/build/v4/engineVersion.js +12 -0
- package/build/v4/engineVersion.js.map +1 -0
- package/build/v4/expression/evaluateExpression.d.ts +13 -0
- package/build/v4/expression/evaluateExpression.d.ts.map +1 -1
- package/build/v4/expression/evaluateExpression.js +57 -0
- package/build/v4/expression/evaluateExpression.js.map +1 -1
- package/build/v4/index.d.ts +7 -0
- package/build/v4/index.d.ts.map +1 -1
- package/build/v4/index.js +7 -0
- package/build/v4/index.js.map +1 -1
- package/build/v4/inspection/scaffoldCatalog.d.ts +28 -0
- package/build/v4/inspection/scaffoldCatalog.d.ts.map +1 -0
- package/build/v4/inspection/scaffoldCatalog.js +66 -0
- package/build/v4/inspection/scaffoldCatalog.js.map +1 -0
- package/build/v4/inspection/scaffoldMetadataSource.d.ts +6 -0
- package/build/v4/inspection/scaffoldMetadataSource.d.ts.map +1 -0
- package/build/v4/inspection/scaffoldMetadataSource.js +78 -0
- package/build/v4/inspection/scaffoldMetadataSource.js.map +1 -0
- package/build/v4/mcp/mcpAuthAction.d.ts +36 -0
- package/build/v4/mcp/mcpAuthAction.d.ts.map +1 -0
- package/build/v4/mcp/mcpAuthAction.js +177 -0
- package/build/v4/mcp/mcpAuthAction.js.map +1 -0
- package/build/v4/mcp/mcpAuthScaffold.d.ts +37 -0
- package/build/v4/mcp/mcpAuthScaffold.d.ts.map +1 -0
- package/build/v4/mcp/mcpAuthScaffold.js +162 -0
- package/build/v4/mcp/mcpAuthScaffold.js.map +1 -0
- package/build/v4/model/dataModel.d.ts +1 -1
- package/build/v4/model/dataModel.d.ts.map +1 -1
- package/build/v4/pipeline/runScaffoldPipeline.d.ts +27 -5
- package/build/v4/pipeline/runScaffoldPipeline.d.ts.map +1 -1
- package/build/v4/pipeline/runScaffoldPipeline.js +64 -10
- package/build/v4/pipeline/runScaffoldPipeline.js.map +1 -1
- package/build/v4/providers/createOptionsProviders.d.ts +11 -0
- package/build/v4/providers/createOptionsProviders.d.ts.map +1 -0
- package/build/v4/providers/createOptionsProviders.js +268 -0
- package/build/v4/providers/createOptionsProviders.js.map +1 -0
- package/build/v4/renderContext/buildRenderContext.d.ts.map +1 -1
- package/build/v4/renderContext/buildRenderContext.js +4 -6
- package/build/v4/renderContext/buildRenderContext.js.map +1 -1
- package/build/v4/runtime/generalSensitivityLabel.d.ts +5 -0
- package/build/v4/runtime/generalSensitivityLabel.d.ts.map +1 -0
- package/build/v4/runtime/generalSensitivityLabel.js +36 -0
- package/build/v4/runtime/generalSensitivityLabel.js.map +1 -0
- package/build/v4/runtime/inMemoryRuntime.d.ts +7 -1
- package/build/v4/runtime/inMemoryRuntime.d.ts.map +1 -1
- package/build/v4/runtime/inMemoryRuntime.js +25 -3
- package/build/v4/runtime/inMemoryRuntime.js.map +1 -1
- package/build/v4/runtime/packageParse.d.ts.map +1 -1
- package/build/v4/runtime/packageParse.js +64 -8
- package/build/v4/runtime/packageParse.js.map +1 -1
- package/build/v4/runtime/realRuntime.d.ts +3 -1
- package/build/v4/runtime/realRuntime.d.ts.map +1 -1
- package/build/v4/runtime/realRuntime.js +3 -2
- package/build/v4/runtime/realRuntime.js.map +1 -1
- package/build/v4/runtime/renderMustache.d.ts.map +1 -1
- package/build/v4/runtime/renderMustache.js +13 -4
- package/build/v4/runtime/renderMustache.js.map +1 -1
- package/build/v4/runtime/runtimeRegistry.d.ts +12 -3
- package/build/v4/runtime/runtimeRegistry.d.ts.map +1 -1
- package/build/v4/runtime/runtimeRegistry.js +123 -17
- package/build/v4/runtime/runtimeRegistry.js.map +1 -1
- package/build/v4/runtime/scaffold.d.ts +1 -0
- package/build/v4/runtime/scaffold.d.ts.map +1 -1
- package/build/v4/runtime/scaffold.js +1 -20
- package/build/v4/runtime/scaffold.js.map +1 -1
- package/build/v4/runtime/steps/daAction.d.ts.map +1 -1
- package/build/v4/runtime/steps/daAction.js +3 -111
- package/build/v4/runtime/steps/daAction.js.map +1 -1
- package/build/v4/runtime/steps/daSensitivity.d.ts +14 -0
- package/build/v4/runtime/steps/daSensitivity.d.ts.map +1 -0
- package/build/v4/runtime/steps/daSensitivity.js +50 -0
- package/build/v4/runtime/steps/daSensitivity.js.map +1 -0
- package/build/v4/runtime/steps/mcpAuth.d.ts +5 -2
- package/build/v4/runtime/steps/mcpAuth.d.ts.map +1 -1
- package/build/v4/runtime/steps/mcpAuth.js +37 -66
- package/build/v4/runtime/steps/mcpAuth.js.map +1 -1
- package/build/v4/runtime/steps/mcpLocal.d.ts +0 -4
- package/build/v4/runtime/steps/mcpLocal.d.ts.map +1 -1
- package/build/v4/runtime/steps/mcpLocal.js +11 -31
- package/build/v4/runtime/steps/mcpLocal.js.map +1 -1
- package/build/v4/runtime/steps/mcpStatic.d.ts +1 -1
- package/build/v4/runtime/steps/mcpStatic.d.ts.map +1 -1
- package/build/v4/runtime/steps/mcpStatic.js +14 -32
- package/build/v4/runtime/steps/mcpStatic.js.map +1 -1
- package/build/v4/runtime/steps/metaOs.d.ts.map +1 -1
- package/build/v4/runtime/steps/metaOs.js +39 -51
- package/build/v4/runtime/steps/metaOs.js.map +1 -1
- package/build/v4/runtime/steps/officeAddin.d.ts.map +1 -1
- package/build/v4/runtime/steps/officeAddin.js +7 -12
- package/build/v4/runtime/steps/officeAddin.js.map +1 -1
- package/build/v4/runtime/steps/openApi.d.ts.map +1 -1
- package/build/v4/runtime/steps/openApi.js +85 -566
- package/build/v4/runtime/steps/openApi.js.map +1 -1
- package/build/v4/runtime/steps/openApiCustomApi.d.ts +5 -0
- package/build/v4/runtime/steps/openApiCustomApi.d.ts.map +1 -0
- package/build/v4/runtime/steps/openApiCustomApi.js +385 -0
- package/build/v4/runtime/steps/openApiCustomApi.js.map +1 -0
- package/build/v4/runtime/whitelist.d.ts +27 -0
- package/build/v4/runtime/whitelist.d.ts.map +1 -1
- package/build/v4/runtime/whitelist.js +156 -1
- package/build/v4/runtime/whitelist.js.map +1 -1
- package/build/v4/runtime/withTempDirectory.d.ts +10 -0
- package/build/v4/runtime/withTempDirectory.d.ts.map +1 -0
- package/build/v4/runtime/withTempDirectory.js +41 -0
- package/build/v4/runtime/withTempDirectory.js.map +1 -0
- package/build/v4/surface/createFloorTail.d.ts +12 -0
- package/build/v4/surface/createFloorTail.d.ts.map +1 -0
- package/build/v4/surface/createFloorTail.js +138 -0
- package/build/v4/surface/createFloorTail.js.map +1 -0
- package/build/v4/surface/createInputs.d.ts +25 -3
- package/build/v4/surface/createInputs.d.ts.map +1 -1
- package/build/v4/surface/createInputs.js +54 -431
- package/build/v4/surface/createInputs.js.map +1 -1
- package/build/v4/surface/createSelectorWalk.d.ts +8 -3
- package/build/v4/surface/createSelectorWalk.d.ts.map +1 -1
- package/build/v4/surface/createSelectorWalk.js +21 -11
- package/build/v4/surface/createSelectorWalk.js.map +1 -1
- package/build/v4/surface/deriveCreateOptions.d.ts.map +1 -1
- package/build/v4/surface/deriveCreateOptions.js +5 -2
- package/build/v4/surface/deriveCreateOptions.js.map +1 -1
- package/build/v4/surface/localizePrompt.d.ts +11 -0
- package/build/v4/surface/localizePrompt.d.ts.map +1 -0
- package/build/v4/surface/localizePrompt.js +32 -0
- package/build/v4/surface/localizePrompt.js.map +1 -0
- package/build/v4/surface/modifySelectorWalk.d.ts.map +1 -1
- package/build/v4/surface/modifySelectorWalk.js +0 -3
- package/build/v4/surface/modifySelectorWalk.js.map +1 -1
- package/build/v4/surface/uiPromptUI.d.ts.map +1 -1
- package/build/v4/surface/uiPromptUI.js +45 -45
- package/build/v4/surface/uiPromptUI.js.map +1 -1
- package/build/v4/validation/capabilityCatalog.d.ts +8 -0
- package/build/v4/validation/capabilityCatalog.d.ts.map +1 -0
- package/build/v4/validation/capabilityCatalog.js +62 -0
- package/build/v4/validation/capabilityCatalog.js.map +1 -0
- package/build/v4/validation/templateArchiveValidation.d.ts +15 -0
- package/build/v4/validation/templateArchiveValidation.d.ts.map +1 -0
- package/build/v4/validation/templateArchiveValidation.js +297 -0
- package/build/v4/validation/templateArchiveValidation.js.map +1 -0
- package/build/v4/validation/validateTemplatePackage.d.ts +21 -2
- package/build/v4/validation/validateTemplatePackage.d.ts.map +1 -1
- package/build/v4/validation/validateTemplatePackage.js +155 -31
- package/build/v4/validation/validateTemplatePackage.js.map +1 -1
- package/build/v4/validators/createInputValidators.d.ts +7 -0
- package/build/v4/validators/createInputValidators.d.ts.map +1 -0
- package/build/v4/validators/createInputValidators.js +77 -0
- package/build/v4/validators/createInputValidators.js.map +1 -0
- package/build/v4/validators/mcpCredentialValidators.d.ts +5 -0
- package/build/v4/validators/mcpCredentialValidators.d.ts.map +1 -0
- package/build/v4/validators/mcpCredentialValidators.js +13 -0
- package/build/v4/validators/mcpCredentialValidators.js.map +1 -0
- package/build/v4/validators/mcpServerUrlValidator.d.ts +9 -0
- package/build/v4/validators/mcpServerUrlValidator.d.ts.map +1 -0
- package/build/v4/validators/mcpServerUrlValidator.js +15 -0
- package/build/v4/validators/mcpServerUrlValidator.js.map +1 -0
- package/package.json +29 -23
- package/resource/package.nls.cs.json +56 -54
- package/resource/package.nls.de.json +56 -54
- package/resource/package.nls.es.json +55 -53
- package/resource/package.nls.fr.json +56 -54
- package/resource/package.nls.it.json +55 -53
- package/resource/package.nls.ja.json +56 -54
- package/resource/package.nls.json +10 -3
- package/resource/package.nls.ko.json +56 -54
- package/resource/package.nls.pl.json +56 -54
- package/resource/package.nls.pt-BR.json +56 -54
- package/resource/package.nls.ru.json +56 -54
- package/resource/package.nls.tr.json +56 -54
- package/resource/package.nls.zh-Hans.json +56 -54
- package/resource/package.nls.zh-Hant.json +56 -54
- package/resource/templates/package.nls.cs.json +22 -9
- package/resource/templates/package.nls.de.json +22 -9
- package/resource/templates/package.nls.es.json +22 -9
- package/resource/templates/package.nls.fr.json +22 -9
- package/resource/templates/package.nls.it.json +22 -9
- package/resource/templates/package.nls.ja.json +22 -9
- package/resource/templates/package.nls.json +16 -3
- package/resource/templates/package.nls.ko.json +22 -9
- package/resource/templates/package.nls.pl.json +22 -9
- package/resource/templates/package.nls.pt-BR.json +22 -9
- package/resource/templates/package.nls.ru.json +22 -9
- package/resource/templates/package.nls.tr.json +22 -9
- package/resource/templates/package.nls.zh-Hans.json +22 -9
- package/resource/templates/package.nls.zh-Hant.json +22 -9
- package/resource/templates/package.nls.zh-cn.json +7 -1
- package/resource/templates/package.nls.zh-tw.json +7 -1
- package/templates/fallback/common.zip +0 -0
- package/templates/fallback/csharp.zip +0 -0
- package/templates/fallback/js.zip +0 -0
- package/templates/fallback/python.zip +0 -0
- package/templates/fallback/ts.zip +0 -0
- package/templates/metadata/allTemplates.json +16 -2
- package/templates/metadata.zip +0 -0
- package/templates/ui/wizardNode.json +24 -0
- package/templates/v4/create-selector.json +30 -5
- package/templates/v4/floor.json +1 -1
- package/templates/v4/modify-selector.json +1 -6
- package/templates/v4/templates-metadata.zip +0 -0
- package/templates/v4/templates.zip +0 -0
- package/templates/configs/local/typescript/.gitignore +0 -1
- package/templates/configs/playground/typescript/.gitignore +0 -4
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT license.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.MCP_DCR_WELL_KNOWN_URL_PLACEHOLDER = exports.mcpAuthScaffolderDeps = void 0;
|
|
5
|
+
exports.MCP_AUTH_PLACEHOLDER_WARNING_TYPES = exports.MCP_OAUTH_TOKEN_URL_PLACEHOLDER = exports.MCP_OAUTH_AUTHORIZATION_URL_PLACEHOLDER = exports.MCP_DCR_WELL_KNOWN_URL_PLACEHOLDER = exports.mcpAuthScaffolderDeps = void 0;
|
|
6
6
|
exports.deriveMCPManifestOAuth = deriveMCPManifestOAuth;
|
|
7
7
|
exports.resolveMCPAuthEndpoints = resolveMCPAuthEndpoints;
|
|
8
|
+
exports.isMCPScaffoldWarning = isMCPScaffoldWarning;
|
|
8
9
|
exports.injectMCPAuthActionToYml = injectMCPAuthActionToYml;
|
|
9
10
|
exports.persistMCPAuthCredentialEnvVars = persistMCPAuthCredentialEnvVars;
|
|
10
11
|
const questionNames_1 = require("../../question/questionNames");
|
|
@@ -54,7 +55,7 @@ async function resolveMCPAuthEndpoints(authType, inputs) {
|
|
|
54
55
|
if (authType !== "oauth" && authType !== "oauth-dynamic") {
|
|
55
56
|
return {};
|
|
56
57
|
}
|
|
57
|
-
const metadata = await exports.mcpAuthScaffolderDeps.resolveMCPOAuthMetadata(inputs[questionNames_1.QuestionNames.MCPForDAAuthMetadataUrl], inputs[questionNames_1.QuestionNames.MCPForDAAuthWellKnownUrl]);
|
|
58
|
+
const metadata = await exports.mcpAuthScaffolderDeps.resolveMCPOAuthMetadata(inputs[questionNames_1.QuestionNames.MCPForDAAuthMetadataUrl], inputs[questionNames_1.QuestionNames.MCPForDAAuthWellKnownUrl], inputs[questionNames_1.QuestionNames.MCPForDAServerUrl]);
|
|
58
59
|
return {
|
|
59
60
|
authorizationUrl: metadata.authorizationUrl,
|
|
60
61
|
tokenUrl: metadata.tokenUrl,
|
|
@@ -69,6 +70,34 @@ async function resolveMCPAuthEndpoints(authType, inputs) {
|
|
|
69
70
|
* `wellKnownUrlPlaceholderUsed` return flag so callers can emit a warning.
|
|
70
71
|
*/
|
|
71
72
|
exports.MCP_DCR_WELL_KNOWN_URL_PLACEHOLDER = "<PLEASE_FILL_IN_WELL_KNOWN_AUTHORIZATION_SERVER_URL>";
|
|
73
|
+
/**
|
|
74
|
+
* Placeholders written to `oauth/register` when endpoint discovery can't produce the
|
|
75
|
+
* authorization / token URLs for a static `oauth` (`identityProvider: Custom`) action.
|
|
76
|
+
* Omitting the fields instead would hide the gap entirely — the action looks complete but
|
|
77
|
+
* can never provision — so the placeholders make the missing values visible and editable,
|
|
78
|
+
* mirroring the `dcr/register` contract above.
|
|
79
|
+
*/
|
|
80
|
+
exports.MCP_OAUTH_AUTHORIZATION_URL_PLACEHOLDER = "<PLEASE_FILL_IN_AUTHORIZATION_URL>";
|
|
81
|
+
exports.MCP_OAUTH_TOKEN_URL_PLACEHOLDER = "<PLEASE_FILL_IN_TOKEN_URL>";
|
|
82
|
+
/**
|
|
83
|
+
* Every MCP scaffolding warning type is camelCased with this prefix (`mcpAuthRequired`,
|
|
84
|
+
* `mcpNoToolsFetched`, `mcpAuthDcrWellKnownUrlPlaceholder`, ...), while spec-parser warning
|
|
85
|
+
* types are kebab-cased (`operationid-missing`, `generate-card-failed`, ...). Surfaces use
|
|
86
|
+
* this predicate to let MCP warnings through the scaffolding summary without also leaking
|
|
87
|
+
* spec-parser warnings that the API-plugin flows deliberately suppress.
|
|
88
|
+
*/
|
|
89
|
+
function isMCPScaffoldWarning(warning) {
|
|
90
|
+
return warning.type.startsWith("mcp");
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The subset of MCP scaffolding warnings that mean the generated `m365agents.yml` still holds a
|
|
94
|
+
* placeholder and therefore cannot provision. Surfaces single these out for a blocking-looking
|
|
95
|
+
* notification instead of a summary line.
|
|
96
|
+
*/
|
|
97
|
+
exports.MCP_AUTH_PLACEHOLDER_WARNING_TYPES = [
|
|
98
|
+
"mcpAuthDcrWellKnownUrlPlaceholder",
|
|
99
|
+
"mcpAuthOAuthUrlPlaceholder",
|
|
100
|
+
];
|
|
72
101
|
/**
|
|
73
102
|
* Inject the appropriate `oauth/register` or `dcr/register` action into
|
|
74
103
|
* `m365agents.yml` based on the user's `mcp-da-auth-type` choice. `none`
|
|
@@ -117,8 +146,14 @@ async function injectMCPAuthActionToYml(args) {
|
|
|
117
146
|
};
|
|
118
147
|
}
|
|
119
148
|
}
|
|
120
|
-
|
|
121
|
-
|
|
149
|
+
// Only static `oauth` emits these endpoints; `entra-sso` resolves them from Entra.
|
|
150
|
+
const oauthUrlPlaceholderUsed = args.authType === "oauth" && (!args.endpoints.authorizationUrl || !args.endpoints.tokenUrl);
|
|
151
|
+
await actionInjector_1.ActionInjector.injectCreateOAuthActionForMCP(args.ymlPath, args.authType, args.authName, args.registrationId, args.mcpServerUrl, args.authType === "oauth"
|
|
152
|
+
? (args.endpoints.authorizationUrl ?? exports.MCP_OAUTH_AUTHORIZATION_URL_PLACEHOLDER)
|
|
153
|
+
: args.endpoints.authorizationUrl, args.authType === "oauth"
|
|
154
|
+
? (args.endpoints.tokenUrl ?? exports.MCP_OAUTH_TOKEN_URL_PLACEHOLDER)
|
|
155
|
+
: args.endpoints.tokenUrl, args.endpoints.refreshUrl, credentialEnvNames);
|
|
156
|
+
return oauthUrlPlaceholderUsed ? { oauthUrlPlaceholderUsed: true } : {};
|
|
122
157
|
}
|
|
123
158
|
/**
|
|
124
159
|
* Persist user-provided MCP OAuth credentials into env files so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpAuthScaffolder.js","sourceRoot":"","sources":["../../../src/component/utils/mcpAuthScaffolder.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAwClC,wDAWC;AAUD,
|
|
1
|
+
{"version":3,"file":"mcpAuthScaffolder.js","sourceRoot":"","sources":["../../../src/component/utils/mcpAuthScaffolder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,73 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
name: string;
|
|
3
|
-
description: string;
|
|
4
|
-
inputSchema: any;
|
|
5
|
-
outputSchema?: any;
|
|
6
|
-
tags?: string[];
|
|
7
|
-
}
|
|
8
|
-
export interface MCPFetchResult {
|
|
9
|
-
requiresAuth: boolean;
|
|
10
|
-
tools: MCPTool[];
|
|
11
|
-
authMetadataUrl?: string;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Fetch MCP tool definitions from a remote MCP server using the MCP JSON-RPC protocol.
|
|
15
|
-
* Uses StreamableHTTP transport via the @modelcontextprotocol/sdk.
|
|
16
|
-
*
|
|
17
|
-
* @param serverUrl - The URL of the remote MCP server
|
|
18
|
-
* @returns MCPFetchResult with tools if no auth, or requiresAuth flag if auth needed
|
|
19
|
-
*/
|
|
20
|
-
export declare function fetchMCPTools(serverUrl: string): Promise<MCPFetchResult>;
|
|
21
|
-
/**
|
|
22
|
-
* Read and parse MCP tool definitions from a JSON file.
|
|
23
|
-
* Accepts two formats:
|
|
24
|
-
* - `{ tools: [{ name, description, inputSchema }] }` (mcp-tools.json format)
|
|
25
|
-
* - `[{ name, description, inputSchema }]` (raw array of tools)
|
|
26
|
-
*
|
|
27
|
-
* @param filePath - Path to the JSON file containing tool definitions
|
|
28
|
-
* @returns Array of MCPTool objects
|
|
29
|
-
*/
|
|
30
|
-
export declare function readMCPToolsFromFile(filePath: string): Promise<MCPTool[]>;
|
|
31
|
-
export interface MCPAuthProbeResult {
|
|
32
|
-
requiresAuth: boolean;
|
|
33
|
-
authMetadataUrl?: string;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Lightweight probe to check if an MCP server requires authentication.
|
|
37
|
-
* Sends a POST `initialize` JSON-RPC request (matching the MCP streamable-http
|
|
38
|
-
* transport) and checks for a 401 response + WWW-Authenticate header. GET is
|
|
39
|
-
* not reliable: spec-compliant MCP servers (Figma, etc.) return 405 to GET and
|
|
40
|
-
* only emit the WWW-Authenticate challenge on POST.
|
|
41
|
-
*
|
|
42
|
-
* Does NOT attempt to fetch tools via MCP protocol.
|
|
43
|
-
*
|
|
44
|
-
* @param serverUrl - The URL of the remote MCP server
|
|
45
|
-
* @returns Whether auth is required and the resource_metadata URL if available
|
|
46
|
-
*/
|
|
47
|
-
export declare function probeMCPServerAuth(serverUrl: string): Promise<MCPAuthProbeResult>;
|
|
48
|
-
export interface MCPOAuthMetadata {
|
|
49
|
-
authorizationUrl: string;
|
|
50
|
-
tokenUrl: string;
|
|
51
|
-
refreshUrl?: string;
|
|
52
|
-
/**
|
|
53
|
-
* Resolved RFC 8414 well-known URL (the URL `authorization_endpoint` /
|
|
54
|
-
* `token_endpoint` were fetched from). Returned so callers that need the
|
|
55
|
-
* authorization-server metadata location — e.g. `dcr/register`'s
|
|
56
|
-
* `wellKnownAuthorizationServer` — do not have to repeat the probe.
|
|
57
|
-
*/
|
|
58
|
-
wellKnownUrl: string;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Resolve OAuth metadata (authorization_endpoint, token_endpoint, refresh_endpoint) from an MCP server's
|
|
62
|
-
* resource metadata URL. Follows the MCP auth flow:
|
|
63
|
-
* 1. Fetch the resource metadata URL (from WWW-Authenticate header's resource_metadata)
|
|
64
|
-
* 2. Extract authorization_servers[0]
|
|
65
|
-
* 3. Construct the RFC 8414 well-known URL
|
|
66
|
-
* 4. Fetch authorization_endpoint / token_endpoint from that well-known URL
|
|
67
|
-
*
|
|
68
|
-
* @param authMetadataUrl - The resource_metadata URL from the 401 WWW-Authenticate header
|
|
69
|
-
* @param wellKnownUrl - Optional: if already known, skip discovery and use this URL directly
|
|
70
|
-
* @returns MCPOAuthMetadata with authorization and token URLs
|
|
71
|
-
*/
|
|
72
|
-
export declare function resolveMCPOAuthMetadata(authMetadataUrl?: string, wellKnownUrl?: string): Promise<MCPOAuthMetadata>;
|
|
1
|
+
export * from "../../common/mcpToolFetcher";
|
|
73
2
|
//# sourceMappingURL=mcpToolFetcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpToolFetcher.d.ts","sourceRoot":"","sources":["../../../src/component/utils/mcpToolFetcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcpToolFetcher.d.ts","sourceRoot":"","sources":["../../../src/component/utils/mcpToolFetcher.ts"],"names":[],"mappings":"AAGA,cAAc,6BAA6B,CAAC"}
|
|
@@ -2,232 +2,6 @@
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT license.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.fetchMCPTools = fetchMCPTools;
|
|
6
|
-
exports.readMCPToolsFromFile = readMCPToolsFromFile;
|
|
7
|
-
exports.probeMCPServerAuth = probeMCPServerAuth;
|
|
8
|
-
exports.resolveMCPOAuthMetadata = resolveMCPOAuthMetadata;
|
|
9
5
|
const tslib_1 = require("tslib");
|
|
10
|
-
|
|
11
|
-
const localizeUtils_1 = require("../../common/localizeUtils");
|
|
12
|
-
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
13
|
-
/**
|
|
14
|
-
* Fetch MCP tool definitions from a remote MCP server using the MCP JSON-RPC protocol.
|
|
15
|
-
* Uses StreamableHTTP transport via the @modelcontextprotocol/sdk.
|
|
16
|
-
*
|
|
17
|
-
* @param serverUrl - The URL of the remote MCP server
|
|
18
|
-
* @returns MCPFetchResult with tools if no auth, or requiresAuth flag if auth needed
|
|
19
|
-
*/
|
|
20
|
-
async function fetchMCPTools(serverUrl) {
|
|
21
|
-
// First, attempt auth detection by sending a HEAD/GET request
|
|
22
|
-
let authMetadataUrl;
|
|
23
|
-
try {
|
|
24
|
-
await axios_1.default.get(serverUrl, { timeout: 10000 });
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
if (error?.response?.status === 401 || error?.status === 401) {
|
|
28
|
-
// Auth required — try to extract OAuth metadata
|
|
29
|
-
const wwwAuth = error?.response?.headers?.["www-authenticate"];
|
|
30
|
-
if (wwwAuth) {
|
|
31
|
-
const match = wwwAuth.match(/resource_metadata=\s*"([^"]+)"/);
|
|
32
|
-
if (match) {
|
|
33
|
-
authMetadataUrl = match[1];
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return { requiresAuth: true, tools: [], authMetadataUrl };
|
|
37
|
-
}
|
|
38
|
-
// For non-401 errors, try fetching tools anyway via MCP protocol
|
|
39
|
-
}
|
|
40
|
-
// Try to fetch tools using MCP JSON-RPC protocol over StreamableHTTP.
|
|
41
|
-
// Uses @modelcontextprotocol/sdk as a library dependency (not the ATK CLI itself).
|
|
42
|
-
try {
|
|
43
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
44
|
-
// @ts-ignore - dynamic import of MCP SDK subpath
|
|
45
|
-
const { Client } = await Promise.resolve().then(() => tslib_1.__importStar(require("@modelcontextprotocol/sdk/client/index.js")));
|
|
46
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
47
|
-
// @ts-ignore - dynamic import of MCP SDK subpath
|
|
48
|
-
const { StreamableHTTPClientTransport } = await Promise.resolve().then(() => tslib_1.__importStar(require("@modelcontextprotocol/sdk/client/streamableHttp.js")));
|
|
49
|
-
const transport = new StreamableHTTPClientTransport(new URL(serverUrl));
|
|
50
|
-
const client = new Client({ name: "atk-cli", version: "1.0.0" });
|
|
51
|
-
try {
|
|
52
|
-
await client.connect(transport);
|
|
53
|
-
const result = await client.listTools();
|
|
54
|
-
const tools = result.tools.map((tool) => ({
|
|
55
|
-
...tool,
|
|
56
|
-
description: tool.description ?? "",
|
|
57
|
-
}));
|
|
58
|
-
return { requiresAuth: false, tools };
|
|
59
|
-
}
|
|
60
|
-
finally {
|
|
61
|
-
await client.close();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
// If MCP SDK connection fails, fall back to SSE transport
|
|
66
|
-
try {
|
|
67
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
68
|
-
// @ts-ignore - dynamic import of MCP SDK subpath
|
|
69
|
-
const { Client } = await Promise.resolve().then(() => tslib_1.__importStar(require("@modelcontextprotocol/sdk/client/index.js")));
|
|
70
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
71
|
-
// @ts-ignore - dynamic import of MCP SDK subpath
|
|
72
|
-
const { SSEClientTransport } = await Promise.resolve().then(() => tslib_1.__importStar(require("@modelcontextprotocol/sdk/client/sse.js")));
|
|
73
|
-
const transport = new SSEClientTransport(new URL(serverUrl));
|
|
74
|
-
const client = new Client({ name: "atk-cli", version: "1.0.0" });
|
|
75
|
-
try {
|
|
76
|
-
await client.connect(transport);
|
|
77
|
-
const result = await client.listTools();
|
|
78
|
-
const tools = result.tools.map((tool) => ({
|
|
79
|
-
...tool,
|
|
80
|
-
description: tool.description ?? "",
|
|
81
|
-
}));
|
|
82
|
-
return { requiresAuth: false, tools };
|
|
83
|
-
}
|
|
84
|
-
finally {
|
|
85
|
-
await client.close();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
// Both transports failed
|
|
90
|
-
// Check if the original error was auth-related
|
|
91
|
-
if (error?.message?.includes("401") ||
|
|
92
|
-
error?.message?.includes("Unauthorized") ||
|
|
93
|
-
error?.message?.includes("auth")) {
|
|
94
|
-
return { requiresAuth: true, tools: [] };
|
|
95
|
-
}
|
|
96
|
-
// Return empty tools — caller should fall back to file input
|
|
97
|
-
return { requiresAuth: false, tools: [] };
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Read and parse MCP tool definitions from a JSON file.
|
|
103
|
-
* Accepts two formats:
|
|
104
|
-
* - `{ tools: [{ name, description, inputSchema }] }` (mcp-tools.json format)
|
|
105
|
-
* - `[{ name, description, inputSchema }]` (raw array of tools)
|
|
106
|
-
*
|
|
107
|
-
* @param filePath - Path to the JSON file containing tool definitions
|
|
108
|
-
* @returns Array of MCPTool objects
|
|
109
|
-
*/
|
|
110
|
-
async function readMCPToolsFromFile(filePath) {
|
|
111
|
-
if (!(await fs_extra_1.default.pathExists(filePath))) {
|
|
112
|
-
throw new Error((0, localizeUtils_1.getLocalizedString)("core.MCPForDA.toolsFileNotFound", filePath));
|
|
113
|
-
}
|
|
114
|
-
const content = await fs_extra_1.default.readJSON(filePath);
|
|
115
|
-
let rawTools;
|
|
116
|
-
if (Array.isArray(content)) {
|
|
117
|
-
rawTools = content;
|
|
118
|
-
}
|
|
119
|
-
else if (content && Array.isArray(content.tools)) {
|
|
120
|
-
rawTools = content.tools;
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
throw new Error((0, localizeUtils_1.getLocalizedString)("core.MCPForDA.toolsFileInvalidFormat", '{ "tools": [...] }', filePath));
|
|
124
|
-
}
|
|
125
|
-
return rawTools.map((tool) => {
|
|
126
|
-
if (!tool.name) {
|
|
127
|
-
throw new Error((0, localizeUtils_1.getLocalizedString)("core.MCPForDA.toolsFileMissingName", '"name"', filePath));
|
|
128
|
-
}
|
|
129
|
-
return {
|
|
130
|
-
name: tool.name,
|
|
131
|
-
description: tool.description ?? "",
|
|
132
|
-
inputSchema: tool.inputSchema ?? tool.input_schema ?? { type: "object", properties: {} },
|
|
133
|
-
outputSchema: tool.outputSchema ?? tool.output_schema,
|
|
134
|
-
tags: tool.tags,
|
|
135
|
-
};
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Lightweight probe to check if an MCP server requires authentication.
|
|
140
|
-
* Sends a POST `initialize` JSON-RPC request (matching the MCP streamable-http
|
|
141
|
-
* transport) and checks for a 401 response + WWW-Authenticate header. GET is
|
|
142
|
-
* not reliable: spec-compliant MCP servers (Figma, etc.) return 405 to GET and
|
|
143
|
-
* only emit the WWW-Authenticate challenge on POST.
|
|
144
|
-
*
|
|
145
|
-
* Does NOT attempt to fetch tools via MCP protocol.
|
|
146
|
-
*
|
|
147
|
-
* @param serverUrl - The URL of the remote MCP server
|
|
148
|
-
* @returns Whether auth is required and the resource_metadata URL if available
|
|
149
|
-
*/
|
|
150
|
-
async function probeMCPServerAuth(serverUrl) {
|
|
151
|
-
const initializeBody = {
|
|
152
|
-
jsonrpc: "2.0",
|
|
153
|
-
id: 1,
|
|
154
|
-
method: "initialize",
|
|
155
|
-
params: {
|
|
156
|
-
protocolVersion: "2025-03-26",
|
|
157
|
-
capabilities: {},
|
|
158
|
-
clientInfo: { name: "atk-probe", version: "1.0.0" },
|
|
159
|
-
},
|
|
160
|
-
};
|
|
161
|
-
try {
|
|
162
|
-
await axios_1.default.post(serverUrl, initializeBody, {
|
|
163
|
-
timeout: 10000,
|
|
164
|
-
headers: {
|
|
165
|
-
"Content-Type": "application/json",
|
|
166
|
-
Accept: "application/json, text/event-stream",
|
|
167
|
-
},
|
|
168
|
-
});
|
|
169
|
-
return { requiresAuth: false };
|
|
170
|
-
}
|
|
171
|
-
catch (error) {
|
|
172
|
-
if (error?.response?.status === 401 || error?.status === 401) {
|
|
173
|
-
const wwwAuth = error?.response?.headers?.["www-authenticate"];
|
|
174
|
-
let authMetadataUrl;
|
|
175
|
-
if (wwwAuth) {
|
|
176
|
-
const match = wwwAuth.match(/resource_metadata=\s*"([^"]+)"/);
|
|
177
|
-
if (match) {
|
|
178
|
-
authMetadataUrl = match[1];
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
return { requiresAuth: true, authMetadataUrl };
|
|
182
|
-
}
|
|
183
|
-
return { requiresAuth: false };
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Resolve OAuth metadata (authorization_endpoint, token_endpoint, refresh_endpoint) from an MCP server's
|
|
188
|
-
* resource metadata URL. Follows the MCP auth flow:
|
|
189
|
-
* 1. Fetch the resource metadata URL (from WWW-Authenticate header's resource_metadata)
|
|
190
|
-
* 2. Extract authorization_servers[0]
|
|
191
|
-
* 3. Construct the RFC 8414 well-known URL
|
|
192
|
-
* 4. Fetch authorization_endpoint / token_endpoint from that well-known URL
|
|
193
|
-
*
|
|
194
|
-
* @param authMetadataUrl - The resource_metadata URL from the 401 WWW-Authenticate header
|
|
195
|
-
* @param wellKnownUrl - Optional: if already known, skip discovery and use this URL directly
|
|
196
|
-
* @returns MCPOAuthMetadata with authorization and token URLs
|
|
197
|
-
*/
|
|
198
|
-
async function resolveMCPOAuthMetadata(authMetadataUrl, wellKnownUrl) {
|
|
199
|
-
let resolvedWellKnownUrl = wellKnownUrl;
|
|
200
|
-
if (!resolvedWellKnownUrl) {
|
|
201
|
-
if (!authMetadataUrl) {
|
|
202
|
-
throw new Error((0, localizeUtils_1.getLocalizedString)("core.MCPForDA.mcpAuthMetadataUrlNotFound"));
|
|
203
|
-
}
|
|
204
|
-
const response = await axios_1.default.get(authMetadataUrl);
|
|
205
|
-
if (response.status === 200 &&
|
|
206
|
-
response.data &&
|
|
207
|
-
response.data.authorization_servers &&
|
|
208
|
-
response.data.authorization_servers.length > 0) {
|
|
209
|
-
const mcpServerMetadataUrl = response.data.authorization_servers[0];
|
|
210
|
-
// Transform to RFC 8414 well-known endpoint:
|
|
211
|
-
// https://{domain}/.well-known/oauth-authorization-server{path}
|
|
212
|
-
// The WHATWG URL parser normalizes a path-less issuer (e.g. "https://mcp.notion.com")
|
|
213
|
-
// to pathname "/". Appending that "/" would produce a trailing-slash URL
|
|
214
|
-
// (".../oauth-authorization-server/") that servers like Notion reject with 404, so treat
|
|
215
|
-
// the root path as empty per RFC 8414.
|
|
216
|
-
const serverUrl = new URL(mcpServerMetadataUrl);
|
|
217
|
-
const serverPath = serverUrl.pathname === "/" ? "" : serverUrl.pathname;
|
|
218
|
-
resolvedWellKnownUrl = `${serverUrl.protocol}//${serverUrl.host}/.well-known/oauth-authorization-server${serverPath}`;
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
throw new Error((0, localizeUtils_1.getLocalizedString)("core.MCPForDA.mcpServerMetadataUrlNotFound"));
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
const metadataResponse = await axios_1.default.get(resolvedWellKnownUrl);
|
|
225
|
-
const authorizationUrl = metadataResponse.data?.authorization_endpoint;
|
|
226
|
-
const tokenUrl = metadataResponse.data?.token_endpoint;
|
|
227
|
-
const refreshUrl = metadataResponse.data?.refresh_endpoint;
|
|
228
|
-
if (!authorizationUrl || !tokenUrl) {
|
|
229
|
-
throw new Error((0, localizeUtils_1.getLocalizedString)("core.MCPForDA.authUrlNotFound"));
|
|
230
|
-
}
|
|
231
|
-
return { authorizationUrl, tokenUrl, refreshUrl, wellKnownUrl: resolvedWellKnownUrl };
|
|
232
|
-
}
|
|
6
|
+
tslib_1.__exportStar(require("../../common/mcpToolFetcher"), exports);
|
|
233
7
|
//# sourceMappingURL=mcpToolFetcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpToolFetcher.js","sourceRoot":"","sources":["../../../src/component/utils/mcpToolFetcher.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC
|
|
1
|
+
{"version":3,"file":"mcpToolFetcher.js","sourceRoot":"","sources":["../../../src/component/utils/mcpToolFetcher.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,sEAA4C"}
|
|
@@ -1,56 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const odrProviderDeps: {
|
|
3
|
-
getPlatform: () => string;
|
|
4
|
-
exec: typeof childProcess.exec;
|
|
5
|
-
logError: (...args: any[]) => void;
|
|
6
|
-
};
|
|
7
|
-
export declare const logError: (...args: any[]) => void;
|
|
8
|
-
export interface ODRServer {
|
|
9
|
-
name: string;
|
|
10
|
-
display_name: string;
|
|
11
|
-
description: string;
|
|
12
|
-
version: string;
|
|
13
|
-
identifier: string;
|
|
14
|
-
tools: ODRTool[];
|
|
15
|
-
packageFamily: string;
|
|
16
|
-
command: string;
|
|
17
|
-
args: string[];
|
|
18
|
-
}
|
|
19
|
-
export interface ODRTool {
|
|
20
|
-
name: string;
|
|
21
|
-
description: string;
|
|
22
|
-
inputSchema: any;
|
|
23
|
-
outputSchema?: any;
|
|
24
|
-
_meta?: any;
|
|
25
|
-
}
|
|
26
|
-
export declare class ODRProvider {
|
|
27
|
-
/**
|
|
28
|
-
* Check if a server configuration is ODR-based.
|
|
29
|
-
* @param serverConfig The server configuration object
|
|
30
|
-
* @returns True if the server is ODR-based, false otherwise
|
|
31
|
-
*/
|
|
32
|
-
static isODRServer(serverConfig: any): boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Parse the output of 'odr list' command
|
|
35
|
-
* @param jsonOutput The JSON output from 'odr list' command
|
|
36
|
-
* @returns Array of parsed ODR servers with their tools
|
|
37
|
-
*/
|
|
38
|
-
static parseODRListOutput(jsonOutput: any): ODRServer[];
|
|
39
|
-
/**
|
|
40
|
-
* List all available local MCP servers from Windows ODR.
|
|
41
|
-
* This is used during project creation to show available servers to the user.
|
|
42
|
-
* @returns Array of ODR servers. Returns empty array if:
|
|
43
|
-
* - Not on Windows platform
|
|
44
|
-
* - ODR command is not available (not installed)
|
|
45
|
-
* - ODR command fails or returns invalid output
|
|
46
|
-
*/
|
|
47
|
-
static listServers(): Promise<ODRServer[]>;
|
|
48
|
-
/**
|
|
49
|
-
* Get tools for a specific ODR server by matching command and arguments.
|
|
50
|
-
* @param command The command of the ODR server (e.g., "odr")
|
|
51
|
-
* @param args The arguments array for the ODR server
|
|
52
|
-
* @returns Array of tools from the matching ODR server, or empty array if no match found
|
|
53
|
-
*/
|
|
54
|
-
static getToolsForODRServer(command: string, args?: string[]): Promise<ODRTool[]>;
|
|
55
|
-
}
|
|
1
|
+
export * from "../../common/odrProvider";
|
|
56
2
|
//# sourceMappingURL=odrProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odrProvider.d.ts","sourceRoot":"","sources":["../../../src/component/utils/odrProvider.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"odrProvider.d.ts","sourceRoot":"","sources":["../../../src/component/utils/odrProvider.ts"],"names":[],"mappings":"AAGA,cAAc,0BAA0B,CAAC"}
|
|
@@ -2,106 +2,6 @@
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT license.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.ODRProvider = exports.logError = exports.odrProviderDeps = void 0;
|
|
6
5
|
const tslib_1 = require("tslib");
|
|
7
|
-
|
|
8
|
-
const util_1 = require("util");
|
|
9
|
-
exports.odrProviderDeps = {
|
|
10
|
-
getPlatform: () => process.platform,
|
|
11
|
-
exec: childProcess.exec,
|
|
12
|
-
logError: (...args) => console.error(...args),
|
|
13
|
-
};
|
|
14
|
-
const logError = (...args) => exports.odrProviderDeps.logError(...args);
|
|
15
|
-
exports.logError = logError;
|
|
16
|
-
class ODRProvider {
|
|
17
|
-
/**
|
|
18
|
-
* Check if a server configuration is ODR-based.
|
|
19
|
-
* @param serverConfig The server configuration object
|
|
20
|
-
* @returns True if the server is ODR-based, false otherwise
|
|
21
|
-
*/
|
|
22
|
-
static isODRServer(serverConfig) {
|
|
23
|
-
if (serverConfig?.type !== "stdio" || !serverConfig.command) {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
const configCommand = serverConfig.command.toLowerCase();
|
|
27
|
-
return configCommand === "odr" || configCommand.endsWith("odr.exe");
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Parse the output of 'odr list' command
|
|
31
|
-
* @param jsonOutput The JSON output from 'odr list' command
|
|
32
|
-
* @returns Array of parsed ODR servers with their tools
|
|
33
|
-
*/
|
|
34
|
-
static parseODRListOutput(jsonOutput) {
|
|
35
|
-
const servers = [];
|
|
36
|
-
if (!jsonOutput || !jsonOutput.servers || !Array.isArray(jsonOutput.servers)) {
|
|
37
|
-
return servers;
|
|
38
|
-
}
|
|
39
|
-
for (const server of jsonOutput.servers) {
|
|
40
|
-
const manifest = server._meta?.["io.modelcontextprotocol.registry/publisher-provided"]?.["com.microsoft.windows"]?.manifest;
|
|
41
|
-
const staticResponses = manifest?._meta?.["com.microsoft.windows"]?.static_responses;
|
|
42
|
-
const toolsList = staticResponses?.["tools/list"]?.tools || [];
|
|
43
|
-
const packageFamily = manifest?._meta?.["com.microsoft.windows"]?.package_family_name;
|
|
44
|
-
const mcpConfig = manifest?.server?.mcp_config;
|
|
45
|
-
if (packageFamily && mcpConfig) {
|
|
46
|
-
servers.push({
|
|
47
|
-
name: server.name,
|
|
48
|
-
packageFamily: packageFamily,
|
|
49
|
-
display_name: manifest?.display_name || server.name,
|
|
50
|
-
description: server.description || "",
|
|
51
|
-
version: server.version || "1.0.0",
|
|
52
|
-
identifier: server.packages?.[0]?.identifier || "",
|
|
53
|
-
command: mcpConfig.command || "",
|
|
54
|
-
args: mcpConfig.args || [],
|
|
55
|
-
tools: toolsList.map((tool) => ({
|
|
56
|
-
name: tool.name,
|
|
57
|
-
description: tool.description || "",
|
|
58
|
-
inputSchema: tool.inputSchema,
|
|
59
|
-
outputSchema: tool.outputSchema,
|
|
60
|
-
})),
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return servers;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* List all available local MCP servers from Windows ODR.
|
|
68
|
-
* This is used during project creation to show available servers to the user.
|
|
69
|
-
* @returns Array of ODR servers. Returns empty array if:
|
|
70
|
-
* - Not on Windows platform
|
|
71
|
-
* - ODR command is not available (not installed)
|
|
72
|
-
* - ODR command fails or returns invalid output
|
|
73
|
-
*/
|
|
74
|
-
static async listServers() {
|
|
75
|
-
if (exports.odrProviderDeps.getPlatform() !== "win32") {
|
|
76
|
-
return [];
|
|
77
|
-
}
|
|
78
|
-
const execAsync = (0, util_1.promisify)(exports.odrProviderDeps.exec);
|
|
79
|
-
try {
|
|
80
|
-
const { stdout } = await execAsync("odr list");
|
|
81
|
-
if (!stdout) {
|
|
82
|
-
return [];
|
|
83
|
-
}
|
|
84
|
-
const jsonOutput = JSON.parse(stdout);
|
|
85
|
-
return ODRProvider.parseODRListOutput(jsonOutput);
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
exports.odrProviderDeps.logError("Error executing odr list:", error);
|
|
89
|
-
return [];
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Get tools for a specific ODR server by matching command and arguments.
|
|
94
|
-
* @param command The command of the ODR server (e.g., "odr")
|
|
95
|
-
* @param args The arguments array for the ODR server
|
|
96
|
-
* @returns Array of tools from the matching ODR server, or empty array if no match found
|
|
97
|
-
*/
|
|
98
|
-
static async getToolsForODRServer(command, args = []) {
|
|
99
|
-
const odrServers = await ODRProvider.listServers();
|
|
100
|
-
const matchingServer = odrServers.find((odrServer) => {
|
|
101
|
-
return (odrServer.command === command && JSON.stringify(odrServer.args) === JSON.stringify(args));
|
|
102
|
-
});
|
|
103
|
-
return matchingServer?.tools || [];
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
exports.ODRProvider = ODRProvider;
|
|
6
|
+
tslib_1.__exportStar(require("../../common/odrProvider"), exports);
|
|
107
7
|
//# sourceMappingURL=odrProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odrProvider.js","sourceRoot":"","sources":["../../../src/component/utils/odrProvider.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC
|
|
1
|
+
{"version":3,"file":"odrProvider.js","sourceRoot":"","sources":["../../../src/component/utils/odrProvider.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,mEAAyC"}
|