@microsoft/teamsfx-core 3.1.3 → 3.1.4-alpha.26ce7a8dda.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/build/common/templates-config.json +4 -4
  2. package/build/component/configManager/actionInjector.d.ts +13 -3
  3. package/build/component/configManager/actionInjector.d.ts.map +1 -1
  4. package/build/component/configManager/actionInjector.js +88 -5
  5. package/build/component/configManager/actionInjector.js.map +1 -1
  6. package/build/component/driver/teamsApp/utils/utils.d.ts.map +1 -1
  7. package/build/component/driver/teamsApp/utils/utils.js +1 -18
  8. package/build/component/driver/teamsApp/utils/utils.js.map +1 -1
  9. package/build/component/generator/openApiSpec/helper.d.ts +2 -2
  10. package/build/component/generator/openApiSpec/helper.d.ts.map +1 -1
  11. package/build/component/generator/openApiSpec/helper.js +65 -5
  12. package/build/component/generator/openApiSpec/helper.js.map +1 -1
  13. package/build/component/generator/openPlugin/authResolver.d.ts +2 -2
  14. package/build/component/generator/openPlugin/authResolver.d.ts.map +1 -1
  15. package/build/component/generator/openPlugin/authResolver.js +17 -7
  16. package/build/component/generator/openPlugin/authResolver.js.map +1 -1
  17. package/build/component/generator/openPlugin/errors.d.ts +4 -0
  18. package/build/component/generator/openPlugin/errors.d.ts.map +1 -0
  19. package/build/component/generator/openPlugin/errors.js +13 -0
  20. package/build/component/generator/openPlugin/errors.js.map +1 -0
  21. package/build/component/generator/openPlugin/exporter.d.ts +9 -6
  22. package/build/component/generator/openPlugin/exporter.d.ts.map +1 -1
  23. package/build/component/generator/openPlugin/exporter.js +502 -53
  24. package/build/component/generator/openPlugin/exporter.js.map +1 -1
  25. package/build/component/generator/openPlugin/fileSystem.d.ts +28 -0
  26. package/build/component/generator/openPlugin/fileSystem.d.ts.map +1 -0
  27. package/build/component/generator/openPlugin/fileSystem.js +181 -0
  28. package/build/component/generator/openPlugin/fileSystem.js.map +1 -0
  29. package/build/component/generator/openPlugin/iconStrategy.d.ts.map +1 -1
  30. package/build/component/generator/openPlugin/iconStrategy.js +30 -14
  31. package/build/component/generator/openPlugin/iconStrategy.js.map +1 -1
  32. package/build/component/generator/openPlugin/importer.d.ts.map +1 -1
  33. package/build/component/generator/openPlugin/importer.js +75 -12
  34. package/build/component/generator/openPlugin/importer.js.map +1 -1
  35. package/build/component/generator/openPlugin/mapper.d.ts +3 -2
  36. package/build/component/generator/openPlugin/mapper.d.ts.map +1 -1
  37. package/build/component/generator/openPlugin/mapper.js +188 -29
  38. package/build/component/generator/openPlugin/mapper.js.map +1 -1
  39. package/build/component/generator/openPlugin/parser.d.ts.map +1 -1
  40. package/build/component/generator/openPlugin/parser.js +264 -70
  41. package/build/component/generator/openPlugin/parser.js.map +1 -1
  42. package/build/component/generator/openPlugin/skillValidation.d.ts +2 -0
  43. package/build/component/generator/openPlugin/skillValidation.d.ts.map +1 -0
  44. package/build/component/generator/openPlugin/skillValidation.js +63 -0
  45. package/build/component/generator/openPlugin/skillValidation.js.map +1 -0
  46. package/build/component/generator/openPlugin/spec.d.ts +67 -0
  47. package/build/component/generator/openPlugin/spec.d.ts.map +1 -0
  48. package/build/component/generator/openPlugin/spec.js +157 -0
  49. package/build/component/generator/openPlugin/spec.js.map +1 -0
  50. package/build/component/generator/openPlugin/textUtils.d.ts +1 -1
  51. package/build/component/generator/openPlugin/textUtils.d.ts.map +1 -1
  52. package/build/component/generator/openPlugin/textUtils.js +8 -7
  53. package/build/component/generator/openPlugin/textUtils.js.map +1 -1
  54. package/build/component/generator/openPlugin/types.d.ts +76 -14
  55. package/build/component/generator/openPlugin/types.d.ts.map +1 -1
  56. package/build/component/generator/openPlugin/validation.d.ts +17 -0
  57. package/build/component/generator/openPlugin/validation.d.ts.map +1 -0
  58. package/build/component/generator/openPlugin/validation.js +563 -0
  59. package/build/component/generator/openPlugin/validation.js.map +1 -0
  60. package/build/component/utils/common.d.ts +1 -9
  61. package/build/component/utils/common.d.ts.map +1 -1
  62. package/build/component/utils/common.js +7 -37
  63. package/build/component/utils/common.js.map +1 -1
  64. package/build/component/utils/envFunctionUtils.d.ts +3 -8
  65. package/build/component/utils/envFunctionUtils.d.ts.map +1 -1
  66. package/build/component/utils/envFunctionUtils.js +46 -131
  67. package/build/component/utils/envFunctionUtils.js.map +1 -1
  68. package/build/component/utils/envUtil.d.ts.map +1 -1
  69. package/build/component/utils/envUtil.js +7 -6
  70. package/build/component/utils/envUtil.js.map +1 -1
  71. package/build/component/utils/mcpAuthScaffolder.d.ts +6 -0
  72. package/build/component/utils/mcpAuthScaffolder.d.ts.map +1 -1
  73. package/build/component/utils/mcpAuthScaffolder.js +17 -7
  74. package/build/component/utils/mcpAuthScaffolder.js.map +1 -1
  75. package/build/core/FxCore.d.ts +3 -2
  76. package/build/core/FxCore.d.ts.map +1 -1
  77. package/build/core/FxCore.declarativeAgent.d.ts +8 -2
  78. package/build/core/FxCore.declarativeAgent.d.ts.map +1 -1
  79. package/build/core/FxCore.declarativeAgent.js +109 -6
  80. package/build/core/FxCore.declarativeAgent.js.map +1 -1
  81. package/build/core/FxCore.js +42 -3
  82. package/build/core/FxCore.js.map +1 -1
  83. package/build/core/FxCore.openPlugin.d.ts +7 -6
  84. package/build/core/FxCore.openPlugin.d.ts.map +1 -1
  85. package/build/core/FxCore.openPlugin.js +7 -6
  86. package/build/core/FxCore.openPlugin.js.map +1 -1
  87. package/build/error/common.d.ts +9 -0
  88. package/build/error/common.d.ts.map +1 -1
  89. package/build/error/common.js +40 -1
  90. package/build/error/common.js.map +1 -1
  91. package/build/question/generator.d.ts.map +1 -1
  92. package/build/question/generator.js +9 -9
  93. package/build/question/generator.js.map +1 -1
  94. package/build/question/inputs/AddAuthActionInputs.d.ts +6 -0
  95. package/build/question/inputs/AddAuthActionInputs.d.ts.map +1 -1
  96. package/build/question/inputs/AddPluginInputs.d.ts +15 -1
  97. package/build/question/inputs/AddPluginInputs.d.ts.map +1 -1
  98. package/build/question/options/AddAuthActionOptions.d.ts.map +1 -1
  99. package/build/question/options/AddAuthActionOptions.js +19 -0
  100. package/build/question/options/AddAuthActionOptions.js.map +1 -1
  101. package/build/question/options/AddPluginOptions.d.ts.map +1 -1
  102. package/build/question/options/AddPluginOptions.js +45 -1
  103. package/build/question/options/AddPluginOptions.js.map +1 -1
  104. package/build/question/options/ExportOpenPluginOptions.js +2 -2
  105. package/build/question/options/ExportOpenPluginOptions.js.map +1 -1
  106. package/build/question/options/ImportOpenPluginOptions.js +4 -4
  107. package/build/question/options/ImportOpenPluginOptions.js.map +1 -1
  108. package/build/question/other.d.ts +2 -0
  109. package/build/question/other.d.ts.map +1 -1
  110. package/build/question/other.js +174 -8
  111. package/build/question/other.js.map +1 -1
  112. package/build/question/questionNames.d.ts +6 -0
  113. package/build/question/questionNames.d.ts.map +1 -1
  114. package/build/question/questionNames.js +6 -0
  115. package/build/question/questionNames.js.map +1 -1
  116. package/build/question/scaffold/vsc/rootNode.js +1 -1
  117. package/build/question/scaffold/vsc/rootNode.js.map +1 -1
  118. package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts +2 -0
  119. package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
  120. package/build/question/scaffold/vsc/teamsProjectTypeNode.js +31 -1
  121. package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
  122. package/build/ui/visitor.d.ts.map +1 -1
  123. package/build/ui/visitor.js +1 -0
  124. package/build/ui/visitor.js.map +1 -1
  125. package/build/v4/mcp/mcpAuthAction.d.ts +2 -1
  126. package/build/v4/mcp/mcpAuthAction.d.ts.map +1 -1
  127. package/build/v4/mcp/mcpAuthAction.js +32 -5
  128. package/build/v4/mcp/mcpAuthAction.js.map +1 -1
  129. package/build/v4/mcp/mcpAuthScaffold.d.ts +3 -0
  130. package/build/v4/mcp/mcpAuthScaffold.d.ts.map +1 -1
  131. package/build/v4/mcp/mcpAuthScaffold.js +61 -38
  132. package/build/v4/mcp/mcpAuthScaffold.js.map +1 -1
  133. package/build/v4/runtime/steps/mcpAuth.d.ts.map +1 -1
  134. package/build/v4/runtime/steps/mcpAuth.js +15 -4
  135. package/build/v4/runtime/steps/mcpAuth.js.map +1 -1
  136. package/package.json +37 -37
  137. package/resource/package.nls.json +30 -0
  138. package/templates/configs/local/typescript/.gitignore +1 -0
  139. package/templates/configs/playground/typescript/.gitignore +4 -0
  140. package/templates/fallback/common.zip +0 -0
  141. package/templates/fallback/csharp.zip +0 -0
  142. package/templates/fallback/js.zip +0 -0
  143. package/templates/fallback/python.zip +0 -0
  144. package/templates/fallback/ts.zip +0 -0
  145. package/templates/metadata.zip +0 -0
  146. package/templates/v4/floor.json +1 -1
  147. package/templates/v4/templates-metadata.zip +0 -0
  148. package/templates/v4/templates.zip +0 -0
@@ -0,0 +1,563 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT license.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.isRecord = isRecord;
6
+ exports.parseAgentPluginManifest = parseAgentPluginManifest;
7
+ exports.parseLegacyOpenPluginManifest = parseLegacyOpenPluginManifest;
8
+ exports.parseAtkExtension = parseAtkExtension;
9
+ exports.parseAgentPluginMcpJson = parseAgentPluginMcpJson;
10
+ exports.getRemoteMcpUrlError = getRemoteMcpUrlError;
11
+ const tslib_1 = require("tslib");
12
+ const path = tslib_1.__importStar(require("path"));
13
+ const errors_1 = require("./errors");
14
+ const spec_1 = require("./spec");
15
+ const PLUGIN_FIELDS = new Set([
16
+ "$schema",
17
+ "name",
18
+ "version",
19
+ "description",
20
+ "author",
21
+ "homepage",
22
+ "repository",
23
+ "license",
24
+ "keywords",
25
+ "extensions",
26
+ ]);
27
+ const RELOCATION_FIELDS = new Set([
28
+ "skills",
29
+ "commands",
30
+ "mcpServers",
31
+ "agents",
32
+ "hooks",
33
+ "rules",
34
+ "lspServers",
35
+ "outputStyles",
36
+ ]);
37
+ const STDIO_FIELDS = new Set(["type", "command", "args", "env", "cwd"]);
38
+ const REMOTE_FIELDS = new Set(["type", "url", "headers"]);
39
+ const HEADER_NAME_PATTERN = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
40
+ const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
41
+ const ACCENT_COLOR_PATTERN = /^#[0-9a-f]{6}$/i;
42
+ const CONNECTOR_DISPLAY_NAME_MAX_LENGTH = 128;
43
+ const CONNECTOR_DESCRIPTION_MAX_LENGTH = 4000;
44
+ const AUTHORIZATION_REFERENCE_ID_MAX_LENGTH = 128;
45
+ function isRecord(value) {
46
+ return value !== null && typeof value === "object" && !Array.isArray(value);
47
+ }
48
+ function optionalString(record, field) {
49
+ const value = record[field];
50
+ if (value === undefined) {
51
+ return undefined;
52
+ }
53
+ if (typeof value !== "string") {
54
+ throw new errors_1.OpenPluginInputError(`plugin.json '${field}' must be a string.`);
55
+ }
56
+ return value;
57
+ }
58
+ function parseAgentPluginManifest(value) {
59
+ if (!isRecord(value)) {
60
+ throw new errors_1.OpenPluginInputError("plugin.json must contain a JSON object.");
61
+ }
62
+ if (value.$schema !== spec_1.PLUGIN_SCHEMA_URL) {
63
+ throw new errors_1.OpenPluginInputError(`plugin.json '$schema' must be '${spec_1.PLUGIN_SCHEMA_URL}'.`);
64
+ }
65
+ if (typeof value.name !== "string" || value.name.length === 0) {
66
+ throw new errors_1.OpenPluginInputError("plugin.json is missing required 'name' field.");
67
+ }
68
+ if (!(0, spec_1.isValidPluginName)(value.name)) {
69
+ throw new errors_1.OpenPluginInputError("plugin.json 'name' does not satisfy the Agent Plugins 1.0.0 constraints.");
70
+ }
71
+ const manifest = { $schema: value.$schema, name: value.name };
72
+ const version = optionalString(value, "version");
73
+ const description = optionalString(value, "description");
74
+ const homepage = optionalString(value, "homepage");
75
+ const repository = optionalString(value, "repository");
76
+ const license = optionalString(value, "license");
77
+ if (version !== undefined)
78
+ manifest.version = version;
79
+ if (description !== undefined)
80
+ manifest.description = description;
81
+ if (homepage !== undefined)
82
+ manifest.homepage = homepage;
83
+ if (repository !== undefined)
84
+ manifest.repository = repository;
85
+ if (license !== undefined)
86
+ manifest.license = license;
87
+ if (value.author !== undefined) {
88
+ if (!isRecord(value.author)) {
89
+ throw new errors_1.OpenPluginInputError("plugin.json 'author' must be an object.");
90
+ }
91
+ const unknownAuthorField = Object.keys(value.author).find((field) => field !== "name" && field !== "email" && field !== "url");
92
+ if (unknownAuthorField) {
93
+ throw new errors_1.OpenPluginInputError(`plugin.json 'author.${unknownAuthorField}' is not permitted.`);
94
+ }
95
+ const name = optionalString(value.author, "name");
96
+ const email = optionalString(value.author, "email");
97
+ const url = optionalString(value.author, "url");
98
+ manifest.author = {};
99
+ if (name !== undefined)
100
+ manifest.author.name = name;
101
+ if (email !== undefined)
102
+ manifest.author.email = email;
103
+ if (url !== undefined)
104
+ manifest.author.url = url;
105
+ }
106
+ if (value.keywords !== undefined) {
107
+ if (!Array.isArray(value.keywords) ||
108
+ !value.keywords.every((item) => typeof item === "string")) {
109
+ throw new errors_1.OpenPluginInputError("plugin.json 'keywords' must be an array of strings.");
110
+ }
111
+ manifest.keywords = value.keywords;
112
+ }
113
+ const warnings = [];
114
+ if (value.extensions !== undefined) {
115
+ if (!isRecord(value.extensions)) {
116
+ warnings.push("plugin.json 'extensions' must be an object and was ignored.");
117
+ }
118
+ else {
119
+ manifest.extensions = value.extensions;
120
+ }
121
+ }
122
+ const relocationFields = [];
123
+ for (const field of Object.keys(value)) {
124
+ if (RELOCATION_FIELDS.has(field)) {
125
+ relocationFields.push(field);
126
+ }
127
+ else if (!PLUGIN_FIELDS.has(field)) {
128
+ warnings.push(`plugin.json field '${field}' is not defined by Agent Plugins 1.0.0 and was ignored.`);
129
+ }
130
+ }
131
+ if (relocationFields.length > 0) {
132
+ warnings.push(`plugin.json declares ${relocationFields.map((field) => `'${field}'`).join(", ")}, which ` +
133
+ `Agent Plugins 1.0.0 does not permit (the manifest schema is closed and component ` +
134
+ `locations are fixed). These fields were ignored.`);
135
+ }
136
+ return { manifest, warnings };
137
+ }
138
+ function parseLegacyOpenPluginManifest(value) {
139
+ if (!isRecord(value) || typeof value.name !== "string" || value.name.length === 0) {
140
+ throw new errors_1.OpenPluginInputError("plugin.json is missing required 'name' field.");
141
+ }
142
+ const manifest = { name: value.name };
143
+ if (typeof value.$schema === "string")
144
+ manifest.$schema = value.$schema;
145
+ if (typeof value.version === "string")
146
+ manifest.version = value.version;
147
+ if (typeof value.description === "string")
148
+ manifest.description = value.description;
149
+ if (typeof value.homepage === "string")
150
+ manifest.homepage = value.homepage;
151
+ if (typeof value.repository === "string")
152
+ manifest.repository = value.repository;
153
+ if (typeof value.license === "string")
154
+ manifest.license = value.license;
155
+ if (typeof value.author === "string" || isRecord(value.author))
156
+ manifest.author = value.author;
157
+ if (Array.isArray(value.keywords) && value.keywords.every((item) => typeof item === "string")) {
158
+ manifest.keywords = value.keywords;
159
+ }
160
+ if (isRecord(value.extensions))
161
+ manifest.extensions = value.extensions;
162
+ copyLegacyFields(value, manifest);
163
+ return manifest;
164
+ }
165
+ function parseAtkExtension(value, warnings) {
166
+ if (!isRecord(value)) {
167
+ warnings.push("Toolkit extension must be an object and was ignored.");
168
+ return undefined;
169
+ }
170
+ const extension = {};
171
+ const manifestVersion = readExtensionString(value, "manifestVersion", "manifestVersion", warnings, (item) => item === "devPreview");
172
+ const id = readExtensionString(value, "id", "id", warnings, (item) => UUID_PATTERN.test(item));
173
+ const packageName = readExtensionString(value, "packageName", "packageName", warnings, isNonEmptyString);
174
+ const accentColor = readExtensionString(value, "accentColor", "accentColor", warnings, (item) => ACCENT_COLOR_PATTERN.test(item));
175
+ if (manifestVersion !== undefined)
176
+ extension.manifestVersion = manifestVersion;
177
+ if (id !== undefined)
178
+ extension.id = id;
179
+ if (packageName !== undefined)
180
+ extension.packageName = packageName;
181
+ if (accentColor !== undefined)
182
+ extension.accentColor = accentColor;
183
+ const developer = parseExtensionDeveloper(value.developer, warnings);
184
+ const name = parseExtensionTextPair(value.name, "name", 30, 100, warnings);
185
+ const description = parseExtensionTextPair(value.description, "description", 80, 4000, warnings);
186
+ const agentConnectors = parseExtensionConnectors(value.agentConnectors, warnings);
187
+ if (developer)
188
+ extension.developer = developer;
189
+ if (name)
190
+ extension.name = name;
191
+ if (description)
192
+ extension.description = description;
193
+ if (agentConnectors)
194
+ extension.agentConnectors = agentConnectors;
195
+ const knownFields = new Set([
196
+ "manifestVersion",
197
+ "id",
198
+ "packageName",
199
+ "accentColor",
200
+ "developer",
201
+ "name",
202
+ "description",
203
+ "agentConnectors",
204
+ ]);
205
+ for (const field of Object.keys(value)) {
206
+ if (!knownFields.has(field)) {
207
+ warnings.push(`Toolkit extension field '${field}' is not supported and was ignored.`);
208
+ }
209
+ }
210
+ return Object.keys(extension).length > 0 ? extension : undefined;
211
+ }
212
+ function parseExtensionDeveloper(value, warnings) {
213
+ if (value === undefined)
214
+ return undefined;
215
+ if (!isRecord(value)) {
216
+ warnings.push("Toolkit extension field 'developer' is invalid and was ignored.");
217
+ return undefined;
218
+ }
219
+ const developer = {};
220
+ const name = readExtensionString(value, "name", "developer.name", warnings, (item) => hasLength(item, 32));
221
+ const websiteUrl = readExtensionString(value, "websiteUrl", "developer.websiteUrl", warnings, isHttpUrl);
222
+ const privacyUrl = readExtensionString(value, "privacyUrl", "developer.privacyUrl", warnings, isHttpUrl);
223
+ const termsOfUseUrl = readExtensionString(value, "termsOfUseUrl", "developer.termsOfUseUrl", warnings, isHttpUrl);
224
+ if (name !== undefined)
225
+ developer.name = name;
226
+ if (websiteUrl !== undefined)
227
+ developer.websiteUrl = websiteUrl;
228
+ if (privacyUrl !== undefined)
229
+ developer.privacyUrl = privacyUrl;
230
+ if (termsOfUseUrl !== undefined)
231
+ developer.termsOfUseUrl = termsOfUseUrl;
232
+ return Object.keys(developer).length > 0 ? developer : undefined;
233
+ }
234
+ function parseExtensionTextPair(value, field, shortMaxLength, fullMaxLength, warnings) {
235
+ if (value === undefined)
236
+ return undefined;
237
+ if (!isRecord(value)) {
238
+ warnings.push(`Toolkit extension field '${field}' is invalid and was ignored.`);
239
+ return undefined;
240
+ }
241
+ const pair = {};
242
+ const short = readExtensionString(value, "short", `${field}.short`, warnings, (item) => hasLength(item, shortMaxLength));
243
+ const full = readExtensionString(value, "full", `${field}.full`, warnings, (item) => hasLength(item, fullMaxLength));
244
+ if (short !== undefined)
245
+ pair.short = short;
246
+ if (full !== undefined)
247
+ pair.full = full;
248
+ return Object.keys(pair).length > 0 ? pair : undefined;
249
+ }
250
+ function parseExtensionConnectors(value, warnings) {
251
+ if (value === undefined)
252
+ return undefined;
253
+ if (!isRecord(value)) {
254
+ warnings.push("Toolkit extension field 'agentConnectors' is invalid and was ignored.");
255
+ return undefined;
256
+ }
257
+ const connectors = {};
258
+ for (const [serverName, rawConnector] of Object.entries(value)) {
259
+ if (!isRecord(rawConnector)) {
260
+ warnings.push(`Toolkit extension connector '${serverName}' is invalid and was ignored.`);
261
+ continue;
262
+ }
263
+ const connector = {};
264
+ const displayName = readExtensionString(rawConnector, "displayName", `agentConnectors.${serverName}.displayName`, warnings, (item) => hasLength(item, CONNECTOR_DISPLAY_NAME_MAX_LENGTH));
265
+ const description = readExtensionString(rawConnector, "description", `agentConnectors.${serverName}.description`, warnings, (item) => hasLength(item, CONNECTOR_DESCRIPTION_MAX_LENGTH));
266
+ if (displayName !== undefined)
267
+ connector.displayName = displayName;
268
+ if (description !== undefined)
269
+ connector.description = description;
270
+ if (rawConnector.reusable !== undefined) {
271
+ if (typeof rawConnector.reusable === "boolean") {
272
+ connector.reusable = rawConnector.reusable;
273
+ }
274
+ else {
275
+ warnings.push(`Toolkit extension field 'agentConnectors.${serverName}.reusable' is invalid and was ignored.`);
276
+ }
277
+ }
278
+ if (rawConnector.mcpToolDescription !== undefined) {
279
+ const fieldPath = `agentConnectors.${serverName}.mcpToolDescription`;
280
+ if (!isRecord(rawConnector.mcpToolDescription)) {
281
+ warnings.push(`Toolkit extension field '${fieldPath}' is invalid and was ignored.`);
282
+ }
283
+ else {
284
+ const mcpToolDescription = {};
285
+ const file = readExtensionString(rawConnector.mcpToolDescription, "file", `${fieldPath}.file`, warnings, (item) => hasLength(item, 2048));
286
+ const source = readExtensionString(rawConnector.mcpToolDescription, "source", `${fieldPath}.source`, warnings, (item) => hasLength(item, 2048));
287
+ if (file !== undefined)
288
+ mcpToolDescription.file = file;
289
+ if (source !== undefined)
290
+ mcpToolDescription.source = source;
291
+ connector.mcpToolDescription = mcpToolDescription;
292
+ }
293
+ }
294
+ if (rawConnector.authorization !== undefined) {
295
+ const fieldPath = `agentConnectors.${serverName}.authorization`;
296
+ if (!isRecord(rawConnector.authorization)) {
297
+ warnings.push(`Toolkit extension field '${fieldPath}' is invalid and was ignored.`);
298
+ }
299
+ else if (!isAuthorizationType(rawConnector.authorization.type)) {
300
+ warnings.push(`Toolkit extension field '${fieldPath}.type' is invalid and was ignored.`);
301
+ }
302
+ else {
303
+ connector.authorization = { type: rawConnector.authorization.type };
304
+ const referenceId = readExtensionString(rawConnector.authorization, "referenceId", `${fieldPath}.referenceId`, warnings, (item) => hasLength(item, AUTHORIZATION_REFERENCE_ID_MAX_LENGTH));
305
+ if (referenceId !== undefined)
306
+ connector.authorization.referenceId = referenceId;
307
+ }
308
+ }
309
+ if (Object.keys(connector).length > 0)
310
+ (0, spec_1.setRecordValue)(connectors, serverName, connector);
311
+ }
312
+ return Object.keys(connectors).length > 0 ? connectors : undefined;
313
+ }
314
+ function readExtensionString(record, field, fieldPath, warnings, validate) {
315
+ const value = record[field];
316
+ if (value === undefined)
317
+ return undefined;
318
+ if (typeof value === "string" && validate(value))
319
+ return value;
320
+ warnings.push(`Toolkit extension field '${fieldPath}' is invalid and was ignored.`);
321
+ return undefined;
322
+ }
323
+ function isAuthorizationType(value) {
324
+ return (value === "None" ||
325
+ value === "OAuthPluginVault" ||
326
+ value === "ApiKeyPluginVault" ||
327
+ value === "DynamicClientRegistration" ||
328
+ value === "AzureKeyVault");
329
+ }
330
+ function isNonEmptyString(value) {
331
+ return value.length > 0;
332
+ }
333
+ function hasLength(value, maxLength) {
334
+ const length = [...value].length;
335
+ return length > 0 && length <= maxLength;
336
+ }
337
+ function isHttpUrl(value) {
338
+ try {
339
+ const parsed = new URL(value);
340
+ return parsed.protocol === "http:" || parsed.protocol === "https:";
341
+ }
342
+ catch {
343
+ return false;
344
+ }
345
+ }
346
+ function copyLegacyFields(value, manifest) {
347
+ if (typeof value.logo === "string")
348
+ manifest.logo = value.logo;
349
+ if (isLegacyPathValue(value.skills))
350
+ manifest.skills = value.skills;
351
+ if (isLegacyPathValue(value.commands))
352
+ manifest.commands = value.commands;
353
+ if (isLegacyPathValue(value.agents))
354
+ manifest.agents = value.agents;
355
+ if (isLegacyPathValue(value.hooks))
356
+ manifest.hooks = value.hooks;
357
+ if (isLegacyPathValue(value.mcpServers))
358
+ manifest.mcpServers = value.mcpServers;
359
+ if (isLegacyPathValue(value.lspServers))
360
+ manifest.lspServers = value.lspServers;
361
+ if (typeof value.rules === "string" || Array.isArray(value.rules) || isRecord(value.rules)) {
362
+ manifest.rules = value.rules;
363
+ }
364
+ if (typeof value.outputStyles === "string" || Array.isArray(value.outputStyles)) {
365
+ manifest.outputStyles = value.outputStyles;
366
+ }
367
+ manifest.legacyAtkExtension = value["x-microsoft-365-agents-toolkit"];
368
+ }
369
+ function isLegacyPathValue(value) {
370
+ return typeof value === "string" || Array.isArray(value) || isRecord(value);
371
+ }
372
+ function parseAgentPluginMcpJson(value) {
373
+ const warnings = [];
374
+ if (!isRecord(value)) {
375
+ return invalidMcpConfig("mcp.json must contain a JSON object.");
376
+ }
377
+ const unknownTopLevel = Object.keys(value).find((field) => field !== "$schema" && field !== "mcpServers");
378
+ if (unknownTopLevel) {
379
+ return invalidMcpConfig(`mcp.json contains unsupported top-level field '${unknownTopLevel}'.`);
380
+ }
381
+ if (value.$schema !== spec_1.MCP_SCHEMA_URL) {
382
+ return invalidMcpConfig(`mcp.json '$schema' must be '${spec_1.MCP_SCHEMA_URL}'.`);
383
+ }
384
+ if (!isRecord(value.mcpServers)) {
385
+ return invalidMcpConfig("mcp.json 'mcpServers' must be an object.");
386
+ }
387
+ const mcpServers = {};
388
+ const invalidRemoteMcpServers = [];
389
+ for (const [name, server] of Object.entries(value.mcpServers)) {
390
+ const parsed = parseAgentPluginMcpServer(server);
391
+ if (typeof parsed === "string") {
392
+ warnings.push(`MCP server '${name}' is invalid and was skipped: ${parsed}`);
393
+ if (isRecord(server) &&
394
+ (server.type === "streamable-http" || server.type === "sse") &&
395
+ getRemoteMcpUrlError(server.url)) {
396
+ invalidRemoteMcpServers.push(name);
397
+ }
398
+ }
399
+ else {
400
+ (0, spec_1.setRecordValue)(mcpServers, name, parsed);
401
+ }
402
+ }
403
+ return { mcpServers, invalidRemoteMcpServers, warnings };
404
+ }
405
+ function invalidMcpConfig(message) {
406
+ return {
407
+ mcpServers: {},
408
+ invalidRemoteMcpServers: [],
409
+ warnings: [`mcp.json is invalid: ${message} MCP was disabled for this plugin.`],
410
+ };
411
+ }
412
+ function parseAgentPluginMcpServer(value) {
413
+ if (!isRecord(value) || typeof value.type !== "string") {
414
+ return "an explicit transport type is required.";
415
+ }
416
+ if (value.type === "stdio") {
417
+ return parseStdioServer(value);
418
+ }
419
+ if (value.type === "streamable-http" || value.type === "sse") {
420
+ return parseRemoteServer(value);
421
+ }
422
+ return `transport '${value.type}' is not supported by Agent Plugins 1.0.0.`;
423
+ }
424
+ function parseStdioServer(value) {
425
+ const unknownField = Object.keys(value).find((field) => !STDIO_FIELDS.has(field));
426
+ if (unknownField)
427
+ return `field '${unknownField}' is not permitted for stdio.`;
428
+ if (typeof value.command !== "string" || value.command.length === 0) {
429
+ return "stdio requires a non-empty command.";
430
+ }
431
+ if (!isValidCommand(value.command))
432
+ return "stdio command is not a bare or plugin-relative token.";
433
+ if (value.args !== undefined && (!Array.isArray(value.args) || !value.args.every(isString))) {
434
+ return "stdio args must be an array of strings.";
435
+ }
436
+ if (value.env !== undefined && !isValidStringRecord(value.env, true)) {
437
+ return "stdio env must contain string values and cannot override PLUGIN_ROOT or PLUGIN_DATA.";
438
+ }
439
+ if (value.cwd !== undefined && (typeof value.cwd !== "string" || !isValidCwd(value.cwd))) {
440
+ return "stdio cwd is not a contained plugin or plugin-data path.";
441
+ }
442
+ const entry = { type: "stdio", command: value.command };
443
+ if (Array.isArray(value.args))
444
+ entry.args = value.args.filter(isString);
445
+ if (isRecord(value.env)) {
446
+ const env = {};
447
+ for (const [name, envValue] of Object.entries(value.env)) {
448
+ if (typeof envValue === "string")
449
+ (0, spec_1.setRecordValue)(env, name, envValue);
450
+ }
451
+ entry.env = env;
452
+ }
453
+ if (typeof value.cwd === "string")
454
+ entry.cwd = value.cwd;
455
+ return entry;
456
+ }
457
+ function parseRemoteServer(value) {
458
+ const unknownField = Object.keys(value).find((field) => !REMOTE_FIELDS.has(field));
459
+ if (unknownField)
460
+ return `field '${unknownField}' is not permitted for remote MCP.`;
461
+ if (value.type !== "streamable-http" && value.type !== "sse") {
462
+ return "remote MCP requires a supported transport type.";
463
+ }
464
+ const urlError = getRemoteMcpUrlError(value.url);
465
+ if (urlError)
466
+ return urlError;
467
+ if (typeof value.url !== "string")
468
+ return "remote MCP requires a non-empty URL.";
469
+ if (value.headers !== undefined && !isValidHeaders(value.headers)) {
470
+ return "headers must contain valid HTTP header names and string values.";
471
+ }
472
+ const entry = { type: value.type, url: value.url };
473
+ if (isRecord(value.headers)) {
474
+ const headers = {};
475
+ for (const [name, headerValue] of Object.entries(value.headers)) {
476
+ if (typeof headerValue === "string")
477
+ (0, spec_1.setRecordValue)(headers, name, headerValue);
478
+ }
479
+ entry.headers = headers;
480
+ }
481
+ return entry;
482
+ }
483
+ function getRemoteMcpUrlError(value) {
484
+ if (typeof value !== "string" || value.length === 0) {
485
+ return "remote MCP requires a non-empty URL.";
486
+ }
487
+ let parsed;
488
+ try {
489
+ parsed = new URL(value);
490
+ }
491
+ catch {
492
+ return "remote MCP URL must be absolute.";
493
+ }
494
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
495
+ return "remote MCP URL must use HTTP or HTTPS.";
496
+ }
497
+ if (parsed.username || parsed.password || parsed.hash) {
498
+ return "remote MCP URL cannot contain user information or a fragment.";
499
+ }
500
+ if (parsed.protocol === "http:" && !isLoopbackHostname(parsed.hostname)) {
501
+ return "non-loopback remote MCP URLs must use HTTPS.";
502
+ }
503
+ return undefined;
504
+ }
505
+ function isLoopbackHostname(hostname) {
506
+ const normalized = hostname.toLowerCase();
507
+ return (normalized === "localhost" ||
508
+ normalized === "[::1]" ||
509
+ /^127(?:\.\d{1,3}){3}$/.test(normalized) ||
510
+ /^\[::ffff:7f[0-9a-f]{2}:[0-9a-f]{1,4}\]$/.test(normalized));
511
+ }
512
+ function isValidHeaders(value) {
513
+ if (!isRecord(value))
514
+ return false;
515
+ const names = new Set();
516
+ for (const [name, headerValue] of Object.entries(value)) {
517
+ const normalized = name.toLowerCase();
518
+ if (!HEADER_NAME_PATTERN.test(name) ||
519
+ names.has(normalized) ||
520
+ typeof headerValue !== "string" ||
521
+ /[\0\r\n]/.test(headerValue)) {
522
+ return false;
523
+ }
524
+ names.add(normalized);
525
+ }
526
+ return true;
527
+ }
528
+ function isValidStringRecord(value, rejectReservedNames) {
529
+ if (!isRecord(value))
530
+ return false;
531
+ return Object.entries(value).every(([name, item]) => typeof item === "string" &&
532
+ (!rejectReservedNames || (name !== "PLUGIN_ROOT" && name !== "PLUGIN_DATA")));
533
+ }
534
+ function isValidCommand(command) {
535
+ if (command.startsWith("./")) {
536
+ return (0, spec_1.resolveWithinRoot)(path.posix.resolve("/plugin"), command) !== undefined;
537
+ }
538
+ return !command.includes("/") && !command.includes("\\") && !path.isAbsolute(command);
539
+ }
540
+ function isValidCwd(cwd) {
541
+ if (cwd === "." || cwd === "./")
542
+ return true;
543
+ if (cwd.startsWith("./"))
544
+ return isContainedPosixPath(cwd.slice(2));
545
+ for (const token of ["${PLUGIN_ROOT}", "${PLUGIN_DATA}"]) {
546
+ if (cwd === token || cwd === `${token}/`)
547
+ return true;
548
+ const prefix = `${token}/`;
549
+ if (cwd.startsWith(prefix))
550
+ return isContainedPosixPath(cwd.slice(prefix.length));
551
+ }
552
+ return false;
553
+ }
554
+ function isContainedPosixPath(relativePath) {
555
+ if (relativePath.includes("\\"))
556
+ return false;
557
+ const normalized = path.posix.normalize(relativePath);
558
+ return normalized !== ".." && !normalized.startsWith("../") && !path.posix.isAbsolute(normalized);
559
+ }
560
+ function isString(value) {
561
+ return typeof value === "string";
562
+ }
563
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/component/generator/openPlugin/validation.ts"],"names":[],"mappings":"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"}
@@ -16,15 +16,7 @@ export declare function asFactory<T>(keyValidators: KeyValidators<T>): (data: un
16
16
  export declare function wrapRun(exec: () => Promise<Map<string, string>>, errorSource: string, errorHandler?: () => Promise<void>, logProvider?: LogProvider): Promise<Result<Map<string, string>, FxError>>;
17
17
  export declare function errorHandle(error: unknown, errorSource: string, logProvider?: LogProvider, errorHandler?: () => Promise<void>): Promise<Result<Map<string, string>, FxError>>;
18
18
  export declare function wrapSummary(exec: () => Promise<Result<Map<string, string>, FxError>>, summary: string[]): Promise<ExecutionResult>;
19
- export declare function expandEnvironmentVariable(content: string, envs?: {
20
- [key in string]: string;
21
- }): string;
22
- /**
23
- * Expand environment variables in content. The format of referencing environment variable is: ${{ENV_NAME}}
24
- * @return An array of environment variables
25
- */
26
- export declare function getEnvironmentVariables(content: string): string[];
19
+ export { expandEnvironmentVariable, getEnvironmentVariables } from "@microsoft/teamsfx-api";
27
20
  export declare function getAbsolutePath(relativeOrAbsolutePath: string, projectPath: string): string;
28
21
  export declare function outputScaffoldingWarningMessage(warnings: Warning[]): string;
29
- export {};
30
22
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/component/utils/common.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,OAAO,EACP,WAAW,EAEX,MAAM,EAGN,OAAO,EACR,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAOjE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,CAKhF;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,CAAC,IAChE,GAAG,OAAO,EAAE,KAAK,MAAM,EAAE,WAAW,MAAM,KAAG,CAAC,GAAG,SAAS,CAM5E;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAO7E;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,KAAK,aAAa,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;CACvE,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,IACzC,MAAM,OAAO,EAAE,WAAW,MAAM,KAAG,CAAC,CAgBtD;AAED,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACxC,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAClC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAM/C;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,WAAW,EACzB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAc/C;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,EACzD,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,eAAe,CAAC,CAS1B;AAGD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;KAAG,GAAG,IAAI,MAAM,GAAG,MAAM;CAAE,GACjC,MAAM,CAmBR;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAQjE;AAED,wBAAgB,eAAe,CAAC,sBAAsB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAM3F;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAQ3E"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/component/utils/common.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,OAAO,EACP,WAAW,EAEX,MAAM,EAGN,OAAO,EACR,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAKjE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,CAKhF;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,CAAC,IAChE,GAAG,OAAO,EAAE,KAAK,MAAM,EAAE,WAAW,MAAM,KAAG,CAAC,GAAG,SAAS,CAM5E;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAO7E;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,KAAK,aAAa,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;CACvE,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,IACzC,MAAM,OAAO,EAAE,WAAW,MAAM,KAAG,CAAC,CAgBtD;AAED,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACxC,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAClC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAM/C;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,WAAW,EACzB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAc/C;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,EACzD,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,eAAe,CAAC,CAS1B;AAKD,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAE5F,wBAAgB,eAAe,CAAC,sBAAsB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAM3F;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAQ3E"}