@microsoft/teamsfx-core 3.0.14 → 3.0.15-alpha.3dde8a4002.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/mcpToolFetcher.d.ts +31 -0
- package/build/common/mcpToolFetcher.d.ts.map +1 -0
- package/build/common/mcpToolFetcher.js +182 -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 +4 -4
- package/build/common/wrappedAxiosClient.d.ts +1 -1
- 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.map +1 -1
- 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.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 +6 -56
- 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/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 +11 -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.map +1 -1
- package/build/component/utils/mcpAuthScaffolder.d.ts.map +1 -1
- 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 +41 -0
- package/build/core/FxCore.declarativeAgent.js.map +1 -1
- package/build/core/FxCore.js +3 -5
- package/build/core/FxCore.js.map +1 -1
- package/build/core/createFrontDoorAdapters.d.ts +1 -25
- package/build/core/createFrontDoorAdapters.d.ts.map +1 -1
- package/build/core/createFrontDoorAdapters.js +4 -155
- 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 +141 -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/question/inputs/AddKnowledgeInputs.d.ts.map +1 -1
- package/build/question/inputs/CreateProjectInputs.d.ts +2 -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 +7 -0
- package/build/question/options/CreateProjectOptions.js.map +1 -1
- package/build/question/other.d.ts.map +1 -1
- package/build/question/other.js +2 -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.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js +0 -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 +50 -9
- package/build/v4/collectInputs/collectInputs.d.ts.map +1 -1
- package/build/v4/collectInputs/collectInputs.js +274 -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 +23 -0
- package/build/v4/mcp/mcpAuthAction.d.ts.map +1 -0
- package/build/v4/mcp/mcpAuthAction.js +151 -0
- package/build/v4/mcp/mcpAuthAction.js.map +1 -0
- package/build/v4/mcp/mcpAuthScaffold.d.ts +28 -0
- package/build/v4/mcp/mcpAuthScaffold.d.ts.map +1 -0
- package/build/v4/mcp/mcpAuthScaffold.js +124 -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 +17 -4
- package/build/v4/pipeline/runScaffoldPipeline.d.ts.map +1 -1
- package/build/v4/pipeline/runScaffoldPipeline.js +60 -9
- 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 +1 -2
- 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 +2 -1
- package/build/v4/runtime/inMemoryRuntime.d.ts.map +1 -1
- package/build/v4/runtime/inMemoryRuntime.js +2 -2
- 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 +2 -1
- package/build/v4/runtime/realRuntime.d.ts.map +1 -1
- package/build/v4/runtime/realRuntime.js +2 -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 +8 -3
- package/build/v4/runtime/runtimeRegistry.d.ts.map +1 -1
- package/build/v4/runtime/runtimeRegistry.js +122 -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 +13 -63
- 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 +47 -555
- 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/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/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 +36 -41
- 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 +58 -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 +71 -0
- package/build/v4/validators/createInputValidators.js.map +1 -0
- package/package.json +24 -18
- package/resource/package.nls.cs.json +1 -0
- package/resource/package.nls.de.json +55 -54
- package/resource/package.nls.es.json +1 -0
- package/resource/package.nls.fr.json +1 -0
- package/resource/package.nls.it.json +1 -0
- package/resource/package.nls.ja.json +1 -0
- package/resource/package.nls.json +2 -0
- package/resource/package.nls.ko.json +1 -0
- package/resource/package.nls.pl.json +1 -0
- package/resource/package.nls.pt-BR.json +1 -0
- package/resource/package.nls.ru.json +1 -0
- package/resource/package.nls.tr.json +1 -0
- package/resource/package.nls.zh-Hans.json +1 -0
- package/resource/package.nls.zh-Hant.json +1 -0
- package/resource/templates/package.nls.cs.json +9 -2
- package/resource/templates/package.nls.de.json +9 -2
- package/resource/templates/package.nls.es.json +9 -2
- package/resource/templates/package.nls.fr.json +9 -2
- package/resource/templates/package.nls.it.json +9 -2
- package/resource/templates/package.nls.ja.json +9 -2
- package/resource/templates/package.nls.json +16 -3
- package/resource/templates/package.nls.ko.json +9 -2
- package/resource/templates/package.nls.pl.json +9 -2
- package/resource/templates/package.nls.pt-BR.json +9 -2
- package/resource/templates/package.nls.ru.json +9 -2
- package/resource/templates/package.nls.tr.json +9 -2
- package/resource/templates/package.nls.zh-Hans.json +9 -2
- package/resource/templates/package.nls.zh-Hant.json +9 -2
- 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 +12 -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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffoldCatalog.js","sourceRoot":"","sources":["../../../src/v4/inspection/scaffoldCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ScaffoldMetadataSource } from "./scaffoldCatalog";
|
|
2
|
+
/** Adapt immutable staged metadata archive bytes to the catalog source port. */
|
|
3
|
+
export declare function metadataArchiveSource(bytes: Buffer): ScaffoldMetadataSource;
|
|
4
|
+
/** Adapt the authored `templates/v4` directory to a metadata-only in-memory archive. */
|
|
5
|
+
export declare function authoredDirectoryMetadataSource(root: string): ScaffoldMetadataSource;
|
|
6
|
+
//# sourceMappingURL=scaffoldMetadataSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffoldMetadataSource.d.ts","sourceRoot":"","sources":["../../../src/v4/inspection/scaffoldMetadataSource.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AA+C3D,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,CAE3E;AAED,wFAAwF;AACxF,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAiBpF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.metadataArchiveSource = metadataArchiveSource;
|
|
6
|
+
exports.authoredDirectoryMetadataSource = authoredDirectoryMetadataSource;
|
|
7
|
+
const tslib_1 = require("tslib");
|
|
8
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
9
|
+
const adm_zip_1 = tslib_1.__importDefault(require("adm-zip"));
|
|
10
|
+
const fs = tslib_1.__importStar(require("fs-extra"));
|
|
11
|
+
const neverthrow_1 = require("neverthrow");
|
|
12
|
+
const path = tslib_1.__importStar(require("path"));
|
|
13
|
+
const localizeUtils_1 = require("../../common/localizeUtils");
|
|
14
|
+
const SOURCE = "Scaffold";
|
|
15
|
+
const PACKAGE_METADATA_FILES = new Set(["descriptor.json", "questions.json", "pipeline.json"]);
|
|
16
|
+
function metadataSourceError(error) {
|
|
17
|
+
const options = {
|
|
18
|
+
source: SOURCE,
|
|
19
|
+
name: "ScaffoldMetadataSourceReadFailed",
|
|
20
|
+
message: (0, localizeUtils_1.getLocalizedString)("core.v4.scaffoldMetadataSourceReadFailed"),
|
|
21
|
+
};
|
|
22
|
+
return error instanceof Error ? new teamsfx_api_1.SystemError({ ...options, error }) : new teamsfx_api_1.SystemError(options);
|
|
23
|
+
}
|
|
24
|
+
function isMetadataFile(relativePath) {
|
|
25
|
+
const segments = relativePath.split("/");
|
|
26
|
+
if (segments.length === 3 && segments[0] === "_shared" && segments[1] === "questions") {
|
|
27
|
+
return segments[2].endsWith(".json");
|
|
28
|
+
}
|
|
29
|
+
if (segments[0] !== "create" && segments[0] !== "modify") {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (segments.length === 2 && segments[1] === "selector.json") {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return segments.length > 2 && PACKAGE_METADATA_FILES.has(segments[segments.length - 1]);
|
|
36
|
+
}
|
|
37
|
+
function collectMetadataFiles(directory, relativeDirectory, files) {
|
|
38
|
+
const entries = fs
|
|
39
|
+
.readdirSync(directory, { withFileTypes: true })
|
|
40
|
+
.sort((left, right) => (left.name < right.name ? -1 : left.name > right.name ? 1 : 0));
|
|
41
|
+
for (const entry of entries) {
|
|
42
|
+
const relativePath = path.posix.join(relativeDirectory, entry.name);
|
|
43
|
+
if (entry.isDirectory()) {
|
|
44
|
+
if (entry.name !== "content" &&
|
|
45
|
+
!(relativeDirectory.length === 0 && entry.name === "schema")) {
|
|
46
|
+
collectMetadataFiles(path.join(directory, entry.name), relativePath, files);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (entry.isFile() && isMetadataFile(relativePath)) {
|
|
50
|
+
files.push(relativePath);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** Adapt immutable staged metadata archive bytes to the catalog source port. */
|
|
55
|
+
function metadataArchiveSource(bytes) {
|
|
56
|
+
return { load: () => (0, neverthrow_1.ok)(bytes) };
|
|
57
|
+
}
|
|
58
|
+
/** Adapt the authored `templates/v4` directory to a metadata-only in-memory archive. */
|
|
59
|
+
function authoredDirectoryMetadataSource(root) {
|
|
60
|
+
return {
|
|
61
|
+
load: () => {
|
|
62
|
+
try {
|
|
63
|
+
const resolvedRoot = path.resolve(root);
|
|
64
|
+
const files = [];
|
|
65
|
+
collectMetadataFiles(resolvedRoot, "", files);
|
|
66
|
+
const zip = new adm_zip_1.default();
|
|
67
|
+
for (const file of files) {
|
|
68
|
+
zip.addFile(`v4/${file}`, fs.readFileSync(path.join(resolvedRoot, file)));
|
|
69
|
+
}
|
|
70
|
+
return (0, neverthrow_1.ok)(zip.toBuffer());
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
return (0, neverthrow_1.err)(metadataSourceError(error));
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=scaffoldMetadataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffoldMetadataSource.js","sourceRoot":"","sources":["../../../src/v4/inspection/scaffoldMetadataSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FxError } from "@microsoft/teamsfx-api";
|
|
2
|
+
import { Result } from "neverthrow";
|
|
3
|
+
export declare const MCP_DCR_WELL_KNOWN_URL_PLACEHOLDER = "<PLEASE_FILL_IN_WELL_KNOWN_AUTHORIZATION_SERVER_URL>";
|
|
4
|
+
export interface ResolvedMCPAuthEndpoints {
|
|
5
|
+
authorizationUrl?: string;
|
|
6
|
+
tokenUrl?: string;
|
|
7
|
+
refreshUrl?: string;
|
|
8
|
+
wellKnownUrl?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface MCPAuthActionArgs {
|
|
11
|
+
authType: string;
|
|
12
|
+
authName: string;
|
|
13
|
+
registrationId: string;
|
|
14
|
+
mcpServerUrl: string;
|
|
15
|
+
endpoints: ResolvedMCPAuthEndpoints;
|
|
16
|
+
}
|
|
17
|
+
export interface MCPAuthActionResult {
|
|
18
|
+
yaml: string;
|
|
19
|
+
wellKnownUrlPlaceholderUsed: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** Add an MCP auth provision action while preserving the surrounding YAML document. */
|
|
22
|
+
export declare function injectMcpAuthActionYaml(yaml: string, args: MCPAuthActionArgs): Result<MCPAuthActionResult, FxError>;
|
|
23
|
+
//# sourceMappingURL=mcpAuthAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpAuthAction.d.ts","sourceRoot":"","sources":["../../../src/v4/mcp/mcpAuthAction.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAe,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAO7C,eAAO,MAAM,kCAAkC,yDACS,CAAC;AAEzD,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,wBAAwB,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B,EAAE,OAAO,CAAC;CACtC;AA8GD,uFAAuF;AACvF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,GACtB,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAmDtC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.MCP_DCR_WELL_KNOWN_URL_PLACEHOLDER = void 0;
|
|
6
|
+
exports.injectMcpAuthActionYaml = injectMcpAuthActionYaml;
|
|
7
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
8
|
+
const neverthrow_1 = require("neverthrow");
|
|
9
|
+
const yaml_1 = require("yaml");
|
|
10
|
+
const SOURCE = "Scaffold";
|
|
11
|
+
const MIN_DCR_YAML_VERSION = "v1.13";
|
|
12
|
+
const SUPPORTED_AUTH_TYPES = new Set(["none", "oauth", "entra-sso", "oauth-dynamic"]);
|
|
13
|
+
exports.MCP_DCR_WELL_KNOWN_URL_PLACEHOLDER = "<PLEASE_FILL_IN_WELL_KNOWN_AUTHORIZATION_SERVER_URL>";
|
|
14
|
+
function failure(message) {
|
|
15
|
+
return (0, neverthrow_1.err)(new teamsfx_api_1.SystemError({ source: SOURCE, name: "McpAuthInjectFailed", message }));
|
|
16
|
+
}
|
|
17
|
+
function registrationId(item) {
|
|
18
|
+
if (!(0, yaml_1.isMap)(item)) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
const output = item.get("writeToEnvironmentFile", true);
|
|
22
|
+
if (!(0, yaml_1.isMap)(output)) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const value = output.get("configurationId");
|
|
26
|
+
return typeof value === "string" ? value : undefined;
|
|
27
|
+
}
|
|
28
|
+
function uses(item) {
|
|
29
|
+
if (!(0, yaml_1.isMap)(item)) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const value = item.get("uses");
|
|
33
|
+
return typeof value === "string" ? value : undefined;
|
|
34
|
+
}
|
|
35
|
+
function teamsAppId(item) {
|
|
36
|
+
if (uses(item) !== "teamsApp/create" || !(0, yaml_1.isMap)(item)) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const output = item.get("writeToEnvironmentFile", true);
|
|
40
|
+
if (!(0, yaml_1.isMap)(output)) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const value = output.get("teamsAppId");
|
|
44
|
+
return typeof value === "string" ? value : undefined;
|
|
45
|
+
}
|
|
46
|
+
function ensureMinimumVersion(current, minimum) {
|
|
47
|
+
if (typeof current !== "string") {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
const parse = (version) => {
|
|
51
|
+
const match = /^v?(\d+(?:\.\d+){1,2})$/.exec(version);
|
|
52
|
+
return match?.[1].split(".").map((part) => Number.parseInt(part, 10));
|
|
53
|
+
};
|
|
54
|
+
const currentParts = parse(current);
|
|
55
|
+
const minimumParts = parse(minimum);
|
|
56
|
+
if (!currentParts || !minimumParts) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const width = Math.max(currentParts.length, minimumParts.length);
|
|
60
|
+
for (let index = 0; index < width; index++) {
|
|
61
|
+
const currentPart = currentParts[index] ?? 0;
|
|
62
|
+
const minimumPart = minimumParts[index] ?? 0;
|
|
63
|
+
if (currentPart > minimumPart) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
if (currentPart < minimumPart) {
|
|
67
|
+
return minimum;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
function oauthAction(args, appIdEnvName) {
|
|
73
|
+
const endpointFields = {};
|
|
74
|
+
if (args.endpoints.authorizationUrl) {
|
|
75
|
+
endpointFields.authorizationUrl = args.endpoints.authorizationUrl;
|
|
76
|
+
}
|
|
77
|
+
if (args.endpoints.tokenUrl) {
|
|
78
|
+
endpointFields.tokenUrl = args.endpoints.tokenUrl;
|
|
79
|
+
}
|
|
80
|
+
if (args.endpoints.refreshUrl) {
|
|
81
|
+
endpointFields.refreshUrl = args.endpoints.refreshUrl;
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
uses: "oauth/register",
|
|
85
|
+
with: {
|
|
86
|
+
name: args.authName,
|
|
87
|
+
appId: `\${{${appIdEnvName}}}`,
|
|
88
|
+
flow: "authorizationCode",
|
|
89
|
+
...(args.authType === "oauth"
|
|
90
|
+
? { ...endpointFields, identityProvider: "Custom" }
|
|
91
|
+
: { identityProvider: "MicrosoftEntra" }),
|
|
92
|
+
baseUrl: args.mcpServerUrl,
|
|
93
|
+
},
|
|
94
|
+
writeToEnvironmentFile: { configurationId: args.registrationId },
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function dcrAction(args, appIdEnvName, wellKnownUrl) {
|
|
98
|
+
return {
|
|
99
|
+
uses: "dcr/register",
|
|
100
|
+
with: {
|
|
101
|
+
name: args.authName,
|
|
102
|
+
appId: `\${{${appIdEnvName}}}`,
|
|
103
|
+
applicableToApps: "AnyApp",
|
|
104
|
+
targetAudience: "HomeTenant",
|
|
105
|
+
wellKnownAuthorizationServer: wellKnownUrl,
|
|
106
|
+
targetUrlsShouldStartWith: [args.mcpServerUrl],
|
|
107
|
+
},
|
|
108
|
+
writeToEnvironmentFile: { configurationId: args.registrationId },
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/** Add an MCP auth provision action while preserving the surrounding YAML document. */
|
|
112
|
+
function injectMcpAuthActionYaml(yaml, args) {
|
|
113
|
+
if (!SUPPORTED_AUTH_TYPES.has(args.authType)) {
|
|
114
|
+
return failure(`Unsupported MCP auth type '${args.authType}'.`);
|
|
115
|
+
}
|
|
116
|
+
if (args.authType === "none") {
|
|
117
|
+
return (0, neverthrow_1.ok)({ yaml, wellKnownUrlPlaceholderUsed: false });
|
|
118
|
+
}
|
|
119
|
+
const document = (0, yaml_1.parseDocument)(yaml);
|
|
120
|
+
if (document.errors.length > 0) {
|
|
121
|
+
return failure("The rendered m365agents.yml is not valid YAML.");
|
|
122
|
+
}
|
|
123
|
+
const provision = document.get("provision", true);
|
|
124
|
+
if (!(0, yaml_1.isSeq)(provision)) {
|
|
125
|
+
return failure("The rendered m365agents.yml does not declare a provision sequence.");
|
|
126
|
+
}
|
|
127
|
+
const actionUses = args.authType === "oauth-dynamic" ? "dcr/register" : "oauth/register";
|
|
128
|
+
const alreadyRegistered = provision.items.some((item) => uses(item) === actionUses && registrationId(item) === args.registrationId);
|
|
129
|
+
if (alreadyRegistered) {
|
|
130
|
+
return (0, neverthrow_1.ok)({ yaml: document.toString(), wellKnownUrlPlaceholderUsed: false });
|
|
131
|
+
}
|
|
132
|
+
provision.items = provision.items.filter((item) => uses(item) !== undefined);
|
|
133
|
+
const teamsAppIndex = provision.items.findIndex((item) => uses(item) === "teamsApp/create");
|
|
134
|
+
const appIdEnvName = teamsAppIndex >= 0 ? teamsAppId(provision.items[teamsAppIndex]) : undefined;
|
|
135
|
+
if (!appIdEnvName) {
|
|
136
|
+
return failure("The rendered m365agents.yml does not expose a Teams app id.");
|
|
137
|
+
}
|
|
138
|
+
const placeholderUsed = args.authType === "oauth-dynamic" && !args.endpoints.wellKnownUrl;
|
|
139
|
+
const action = args.authType === "oauth-dynamic"
|
|
140
|
+
? dcrAction(args, appIdEnvName, args.endpoints.wellKnownUrl ?? exports.MCP_DCR_WELL_KNOWN_URL_PLACEHOLDER)
|
|
141
|
+
: oauthAction(args, appIdEnvName);
|
|
142
|
+
provision.items.splice(teamsAppIndex + 1, 0, document.createNode(action));
|
|
143
|
+
if (args.authType === "oauth-dynamic") {
|
|
144
|
+
const version = ensureMinimumVersion(document.get("version"), MIN_DCR_YAML_VERSION);
|
|
145
|
+
if (version) {
|
|
146
|
+
document.set("version", version);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return (0, neverthrow_1.ok)({ yaml: document.toString(), wellKnownUrlPlaceholderUsed: placeholderUsed });
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=mcpAuthAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpAuthAction.js","sourceRoot":"","sources":["../../../src/v4/mcp/mcpAuthAction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FxError } from "@microsoft/teamsfx-api";
|
|
2
|
+
import { Result } from "neverthrow";
|
|
3
|
+
import { probeMCPServerAuth, resolveMCPOAuthMetadata } from "../../common/mcpToolFetcher";
|
|
4
|
+
import { StepContext } from "../pipeline/runScaffoldPipeline";
|
|
5
|
+
/** Indirection seam so unit tests can stub the network probes on a plain object. */
|
|
6
|
+
export declare const mcpAuthScaffoldDeps: {
|
|
7
|
+
probeMCPServerAuth: typeof probeMCPServerAuth;
|
|
8
|
+
resolveMCPOAuthMetadata: typeof resolveMCPOAuthMetadata;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Inject the `oauth/register` (or `dcr/register`) provision action into the rendered
|
|
12
|
+
* `m365agents.yml` (idempotent; inserted after `teamsApp/create`, which writes the
|
|
13
|
+
* `${{TEAMS_APP_ID}}` the action references).
|
|
14
|
+
*/
|
|
15
|
+
export declare function injectMcpAuthAction(ctx: StepContext, args: {
|
|
16
|
+
ymlPath: string;
|
|
17
|
+
authType: string;
|
|
18
|
+
mcpServerUrl: string;
|
|
19
|
+
}): Promise<Result<void, FxError>>;
|
|
20
|
+
/**
|
|
21
|
+
* Write the deterministic `MCP_DA_AUTH_ID_<NS>=` registration placeholder into `env/.env.dev`
|
|
22
|
+
* (SCN-CREATE-MCP-06). The value is populated at provision by the injected action's
|
|
23
|
+
* `writeToEnvironmentFile.configurationId`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function persistMcpAuthRegistrationEnv(ctx: StepContext, args: {
|
|
26
|
+
mcpServerUrl: string;
|
|
27
|
+
}): Result<void, FxError>;
|
|
28
|
+
//# sourceMappingURL=mcpAuthScaffold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpAuthScaffold.d.ts","sourceRoot":"","sources":["../../../src/v4/mcp/mcpAuthScaffold.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAe,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAuB9D,oFAAoF;AACpF,eAAO,MAAM,mBAAmB;;;CAG/B,CAAC;AAuDF;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAChE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CA2BhC;AAOD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAUvB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.mcpAuthScaffoldDeps = void 0;
|
|
6
|
+
exports.injectMcpAuthAction = injectMcpAuthAction;
|
|
7
|
+
exports.persistMcpAuthRegistrationEnv = persistMcpAuthRegistrationEnv;
|
|
8
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
9
|
+
const neverthrow_1 = require("neverthrow");
|
|
10
|
+
const localizeUtils_1 = require("../../common/localizeUtils");
|
|
11
|
+
const mcpAuthAction_1 = require("./mcpAuthAction");
|
|
12
|
+
const mcpToolFetcher_1 = require("../../common/mcpToolFetcher");
|
|
13
|
+
const whitelist_1 = require("../runtime/whitelist");
|
|
14
|
+
/**
|
|
15
|
+
* v4 MCP-auth facade. The v4-owned YAML action mutator produces the create/add auth action shape
|
|
16
|
+
* for every auth type (`oauth`/`entra-sso` -> `oauth/register`, `oauth-dynamic` -> `dcr/register`
|
|
17
|
+
* with the v1.13 schema bump).
|
|
18
|
+
*
|
|
19
|
+
* Credential env persistence (v3 `persistMCPAuthCredentialEnvVars`) is intentionally NOT run at
|
|
20
|
+
* scaffold time: it encrypts the `SECRET_*` client secret with `LocalCrypto(projectId)`, and
|
|
21
|
+
* `settingsUtil.readSettings` materializes that `projectId` from a fresh `uuid.v4()` when the yml
|
|
22
|
+
* lacks one. That non-determinism would break the deterministic-scaffold contract
|
|
23
|
+
* (SCN-CREATE-MCP-10). So the action is injected with `persistCredentialEnvRefs: false` (create
|
|
24
|
+
* and add do not collect credentials; the existing `oauth/register` question middleware asks for
|
|
25
|
+
* missing values at provision), and only the deterministic `MCP_DA_AUTH_ID_<NS>` registration
|
|
26
|
+
* placeholder is written here (SCN-CREATE-MCP-06/15/16, SCN-ADD-MCP-07/10).
|
|
27
|
+
*/
|
|
28
|
+
const SOURCE = "Scaffold";
|
|
29
|
+
/** MCP create/add scaffolding targets the `dev` environment for the registration placeholder. */
|
|
30
|
+
const CREATE_ENV_FILE = "env/.env.dev";
|
|
31
|
+
/** Indirection seam so unit tests can stub the network probes on a plain object. */
|
|
32
|
+
exports.mcpAuthScaffoldDeps = {
|
|
33
|
+
probeMCPServerAuth: mcpToolFetcher_1.probeMCPServerAuth,
|
|
34
|
+
resolveMCPOAuthMetadata: mcpToolFetcher_1.resolveMCPOAuthMetadata,
|
|
35
|
+
};
|
|
36
|
+
function systemError(name, message) {
|
|
37
|
+
return new teamsfx_api_1.SystemError({ source: SOURCE, name, message });
|
|
38
|
+
}
|
|
39
|
+
function errorMessage(error) {
|
|
40
|
+
return error instanceof Error ? error.message : String(error);
|
|
41
|
+
}
|
|
42
|
+
/** The MCP namespace, registration id, and uppercase server name derived from the server URL. */
|
|
43
|
+
function mcpAuthIdentifiers(mcpServerUrl) {
|
|
44
|
+
const namespace = (0, whitelist_1.deriveMcpServerName)(mcpServerUrl);
|
|
45
|
+
return {
|
|
46
|
+
namespace,
|
|
47
|
+
registrationId: `MCP_DA_AUTH_ID_${namespace.toUpperCase()}`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Best-effort resolution of the authorization-server endpoints for `oauth` / `oauth-dynamic`,
|
|
52
|
+
* mirroring the v3 create flow: probe the server for its `resource_metadata`, then resolve the
|
|
53
|
+
* well-known OAuth metadata. Any failure yields empty endpoints — the action is still injected and
|
|
54
|
+
* the developer fills the URLs before provisioning, matching v3's best-effort behavior. `entra-sso`
|
|
55
|
+
* and `none` need no endpoints (no network).
|
|
56
|
+
*/
|
|
57
|
+
async function resolveEndpoints(authType, mcpServerUrl, warn) {
|
|
58
|
+
if (authType !== "oauth" && authType !== "oauth-dynamic") {
|
|
59
|
+
return {};
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const probe = await exports.mcpAuthScaffoldDeps.probeMCPServerAuth(mcpServerUrl);
|
|
63
|
+
const metadata = await exports.mcpAuthScaffoldDeps.resolveMCPOAuthMetadata(probe.authMetadataUrl, undefined);
|
|
64
|
+
return {
|
|
65
|
+
authorizationUrl: metadata.authorizationUrl,
|
|
66
|
+
tokenUrl: metadata.tokenUrl,
|
|
67
|
+
refreshUrl: metadata.refreshUrl,
|
|
68
|
+
wellKnownUrl: metadata.wellKnownUrl,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
warn?.((0, localizeUtils_1.getLocalizedString)("core.MCPForDA.mcpAuthMetadataMissingError", errorMessage(error)));
|
|
73
|
+
return {};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Inject the `oauth/register` (or `dcr/register`) provision action into the rendered
|
|
78
|
+
* `m365agents.yml` (idempotent; inserted after `teamsApp/create`, which writes the
|
|
79
|
+
* `${{TEAMS_APP_ID}}` the action references).
|
|
80
|
+
*/
|
|
81
|
+
async function injectMcpAuthAction(ctx, args) {
|
|
82
|
+
const current = ctx.read(args.ymlPath);
|
|
83
|
+
if (current === undefined) {
|
|
84
|
+
return (0, neverthrow_1.err)(systemError("McpAuthYmlMissing", `Cannot inject the auth action: '${args.ymlPath}' was not produced by the render phase.`));
|
|
85
|
+
}
|
|
86
|
+
const { namespace, registrationId } = mcpAuthIdentifiers(args.mcpServerUrl);
|
|
87
|
+
const endpoints = await resolveEndpoints(args.authType, args.mcpServerUrl, ctx.warn);
|
|
88
|
+
const injectResult = (0, mcpAuthAction_1.injectMcpAuthActionYaml)(current.toString("utf8"), {
|
|
89
|
+
authType: args.authType,
|
|
90
|
+
authName: namespace,
|
|
91
|
+
registrationId,
|
|
92
|
+
mcpServerUrl: args.mcpServerUrl,
|
|
93
|
+
endpoints,
|
|
94
|
+
});
|
|
95
|
+
if (injectResult.isErr()) {
|
|
96
|
+
return (0, neverthrow_1.err)(injectResult.error);
|
|
97
|
+
}
|
|
98
|
+
if (injectResult.value.wellKnownUrlPlaceholderUsed) {
|
|
99
|
+
ctx.warn?.((0, localizeUtils_1.getLocalizedString)("core.MCPForDA.mcpAuthDcrPlaceholderWarning", args.mcpServerUrl));
|
|
100
|
+
}
|
|
101
|
+
ctx.write(args.ymlPath, Buffer.from(injectResult.value.yaml, "utf8"));
|
|
102
|
+
return (0, neverthrow_1.ok)(undefined);
|
|
103
|
+
}
|
|
104
|
+
/** True if the dotenv content already declares `name=…` (idempotency guard). */
|
|
105
|
+
function containsEnvVar(envContent, name) {
|
|
106
|
+
return envContent.split("\n").some((line) => line.startsWith(name + "="));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Write the deterministic `MCP_DA_AUTH_ID_<NS>=` registration placeholder into `env/.env.dev`
|
|
110
|
+
* (SCN-CREATE-MCP-06). The value is populated at provision by the injected action's
|
|
111
|
+
* `writeToEnvironmentFile.configurationId`.
|
|
112
|
+
*/
|
|
113
|
+
function persistMcpAuthRegistrationEnv(ctx, args) {
|
|
114
|
+
const { registrationId } = mcpAuthIdentifiers(args.mcpServerUrl);
|
|
115
|
+
const current = ctx.read(CREATE_ENV_FILE);
|
|
116
|
+
const base = current ? current.toString("utf8") : "";
|
|
117
|
+
if (containsEnvVar(base, registrationId)) {
|
|
118
|
+
return (0, neverthrow_1.ok)(undefined);
|
|
119
|
+
}
|
|
120
|
+
const separator = base.length > 0 && !base.endsWith("\n") ? "\n" : "";
|
|
121
|
+
ctx.write(CREATE_ENV_FILE, Buffer.from(base + separator + registrationId + "=\n", "utf8"));
|
|
122
|
+
return (0, neverthrow_1.ok)(undefined);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=mcpAuthScaffold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpAuthScaffold.js","sourceRoot":"","sources":["../../../src/v4/mcp/mcpAuthScaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export interface TemplateLocator {
|
|
|
13
13
|
/** Names which declarative package inside the channel zip to open. */
|
|
14
14
|
export interface DeclarativeLocator {
|
|
15
15
|
/** The package namespace: `create` or `modify`. */
|
|
16
|
-
kind:
|
|
16
|
+
kind: "create" | "modify";
|
|
17
17
|
/** The package id within the kind, e.g. `da/mcp-server`. */
|
|
18
18
|
templateId: string;
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataModel.d.ts","sourceRoot":"","sources":["../../../src/v4/model/dataModel.ts"],"names":[],"mappings":"AAGA,4DAA4D;AAI5D,wEAAwE;AACxE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;AAIxD,yEAAyE;AACzE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjD,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;AAI3D,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"dataModel.d.ts","sourceRoot":"","sources":["../../../src/v4/model/dataModel.ts"],"names":[],"mappings":"AAGA,4DAA4D;AAI5D,wEAAwE;AACxE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;AAIxD,yEAAyE;AACzE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjD,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;AAI3D,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -1,22 +1,30 @@
|
|
|
1
1
|
import { FxError } from "@microsoft/teamsfx-api";
|
|
2
2
|
import { Result } from "neverthrow";
|
|
3
|
+
import { ConditionalExpression } from "../expression/evaluateExpression";
|
|
3
4
|
import { RenderVars, TemplateFileEntry } from "../model/dataModel";
|
|
4
5
|
/** A resolved step parameter value. */
|
|
5
6
|
export type ParamValue = string | boolean | string[];
|
|
6
7
|
/** A step's author-supplied `with` block, or its resolved form. */
|
|
7
8
|
export type StepParams = Record<string, ParamValue>;
|
|
8
9
|
/** One `pipeline.steps` entry. `produces` is reserved for future cross-step data flow. */
|
|
9
|
-
export interface PipelineStep {
|
|
10
|
+
export interface PipelineStep extends ConditionalExpression {
|
|
10
11
|
step: string;
|
|
11
|
-
comment?: string;
|
|
12
|
-
when?: string;
|
|
13
12
|
with?: StepParams;
|
|
14
13
|
produces?: string[];
|
|
15
14
|
}
|
|
15
|
+
/** One render-phase file filter. Paths are target-relative output paths after `.tpl` suffix stripping. */
|
|
16
|
+
export interface RenderFilter extends ConditionalExpression {
|
|
17
|
+
exclude: string[];
|
|
18
|
+
}
|
|
19
|
+
/** Render-phase controls declared by `pipeline.json`. */
|
|
20
|
+
export interface PipelineRender {
|
|
21
|
+
filters?: RenderFilter[];
|
|
22
|
+
}
|
|
16
23
|
/** A parsed, schema-valid `pipeline.json`. */
|
|
17
24
|
export interface Pipeline {
|
|
18
25
|
pipeline: string;
|
|
19
26
|
comment?: string;
|
|
27
|
+
render?: PipelineRender;
|
|
20
28
|
steps: PipelineStep[];
|
|
21
29
|
}
|
|
22
30
|
/** The output directory plus its pre-run file snapshot. */
|
|
@@ -32,6 +40,7 @@ export interface SkippedFile {
|
|
|
32
40
|
/** The result of a scaffold run. */
|
|
33
41
|
export interface ScaffoldOutcome {
|
|
34
42
|
written: string[];
|
|
43
|
+
filtered: string[];
|
|
35
44
|
skipped: SkippedFile[];
|
|
36
45
|
stepsRun: string[];
|
|
37
46
|
stepsSkipped: string[];
|
|
@@ -42,7 +51,8 @@ export interface Orchestration {
|
|
|
42
51
|
}
|
|
43
52
|
/** Minimal manifest wrapper face needed by registered steps. */
|
|
44
53
|
export interface ManifestWrapper {
|
|
45
|
-
|
|
54
|
+
registerDeclarativeAgentAction(teamsManifestPath: string, pluginManifestPath: string): Result<void, FxError>;
|
|
55
|
+
setSensitivityLabel?(path: string, id: string): Result<void, FxError>;
|
|
46
56
|
}
|
|
47
57
|
/** The capabilities the executor hands each registered step's `apply`. */
|
|
48
58
|
export interface StepContext {
|
|
@@ -50,6 +60,8 @@ export interface StepContext {
|
|
|
50
60
|
manifestWrapper(kind: string): ManifestWrapper;
|
|
51
61
|
/** Read current bytes at a target path, or `undefined` when absent. */
|
|
52
62
|
read(path: string): Buffer | undefined;
|
|
63
|
+
/** Emit a localized, user-visible warning without failing the pipeline. */
|
|
64
|
+
warn?(message: string): void;
|
|
53
65
|
}
|
|
54
66
|
/** An engine-registered, whitelist-dispatched post-render step. */
|
|
55
67
|
export interface RegisteredStep {
|
|
@@ -63,6 +75,7 @@ export interface PipelineRuntimePort {
|
|
|
63
75
|
evalWhen(expr: string, renderVars: RenderVars): Result<boolean, FxError>;
|
|
64
76
|
render(mustache: string, renderVars: RenderVars): Result<string, FxError>;
|
|
65
77
|
manifestWrapper(kind: string): ManifestWrapper;
|
|
78
|
+
warn?(message: string): void;
|
|
66
79
|
write(path: string, data: Buffer): void;
|
|
67
80
|
/** Current bytes at a path, or `undefined` when absent. */
|
|
68
81
|
read(path: string): Buffer | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runScaffoldPipeline.d.ts","sourceRoot":"","sources":["../../../src/v4/pipeline/runScaffoldPipeline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"runScaffoldPipeline.d.ts","sourceRoot":"","sources":["../../../src/v4/pipeline/runScaffoldPipeline.ts"],"names":[],"mappings":"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"}
|