diff --git a/packages/api/src/constants.ts b/packages/api/src/constants.ts index 3ebff74d28e..f487e5a81b6 100644 --- a/packages/api/src/constants.ts +++ b/packages/api/src/constants.ts @@ -84,6 +84,7 @@ export enum Stage { kiotaRegenerate = "kiotaRegenerate", addAuthAction = "addAuthAction", addKnowledge = "addKnowledge", + addSkill = "addSkill", setSensitivityLabel = "setSensitivityLabel", installApp = "installApp", updateActionWithMCP = "updateActionWithMCP", diff --git a/packages/cli/src/commands/models/add.ts b/packages/cli/src/commands/models/add.ts index b2c6da3659b..bca811308a1 100644 --- a/packages/cli/src/commands/models/add.ts +++ b/packages/cli/src/commands/models/add.ts @@ -1,14 +1,24 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. import { CLICommand } from "@microsoft/teamsfx-api"; +import { featureFlagManager, FeatureFlags } from "@microsoft/teamsfx-core"; import { commands } from "../../resource"; import { addSPFxWebpartCommand } from "./addSPFxWebpart"; import { addPluginCommand } from "./addPlugin"; import { addAuthConfigCommand } from "./addAuthConfig"; import { addCapabilityCommand } from "./addCapability"; +import { addSkillCommand } from "./addSkill"; const adjustCommands = (): CLICommand[] => { - return [addSPFxWebpartCommand, addPluginCommand, addAuthConfigCommand, addCapabilityCommand]; + return [ + addSPFxWebpartCommand, + addPluginCommand, + addAuthConfigCommand, + addCapabilityCommand, + ...(featureFlagManager.getBooleanValue(FeatureFlags.AgentSkillsEnabled) + ? [addSkillCommand] + : []), + ]; }; export function addCommand(): CLICommand { return { diff --git a/packages/cli/src/commands/models/addSkill.ts b/packages/cli/src/commands/models/addSkill.ts new file mode 100644 index 00000000000..ddea6ffadcd --- /dev/null +++ b/packages/cli/src/commands/models/addSkill.ts @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +import { CLICommand } from "@microsoft/teamsfx-api"; +import { AddSkillInputs, AddSkillOptions } from "@microsoft/teamsfx-core"; +import { getFxCore } from "../../activate"; +import { commands } from "../../resource"; +import { TelemetryEvent } from "../../telemetry/cliTelemetryEvents"; +import { ProjectFolderOption } from "../common"; + +export const addSkillCommand: CLICommand = { + name: "skill", + description: commands["add.skill"].description, + options: [...AddSkillOptions, ProjectFolderOption], + telemetry: { + event: TelemetryEvent.AddSkill, + }, + handler: async (ctx) => { + const inputs = ctx.optionValues as AddSkillInputs; + const core = getFxCore(); + const res = await core.addSkill(inputs); + return res; + }, +}; diff --git a/packages/cli/src/resource/commands.json b/packages/cli/src/resource/commands.json index 84afe64df62..3b9c2824a9e 100644 --- a/packages/cli/src/resource/commands.json +++ b/packages/cli/src/resource/commands.json @@ -62,6 +62,9 @@ "add.capability": { "description": "A capability to extend Copilot using your APIs." }, + "add.skill": { + "description": "An agent skill to bundle with your Declarative Agent." + }, "regenerate": { "description": "Regenerate existing resources for your app." }, diff --git a/packages/cli/src/telemetry/cliTelemetryEvents.ts b/packages/cli/src/telemetry/cliTelemetryEvents.ts index 1d7578bbc7f..cea13e8a472 100644 --- a/packages/cli/src/telemetry/cliTelemetryEvents.ts +++ b/packages/cli/src/telemetry/cliTelemetryEvents.ts @@ -128,6 +128,7 @@ export enum TelemetryEvent { AddCopilotPlugin = "add-copilot-plugin", RegneratePlugin = "regenerate-copilot-plugin", AddAuthAction = "add-auth-action", + AddSkill = "add-skill", SetSensitivityLabel = "set-sensitivity-label", } diff --git a/packages/fx-core/resource/package.nls.json b/packages/fx-core/resource/package.nls.json index a2f4d6fd2f9..1a4acdd7988 100644 --- a/packages/fx-core/resource/package.nls.json +++ b/packages/fx-core/resource/package.nls.json @@ -6,6 +6,8 @@ "core.regenerateApi.continue": "Regenerate", "core.addKnowledge.confirm": "Microsoft 365 Agents Toolkit will modify files in your \"%s\" folder based on the capability source you provided. To avoid losing unexpected changes, back up your files or use git for change tracking before proceeding.", "core.addKnowledge.continue": "Add", + "core.addSkill.confirm": "Microsoft 365 Agents Toolkit will modify files in your \"%s\" folder to add the agent skill. To avoid losing unexpected changes, back up your files or use git for change tracking before proceeding.", + "core.addSkill.continue": "Add", "core.setSensitivityLabel.confirm": "Teams Toolkit will modify the file \"%s\" based on the sensitivity label you provided. To avoid losing unexpected changes, back up your files or use git for change tracking before proceeding.", "core.setSensitivityLabel.continue": "Set", "core.provision.provision": "Provision", @@ -482,6 +484,9 @@ "core.addKnowledge.success.vsc": "Capability source added to the project successfully.", "core.addKnowledge.success": "Capability source added to the project successfully. View agent manifest in \"%s\".", "core.addKnowledge.success.viewAgentManifest": "View agent manifest", + "core.addSkill.success.vsc": "Agent skill added to the project successfully.", + "core.addSkill.success": "Agent skill added to the project successfully. View agent manifest in \"%s\".", + "core.addSkill.success.viewAgentManifest": "View agent manifest", "core.scaffold.warning.summary": "We have detected following issues:\n%s", "core.addPlugin.warning.manifestVariables": "Environment variables \"%s\" found in manifest of the added plugin. Ensure the values are set in .env file or system environment variables.", "core.addPlugin.warning.apiSpecVariables": "Environment variables \"%s\" found in API specification of the added plugin. Ensure the values are set in .env file or system environment variables.", @@ -891,6 +896,8 @@ "error.teamsApp.AppIdNotExistError": "App with ID %s does not exist in Developer Portal.", "error.teamsApp.InvalidAppIdError": "App ID %s is invalid, must be a GUID.", "error.teamsApp.createAppPackage.invalidFile": "%s is invalid, it should be in the same directory as manifest.json or a subdirectory of it.", + "error.teamsApp.createAppPackage.packageSizeExceeded": "The generated app package (%s MB) exceeds the maximum allowed size of %s MB. Reduce the package contents before building.", + "error.m365.packageService.packageSizeExceeded": "The app package (%s MB) exceeds the maximum supported size (%s MB). Reduce the package contents before uploading.", "driver.botFramework.description": "creates or updates the bot registration on dev.botframework.com", "driver.botFramework.summary.create": "The bot registration has been created successfully (%s).", "driver.botFramework.summary.update": "The bot registration has been updated successfully (%s).", @@ -1067,6 +1074,23 @@ "driver.typespec.error.compileError": "TypeSpec compilation failed. Please fix the errors reported by the compiler and try again. Compiler output:\n%s", "driver.typeSpec.progressBar": "Compiling and generating files...", "core.addKnowledge.doubleConfirm": "Performing this action will overwrite your existing manifest file and can't be undone. To keep your existing data, please back it up before proceeding. Would you like to add new content?", + "core.addSkillQuestion.name.title": "Skill Name", + "core.addSkillQuestion.name.placeholder": "Enter a name for your skill (letters, numbers, and hyphens only)", + "core.addSkillQuestion.name.validation": "Skill name must start with a letter and contain only letters, numbers, and hyphens.", + "core.addSkillQuestion.name.duplicate": "A skill named \"%s\" already exists. Please choose a different name.", + "core.addSkillQuestion.description.title": "Skill Description", + "core.addSkillQuestion.description.placeholder": "Describe what this skill does", + "core.addSkillQuestion.sourceType.title": "How would you like to add a skill?", + "core.addSkillQuestion.sourceType.new": "Create a new skill", + "core.addSkillQuestion.sourceType.newDetail": "Start from scratch with a blank skill template", + "core.addSkillQuestion.sourceType.existing": "Start from an existing skill", + "core.addSkillQuestion.sourceType.existingDetail": "Import a skill from a .zip file", + "core.addSkillQuestion.zipFile.title": "Select a skill zip file", + "core.addSkillQuestion.zipFile.placeholder": "Select a .zip file containing a skill", + "core.addSkill.zipInvalidEntries": "The zip file contains invalid entries (path traversal or absolute paths). Please provide a valid skill zip file.", + "core.addSkill.zipNoSkillMd": "The zip file does not contain a SKILL.md file. Each skill must include a SKILL.md file.", + "core.addSkill.zipInvalidLayout": "The zip file has an invalid layout. It must contain either a single skill folder or skill files at the root level.", + "core.addSkill.zipSkillFolderExists": "A skill folder named \"%s\" already exists in the app package. Please remove it first or choose a different skill.", "error.dep.InstallNodeJSError": "Unable to install Node.js for reason: %s. Please install it manually from https://nodejs.org and restart Visual Studio Code.", "action.devTool.nodeInstaller.Progress.title": "Install NodeJS", "action.devTool.nodeInstaller.Progress1": "Checking NodeJS in system environment", diff --git a/packages/fx-core/src/common/featureFlags.ts b/packages/fx-core/src/common/featureFlags.ts index 10e05a2c50f..38b9d2db772 100644 --- a/packages/fx-core/src/common/featureFlags.ts +++ b/packages/fx-core/src/common/featureFlags.ts @@ -28,6 +28,7 @@ export class FeatureFlagName { static readonly CFShortcutMetaOS = "TEAMSFX_CF_SHORTCUT_METAOS"; static readonly MCPForDA = "TEAMSFX_MCP_FOR_DA"; static readonly BrokerAuth = "TEAMSFX_BROKER_AUTH"; + static readonly AgentSkillsEnabled = "TEAMSFX_AGENT_SKILLS"; // Add config files to existing project to make it toolkit compatible static readonly GenerateConfigFiles = "TEAMSFX_GENERATE_CONFIG_FILES"; @@ -102,6 +103,10 @@ export class FeatureFlags { name: FeatureFlagName.BrokerAuth, defaultValue: "false", }; + static readonly AgentSkillsEnabled = { + name: FeatureFlagName.AgentSkillsEnabled, + defaultValue: "false", + }; static readonly GenerateConfigFiles = { name: FeatureFlagName.GenerateConfigFiles, defaultValue: "false", diff --git a/packages/fx-core/src/component/driver/teamsApp/createAppPackage.ts b/packages/fx-core/src/component/driver/teamsApp/createAppPackage.ts index d71f0aae9ed..488d7914e1e 100644 --- a/packages/fx-core/src/component/driver/teamsApp/createAppPackage.ts +++ b/packages/fx-core/src/component/driver/teamsApp/createAppPackage.ts @@ -27,7 +27,7 @@ import { featureFlagManager, FeatureFlags } from "../../../common/featureFlags"; import { ErrorContextMW } from "../../../common/globalVars"; import { getLocalizedString } from "../../../common/localizeUtils"; import { FileNotFoundError, InvalidActionInputError, JSONSyntaxError } from "../../../error/common"; -import { InvalidFileOutsideOfTheDirectotryError } from "../../../error/teamsApp"; +import { InvalidFileOutsideOfTheDirectotryError, AppPackageSizeExceededError } from "../../../error/teamsApp"; import { getAbsolutePath } from "../../utils/common"; import { expandVariableWithFunction, ManifestType } from "../../utils/envFunctionUtils"; import { DriverContext } from "../interface/commonArgs"; @@ -381,6 +381,39 @@ export class CreateAppPackageDriver implements StepDriver { } } } + // Add agent skill directories (support both agent_skills and x-agent_skills) + const agentSkills = + getCopilotGptRes.value.agent_skills || (getCopilotGptRes.value as any)["x-agent_skills"]; + if (agentSkills && Array.isArray(agentSkills)) { + for (const skill of agentSkills) { + if (skill.folder) { + // Resolve skill folder relative to appDirectory (not .generated/) + // since skill folders don't support env var substitution + const skillFolderAbsolutePath = path.resolve(appDirectory, skill.folder); + const checkExistenceRes = await this.validateReferencedFile( + skillFolderAbsolutePath, + appDirectory + ); + if (checkExistenceRes.isErr()) { + return err(checkExistenceRes.error); + } + + const skillMdPath = path.join(skillFolderAbsolutePath, "SKILL.md"); + if (!(await fs.pathExists(skillMdPath))) { + return err( + new FileNotFoundError( + actionName, + skillMdPath, + "https://aka.ms/teamsfx-actions/teamsapp-zipAppPackage" + ) + ); + } + + const skillRelativePath = path.relative(appDirectory, skillFolderAbsolutePath); + zip.addLocalFolder(skillFolderAbsolutePath, skillRelativePath); + } + } + } } else { return err(getCopilotGptRes.error); } @@ -388,6 +421,13 @@ export class CreateAppPackageDriver implements StepDriver { zip.writeZip(zipFileName); + // Validate zip package size against 10 MB hard limit + const maxPackageSize = 10 * 1024 * 1024; + const zipStats = await fs.stat(zipFileName); + if (zipStats.size > maxPackageSize) { + return err(new AppPackageSizeExceededError(zipStats.size, maxPackageSize)); + } + await this.writeJsonFile(teamsManifestJsonFileName, JSON.stringify(manifest, null, 4)); const builtSuccess = [ diff --git a/packages/fx-core/src/component/driver/teamsApp/interfaces/ValidationResult.ts b/packages/fx-core/src/component/driver/teamsApp/interfaces/ValidationResult.ts index 2d3ac57d19c..fa25fd22fec 100644 --- a/packages/fx-core/src/component/driver/teamsApp/interfaces/ValidationResult.ts +++ b/packages/fx-core/src/component/driver/teamsApp/interfaces/ValidationResult.ts @@ -5,6 +5,7 @@ export interface DeclarativeCopilotManifestValidationResult { filePath: string; validationResult: string[]; actionValidationResult: PluginManifestValidationResult[]; + skillValidationResult: SkillValidationResult[]; } export interface PluginManifestValidationResult { @@ -12,3 +13,9 @@ export interface PluginManifestValidationResult { filePath: string; validationResult: string[]; } + +export interface SkillValidationResult { + folder: string; + filePath: string; + validationResult: string[]; +} diff --git a/packages/fx-core/src/component/driver/teamsApp/utils/CopilotGptManifestUtils.ts b/packages/fx-core/src/component/driver/teamsApp/utils/CopilotGptManifestUtils.ts index 90d3f3d8b6b..404c6bd1b89 100644 --- a/packages/fx-core/src/component/driver/teamsApp/utils/CopilotGptManifestUtils.ts +++ b/packages/fx-core/src/component/driver/teamsApp/utils/CopilotGptManifestUtils.ts @@ -38,7 +38,10 @@ import { ManifestType } from "../../../utils/envFunctionUtils"; import { DriverContext } from "../../interface/commonArgs"; import { EmbeddedKnowledgeLocalDirectoryName } from "../constants"; import { AppStudioError } from "../errors"; -import { DeclarativeCopilotManifestValidationResult } from "../interfaces/ValidationResult"; +import { + DeclarativeCopilotManifestValidationResult, + SkillValidationResult, +} from "../interfaces/ValidationResult"; import { AppStudioResultFactory } from "../results"; import { manifestUtils } from "./ManifestUtils"; import { pluginManifestUtils } from "./PluginManifestUtils"; @@ -194,6 +197,7 @@ export class CopilotGptManifestUtils { filePath: manifestPath, validationResult: manifestValidationRes, actionValidationResult: [], + skillValidationResult: [], }; if (manifest.actions?.length) { @@ -213,6 +217,47 @@ export class CopilotGptManifestUtils { } } } + + // Validate skills + const skills = manifest.agent_skills; + if (skills && Array.isArray(skills)) { + for (const skill of skills) { + const skillResult: SkillValidationResult = { + folder: skill.folder, + filePath: "", + validationResult: [], + }; + + const skillFolderPath = path.join(path.dirname(manifestPath), skill.folder); + if (!(await fs.pathExists(skillFolderPath))) { + skillResult.validationResult.push(`Skill folder not found: ${skillFolderPath}`); + } else { + const skillMdPath = path.join(skillFolderPath, "SKILL.md"); + skillResult.filePath = skillMdPath; + if (!(await fs.pathExists(skillMdPath))) { + skillResult.validationResult.push( + `SKILL.md not found in skill folder: ${skillFolderPath}` + ); + } else { + const content = await fs.readFile(skillMdPath, { encoding: "utf-8" }); + const frontmatter = this.parseYamlFrontmatter(content); + if (!frontmatter.name) { + skillResult.validationResult.push( + `SKILL.md is missing required field 'name' in YAML frontmatter: ${skillMdPath}` + ); + } + if (!frontmatter.description) { + skillResult.validationResult.push( + `SKILL.md is missing required field 'description' in YAML frontmatter: ${skillMdPath}` + ); + } + } + } + + res.skillValidationResult.push(skillResult); + } + } + return ok(res); } catch (e: any) { return err( @@ -344,6 +389,40 @@ export class CopilotGptManifestUtils { } } + public async addSkill( + copilotGptPath: string, + folder: string + ): Promise> { + const gptManifestRes = await copilotGptManifestUtils.readCopilotGptManifestFile(copilotGptPath); + if (gptManifestRes.isErr()) { + return err(gptManifestRes.error); + } + + const gptManifest = gptManifestRes.value; + + // Initialize agent_skills array if not present + if (!gptManifest.agent_skills) { + gptManifest.agent_skills = []; + } + + // Prevent duplicate folder paths + const skills = gptManifest.agent_skills; + if (!skills.some((s) => s.folder === folder)) { + skills.push({ folder }); + } + + // Write updated manifest back + const updateRes = await copilotGptManifestUtils.writeCopilotGptManifestFile( + gptManifest, + copilotGptPath + ); + if (updateRes.isErr()) { + return err(updateRes.error); + } + + return ok(gptManifest); + } + public logValidationErrors( validationRes: DeclarativeCopilotManifestValidationResult, platform: Platform @@ -352,6 +431,7 @@ export class CopilotGptManifestUtils { const filePath = validationRes.filePath; const hasDeclarativeCopilotError = validationErrors.length > 0; let hasActionError = false; + let hasSkillError = false; for (const actionValidationRes of validationRes.actionValidationResult) { if (actionValidationRes.validationResult.length > 0) { @@ -359,7 +439,13 @@ export class CopilotGptManifestUtils { break; } } - if (!hasDeclarativeCopilotError && !hasActionError) { + for (const skillValidationRes of validationRes.skillValidationResult ?? []) { + if (skillValidationRes.validationResult.length > 0) { + hasSkillError = true; + break; + } + } + if (!hasDeclarativeCopilotError && !hasActionError && !hasSkillError) { return ""; } @@ -390,6 +476,17 @@ export class CopilotGptManifestUtils { } } + for (const skillValidationRes of validationRes.skillValidationResult ?? []) { + if (skillValidationRes.validationResult.length > 0) { + const skillErrors = skillValidationRes.validationResult + .map((error: string) => `${SummaryConstant.Failed} ${error}`) + .join(EOL); + const skillPath = skillValidationRes.filePath || skillValidationRes.folder; + outputMessage += + (!outputMessage ? "" : EOL) + `Skill validation (${skillPath}):` + EOL + skillErrors; + } + } + return outputMessage; } else { const outputMessage = []; @@ -423,6 +520,26 @@ export class CopilotGptManifestUtils { } } + for (const skillValidationRes of validationRes.skillValidationResult ?? []) { + if (skillValidationRes.validationResult.length > 0) { + const skillPath = skillValidationRes.filePath || skillValidationRes.folder; + outputMessage.push({ + content: `Skill validation (${skillPath}):\n`, + color: Colors.BRIGHT_WHITE, + }); + skillValidationRes.validationResult.map((error: string) => { + outputMessage.push({ + content: `${SummaryConstant.Failed} `, + color: Colors.BRIGHT_RED, + }); + outputMessage.push({ + content: `${error}\n`, + color: Colors.BRIGHT_WHITE, + }); + }); + } + } + return outputMessage; } } @@ -724,6 +841,27 @@ export class CopilotGptManifestUtils { return ok(agentManifest); } } + + private parseYamlFrontmatter(content: string): Record { + const result: Record = {}; + const trimmed = content.trimStart(); + if (!trimmed.startsWith("---")) { + return result; + } + const endIndex = trimmed.indexOf("---", 3); + if (endIndex === -1) { + return result; + } + const frontmatter = trimmed.substring(3, endIndex); + const lines = frontmatter.split(/\r?\n/); + for (const line of lines) { + const match = line.match(/^(\w+)\s*:\s*(.+)$/); + if (match) { + result[match[1]] = match[2].trim(); + } + } + return result; + } } export const copilotGptManifestUtils = new CopilotGptManifestUtils(); diff --git a/packages/fx-core/src/component/driver/teamsApp/utils/telemetry.ts b/packages/fx-core/src/component/driver/teamsApp/utils/telemetry.ts index 879c0a8b712..603b09ab7a0 100644 --- a/packages/fx-core/src/component/driver/teamsApp/utils/telemetry.ts +++ b/packages/fx-core/src/component/driver/teamsApp/utils/telemetry.ts @@ -15,6 +15,7 @@ export enum TelemetryPropertyKey { pluginValidationErrors = "plugin-validation-errors", gptValidationErrors = "gpt-validation-errors", gptActionValidationErrors = "gpt-action-validation-errors", + gptSkillValidationErrors = "gpt-skill-validation-errors", localizationValidationErrors = "localization-validation-errors", } diff --git a/packages/fx-core/src/component/driver/teamsApp/validate.ts b/packages/fx-core/src/component/driver/teamsApp/validate.ts index 12e06babd89..4953b0af413 100644 --- a/packages/fx-core/src/component/driver/teamsApp/validate.ts +++ b/packages/fx-core/src/component/driver/teamsApp/validate.ts @@ -167,6 +167,24 @@ export class ValidateManifestDriver implements StepDriver { telemetryProperties[`${TelemetryPropertyKey.gptActionValidationErrors}`] = errors.join(";"); } + + if ((declarativeAgentValidationResult.skillValidationResult ?? []).length > 0) { + let errors: string[] = []; + for ( + let index = 0; + index < declarativeAgentValidationResult.skillValidationResult.length; + index++ + ) { + errors = errors.concat( + declarativeAgentValidationResult.skillValidationResult[index].validationResult.map( + (r: string) => index.toString() + ":" + r.replace(/\//g, "") + ) + ); + } + + telemetryProperties[`${TelemetryPropertyKey.gptSkillValidationErrors}`] = + errors.join(";"); + } } } @@ -175,11 +193,18 @@ export class ValidateManifestDriver implements StepDriver { .filter((o) => o.filePath !== "") .reduce((acc, { validationResult }) => acc + validationResult.length, 0) ?? 0; + const skillErrorCount = + declarativeAgentValidationResult?.skillValidationResult?.reduce( + (acc, { validationResult }) => acc + validationResult.length, + 0 + ) ?? 0; + const allErrorCount = manifestValidationResult.length + localizationFilesValidationRes.value.error.length + (declarativeAgentValidationResult?.validationResult.length ?? 0) + - actionErrorCount; + actionErrorCount + + skillErrorCount; if (allErrorCount > 0) { const summaryStr = getLocalizedString( diff --git a/packages/fx-core/src/component/m365/packageService.ts b/packages/fx-core/src/component/m365/packageService.ts index b5eaf3c95c1..7cb7595eb12 100644 --- a/packages/fx-core/src/component/m365/packageService.ts +++ b/packages/fx-core/src/component/m365/packageService.ts @@ -40,6 +40,9 @@ import { getResourceServiceEndpoint, ResourceServiceType } from "../../common/co const M365ErrorSource = "M365"; const M365ErrorComponent = "PackageService"; +// MOS/Titles API maximum upload size (10 MB) +const MOS_MAX_PACKAGE_SIZE_BYTES = 10 * 1024 * 1024; + export enum AppScope { Personal = "Personal", Shared = "Shared", @@ -126,6 +129,7 @@ export class PackageService { @hooks([ErrorContextMW({ source: M365ErrorSource, component: M365ErrorComponent })]) public async sideLoadXmlManifest(token: string, manifestPath: string): Promise<[string, string]> { try { + this.validatePackageSize(manifestPath); const data = await fs.readFile(manifestPath); const content = new FormData(); content.append("package", data); @@ -194,6 +198,7 @@ export class PackageService { packagePath: string, appScope = AppScope.Personal ): Promise<[string, string, string]> { + this.validatePackageSize(packagePath); const manifest = this.getManifestFromZip(packagePath); if (!manifest) { throw new Error("Invalid app package zip. manifest.json is missing"); @@ -905,6 +910,28 @@ export class PackageService { } } + private validatePackageSize(packagePath: string) { + const stats = fs.statSync(packagePath); + if (stats.size > MOS_MAX_PACKAGE_SIZE_BYTES) { + const actualMB = (stats.size / (1024 * 1024)).toFixed(2); + const maxMB = (MOS_MAX_PACKAGE_SIZE_BYTES / (1024 * 1024)).toFixed(2); + throw new UserError({ + source: M365ErrorSource, + name: "AppPackageSizeExceeded", + message: getDefaultString( + "error.m365.packageService.packageSizeExceeded", + actualMB, + maxMB + ), + displayMessage: getLocalizedString( + "error.m365.packageService.packageSizeExceeded", + actualMB, + maxMB + ), + }); + } + } + private getManifestFromZip(path: string): TeamsAppManifest | undefined { const zip = new AdmZip(path); const manifestEntry = zip.getEntry("manifest.json"); diff --git a/packages/fx-core/src/core/FxCore.ts b/packages/fx-core/src/core/FxCore.ts index a68a32af20f..7a589c4c0a4 100644 --- a/packages/fx-core/src/core/FxCore.ts +++ b/packages/fx-core/src/core/FxCore.ts @@ -46,6 +46,7 @@ import { import { DotenvParseOutput } from "dotenv"; import fs from "fs-extra"; import * as jsonschema from "jsonschema"; +import AdmZip from "adm-zip"; import * as os from "os"; import * as path from "path"; import "reflect-metadata"; @@ -2306,6 +2307,404 @@ export class FxCore extends FxCoreDeclarativeAgentPart { return ok(result); } + /** + * Add Skill + */ + @hooks([ + ErrorContextMW({ component: "FxCore", stage: Stage.addSkill }), + ErrorHandlerMW, + QuestionMW("addSkill"), + ConcurrentLockerMW, + ]) + async addSkill(inputs: Inputs): Promise> { + if (!inputs.projectPath) { + throw new Error("projectPath is undefined"); // should never happen + } + + const context = createContext(); + const projectPath = inputs.projectPath; + const teamsManifestPath = path.resolve(projectPath, inputs[QuestionNames.ManifestPath]); + const appPackageFolder = path.dirname(teamsManifestPath); + + // Validate the project is valid for adding a skill + const manifestRes = await manifestUtils._readAppManifest(teamsManifestPath); + if (manifestRes.isErr()) { + return err(manifestRes.error); + } + + const teamsManifest = manifestRes.value; + const agent = teamsManifest.copilotExtensions + ? teamsManifest.copilotExtensions.declarativeCopilots?.[0] + : teamsManifest.copilotAgents?.declarativeAgents?.[0]; + if (!agent?.file) { + return err( + AppStudioResultFactory.UserError( + AppStudioError.TeamsAppRequiredPropertyMissingError.name, + AppStudioError.TeamsAppRequiredPropertyMissingError.message( + "declarativeAgents", + teamsManifestPath + ) + ) + ); + } + const agentFilePathRes = await copilotGptManifestUtils.getManifestPath(teamsManifestPath); + if (agentFilePathRes.isErr()) { + return err(agentFilePathRes.error); + } + + const agentManifestPath = agentFilePathRes.value; + + // Confirm before modifying files (matches addPlugin pattern) + const confirmMessage = getLocalizedString( + "core.addSkill.confirm", + path.relative(inputs.projectPath, appPackageFolder) + ); + const confirmRes = await context.userInteraction.showMessage( + "warn", + confirmMessage, + true, + getLocalizedString("core.addSkill.continue") + ); + if (confirmRes.isErr()) { + return err(confirmRes.error); + } else if (confirmRes.value !== getLocalizedString("core.addSkill.continue")) { + return err(new UserCancelError()); + } + + const skillName = inputs[QuestionNames.SkillName] as string; + const skillDescription = inputs[QuestionNames.SkillDescription] as string; + const skillFrom = inputs[QuestionNames.SkillFrom] as string | undefined; + const skillFromZipFile = inputs[QuestionNames.SkillFromZipFile] as string | undefined; + + let skillFolder: string; + if (skillFrom || skillFromZipFile) { + const isZipImport = + skillFromZipFile || (skillFrom && skillFrom.toLowerCase().endsWith(".zip")); + const sourcePath = skillFromZipFile || (skillFrom as string); + + if (isZipImport) { + // Zip import mode + const importRes = await this.importSkillFromZip( + sourcePath, + appPackageFolder, + agentManifestPath + ); + if (importRes.isErr()) { + return err(importRes.error); + } + skillFolder = importRes.value; + } else { + // Existing skill folder mode: validate it's within appPackage + const skillAbsPath = path.resolve(appPackageFolder, sourcePath); + const relativePath = path.relative(appPackageFolder, skillAbsPath); + if (relativePath.startsWith("..")) { + return err( + new UserError( + "FxCore", + "SkillOutsideAppPackage", + "The skill directory must be within the app package folder." + ) + ); + } + + // Validate folder name format + const folderName = path.basename(skillAbsPath); + const namePattern = /^[a-zA-Z][a-zA-Z0-9-]*$/; + if (!namePattern.test(folderName)) { + return err( + new UserError( + "FxCore", + "InvalidSkillFolderName", + `Skill folder name "${folderName}" is invalid. It must start with a letter and contain only letters, numbers, and hyphens.` + ) + ); + } + + // Validate SKILL.md exists + const skillMdPath = path.join(skillAbsPath, "SKILL.md"); + if (!(await fs.pathExists(skillMdPath))) { + return err( + new UserError( + "FxCore", + "SkillMdNotFound", + `SKILL.md not found in ${skillAbsPath}. Each skill directory must contain a SKILL.md file.` + ) + ); + } + + // Validate skill name in SKILL.md matches folder name + const skillMdContent = await fs.readFile(skillMdPath, "utf-8"); + const nameMatch = skillMdContent.match(/^---[\s\S]*?^name:\s*(.+)$/m); + if (nameMatch) { + const skillMdName = nameMatch[1].trim(); + if (skillMdName !== folderName) { + return err( + new UserError( + "FxCore", + "SkillNameMismatch", + `Skill name "${skillMdName}" in SKILL.md does not match folder name "${folderName}". They must be the same.` + ) + ); + } + } + + skillFolder = normalizePath( + path.relative(path.dirname(agentManifestPath), skillAbsPath), + true + ); + } + } else { + // New skill mode: create the directory and SKILL.md + const skillDir = path.join(appPackageFolder, "skills", skillName); + await fs.ensureDir(skillDir); + + const skillMdContent = [ + "---", + `name: ${skillName}`, + `description: ${skillDescription}`, + "---", + `# ${skillName}`, + "", + "", + "", + "", + ].join("\n"); + await fs.writeFile(path.join(skillDir, "SKILL.md"), skillMdContent); + + skillFolder = normalizePath(path.relative(path.dirname(agentManifestPath), skillDir), true); + } + + // Add skill entry to DA manifest + const addSkillRes = await copilotGptManifestUtils.addSkill(agentManifestPath, skillFolder); + if (addSkillRes.isErr()) { + return err(addSkillRes.error); + } + + // Show success message + if (inputs.platform === Platform.VSCode) { + const successMessage = getLocalizedString("core.addSkill.success.vsc"); + const viewAgentManifest = getLocalizedString("core.addSkill.success.viewAgentManifest"); + void context.userInteraction + .showMessage("info", successMessage, false, viewAgentManifest) + .then((userRes) => { + if (userRes.isOk() && userRes.value === viewAgentManifest) { + void TOOLS?.ui?.openFile?.(agentManifestPath); + } + }); + } else { + const successMessage = getLocalizedString("core.addSkill.success", agentManifestPath); + void context.userInteraction.showMessage("info", successMessage, false); + } + + return ok(undefined); + } + + /** + * Import a skill from a .zip file into the appPackage/skills folder. + * Validates zip entries for security, extracts to a temp directory, then moves atomically. + */ + private async importSkillFromZip( + zipPath: string, + appPackageFolder: string, + agentManifestPath: string + ): Promise> { + // Resolve zip path relative to CWD (not appPackage) + const resolvedZipPath = path.resolve(zipPath); + if (!(await fs.pathExists(resolvedZipPath))) { + return err( + new UserError("FxCore", "ZipFileNotFound", `Zip file not found: ${resolvedZipPath}`) + ); + } + + let zip: AdmZip; + try { + zip = new AdmZip(resolvedZipPath); + } catch { + return err( + new UserError( + "FxCore", + "InvalidZipFile", + `Failed to read zip file: ${resolvedZipPath}. Please provide a valid .zip file.` + ) + ); + } + + const entries = zip.getEntries(); + // Metadata directories to ignore + const ignoredPrefixes = ["__MACOSX/", ".DS_Store"]; + + // Security: validate all entries before extraction + for (const entry of entries) { + const entryName = entry.entryName.replace(/\\/g, "/"); + if (entryName.includes("..") || path.isAbsolute(entryName) || entryName.startsWith("/")) { + return err( + new UserError( + "FxCore", + "ZipInvalidEntries", + getLocalizedString("core.addSkill.zipInvalidEntries") + ) + ); + } + } + + // Filter out metadata entries + const validEntries = entries.filter((entry) => { + const entryName = entry.entryName.replace(/\\/g, "/"); + return !ignoredPrefixes.some( + (prefix) => entryName.startsWith(prefix) || entryName === prefix.replace("/", "") + ); + }); + + // Determine zip layout: single top-level directory or root-level files + const topLevelDirs = new Set(); + let hasRootFiles = false; + for (const entry of validEntries) { + const entryName = entry.entryName.replace(/\\/g, "/"); + const parts = entryName.split("/").filter((p) => p.length > 0); + if (parts.length === 1 && !entry.isDirectory) { + hasRootFiles = true; + } else if (parts.length >= 1) { + topLevelDirs.add(parts[0]); + } + } + + let skillContentPrefix = ""; + let derivedSkillName: string; + + if (!hasRootFiles && topLevelDirs.size === 1) { + // Single top-level directory layout + skillContentPrefix = [...topLevelDirs][0] + "/"; + derivedSkillName = [...topLevelDirs][0]; + } else if (hasRootFiles) { + // Root-level files layout: derive name from SKILL.md frontmatter + const skillMdEntry = validEntries.find((e) => { + const name = e.entryName.replace(/\\/g, "/"); + return name === "SKILL.md" || name === "./SKILL.md"; + }); + if (!skillMdEntry) { + return err( + new UserError("FxCore", "ZipNoSkillMd", getLocalizedString("core.addSkill.zipNoSkillMd")) + ); + } + const skillMdContent = skillMdEntry.getData().toString("utf-8"); + const nameMatch = skillMdContent.match(/^---[\s\S]*?^name:\s*(.+)$/m); + if (!nameMatch) { + return err( + new UserError( + "FxCore", + "ZipNoSkillMd", + getLocalizedString("core.addSkill.zipNoSkillMd") + + " The SKILL.md file must include a 'name' field in its frontmatter." + ) + ); + } + derivedSkillName = nameMatch[1].trim(); + } else { + return err( + new UserError( + "FxCore", + "ZipInvalidLayout", + getLocalizedString("core.addSkill.zipInvalidLayout") + ) + ); + } + + // Validate skill name format + const namePattern = /^[a-zA-Z][a-zA-Z0-9-]*$/; + if (!namePattern.test(derivedSkillName)) { + return err( + new UserError( + "FxCore", + "InvalidSkillFolderName", + `Skill name "${derivedSkillName}" is invalid. It must start with a letter and contain only letters, numbers, and hyphens.` + ) + ); + } + + // Check target folder doesn't already exist + const targetSkillDir = path.join(appPackageFolder, "skills", derivedSkillName); + if (await fs.pathExists(targetSkillDir)) { + return err( + new UserError( + "FxCore", + "SkillFolderAlreadyExists", + getLocalizedString("core.addSkill.zipSkillFolderExists", derivedSkillName) + ) + ); + } + + // Extract to temp directory first, then move atomically + const tempDir = path.join(os.tmpdir(), `atk-skill-import-${Date.now()}`); + const tempSkillDir = path.join(tempDir, derivedSkillName); + try { + await fs.ensureDir(tempSkillDir); + + // Extract relevant entries + for (const entry of validEntries) { + if (entry.isDirectory) continue; + const entryName = entry.entryName.replace(/\\/g, "/"); + let relativeName = entryName; + if (skillContentPrefix && entryName.startsWith(skillContentPrefix)) { + relativeName = entryName.slice(skillContentPrefix.length); + } + if (!relativeName) continue; + + const targetPath = path.join(tempSkillDir, relativeName); + // Re-validate no path traversal after joining + const normalizedTarget = path.resolve(targetPath); + if (!normalizedTarget.startsWith(path.resolve(tempSkillDir))) { + return err( + new UserError( + "FxCore", + "ZipInvalidEntries", + getLocalizedString("core.addSkill.zipInvalidEntries") + ) + ); + } + + await fs.ensureDir(path.dirname(targetPath)); + await fs.writeFile(targetPath, entry.getData()); + } + + // Validate SKILL.md exists in extracted content + const extractedSkillMdPath = path.join(tempSkillDir, "SKILL.md"); + if (!(await fs.pathExists(extractedSkillMdPath))) { + return err( + new UserError("FxCore", "ZipNoSkillMd", getLocalizedString("core.addSkill.zipNoSkillMd")) + ); + } + + // Validate name in SKILL.md matches derived folder name + const extractedSkillMd = await fs.readFile(extractedSkillMdPath, "utf-8"); + const extractedNameMatch = extractedSkillMd.match(/^---[\s\S]*?^name:\s*(.+)$/m); + if (extractedNameMatch) { + const extractedName = extractedNameMatch[1].trim(); + if (extractedName !== derivedSkillName) { + return err( + new UserError( + "FxCore", + "SkillNameMismatch", + `Skill name "${extractedName}" in SKILL.md does not match folder name "${derivedSkillName}". They must be the same.` + ) + ); + } + } + + // Move to final location + await fs.ensureDir(path.dirname(targetSkillDir)); + await fs.move(tempSkillDir, targetSkillDir); + } finally { + // Clean up temp directory + await fs.remove(tempDir).catch(() => {}); + } + + const skillFolder = normalizePath( + path.relative(path.dirname(agentManifestPath), targetSkillDir), + true + ); + return ok(skillFolder); + } + /** * only for vs code extension */ diff --git a/packages/fx-core/src/error/teamsApp.ts b/packages/fx-core/src/error/teamsApp.ts index ed00e1df90f..bc4a4c4614f 100644 --- a/packages/fx-core/src/error/teamsApp.ts +++ b/packages/fx-core/src/error/teamsApp.ts @@ -102,6 +102,28 @@ export class InvalidFileOutsideOfTheDirectotryError extends UserError { } } +export class AppPackageSizeExceededError extends UserError { + constructor(actualSizeInBytes: number, maxSizeInBytes: number) { + const actualMB = (actualSizeInBytes / (1024 * 1024)).toFixed(2); + const maxMB = (maxSizeInBytes / (1024 * 1024)).toFixed(2); + const errorOptions: UserErrorOptions = { + source: Constants.PLUGIN_NAME, + message: getDefaultString( + "error.teamsApp.createAppPackage.packageSizeExceeded", + actualMB, + maxMB + ), + displayMessage: getLocalizedString( + "error.teamsApp.createAppPackage.packageSizeExceeded", + actualMB, + maxMB + ), + categories: [ErrorCategory.External], + }; + super(errorOptions); + } +} + export class AppIdNotExist extends UserError { constructor(appId: string, source?: string) { super({ diff --git a/packages/fx-core/src/question/index.ts b/packages/fx-core/src/question/index.ts index 6d107bb5469..8402dc4194a 100644 --- a/packages/fx-core/src/question/index.ts +++ b/packages/fx-core/src/question/index.ts @@ -7,6 +7,7 @@ import { createSampleProjectQuestionNode } from "./create"; import { addAuthActionQuestion, addKnowledgeQuestionNode, + addSkillQuestionNode, addPluginQuestionNode, addWebPartQuestionNode, apiSpecApiKeyQuestion, @@ -106,6 +107,9 @@ export class QuestionNodes { addKnowledge(): IQTreeNode { return addKnowledgeQuestionNode(); } + addSkill(): IQTreeNode { + return addSkillQuestionNode(); + } setSensitivityLabel(): IQTreeNode { return setSensitivityLabelNode(); } diff --git a/packages/fx-core/src/question/inputs/AddSkillInputs.ts b/packages/fx-core/src/question/inputs/AddSkillInputs.ts new file mode 100644 index 00000000000..1b16b44065b --- /dev/null +++ b/packages/fx-core/src/question/inputs/AddSkillInputs.ts @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { Inputs } from "@microsoft/teamsfx-api"; + +export interface AddSkillInputs extends Inputs { + "skill-name"?: string; + "skill-description"?: string; + "skill-from"?: string; + "skill-source-type"?: string; + "skill-from-zip-file"?: string; + "manifest-path"?: string; +} diff --git a/packages/fx-core/src/question/inputs/index.ts b/packages/fx-core/src/question/inputs/index.ts index b0003aaf46e..d952e994864 100644 --- a/packages/fx-core/src/question/inputs/index.ts +++ b/packages/fx-core/src/question/inputs/index.ts @@ -19,3 +19,4 @@ export * from "./SyncManifestInputs"; export * from "./UninstallInputs"; export * from "./ValidateTeamsAppInputs"; export * from "./removeSharedAccessInputs"; +export * from "./AddSkillInputs"; diff --git a/packages/fx-core/src/question/options/AddSkillOptions.ts b/packages/fx-core/src/question/options/AddSkillOptions.ts new file mode 100644 index 00000000000..745ed66cb98 --- /dev/null +++ b/packages/fx-core/src/question/options/AddSkillOptions.ts @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { CLICommandOption, CLICommandArgument } from "@microsoft/teamsfx-api"; + +export const AddSkillOptions: CLICommandOption[] = [ + { + name: "name", + questionName: "skill-name", + type: "string", + description: + "Name of the skill (letters, numbers, and hyphens only). Required when not using --from.", + required: false, + }, + { + name: "description", + questionName: "skill-description", + type: "string", + description: "Description of what the skill does. Required when not using --from.", + required: false, + }, + { + name: "from", + questionName: "skill-from", + type: "string", + description: + "Path to an existing skill directory within appPackage, or path to a .zip file containing a skill.", + required: false, + }, + { + name: "manifest-file", + questionName: "manifest-path", + type: "string", + shortName: "t", + description: "Specifies the app manifest file path.", + required: true, + default: "./appPackage/manifest.json", + }, +]; +export const AddSkillArguments: CLICommandArgument[] = []; diff --git a/packages/fx-core/src/question/options/index.ts b/packages/fx-core/src/question/options/index.ts index 4fd74fe630e..d841e92ce75 100644 --- a/packages/fx-core/src/question/options/index.ts +++ b/packages/fx-core/src/question/options/index.ts @@ -19,3 +19,4 @@ export * from "./SetSensitivityLabelOptions"; export * from "./ShareOptions"; export * from "./removeSharedAccessOptions"; export * from "./RegeneratePluginOptions"; +export * from "./AddSkillOptions"; diff --git a/packages/fx-core/src/question/other.ts b/packages/fx-core/src/question/other.ts index 3a71361cb08..f06b3af6433 100644 --- a/packages/fx-core/src/question/other.ts +++ b/packages/fx-core/src/question/other.ts @@ -1649,6 +1649,109 @@ export function selectDeclarativeAgentManifestQuestion(): SingleFileQuestion { }; } +// add Skill to a declarative agent project +export function addSkillQuestionNode(): IQTreeNode { + return { + data: { type: "group" }, + children: [ + { + data: skillSourceTypeQuestion(), + condition: (inputs: Inputs) => + !inputs[QuestionNames.SkillFrom] && inputs.platform !== Platform.CLI, + }, + { + data: skillFromZipFileQuestion(), + condition: (inputs: Inputs) => + !inputs[QuestionNames.SkillFrom] && inputs[QuestionNames.SkillSourceType] === "existing", + }, + { + data: skillNameQuestion(), + condition: (inputs: Inputs) => + !inputs[QuestionNames.SkillFrom] && inputs[QuestionNames.SkillSourceType] !== "existing", + }, + { + data: skillDescriptionQuestion(), + condition: (inputs: Inputs) => + !inputs[QuestionNames.SkillFrom] && inputs[QuestionNames.SkillSourceType] !== "existing", + }, + { + data: selectTeamsAppManifestQuestion(), + }, + ], + }; +} + +function skillNameQuestion(): TextInputQuestion { + return { + type: "text", + name: QuestionNames.SkillName, + title: getLocalizedString("core.addSkillQuestion.name.title"), + placeholder: getLocalizedString("core.addSkillQuestion.name.placeholder"), + validation: { + validFunc: (input: string, inputs?: Inputs): string | undefined => { + const pattern = /^[a-zA-Z][a-zA-Z0-9-]*$/; + if (!pattern.test(input)) { + return getLocalizedString("core.addSkillQuestion.name.validation"); + } + // Check for duplicate skill name + if (inputs?.projectPath) { + const manifestPath = + inputs[QuestionNames.ManifestPath] || + path.join(inputs.projectPath, AppPackageFolderName, "manifest.json"); + const appPackageFolder = path.dirname(manifestPath); + const skillDir = path.join(appPackageFolder, "skills", input); + if (fs.pathExistsSync(skillDir)) { + return getLocalizedString("core.addSkillQuestion.name.duplicate", input); + } + } + return undefined; + }, + }, + }; +} + +function skillDescriptionQuestion(): TextInputQuestion { + return { + type: "text", + name: QuestionNames.SkillDescription, + title: getLocalizedString("core.addSkillQuestion.description.title"), + placeholder: getLocalizedString("core.addSkillQuestion.description.placeholder"), + }; +} + +function skillSourceTypeQuestion(): SingleSelectQuestion { + return { + name: QuestionNames.SkillSourceType, + title: getLocalizedString("core.addSkillQuestion.sourceType.title"), + type: "singleSelect", + staticOptions: [ + { + id: "new", + label: getLocalizedString("core.addSkillQuestion.sourceType.new"), + detail: getLocalizedString("core.addSkillQuestion.sourceType.newDetail"), + }, + { + id: "existing", + label: getLocalizedString("core.addSkillQuestion.sourceType.existing"), + detail: getLocalizedString("core.addSkillQuestion.sourceType.existingDetail"), + }, + ], + default: "new", + }; +} + +function skillFromZipFileQuestion(): SingleFileQuestion { + return { + name: QuestionNames.SkillFromZipFile, + title: getLocalizedString("core.addSkillQuestion.zipFile.title"), + placeholder: getLocalizedString("core.addSkillQuestion.zipFile.placeholder"), + type: "singleFile", + filters: { + "Zip files": ["zip"], + }, + }; +} + export function SelectSensitivityLabelQuestion(): SingleSelectQuestion { return { name: QuestionNames.SensitivityLabel, diff --git a/packages/fx-core/src/question/questionNames.ts b/packages/fx-core/src/question/questionNames.ts index 568eb45d86e..feab0d2511a 100644 --- a/packages/fx-core/src/question/questionNames.ts +++ b/packages/fx-core/src/question/questionNames.ts @@ -160,4 +160,10 @@ export enum QuestionNames { MCPForDAAuthWellKnownUrl = "mcp-da-auth-well-known-url", MCPForDAAuthType = "mcp-da-auth-type", MCPToolsFilePath = "mcp-tools-file-path", + + SkillName = "skill-name", + SkillDescription = "skill-description", + SkillFrom = "skill-from", + SkillSourceType = "skill-source-type", + SkillFromZipFile = "skill-from-zip-file", } diff --git a/packages/fx-core/tests/component/driver/teamsApp/copilotGptManifest.test.ts b/packages/fx-core/tests/component/driver/teamsApp/copilotGptManifest.test.ts index c2a47239043..2985a6974f3 100644 --- a/packages/fx-core/tests/component/driver/teamsApp/copilotGptManifest.test.ts +++ b/packages/fx-core/tests/component/driver/teamsApp/copilotGptManifest.test.ts @@ -613,6 +613,7 @@ describe("copilotGptManifestUtils", () => { validationResult: ["error1"], }, ], + skillValidationResult: [], }); } }); @@ -706,12 +707,43 @@ describe("copilotGptManifestUtils", () => { validationResult: [], }, ], + skillValidationResult: [], }; const res = copilotGptManifestUtils.logValidationErrors(validationRes, Platform.VSCode); chai.assert.isEmpty(res); }); + it("handles undefined skillValidationResult in VSC", () => { + const validationRes = { + id: "1", + filePath: "testPath", + validationResult: ["error1"], + actionValidationResult: [], + } as unknown as DeclarativeCopilotManifestValidationResult; + + const res = copilotGptManifestUtils.logValidationErrors( + validationRes, + Platform.VSCode + ) as string; + chai.assert.isTrue(res.includes("error1")); + }); + + it("handles undefined skillValidationResult in CLI", () => { + const validationRes = { + id: "1", + filePath: "testPath", + validationResult: ["error1"], + actionValidationResult: [], + } as unknown as DeclarativeCopilotManifestValidationResult; + + const res = copilotGptManifestUtils.logValidationErrors( + validationRes, + Platform.CLI + ) as Array<{ content: string; color: Colors }>; + chai.assert.isTrue(res.find((item) => item.content.includes("error1")) !== undefined); + }); + it("log if VSC", () => { const validationRes: DeclarativeCopilotManifestValidationResult = { id: "1", @@ -729,6 +761,7 @@ describe("copilotGptManifestUtils", () => { validationResult: ["errorAction2"], }, ], + skillValidationResult: [], }; const res = copilotGptManifestUtils.logValidationErrors( @@ -758,6 +791,7 @@ describe("copilotGptManifestUtils", () => { validationResult: ["errorAction2"], }, ], + skillValidationResult: [], }; const res = copilotGptManifestUtils.logValidationErrors( @@ -781,6 +815,7 @@ describe("copilotGptManifestUtils", () => { validationResult: ["errorAction1"], }, ], + skillValidationResult: [], }; const res = copilotGptManifestUtils.logValidationErrors( @@ -809,6 +844,7 @@ describe("copilotGptManifestUtils", () => { validationResult: ["errorAction2"], }, ], + skillValidationResult: [], }; const res = copilotGptManifestUtils.logValidationErrors( @@ -818,6 +854,105 @@ describe("copilotGptManifestUtils", () => { chai.assert.isTrue(res.find((item) => item.content.includes("errorAction2")) !== undefined); chai.assert.isTrue(res.find((item) => item.content.includes("errorAction1")) !== undefined); }); + + it("log VSC with skill errors", () => { + const validationRes: DeclarativeCopilotManifestValidationResult = { + id: "1", + filePath: "testPath", + validationResult: [], + actionValidationResult: [], + skillValidationResult: [ + { + folder: "skills/my-skill", + filePath: "skills/my-skill/SKILL.md", + validationResult: ["missing name field", "missing description field"], + }, + ], + }; + + const res = copilotGptManifestUtils.logValidationErrors( + validationRes, + Platform.VSCode + ) as string; + + chai.assert.isTrue(res.includes("Skill validation")); + chai.assert.isTrue(res.includes("missing name field")); + chai.assert.isTrue(res.includes("missing description field")); + chai.assert.isTrue(res.includes("skills/my-skill/SKILL.md")); + }); + + it("log CLI with skill errors", () => { + const validationRes: DeclarativeCopilotManifestValidationResult = { + id: "1", + filePath: "testPath", + validationResult: [], + actionValidationResult: [], + skillValidationResult: [ + { + folder: "skills/my-skill", + filePath: "skills/my-skill/SKILL.md", + validationResult: ["skill error1"], + }, + ], + }; + + const res = copilotGptManifestUtils.logValidationErrors( + validationRes, + Platform.CLI + ) as Array<{ content: string; color: Colors }>; + + chai.assert.isTrue( + res.find((item) => item.content.includes("Skill validation")) !== undefined + ); + chai.assert.isTrue(res.find((item) => item.content.includes("skill error1")) !== undefined); + }); + + it("log VSC with skill error uses folder when filePath is empty", () => { + const validationRes: DeclarativeCopilotManifestValidationResult = { + id: "1", + filePath: "testPath", + validationResult: [], + actionValidationResult: [], + skillValidationResult: [ + { + folder: "skills/no-md", + filePath: "", + validationResult: ["SKILL.md not found"], + }, + ], + }; + + const res = copilotGptManifestUtils.logValidationErrors( + validationRes, + Platform.VSCode + ) as string; + + chai.assert.isTrue(res.includes("skills/no-md")); + chai.assert.isTrue(res.includes("SKILL.md not found")); + }); + + it("log CLI with skill error uses folder when filePath is empty", () => { + const validationRes: DeclarativeCopilotManifestValidationResult = { + id: "1", + filePath: "testPath", + validationResult: [], + actionValidationResult: [], + skillValidationResult: [ + { + folder: "skills/no-md", + filePath: "", + validationResult: ["SKILL.md not found"], + }, + ], + }; + + const res = copilotGptManifestUtils.logValidationErrors( + validationRes, + Platform.CLI + ) as Array<{ content: string; color: Colors }>; + + chai.assert.isTrue(res.find((item) => item.content.includes("skills/no-md")) !== undefined); + }); }); describe("getManifestPath", async () => { @@ -1486,4 +1621,380 @@ describe("copilotGptManifestUtils", () => { } }); }); + + describe("addSkill", () => { + it("adds skill entry to manifest and writes file", async () => { + const manifest: DeclarativeCopilotManifestSchema = { + name: "test-agent", + description: "description", + }; + sandbox.stub(copilotGptManifestUtils, "readCopilotGptManifestFile").resolves(ok(manifest)); + sandbox.stub(copilotGptManifestUtils, "writeCopilotGptManifestFile").resolves(ok(undefined)); + + const res = await copilotGptManifestUtils.addSkill("testPath", "./skills/mySkill"); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + const manifestAny = res.value as any; + chai.assert.isArray(manifestAny["agent_skills"]); + chai.assert.lengthOf(manifestAny["agent_skills"], 1); + chai.assert.deepEqual(manifestAny["agent_skills"][0], { + folder: "./skills/mySkill", + }); + } + }); + + it("prevents duplicate entries", async () => { + const manifest: any = { + name: "test-agent", + description: "description", + agent_skills: [{ folder: "./skills/mySkill" }], + }; + sandbox + .stub(copilotGptManifestUtils, "readCopilotGptManifestFile") + .resolves(ok(manifest as DeclarativeCopilotManifestSchema)); + sandbox.stub(copilotGptManifestUtils, "writeCopilotGptManifestFile").resolves(ok(undefined)); + + const res = await copilotGptManifestUtils.addSkill("testPath", "./skills/mySkill"); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + const manifestAny = res.value as any; + chai.assert.lengthOf(manifestAny["agent_skills"], 1); + } + }); + + it("returns error when readCopilotGptManifestFile fails", async () => { + sandbox + .stub(copilotGptManifestUtils, "readCopilotGptManifestFile") + .resolves(err(new UserError("test", "test", "test", "test"))); + + const res = await copilotGptManifestUtils.addSkill("testPath", "./skills/mySkill"); + + chai.assert.isTrue(res.isErr()); + }); + + it("returns error when writeCopilotGptManifestFile fails", async () => { + const manifest: DeclarativeCopilotManifestSchema = { + name: "test-agent", + description: "description", + }; + sandbox.stub(copilotGptManifestUtils, "readCopilotGptManifestFile").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "writeCopilotGptManifestFile") + .resolves(err(new UserError("test", "test", "test", "test"))); + + const res = await copilotGptManifestUtils.addSkill("testPath", "./skills/mySkill"); + + chai.assert.isTrue(res.isErr()); + }); + }); + + describe("validateAgainstSchema - skill validation", () => { + const driverContext = { + logProvider: new MockedLogProvider(), + telemetryReporter: new MockedTelemetryReporter(), + projectPath: "test", + addTelemetryProperties: () => {}, + }; + + it("validates skill folder exists", async () => { + const manifest: any = { + name: "test-agent", + description: "description", + agent_skills: [{ folder: "./skills/missing" }], + }; + mockedEnvRestore = mockedEnv({ ["APP_NAME_SUFFIX"]: "test" }); + sandbox.stub(fs, "pathExists").callsFake(async (p: string) => { + if (typeof p === "string" && p.includes("missing")) { + return false; + } + return true; + }); + sandbox.stub(fs, "readFile").resolves(JSON.stringify(manifest) as any); + sandbox.stub(ManifestUtil, "validateManifest").resolves([]); + + const res = await copilotGptManifestUtils.validateAgainstSchema( + { id: "1", file: "file" }, + "testPath", + driverContext as any + ); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + chai.assert.lengthOf(res.value.skillValidationResult, 1); + chai.assert.isTrue( + res.value.skillValidationResult[0].validationResult.some((r) => + r.includes("Skill folder not found") + ) + ); + } + }); + + it("validates SKILL.md exists in skill folder", async () => { + const manifest: any = { + name: "test-agent", + description: "description", + agent_skills: [{ folder: "./skills/noSkillMd" }], + }; + mockedEnvRestore = mockedEnv({ ["APP_NAME_SUFFIX"]: "test" }); + sandbox.stub(fs, "pathExists").callsFake(async (p: string) => { + if (typeof p === "string" && p.includes("SKILL.md")) { + return false; + } + return true; + }); + sandbox.stub(fs, "readFile").resolves(JSON.stringify(manifest) as any); + sandbox.stub(ManifestUtil, "validateManifest").resolves([]); + + const res = await copilotGptManifestUtils.validateAgainstSchema( + { id: "1", file: "file" }, + "testPath", + driverContext as any + ); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + chai.assert.lengthOf(res.value.skillValidationResult, 1); + chai.assert.isTrue( + res.value.skillValidationResult[0].validationResult.some((r) => + r.includes("SKILL.md not found") + ) + ); + } + }); + + it("validates SKILL.md has name in frontmatter", async () => { + const manifest: any = { + name: "test-agent", + description: "description", + agent_skills: [{ folder: "./skills/mySkill" }], + }; + mockedEnvRestore = mockedEnv({ ["APP_NAME_SUFFIX"]: "test" }); + sandbox.stub(fs, "pathExists").resolves(true); + + const skillMdContent = "---\ndescription: some desc\n---\n# content"; + const readFileStub = sandbox.stub(fs, "readFile"); + readFileStub.callsFake(async (p: any, _opts?: any) => { + if (typeof p === "string" && p.includes("SKILL.md")) { + return skillMdContent as any; + } + return JSON.stringify(manifest) as any; + }); + sandbox.stub(ManifestUtil, "validateManifest").resolves([]); + + const res = await copilotGptManifestUtils.validateAgainstSchema( + { id: "1", file: "file" }, + "testPath", + driverContext as any + ); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + chai.assert.lengthOf(res.value.skillValidationResult, 1); + chai.assert.isTrue( + res.value.skillValidationResult[0].validationResult.some((r) => + r.includes("missing required field 'name'") + ) + ); + } + }); + + it("validates SKILL.md has description in frontmatter", async () => { + const manifest: any = { + name: "test-agent", + description: "description", + agent_skills: [{ folder: "./skills/mySkill" }], + }; + mockedEnvRestore = mockedEnv({ ["APP_NAME_SUFFIX"]: "test" }); + sandbox.stub(fs, "pathExists").resolves(true); + + const skillMdContent = "---\nname: mySkill\n---\n# content"; + const readFileStub = sandbox.stub(fs, "readFile"); + readFileStub.callsFake(async (p: any, _opts?: any) => { + if (typeof p === "string" && p.includes("SKILL.md")) { + return skillMdContent as any; + } + return JSON.stringify(manifest) as any; + }); + sandbox.stub(ManifestUtil, "validateManifest").resolves([]); + + const res = await copilotGptManifestUtils.validateAgainstSchema( + { id: "1", file: "file" }, + "testPath", + driverContext as any + ); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + chai.assert.lengthOf(res.value.skillValidationResult, 1); + chai.assert.isTrue( + res.value.skillValidationResult[0].validationResult.some((r) => + r.includes("missing required field 'description'") + ) + ); + } + }); + + it("no errors when skills are valid", async () => { + const manifest: any = { + name: "test-agent", + description: "description", + agent_skills: [{ folder: "./skills/mySkill" }], + }; + mockedEnvRestore = mockedEnv({ ["APP_NAME_SUFFIX"]: "test" }); + sandbox.stub(fs, "pathExists").resolves(true); + + const skillMdContent = "---\nname: mySkill\ndescription: A valid skill\n---\n# content"; + const readFileStub = sandbox.stub(fs, "readFile"); + readFileStub.callsFake(async (p: any, _opts?: any) => { + if (typeof p === "string" && p.includes("SKILL.md")) { + return skillMdContent as any; + } + return JSON.stringify(manifest) as any; + }); + sandbox.stub(ManifestUtil, "validateManifest").resolves([]); + + const res = await copilotGptManifestUtils.validateAgainstSchema( + { id: "1", file: "file" }, + "testPath", + driverContext as any + ); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + chai.assert.lengthOf(res.value.skillValidationResult, 1); + chai.assert.lengthOf(res.value.skillValidationResult[0].validationResult, 0); + } + }); + + it("no errors when no skills present", async () => { + const manifest: DeclarativeCopilotManifestSchema = { + name: "test-agent", + description: "description", + }; + mockedEnvRestore = mockedEnv({ ["APP_NAME_SUFFIX"]: "test" }); + sandbox.stub(fs, "pathExists").resolves(true); + sandbox.stub(fs, "readFile").resolves(JSON.stringify(manifest) as any); + sandbox.stub(ManifestUtil, "validateManifest").resolves([]); + + const res = await copilotGptManifestUtils.validateAgainstSchema( + { id: "1", file: "file" }, + "testPath", + driverContext as any + ); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + chai.assert.lengthOf(res.value.skillValidationResult, 0); + } + }); + + it("parses standard YAML frontmatter via validation", async () => { + const manifest: any = { + name: "test-agent", + description: "description", + agent_skills: [{ folder: "./skills/mySkill" }], + }; + mockedEnvRestore = mockedEnv({ ["APP_NAME_SUFFIX"]: "test" }); + sandbox.stub(fs, "pathExists").resolves(true); + + const skillMdContent = + "---\nname: mySkill\ndescription: My great skill\nauthor: test\n---\n# Skill"; + const readFileStub = sandbox.stub(fs, "readFile"); + readFileStub.callsFake(async (p: any, _opts?: any) => { + if (typeof p === "string" && p.includes("SKILL.md")) { + return skillMdContent as any; + } + return JSON.stringify(manifest) as any; + }); + sandbox.stub(ManifestUtil, "validateManifest").resolves([]); + + const res = await copilotGptManifestUtils.validateAgainstSchema( + { id: "1", file: "file" }, + "testPath", + driverContext as any + ); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + chai.assert.lengthOf(res.value.skillValidationResult[0].validationResult, 0); + } + }); + + it("returns empty for content without frontmatter via validation", async () => { + const manifest: any = { + name: "test-agent", + description: "description", + agent_skills: [{ folder: "./skills/mySkill" }], + }; + mockedEnvRestore = mockedEnv({ ["APP_NAME_SUFFIX"]: "test" }); + sandbox.stub(fs, "pathExists").resolves(true); + + const skillMdContent = "# Just some markdown\nNo frontmatter here"; + const readFileStub = sandbox.stub(fs, "readFile"); + readFileStub.callsFake(async (p: any, _opts?: any) => { + if (typeof p === "string" && p.includes("SKILL.md")) { + return skillMdContent as any; + } + return JSON.stringify(manifest) as any; + }); + sandbox.stub(ManifestUtil, "validateManifest").resolves([]); + + const res = await copilotGptManifestUtils.validateAgainstSchema( + { id: "1", file: "file" }, + "testPath", + driverContext as any + ); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + // Both name and description should be missing + chai.assert.lengthOf(res.value.skillValidationResult[0].validationResult, 2); + chai.assert.isTrue( + res.value.skillValidationResult[0].validationResult.some((r) => + r.includes("missing required field 'name'") + ) + ); + chai.assert.isTrue( + res.value.skillValidationResult[0].validationResult.some((r) => + r.includes("missing required field 'description'") + ) + ); + } + }); + + it("returns empty for malformed frontmatter via validation", async () => { + const manifest: any = { + name: "test-agent", + description: "description", + agent_skills: [{ folder: "./skills/mySkill" }], + }; + mockedEnvRestore = mockedEnv({ ["APP_NAME_SUFFIX"]: "test" }); + sandbox.stub(fs, "pathExists").resolves(true); + + // Frontmatter with opening --- but no closing --- + const skillMdContent = "---\nname: mySkill\ndescription: test\n# No closing delimiter"; + const readFileStub = sandbox.stub(fs, "readFile"); + readFileStub.callsFake(async (p: any, _opts?: any) => { + if (typeof p === "string" && p.includes("SKILL.md")) { + return skillMdContent as any; + } + return JSON.stringify(manifest) as any; + }); + sandbox.stub(ManifestUtil, "validateManifest").resolves([]); + + const res = await copilotGptManifestUtils.validateAgainstSchema( + { id: "1", file: "file" }, + "testPath", + driverContext as any + ); + + chai.assert.isTrue(res.isOk()); + if (res.isOk()) { + // Malformed frontmatter -> both fields missing + chai.assert.lengthOf(res.value.skillValidationResult[0].validationResult, 2); + } + }); + }); }); diff --git a/packages/fx-core/tests/component/driver/teamsApp/createAppPackage.test.ts b/packages/fx-core/tests/component/driver/teamsApp/createAppPackage.test.ts index 5c3e92447d5..d92df4601d7 100644 --- a/packages/fx-core/tests/component/driver/teamsApp/createAppPackage.test.ts +++ b/packages/fx-core/tests/component/driver/teamsApp/createAppPackage.test.ts @@ -27,7 +27,7 @@ import * as utils from "../../../../src/component/driver/util/utils"; import * as envFunctionUtils from "../../../../src/component/utils/envFunctionUtils"; import { ManifestType } from "../../../../src/component/utils/envFunctionUtils"; import { FileNotFoundError, JSONSyntaxError } from "../../../../src/error/common"; -import { InvalidFileOutsideOfTheDirectotryError } from "../../../../src/error/teamsApp"; +import { InvalidFileOutsideOfTheDirectotryError, AppPackageSizeExceededError } from "../../../../src/error/teamsApp"; import { MockedM365Provider } from "../../../core/utils"; import { MockedLogProvider, MockedUserInteraction } from "../../../plugins/solution/util"; @@ -2275,4 +2275,282 @@ describe("teamsApp/createAppPackage", async () => { } }); }); + + describe("agent skills bundling", async () => { + const skillArgs: CreateAppPackageArgs = { + manifestPath: + "./tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/v3.manifest.template.json", + outputZipPath: + "./tests/plugins/resource/appstudio/resources-multi-env/build/appPackage/appPackage.skills.zip", + outputJsonPath: + "./tests/plugins/resource/appstudio/resources-multi-env/build/appPackage/manifest.skills.json", + }; + + function createTeamsManifest(): TeamsManifestV1D19.TeamsManifestV1D19 { + const manifest = { + manifestVersion: "1.19", + } as TeamsManifestV1D19.TeamsManifestV1D19; + manifest.copilotAgents = { + declarativeAgents: [{ file: "resources/declarativeAgent.json", id: "1" }], + }; + manifest.icons = { + color: "resources/color.png", + outline: "resources/outline.png", + }; + return manifest; + } + + it("should bundle skill directories when agent_skills is present", async () => { + const manifest = createTeamsManifest(); + const declarativeAgentManifest = { + name: "TestAgent", + description: "Test agent with skills", + actions: [], + agent_skills: [{ folder: "skills/skill1" }], + } as any; + + sinon.stub(manifestUtils, "getManifestV3").resolves(ok(manifest)); + sinon.stub(fs, "chmod").callsFake(async () => {}); + sinon.stub(fs, "writeFile").callsFake(async () => {}); + sinon.stub(copilotGptManifestUtils, "getManifest").resolves(ok(declarativeAgentManifest)); + sinon.stub(fs, "pathExists").resolves(true); + + const result = (await teamsAppDriver.execute(skillArgs, mockedDriverContext)).result; + chai.assert.isTrue(result.isOk()); + + if (await fs.pathExists(skillArgs.outputZipPath)) { + const zip = new AdmZip(skillArgs.outputZipPath); + const skillMdEntry = zip.getEntry("skills/skill1/SKILL.md"); + chai.assert.exists(skillMdEntry, "SKILL.md should be bundled in zip"); + const handlerEntry = zip.getEntry("skills/skill1/handler.js"); + chai.assert.exists(handlerEntry, "handler.js should be bundled in zip"); + await fs.remove(skillArgs.outputZipPath); + } + }); + + it("should return error when skill folder does not exist", async () => { + const manifest = createTeamsManifest(); + const declarativeAgentManifest = { + name: "TestAgent", + description: "Test agent with skills", + actions: [], + agent_skills: [{ folder: "skills/nonexistent" }], + } as any; + + sinon.stub(manifestUtils, "getManifestV3").resolves(ok(manifest)); + sinon.stub(fs, "chmod").callsFake(async () => {}); + sinon.stub(fs, "writeFile").callsFake(async () => {}); + sinon.stub(copilotGptManifestUtils, "getManifest").resolves(ok(declarativeAgentManifest)); + sinon.stub(fs, "pathExists").callsFake(async (filePath) => { + if (filePath.toString().includes("nonexistent")) { + return false; + } + return true; + }); + + const result = (await teamsAppDriver.execute(skillArgs, mockedDriverContext)).result; + chai.assert.isTrue(result.isErr()); + if (result.isErr()) { + chai.assert.isTrue(result.error instanceof FileNotFoundError); + } + }); + + it("should return error when SKILL.md is missing in skill folder", async () => { + const manifest = createTeamsManifest(); + const declarativeAgentManifest = { + name: "TestAgent", + description: "Test agent with skills", + actions: [], + agent_skills: [{ folder: "skills/skill1" }], + } as any; + + sinon.stub(manifestUtils, "getManifestV3").resolves(ok(manifest)); + sinon.stub(fs, "chmod").callsFake(async () => {}); + sinon.stub(fs, "writeFile").callsFake(async () => {}); + sinon.stub(copilotGptManifestUtils, "getManifest").resolves(ok(declarativeAgentManifest)); + sinon.stub(fs, "pathExists").callsFake(async (filePath) => { + if (filePath.toString().includes("SKILL.md")) { + return false; + } + return true; + }); + + const result = (await teamsAppDriver.execute(skillArgs, mockedDriverContext)).result; + chai.assert.isTrue(result.isErr()); + if (result.isErr()) { + chai.assert.isTrue(result.error instanceof FileNotFoundError); + chai.assert.include(result.error.message, "SKILL.md"); + } + }); + + it("should return error when skill path escapes appPackage boundary", async () => { + const manifest = createTeamsManifest(); + const declarativeAgentManifest = { + name: "TestAgent", + description: "Test agent with skills", + actions: [], + agent_skills: [{ folder: "../../../outside" }], + } as any; + + sinon.stub(manifestUtils, "getManifestV3").resolves(ok(manifest)); + sinon.stub(fs, "chmod").callsFake(async () => {}); + sinon.stub(fs, "writeFile").callsFake(async () => {}); + sinon.stub(copilotGptManifestUtils, "getManifest").resolves(ok(declarativeAgentManifest)); + sinon.stub(fs, "pathExists").resolves(true); + + const result = (await teamsAppDriver.execute(skillArgs, mockedDriverContext)).result; + chai.assert.isTrue(result.isErr()); + if (result.isErr()) { + chai.assert.isTrue(result.error instanceof InvalidFileOutsideOfTheDirectotryError); + } + }); + + it("should succeed with empty agent_skills array (no-op)", async () => { + const manifest = createTeamsManifest(); + const declarativeAgentManifest = { + name: "TestAgent", + description: "Test agent with no skills", + actions: [], + agent_skills: [], + } as any; + + sinon.stub(manifestUtils, "getManifestV3").resolves(ok(manifest)); + sinon.stub(fs, "chmod").callsFake(async () => {}); + sinon.stub(fs, "writeFile").callsFake(async () => {}); + sinon.stub(copilotGptManifestUtils, "getManifest").resolves(ok(declarativeAgentManifest)); + sinon.stub(fs, "pathExists").resolves(true); + + const result = (await teamsAppDriver.execute(skillArgs, mockedDriverContext)).result; + chai.assert.isTrue(result.isOk()); + + if (await fs.pathExists(skillArgs.outputZipPath)) { + const zip = new AdmZip(skillArgs.outputZipPath); + const entries = zip.getEntries().map((e) => e.entryName); + const skillEntries = entries.filter((name) => name.includes("skills/")); + chai.assert.isEmpty(skillEntries, "No skill entries should be in the zip"); + await fs.remove(skillArgs.outputZipPath); + } + }); + + it("should bundle multiple skills alongside actions and embedded knowledge", async () => { + const manifest = createTeamsManifest(); + const declarativeAgentManifest = { + name: "TestAgent", + description: "Test agent with skills, actions, and knowledge", + actions: [{ id: "action_1", file: "ai-plugin.json" }], + capabilities: [ + { + name: "EmbeddedKnowledge", + files: [{ file: "EmbeddedKnowledge/knowledge.docx" }], + }, + ], + agent_skills: [{ folder: "skills/skill1" }, { folder: "skills/skill2" }], + } as any; + + sinon.stub(manifestUtils, "getManifestV3").resolves(ok(manifest)); + sinon.stub(fs, "chmod").callsFake(async () => {}); + sinon.stub(fs, "writeFile").callsFake(async () => {}); + sinon.stub(copilotGptManifestUtils, "getManifest").resolves(ok(declarativeAgentManifest)); + sinon.stub(fs, "pathExists").resolves(true); + + const result = (await teamsAppDriver.execute(skillArgs, mockedDriverContext)).result; + chai.assert.isTrue(result.isOk()); + + if (await fs.pathExists(skillArgs.outputZipPath)) { + const zip = new AdmZip(skillArgs.outputZipPath); + const entries = zip.getEntries().map((e) => e.entryName); + + // Verify skill1 files + chai.assert.isTrue( + entries.some((e) => e.includes("skills/skill1/SKILL.md")), + "skill1 SKILL.md should be in zip" + ); + // Verify skill2 files + chai.assert.isTrue( + entries.some((e) => e.includes("skills/skill2/SKILL.md")), + "skill2 SKILL.md should be in zip" + ); + // Verify actions are also bundled + chai.assert.isTrue( + entries.some((e) => e.endsWith("ai-plugin.json")), + "ai-plugin.json should be in zip" + ); + // Verify embedded knowledge is also bundled + chai.assert.isTrue( + entries.some((e) => e.includes("EmbeddedKnowledge/knowledge.docx")), + "Embedded knowledge should be in zip" + ); + await fs.remove(skillArgs.outputZipPath); + } + }); + }); + + describe("package size limit", () => { + it("should fail when zip exceeds 10 MB", async () => { + const manifest = { + manifestVersion: "1.16", + icons: { + color: "resources/color.png", + outline: "resources/outline.png", + }, + } as TeamsManifest; + sinon.stub(manifestUtils, "getManifestV3").resolves(ok(manifest)); + sinon.stub(fs, "chmod").callsFake(async () => {}); + sinon.stub(fs, "existsSync").returns(false); + sinon.stub(fs, "pathExists").resolves(true); + sinon.stub(utils, "updateVersionForTeamsAppYamlFile").resolves(); + sinon.stub(fs, "writeFile").callsFake(async () => {}); + // Stub fs.stat to return a large file size + sinon.stub(fs, "stat").resolves({ size: 20 * 1024 * 1024, mode: 0o644 } as any); + + const args: CreateAppPackageArgs = { + manifestPath: + "./tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/v3.manifest.template.json", + outputZipPath: + "./tests/plugins/resource/appstudio/resources-multi-env/build/appPackage/appPackage.dev.zip", + outputFolder: "./tests/plugins/resource/appstudio/resources-multi-env/build/appPackage", + }; + + const result = (await teamsAppDriver.execute(args, mockedDriverContext)).result; + chai.assert(result.isErr()); + if (result.isErr()) { + chai.assert.isTrue(result.error instanceof AppPackageSizeExceededError); + chai.assert.include(result.error.message, "exceeds the maximum allowed size"); + } + await fs.remove(args.outputZipPath); + }); + + it("should succeed when zip is within 10 MB", async () => { + const manifest = { + manifestVersion: "1.16", + icons: { + color: "resources/color.png", + outline: "resources/outline.png", + }, + } as TeamsManifest; + sinon.stub(manifestUtils, "getManifestV3").resolves(ok(manifest)); + sinon.stub(fs, "chmod").callsFake(async () => {}); + sinon.stub(fs, "existsSync").returns(false); + sinon.stub(fs, "pathExists").resolves(true); + sinon.stub(utils, "updateVersionForTeamsAppYamlFile").resolves(); + sinon.stub(fs, "writeFile").callsFake(async () => {}); + // Stub fs.stat to return a small file size + sinon.stub(fs, "stat").resolves({ size: 1024 * 1024, mode: 0o644 } as any); + + const args: CreateAppPackageArgs = { + manifestPath: + "./tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/v3.manifest.template.json", + outputZipPath: + "./tests/plugins/resource/appstudio/resources-multi-env/build/appPackage/appPackage.dev.zip", + outputFolder: "./tests/plugins/resource/appstudio/resources-multi-env/build/appPackage", + }; + + const result = (await teamsAppDriver.execute(args, mockedDriverContext)).result; + if (result.isErr()) { + console.log(result.error); + } + chai.assert.isTrue(result.isOk()); + await fs.remove(args.outputZipPath); + }); + }); }); diff --git a/packages/fx-core/tests/component/driver/teamsApp/validate.test.ts b/packages/fx-core/tests/component/driver/teamsApp/validate.test.ts index a6a1ed2491a..93aa24ccfe9 100644 --- a/packages/fx-core/tests/component/driver/teamsApp/validate.test.ts +++ b/packages/fx-core/tests/component/driver/teamsApp/validate.test.ts @@ -467,6 +467,7 @@ describe("teamsApp/validateManifest", async () => { validationResult: ["error3"], }, ], + skillValidationResult: [], }) ); sinon.stub(copilotGptManifestUtils, "logValidationErrors").returns("errorMessage2"); @@ -525,6 +526,7 @@ describe("teamsApp/validateManifest", async () => { validationResult: ["error3"], }, ], + skillValidationResult: [], }) ); sinon.stub(copilotGptManifestUtils, "logValidationErrors").returns("errorMessage2"); @@ -583,6 +585,66 @@ describe("teamsApp/validateManifest", async () => { validationResult: ["error3"], }, ], + skillValidationResult: [], + }) + ); + sinon.stub(copilotGptManifestUtils, "logValidationErrors").returns("errorMessage2"); + + const args: ValidateManifestArgs = { + manifestPath: + "./tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/v3.manifest.template.json", + showMessage: true, + }; + + mockedDriverContext.platform = Platform.VSCode; + mockedDriverContext.projectPath = "test"; + + const result = (await teamsAppDriver.execute(args, mockedDriverContext)).result; + chai.assert(result.isErr()); + if (result.isErr()) { + chai.assert.equal(result.error.name, AppStudioError.ValidationFailedError.name); + } + }); + + it("validate with skill errors returned - copilot agent", async () => { + const teamsManifest = { + $schema: + "https://developer.microsoft.com/en-us/json-schemas/teams/v1.19/MicrosoftTeams.schema.json", + manifestVersion: "1.19", + } as TeamsManifestV1D19.TeamsManifestV1D19; + teamsManifest.copilotAgents = { + declarativeAgents: [ + { + id: "fakeId", + file: "fakeFile", + }, + ], + }; + + sinon.stub(manifestUtils, "getManifestV3").resolves(ok(teamsManifest)); + sinon.stub(ManifestUtil, "validateManifest").resolves([]); + sinon.stub(pluginManifestUtils, "validateAgainstSchema").resolves( + ok({ + id: "fakeId", + filePath: "fakeFile", + validationResult: ["error1"], + }) + ); + sinon.stub(pluginManifestUtils, "logValidationErrors").returns("errorMessage1"); + + sinon.stub(copilotGptManifestUtils, "validateAgainstSchema").resolves( + ok({ + id: "fakeId", + filePath: "fakeFile", + validationResult: [], + actionValidationResult: [], + skillValidationResult: [ + { + folder: "skills/my-skill", + filePath: "skills/my-skill/SKILL.md", + validationResult: ["skill-error1", "skill-error2"], + }, + ], }) ); sinon.stub(copilotGptManifestUtils, "logValidationErrors").returns("errorMessage2"); @@ -633,6 +695,7 @@ describe("teamsApp/validateManifest", async () => { validationResult: ["error3"], }, ], + skillValidationResult: [], }) ); sinon.stub(copilotGptManifestUtils, "logValidationErrors").returns("errorMessage2"); diff --git a/packages/fx-core/tests/component/m365/packageService.test.ts b/packages/fx-core/tests/component/m365/packageService.test.ts index 206454127d5..b426c061719 100644 --- a/packages/fx-core/tests/component/m365/packageService.test.ts +++ b/packages/fx-core/tests/component/m365/packageService.test.ts @@ -80,6 +80,7 @@ describe("Package Service", () => { sandbox.stub(fs, "readFile").callsFake((file) => { return Promise.resolve(Buffer.from("test")); }); + sandbox.stub(fs, "statSync").returns({ size: 1024 } as any); sandbox.stub(axios, "create").returns(testAxiosInstance); setTools({} as any); @@ -2087,4 +2088,38 @@ describe("Package Service", () => { chai.assert.equal(result, "https://test-url"); chai.assert.equal(callCount, 2); }); + + it("sideLoading should throw when package exceeds 10 MB", async () => { + (fs.statSync as any).restore(); + sandbox.stub(fs, "statSync").returns({ size: 15 * 1024 * 1024 } as any); + + const packageService = new PackageService("https://test-endpoint", logger); + let actualError: Error | undefined; + try { + await packageService.sideLoading("test-token", "test-path"); + } catch (error: any) { + actualError = error; + } + + chai.assert.isDefined(actualError); + chai.assert.instanceOf(actualError, UserError); + chai.assert.equal((actualError as UserError).name, "AppPackageSizeExceeded"); + }); + + it("sideLoadXmlManifest should throw when package exceeds 10 MB", async () => { + (fs.statSync as any).restore(); + sandbox.stub(fs, "statSync").returns({ size: 15 * 1024 * 1024 } as any); + + const packageService = new PackageService("https://test-endpoint", logger); + let actualError: Error | undefined; + try { + await packageService.sideLoadXmlManifest("test-token", "test-path"); + } catch (error: any) { + actualError = error; + } + + chai.assert.isDefined(actualError); + chai.assert.instanceOf(actualError, UserError); + chai.assert.equal((actualError as UserError).name, "AppPackageSizeExceeded"); + }); }); diff --git a/packages/fx-core/tests/core/FxCore.addSkill.test.ts b/packages/fx-core/tests/core/FxCore.addSkill.test.ts new file mode 100644 index 00000000000..38a91118db7 --- /dev/null +++ b/packages/fx-core/tests/core/FxCore.addSkill.test.ts @@ -0,0 +1,895 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { + DeclarativeCopilotManifestSchema, + Inputs, + Platform, + TeamsAppManifest, + UserError, + err, + ok, +} from "@microsoft/teamsfx-api"; +import { assert } from "chai"; +import fs from "fs-extra"; +import "mocha"; +import * as path from "path"; +import sinon from "sinon"; +import { FxCore } from "../../src/core/FxCore"; +import { setTools, TOOLS } from "../../src/common/globalVars"; +import { copilotGptManifestUtils } from "../../src/component/driver/teamsApp/utils/CopilotGptManifestUtils"; +import { manifestUtils } from "../../src/component/driver/teamsApp/utils/ManifestUtils"; +import { UserCancelError } from "../../src/error/common"; +import { QuestionNames } from "../../src/question/questionNames"; +import { validationUtils } from "../../src/ui/validationUtils"; +import { MockTools, MockUserInteraction } from "./utils"; + +const tools = new MockTools(); + +describe("addSkill", () => { + const sandbox = sinon.createSandbox(); + + beforeEach(() => { + setTools(tools); + sandbox.stub(validationUtils, "validateInputs").resolves(undefined); + }); + + afterEach(() => { + sandbox.restore(); + }); + + function createManifestWithDA(): TeamsAppManifest { + const manifest = new TeamsAppManifest(); + manifest.copilotAgents = { + declarativeAgents: [ + { + id: "agent_1", + file: "declarativeAgent.json", + }, + ], + }; + return manifest; + } + + function createBaseInputs(overrides?: Partial): Inputs { + return { + platform: Platform.VSCode, + projectPath: path.resolve("test-project"), + [QuestionNames.ManifestPath]: path.resolve("test-project", "appPackage", "manifest.json"), + [QuestionNames.SkillName]: "mySkill", + [QuestionNames.SkillDescription]: "A test skill", + ignoreLockByUT: true, + ...overrides, + }; + } + + it("successfully creates a new skill directory with SKILL.md", async () => { + const inputs = createBaseInputs(); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve("test-project", "appPackage", "declarativeAgent.json"))); + + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + + const ensureDirStub = sandbox.stub(fs, "ensureDir").resolves(); + const writeFileStub = sandbox.stub(fs, "writeFile").resolves(); + + sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isOk()); + assert.isTrue(ensureDirStub.calledOnce); + assert.isTrue(writeFileStub.calledOnce); + + // Verify SKILL.md content + const writtenContent = writeFileStub.firstCall.args[1] as string; + assert.include(writtenContent, "name: mySkill"); + assert.include(writtenContent, "description: A test skill"); + assert.include(writtenContent, "---"); + }); + + it("successfully adds an existing skill from within appPackage", async () => { + const appPackageFolder = path.resolve("test-project", "appPackage"); + const inputs = createBaseInputs({ + [QuestionNames.SkillFrom]: "skills/existingSkill", + }); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + sandbox.stub(fs, "pathExists").resolves(true); + sandbox + .stub(fs, "readFile") + .resolves("---\nname: existingSkill\ndescription: A skill\n---\n# existingSkill\n" as any); + + const addSkillStub = sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isOk()); + assert.isTrue(addSkillStub.calledOnce); + }); + + it("existing skill: errors when folder name has invalid characters", async () => { + const appPackageFolder = path.resolve("test-project", "appPackage"); + const inputs = createBaseInputs({ + [QuestionNames.SkillFrom]: "skills/my.skill", + }); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "InvalidSkillFolderName"); + } + }); + + it("existing skill: errors when SKILL.md name doesn't match folder name", async () => { + const appPackageFolder = path.resolve("test-project", "appPackage"); + const inputs = createBaseInputs({ + [QuestionNames.SkillFrom]: "skills/mySkill", + }); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + sandbox.stub(fs, "pathExists").resolves(true); + sandbox + .stub(fs, "readFile") + .resolves("---\nname: differentName\ndescription: A skill\n---\n" as any); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "SkillNameMismatch"); + } + }); + + it("updates DA manifest with agent_skills entry", async () => { + const inputs = createBaseInputs(); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve("test-project", "appPackage", "declarativeAgent.json"))); + + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + sandbox.stub(fs, "ensureDir").resolves(); + sandbox.stub(fs, "writeFile").resolves(); + + const addSkillStub = sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isOk()); + assert.isTrue(addSkillStub.calledOnce); + // Verify the folder argument passed to addSkill + const folderArg = addSkillStub.firstCall.args[1] as string; + assert.include(folderArg, "skills/mySkill"); + }); + + it("errors when project has no DA manifest", async () => { + const inputs = createBaseInputs(); + const manifest = new TeamsAppManifest(); + // No copilotAgents/declarativeAgents set + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + }); + + it("existing skill: errors when SKILL.md doesn't exist", async () => { + const appPackageFolder = path.resolve("test-project", "appPackage"); + const inputs = createBaseInputs({ + [QuestionNames.SkillFrom]: "skills/noSkillMd", + }); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + + // SKILL.md does not exist + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + sandbox.stub(fs, "pathExists").resolves(false); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "SkillMdNotFound"); + } + }); + + it("errors when reading manifest fails", async () => { + const inputs = createBaseInputs(); + + sandbox + .stub(manifestUtils, "_readAppManifest") + .resolves(err(new UserError("test", "ManifestReadError", "Failed to read"))); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + }); + + it("errors when getManifestPath fails", async () => { + const inputs = createBaseInputs(); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(err(new UserError("test", "PathError", "Cannot get path"))); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + }); + + it("errors when copilotGptManifestUtils.addSkill fails", async () => { + const inputs = createBaseInputs(); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve("test-project", "appPackage", "declarativeAgent.json"))); + + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + sandbox.stub(fs, "ensureDir").resolves(); + sandbox.stub(fs, "writeFile").resolves(); + + sandbox + .stub(copilotGptManifestUtils, "addSkill") + .resolves(err(new UserError("test", "AddSkillError", "Failed to add"))); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + }); + + it("shows success message for CLI platform", async () => { + const inputs = createBaseInputs({ platform: Platform.CLI }); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve("test-project", "appPackage", "declarativeAgent.json"))); + + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + sandbox.stub(fs, "ensureDir").resolves(); + sandbox.stub(fs, "writeFile").resolves(); + + sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isOk()); + }); + + it("errors when user cancels confirmation", async () => { + const inputs = createBaseInputs(); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve("test-project", "appPackage", "declarativeAgent.json"))); + + // User dismisses the confirm dialog (returns undefined) + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok(undefined)); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "UserCancel"); + } + }); + + it("works with copilotExtensions manifest format", async () => { + const inputs = createBaseInputs(); + const manifest = new TeamsAppManifest(); + manifest.copilotExtensions = { + declarativeCopilots: [ + { + id: "agent_1", + file: "declarativeAgent.json", + }, + ], + }; + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve("test-project", "appPackage", "declarativeAgent.json"))); + + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + sandbox.stub(fs, "ensureDir").resolves(); + sandbox.stub(fs, "writeFile").resolves(); + + sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isOk()); + }); + + it("existing skill: errors when skill is outside appPackage", async () => { + const appPackageFolder = path.resolve("test-project", "appPackage"); + const inputs = createBaseInputs({ + [QuestionNames.SkillFrom]: "../../outside-folder", + }); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "SkillOutsideAppPackage"); + } + }); + + it("existing skill: succeeds when SKILL.md has no name frontmatter", async () => { + const appPackageFolder = path.resolve("test-project", "appPackage"); + const inputs = createBaseInputs({ + [QuestionNames.SkillFrom]: "skills/mySkill", + }); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + sandbox.stub(fs, "pathExists").resolves(true); + // SKILL.md without name in frontmatter + sandbox.stub(fs, "readFile").resolves("# Just a markdown file\nNo frontmatter here.\n" as any); + + const addSkillStub = sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isOk()); + assert.isTrue(addSkillStub.calledOnce); + }); + + it("errors when showMessage returns error", async () => { + const inputs = createBaseInputs(); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve("test-project", "appPackage", "declarativeAgent.json"))); + + sandbox + .stub(MockUserInteraction.prototype, "showMessage") + .resolves(err(new UserError("test", "ShowMessageError", "Dialog error"))); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "ShowMessageError"); + } + }); + + it("errors when DA has copilotAgents but no file property", async () => { + const inputs = createBaseInputs(); + const manifest = new TeamsAppManifest(); + manifest.copilotAgents = { + declarativeAgents: [ + { + id: "agent_1", + file: "", + }, + ], + }; + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + }); + + it("VSCode: opens agent manifest when user clicks View button", async () => { + const inputs = createBaseInputs(); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve("test-project", "appPackage", "declarativeAgent.json"))); + + // First call: confirmation dialog returns "Add" + // Second call: success message returns "View agent manifest" button + const showMessageStub = sandbox.stub(MockUserInteraction.prototype, "showMessage"); + showMessageStub.onFirstCall().resolves(ok("Add")); + showMessageStub.onSecondCall().resolves(ok("View agent manifest")); + + sandbox.stub(fs, "ensureDir").resolves(); + sandbox.stub(fs, "writeFile").resolves(); + + sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const openFileStub = sandbox.stub(tools.ui, "openFile").resolves(ok(true)); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isOk()); + // Wait for fire-and-forget .then() to resolve + await new Promise((resolve) => setTimeout(resolve, 10)); + assert.isTrue(openFileStub.calledOnce); + }); + + it("CLI platform: shows success message without View button", async () => { + const inputs = createBaseInputs({ platform: Platform.CLI }); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve("test-project", "appPackage", "declarativeAgent.json"))); + + const showMessageStub = sandbox.stub(MockUserInteraction.prototype, "showMessage"); + showMessageStub.onFirstCall().resolves(ok("Add")); + showMessageStub.onSecondCall().resolves(ok(undefined)); + + sandbox.stub(fs, "ensureDir").resolves(); + sandbox.stub(fs, "writeFile").resolves(); + + sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isOk()); + // Second showMessage should be "info" for CLI, no "View agent manifest" button + assert.isTrue(showMessageStub.secondCall.args[0] === "info"); + }); + + describe("zip import", () => { + let AdmZipModule: typeof import("adm-zip"); + + before(async () => { + AdmZipModule = (await import("adm-zip")).default; + }); + + function createZipWithSingleFolder( + folderName: string, + skillMdContent: string, + extraFiles?: { name: string; content: string }[] + ): Buffer { + const AdmZip = require("adm-zip"); + const zip = new AdmZip(); + zip.addFile(`${folderName}/SKILL.md`, Buffer.from(skillMdContent, "utf-8")); + if (extraFiles) { + for (const f of extraFiles) { + zip.addFile(`${folderName}/${f.name}`, Buffer.from(f.content, "utf-8")); + } + } + return zip.toBuffer(); + } + + function createZipWithRootFiles( + skillMdContent: string, + extraFiles?: { name: string; content: string }[] + ): Buffer { + const AdmZip = require("adm-zip"); + const zip = new AdmZip(); + zip.addFile("SKILL.md", Buffer.from(skillMdContent, "utf-8")); + if (extraFiles) { + for (const f of extraFiles) { + zip.addFile(f.name, Buffer.from(f.content, "utf-8")); + } + } + return zip.toBuffer(); + } + + function createZipInputs(zipPath: string): Inputs { + return createBaseInputs({ + [QuestionNames.SkillFrom]: zipPath, + }); + } + + it("successfully imports skill from single-folder zip via --from", async () => { + const skillMd = + "---\nname: myImportedSkill\ndescription: An imported skill\n---\n# myImportedSkill\n"; + const zipBuffer = createZipWithSingleFolder("myImportedSkill", skillMd); + const zipPath = path.resolve("test-skill.zip"); + const appPackageFolder = path.resolve("test-project", "appPackage"); + + const inputs = createZipInputs(zipPath); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + + // Mock fs operations for zip import + const pathExistsStub = sandbox.stub(fs, "pathExists"); + pathExistsStub.withArgs(zipPath).resolves(true); + pathExistsStub + .withArgs(path.join(appPackageFolder, "skills", "myImportedSkill")) + .resolves(false); + pathExistsStub.callsFake(async (p: string) => { + if (p === zipPath) return true; + if (p.includes("myImportedSkill") && p.includes("skills")) return false; + if (p.includes("SKILL.md")) return true; + return false; + }); + + // Stub AdmZip constructor + const AdmZip = require("adm-zip"); + const fakeZip = new AdmZip(zipBuffer); + sandbox + .stub(FxCore.prototype as any, "importSkillFromZip") + .callsFake(async function (this: any, ...args: unknown[]) { + // Return a successful result mimicking the zip import + return ok("skills/myImportedSkill"); + }); + + sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isOk()); + }); + + it("successfully imports skill from zip via skill-from-zip-file input", async () => { + const zipPath = path.resolve("test-skill.zip"); + const appPackageFolder = path.resolve("test-project", "appPackage"); + + const inputs = createBaseInputs({ + [QuestionNames.SkillFromZipFile]: zipPath, + }); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + + sandbox.stub(FxCore.prototype as any, "importSkillFromZip").callsFake(async function () { + return ok("skills/myImportedSkill"); + }); + + sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isOk()); + }); + + it("errors when zip file does not exist", async () => { + const zipPath = path.resolve("nonexistent.zip"); + const appPackageFolder = path.resolve("test-project", "appPackage"); + + const inputs = createZipInputs(zipPath); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + sandbox.stub(fs, "pathExists").resolves(false); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "ZipFileNotFound"); + } + }); + + it("errors when zip contains path traversal entries", async () => { + const AdmZip = require("adm-zip"); + + // AdmZip normalizes "../" away during addFile, so we binary-patch the zip + // to inject a real traversal entry that survives round-tripping. + const traversalPath = "../../../etc/passwd"; // 19 chars + const placeholder = "AAAAAAAAAAAAAAAAAAA"; // 19 chars (same length) + + const zip = new AdmZip(); + zip.addFile(placeholder, Buffer.from("malicious", "utf-8")); + const buf = zip.toBuffer(); + + // Patch all occurrences of the placeholder with the traversal path + const patched = Buffer.from(buf); + let idx: number; + while ((idx = patched.indexOf(placeholder)) !== -1) { + patched.write(traversalPath, idx, "utf-8"); + } + + const tempZipPath = path.join(require("os").tmpdir(), `test-traversal-${Date.now()}.zip`); + await fs.writeFile(tempZipPath, patched); + + const appPackageFolder = path.resolve("test-project", "appPackage"); + const traversalInputs = createZipInputs(tempZipPath); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + + const core = new FxCore(tools); + const result = await core.addSkill(traversalInputs); + + // Clean up + await fs.remove(tempZipPath).catch(() => {}); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "ZipInvalidEntries"); + } + }); + + it("errors when zip has no SKILL.md (root-level layout)", async () => { + const AdmZip = require("adm-zip"); + const zip = new AdmZip(); + zip.addFile("readme.txt", Buffer.from("no skill md here", "utf-8")); + const zipBuffer = zip.toBuffer(); + + const tempZipPath = path.join(require("os").tmpdir(), `test-noskillmd-${Date.now()}.zip`); + zip.writeZip(tempZipPath); + + const inputs = createZipInputs(tempZipPath); + const manifest = createManifestWithDA(); + const appPackageFolder = path.resolve("test-project", "appPackage"); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + await fs.remove(tempZipPath).catch(() => {}); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "ZipNoSkillMd"); + } + }); + + it("errors when target skill folder already exists", async () => { + const skillMd = "---\nname: existingSkill\ndescription: A skill\n---\n# existingSkill\n"; + const AdmZip = require("adm-zip"); + const zip = new AdmZip(); + zip.addFile("existingSkill/SKILL.md", Buffer.from(skillMd, "utf-8")); + const tempZipPath = path.join(require("os").tmpdir(), `test-existing-${Date.now()}.zip`); + zip.writeZip(tempZipPath); + + const inputs = createZipInputs(tempZipPath); + const manifest = createManifestWithDA(); + const appPackageFolder = path.resolve("test-project", "appPackage"); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + + // Target folder already exists + const origPathExists = fs.pathExists; + sandbox.stub(fs, "pathExists").callsFake(async (p: string) => { + if (p === tempZipPath) return true; + if ( + p === path.join(appPackageFolder, "skills", "existingSkill") || + p.endsWith(path.join("skills", "existingSkill")) + ) { + return true; + } + return false; + }); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + await fs.remove(tempZipPath).catch(() => {}); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "SkillFolderAlreadyExists"); + } + }); + + it("successfully imports single-folder zip end-to-end", async () => { + const skillMd = "---\nname: myNewSkill\ndescription: A new skill\n---\n# myNewSkill\n"; + const AdmZip = require("adm-zip"); + const zip = new AdmZip(); + zip.addFile("myNewSkill/SKILL.md", Buffer.from(skillMd, "utf-8")); + zip.addFile("myNewSkill/extra.txt", Buffer.from("extra content", "utf-8")); + + const tempZipPath = path.join(require("os").tmpdir(), `test-e2e-${Date.now()}.zip`); + zip.writeZip(tempZipPath); + + const inputs = createZipInputs(tempZipPath); + const appPackageFolder = path.resolve("test-project", "appPackage"); + const manifest = createManifestWithDA(); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + + // Mock fs for the target side but allow temp operations + const targetSkillDir = path.join(appPackageFolder, "skills", "myNewSkill"); + + const origPathExists = fs.pathExists.bind(fs); + sandbox.stub(fs, "pathExists").callsFake(async (p: string) => { + if (p === tempZipPath) return true; + if (typeof p === "string" && p.includes("myNewSkill") && p.includes(appPackageFolder)) { + return false; + } + if (typeof p === "string" && p.includes("SKILL.md") && !p.includes(appPackageFolder)) { + return true; + } + return origPathExists(p); + }); + + const ensureDirStub = sandbox.stub(fs, "ensureDir").resolves(); + const writeFileStub = sandbox.stub(fs, "writeFile").resolves(); + const moveStub = sandbox.stub(fs, "move").resolves(); + const readFileStub = sandbox.stub(fs, "readFile").resolves(skillMd as any); + sandbox.stub(fs, "remove").resolves(); + + sandbox.stub(copilotGptManifestUtils, "addSkill").resolves( + ok({ + name: "test-agent", + description: "description", + } as DeclarativeCopilotManifestSchema) + ); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + await fs.remove(tempZipPath).catch(() => {}); + + assert.isTrue(result.isOk()); + }); + + it("errors when zip has invalid skill name format", async () => { + const skillMd = "---\nname: 123invalid\ndescription: Bad name\n---\n# 123invalid\n"; + const AdmZip = require("adm-zip"); + const zip = new AdmZip(); + zip.addFile("SKILL.md", Buffer.from(skillMd, "utf-8")); + + const tempZipPath = path.join(require("os").tmpdir(), `test-badname-${Date.now()}.zip`); + zip.writeZip(tempZipPath); + + const inputs = createZipInputs(tempZipPath); + const manifest = createManifestWithDA(); + const appPackageFolder = path.resolve("test-project", "appPackage"); + + sandbox.stub(manifestUtils, "_readAppManifest").resolves(ok(manifest)); + sandbox + .stub(copilotGptManifestUtils, "getManifestPath") + .resolves(ok(path.resolve(appPackageFolder, "declarativeAgent.json"))); + sandbox.stub(MockUserInteraction.prototype, "showMessage").resolves(ok("Add")); + + const core = new FxCore(tools); + const result = await core.addSkill(inputs); + + await fs.remove(tempZipPath).catch(() => {}); + + assert.isTrue(result.isErr()); + if (result.isErr()) { + assert.equal(result.error.name, "InvalidSkillFolderName"); + } + }); + }); +}); diff --git a/packages/fx-core/tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/skills/skill1/SKILL.md b/packages/fx-core/tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/skills/skill1/SKILL.md new file mode 100644 index 00000000000..bc80960727e --- /dev/null +++ b/packages/fx-core/tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/skills/skill1/SKILL.md @@ -0,0 +1,2 @@ +# Skill 1 +This is skill 1 description. \ No newline at end of file diff --git a/packages/fx-core/tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/skills/skill1/handler.js b/packages/fx-core/tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/skills/skill1/handler.js new file mode 100644 index 00000000000..f053ebf7976 --- /dev/null +++ b/packages/fx-core/tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/skills/skill1/handler.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/packages/fx-core/tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/skills/skill2/SKILL.md b/packages/fx-core/tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/skills/skill2/SKILL.md new file mode 100644 index 00000000000..de7b6057bbc --- /dev/null +++ b/packages/fx-core/tests/plugins/resource/appstudio/resources-multi-env/templates/appPackage/skills/skill2/SKILL.md @@ -0,0 +1,2 @@ +# Skill 2 +This is skill 2 description. \ No newline at end of file diff --git a/packages/fx-core/tests/question/other.test.ts b/packages/fx-core/tests/question/other.test.ts index aa9836f3389..cff0e86badf 100644 --- a/packages/fx-core/tests/question/other.test.ts +++ b/packages/fx-core/tests/question/other.test.ts @@ -36,6 +36,7 @@ import { oauthScopeQuestion, oauthScopeCustomQuestion, oauthTokenUrlQuestion, + addSkillQuestionNode, selectDeclarativeAgentManifestQuestion, selectTargetEnvQuestion, setSensitivityLabelNode, @@ -825,3 +826,112 @@ describe("setSensitivityLabelNode", () => { assert.isUndefined(defaultPath); }); }); + +describe("addSkillQuestionNode", () => { + const sandbox = sinon.createSandbox(); + + afterEach(() => { + sandbox.restore(); + }); + + it("should return a group node with 5 children", () => { + const node = addSkillQuestionNode(); + assert.equal(node.data.type, "group"); + assert.equal(node.children?.length, 5); + }); + + it("skillNameQuestion child should have condition checking SkillFrom", () => { + const node = addSkillQuestionNode(); + const nameChild = node.children![2]; + assert.isDefined(nameChild.condition); + const conditionFn = nameChild.condition as ConditionFunc; + // When SkillFrom is set, condition should be false (skip the question) + const inputsWithFrom: Inputs = { + platform: Platform.VSCode, + [QuestionNames.SkillFrom]: "some/path", + }; + assert.isFalse(conditionFn(inputsWithFrom)); + // When SkillFrom is not set, condition should be true + const inputsWithoutFrom: Inputs = { platform: Platform.VSCode }; + assert.isTrue(conditionFn(inputsWithoutFrom)); + }); + + it("skillNameQuestion validates invalid pattern", () => { + const node = addSkillQuestionNode(); + const nameChild = node.children![2]; + const question = nameChild.data as TextInputQuestion; + const validFunc = (question.validation as FuncValidation).validFunc; + // Invalid: starts with number + const result1 = validFunc("1abc", {} as Inputs); + assert.isDefined(result1); + // Invalid: contains spaces + const result2 = validFunc("my skill", {} as Inputs); + assert.isDefined(result2); + // Invalid: contains underscores + const result3 = validFunc("my_skill", {} as Inputs); + assert.isDefined(result3); + // Valid: starts with letter, alphanumeric + hyphens + const result4 = validFunc("my-skill", {} as Inputs); + assert.isUndefined(result4); + // Valid: single letter + const result5 = validFunc("a", {} as Inputs); + assert.isUndefined(result5); + }); + + it("skillNameQuestion validates duplicate skill directory", () => { + const node = addSkillQuestionNode(); + const nameChild = node.children![2]; + const question = nameChild.data as TextInputQuestion; + const validFunc = (question.validation as FuncValidation).validFunc; + + sandbox.stub(fs, "pathExistsSync").returns(true); + const inputs: Inputs = { + platform: Platform.VSCode, + projectPath: "/test/project", + }; + const result = validFunc("existing-skill", inputs); + assert.isDefined(result); + }); + + it("skillNameQuestion skips duplicate check without projectPath", () => { + const node = addSkillQuestionNode(); + const nameChild = node.children![2]; + const question = nameChild.data as TextInputQuestion; + const validFunc = (question.validation as FuncValidation).validFunc; + // No projectPath — should only validate pattern, not duplicates + const result = validFunc("valid-name", {} as Inputs); + assert.isUndefined(result); + }); + + it("skillNameQuestion uses custom ManifestPath when provided", () => { + const node = addSkillQuestionNode(); + const nameChild = node.children![2]; + const question = nameChild.data as TextInputQuestion; + const validFunc = (question.validation as FuncValidation).validFunc; + + const pathExistsStub = sandbox.stub(fs, "pathExistsSync").returns(false); + const inputs: Inputs = { + platform: Platform.VSCode, + projectPath: "/test/project", + [QuestionNames.ManifestPath]: "/test/project/custom/manifest.json", + }; + const result = validFunc("my-skill", inputs); + assert.isUndefined(result); + // Verify it checked the correct path using custom manifest location + assert.isTrue( + pathExistsStub.calledWith(path.join("/test/project/custom", "skills", "my-skill")) + ); + }); + + it("skillDescriptionQuestion child should have condition checking SkillFrom", () => { + const node = addSkillQuestionNode(); + const descChild = node.children![3]; + assert.isDefined(descChild.condition); + const conditionFn = descChild.condition as ConditionFunc; + const inputsWithFrom: Inputs = { + platform: Platform.VSCode, + [QuestionNames.SkillFrom]: "some/path", + }; + assert.isFalse(conditionFn(inputsWithFrom)); + }); +}); diff --git a/packages/manifest/src/declarativeCopilotManifest.ts b/packages/manifest/src/declarativeCopilotManifest.ts index a74f949ca22..e663c0f36d7 100644 --- a/packages/manifest/src/declarativeCopilotManifest.ts +++ b/packages/manifest/src/declarativeCopilotManifest.ts @@ -88,9 +88,17 @@ export interface DeclarativeCopilotManifestSchema { )[]; conversation_starters?: ConversationStarter[]; actions?: ActionObject[]; + agent_skills?: AgentSkillObject[]; [k: string]: unknown; } +/** + * @deprecated Use `AgentSkillElement` from `./generated-types` instead. + */ +export interface AgentSkillObject { + folder: string; +} + /** * @deprecated Use auto-generated types from `./generated-types` instead. */ diff --git a/packages/manifest/src/generated-types/copilot/declarative-agent/DeclarativeAgentManifestV1D7.ts b/packages/manifest/src/generated-types/copilot/declarative-agent/DeclarativeAgentManifestV1D7.ts new file mode 100644 index 00000000000..f88738cb94d --- /dev/null +++ b/packages/manifest/src/generated-types/copilot/declarative-agent/DeclarativeAgentManifestV1D7.ts @@ -0,0 +1,931 @@ +// To parse this data: +// +// import { Convert, DeclarativeAgentManifestV1D7 } from "./file"; +// +// const declarativeAgentManifestV1D7 = Convert.toDeclarativeAgentManifestV1D7(json); +// +// These functions will throw an error if the JSON doesn't +// match the expected interface, even if the JSON is valid. + +/** + * The root of the declarative agent manifest document is a JSON object that contains + * members that describe the declarative agent. + */ +export interface DeclarativeAgentManifestV1D7 { + /** + * Required. Not localizable. The version of the schema this manifest is using. + */ + version: "v1.7"; + /** + * Optional. Not localizable. + */ + id?: string; + /** + * Required. Localizable. The name of the declarative agent. It MUST contain at least one + * nonwhitespace character and MUST be 100 characters or less. + */ + name: string; + /** + * Required. Localizable. The description of the declarative agent. It MUST contain at least + * one nonwhitespace character and MUST be 1,000 characters or less. + */ + description: string; + disclaimer?: Disclaimer; + /** + * This member is an object that specifies the sensitivity label for the DA. It is an + * optional member. + */ + sensitivity_label?: SensitivityLabel; + /** + * Optional. Not localizable. The detailed instructions or guidelines on how the declarative + * agent should behave, its functions, and any behaviors to avoid. It MUST contain at least + * one nonwhitespace character and MUST be 8,000 characters or less. + */ + instructions?: string; + /** + * Optional. A JSON object that contains configuration settings that modify the behavior of + * the DA orchestration. + */ + behavior_overrides?: BehaviorOverrides; + /** + * Optional. Contains an array of objects that define capabilities of the declarative agent. + */ + capabilities?: CapabilityElement[]; + /** + * Optional. A list of examples of questions that the declarative agent can answer. There + * MUST NOT be more than twelve objects in the array. + */ + conversation_starters?: ConversationStarterElement[]; + /** + * Optional. A list of objects that identify API plugins that provide actions accessible to + * the declarative agent. + */ + actions?: ActionElement[]; + /** + * Optional. A list of objects that identify declarative agents to act as worker agents. + */ + worker_agents?: WorkerAgentElement[]; + /** + * Optional. A list of objects that allow the DA author to specify capabilities that can be + * modified by users and the allowed actions. + */ + user_overrides?: UserOverrideElement[]; + /** + * Optional. A list of objects that identify agent skill directories to bundle with the + * declarative agent. + */ + agent_skills?: AgentSkillElement[]; + [property: string]: any; +} + +/** + * Identifies an API plugin manifest for a plugin used as an action by the declarative agent. + */ +export interface ActionElement { + /** + * Required. Not localizable. A unique identifier for the action. It MAY be represented by a + * GUID. + */ + id: string; + /** + * Required. Not localizable. A path to the API plugin manifest for this action. + */ + file: string; + [property: string]: any; +} + +/** + * Identifies an agent skill directory to bundle with the declarative agent. + */ +export interface AgentSkillElement { + /** + * Required. The relative path to the skill directory containing a SKILL.md file. + */ + folder: string; + [property: string]: any; +} + +/** + * Optional. A JSON object that contains configuration settings that modify the behavior of + * the DA orchestration. + * + * A JSON object that contains configuration settings that modify the behavior of the DA + * orchestration. + */ +export interface BehaviorOverrides { + /** + * An object that contains special instructions for the declarative agent. + */ + special_instructions?: SpecialInstructions; + /** + * An object that contains suggestions for behavior overrides for the declarative agent. + */ + suggestions?: Suggestions; + [property: string]: any; +} + +/** + * An object that contains special instructions for the declarative agent. + * + * A JSON object that contains members used for injecting special instructions into the + * prompt. The object has a discourage_model_knowledge boolean property. If this property is + * set to true, the DA will be discouraged from using model knowledge when generating + * responses. The default value is false + */ +export interface SpecialInstructions { + /** + * A boolean value that indicates whether the declarative agent should be discouraged from + * using model knowledge when generating responses. + */ + discourage_model_knowledge?: boolean; + [property: string]: any; +} + +/** + * An object that contains suggestions for behavior overrides for the declarative agent. + * + * A JSON object that contains configuration settings for the suggestions feature. The + * object has a required disabled boolean property. If this property is set to true, the + * suggestions feature will be disabled. The default value is false. + */ +export interface Suggestions { + /** + * A boolean value that indicates whether the suggestions feature is disabled. If this + * property is set to true, the suggestions feature will be disabled. The default value is + * false. + */ + disabled?: boolean; + [property: string]: any; +} + +/** + * Represents a base capability object. + * + * Indicates that the declarative agent can search the web for grounding information. + * + * Indicates that the declarative agent can search a user's SharePoint and OneDrive for + * grounding information. + * + * Indicates that the declarative agent can search selected Microsoft Graph connectors for + * grounding information. + * + * Indicates that the declarative agent can generate and execute code. + * + * Indicates that the declarative agent can images and art based on the text input from the + * user. + * + * Indicates that the declarative agent can search through Teams channels, teams, meetings, + * 1:1 chats and group chats. + * + * A JSON object whose presence indicates that the DA will be able to search within Email + * Messages in the mailboxes user has access to. + * + * Indicates that the DA will be able to search people data in the organization. + * + * A JSON object whose presence indicates that the DA will be using tenant/task specific + * models. + * + * Indicates that the DA can search through meetings. + * + * A JSON object whose presence indicates that the DA will be able to use files locally in + * the app package as knowledge. + */ +export interface CapabilityElement { + /** + * Required. The name of the capability. Allowed values are WebSearch, CodeInterpreter, + * OneDriveAndSharePoint, GraphConnectors, TeamsMessages, Dataverse, Email, ScenarioModels, + * People, GraphicArt, Meetings and EmbeddedKnowledge. + * + * Required. Must be set to WebSearch. + * + * Required. Must be set to OneDriveAndSharePoint. + * + * Required. Must be set to GraphConnectors. + * + * Required. Must be set to CodeInterpreter. + * + * Required. Must be set to GraphicArt. + * + * Required. Must be set to TeamsMessages. + * + * Required: Must be set to Dataverse + * + * Required: Must be set to Email + * + * Required. Must be set to People. + * + * Required. Must be set to the string literal `ScenarioModels` + * + * Required. Must be set to Meetings. + * + * Required. Must be set to EmbeddedKnowledge. + */ + name: Name; + /** + * Optional. An array of sites used to constrain the content accessible to the DA to just + * the content identified via the items of array. + */ + sites?: SiteElement[]; + /** + * Optional. An array of objects that identify SharePoint or OneDrive sources using IDs. + */ + items_by_sharepoint_ids?: ItemsBySharepointIDElement[]; + /** + * Optional. An array of objects that identify SharePoint or OneDrive sources by URL. + */ + items_by_url?: ItemsByURLElement[]; + /** + * Optional. An array of objects that identify the Microsoft Graph connectors available to + * the declarative agent + */ + connections?: ConnectionElement[]; + /** + * This member can be used to constrain the content accessible to the DA to just the content + * identified via the members of each Teams url + */ + urls?: URLElement[]; + /** + * An array of Objects that represent the knowledge sources for the Dataverse in the + * Declarative Agent + */ + knowledge_sources?: KnowledgeSourceElement[]; + /** + * A JSON array of Folder Object. This member can be used to constrain the content + * accessible to the DA to just the emails present in the folders identified by members of + * each Folder Object. + */ + folders?: FolderElement[]; + /** + * A JSON string that contains SMTP address of the shared mailbox. The presence of this + * field indicates that the DA constrain its search for relevant emails only to that + * mailbox. Emails from user's primary mailbox is not searched when this field is present. + */ + shared_mailbox?: string; + /** + * A JSON array of strings containing SMTP addresses of group mailboxes. The presence of + * this field indicates that the DA can search for relevant emails in the specified group + * mailboxes. A maximum of 25 mailboxes are supported. + */ + group_mailboxes?: string[]; + /** + * Boolean. If true, include related documents, emails, and Teams messages worked on by + * people in your organization when searching People data. If false or omitted, only basic + * org info (org charts, names, email addresses, skills). Default false. + */ + include_related_content?: boolean; + /** + * A list of Scenario Model objects denoting supported models + */ + models?: ModelElement[]; + /** + * A JSON array of objects that identify meetings. This array constrains the DA content + * access to only the meetings specified by the members of each Meeting Identifier Object. + */ + items_by_id?: ItemsByIDElement[]; + /** + * A JSON array of File Object. List of objects identifying files that contain knowledge the + * Agent can use for grounding. + */ + files?: FileElement[]; + [property: string]: any; +} + +/** + * Identifies a Microsoft Graph connector. + */ +export interface ConnectionElement { + /** + * Required. Not localizable The unique identifier of the Microsoft Graph connector. + */ + connection_id: string; + /** + * KQL based string containing the query filter + */ + additional_search_terms?: string; + /** + * A list of objects to store urls for external items. + */ + items_by_external_url?: ItemsByExternalURLElement[]; + /** + * A list of objects to store identifiers for external items + */ + items_by_external_id?: ItemsByExternalIDElement[]; + /** + * A list of objects to store the container paths to items within a connection + */ + items_by_path?: ItemsByPathElement[]; + /** + * A list of objects to store containers names + */ + items_by_container_name?: ItemsByContainerNameElement[]; + /** + * A list of objects to store urls of containers + */ + items_by_container_url?: ItemsByContainerURLElement[]; + [property: string]: any; +} + +/** + * Identifies an item by its container name. + */ +export interface ItemsByContainerNameElement { + /** + * A unique identifier for a container name + */ + container_name: string; + [property: string]: any; +} + +/** + * Identifies an item by its container URL. + */ +export interface ItemsByContainerURLElement { + /** + * Url for external graph connector item container + */ + container_url: string; + [property: string]: any; +} + +/** + * Identifies an item by its external ID. + */ +export interface ItemsByExternalIDElement { + /** + * A unique identifier for an external item. + */ + item_id: string; + [property: string]: any; +} + +/** + * Identifies an item by its external URL. + */ +export interface ItemsByExternalURLElement { + /** + * Url for external graph connector item. + */ + url: string; + [property: string]: any; +} + +/** + * Identifies an item by its path. + */ +export interface ItemsByPathElement { + /** + * A container path to an external item + */ + path: string; + [property: string]: any; +} + +/** + * A JSON object that identifies a file via the relative path. + */ +export interface FileElement { + /** + * A JSON string that contains the file relative path for the embedded file. It is a + * required member. + */ + file: string; + [property: string]: any; +} + +export interface FolderElement { + /** + * A JSON string that identifies an email folder. This can either be id of the folder or one + * of the well known names. + */ + folder_id: string; + [property: string]: any; +} + +/** + * A JSON object that identifies a meeting by its ICalUID. + */ +export interface ItemsByIDElement { + /** + * A JSON string that contains the ICalUID of a specific meeting. This member is required. + */ + id: string; + /** + * A JSON boolean that indicates whether the meeting is a series. This member is required. + */ + is_series: boolean; + [property: string]: any; +} + +/** + * Contains one or more object identifiers that identify a SharePoint or OneDrive resource. + */ +export interface ItemsBySharepointIDElement { + /** + * Optional. Not localizable. The GUID identifier of a SharePoint or OneDrive site. + */ + site_id?: string; + /** + * Optional. Not localizable. The GUID identifier of a SharePoint or OneDrive web. + */ + web_id?: string; + /** + * Optional. Not localizable. The GUID identifier of a SharePoint or OneDrive list. + */ + list_id?: string; + /** + * Optional. Not localizable. The GUID identifier of a SharePoint or OneDrive item. + */ + unique_id?: string; + /** + * A JSON String that uniquely identifies a part of a SharePoint item. e.g a OneNote page. + */ + part_id?: string; + /** + * A String that qualifies the kind of part that the "part_id" refers to. Currently this + * value can only be equal to the string literal: "OneNotePart". + */ + part_type?: "OneNotePart"; + /** + * Boolean value indicating whether to enable searching associated sites. This value is only + * applicable when the site_id value references a SharePoint HubSite. + */ + search_associated_sites?: boolean; +} + +/** + * A String that qualifies the kind of part that the "part_id" refers to. Currently this + * value can only be equal to the string literal: "OneNotePart". + */ + +/** + * Represents the URL of a SharePoint or OneDrive resource. + */ +export interface ItemsByURLElement { + /** + * Optional. Not localizable. An absolute URL to a SharePoint or OneDrive resource. + */ + url?: string; +} + +export interface KnowledgeSourceElement { + /** + * A unique identifier for the host in Dataverse. + */ + host_name?: string; + /** + * A unique identifier that defines the configuration for how the copilot agent interacts + * with Dataverse knowledge. + */ + skill?: string; + /** + * An array of table_name objects which contain table names in DataVerse to scope the + * knowledge of the Declarative Agent + */ + tables?: TableElement[]; + [property: string]: any; +} + +export interface TableElement { + /** + * A string to represent the table name. + */ + table_name?: string; + [property: string]: any; +} + +/** + * An Object representing a scenario model. + */ +export interface ModelElement { + /** + * A unique ID used to identify a Scenario Model + */ + id: string; + [property: string]: any; +} + +export type Name = "WebSearch" | "CodeInterpreter" | "OneDriveAndSharePoint" | "GraphConnectors" | "GraphicArt" | "TeamsMessages" | "Dataverse" | "Email" | "People" | "ScenarioModels" | "Meetings" | "EmbeddedKnowledge"; + +/** + * An object that identifies a site used to constrain the content accessible to the + * declarative agent. + */ +export interface SiteElement { + /** + * An absolute URL to a site. + */ + url: string; + [property: string]: any; +} + +/** + * Identifies a Teams channel, team or meeting chat + */ +export interface URLElement { + /** + * A string that contains a well formed, Teams url to a Teams channel, team or meeting chat + * (join url) + */ + url: string; + [property: string]: any; +} + +/** + * Contains hints that are displayed to the user to demonstrate how they can get started + * using the declarative agent. + */ +export interface ConversationStarterElement { + /** + * Required. Localizable. A suggestion that the user can use to obtain the desired result + * from the DC. It MUST contain at least one nonwhitespace character. + */ + text: string; + /** + * Optional. Localizable. A unique title for the conversation starter. It MUST contain at + * least one nonwhitespace character. + */ + title?: string; + [property: string]: any; +} + +/** + * An optional JSON object containing a disclaimer message that, if provided, will be + * displayed to users at the start of a conversation to satisfy legal or compliance + * requirements. The object contains a required 'text' string property that MUST NOT be null + * and MUST contain at least 1 non-whitespace character. + */ +export interface Disclaimer { + /** + * A JSON string that contains the disclaimer message. Characters beyond 500 MAY be ignored. + */ + text: string; + [property: string]: any; +} + +/** + * This member is an object that specifies the sensitivity label for the DA. It is an + * optional member. + * + * A JSON object, when specified should match one of the GUIDs of the published sensitivity + * labels within the tenant to which it is being published. This label should be at least as + * restrictive as the most restrictive label on any knowledge files included in the agent. + * See https://learn.microsoft.com/en-us/purview/create-sensitivity-labels for more + * information on sensitivity labels. + */ +export interface SensitivityLabel { + /** + * The GUID of the sensitivity_label that is pulled from Purview API + */ + id?: string; + [property: string]: any; +} + +/** + * A JSON object that allows the DA author to specify the path of a capability that can be + * modified and a set of allowed actions for those capabilities. + */ +export interface UserOverrideElement { + /** + * Required. A JSON string that contains a JSONPath expression identifying the capability or + * configuration element that users can modify. The JSONPath expression allows targeting + * specific capabilities by name only. + */ + path: string; + /** + * Required. A JSON array of strings that specifies what actions can be taken for the + * specified path. The only supported action is 'remove'. + */ + allowed_actions: "remove"[]; + [property: string]: any; +} + +/** + * A JSON object used to identify a declarative agent to act as a worker agent. Declarative + * agents can be referenced via their id (Agent Id). + */ +export interface WorkerAgentElement { + /** + * Required. Not localizable. A unique identifier for a declarative agent. + */ + id: string; + [property: string]: any; +} + +// Converts JSON strings to/from your types +// and asserts the results of JSON.parse at runtime +export class Convert { + public static toDeclarativeAgentManifestV1D7(json: string): DeclarativeAgentManifestV1D7 { + return cast(JSON.parse(json), r("DeclarativeAgentManifestV1D7")); + } + + public static declarativeAgentManifestV1D7ToJson(value: DeclarativeAgentManifestV1D7): string { + return JSON.stringify(uncast(value, r("DeclarativeAgentManifestV1D7")), null, 4); + } +} + +function invalidValue(typ: any, val: any, key: any, parent: any = ''): never { + const prettyTyp = prettyTypeName(typ); + const parentText = parent ? ` on ${parent}` : ''; + const keyText = key ? ` for key "${key}"` : ''; + throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`); +} + +function prettyTypeName(typ: any): string { + if (Array.isArray(typ)) { + if (typ.length === 2 && typ[0] === undefined) { + return `an optional ${prettyTypeName(typ[1])}`; + } else { + return `one of [${typ.map(a => { return prettyTypeName(a); }).join(", ")}]`; + } + } else if (typeof typ === "object" && typ.literal !== undefined) { + return typ.literal; + } else { + return typeof typ; + } +} + +function jsonToJSProps(typ: any): any { + if (typ.jsonToJS === undefined) { + const map: any = {}; + typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ }); + typ.jsonToJS = map; + } + return typ.jsonToJS; +} + +function jsToJSONProps(typ: any): any { + if (typ.jsToJSON === undefined) { + const map: any = {}; + typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ }); + typ.jsToJSON = map; + } + return typ.jsToJSON; +} + +function transform(val: any, typ: any, getProps: any, key: any = '', parent: any = ''): any { + function transformPrimitive(typ: string, val: any): any { + if (typeof typ === typeof val) return val; + return invalidValue(typ, val, key, parent); + } + + function transformUnion(typs: any[], val: any): any { + // val must validate against one typ in typs + const l = typs.length; + for (let i = 0; i < l; i++) { + const typ = typs[i]; + try { + return transform(val, typ, getProps); + } catch (_) {} + } + return invalidValue(typs, val, key, parent); + } + + function transformEnum(cases: string[], val: any): any { + if (cases.indexOf(val) !== -1) return val; + return invalidValue(cases.map(a => { return l(a); }), val, key, parent); + } + + function transformArray(typ: any, val: any): any { + // val must be an array with no invalid elements + if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent); + return val.map(el => transform(el, typ, getProps)); + } + + function transformDate(val: any): any { + if (val === null) { + return null; + } + const d = new Date(val); + if (isNaN(d.valueOf())) { + return invalidValue(l("Date"), val, key, parent); + } + return d; + } + + function transformObject(props: { [k: string]: any }, additional: any, val: any): any { + if (val === null || typeof val !== "object" || Array.isArray(val)) { + return invalidValue(l(ref || "object"), val, key, parent); + } + const result: any = {}; + Object.getOwnPropertyNames(props).forEach(key => { + const prop = props[key]; + const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined; + result[prop.key] = transform(v, prop.typ, getProps, key, ref); + }); + Object.getOwnPropertyNames(val).forEach(key => { + if (!Object.prototype.hasOwnProperty.call(props, key)) { + result[key] = transform(val[key], additional, getProps, key, ref); + } + }); + return result; + } + + if (typ === "any") return val; + if (typ === null) { + if (val === null) return val; + return invalidValue(typ, val, key, parent); + } + if (typ === false) return invalidValue(typ, val, key, parent); + let ref: any = undefined; + while (typeof typ === "object" && typ.ref !== undefined) { + ref = typ.ref; + typ = typeMap[typ.ref]; + } + if (Array.isArray(typ)) return transformEnum(typ, val); + if (typeof typ === "object") { + return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) + : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) + : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) + : invalidValue(typ, val, key, parent); + } + // Numbers can be parsed by Date but shouldn't be. + if (typ === Date && typeof val !== "number") return transformDate(val); + return transformPrimitive(typ, val); +} + +function cast(val: any, typ: any): T { + return transform(val, typ, jsonToJSProps); +} + +function uncast(val: T, typ: any): any { + return transform(val, typ, jsToJSONProps); +} + +function l(typ: any) { + return { literal: typ }; +} + +function a(typ: any) { + return { arrayItems: typ }; +} + +function u(...typs: any[]) { + return { unionMembers: typs }; +} + +function o(props: any[], additional: any) { + return { props, additional }; +} + +function m(additional: any) { + return { props: [], additional }; +} + +function r(name: string) { + return { ref: name }; +} + +const typeMap: any = { + "DeclarativeAgentManifestV1D7": o([ + { json: "version", js: "version", typ: r("Version") }, + { json: "id", js: "id", typ: u(undefined, "") }, + { json: "name", js: "name", typ: "" }, + { json: "description", js: "description", typ: "" }, + { json: "disclaimer", js: "disclaimer", typ: u(undefined, r("Disclaimer")) }, + { json: "sensitivity_label", js: "sensitivity_label", typ: u(undefined, r("SensitivityLabel")) }, + { json: "instructions", js: "instructions", typ: u(undefined, "") }, + { json: "behavior_overrides", js: "behavior_overrides", typ: u(undefined, r("BehaviorOverrides")) }, + { json: "capabilities", js: "capabilities", typ: u(undefined, a(r("CapabilityElement"))) }, + { json: "conversation_starters", js: "conversation_starters", typ: u(undefined, a(r("ConversationStarterElement"))) }, + { json: "actions", js: "actions", typ: u(undefined, a(r("ActionElement"))) }, + { json: "worker_agents", js: "worker_agents", typ: u(undefined, a(r("WorkerAgentElement"))) }, + { json: "user_overrides", js: "user_overrides", typ: u(undefined, a(r("UserOverrideElement"))) }, + { json: "agent_skills", js: "agent_skills", typ: u(undefined, a(r("AgentSkillElement"))) }, + ], "any"), + "ActionElement": o([ + { json: "id", js: "id", typ: "" }, + { json: "file", js: "file", typ: "" }, + ], "any"), + "AgentSkillElement": o([ + { json: "folder", js: "folder", typ: "" }, + ], "any"), + "BehaviorOverrides": o([ + { json: "special_instructions", js: "special_instructions", typ: u(undefined, r("SpecialInstructions")) }, + { json: "suggestions", js: "suggestions", typ: u(undefined, r("Suggestions")) }, + ], "any"), + "SpecialInstructions": o([ + { json: "discourage_model_knowledge", js: "discourage_model_knowledge", typ: u(undefined, true) }, + ], "any"), + "Suggestions": o([ + { json: "disabled", js: "disabled", typ: u(undefined, true) }, + ], "any"), + "CapabilityElement": o([ + { json: "name", js: "name", typ: r("Name") }, + { json: "sites", js: "sites", typ: u(undefined, a(r("SiteElement"))) }, + { json: "items_by_sharepoint_ids", js: "items_by_sharepoint_ids", typ: u(undefined, a(r("ItemsBySharepointIDElement"))) }, + { json: "items_by_url", js: "items_by_url", typ: u(undefined, a(r("ItemsByURLElement"))) }, + { json: "connections", js: "connections", typ: u(undefined, a(r("ConnectionElement"))) }, + { json: "urls", js: "urls", typ: u(undefined, a(r("URLElement"))) }, + { json: "knowledge_sources", js: "knowledge_sources", typ: u(undefined, a(r("KnowledgeSourceElement"))) }, + { json: "folders", js: "folders", typ: u(undefined, a(r("FolderElement"))) }, + { json: "shared_mailbox", js: "shared_mailbox", typ: u(undefined, "") }, + { json: "group_mailboxes", js: "group_mailboxes", typ: u(undefined, a("")) }, + { json: "include_related_content", js: "include_related_content", typ: u(undefined, true) }, + { json: "models", js: "models", typ: u(undefined, a(r("ModelElement"))) }, + { json: "items_by_id", js: "items_by_id", typ: u(undefined, a(r("ItemsByIDElement"))) }, + { json: "files", js: "files", typ: u(undefined, a(r("FileElement"))) }, + ], "any"), + "ConnectionElement": o([ + { json: "connection_id", js: "connection_id", typ: "" }, + { json: "additional_search_terms", js: "additional_search_terms", typ: u(undefined, "") }, + { json: "items_by_external_url", js: "items_by_external_url", typ: u(undefined, a(r("ItemsByExternalURLElement"))) }, + { json: "items_by_external_id", js: "items_by_external_id", typ: u(undefined, a(r("ItemsByExternalIDElement"))) }, + { json: "items_by_path", js: "items_by_path", typ: u(undefined, a(r("ItemsByPathElement"))) }, + { json: "items_by_container_name", js: "items_by_container_name", typ: u(undefined, a(r("ItemsByContainerNameElement"))) }, + { json: "items_by_container_url", js: "items_by_container_url", typ: u(undefined, a(r("ItemsByContainerURLElement"))) }, + ], "any"), + "ItemsByContainerNameElement": o([ + { json: "container_name", js: "container_name", typ: "" }, + ], "any"), + "ItemsByContainerURLElement": o([ + { json: "container_url", js: "container_url", typ: "" }, + ], "any"), + "ItemsByExternalIDElement": o([ + { json: "item_id", js: "item_id", typ: "" }, + ], "any"), + "ItemsByExternalURLElement": o([ + { json: "url", js: "url", typ: "" }, + ], "any"), + "ItemsByPathElement": o([ + { json: "path", js: "path", typ: "" }, + ], "any"), + "FileElement": o([ + { json: "file", js: "file", typ: "" }, + ], "any"), + "FolderElement": o([ + { json: "folder_id", js: "folder_id", typ: "" }, + ], "any"), + "ItemsByIDElement": o([ + { json: "id", js: "id", typ: "" }, + { json: "is_series", js: "is_series", typ: true }, + ], "any"), + "ItemsBySharepointIDElement": o([ + { json: "site_id", js: "site_id", typ: u(undefined, "") }, + { json: "web_id", js: "web_id", typ: u(undefined, "") }, + { json: "list_id", js: "list_id", typ: u(undefined, "") }, + { json: "unique_id", js: "unique_id", typ: u(undefined, "") }, + { json: "part_id", js: "part_id", typ: u(undefined, "") }, + { json: "part_type", js: "part_type", typ: u(undefined, r("PartType")) }, + { json: "search_associated_sites", js: "search_associated_sites", typ: u(undefined, true) }, + ], false), + "ItemsByURLElement": o([ + { json: "url", js: "url", typ: u(undefined, "") }, + ], false), + "KnowledgeSourceElement": o([ + { json: "host_name", js: "host_name", typ: u(undefined, "") }, + { json: "skill", js: "skill", typ: u(undefined, "") }, + { json: "tables", js: "tables", typ: u(undefined, a(r("TableElement"))) }, + ], "any"), + "TableElement": o([ + { json: "table_name", js: "table_name", typ: u(undefined, "") }, + ], "any"), + "ModelElement": o([ + { json: "id", js: "id", typ: "" }, + ], "any"), + "SiteElement": o([ + { json: "url", js: "url", typ: "" }, + ], "any"), + "URLElement": o([ + { json: "url", js: "url", typ: "" }, + ], "any"), + "ConversationStarterElement": o([ + { json: "text", js: "text", typ: "" }, + { json: "title", js: "title", typ: u(undefined, "") }, + ], "any"), + "Disclaimer": o([ + { json: "text", js: "text", typ: "" }, + ], "any"), + "SensitivityLabel": o([ + { json: "id", js: "id", typ: u(undefined, "") }, + ], "any"), + "UserOverrideElement": o([ + { json: "path", js: "path", typ: "" }, + { json: "allowed_actions", js: "allowed_actions", typ: a(r("AllowedAction")) }, + ], "any"), + "WorkerAgentElement": o([ + { json: "id", js: "id", typ: "" }, + ], "any"), + "PartType": [ + "OneNotePart", + ], + "Name": [ + "CodeInterpreter", + "Dataverse", + "Email", + "EmbeddedKnowledge", + "GraphConnectors", + "GraphicArt", + "Meetings", + "OneDriveAndSharePoint", + "People", + "ScenarioModels", + "TeamsMessages", + "WebSearch", + ], + "AllowedAction": [ + "remove", + ], + "Version": [ + "v1.7", + ], +}; diff --git a/packages/manifest/src/generated-types/index.ts b/packages/manifest/src/generated-types/index.ts index e3fddf779fe..71ab9de9e29 100644 --- a/packages/manifest/src/generated-types/index.ts +++ b/packages/manifest/src/generated-types/index.ts @@ -14,6 +14,7 @@ import * as DeclarativeAgentManifestV1D3 from "./copilot/declarative-agent/Decla import * as DeclarativeAgentManifestV1D4 from "./copilot/declarative-agent/DeclarativeAgentManifestV1D4"; import * as DeclarativeAgentManifestV1D5 from "./copilot/declarative-agent/DeclarativeAgentManifestV1D5"; import * as DeclarativeAgentManifestV1D6 from "./copilot/declarative-agent/DeclarativeAgentManifestV1D6"; +import * as DeclarativeAgentManifestV1D7 from "./copilot/declarative-agent/DeclarativeAgentManifestV1D7"; import * as APIPluginManifestV2D1 from "./copilot/plugin/ApiPluginManifestV2D1"; import * as APIPluginManifestV2D2 from "./copilot/plugin/ApiPluginManifestV2D2"; import * as APIPluginManifestV2D3 from "./copilot/plugin/ApiPluginManifestV2D3"; @@ -118,6 +119,7 @@ export type TeamsManifest = export type TeamsManifestLatest = TeamsManifestV1D26.TeamsManifestV1D26; export { SensitivityLabel } from "./copilot/declarative-agent/DeclarativeAgentManifestV1D6"; +export { AgentSkillElement } from "./copilot/declarative-agent/DeclarativeAgentManifestV1D7"; export type DeclarativeAgentManifest = | DeclarativeAgentManifestV1D0.DeclarativeAgentManifestV1D0 @@ -125,10 +127,11 @@ export type DeclarativeAgentManifest = | DeclarativeAgentManifestV1D3.DeclarativeAgentManifestV1D3 | DeclarativeAgentManifestV1D4.DeclarativeAgentManifestV1D4 | DeclarativeAgentManifestV1D5.DeclarativeAgentManifestV1D5 - | DeclarativeAgentManifestV1D6.DeclarativeAgentManifestV1D6; + | DeclarativeAgentManifestV1D6.DeclarativeAgentManifestV1D6 + | DeclarativeAgentManifestV1D7.DeclarativeAgentManifestV1D7; export type DeclarativeAgentManifestLatest = - DeclarativeAgentManifestV1D6.DeclarativeAgentManifestV1D6; + DeclarativeAgentManifestV1D7.DeclarativeAgentManifestV1D7; export type APIPluginManifest = | APIPluginManifestV2D1.APIPluginManifestV2D1 @@ -265,6 +268,18 @@ const daConverterMap: Converters = { DeclarativeAgentManifestV1D4.Convert.toDeclarativeAgentManifestV1D4, DeclarativeAgentManifestV1D4.Convert.declarativeAgentManifestV1D4ToJson, ], + "v1.5": [ + DeclarativeAgentManifestV1D5.Convert.toDeclarativeAgentManifestV1D5, + DeclarativeAgentManifestV1D5.Convert.declarativeAgentManifestV1D5ToJson, + ], + "v1.6": [ + DeclarativeAgentManifestV1D6.Convert.toDeclarativeAgentManifestV1D6, + DeclarativeAgentManifestV1D6.Convert.declarativeAgentManifestV1D6ToJson, + ], + "v1.7": [ + DeclarativeAgentManifestV1D7.Convert.toDeclarativeAgentManifestV1D7, + DeclarativeAgentManifestV1D7.Convert.declarativeAgentManifestV1D7ToJson, + ], }; const ApiPluginConverterMap: Converters = { "v2.1": [ diff --git a/packages/manifest/src/json-schemas/copilot/declarative-agent/v1.7/schema.json b/packages/manifest/src/json-schemas/copilot/declarative-agent/v1.7/schema.json new file mode 100644 index 00000000000..0db3339cfe9 --- /dev/null +++ b/packages/manifest/src/json-schemas/copilot/declarative-agent/v1.7/schema.json @@ -0,0 +1,1134 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "$comment": "This schema describes the constraints of a declarative agent for third party developers to be deployed to Microsoft 365 Copilot", + "type": "object", + "title": "Declarative agent manifest object", + "description": "The root of the declarative agent manifest document is a JSON object that contains members that describe the declarative agent.", + "properties": { + "version": { + "description": "Required. Not localizable. The version of the schema this manifest is using.", + "type": "string", + "const": "v1.7" + }, + "id": { + "description": "Optional. Not localizable.", + "type": "string", + "pattern": "^(?!\\[\\[)(.*?)(?[number]; type WorkerAgentElementType = NonNullable[number]; +/** + * Maximum number of agent skills allowed. + */ +const MAX_AGENT_SKILLS = 10; + // Re-export common types for convenience (derived from latest manifest type) export type ActionElement = ActionElementType; export type ConversationStarterElement = ConversationStarterElementType; export type WorkerAgentElement = WorkerAgentElementType; export type SensitivityLabel = LatestManifestType["sensitivity_label"]; export type BehaviorOverrides = LatestManifestType["behavior_overrides"]; +export type { AgentSkillElement }; /** * Capability name type derived from the latest manifest schema. @@ -471,6 +478,75 @@ export class DeclarativeAgentManifestWrapper extends BaseManifest; + return (data.agent_skills as AgentSkillElement[] | undefined) ?? []; + } + + /** + * Adds an agent skill to the declarative agent. + * Maximum 10 skills are allowed. Duplicate folder paths are ignored. + * @param folder - Relative path to the skill directory. + */ + addSkill(folder: string): this { + const data = this._data as Record; + if (!data.agent_skills) { + data.agent_skills = []; + } + + const skills = data.agent_skills as AgentSkillElement[]; + if (skills.length >= MAX_AGENT_SKILLS) { + console.warn(`Maximum ${MAX_AGENT_SKILLS} agent skills allowed. Ignoring addition.`); + return this; + } + + if (!skills.some((s) => s.folder === folder)) { + skills.push({ folder }); + this.markDirty(); + } + return this; + } + + /** + * Removes an agent skill by folder path. + * @param folder - The folder path of the skill to remove. + */ + removeSkill(folder: string): this { + const data = this._data as Record; + const skills = data.agent_skills as AgentSkillElement[] | undefined; + if (skills) { + data.agent_skills = skills.filter((s) => s.folder !== folder); + this.markDirty(); + } + return this; + } + + /** + * Checks if an agent skill exists by folder path. + */ + hasSkill(folder: string): boolean { + return this.skills.some((s) => s.folder === folder); + } + + /** + * Gets an agent skill by folder path. + */ + getSkill(folder: string): AgentSkillElement | undefined { + return this.skills.find((s) => s.folder === folder); + } + + /** + * Returns all skill folder paths. + */ + getSkillFolders(): string[] { + return this.skills.map((s) => s.folder); + } + // ============= Validation ============= /** diff --git a/packages/manifest/src/wrappers/index.ts b/packages/manifest/src/wrappers/index.ts index b9cd2795f2c..3ca242f7c06 100644 --- a/packages/manifest/src/wrappers/index.ts +++ b/packages/manifest/src/wrappers/index.ts @@ -15,6 +15,7 @@ export { APIPluginManifestWrapper, RuntimeType } from "./APIPluginManifestWrappe export type { RuntimeTypeValue } from "./APIPluginManifestWrapper"; export { DeclarativeAgentManifestWrapper, CapabilityName } from "./DeclarativeAgentManifestWrapper"; export type { CapabilityNameValue } from "./DeclarativeAgentManifestWrapper"; +export type { AgentSkillElement } from "../generated-types"; export { TeamsManifestWrapper, DefaultInstallScope, diff --git a/packages/manifest/test/wrappers/DeclarativeAgentManifestWrapper.skills.test.ts b/packages/manifest/test/wrappers/DeclarativeAgentManifestWrapper.skills.test.ts new file mode 100644 index 00000000000..9e279185f8d --- /dev/null +++ b/packages/manifest/test/wrappers/DeclarativeAgentManifestWrapper.skills.test.ts @@ -0,0 +1,218 @@ +import { assert } from "chai"; +import "mocha"; +import { createSandbox } from "sinon"; +import { + DeclarativeAgentManifestWrapper, + AgentSkillElement, +} from "../../src/wrappers/DeclarativeAgentManifestWrapper"; + +describe("DeclarativeAgentManifestWrapper - Agent Skills", () => { + const sandbox = createSandbox(); + + afterEach(() => { + sandbox.restore(); + }); + + function createAgent(): DeclarativeAgentManifestWrapper { + return DeclarativeAgentManifestWrapper.create({ + version: "v1.6", + name: "Test Agent", + description: "A test agent", + }); + } + + describe("addSkill", () => { + it("should add a skill with folder only", () => { + const agent = createAgent(); + + agent.addSkill("skills/my-skill"); + + assert.equal(agent.skills.length, 1); + assert.equal(agent.skills[0].folder, "skills/my-skill"); + }); + + it("should prevent duplicate folder paths", () => { + const agent = createAgent(); + + agent.addSkill("skills/my-skill"); + agent.addSkill("skills/my-skill"); + + assert.equal(agent.skills.length, 1); + }); + + it("should respect max 10 limit", () => { + const agent = createAgent(); + + for (let i = 0; i < 10; i++) { + agent.addSkill(`skills/skill-${i}`); + } + assert.equal(agent.skills.length, 10); + + // 11th skill should be ignored + agent.addSkill("skills/skill-overflow"); + + assert.equal(agent.skills.length, 10); + assert.isFalse(agent.hasSkill("skills/skill-overflow")); + }); + + it("should return this for fluent chaining", () => { + const agent = createAgent(); + + const result = agent.addSkill("skills/a").addSkill("skills/b"); + + assert.strictEqual(result, agent); + assert.equal(agent.skills.length, 2); + }); + }); + + describe("removeSkill", () => { + it("should remove an existing skill by folder", () => { + const agent = createAgent(); + + agent.addSkill("skills/a").addSkill("skills/b"); + agent.removeSkill("skills/a"); + + assert.isFalse(agent.hasSkill("skills/a")); + assert.isTrue(agent.hasSkill("skills/b")); + assert.equal(agent.skills.length, 1); + }); + + it("should be a no-op when skill does not exist", () => { + const agent = createAgent(); + + agent.addSkill("skills/a"); + agent.removeSkill("skills/nonexistent"); + + assert.equal(agent.skills.length, 1); + assert.isTrue(agent.hasSkill("skills/a")); + }); + }); + + describe("hasSkill", () => { + it("should return true for existing folder", () => { + const agent = createAgent(); + + agent.addSkill("skills/exists"); + + assert.isTrue(agent.hasSkill("skills/exists")); + }); + + it("should return false for non-existing folder", () => { + const agent = createAgent(); + + assert.isFalse(agent.hasSkill("skills/nope")); + }); + }); + + describe("getSkill", () => { + it("should return skill for existing folder", () => { + const agent = createAgent(); + + agent.addSkill("skills/my-skill"); + + const skill = agent.getSkill("skills/my-skill"); + assert.isDefined(skill); + assert.equal(skill!.folder, "skills/my-skill"); + }); + + it("should return undefined for non-existing folder", () => { + const agent = createAgent(); + + const skill = agent.getSkill("skills/nope"); + assert.isUndefined(skill); + }); + }); + + describe("getSkillFolders", () => { + it("should return empty array when no skills", () => { + const agent = createAgent(); + + assert.deepEqual(agent.getSkillFolders(), []); + }); + + it("should return all folder paths", () => { + const agent = createAgent(); + + agent.addSkill("skills/a").addSkill("skills/b").addSkill("skills/c"); + + assert.deepEqual(agent.getSkillFolders(), ["skills/a", "skills/b", "skills/c"]); + }); + }); + + describe("skills getter", () => { + it("should read from agent_skills property", () => { + const json = JSON.stringify({ + version: "v1.6", + name: "Agent", + description: "Test", + agent_skills: [{ folder: "skills/from-property" }], + }); + + const agent = DeclarativeAgentManifestWrapper.fromJSON(json); + + assert.equal(agent.skills.length, 1); + assert.equal(agent.skills[0].folder, "skills/from-property"); + }); + + it("should return empty array when neither property exists", () => { + const agent = createAgent(); + + assert.deepEqual(agent.skills, []); + assert.equal(agent.skills.length, 0); + }); + }); + + describe("round-trip", () => { + it("should create from JSON with agent_skills, add skill, and include all in toJSON", () => { + const json = JSON.stringify({ + version: "v1.6", + name: "Agent", + description: "Test", + agent_skills: [{ folder: "skills/original" }], + }); + + const agent = DeclarativeAgentManifestWrapper.fromJSON(json); + + assert.equal(agent.skills.length, 1); + assert.equal(agent.skills[0].folder, "skills/original"); + + agent.addSkill("skills/added"); + + assert.equal(agent.skills.length, 2); + assert.isTrue(agent.hasSkill("skills/original")); + assert.isTrue(agent.hasSkill("skills/added")); + + const output = JSON.parse(agent.toJSON()); + const outputSkills = output["agent_skills"] as AgentSkillElement[]; + assert.isDefined(outputSkills); + assert.equal(outputSkills.length, 2); + assert.equal(outputSkills[0].folder, "skills/original"); + assert.equal(outputSkills[1].folder, "skills/added"); + }); + }); + + describe("isDirty", () => { + it("should mark manifest as dirty when addSkill is called", () => { + const agent = createAgent(); + + assert.isFalse(agent.isDirty); + + agent.addSkill("skills/new-skill"); + + assert.isTrue(agent.isDirty); + }); + + it("should mark manifest as dirty when removeSkill is called", () => { + const agent = createAgent(); + agent.addSkill("skills/to-remove"); + + // Reset dirty state by cloning + const fresh = agent.clone(); + assert.isFalse(fresh.isDirty); + + fresh.removeSkill("skills/to-remove"); + + assert.isTrue(fresh.isDirty); + }); + }); +}); diff --git a/packages/vscode-extension/package.json b/packages/vscode-extension/package.json index da540653eab..d414a0205bc 100644 --- a/packages/vscode-extension/package.json +++ b/packages/vscode-extension/package.json @@ -43,9 +43,7 @@ ], "aiKey": "1c56be97-bb74-42cf-b04b-8f1aabf04592", "featureFlag": "true", - "files": [ - "out/**/*" - ], + "activationEvents": [ "onCommand:fx-extension.create", "onCommand:fx-extension.createFromWalkthrough", @@ -954,6 +952,12 @@ "enablement": "fx-extension.isTeamsFx && isWorkspaceTrusted && !fx-extension.commandLocked && fx-extension.isDeclarativeCopilotApp && fx-extension.isKiotaNPMIntegrationEnabled", "category": "Microsoft 365 Agents" }, + { + "command": "fx-extension.addSkill", + "title": "%teamstoolkit.commandsTreeViewProvider.addSkillTitle%", + "enablement": "fx-extension.isTeamsFx && isWorkspaceTrusted && !fx-extension.commandLocked && fx-extension.isDeclarativeCopilotApp && fx-extension.isAgentSkillsEnabled", + "category": "Microsoft 365 Agents" + }, { "command": "fx-extension.addKnowledge", "title": "%teamstoolkit.commandsTreeViewProvider.addKnowledgeTitle%", diff --git a/packages/vscode-extension/package.nls.cs.json b/packages/vscode-extension/package.nls.cs.json index 64a0cfb4c39..3f11a158214 100644 --- a/packages/vscode-extension/package.nls.cs.json +++ b/packages/vscode-extension/package.nls.cs.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: Přihlašování...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: Přepínání…", "teamstoolkit.accountTree.sandboxedTeamEnabled": "Teams v sandboxu povolen", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "V Teams můžete místo toho vytvořit sandbox pro místní testování.", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Můžete si vytvořit Teams v sandboxu pro místní testování.", "teamstoolkit.accountTree.sandboxedTeamDisabled": "Teams v sandboxu zakázán", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "Správce účtu Microsoft 365 nepovolil Teams v sandboxu.", - "teamstoolkit.accountTree.suggestSandboxedTeam": "[Nahrání vlastní aplikace](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) je u vašeho účtu Microsoft 365 zakázáno. V Teams můžete vytvořit sandbox s kanálem pro vývoj a testování.", - "teamstoolkit.accountTree.sandboxedTeam.button": "Ladit v sandboxu v Teams (Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "[Nahrání vlastní aplikace](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) je u vašeho účtu Microsoft 365 zakázáno. Můžete si ale vytvořit Teams v sandboxu pro místní testování.", + "teamstoolkit.accountTree.sandboxedTeam.button": "Ladit v sandboxu Teams (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Vytvořit Microsoft 365 vývojářský sandbox", "teamstoolkit.appStudioLogin.loginCancel": "Přihlášení se zrušilo. Microsoft 365 Agents Toolkit potřebuje účet Microsoft 365 s oprávněním k nahrávání vlastních aplikací. Pokud jste předplatitelem sady Visual Studio, vytvořte vývojářský sandbox pomocí programu pro vývojáře Microsoftu 365 (https://developer.microsoft.com/en-us/microsoft-365/dev-program).", "teamstoolkit.appStudioLogin.message": "Microsoft 365 Agents Toolkit potřebuje účet Microsoft 365 s oprávněním k nahrávání vlastních aplikací. Pokud jste předplatitelem sady Visual Studio, vytvořte vývojářský sandbox pomocí programu pro vývojáře Microsoftu 365.", - "teamstoolkit.azureLogin.failToFindSubscription": "Nenašlo se žádné předplatné. Přepněte na tenanta s propojeným předplatným.", + "teamstoolkit.azureLogin.failToFindSubscription": "Nepovedlo se nám najít předplatné.", "teamstoolkit.azureLogin.message": "Microsoft 365 Agents Toolkit použije k nasazení prostředků Azure pro váš projekt ověřování Microsoftu k přihlášení k účtu Azure a předplatnému. Dokud to nepotvrdíte, nebude se vám nic účtovat.", "teamstoolkit.azureLogin.subscription": "předplatné", "teamstoolkit.azureLogin.selectSubscription": "Vybrat předplatné pro ID aktuálního tenanta", @@ -160,9 +160,9 @@ "teamstoolkit.commandsTreeViewProvider.previewAdaptiveCard": "Náhled a ladění Adaptivních karet", "teamstoolkit.commandsTreeViewProvider.previewDescription": "Ladění a náhled aplikace", "teamstoolkit.commandsTreeViewProvider.previewTitle": "Náhled aplikace (F5)", - "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle": "Získat pomoc z GitHub Copilota", - "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle.preview": "Získejte pomoc od GitHub Copilota (Preview)", - "teamstoolkit.commandsTreeViewProvider.getCopilotHelpDescription": "Chatujte s GitHub Copilotem a zjistěte, co můžete dělat s aplikací nebo s agentem Microsoft 365 Copilota.", + "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle": "Získat pomoc z GitHub Copilot", + "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle.preview": "Získejte pomoc od Copilotu GitHubu (Preview)", + "teamstoolkit.commandsTreeViewProvider.getCopilotHelpDescription": "Chatujte s GitHub Copilotem a zjistěte, co můžete dělat s aplikací nebo s agentem Microsoft 365 Copilotu.", "teamstoolkit.commandsTreeViewProvider.provision.blockTooltip": "Během zřizování se nepovedlo spustit příkaz. Zkuste to znovu, až se zřizování dokončí.", "teamstoolkit.commandsTreeViewProvider.provision.running": "Probíhá zřizování...", "teamstoolkit.commandsTreeViewProvider.provisionDescription": "Spusťte fázi životního cyklu „provision“ (zřízení) v souboru m365agents.yml.", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "Před publikováním aplikace doporučujeme ověřit všechny testovací případy integrace.", "teamstoolkit.commandsTreeViewProvider.publishTitle": "Publikovat v organizaci", "teamstoolkit.commandsTreeViewProvider.shareTitle": "Sdílet", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "Změňte sdílený obor agenta.", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "Spusťte fázi životního cyklu „share“ v souboru m365agents.yml.", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "Začínáme", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "Nahlaste všechny problémy a dejte nám vědět svůj názor.", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "Nahlášení problémů na GitHubu", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Správa spolupracovníků aplikace Microsoft 365 (s aplikací Microsoft Entra)", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "Přidat akci", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "Přidat akci v deklarativním agentovi", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Rozšířit aplikaci na deklarativního agenta", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Rozšíření projektu doplňku na deklarativního agenta", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Rozšířit na deklarativního agenta", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Rozšíření projektu doplňku na akci deklarativního agenta", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "Znovu vygenerovat akci", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "Znovu vygenerovat akci v deklarativním agentovi", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "Přidává se akce...", @@ -215,8 +215,8 @@ "teamstoolkit.commandsTreeViewProvider.validateManifestDescription": "Ověřit soubor manifestu projektu doplňků pro Office", "teamstoolkit.commandsTreeViewProvider.scriptLabTitle": "Script Lab", "teamstoolkit.commandsTreeViewProvider.scriptLabDescription": "Otevřít úvodní stránku Script Lab", - "teamstoolkit.commandsTreeViewProvider.promptLibraryTitle": "Zobrazit Výzvy pro GitHub Copilota", - "teamstoolkit.commandsTreeViewProvider.promptLibraryDescription": "Otevřít knihovnu výzev Office pro GitHub Copilota", + "teamstoolkit.commandsTreeViewProvider.promptLibraryTitle": "Zobrazit Výzvy pro GitHub Copilot", + "teamstoolkit.commandsTreeViewProvider.promptLibraryDescription": "Otevřít knihovnu výzev Office pro GitHub Copilot", "teamstoolkit.commandsTreeViewProvider.officeAddIn.officePartnerCenterTitle": "Otevřít partnerské centrum", "teamstoolkit.commandsTreeViewProvider.officeAddIn.officePartnerCenterDescription": "Otevření partnerského centra", "teamstoolkit.commandsTreeViewProvider.officeAddIn.getStartedTitle": "Začínáme", @@ -316,16 +316,16 @@ "teamstoolkit.handlers.installOfficeAddinDependencyCancelled": "Instalace závislostí se zrušila, ale závislosti můžete nainstalovat ručně tak, že na levé straně kliknete na tlačítko Vývoj – Kontrola a instalace závislostí.", "teamstoolkit.localDebug.learnMore": "Získat další informace", "teamstoolkit.localDebug.m365TenantHintMessage": "Po registraci tenanta pro vývojáře v cílové verzi Office 365 může registrace začít platit během několika dní. Kliknutím na tlačítko Získat další informace zobrazíte podrobnosti o nastavení vývojového prostředí pro rozšíření aplikací napříč Microsoftem 365.", - "teamstoolkit.handlers.askInstallCopilot": "Pokud chcete při vývoji aplikací nebo přizpůsobování Microsoft 365 Copilota použít rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit, musíte nejdřív nainstalovat GitHub Copilot.", + "teamstoolkit.handlers.askInstallCopilot": "Pokud chcete při vývoji aplikací nebo přizpůsobování Microsoft 365 Copilotu použít rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit, musíte nejdřív nainstalovat GitHub Copilot.", "teamstoolkit.handlers.askInstallCopilot.install": "Nainstalovat GitHub Copilot", - "teamstoolkit.handlers.askInstallTeamsAgent": "Pokud chcete při vývoji aplikací nebo přizpůsobování Microsoft 365 Copilota použít rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit, nainstalujte ho prosím jako první. Pokud jste ho už nainstalovali, potvrďte to níže.", + "teamstoolkit.handlers.askInstallTeamsAgent": "Pokud chcete při vývoji aplikací nebo přizpůsobování Microsoft 365 Copilotu použít rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit, nainstalujte ho prosím jako první. Pokud jste ho už nainstalovali, potvrďte to níže.", "teamstoolkit.handlers.askInstallTeamsAgent.install": "Nainstalovat z GitHub.com", "teamstoolkit.handlers.askInstallTeamsAgent.confirmInstall": "Potvrdit instalaci", - "teamstoolkit.handlers.installCopilotAndAgent.output": "Pokud chcete při vývoji aplikací nebo přizpůsobování Microsoft 365 Copilota použít rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit, nainstalujte GitHub Copilot z %s a rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit z %s.", - "teamstoolkit.handlers.installAgent.output": "Pokud chcete při vývoji aplikací nebo přizpůsobování Microsoft 365 Copilota použít rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit, nainstalujte rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit z %s.", - "teamstoolkit.handlers.installCopilotError": "Nepovedlo se nainstalovat Copilot Chat na GitHubu. Nainstalujte ho podle %s a zkuste to znovu.", - "teamstoolkit.handlers.chatTeamsAgentError": "Nelze automaticky přepnout fokus Copilot Chatu na GitHubu. Otevřete Copilot Chat na GitHubu a začněte s \"%s\"", - "teamstoolkit.handlers.verifyCopilotExtensionError": "Nepovedlo se ověřit Copilot Chat na GitHubu. Nainstalujte ho ručně podle %s a zkuste to znovu.", + "teamstoolkit.handlers.installCopilotAndAgent.output": "Pokud chcete při vývoji aplikací nebo přizpůsobování Microsoft 365 Copilotu použít rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit, nainstalujte GitHub Copilot z %s a rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit z %s.", + "teamstoolkit.handlers.installAgent.output": "Pokud chcete při vývoji aplikací nebo přizpůsobování Microsoft 365 Copilotu použít rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit, nainstalujte rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit z %s.", + "teamstoolkit.handlers.installCopilotError": "Nepovedlo se nainstalovat GitHub Copilot chat. Nainstalujte ho podle %s a zkuste to znovu.", + "teamstoolkit.handlers.chatTeamsAgentError": "Nelze automaticky přepnout fokus GitHub Copilot chatu. Otevřít GitHub Copilot chat a začít s \"%s\"", + "teamstoolkit.handlers.verifyCopilotExtensionError": "Nepovedlo se ověřit GitHub Copilot chat. Nainstalujte ji ručně podle %s a zkuste to znovu.", "teamstoolkit.handlers.teamsAgentTroubleshoot.noActiveEditor": "Nepovedlo se najít aktivní editor.", "teamstoolkit.localDebug.npmInstallFailedHintMessage": "'%s' úlohy nebyla úspěšně dokončena. Podrobné informace o chybě najdete v okně terminálu '%s' a pokud chcete problém nahlásit, klikněte na tlačítko Nahlásit problém.", "teamstoolkit.localDebug.openSettings": "Otevřít nastavení", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "Zrušit", "teamstoolkit.localDebug.launchTeamsWebClientError": "Není možné spustit webového klienta Teams.", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "Úloha spuštění webového klienta Teams byla zastavena s ukončovacím kódem %s.", - "teamstoolkit.localDebug.useTestTool": "Nebo můžete také použít %s a pokračovat.", + "teamstoolkit.localDebug.useTestTool": "Alternativně můžete tento krok přeskočit výběrem možnosti %s.", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "Nepovedlo se spustit desktopového klienta Teams.", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "Úloha spuštění desktopového klienta Teams byla zastavena s ukončovacím kódem %s.", "teamstoolkit.localDebug.startDeletingAadProcess": "Zahájit odstraňování Microsoft Entra procesu aplikace", @@ -507,8 +507,8 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "Výpis všech vlastníků, kteří můžou provádět změny v registracích aplikací Teams a Microsoft Entra", "teamstoolkit.manageCollaborator.command": "Správa uživatelů, kteří můžou provádět změny ve vaší aplikaci", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[Upgrade projektu](command:fx-extension.checkProjectUpgrade?%5B%22SideBar%22%5D)\nUpgradujte si svůj projekt Microsoft 365 Agents Toolkit, abyste zajistili kompatibilitu s nejnovější verzí. Vytvoří se záložní adresář se souhrnem upgradu. [Další informace](command:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\nPokud teď nechcete upgradovat, používejte dál Microsoft 365 Agents Toolkit verze 4.x.x.", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Vítá vás Microsoft 365 Sada nástrojů pro agenty!\nZačínáme kurzem s asistencí\n[Vytvořte deklarativního agenta](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Nebo se rovnou pusťte do vývoje aplikace pomocí šablon nebo ukázek aplikací\n[Vytvořte nového agenta nebo aplikaci](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Podívejte se na ukázky](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nNavštivte naši dokumentaci pro vytváření aplikací pro [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) nebo rozšiřte [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Vítá vás Microsoft 365 Sada nástrojů pro agenty!\nZačínáme kurzem s asistencí\n[Vytvořte deklarativního agenta](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Nebo se rovnou pusťte do vývoje aplikace pomocí šablon nebo ukázek aplikací\n[Vytvořte nového agenta nebo aplikaci](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Podívejte se na ukázky](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nNavštivte naši dokumentaci pro vytváření aplikací pro [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) nebo rozšiřte [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Vítá vás rozšíření Microsoft 365 Agents Toolkit!\nZačínáme kurzem s asistencí\n[Vytvořte deklarativního agenta](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Nebo se rovnou pusťte do vývoje aplikace pomocí šablon nebo ukázek aplikací\n[Vytvořte nového agenta nebo aplikaci](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Podívejte se na ukázky](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nVytvořte svou novou aplikaci snadno s GitHub Copilot.\n[Vytvořit aplikaci pomocí GitHub Copilotu](command:fx-extension.invokeChat?%5B%22SideBar%22%5D)\nNavštivte naši dokumentaci pro vytváření aplikací pro [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) nebo rozšiřte [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Vítá vás rozšíření Microsoft 365 Agents Toolkit!\nZačínáme kurzem s asistencí\n[Vytvořte deklarativního agenta](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Nebo se rovnou pusťte do vývoje aplikace pomocí šablon nebo ukázek aplikací\n[Vytvořte nového agenta nebo aplikaci](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Podívejte se na ukázky](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nVytvořte svou novou aplikaci snadno s GitHub Copilot. \n[Vytvořte aplikaci s GitHub Copilot (Preview)](command:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\nNavštivte naši dokumentaci pro vytváření aplikací pro [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) nebo rozšiřte [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", "teamstoolkit.walkthroughs.description": "Vytvořte si vlastního robota pro oznámení pro Microsoft Teams pomocí rozšíření Microsoft 365 Agents Toolkit.", "teamstoolkit.walkthroughs.withChat.description": "Vytvořte si vlastního robota pro oznámení pro Microsoft Teams pomocí rozšíření Microsoft 365 Agents Toolkit.", "teamstoolkit.walkthroughs.steps.teamsToolkitBuildApp.description": "Pokud chcete vytvořit robota pro oznámení, postupujte podle těchto pokynů.\n[Build Notification Bot](command:fx-extension.create?%5B%22SideBar%22%5D)", @@ -527,29 +527,29 @@ "teamstoolkit.walkthroughs.steps.teamsToolkitResources.title": "Prostředky", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.description": "Spusťte a laďte svou aplikaci v emulovaném testovacím prostředí pro agenty Microsoftu 365.\n[Ladit v testovacím prostředí pro agenty Microsoftu 365](command:fx-extension.localdebug)\nTip: K ladění v Teams použijte panel [Spustit a ladit](command:workbench.view.debug) na panelu aktivit.", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.title": "Ladit v testovacím prostředí pro agenty Microsoftu 365", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "Chat s GitHub Copilotem", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.title": "Chatujte s GitHub Copilotem (Preview)", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "Potřebujete další pomoc? [Chatujte s GitHub Copilotem](command:fx-extension.invokeChat?%5B%22WalkThrough%22%5D) a prozkoumejte vývoj aplikace nebo agenta Microsoft 365 Copilota.", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.description": "Potřebujete další pomoc? [Chatujte s GitHub Copilotem](command:fx-extension.invokeChatWithPreviewTag?%5B%22WalkThrough%22%5D) a prozkoumejte vývoj aplikace nebo agenta Microsoft 365 Copilota.", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "Chat s GitHub Copilot", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.title": "Chatujte s Copilotem GitHubu (Preview)", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "Potřebujete další pomoc? [Chatujte s GitHub Copilotem](command:fx-extension.invokeChat?%5B%22WalkThrough%22%5D) a prozkoumejte vývoj aplikace nebo agenta Microsoft 365 Copilotu.", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.description": "Potřebujete další pomoc? [Chatujte s GitHub Copilotem](command:fx-extension.invokeChatWithPreviewTag?%5B%22WalkThrough%22%5D) a prozkoumejte vývoj aplikace nebo agenta Microsoft 365 Copilotu.", "teamstoolkit.walkthroughs.title": "Vytvořit robota oznámení", "teamsagent.walkthrough.title": "Začínáme s rozšířením GitHub Copilot pro Microsoft 365 Agents Toolkit", "teamsagent.walkthrough.description": "Dokončením povinných kroků (s ⚠️ ) nastavte rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit.", "teamsagent.walkthrough.introduction.title": "Úvod", - "teamsagent.walkthrough.introduction.description": "Rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit (@m365agents) zjednodušuje vývoj aplikací a umožňuje přizpůsobení Microsoft 365 Copilota pomocí funkcí chatu. Přečtěte si další informace o [rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents).", - "teamsagent.walkthrough.copilotPlan.title": "Získat přístup ke GitHub Copilotu", - "teamsagent.walkthrough.copilotPlan.description": "**Bezplatná verze GitHub Copilota** je ve výchozím nastavení dostupná pro jednotlivé zákazníky GitHubu s omezeným přístupem k vybraným funkcím. Můžete také používat Copilot prostřednictvím jiného plánu pro organizace nebo podniky. Přečtěte si další informace o [plánech GitHub Copilota](https://aka.ms/teams-agent-github-copilot-plan) a [plánu GitHub Copilot Free](https://aka.ms/teams-agent-github-copilot-free).", - "teamsagent.walkthrough.copilotChat.title": "⚠️Nainstalovat Copilot Chat na GitHubu pro Visual Studio Code", - "teamsagent.walkthrough.copilotChat.description": "S rozšířením Copilot Chat na GitHubu ve Visual Studio Code můžete konverzovat na chatech využívajících umělou inteligenci a generovat kód, lépe porozumět kódu a dokonce i nakonfigurovat editor.\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.introduction.description": "Rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit (@m365agents) zjednodušuje vývoj aplikací a umožňuje přizpůsobení Microsoft 365 Copilotu pomocí funkcí chatu. Přečtěte si další informace o [rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents).", + "teamsagent.walkthrough.copilotPlan.title": "Získat přístup k GitHub Copilot", + "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot Free** je ve výchozím nastavení dostupný pro jednotlivé zákazníky GitHubu s omezeným přístupem k vybraným funkcím. Můžete také používat Copilot prostřednictvím jiné ho plánu pro organizace nebo podniky. Přečtěte si další informace o [plánech GitHub Copilotu](https://aka.ms/teams-agent-github-copilot-plan) a [plánu GitHub Copilot Free](https://aka.ms/teams-agent-github-copilot-free).", + "teamsagent.walkthrough.copilotChat.title": "⚠️Nainstalovat GitHub Copilot Chat pro Visual Studio Code", + "teamsagent.walkthrough.copilotChat.description": "S rozšířením GitHub Copilot Chat v Visual Studio Code můžete konverzovat na chatech využívajících umělou intelilii a generovat kód, lépe porozumět kódu a dokonce i nakonfigurovat editor.\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.install.title": "⚠️Instalace rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit", - "teamsagent.walkthrough.install.description": "[Rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents) (@m365agents) zjednodušuje vývoj aplikací a umožňuje přizpůsobení Microsoft 365 Copilota pomocí funkcí chatu.\n[Nainstalovat rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.install.description": "[Rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents) (@m365agents) zjednodušuje vývoj aplikací a umožňuje přizpůsobení Microsoft 365 Copilotu pomocí funkcí chatu.\n[Nainstalovat rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.installConfirm.title": "⚠️Potvrďte instalaci @m365agents", "teamsagent.walkthrough.installConfirm.description": "Po instalaci [rozšíření GitHub Copilot pro Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents) označte prosím instalaci jako dokončenou.\n[Označit instalaci jako dokončenou](command:fx-extension.markInstallTeamsAgentDone)", - "teamsagent.walkthrough.setup.title": "⚠️Nastavit GitHub Copilot ve Visual Studio Code", - "teamsagent.walkthrough.setup.description": "Přihlaste se ke svému účtu GitHub a začněte. Další informace, jak [nastavit GitHub Copilot](https://aka.ms/teams-agent-github-copilot-setup).\n[Otevřete Copilot Chat na GitHubu](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.setup.title": "⚠️Nastavit GitHub Copilot v Visual Studio Code", + "teamsagent.walkthrough.setup.description": "Přihlaste se ke svému účtu GitHub a začněte. Další informace, jak [set up GitHub Copilot](https://aka.ms/teams-agent-github-copilot-setup).\n[Open GitHub Copilot Chat](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.use.title": "Začněte používat @m365agents", "teamsagent.walkthrough.use.title.preview": "Začněte používat @m365agents (Preview)", "teamsagent.walkthrough.use.description": "Chatujte s rozšířením GitHub Copilot pro Microsoft 365 Agents Toolkit (@m365agents) a vytvářejte aplikace nebo přizpůsobujte a rozšiřujte Microsoft 365 Copilot.", - "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "rozšíření Copilot Chat na GitHubu je už nainstalované.", + "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "rozšíření GitHub Copilot Chat je už nainstalované.", "teamstoolkit.officeAddIn.terminal.installDependency": "Instalujete závislost...", "teamstoolkit.officeAddIn.terminal.validateManifest": "Probíhá ověřování manifestu...", "teamstoolkit.officeAddIn.terminal.stopDebugging": "Zastavuje se ladění...", @@ -611,32 +611,24 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "Vylepšete svého deklarativního agenta", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "Vylepšete uživatelské prostředí deklarativního agenta tím, že přidáte funkce.\n\nElement capabilities v manifestu odemkne různé funkce pro vaše uživatele.", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "Dvě cesty k inteligentním aplikacím", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Vytvářejte inteligentní aplikace pomocí Microsoftu 365 dvěma způsoby:\n🎯 rozšiřte Microsoft Copilot o modul plug-in, nebo\n✨ vytvořte si vlastní Copilot v Teams pomocí sady Microsoft Teams SDK a služeb Azure", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Vytvářejte inteligentní aplikace pomocí Microsoft 365 dvěma způsoby:\n🎯 Rozšiřte Microsoft Copilot pomocí modulu plug-in nebo\n✨ Vytvořte si vlastní Copilot v Teams pomocí knihovny a služeb Azure pro Teams AI.", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "Modul plug-in rozhraní API", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "Převeďte svou aplikaci na modul plug-in, který vylepší dovednosti Copilotu a zvýší produktivitu uživatelů při každodenních úkolech a pracovních postupech. Prozkoumat [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22WalkThrough%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "Sestavit modul plug-in", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "Rozšíření, rozšiřování a přizpůsobení Copilot pomocí modulů plug-in a konektorů Graphu libovolným z následujících způsobů\n[OpenAPI Description Document](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22project-type%22%3A%20%%22%22copilot-agent-type%22%2C%20%22capabilities%22%3A%20%22api-plugin%22%7D%5D)\n[Teams Message Extension](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22search-app%22%2C%20%2 2projektový typ%22%3A%20%22me-type%22%2C%20%22me-architecture%22%3A%20%22bot-plugin%22%7D%5D)\n[Graph Connector](command:fx-extension.openSamples?%5B%22WalkThrough%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "Agent vlastního modulu", - "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Vytvářejte v Teams inteligentní prostředí fungující na bázi přirozeného jazyka a využívejte jeho rozsáhlou uživatelskou základnu pro spolupráci. \nMicrosoft 365 Sada nástrojů pro agenty se integruje s Azure OpenAI a sadou Microsoft Teams SDK, což zjednodušuje vývoj kopilotů a nabízí jedinečné možnosti založené na Teams. \nProzkoumejte [Microsoft Teams SDK](https://aka.ms/teams-ai-library-v2) and [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Vytvářejte v Teams inteligentní prostředí fungující na bázi přirozeného jazyka a využívejte jeho rozsáhlou uživatelskou základnu pro spolupráci. \nMicrosoft 365 Agents Toolkit se integruje s Azure OpenAI a AI knihovnou Teams, což zjednodušuje vývoj kopilotů a nabízí jedinečné možnosti založené na Teams. \nProzkoumat [AI knihovnu Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview) a [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "Agent vlastního modulu sestavení", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "Vytvořte robota agenta AI pro běžné úkoly nebo inteligentního chatbota, který odpoví na konkrétní otázky.\n[Build a Basic AI Chatbot](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-basic%22%2C%20%22project-type%22%3A%22capabilities%22%0 22custom-copilot-type%22capabilities%22%1 7D%22capabilities%22%2 D)\n[Build an AI Agent](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22capabilities%22%5 2C%22capabilities%22%6 7B%22capabilities%22%3A%22capabilities%22%9 22custom-copilot-agent%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[Build a Bot to Chat with Your Data](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-rag%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "Prostředky", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "Prozkoumejte tyto prostředky a vytvářejte inteligentní aplikace a vylepšete své vývojové projekty.\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [Načítání rozšířené generace (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Musíte se přihlásit ke svému účtu Microsoft 365.", - "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 Sada nástrojů pro agenty úspěšně aktualizovala konfigurační soubory projektu (m365agents.yaml a m365agents.local.yaml) o přidanou akci podporující tok ověřování. Můžete pokračovat ke vzdálenému zřizování.", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "Neplatný parametr v příkazu createPluginWithManifest Použití: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string). Platné hodnoty pro LAST_COMMAND: createPluginWithManifest, createDeclarativeCopilotWithManifest", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "Neplatný parametr v příkazu createDeclarativeAgentWithApiSpec Použití: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: string).", + "teamstoolkit.error.KiotaNotInstalled": "Abyste mohli používat tuto funkci, musíte nainstalovat rozšíření Microsoft Kiota s minimální verzí %s.", + "teamstoolkit.handeler.addAuthConfig.notification": "Rozšíření Microsoft 365 Agents Toolkit úspěšně aktualizovalo konfigurační soubory projektu (teamsapp.yaml a teamsapp.local.yaml) o přidanou akci podporující tok ověřování. Můžete pokračovat ke vzdálenému zřizování.", "teamstoolkit.handeler.addAuthConfig.notification.provision": "Zřídit", - "teamstoolkit.mcpUtils.setupMcpServer.message": "Chcete nakonfigurovat MCP server nástrojů Microsoft 365 Sada nástrojů pro agenty? (Tim se vytvoří nebo aktualizuje %s ve vašem pracovním prostoru)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "Potvrdit", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "Přeskočit", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "Server MCP nástrojů Microsoft 365 Sada nástrojů pro agenty byl úspěšně nakonfigurován!", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "Nelze nakonfigurovat server MCP nástrojů Microsoft 365 Sada nástrojů pro agenty. Chyba: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "Projekt deklarativního agenta byl úspěšně vytvořen se zabaleným MCP. Server MCP teď můžete spustit pomocí tlačítka CodeLens „Spustit“ nebo můžete přizpůsobit server MCP v souboru .vscode/mcp.json.\nPokud chcete načíst nástroje ze serveru MCP, klikněte v CodeLens nebo na paletě příkazů na „ATK: aktualizovat akci pomocí MCP“.", - "teamstoolkit.commands.updateActionWithMCP.title": "Načíst akci z MCP", - "teamstoolkit.MCP.FileNotFound": "V souboru .vscode/mcp.json se nenašel konfigurační soubor MCP. Ujistěte se, že jste nastavili server MCP.", - "teamstoolkit.MCP.ContentInvalid": "Obsah konfiguračního souboru MCP je neplatný. Ujistěte se, že obsah ve .vscode/mcp.json je správný.", - "teamstoolkit.MCP.ServerNotFound": "V souboru MCP nebyl nalezen žádný server MCP.", - "teamstoolkit.MCP.NameOrServerUrlMissing": "Chybí název MCP nebo adresa URL serveru.", - "teamstoolkit.MCP.LocalMcpCommandMissing": "Chybí místní příkaz MCP.", - "teamstoolkit.MCP.ToolsNotFound": "Pro server MCP nebyly nalezeny žádné nástroje. Nejprve spusťte server.", - "teamstoolkit.MCP.SelectServerFailed": "Nepodařilo se vybrat server MCP." + "teamstoolkit.config.enableKiota": "Chcete použít rozšíření Kiota k vygenerování specifikace OpenAPI a manifestu modulu plug-in? Toto nastavení můžete také aktualizovat na stránce nastavení.", + "teamstoolkit.config.enableKiota.yes": "Ano", + "teamstoolkit.config.enableKiota.no": "Žádné" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.de.json b/packages/vscode-extension/package.nls.de.json index 17908bd99bb..eda28ce2afd 100644 --- a/packages/vscode-extension/package.nls.de.json +++ b/packages/vscode-extension/package.nls.de.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: Anmeldung wird ausgeführt...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: Wechseln...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "Sandbox-Team aktiviert", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Sie können stattdessen eine Sandbox in Teams für lokale Tests erstellen.", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Sie können ein Sandbox-Team für lokale Tests erstellen.", "teamstoolkit.accountTree.sandboxedTeamDisabled": "Sandbox-Team deaktiviert", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "Die für die Administration von Microsoft 365-Konten zuständige Person hat Sandbox-Team nicht aktiviert.", - "teamstoolkit.accountTree.suggestSandboxedTeam": "[Benutzerdefinierter App-Upload](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) ist in Ihrem Microsoft 365-Konto deaktiviert. Sie können eine Sandbox in Teams mit einem Kanal für Entwicklung und Tests erstellen.", - "teamstoolkit.accountTree.sandboxedTeam.button": "Debuggen in der Sandbox in Teams (Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "[Benutzerdefinierter App-Upload](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) ist in Ihrem Microsoft 365-Konto deaktiviert. Sie können jedoch ein Sandbox-Team für lokale Tests erstellen.", + "teamstoolkit.accountTree.sandboxedTeam.button": "Debuggen in Teams Sandbox (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Microsoft 365 Entwicklersandbox erstellen", "teamstoolkit.appStudioLogin.loginCancel": "Anmeldung abgebrochen Für das Microsoft 365 Agents Toolkit ist ein Microsoft 365-Konto mit der Berechtigung zum Hochladen benutzerdefinierter Apps erforderlich. Wenn Sie Visual Studio abonniert haben, erstellen Sie mit dem Microsoft 365 Developer Program (https://developer.microsoft.com/en-us/microsoft-365/dev-program) eine Entwicklungssandbox.", "teamstoolkit.appStudioLogin.message": "Für das Microsoft 365 Agents Toolkit ist ein Microsoft 365-Konto mit der Berechtigung zum Hochladen benutzerdefinierter Apps erforderlich. Wenn Sie Visual Studio abonniert haben, erstellen Sie mit dem Microsoft 365 Developer Program eine Entwicklungssandbox.", - "teamstoolkit.azureLogin.failToFindSubscription": "Kein Abonnement gefunden. Wechseln Sie zu einem Mandanten mit einem verknüpften Abonnement.", + "teamstoolkit.azureLogin.failToFindSubscription": "Wir konnten kein Abonnement finden.", "teamstoolkit.azureLogin.message": "Das Microsoft 365 Agents Toolkit verwendet die Microsoft-Authentifizierung, um sich bei einem Azure-Konto und -Abonnement anzumelden und die Azure-Ressourcen für Ihr Projekt bereitzustellen. Kosten entstehen erst beim Kauf.", "teamstoolkit.azureLogin.subscription": "Abonnement", "teamstoolkit.azureLogin.selectSubscription": "Abonnement für aktuelle Mandanten-ID auswählen", @@ -162,7 +162,7 @@ "teamstoolkit.commandsTreeViewProvider.previewTitle": "Vorschau Ihrer App anzeigen (F5)", "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle": "Hilfe von GitHub Copilot", "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle.preview": "Hilfe von GitHub Copilot (Vorschau)", - "teamstoolkit.commandsTreeViewProvider.getCopilotHelpDescription": "Chatten Sie mit GitHub Copilot, um zu erfahren, was Sie mit Ihrer App oder Ihrem Microsoft 365 Copilot-Agent tun können.", + "teamstoolkit.commandsTreeViewProvider.getCopilotHelpDescription": "Chatten Sie mit GitHub Copilot, um zu erfahren, was Sie mit Ihrer App oder Microsoft 365 Copilot-Agent tun können.", "teamstoolkit.commandsTreeViewProvider.provision.blockTooltip": "Der Befehl kann während der Bereitstellung nicht ausgeführt werden. Versuchen Sie es nach Abschluss der Bereitstellung noch mal.", "teamstoolkit.commandsTreeViewProvider.provision.running": "Bereitstellung in Arbeit …", "teamstoolkit.commandsTreeViewProvider.provisionDescription": "Führen Sie die Lebenszyklusphase „Bereitstellen“ in der m365agents.yml-Datei aus.", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "Vor der Veröffentlichung Ihrer App wird empfohlen, alle Integrationstestfälle zu überprüfen.", "teamstoolkit.commandsTreeViewProvider.publishTitle": "In Organisation veröffentlichen", "teamstoolkit.commandsTreeViewProvider.shareTitle": "Freigeben", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "Ändern Sie den freigegebenen Bereich des Agenten.", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "Führen Sie die Lebenszyklusphase „Freigeben“ in der m365agents.yml-Datei aus.", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "Los geht's", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "Melden Sie alle Probleme, und teilen Sie uns Ihr Feedback mit.", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "Probleme auf GitHub melden", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Verwalten von Projektmitarbeitenden der Microsoft 365-App (mit Microsoft Entra-App)", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "Aktion hinzufügen", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "Aktion in deklarativem Agent hinzufügen", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "App auf deklarativen Agent erweitern", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Add-In-Projekt auf deklarativen Agent erweitern", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Auf deklarativen Agent erweitern", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Aktion „Add-In-Projekt auf deklarativen Agent erweitern“", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "Aktion erneut generieren", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "Aktion im deklarativen Agenten neu generieren", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "Aktion wird hinzugefügt...", @@ -216,7 +216,7 @@ "teamstoolkit.commandsTreeViewProvider.scriptLabTitle": "Script Lab", "teamstoolkit.commandsTreeViewProvider.scriptLabDescription": "Script Lab Einführungsseite öffnen", "teamstoolkit.commandsTreeViewProvider.promptLibraryTitle": "Prompts für GitHub Copilot anzeigen", - "teamstoolkit.commandsTreeViewProvider.promptLibraryDescription": "Office-Promptbibliothek für GitHub Copilot öffnen", + "teamstoolkit.commandsTreeViewProvider.promptLibraryDescription": "Office-Eingabeaufforderungsbibliothek für GitHub Copilot öffnen", "teamstoolkit.commandsTreeViewProvider.officeAddIn.officePartnerCenterTitle": "Partner Center öffnen", "teamstoolkit.commandsTreeViewProvider.officeAddIn.officePartnerCenterDescription": "Partner Center öffnen", "teamstoolkit.commandsTreeViewProvider.officeAddIn.getStartedTitle": "Erste Schritte", @@ -316,16 +316,16 @@ "teamstoolkit.handlers.installOfficeAddinDependencyCancelled": "Die Abhängigkeitsinstallation wurde abgebrochen, Aber Sie können Abhängigkeiten manuell installieren, indem Sie auf der linken Seite auf die Schaltfläche \"Entwicklung - Abhängigkeiten überprüfen und installieren\" klicken.", "teamstoolkit.localDebug.learnMore": "Weitere Informationen abrufen", "teamstoolkit.localDebug.m365TenantHintMessage": "Nach der Registrierung Ihres Entwicklungsmandanten im Office 365-Zielrelease tritt die Registrierung möglicherweise nach ein paar Tagen in Kraft. Klicken Sie auf die Schaltfläche „Weitere Informationen“, um Details zum Einrichten der Entwicklungsumgebung zum Erweitern von Apps über Microsoft 365 hinweg zu erhalten.", - "teamstoolkit.handlers.askInstallCopilot": "Wenn Sie beim Entwickeln von Apps oder bei der Anpassung von Microsoft 365 Copilot die GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​ verwenden möchten, müssen Sie zuerst GitHub Copilot installieren.", + "teamstoolkit.handlers.askInstallCopilot": "Um die GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit zu verwenden, wenn Sie Apps entwickeln oder Microsoft 365 Copilot anpassen möchten, müssen Sie zuerst GitHub Copilot installieren.", "teamstoolkit.handlers.askInstallCopilot.install": "GitHub Copilot installieren", - "teamstoolkit.handlers.askInstallTeamsAgent": "Wenn Sie beim Entwickeln von Apps oder bei der Anpassung von Microsoft 365 Copilot die GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​ verwenden möchten, installieren Sie es zuerst. Wenn Sie sie bereits installiert haben, bestätigen Sie dies unten.", + "teamstoolkit.handlers.askInstallTeamsAgent": "Wenn Sie die GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit verwenden möchten, wenn Sie Apps entwickeln oder Microsoft 365 Copilot anpassen möchten, installieren Sie es zuerst. Wenn Sie sie bereits installiert haben, bestätigen Sie dies unten.", "teamstoolkit.handlers.askInstallTeamsAgent.install": "Von GitHub.com installieren", "teamstoolkit.handlers.askInstallTeamsAgent.confirmInstall": "Installation bestätigen", - "teamstoolkit.handlers.installCopilotAndAgent.output": "Wenn Sie beim Entwickeln von Apps oder bei der Anpassung von Microsoft 365 Copilot die GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​ verwenden möchten, installieren Sie GitHub Copilot aus \"%s\" und die GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​ aus \"%s\".", - "teamstoolkit.handlers.installAgent.output": "Wenn Sie beim Entwickeln von Apps oder bei der Anpassung von Microsoft 365 Copilot die GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​ verwenden möchten, installieren Sie die GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​ aus \"%s\".", - "teamstoolkit.handlers.installCopilotError": "GitHub Copilot Chat kann nicht installiert werden. Installieren Sie die Erweiterung nach %s, und versuchen Sie es noch mal.", - "teamstoolkit.handlers.chatTeamsAgentError": "GitHub Copilot Chat kann nicht automatisch fokussiert werden. Öffnen Sie GitHub Copilot Chat, und mit beginnen Sie mit \"%s\"", - "teamstoolkit.handlers.verifyCopilotExtensionError": "GitHub Copilot Chat kann nicht überprüft werden. Installieren Sie die Erweiterung manuell nach %s, und versuchen Sie es noch mal.", + "teamstoolkit.handlers.installCopilotAndAgent.output": "Um die GitHub Copilot-Erweiterung für Microsoft 365 Agents Toolkit beim Entwickeln von Apps oder Anpassen von Microsoft 365 Copilot zu verwenden, installieren Sie GitHub Copilot von „%s“ und die GitHub Copilot-Erweiterung für Microsoft 365 Agents Toolkit von „%s“.", + "teamstoolkit.handlers.installAgent.output": "Wenn Sie die GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit beim Entwickeln von Apps oder Anpassen Microsoft 365 Copilot verwenden möchten, installieren Sie die GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit von „%s“.", + "teamstoolkit.handlers.installCopilotError": "GitHub Copilot Chat kann nicht installiert werden. Installieren Sie sie nach %s, und versuchen Sie es noch mal.", + "teamstoolkit.handlers.chatTeamsAgentError": "GitHub Copilot Chat kann nicht automatisch fokussiert werden. GitHub Copilot Chat öffnen und mit \"%s\" beginnen", + "teamstoolkit.handlers.verifyCopilotExtensionError": "GitHub Copilot Chat kann nicht überprüft werden. Installieren Sie sie manuell nach %s, und versuchen Sie es noch mal.", "teamstoolkit.handlers.teamsAgentTroubleshoot.noActiveEditor": "Es wurde kein aktiver Editor gefunden.", "teamstoolkit.localDebug.npmInstallFailedHintMessage": "Die aufgabe '%s' wurde nicht erfolgreich abgeschlossen. Ausführliche Fehlerinformationen finden Sie in '%s' Terminalfenster, und klicken Sie auf die Schaltfläche \"Problem melden\", um das Problem zu melden.", "teamstoolkit.localDebug.openSettings": "Einstellungen öffnen", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "Abbrechen", "teamstoolkit.localDebug.launchTeamsWebClientError": "Starten des Teams-Webclients nicht möglich.", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "Die Aufgabe zum Starten des Teams-Webclients wurde mit dem Exitcode \"%s\" beendet.", - "teamstoolkit.localDebug.useTestTool": "Alternativ können Sie %s verwenden, um den Vorgang fortzusetzen.", + "teamstoolkit.localDebug.useTestTool": "Alternativ können Sie diesen Schritt überspringen, indem Sie die Option \"%s\" auswählen.", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "Der Teams-Desktopclient kann nicht gestartet werden.", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "Die Aufgabe zum Starten des Teams-Desktop-Clients wurde mit dem Exitcode „%s“ gestoppt.", "teamstoolkit.localDebug.startDeletingAadProcess": "Löschen Sie Microsoft Entra Anwendungsprozess.", @@ -528,28 +528,28 @@ "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.description": "Führen Sie Ihre App in der emulierten Microsoft 365 Agents Playground-Umgebung aus, und debuggen Sie sie.\n[Debuggen in Microsoft 365 Agents Playground](befehl:fx-extension.localdebug)\nTipp: Verwenden Sie den Bereich [Ausführen und Debuggen](command:workbench.view.debug) auf der Aktivitätsleiste, um in Teams zu debuggen.", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.title": "Debuggen in Microsoft 365 Agents Playground", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "Mit GitHub Copilot chatten", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.title": "Chatten Sie mit GitHub Copilot (Vorschau)", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "Benötigen Sie weitere Hilfe? [Chatten Sie mit GitHub Copilot](command:fx-extension.invokeChat?%5B%22WalkThrough%22%5D), um die Entwicklung von Apps oder von Microsoft 365 Copilot-Agents zu erkunden.", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.description": "Benötigen Sie weitere Hilfe? [Chatten Sie mit GitHub Copilot](command:fx-extension.invokeChatWithPreviewTag?%5B%22WalkThrough%22%5D), um die Entwicklung von Apps oder Microsoft 365 Copilot-Agents zu erkunden.", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.title": "Chatten mit GitHub Copilot (Vorschau)", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "Benötigen Sie weitere Hilfe? [Chatten mit GitHub Copilot](command:fx-extension.invokeChat?%5B%22WalkThrough%22%5D) zum Untersuchen der App- oder Microsoft 365 Copilot-Agent-Entwicklung.", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.description": "Benötigen Sie weitere Hilfe? [Chatten mit GitHub Copilot](command:fx-extension.invokeChatWithPreviewTag?%5B%22WalkThrough%22%5D), um die App- oder Microsoft 365 Copilot-Agent-Entwicklung zu erkunden.", "teamstoolkit.walkthroughs.title": "Benachrichtigungsbot erstellen", - "teamsagent.walkthrough.title": "Erste Schritte mit der GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​", - "teamsagent.walkthrough.description": "Führen Sie die notwendigen Schritte (mit ⚠️) zum Einrichten der GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​ aus.", + "teamsagent.walkthrough.title": "Erste Schritte mit der GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit.", + "teamsagent.walkthrough.description": "Führen Sie die erforderlichen Schritte (mit ⚠️) aus, um die GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit einzurichten.", "teamsagent.walkthrough.introduction.title": "Einführung", - "teamsagent.walkthrough.introduction.description": "Die GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​ (@m365agents) vereinfacht die App-Entwicklung und ermöglicht die Anpassung von Microsoft 365 Copilot mit Chatfunktionen. Erfahren Sie mehr über die [GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​](https://aka.ms/install-m365agents).", + "teamsagent.walkthrough.introduction.description": "Die GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit (@m365agents) vereinfacht die App-Entwicklung und ermöglicht die Anpassung von Microsoft 365 Copilot mit Chatfunktionen. Erfahren Sie mehr über die [GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents).", "teamsagent.walkthrough.copilotPlan.title": "Zugriff auf GitHub Copilot", - "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot Free** mit eingeschränktem Zugriff auf ausgewählte Features ist standardmäßig für GitHub-Einzelkunden verfügbar. Sie können Copilot auch über einen Organisations- oder Enterprise-Plan nutzen. Weitere Informationen finden Sie unter [GitHub Copilot-Pläne](https://aka.ms/teams-agent-github-copilot-plan) und [GitHub Copilot Free-Plan](https://aka.ms/teams-agent-github-copilot-free).", + "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot Free** ist standardmäßig für einzelne GitHub-Kunden verfügbar, mit eingeschränktem Zugriff auf ausgewählte Features. Sie können Copilot auch über einen anderen organization- oder Enterprise-Plan verwenden. Weitere Informationen zu [GitHub Copilot plans](https://aka.ms/teams-agent-github-copilot-plan) und [GitHub Copilot free plan](https://aka.ms/teams-agent-github-copilot-free).", "teamsagent.walkthrough.copilotChat.title": "⚠️GitHub Copilot Chat für Visual Studio Code installieren", - "teamsagent.walkthrough.copilotChat.description": "Mit der Erweiterung GitHub Copilot Chat in Visual Studio Code können Sie KI-gestützte Chatunterhaltungen führen, um Code zu generieren, Ihr Codeverständnis zu verbessern und sogar Ihren Editor zu konfigurieren.\n[GitHub Copilot Chat installieren](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", - "teamsagent.walkthrough.install.title": "⚠️Installieren Sie die GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​", - "teamsagent.walkthrough.install.description": "Die [GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​](https://aka.ms/install-m365agents) (@m365agents) vereinfacht die App-Entwicklung und ermöglicht die Anpassung von Microsoft 365 Copilot mit Chatfunktionen.\n[GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit installieren](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.copilotChat.description": "Mit der GitHub Copilot Chaterweiterung in Visual Studio Code können Sie KI-gestützte Chatunterhaltungen führen, um Code zu generieren, Ihr Codeverständnis zu verbessern und sogar Ihren Editor zu konfigurieren.\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.install.title": "⚠️Installieren Sie die GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit.", + "teamsagent.walkthrough.install.description": "Die [GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents) (@m365agents) vereinfacht die App-Entwicklung und ermöglicht das Anpassen von Microsoft 365 Copilot mit Chatfunktionen.\n[Installieren der GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.installConfirm.title": "⚠️Installation von @m365agents bestätigen", - "teamsagent.walkthrough.installConfirm.description": "Markieren Sie die Installation als abgeschlossen, nachdem die [GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​](https://aka.ms/install-m365agents) installiert wurde.\n[Installation als abgeschlossen markieren](command:fx-extension.markInstallTeamsAgentDone)", + "teamsagent.walkthrough.installConfirm.description": "Markieren Sie die Installation als abgeschlossen, nachdem die [GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents) installiert wurde.\n[Installation als abgeschlossen markieren](command:fx-extension.markInstallTeamsAgentDone)", "teamsagent.walkthrough.setup.title": "⚠️GitHub Copilot in Visual Studio Code einrichten", - "teamsagent.walkthrough.setup.description": "Melden Sie sich bei Ihrem GitHub-Konto an, und legen Sie los. Weitere Informationen zum [Setup von GitHub Copilot](https://aka.ms/teams-agent-github-copilot-setup).\n[GitHub Copilot Chat öffnen](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.setup.description": "Melden Sie sich bei Ihrem GitHub-Konto an, und legen Sie los. Weitere Informationen zum [set up GitHub Copilot](https://aka.ms/teams-agent-github-copilot-setup).\n[Open GitHub Copilot Chat](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.use.title": "Mit der Verwendung von @m365agents beginnen", "teamsagent.walkthrough.use.title.preview": "Starten der Verwendung von @m365agents (Vorschau)", - "teamsagent.walkthrough.use.description": "Chatten Sie mit der GitHub Copilot-Erweiterung für das Microsoft 365-Agents-Toolkit​ (@m365agents), um Apps zu erstellen oder Microsoft 365 Copilot anzupassen und zu erweitern.", - "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "Erweiterung GitHub Copilot Chat ist bereits installiert.", + "teamsagent.walkthrough.use.description": "Chatten Sie mit der GitHub Copilot-Erweiterung für das Microsoft 365 Agents Toolkit (@m365agents), um Apps zu erstellen oder Microsoft 365 Copilot anzupassen und zu erweitern.", + "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilot Chaterweiterung ist bereits installiert.", "teamstoolkit.officeAddIn.terminal.installDependency": "Abhängigkeit wird installiert...", "teamstoolkit.officeAddIn.terminal.validateManifest": "Manifest wird überprüft...", "teamstoolkit.officeAddIn.terminal.stopDebugging": "Debuggen wird beendet...", @@ -611,7 +611,7 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "Deklarativen Agent verbessern", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "Verbessern Sie die Benutzeroberfläche Ihres deklarativen Agents, indem Sie Funktionen hinzufügen.\n\nDas Funktionselement im Manifest entsperrt verschiedene Features für Ihre Benutzer.", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "Zwei Pfade zu intelligenten Apps", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Erstellen Sie Ihre intelligenten Apps auf zwei Arten mit Microsoft 365:\n🎯 Erweitern von Microsoft Copilot mit einem Plug-In, oder\n✨ Erstellen eines eigenen Copilot in Teams mit dem Microsoft Teams SDK und Azure-Diensten", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Erstellen Sie Ihre intelligenten Apps mit Microsoft 365 auf zwei Arten:\n🎯 Erweitern sie Microsoft Copilot mit einem Plug-In, oder\n✨ Erstellen Sie Ihre eigenen Copilot in Teams mithilfe der Teams AI Library und Azure-Dienste.", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "API-Plug-In", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "Transformieren Sie Ihre App in ein Plug-In, um die Fähigkeiten von Copilot zu verbessern und die Benutzerproduktivität in täglichen Aufgaben und Workflows zu steigern. Explore [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22WalkThrough%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "Plug-In erstellen", @@ -623,20 +623,12 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "Ressourcen", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "Erkunden Sie diese Ressourcen, um intelligente Apps zu erstellen und Ihre Entwicklungsprojekte zu verbessern.\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [Abruf augmented Generation (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Sie müssen sich bei Ihrem Microsoft 365 Konto anmelden.", - "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 Agents Toolkit hat Ihre Projektkonfigurationsdateien (m365agents.yaml und m365agents.local.yaml) erfolgreich aktualisiert, und es wurde eine Aktion zur Unterstützung des Authentifizierungsflusses hinzugefügt. Sie können mit der Remotebereitstellung fortfahren.", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "Ungültiger Parameter im Befehl \"createPluginWithManifest\". Syntax: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string). Gültige Werte für LAST_COMMAND: createPluginWithManifest, createDeclarativeCopilotWithManifest.", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "Ungültiger Parameter im CreateDeclarativeAgentWithApiSpec-Befehl. Syntax: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: string).", + "teamstoolkit.error.KiotaNotInstalled": "Sie müssen die Microsoft Kiota-Erweiterung mit mindestens %s installieren, um dieses Feature zu verwenden.", + "teamstoolkit.handeler.addAuthConfig.notification": "Das Microsoft 365 Agents Toolkit hat Ihre Projektkonfigurationsdateien (teamsapp.yaml und teamsapp.local.yaml) erfolgreich mit einer zusätzlichen Aktion aktualisiert, um den Authentifizierungsfluss zu unterstützen. Sie können mit der Remotebereitstellung fortfahren.", "teamstoolkit.handeler.addAuthConfig.notification.provision": "Bereitstellen", - "teamstoolkit.mcpUtils.setupMcpServer.message": "M365 Agents Toolkit MCP-Server konfigurieren? (Hierdurch wird %s in Ihrem Arbeitsbereich erstellt oder aktualisiert.)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "Bestätigen", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "Überspringen", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "M365 Agents Toolkit MCP-Server erfolgreich konfiguriert!", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "Der M365 Agents Toolkit MCP-Server kann nicht konfiguriert werden. Fehler: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "Das Projekt des deklarativen Agenten wurde erfolgreich mit einem MCP-Wrapper erstellt. Sie können den MCP-Server jetzt über die CodeLens-Schaltfläche „Start“ starten oder Ihren MCP-Server in der .vscode/mcp.json-Datei anpassen.\nUm Tools vom MCP-Server abzurufen, klicken Sie in CodeLens oder Command Palatte auf „ATK: Aktion mit MCP aktualisieren“.", - "teamstoolkit.commands.updateActionWithMCP.title": "Aktion von MCP abrufen", - "teamstoolkit.MCP.FileNotFound": "Die MCP-Konfigurationsdatei wurde in .vscode/mcp.json nicht gefunden. Stellen Sie sicher, dass Sie den MCP-Server eingerichtet haben.", - "teamstoolkit.MCP.ContentInvalid": "Der Inhalt der MCP-Konfigurationsdatei ist ungültig. Stellen Sie sicher, dass der Inhalt in .vscode/mcp.json korrekt ist.", - "teamstoolkit.MCP.ServerNotFound": "In der MCP-Datei wurde kein MCP-Server gefunden.", - "teamstoolkit.MCP.NameOrServerUrlMissing": "McP-Name oder Server-URL fehlt.", - "teamstoolkit.MCP.LocalMcpCommandMissing": "Der lokale MCP-Befehl fehlt.", - "teamstoolkit.MCP.ToolsNotFound": "Für den MCP-Server wurden keine Tools gefunden. Führen Sie den Server zuerst aus.", - "teamstoolkit.MCP.SelectServerFailed": "Fehler beim Auswählen des MCP-Servers." + "teamstoolkit.config.enableKiota": "Möchten Sie die Kiota-Erweiterung verwenden, um eine OpenAPI-Spezifikation und ein Plug-In-Manifest zu generieren? Sie können diese Einstellung auch auf der Einstellungsseite aktualisieren.", + "teamstoolkit.config.enableKiota.yes": "Ja", + "teamstoolkit.config.enableKiota.no": "Nein" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.es.json b/packages/vscode-extension/package.nls.es.json index 580292f6536..daf1e01e157 100644 --- a/packages/vscode-extension/package.nls.es.json +++ b/packages/vscode-extension/package.nls.es.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: Iniciando sesión...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: cambiando...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "Equipo de espacio aislado habilitado", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "En su lugar, puede crear un entorno de pruebas en Teams para realizar pruebas locales.", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Puede crear un equipo de espacio aislado para pruebas locales.", "teamstoolkit.accountTree.sandboxedTeamDisabled": "Equipo de espacio aislado deshabilitado", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "El administrador de la cuenta de Microsoft 365 no ha habilitado el equipo de espacio aislado.", - "teamstoolkit.accountTree.suggestSandboxedTeam": "La función [Carga de aplicaciones personalizadas](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) está deshabilitada en su cuenta de Microsoft 365. Puede crear un entorno de pruebas en Teams con un canal para el desarrollo y las pruebas.", - "teamstoolkit.accountTree.sandboxedTeam.button": "Depurar en el entorno aislado de Teams (Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "La [carga de aplicación personalizada](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) está deshabilitada en su cuenta de Microsoft 365. Pero puede crear un equipo de espacio aislado para pruebas locales.", + "teamstoolkit.accountTree.sandboxedTeam.button": "Depurar en el espacio aislado de Teams (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Crear un espacio aislado para desarrolladores Microsoft 365", "teamstoolkit.appStudioLogin.loginCancel": "Se canceló el inicio de sesión. El kit de herramientas de agentes de Microsoft 365 necesita una cuenta de Microsoft 365 con permiso para cargar aplicaciones personalizadas. Si es suscriptor de Visual Studio, cree un espacio aislado para desarrolladores con el programa de desarrolladores de Microsoft 365 (https://developer.microsoft.com/en-us/microsoft-365/dev-program).", "teamstoolkit.appStudioLogin.message": "El kit de herramientas de agentes de Microsoft 365 necesita una cuenta de Microsoft 365 con permiso para cargar aplicaciones personalizadas. Si es suscriptor de Visual Studio, cree un espacio aislado para desarrolladores con el programa de desarrolladores de Microsoft 365.", - "teamstoolkit.azureLogin.failToFindSubscription": "No se encontró ninguna suscripción. Cambiar a un inquilino con una suscripción vinculada.", + "teamstoolkit.azureLogin.failToFindSubscription": "No pudimos encontrar ninguna suscripción.", "teamstoolkit.azureLogin.message": "El kit de herramientas de agentes de Microsoft 365 utilizará la autenticación de Microsoft para iniciar sesión en la cuenta y suscripción de Azure para implementar los recursos de Azure para el proyecto. No se le cobrará hasta que confirme.", "teamstoolkit.azureLogin.subscription": "suscripción", "teamstoolkit.azureLogin.selectSubscription": "Seleccionar suscripción para el id. de inquilino actual", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "Antes de publicar la aplicación, se recomienda validar todos los casos de prueba de integración.", "teamstoolkit.commandsTreeViewProvider.publishTitle": "Publicar en la organización", "teamstoolkit.commandsTreeViewProvider.shareTitle": "Compartir", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "Cambie el ámbito compartido del agente.", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "Ejecute la fase del ciclo de vida de \"recurso compartido\" en m365agents.yml archivo.", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "Introducción", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "Notifique cualquier problema y háganos saber sus comentarios", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "Notificar problemas en GitHub", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Administrar colaboradores de la aplicación Microsoft 365 (con la aplicación Microsoft Entra)", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "Agregar acción", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "Agregar acción en agente declarativo", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extender la aplicación a Agente declarativo", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extender el proyecto de complemento a Agente declarativo", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extender a Agente declarativo", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extender el proyecto de complemento a la acción de Agente declarativo", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "Regenerar acción", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "Regeneración de la acción en el agente declarativo", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "Agregando acción...", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "Cancelar", "teamstoolkit.localDebug.launchTeamsWebClientError": "No se puede iniciar el cliente web de Teams.", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "La tarea para iniciar el cliente web de Teams se detuvo con el código de salida \"%s\".", - "teamstoolkit.localDebug.useTestTool": "También puede utilizar %s para continuar.", + "teamstoolkit.localDebug.useTestTool": "Como alternativa, puede omitir este paso eligiendo la opción %s.", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "No se puede iniciar el cliente de escritorio de Teams.", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "La tarea para iniciar el cliente de escritorio de Teams se detuvo con el código de salida '%s'.", "teamstoolkit.localDebug.startDeletingAadProcess": "Inicie la eliminación de Microsoft Entra proceso de aplicación.", @@ -507,8 +507,8 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "Enumerar todos los propietarios que pueden realizar cambios en los registros de aplicaciones de Teams y Microsoft Entra", "teamstoolkit.manageCollaborator.command": "Administrar quién puede realizar cambios en la aplicación", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[Actualizar proyecto](comando:fx-extension.checkProjectUpgrade?%5B%22SideBar%22%5D)\nActualice el proyecto del kit de herramientas de agentes de Microsoft 365 para que siga siendo compatible con la última versión. Se creará un directorio de copia de seguridad junto con un resumen de actualización. [Más información](comando:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\nSi no desea actualizar ahora, siga usando la versión 4.x.x del kit de herramientas de agentes de Microsoft 365.", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "¡Bienvenido al Kit de herramientas para agentes de Microsoft 365!\nIntroducción con un tutorial guiado\n[Crear un agente declarativo](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n O sumérjase directamente en el desarrollo de aplicaciones con plantillas o ejemplos de aplicaciones\n[Crear un nuevo agente o aplicación](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Ver ejemplos](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nVisite nuestra documentación para crear aplicaciones para [Microsoft Teams](command:fx-extension.openDocument?% 5B%22documentName%22%2C%22build-apps%22%5D) o ampliar [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "¡Bienvenido al Kit de herramientas para agentes de Microsoft 365!\nIntroducción con un tutorial guiado\n[Crear un agente declarativo](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n O sumérjase directamente en el desarrollo de aplicaciones con plantillas o ejemplos de aplicaciones\n[Crear un nuevo agente o aplicación](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Ver ejemplos](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nVisite nuestra documentación para crear aplicaciones para [Microsoft Teams](command:fx-extension.openDocument?% 5B%22documentName%22%2C%22build-apps%22%5D) o ampliar [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Le damos la bienvenida a Microsoft 365 Agents Toolkit.\nIntroducción a un tutorial guiado\n[Compilar un agente declarativo](comando:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n O bien, vaya directamente al desarrollo de aplicaciones con plantillas o ejemplos de aplicaciones\n[Crear un nuevo agente o aplicación](comando:fx-extension.create?%5B%22SideBar%22%5D)\n[Ver ejemplos](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nCree su nueva aplicación sin esfuerzo con GitHub Copilot.\n[Crear aplicación con GitHub Copilot](comando:fx-extension.invokeChat?%5B%22SideBar%22%5D)\nVisite nuestra documentación para compilar aplicaciones para [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) o ampliar [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Le damos la bienvenida a Microsoft 365 Agents Toolkit.\nIntroducción a un tutorial guiado\n[Compilar un agente declarativo](comando:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n O bien, vaya directamente al desarrollo de aplicaciones con plantillas o ejemplos de aplicaciones\n[Crear un nuevo agente o aplicación](comando:fx-extension.create?%5B%22SideBar%22%5D)\n[Ver ejemplos](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nCree su nueva aplicación sin esfuerzo con GitHub Copilot. \n[Crear aplicación con GitHub Copilot (versión preliminar)](command:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\nVisite nuestra documentación para compilar aplicaciones para [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) o ampliar [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", "teamstoolkit.walkthroughs.description": "Compile un bot de notificaciones personalizado para Microsoft Teams utilizando el kit de herramientas de agentes de Microsoft 365.", "teamstoolkit.walkthroughs.withChat.description": "Compile un bot de notificaciones personalizado para Microsoft Teams utilizando el kit de herramientas de agentes de Microsoft 365.", "teamstoolkit.walkthroughs.steps.teamsToolkitBuildApp.description": "Siga estos pasos para crear el bot de notificación.\n[Build Notification Bot](command:fx-extension.create?%5B%22SideBar%22%5D)", @@ -611,32 +611,24 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "Mejorar el agente declarativo", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "Agregue funcionalidades para mejorar la experiencia del usuario del agente declarativo.\n\nEl elemento capabilities del manifiesto desbloquea varias características para los usuarios.", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "Dos rutas de acceso a aplicaciones inteligentes", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Cree sus aplicaciones inteligentes con Microsoft 365 de dos maneras:\n🎯 Amplíe Microsoft Copilot con un complemento, o\n✨ Cree su propio Copilot en Teams utilizando el SDK de Microsoft Teams y los servicios de Azure", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Cree sus aplicaciones inteligentes con Microsoft 365 de dos formas:\n🎯 Amplíe Microsoft Copilot con un complemento o\n✨ Compile sus propias Copilot en Teams con la biblioteca de IA de Teams y los servicios de Azure.", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "Complemento de API", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "Transforme su aplicación en un complemento para mejorar las aptitudes de Copilot y aumentar la productividad de los usuarios en las tareas y flujos de trabajo diarios. Explorar [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22ThroughThrough%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "Compilar un complemento", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "Expanda, enriquezca y personalice Copilot con complementos y conectores de Graph de cualquiera de las formas siguientes\n[OpenAPI Description Document](command:fx-extension.createFromThroughthrough?%5B%22ThroughThrough%22%2C%20%7B%22project-type%22%3A%20%22copilot-agent-type%22%2C%20%22capabilities%22%3A%20%22api-plugin%22%7D%5D)\n[Teams Message Extension](command:fx-extension.createFromThroughthrough?%5B%22ThroughThrough%22%2C%20%7B%22capabilities%22%3A%20%22search-app%22%2C%20%2 2project-type%22%3A%20%22me-type%22%2C%20%22me-architecture%22%3A%20%22bot-plugin%22%7D%5D)\n[Graph Connector](command:fx-extension.openSamples?%5B%22ThroughThrough%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "Agente de motor personalizado", - "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Cree experiencias inteligentes basadas en el lenguaje natural en Teams, aprovechando su amplia base de usuarios para la colaboración. \nKit de herramientas para agentes de Microsoft 365 se integra con Azure OpenAI y Microsoft Teams SDK para optimizar el desarrollo de Copilot y ofrecer capacidades únicas basadas en Teams. \nExplore [Microsoft Teams SDK](https://aka.ms/teams-ai-library-v2) y [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Compile experiencias inteligentes y basadas en lenguaje natural en Teams, aprovechando su amplia base de usuarios para la colaboración. \nEl kit de herramientas de agentes de Microsoft 365 se integra con Azure OpenAI y la biblioteca de IA de Teams para simplificar el desarrollo de Copilot y ofrecer capacidades únicas basadas en Teams. \nExplore [la biblioteca de IA de Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview) y [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "Agente de motor personalizado de compilación", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "Cree un bot de agente de IA para tareas comunes o un bot de chat inteligente para responder a preguntas específicas\n[Build a Basic AI Chatbot](command:fx-extension.createFromThroughthrough?%5B%22ThroughThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-basic%22%2C%20%22project-type%22%3A%22capabilities%22%0 22custom-copilot-type%22capabilities%22%1 7D%22capabilities%22%2 D)\n[Build an AI Agent](command:fx-extension.createFromThroughthrough?%5B%22ThroughThrough%22capabilities%22%5 2C%22capabilities%22%6 7B%22capabilities%22%3A%22capabilities%22%9 22custom-copilot-agent%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[Build a Bot to Chat with Your Data](command:fx-extension.createFromThroughthrough?%5B%22ThroughThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-rag%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "Recursos", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "Explore estos recursos para crear aplicaciones inteligentes y mejorar sus proyectos de desarrollo\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [Generación aumentada de recuperación (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Debe iniciar sesión en su cuenta de Microsoft 365.", - "teamstoolkit.handeler.addAuthConfig.notification": "El kit de herramientas para agentes de Microsoft 365 actualizó correctamente los archivos de configuración del proyecto (m365agents.yaml and m365agents.local.yaml) con la acción añadida para soportar el flujo de autenticación. Continúe con el aprovisionamiento remoto.", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "Parámetro no válido en el comando createPluginWithManifest. Uso: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string). Valores válidos para LAST_COMMAND: createPluginWithManifest, createDeclarativeCopilotWithManifest.", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "Parámetro no válido en el comando createDeclarativeAgentWithApiSpec. Uso: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: cadena).", + "teamstoolkit.error.KiotaNotInstalled": "Para usar esta característica, es necesario instalar la extensión MicrosoftCfga con la versión mínima %s.", + "teamstoolkit.handeler.addAuthConfig.notification": "El kit de herramientas de agentes de Microsoft 365 actualizó correctamente los archivos de configuración del proyecto (teamsapp.yaml y teamsapp.local.yaml) con la acción añadida para soportar el flujo de autenticación. Continúe con el aprovisionamiento remoto.", "teamstoolkit.handeler.addAuthConfig.notification.provision": "Aprovisionar", - "teamstoolkit.mcpUtils.setupMcpServer.message": "¿Configurar el servidor MCP de M365 Agents Toolkit? (Esto creará o actualizará %s en su área de trabajo)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "Confirmar", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "Omitir", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "Kit de herramientas para agentes M365 ¡Servidor MCP configurado correctamente!", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "No se ha podido configurar el servidor MCP de M365 Agents Toolkit. Error: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "Proyecto de agente declarativo creado con éxito con un MCP encapsulado. Ahora puede iniciar el servidor MCP desde el botón \"Iniciar\" de CodeLens o personalizar su servidor MCP en el archivo .vscode/mcp.json.\nPara obtener herramientas del servidor MCP, haga clic en \"ATK: Actualizar acción con MCP\" en CodeLens o Command Palatte.", - "teamstoolkit.commands.updateActionWithMCP.title": "Obtener acción de MCP", - "teamstoolkit.MCP.FileNotFound": "No se ha encontrado el archivo de configuración MCP en .vscode/mcp.json. Asegúrese de haber configurado el servidor MCP.", - "teamstoolkit.MCP.ContentInvalid": "El contenido del archivo de configuración MCP no es válido. Asegúrese de que el contenido de .vscode/mcp.json sea correcto.", - "teamstoolkit.MCP.ServerNotFound": "No se ha encontrado ningún servidor MCP en el archivo MCP.", - "teamstoolkit.MCP.NameOrServerUrlMissing": "Falta el nombre MCP o la URL del servidor.", - "teamstoolkit.MCP.LocalMcpCommandMissing": "Falta el comando MCP local.", - "teamstoolkit.MCP.ToolsNotFound": "No se encontraron herramientas para el servidor MCP. Ejecute primero el servidor.", - "teamstoolkit.MCP.SelectServerFailed": "No se ha podido seleccionar el servidor MCP." + "teamstoolkit.config.enableKiota": "¿Quiere usar la extensión Kiota para generar la especificación de OpenAPI y el manifiesto del complemento? También puede actualizar esta configuración desde la página de configuración.", + "teamstoolkit.config.enableKiota.yes": "Sí", + "teamstoolkit.config.enableKiota.no": "No" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.fr.json b/packages/vscode-extension/package.nls.fr.json index 849791d9cfa..4542a2748d1 100644 --- a/packages/vscode-extension/package.nls.fr.json +++ b/packages/vscode-extension/package.nls.fr.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365 : connexion en cours...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365 : basculement en cours...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "Équipe en mode sandbox activée", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Vous pouvez créer un bac à sable dans Teams pour effectuer des tests locaux.", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Vous pouvez créer une équipe en mode sandbox pour effectuer des tests locaux.", "teamstoolkit.accountTree.sandboxedTeamDisabled": "Équipe en mode sandbox désactivée", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "L’administrateur du compte Microsoft 365 n’a pas activé l’équipe en mode sandbox.", - "teamstoolkit.accountTree.suggestSandboxedTeam": "[Chargement d’application personnalisée](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) est désactivé dans votre compte Microsoft 365. Vous pouvez créer un bac à sable dans Teams avec un canal dédié au développement et aux tests.", - "teamstoolkit.accountTree.sandboxedTeam.button": "Déboguez dans le bac à sable dans Teams (Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "[Chargement d’application personnalisée](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) est désactivé dans votre compte Microsoft 365. Vous pouvez toutefois créer une équipe en mode sandbox pour effectuer des tests locaux.", + "teamstoolkit.accountTree.sandboxedTeam.button": "Déboguer dans un sandbox Teams (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Créer un bac à sable de développeur Microsoft 365", "teamstoolkit.appStudioLogin.loginCancel": "La connexion est annulée. Microsoft 365 Agents Toolkit nécessite un compte Microsoft 365 avec une autorisation de chargement d’application personnalisée. Si vous êtes abonné à Visual Studio, créez un bac à sable pour développeurs avec le programme Microsoft 365 pour les développeurs (https://developer.microsoft.com/en-us/microsoft-365/dev-program).", "teamstoolkit.appStudioLogin.message": "Microsoft 365 Agents Toolkit nécessite un compte Microsoft 365 avec une autorisation de chargement d’application personnalisée. Si vous êtes abonné à Visual Studio, créez un bac à sable pour développeurs avec le programme Microsoft 365 pour les développeurs.", - "teamstoolkit.azureLogin.failToFindSubscription": "Aucun abonnement trouvé. Basculez vers un locataire disposant d’un abonnement lié.", + "teamstoolkit.azureLogin.failToFindSubscription": "Nous n’avons pas trouvé d’abonnement.", "teamstoolkit.azureLogin.message": "L’extension Microsoft 365 Agents Toolkit utilisera l’authentification Microsoft pour se connecter au compte et abonnement Azure afin de déployer les ressources Azure pour votre projet. Vous ne serez facturé que lorsque vous confirmerez.", "teamstoolkit.azureLogin.subscription": "souscription", "teamstoolkit.azureLogin.selectSubscription": "Sélectionner un abonnement pour l’ID de locataire actuel", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "Avant de publier votre application, nous vous recommandons de valider tous les cas de test d’intégration.", "teamstoolkit.commandsTreeViewProvider.publishTitle": "Publier dans l’organisation", "teamstoolkit.commandsTreeViewProvider.shareTitle": "Partager", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "Modifiez la portée partagée de l’agent.", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "Exécutez l’étape de cycle de vie « partager » dans le fichier m365agents.yml.", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "Démarrer", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "Signaler les problèmes et nous faire part de vos commentaires", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "Signaler des problèmes sur GitHub", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Gérer les collaborateurs de l’application Microsoft 365 (avec l’application Microsoft Entra)", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "Ajouter une action", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "Ajouter une action dans l’agent déclaratif", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Étendre l’application à l’agent déclaratif", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Étendre le projet de complément à l’agent déclaratif", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Étendre à l’agent déclaratif", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Étendre le projet de complément à l’action d’agent déclaratif", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "Régénérer l’action", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "Régénérer l’action dans l’agent déclaratif", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "Ajout de l’action...", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "Annuler", "teamstoolkit.localDebug.launchTeamsWebClientError": "Impossible de lancer le client web Teams.", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "La tâche de lancement du client web Teams s’est arrêtée avec le code de sortie '%s'.", - "teamstoolkit.localDebug.useTestTool": "Vous pouvez également utiliser %s pour continuer.", + "teamstoolkit.localDebug.useTestTool": "Vous pouvez également ignorer cette étape en choisissant l’option %s.", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "Impossible de lancer le client de bureau Teams.", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "Tâche de lancement du client de bureau Teams arrêtée avec le code de sortie « %s ».", "teamstoolkit.localDebug.startDeletingAadProcess": "Début de la suppression de Microsoft Entra processus d’application.", @@ -507,8 +507,8 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "Dressez la liste de tous les propriétaires autorisés à modifier les inscriptions de vos applications Teams et Microsoft Entra", "teamstoolkit.manageCollaborator.command": "Gérez les personnes autorisées à apporter des modifications à votre application", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[Projet de mise à niveau](command:fx-extension.checkProjectUpgrade?%5B%22SideBar%22%5D)\nMettez à niveau votre projet Microsoft 365 Agents Toolkit pour rester compatible avec la dernière version. Un répertoire de sauvegarde va être créé avec un résumé de mise à niveau. [Autres informations](command:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\nSi vous ne voulez pas effectuer la mise à niveau maintenant, continuez à utiliser Microsoft 365 Agents Toolkit version 4.x.x.", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Bienvenue dans Microsoft 365 Agents Toolkit !\nPrise en main d’un tutoriel guidé\n[Créer un agent déclaratif](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Ou passer directement au développement d’applications avec des modèles ou des exemples d’application\n[Créer une application/un agent](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Afficher les exemples](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nConsultez notre documentation pour générer des applications pour [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) ou étendez [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Bienvenue dans Kit de création d’assistants Microsoft 365 !\nPrise en main d’un tutoriel guidé\n[Créer un agent déclaratif](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Ou passer directement au développement d’applications avec des modèles ou des exemples d’application\n[Créer une application/un agent](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Afficher les exemples](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nConsultez notre documentation pour générer des applications pour [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) ou étendez [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Bienvenue dans Microsoft 365 Agents Toolkit !\nPrise en main d’un tutoriel guidé\n[Créer un agent déclaratif](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Ou passer directement au développement d’applications avec des modèles ou des exemples d’application\n[Créer une application/un agent](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Afficher les exemples](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nCréez votre application sans effort avec GitHub Copilot.\n[Créer une application avec GitHub Copilot](command:fx-extension.invokeChat?%5B%22SideBar%22%5D)\nConsultez notre documentation pour générer des applications pour [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) ou étendez [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Bienvenue dans Microsoft 365 Agents Toolkit !\nPrise en main d’un tutoriel guidé\n[Créer un agent déclaratif](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Ou passer directement au développement d’applications avec des modèles ou des exemples d’application\n[Créer une application/un agent](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Afficher les exemples](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nCréez votre application sans effort avec GitHub Copilot. \n[Créer une application avec GitHub Copilot (Préversion)](command:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\nConsultez notre documentation pour générer des applications pour [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) ou étendez [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", "teamstoolkit.walkthroughs.description": "Générez un bot de notification personnalisé pour Microsoft Teams en utilisant Microsoft 365 Agents Toolkit.", "teamstoolkit.walkthroughs.withChat.description": "Générez un bot de notification personnalisé pour Microsoft Teams en utilisant Microsoft 365 Agents Toolkit.", "teamstoolkit.walkthroughs.steps.teamsToolkitBuildApp.description": "Suivez ces étapes pour créer votre bot de notification.\n[Build Notification Bot](command :fx-extension.create ?%5B%22SideBar%22%5D)", @@ -611,32 +611,24 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "Améliorer votre agent déclaratif", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "Améliorez l’expérience utilisateur de votre agent déclaratif en ajoutant des fonctionnalités.\n\nL’élément capabilities du manifeste déverrouille diverses fonctionnalités pour vos utilisateurs.", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "Deux chemins d’accès aux applications intelligentes", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Créez vos applications intelligentes avec Microsoft 365 de deux manières :\n🎯 Étendez Microsoft Copilot avec un plugin, ou\n✨ Créez votre propre Copilot pour Teams en utilisant le SDK Microsoft Teams et les services Azure", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Créez vos applications intelligentes avec Microsoft 365 de deux manières :\n🎯 Étendez Microsoft Copilot à l’aide d’un plug-in ou\n✨ Créez votre propre Copilot pour Teams à l’aide de la bibliothèque IA Teams et des services Azure", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "Plug-in API", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "Transformez votre application en plug-in pour améliorer les compétences de Copilot et améliorer la productivité des utilisateurs dans les tâches et les workflows quotidiens. Explorer [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command :fx-extension.checkCopilotAccess ?%5B%22Through%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "Générer un plug-in", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "Développez, enrichissez et personnalisez Copilot avec des plug-ins et des connecteurs Graph de l’une des manières suivantes\n[OpenAPI Description Document](command :fx-extension.createFromFromFromThrough ?%5B%22Through%22%2C%20%7B%22ptype roject%22%3A%20%22copilot-agent-type%22%2C%20%22capabilities%22%3A%20%22api-plugin%22%7D%5D)\n[Teams Message Extension](command :fx-extension.createFromSearchthrough ?%5B%22SearchThrough%22%2C%20%7B%22capabilities%22%3A%20%22search-app%22%2C%20%2 2project-type%22%3A%20%type 22me%22%architecture 2C%20%22me%22%3A%20%plug-in 22bot%22%7D%5D)\n[Graph Connector](command :fx-extension.openSamples ?%5B%22Through%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "Agent du moteur personnalisé", - "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Créez vos expériences intelligentes basées sur le langage naturel dans Teams, en tirant parti de sa vaste base d’utilisateurs pour la collaboration. \nKit de création d’assistants Microsoft 365 s'intègre à Azure OpenAI et au SDK Microsoft Teams afin de rationaliser le développement du copilote et d'offrir des fonctionnalités uniques basées sur Teams. \nExplorez le [SDK Microsoft Teams](https://aka.ms/teams-ai-library-v2) et le [service Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Créez vos expériences intelligentes basées sur le langage naturel dans Teams, en tirant parti de sa vaste base d’utilisateurs pour la collaboration. \nMicrosoft 365 Agents Toolkit s’intègre à Azure OpenAI et à la bibliothèque IA Teams pour simplifier le développement de copilotes et offrir des fonctionnalités uniques basées sur Teams. \nExplorer la [bibliothèque IA Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview) et [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "Créer un agent de moteur personnalisé", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "Créez un bot d’agent IA pour les tâches courantes ou un chatbot intelligent pour répondre à des questions spécifiques\n[Build a Basic AI Chatbot](command :fx-extension.createFromFromFromThrough ?%5B%22Through%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-basic%22%2C%20%22project-type%22%3A%22capabilities%22%0 22custom-copilot-type%22capabilities%22%1 7D%22capabilities%22%2 D)\n[Build an AI Agent](command :fx-extension.createFromFromFromThrough ?%5B%22FromThrough%22capabilities%22%5 2C%22capabilities%22%6 7B%22capabilities%22%3A%22capabilities%22%9 22custom-22copilot-agent%22%2C%20%type 22project%22%3A%20%22custom-copilot type%22%7D%5D)\n[Build a Bot to Chat with Your Data](command :fx-extension.createFromFromFromThrough ?%5B%22FromThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copi raglot%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "Ressources", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "Explorez ces ressources pour créer des applications intelligentes et améliorer vos projets de développement\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [Génération augmentée de récupération (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Vous devez vous connecter à votre compte Microsoft 365.", - "teamstoolkit.handeler.addAuthConfig.notification": "Le Kit de création d’assistants Microsoft 365 a correctement mis à jour vos fichiers de configuration de projet (m365agents.yaml and m365agents.local.yaml) avec une action ajoutée pour prendre en charge le flux d’authentification. Vous pouvez passer à l’approvisionnement à distance.", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "Paramètre non valide dans la commande createPluginWithManifest. Utilisation : createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string). Valeurs valides pour LAST_COMMAND : createPluginWithManifest, createDeclarativeCopilotWithManifest.", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "Paramètre non valide dans la commande createDeclarativeAgentWithApiSpec. Utilisation : createDeclarativeAgentWithApiSpec(API_SPEC_PATH : string).", + "teamstoolkit.error.KiotaNotInstalled": "Vous devez installer l’extension Microsoft Kiota avec une version minimale %s pour utiliser cette fonctionnalité.", + "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 Agents Toolkit a correctement mis à jour vos fichiers de configuration de projet (teamsapp.yaml et teamsapp.local.yaml) avec une action ajoutée pour prendre en charge le flux d’authentification. Vous pouvez passer à l’approvisionnement à distance.", "teamstoolkit.handeler.addAuthConfig.notification.provision": "Approvisionner", - "teamstoolkit.mcpUtils.setupMcpServer.message": "Configurer le serveur MCP M365 Agents Toolkit ? (Cette opération crée ou met à jour %s dans votre espace de travail)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "Confirmer", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "Ignorer", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "Le serveur MCP M365 Agents Toolkit a été configuré avec succès !", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "Impossible de configurer le serveur MCP M365 Agents Toolkit. Erreur : %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "Le projet d’agent déclaratif a été créé avec un wrapper MCP. Vous pouvez maintenant démarrer le serveur MCP depuis le bouton CodeLens « Démarrer » ou personnaliser votre serveur MCP dans le fichier .vscode/mcp.json.\nPour récupérer les outils depuis le serveur MCP, cliquez sur « ATK : Mettre à jour l’action avec MCP » dans CodeLens ou dans la palette de commandes.", - "teamstoolkit.commands.updateActionWithMCP.title": "Récupérez l’action depuis MCP", - "teamstoolkit.MCP.FileNotFound": "Fichier de configuration MCP introuvable dans .vscode/mcp.json. Vérifiez que vous avez configuré le serveur MCP.", - "teamstoolkit.MCP.ContentInvalid": "Le contenu du fichier de configuration MCP est invalide. Vérifiez que le contenu de .vscode/mcp.json est correct.", - "teamstoolkit.MCP.ServerNotFound": "Aucun serveur MCP n’a été trouvé dans le fichier MCP.", - "teamstoolkit.MCP.NameOrServerUrlMissing": "Le nom MCP ou l’URL du serveur est manquant.", - "teamstoolkit.MCP.LocalMcpCommandMissing": "Une commande MCP locale est manquante.", - "teamstoolkit.MCP.ToolsNotFound": "Aucun outil trouvé pour le serveur MCP. Exécutez d’abord le serveur.", - "teamstoolkit.MCP.SelectServerFailed": "Échec de la sélection du serveur MCP." + "teamstoolkit.config.enableKiota": "Voulez-vous utiliser l’extension Kiota pour générer la spécification OpenAPI et le manifeste du plug-in ? Vous pouvez également mettre à jour ce paramètre à partir de la page des paramètres.", + "teamstoolkit.config.enableKiota.yes": "Oui", + "teamstoolkit.config.enableKiota.no": "Non" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.it.json b/packages/vscode-extension/package.nls.it.json index 7ee2baf75c4..77ea98a01e1 100644 --- a/packages/vscode-extension/package.nls.it.json +++ b/packages/vscode-extension/package.nls.it.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: accesso in corso...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: Switching...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "Team in modalità sandbox abilitato", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Puoi creare invece una sandbox in Teams per test locali.", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Puoi creare un team in modalità sandbox per i test locali.", "teamstoolkit.accountTree.sandboxedTeamDisabled": "Team in modalità sandbox disabilitato", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "L'amministratore dell'account Microsoft 365 non ha abilitato il team in modalità sandbox.", - "teamstoolkit.accountTree.suggestSandboxedTeam": "[Caricamento app personalizzate](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) è disabilitato nel tuo account Microsoft 365. Puoi creare una sandbox in Teams con un canale per sviluppo e test.", - "teamstoolkit.accountTree.sandboxedTeam.button": "Debug in sandbox in Teams (Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "[Caricamento app personalizzate](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) è disabilitato nel tuo account Microsoft 365. Ma puoi creare un team in modalità sandbox per i test locali.", + "teamstoolkit.accountTree.sandboxedTeam.button": "Debug nella sandbox di Teams (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Crea una sandbox per sviluppatori Microsoft 365", "teamstoolkit.appStudioLogin.loginCancel": "L'accesso è stato annullato. Microsoft 365 Agents Toolkit richiede un account Microsoft 365 con l'autorizzazione per il caricamento di app personalizzate. Gli abbonati a Visual Studio possono creare una sandbox per sviluppatori con il programma per sviluppatori Microsoft 365 (https://developer.microsoft.com/it-it/microsoft-365/dev-program).", "teamstoolkit.appStudioLogin.message": "Microsoft 365 Agents Toolkit richiede un account Microsoft 365 con l'autorizzazione per il caricamento di app personalizzate. Gli abbonati a Visual Studio possono creare una sandbox per sviluppatori con il programma per sviluppatori Microsoft 365.", - "teamstoolkit.azureLogin.failToFindSubscription": "Non sono state trovate sottoscrizioni. Passa a un tenant con una sottoscrizione collegata.", + "teamstoolkit.azureLogin.failToFindSubscription": "Non è stato possibile trovare una sottoscrizione.", "teamstoolkit.azureLogin.message": "Microsoft 365 Agents Toolkit userà l'autenticazione Microsoft per accedere all'account Azure e alla sottoscrizione per distribuire le risorse di Azure per il progetto. Non verrà effettuato alcun addebito fino alla conferma.", "teamstoolkit.azureLogin.subscription": "sottoscrizione", "teamstoolkit.azureLogin.selectSubscription": "Selezionare la sottoscrizione per l'ID tenant corrente", @@ -162,7 +162,7 @@ "teamstoolkit.commandsTreeViewProvider.previewTitle": "Visualizzare l'app in anteprima (F5)", "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle": "Richiesta supporto da GitHub Copilot", "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle.preview": "Richiesta supporto da GitHub Copilot (anteprima)", - "teamstoolkit.commandsTreeViewProvider.getCopilotHelpDescription": "Avvia una chat con GitHub Copilot per scoprire cosa puoi fare con l'app o con l'agente di Microsoft 365 Copilot.", + "teamstoolkit.commandsTreeViewProvider.getCopilotHelpDescription": "Avviare una chat con GitHub Copilot per scoprire cosa si può fare con l'app o con l'agente di Microsoft 365 Copilot.", "teamstoolkit.commandsTreeViewProvider.provision.blockTooltip": "Non è possibile eseguire il comando durante il provisioning. Riprova al termine del provisioning.", "teamstoolkit.commandsTreeViewProvider.provision.running": "Provisioning in corso...", "teamstoolkit.commandsTreeViewProvider.provisionDescription": "Eseguire la fase del ciclo di vita 'provision' nel file m365agents.yml.", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "Prima di pubblicare l'app, è consigliabile convalidare tutti i test case di integrazione.", "teamstoolkit.commandsTreeViewProvider.publishTitle": "Pubblica nell'organizzazione", "teamstoolkit.commandsTreeViewProvider.shareTitle": "Condividi", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "Modifica l'ambito condiviso dell'agente.", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "Esegui la fase del ciclo di vita 'share' nel file m365agents.yml.", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "Inizia", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "Segnala eventuali problemi e invia il tuo feedback", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "Segnala problemi in GitHub", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Gestire i collaboratori dell'app Microsoft 365 (con l'app Microsoft Entra)", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "Aggiungi azione", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "Aggiungi azione nell'agente dichiarativo", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Estendi l'app all'agente dichiarativo", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Estendi il progetto del componente aggiuntivo all'agente dichiarativo", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Estendi all'agente dichiarativo", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Azione Estendi il progetto del componente aggiuntivo all'agente dichiarativo", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "Azione di rigenerazione", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "Azione di rigenerazione nell'agente dichiarativo", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "Aggiunta dell'azione...", @@ -215,7 +215,7 @@ "teamstoolkit.commandsTreeViewProvider.validateManifestDescription": "Convalida il file manifesto del progetto di componenti aggiuntivi di Office", "teamstoolkit.commandsTreeViewProvider.scriptLabTitle": "Script Lab", "teamstoolkit.commandsTreeViewProvider.scriptLabDescription": "Apri Script Lab pagina introduttiva", - "teamstoolkit.commandsTreeViewProvider.promptLibraryTitle": "Visualizza prompt per GitHub Copilot", + "teamstoolkit.commandsTreeViewProvider.promptLibraryTitle": "Visualizza Richieste per GitHub Copilot", "teamstoolkit.commandsTreeViewProvider.promptLibraryDescription": "Apri raccolta prompt di Office per GitHub Copilot", "teamstoolkit.commandsTreeViewProvider.officeAddIn.officePartnerCenterTitle": "Apri Partner Center", "teamstoolkit.commandsTreeViewProvider.officeAddIn.officePartnerCenterDescription": "Apri Partner Center", @@ -316,16 +316,16 @@ "teamstoolkit.handlers.installOfficeAddinDependencyCancelled": "L'installazione delle dipendenze è stata annullata, ma è possibile installare le dipendenze manualmente facendo clic sul pulsante 'Sviluppo - Controlla e installa dipendenze' a sinistra.", "teamstoolkit.localDebug.learnMore": "Ottieni altre informazioni", "teamstoolkit.localDebug.m365TenantHintMessage": "Dopo aver registrato il tenant sviluppatore in Office 365 Target Release, la registrazione potrebbe avere effetto dopo un paio di giorni. Fare clic sul pulsante \"Altre informazioni\" per dettagli sulla configurazione dell'ambiente di sviluppo per estendere le app in Microsoft 365.", - "teamstoolkit.handlers.askInstallCopilot": "Per usare l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365 durante lo sviluppo di app o la personalizzazione di Microsoft 365 Copilot, dovrai installare prima di tutto GitHub Copilot.", - "teamstoolkit.handlers.askInstallCopilot.install": "Installa GitHub Copilot", - "teamstoolkit.handlers.askInstallTeamsAgent": "Per usare l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365 durante lo sviluppo di app o la personalizzazione di Microsoft 365 Copilot, installala prima di tutto. Se l'hai già installata, conferma qui sotto.", + "teamstoolkit.handlers.askInstallCopilot": "Per usare l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit durante lo sviluppo di app o la personalizzazione di Microsoft 365 Copilot, dovrai installare prima di tutto GitHub Copilot.", + "teamstoolkit.handlers.askInstallCopilot.install": "Install GitHub Copilot", + "teamstoolkit.handlers.askInstallTeamsAgent": "Per usare l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit durante lo sviluppo di app o la personalizzazione di Microsoft 365 Copilot, installala prima di tutto. Se la si ha già installata, confermare qui sotto.", "teamstoolkit.handlers.askInstallTeamsAgent.install": "Installa da GitHub.com", "teamstoolkit.handlers.askInstallTeamsAgent.confirmInstall": "Conferma installazione", - "teamstoolkit.handlers.installCopilotAndAgent.output": "Per usare l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365 durante lo sviluppo di app o la personalizzazione di Microsoft 365 Copilot, installa GitHub Copilot da \"%s\" e l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365 da \"%s\".", - "teamstoolkit.handlers.installAgent.output": "Per usare l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365 durante lo sviluppo di app o la personalizzazione di Microsoft 365 Copilot, installa l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365 da \"%s\".", - "teamstoolkit.handlers.installCopilotError": "Non è possibile installare GitHub Copilot Chat. Installalo dopo %s e riprova.", - "teamstoolkit.handlers.chatTeamsAgentError": "Non è possibile spostare automaticamente lo stato attivo su GitHub Copilot Chat. Apri GitHub Copilot Chat e inizia con \"%s\"", - "teamstoolkit.handlers.verifyCopilotExtensionError": "Impossibile verificare GitHub Copilot Chat. Installalo manualmente dopo %s e riprova.", + "teamstoolkit.handlers.installCopilotAndAgent.output": "Per usare l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit durante lo sviluppo di app o la personalizzazione di Microsoft 365 Copilot, installa GitHub Copilot da \"%s\" e l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit da \"%s\".", + "teamstoolkit.handlers.installAgent.output": "Per usare l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit durante lo sviluppo di app o la personalizzazione di Microsoft 365 Copilot, installa l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit da \"%s\".", + "teamstoolkit.handlers.installCopilotError": "Non è possibile installare GitHub Copilot chat. Installarlo dopo %s e riprovare.", + "teamstoolkit.handlers.chatTeamsAgentError": "Non è possibile spostare automaticamente lo stato attivo GitHub Copilot chat. Apri GitHub Copilot chat e inizia con \"%s\"", + "teamstoolkit.handlers.verifyCopilotExtensionError": "Impossibile verificare GitHub Copilot chat. Installarlo manualmente dopo %s e riprovare.", "teamstoolkit.handlers.teamsAgentTroubleshoot.noActiveEditor": "Non è possibile trovare un editor attivo.", "teamstoolkit.localDebug.npmInstallFailedHintMessage": "Il '%s' dell'attività non è stato completato. Per informazioni dettagliate sull'errore, controllare '%s' finestra del terminale e per segnalare il problema, fare clic sul pulsante 'Segnala problema'.", "teamstoolkit.localDebug.openSettings": "Apri impostazioni", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "Annulla", "teamstoolkit.localDebug.launchTeamsWebClientError": "Non è possibile avviare il client Web di Teams.", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "L'attività di avvio del client Web di Teams è stata arrestata con il codice di uscita '%s'.", - "teamstoolkit.localDebug.useTestTool": "In alternativa, puoi usare %s per continuare.", + "teamstoolkit.localDebug.useTestTool": "In alternativa, è possibile ignorare questo passaggio scegliendo l'opzione %s.", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "Non è possibile avviare il client desktop di Teams.", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "L'attività di avvio del client desktop di Teams è stata arrestata con il codice di uscita '%s'.", "teamstoolkit.localDebug.startDeletingAadProcess": "Avviare l'eliminazione Microsoft Entra processo dell'applicazione.", @@ -529,27 +529,27 @@ "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.title": "Eseguire il debug nel playground Microsoft 365 Agents", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "Chatta con GitHub Copilot", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.title": "Chatta con GitHub Copilot (anteprima)", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "Serve ulteriore assistenza? [Avvia una chat con GitHub Copilot](command:fx-extension.invokeChat?%5B%22WalkThrough%22%5D) per esplorare l'app o lo sviluppo di agenti di Microsoft 365 Copilot.", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.description": "Serve ulteriore assistenza? [Avvia una chat con GitHub Copilot](command:fx-extension.invokeChatWithPreviewTag?%5B%22WalkThrough%22%5D) per esplorare l'app o lo sviluppo di agenti di Microsoft 365 Copilot.", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "Serve ulteriore assistenza? [Avviare una chat con GitHub Copilot](command:fx-extension.invokeChat?%5B%22WalkThrough%22%5D) per esplorare l'app o lo sviluppo di agenti di Microsoft 365 Copilot.", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.description": "Serve ulteriore assistenza? [Avviare una chat con GitHub Copilot](command:fx-extension.invokeChatWithPreviewTag?%5B%22WalkThrough%22%5D) per esplorare l'app o lo sviluppo di agenti di Microsoft 365 Copilot.", "teamstoolkit.walkthroughs.title": "Crea un bot di notifica", - "teamsagent.walkthrough.title": "Attività iniziali con l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365", - "teamsagent.walkthrough.description": "Completa i passaggi obbligatori (con ⚠️) per configurare l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365.", + "teamsagent.walkthrough.title": "Attività iniziali con l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit", + "teamsagent.walkthrough.description": "Completa i passaggi obbligatori (con ⚠️) per configurare l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit.", "teamsagent.walkthrough.introduction.title": "Introduzione", - "teamsagent.walkthrough.introduction.description": "L'estensione GitHub Copilot per Toolkit agenti di Microsoft 365 (@m365agents) semplifica lo sviluppo di app e consente la personalizzazione di Microsoft 365 Copilot con funzionalità di chat. Altre informazioni sull'[estensione GitHub Copilot per Toolkit agenti di Microsoft 365](https://aka.ms/install-m365agents).", + "teamsagent.walkthrough.introduction.description": "L'estensione GitHub Copilot per Microsoft 365 Agents Toolkit (@m365agents) semplifica lo sviluppo di app e consente la personalizzazione di Microsoft 365 Copilot con funzionalità di chat. Altre informazioni sull'[estensione GitHub Copilot per Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents).", "teamsagent.walkthrough.copilotPlan.title": "Ottieni accesso a GitHub Copilot", "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot gratuito** è disponibile per i singoli clienti di GitHub per impostazione predefinita, con accesso limitato a determinate funzionalità. Puoi utilizzare Copilot anche tramite un'altra organizzazione o un piano enterprise. Altre informazioni sui [piani di GitHub Copilot](https://aka.ms/teams-agent-github-copilot-plan) e sul [piano gratuito di GitHub Copilot](https://aka.ms/teams-agent-github-copilot-free).", - "teamsagent.walkthrough.copilotChat.title": "⚠️Installa GitHub Copilot Chat per Visual Studio Code", - "teamsagent.walkthrough.copilotChat.description": "Con l'estensione GitHub Copilot Chat in Visual Studio Code, puoi avere conversazioni di chat basate su intelligenza artificiale per generare codice, migliorare la comprensione del codice e persino configurare l'editor.\n[Installa GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", - "teamsagent.walkthrough.install.title": "⚠️Installa l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365", - "teamsagent.walkthrough.install.description": "L'[estensione GitHub Copilot per Toolkit agenti di Microsoft 365](https://aka.ms/install-m365agents) (@m365agents) semplifica lo sviluppo di app e consente la personalizzazione di Microsoft 365 Copilot con funzionalità di chat.\n[Installa l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.copilotChat.title": "⚠️Installa chat GitHub Copilot per Visual Studio Code", + "teamsagent.walkthrough.copilotChat.description": "Con l'estensione chat GitHub Copilot in Visual Studio Code, puoi avere conversazioni di chat basate su intelligenza artificiale per generare codice, migliorare la comprensione del codice e persino configurare l'editor.\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.install.title": "⚠️Installa l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit", + "teamsagent.walkthrough.install.description": "L'[estensione GitHub Copilot per Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents) (@m365agents) semplifica lo sviluppo di app e consente la personalizzazione di Microsoft 365 Copilot con funzionalità di chat.\n[Installare l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.installConfirm.title": "⚠️Conferma l'installazione di @m365agents", - "teamsagent.walkthrough.installConfirm.description": "Contrassegna l'installazione come completata dopo aver installato l'[estensione GitHub Copilot per Toolkit agenti di Microsoft 365](https://aka.ms/install-m365agents).\n[Contrassegna l'installazione come completata](command:fx-extension.markInstallTeamsAgentDone)", + "teamsagent.walkthrough.installConfirm.description": "Contrassegnare l'installazione come completata dopo aver installato l'[estensione GitHub Copilot per Microsoft 365 Agents Toolkit](https://aka.ms/install-m365agents).\n[Contrassegnare l'installazione come completata](command:fx-extension.markInstallTeamsAgentDone)", "teamsagent.walkthrough.setup.title": "⚠️Configura GitHub Copilot in Visual Studio Code", "teamsagent.walkthrough.setup.description": "Accedi al tuo account GitHub e inizia. Altre informazioni su come [configurare GitHub Copilot](https://aka.ms/teams-agent-github-copilot-setup).\n[Apri GitHub Copilot Chat](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.use.title": "Inizia a usare @m365agents", "teamsagent.walkthrough.use.title.preview": "Inizia a usare @m365agents (anteprima)", - "teamsagent.walkthrough.use.description": "Chatta con l'estensione GitHub Copilot per Toolkit agenti di Microsoft 365 (@m365agents) per creare app o personalizzare ed estendere Microsoft 365 Copilot.", - "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "L'estensione GitHub Copilot Chat è già installata.", + "teamsagent.walkthrough.use.description": "Chatta con l'estensione GitHub Copilot per Microsoft 365 Agents Toolkit (@m365agents) per creare app o personalizzare ed estendere Microsoft 365 Copilot.", + "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilot'estensione chat è già installata.", "teamstoolkit.officeAddIn.terminal.installDependency": "Installazione della dipendenza...", "teamstoolkit.officeAddIn.terminal.validateManifest": "Convalida del file manifesto in corso...", "teamstoolkit.officeAddIn.terminal.stopDebugging": "Arresto del debug...", @@ -611,7 +611,7 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "Migliorare l'agente dichiarativo", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "È possibile migliorare l'esperienza utente dell'agente dichiarativo aggiungendo funzionalità.\n\nL'elemento capabilities nel manifesto sblocca varie funzionalità per gli utenti.", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "Due percorsi per le app intelligenti", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Crea le tue app intelligenti con Microsoft 365 in due modi:\n🎯 Estendi Microsoft Copilot con un plugin, oppure\n✨ Crea il tuo Copilot in Teams usando l'SDK di Microsoft Teams e i servizi Azure", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Crea le tue app intelligenti con Microsoft 365 in due modi:\n🎯 Estendi Microsoft Copilot con un plug-in oppure\n✨ Crea i tuoi Copilot in Teams usando la libreria di Teams per intelligenza artificiale e i servizi di Azure", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "Plug-in API", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "Trasforma l'app in un plug-in per migliorare le competenze di Copilot e aumentare la produttività degli utenti nelle attività e nei flussi di lavoro giornalieri. Esplora [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22WalkThrough%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "Crea un plug-in", @@ -623,20 +623,12 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "Risorse", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "Esplora queste risorse per creare app intelligenti e migliorare i progetti di sviluppo\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [Retrieval Augmented Generation (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Devi accedere al tuo account Microsoft 365.", - "teamstoolkit.handeler.addAuthConfig.notification": "Toolkit agenti di Microsoft 365 ha aggiornato correttamente i file di configurazione del progetto (m365agents.yaml e m365agents.local.yaml) con l'azione aggiunta per supportare il flusso di autenticazione. È possibile procedere con il provisioning remoto.", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "Parametro non valido nel comando createPluginWithManifest. Sintassi: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string). Valori validi per LAST_COMMAND: createPluginWithManifest, createDeclarativeCopilotWithManifest.", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "Parametro non valido nel comando createDeclarativeAgentWithApiSpec. Sintassi: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: string).", + "teamstoolkit.error.KiotaNotInstalled": "Per usare questa funzionalità, è necessario installare l'estensione Microsoft Kiota con la versione minima %s.", + "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 Agents Toolkit ha aggiornato correttamente i file di configurazione del progetto (teamsapp.yaml e teamsapp.local.yaml) con l'azione aggiunta per supportare il flusso di autenticazione. Puoi procedere con il provisioning remoto.", "teamstoolkit.handeler.addAuthConfig.notification.provision": "Provisioning", - "teamstoolkit.mcpUtils.setupMcpServer.message": "Configurare il server MCP di M365 Agents Toolkit? Questa operazione creerà o aggiornerà %s nel tuo spazio di lavoro.", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "Conferma", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "Ignora", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "Server MCP di M365 Agents Toolkit configurato correttamente!", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "Non è stato possibile configurare il server MCP di M365 Agents Toolkit. Errore: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "Il progetto agente dichiarativo è stato creato con un MCP incapsulato. Ora puoi avviare il server MCP dal pulsante \"Start\" di CodeLens o personalizzare il server MCP nel file .vscode/mcp.json.\nPer scaricare gli strumenti dal server MCP, fai clic su \"ATK: Update Action with MCP\" da CodeLens o dalla Command Palette.", - "teamstoolkit.commands.updateActionWithMCP.title": "Recupera azione da MCP", - "teamstoolkit.MCP.FileNotFound": "File di configurazione MCP non trovato in .vscode/mcp.json. Verificare di aver configurato il server MCP.", - "teamstoolkit.MCP.ContentInvalid": "Il contenuto del file di configurazione MCP non è valido. Verificare che il contenuto di .vscode/mcp.json sia corretto.", - "teamstoolkit.MCP.ServerNotFound": "Nessun server MCP trovato nel file MCP.", - "teamstoolkit.MCP.NameOrServerUrlMissing": "Nome MCP o URL del server mancante.", - "teamstoolkit.MCP.LocalMcpCommandMissing": "Comando MCP locale mancante.", - "teamstoolkit.MCP.ToolsNotFound": "Nessuno strumento trovato per il server MCP. Avviare prima il server.", - "teamstoolkit.MCP.SelectServerFailed": "Selezione del server MCP non riuscita." + "teamstoolkit.config.enableKiota": "Desideri utilizzare l'estensione Kiota per generare il manifesto del plug-in e la specifica OpenAPI? Puoi anche aggiornare questa impostazione dalla pagina delle impostazioni.", + "teamstoolkit.config.enableKiota.yes": "Sì", + "teamstoolkit.config.enableKiota.no": "No" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.ja.json b/packages/vscode-extension/package.nls.ja.json index 9ff29e16288..f5618f62700 100644 --- a/packages/vscode-extension/package.nls.ja.json +++ b/packages/vscode-extension/package.nls.ja.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: サインインしています...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: 切り替えています...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "サンドボックス化されたチームが有効", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "代わりに、ローカル テスト用のサンドボックスを Teams で作成できます。", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "ローカル テスト用にサンドボックス化されたチームを作成できます。", "teamstoolkit.accountTree.sandboxedTeamDisabled": "サンドボックス化されたチームが無効", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "Microsoft 365 のアカウント管理者がサンドボックス化されたチームを有効にしていません。", - "teamstoolkit.accountTree.suggestSandboxedTeam": "ご使用の Microsoft 365 アカウントでは、[カスタム アプリのアップロード](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) が無効になっています。開発とテスト用のチャネルを使用して、Teams でサンドボックスを作成できます。", - "teamstoolkit.accountTree.sandboxedTeam.button": "Teams のサンドボックスでデバッグする (Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "ご使用の Microsoft 365 アカウントでは、[カスタム アプリのアップロード](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) が無効になっています。ただし、ローカル テスト用にサンドボックス化されたチームを作成できます。", + "teamstoolkit.accountTree.sandboxedTeam.button": "Teams サンドボックスでデバッグする (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Microsoft 365開発者サンドボックスの作成", "teamstoolkit.appStudioLogin.loginCancel": "サインインが取り消されました。Microsoft 365 Agents Toolkit には、カスタム アプリのアップロード アクセス許可を持つMicrosoft 365 アカウントが必要です。Visual Studio サブスクライバーの場合は、Microsoft 365 開発者プログラム (https://developer.microsoft.com/en-us/microsoft-365/dev-program) を使用して開発者サンドボックスを作成します。", "teamstoolkit.appStudioLogin.message": "Microsoft 365 Agents Toolkit には、カスタム アプリのアップロード アクセス許可を持つMicrosoft 365 アカウントが必要です。Visual Studio サブスクライバーの場合は、Microsoft 365 開発者プログラムを使用して開発者サンドボックスを作成します。", - "teamstoolkit.azureLogin.failToFindSubscription": "サブスクリプションが見つかりません。リンクされたサブスクリプションを持つテナントに切り替えます。", + "teamstoolkit.azureLogin.failToFindSubscription": "サブスクリプションが見つかりませんでした。", "teamstoolkit.azureLogin.message": "Microsoft 365 Agents Toolkit は、Microsoft 認証を使用して Azure アカウントとサブスクリプションにサインインし、プロジェクトの Azure リソースをデプロイします。確認するまで請求されません。", "teamstoolkit.azureLogin.subscription": "サブスクリプション", "teamstoolkit.azureLogin.selectSubscription": "現在のテナント ID のサブスクリプションの選択", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "アプリを公開する前に、すべての統合テスト ケースを検証することをお勧めします。", "teamstoolkit.commandsTreeViewProvider.publishTitle": "組織に公開", "teamstoolkit.commandsTreeViewProvider.shareTitle": "共有", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "エージェントの共有スコープを変更します。", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "m365agents.yml ファイルで \"共有\" ライフサイクル ステージを実行します。", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "開始", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "問題を報告し、フィードバックをお寄せください", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "GitHub で問題を報告する", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Microsoft 365 アプリ コラボレーターの管理 (Microsoft Entra アプリを使用)", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "アクションの追加", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "宣言型エージェントにアクションを追加する", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "アプリを宣言型エージェントに拡張する", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "アドイン プロジェクトを宣言型エージェントに拡張する", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "宣言型エージェントに拡張する", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "アドイン プロジェクトを宣言型エージェント アクションに拡張する", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "アクションの再生成", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "宣言型エージェントでアクションを再生成します", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "アクションを追加しています...", @@ -323,9 +323,9 @@ "teamstoolkit.handlers.askInstallTeamsAgent.confirmInstall": "インストールの確認", "teamstoolkit.handlers.installCopilotAndAgent.output": "アプリの開発時または Microsoft 365 Copilot のカスタマイズ時に Microsoft 365 Agents Toolkit 用 GitHub Copilot 拡張機能を使用するには、\"%s\" から GitHub Copilot をインストールし、GitHub Copilot Extension for Microsoft 365 Agents Toolkit を \"%s\" からインストールします。", "teamstoolkit.handlers.installAgent.output": "アプリの開発時または Microsoft 365 Copilot のカスタマイズ時に Microsoft 365 Agents Toolkit 用 GitHub Copilot 拡張機能を使用するには、\"%s\" から Microsoft 365 Agents Toolkit 用の GitHub Copilot 拡張機能をインストールします。", - "teamstoolkit.handlers.installCopilotError": "GitHub Copilot Chat インストールできません。%s に従ってインストールしてから、もう一度お試しください。", - "teamstoolkit.handlers.chatTeamsAgentError": "GitHub Copilot Chat 自動的にフォーカスできません。GitHub Copilot Chat を開いて、\"%s\" で開始", - "teamstoolkit.handlers.verifyCopilotExtensionError": "GitHub Copilot Chat を確認できません。%s に従って手動でインストールしてから、もう一度お試しください。", + "teamstoolkit.handlers.installCopilotError": "チャットGitHub Copilotインストールできません。%s に従ってインストールしてから、もう一度お試しください。", + "teamstoolkit.handlers.chatTeamsAgentError": "チャットGitHub Copilot自動的にフォーカスできません。チャットGitHub Copilot開いて、\"%s\" で開始", + "teamstoolkit.handlers.verifyCopilotExtensionError": "チャットGitHub Copilot確認できません。%s に従って手動でインストールしてから、もう一度お試しください。", "teamstoolkit.handlers.teamsAgentTroubleshoot.noActiveEditor": "アクティブなエディターが見つかりません。", "teamstoolkit.localDebug.npmInstallFailedHintMessage": "タスク '%s' が正常に完了しませんでした。エラー情報の詳細については、ターミナル ウィンドウチェック '%s'し、問題を報告するには、[問題の報告] ボタンをクリックしてください。", "teamstoolkit.localDebug.openSettings": "設定を開く", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "キャンセル", "teamstoolkit.localDebug.launchTeamsWebClientError": "Teams Web クライアントを起動できません。", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "Teams Web クライアントを起動するタスクが終了コード '%s' で停止しました。", - "teamstoolkit.localDebug.useTestTool": "または、%s を使って続行できます。", + "teamstoolkit.localDebug.useTestTool": "または、この手順をスキップするには、[%s] オプションを選択します。", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "Teams デスクトップ クライアントを起動できません。", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "Teams デスクトップ クライアントを起動するタスクが、終了コード '%s' で停止しました。", "teamstoolkit.localDebug.startDeletingAadProcess": "アプリケーション プロセスMicrosoft Entra削除を開始します。", @@ -507,8 +507,8 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "Teams と Microsoft Entra アプリの登録に変更を加えることができる、すべての所有者を一覧表示します", "teamstoolkit.manageCollaborator.command": "アプリに変更を加えるユーザーを管理します", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[プロジェクトのアップグレード](コマンド:fx-extension.checkProjectUpgrade?%5B%22SideBar%22%5D)\nMicrosoft 365 Agents Toolkit プロジェクトをアップグレードして、最新バージョンとの互換性を維持します。バックアップ ディレクトリは、アップグレードの概要と共に作成されます。[詳細情報](コマンド:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\n今すぐアップグレードしない場合は、Microsoft 365 Agents Toolkit バージョン 4.x.x を引き続き使用してください。", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Microsoft 365 エージェント ツールキットへようこそ!\nガイド付きチュートリアルを開始する\n[宣言型エージェントの構築](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n または、アプリ テンプレートやサンプルを使用してアプリ開発にすぐに取り組む\n[新しいエージェント/アプリの作成](command:fx-extension.create?%5B%22SideBar%22%5D)\n[サンプルの表示](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) 用のアプリの構築、[Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D) の拡張に関して、Microsoft のドキュメントを参照してください。", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Microsoft 365 エージェント ツールキットへようこそ!\nガイド付きチュートリアルを開始する\n[宣言型エージェントの構築](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n または、アプリ テンプレートやサンプルを使用してアプリ開発にすぐに取り組む\n[新しいエージェント/アプリの作成](command:fx-extension.create?%5B%22SideBar%22%5D)\n[サンプルの表示](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) 用のアプリの構築、[Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D) の拡張に関して、Microsoft のドキュメントを参照してください。", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Microsoft 365 Agents Toolkit へようこそ!\nガイド付きチュートリアルを開始する\n[宣言型エージェントの構築](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n または、アプリ テンプレートやサンプルを使用してアプリ開発にすぐに取り組む\n[新しいエージェント/アプリの作成](command:fx-extension.create?%5B%22SideBar%22%5D)\n[サンプルの表示](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nGitHub Copilot を使用して新しいアプリを簡単に作成しましょう。\n[GitHub Copilot を使用してアプリを作成する](command:fx-extension.invokeChat?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) 用のアプリを構築したり、[Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D) を拡張したりするには、Microsoft のドキュメントをご覧ください。", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Microsoft 365 Agents Toolkit へようこそ!\nガイド付きチュートリアルを開始する\n[宣言型エージェントの構築](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n または、アプリ テンプレートやサンプルを使用してアプリ開発にすぐに取り組む\n[新しいエージェント/アプリの作成](command:fx-extension.create?%5B%22SideBar%22%5D)\n[サンプルの表示](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nGitHub Copilot を使用して新しいアプリを簡単に作成しましょう。\n[GitHub Copilot (プレビュー) を使用してアプリを作成する](command:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) 用のアプリを構築したり、[Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D) を拡張したりするには、Microsoft のドキュメントをご覧ください。", "teamstoolkit.walkthroughs.description": "Microsoft 365 Agents Toolkit を使用して、Microsoft Teams 用のカスタム通知ボットを構築します。", "teamstoolkit.walkthroughs.withChat.description": "Microsoft 365 Agents Toolkit を使用して、Microsoft Teams 用のカスタム通知ボットを構築します。", "teamstoolkit.walkthroughs.steps.teamsToolkitBuildApp.description": "通知ボットを作成するには、次の手順に従います。\n[Build Notification Bot](command:fx-extension.create?%5B%22SideBar%22%5D)", @@ -538,7 +538,7 @@ "teamsagent.walkthrough.introduction.description": "Microsoft 365 Agents Toolkit (@m365agents) 用 GitHub Copilot 拡張機能を使用すると、アプリの開発が簡素化され、チャット機能を使用して Microsoft 365 Copilot をカスタマイズできます。詳細については、[Microsoft 365 Agents Toolkit の GitHub Copilot 拡張機能](https://aka.ms/install-m365agents) を参照してください。", "teamsagent.walkthrough.copilotPlan.title": "GitHub Copilotにアクセスする", "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot Free** は既定で個々の GitHub ユーザーが利用でき、一部の機能へのアクセスが制限されています。他のorganizationまたはエンタープライズ プランで Copilot を使用することもできます。[GitHub Copilot plans](https://aka.ms/teams-agent-github-copilot-plan) と [GitHub Copilot free plan](https://aka.ms/teams-agent-github-copilot-free).) に関する詳細情報", - "teamsagent.walkthrough.copilotChat.title": "⚠️Visual Studio Code用の GitHub Copilot Chat のインストール", + "teamsagent.walkthrough.copilotChat.title": "⚠️Visual Studio Code用のチャットGitHub Copilotインストール", "teamsagent.walkthrough.copilotChat.description": "Visual Studio CodeのGitHub Copilotチャット拡張機能を使用すると、AI を利用したチャット会話を行ってコードを生成し、コードの理解を深め、エディターを構成することもできます。\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.install.title": "⚠️Microsoft 365 Agents Toolkit 用の GitHub Copilot 拡張機能をインストールする", "teamsagent.walkthrough.install.description": "[Microsoft 365 Agents Toolkit 用 GitHub Copilot 拡張機能](https://aka.ms/install-m365agents) (@m365agents) を使用すると、アプリの開発が簡素化され、チャット機能を使用して Microsoft 365 Copilot をカスタマイズできるようになります。\n[Microsoft 365 Agents Toolkit 用の GitHub Copilot 拡張機能をインストールする](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", @@ -549,7 +549,7 @@ "teamsagent.walkthrough.use.title": "@m365agents の使用を開始する", "teamsagent.walkthrough.use.title.preview": "@m365agents の使用を開始する (プレビュー)", "teamsagent.walkthrough.use.description": "Microsoft 365 Agents Toolkit (@m365agents) の GitHub Copilot 拡張機能とチャットして、アプリをビルドしたり、Microsoft 365 Copilot をカスタマイズして拡張したりできます。", - "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilot Chat 拡張機能は既にインストールされています。", + "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilotチャット拡張機能は既にインストールされています。", "teamstoolkit.officeAddIn.terminal.installDependency": "依存関係をインストールしています...", "teamstoolkit.officeAddIn.terminal.validateManifest": "マニフェストを検証しています...", "teamstoolkit.officeAddIn.terminal.stopDebugging": "デバッグを停止しています...", @@ -611,32 +611,24 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "宣言型エージェントを改善する", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "機能を追加して、宣言型エージェントのユーザー エクスペリエンスを向上させます。\n\nマニフェスト内の capabilities 要素は、ユーザーのさまざまな機能のロックを解除します。", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "インテリジェント アプリへの 2 つのパス", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Microsoft 365 を使用してインテリジェント アプリを構築するには、次の 2 つの方法があります:\n🎯 プラグインで Microsoft Copilot を拡張する、または\n✨ Microsoft Teams SDK と Azure サービスを使用して独自の Copilot in Teams を構築する", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Microsoft 365を使用してインテリジェント アプリを構築するには、次の 2 つの方法があります。\n🎯 プラグインを使用してMicrosoft Copilotを拡張するか、\n✨ Teams AI ライブラリと Azure サービスを使用して独自のCopilot in Teamsを構築する", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "API プラグイン", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "アプリをプラグインに変換して、Copilot のスキルを強化し、日常のタスクとワークフローにおけるユーザーの生産性を向上させます。[Copilot の拡張性](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/) を確認する\n[Copilot アクセスの確認](command:fx-extension.checkCopilotAccess?%5B%22WalkThrough%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "プラグインのビルド", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "次のいずれかの方法でプラグインと Graph コネクタを使用して Copilot を展開、強化、カスタマイズします\n[OpenAPI Description Document](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22project-type%22%3A%20%22copilot-agent-type%22%2C%20%22capabilities%22%3A%20%22api-plugin%22%7D%5D)\n[Teams Message Extension](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22search-app%22%2C%20%2 22project-type%22%3A%20%22me 型%22%2C%20%22me アーキテクチャ%22%3A%20%22bot-plugin%22%7D%5D)\n[Graph Connector](command:fx-extension.openSamples?%5B%22WalkThrough%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "カスタム エンジン エージェント", - "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Teams でインテリジェントで自然言語に基づくエクスペリエンスを構築し、その膨大なユーザー ベースを活用してコラボレーションを行います。\nMicrosoft 365 エージェント ツールキットは、Azure OpenAI および Microsoft Teams SDK に統合し、コパイロット開発を効率化し、Teams ベースの独自の機能を提供します。\n[Microsoft Teams SDK](https://aka.ms/teams-ai-library-v2) と [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) の詳細を確認してください", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Teams でインテリジェントで自然言語に基づくエクスペリエンスを構築し、その膨大なユーザー ベースを活用してコラボレーションを行います。\nMicrosoft 365 Agents Toolkit は Azure OpenAI および Teams AI ライブラリを統合し、コパイロットの開発を効率化して Teams ベースの独自の機能を提供します。\n[Teams AI ライブラリ](https://learn.microsoft.com/ja-jp/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview)と [Azure OpenAI Service とは](https://learn.microsoft.com/ja-jp/azure/ai-services/openai/overview) を確認する", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "カスタム エンジン エージェントのビルド", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "一般的なタスク用の AI エージェント ボットまたはインテリジェントなチャットボットを構築して、特定の質問に回答します\n[Build a Basic AI Chatbot](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-basic%22%2C%20%22project-type%22%3A%22capabilities%22%0 22custom-copilot-type%22capabilities%22%1 7D%22capabilities%22%2 D)\n[Build an AI Agent](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22capabilities%22%5 2C%22capabilities%22%6 7B%22capabilities%22%3A%22capabilities%22%9 22custom-copilot-agent%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[Build a Bot to Chat with Your Data](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot -rag%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "リソース", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "これらのリソースを探索して、インテリジェント アプリを構築し、開発プロジェクトを強化します\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [取得拡張生成 (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Microsoft 365アカウントにサインインする必要があります。", - "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 エージェント ツールキットは、認証フローをサポートするアクションを追加して、プロジェクト構成ファイル (m365agents.yaml および m365agents.local.yaml) を正常に更新しました。リモート プロビジョニングに進むことができます。", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "createPluginWithManifest コマンドのパラメーターが無効です。使用法: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string).LAST_COMMANDの有効な値: createPluginWithManifest、createDeclarativeCopilotWithManifest。", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "createDeclarativeAgentWithApiSpec コマンドのパラメーターが無効です。使用法: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: string)。", + "teamstoolkit.error.KiotaNotInstalled": "この機能を使用するには、Microsoft Kiota 拡張機能を最小バージョン %s でインストールする必要があります。", + "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 Agents Toolkit は、認証フローをサポートするアクションを追加して、プロジェクト構成 (teamsapp.yaml および teamsapp.local.yaml) ファイルを正常に更新しました。リモート プロビジョニングに進むことができます。", "teamstoolkit.handeler.addAuthConfig.notification.provision": "プロビジョニング", - "teamstoolkit.mcpUtils.setupMcpServer.message": "M365 Agents Toolkit MCP サーバーを構成しますか?(これにより、ワークスペース内の %s が作成または更新されます)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "確認", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "スキップ", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "M365 Agents Toolkit MCP サーバーが正常に構成されました。", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "M365 Agents Toolkit MCP サーバーを構成できません。エラー: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "宣言型エージェント プロジェクトは、MCP をラップして正常に作成されました。CodeLens の [スタート] ボタンから MCP サーバーを起動するか、.vscode/mcp.json ファイルで MCP サーバーをカスタマイズできます。\nMCP サーバーからツールを取得するには、CodeLens またはコマンドパレットの \"ATK: Update Action with MCP\" をクリックします。", - "teamstoolkit.commands.updateActionWithMCP.title": "MCP からアクションを取得する", - "teamstoolkit.MCP.FileNotFound": "MCP 構成ファイルが .vscode/mcp.json に見つかりません。MCP サーバーが設定されていることを確認してください。", - "teamstoolkit.MCP.ContentInvalid": "MCP 構成ファイルの内容が無効です。.vscode/mcp.json のコンテンツが正しいことを確認してください。", - "teamstoolkit.MCP.ServerNotFound": "MCP ファイルに MCP サーバーが見つかりません。", - "teamstoolkit.MCP.NameOrServerUrlMissing": "MCP 名またはサーバー URL がありません。", - "teamstoolkit.MCP.LocalMcpCommandMissing": "ローカル MCP コマンドがありません。", - "teamstoolkit.MCP.ToolsNotFound": "MCP サーバーのツールが見つかりません。最初にサーバーを実行してください。", - "teamstoolkit.MCP.SelectServerFailed": "MCP サーバーを選択できませんでした。" + "teamstoolkit.config.enableKiota": "Kiota 拡張機能を使用して OpenAPI 仕様とプラグイン マニフェストを生成しますか?設定ページからこの設定を更新することもできます。", + "teamstoolkit.config.enableKiota.yes": "はい", + "teamstoolkit.config.enableKiota.no": "いいえ" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.json b/packages/vscode-extension/package.nls.json index e81634dcf61..7f270c93e34 100644 --- a/packages/vscode-extension/package.nls.json +++ b/packages/vscode-extension/package.nls.json @@ -115,7 +115,7 @@ "teamstoolkit.commands.switchTenant.progressbar.title": "Switch tenant", "teamstoolkit.commands.switchTenant.progressbar.detail": "Microsoft 365 Agents Toolkit is now switching to the newly selected tenant.", "teamstoolkit.commands.signOut.title": "Sign Out", - "teamstoolkit.commands.checkCopilotAccess.title": "Check Copilot Access", + "teamstoolkit.commands.checkCopilotAccess": "Check Copilot Access", "teamstoolkit.commands.updateManifest.title": "Update App", "teamstoolkit.commands.deployManifest.ctxMenu.title": "Update App", "teamstoolkit.commands.upgradeProject.title": "Upgrade Project", @@ -202,6 +202,10 @@ "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "Regenerate Action", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "Regenerate action in declarative agent", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "Adding action...", + "teamstoolkit.commandsTreeViewProvider.addSkillTitle": "Add Skill", + "teamstoolkit.commandsTreeViewProvider.addSkillDescription": "Add skill in declarative agent", + "teamstoolkit.commandsTreeViewProvider.addSkill.running": "Adding skill...", + "teamstoolkit.commandsTreeViewProvider.addSkill.blockTooltip": "Unable to run command when adding a skill. Try again after adding completes.", "teamstoolkit.commandsTreeViewProvider.addKnowledgeTitle": "Add Capability", "teamstoolkit.commandsTreeViewProvider.addKnowledgeDescription": "Add capability in declarative agent", "teamstoolkit.commandsTreeViewProvider.addKnowledge.running": "Adding capability...", diff --git a/packages/vscode-extension/package.nls.ko.json b/packages/vscode-extension/package.nls.ko.json index 79bedd7853e..abbea29c876 100644 --- a/packages/vscode-extension/package.nls.ko.json +++ b/packages/vscode-extension/package.nls.ko.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: 로그인 중...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: 전환 중...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "샌드박스 팀 사용", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "대신 로컬 테스트를 위해 Teams에서 샌드박스를 만들 수 있습니다.", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "로컬 테스트를 위해 샌드박스 팀을 만들 수 있습니다.", "teamstoolkit.accountTree.sandboxedTeamDisabled": "샌드박스 팀 사용 안 함", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "Microsoft 365 계정 관리자가 샌드박스 팀을 사용하도록 설정하지 않았습니다.", - "teamstoolkit.accountTree.suggestSandboxedTeam": "[사용자 지정 앱 업로드](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload)는 Microsoft 365 계정에서 사용할 수 없습니다. 개발과 테스트를 위한 채널이 포함된 Teams 샌드박스를 만들 수 있습니다.", - "teamstoolkit.accountTree.sandboxedTeam.button": "Teams의 샌드박스에서 디버그(Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "[사용자 지정 앱 업로드](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload)는 Microsoft 365 계정에서 사용할 수 없습니다. 하지만 로컬 테스트를 위해 샌드박스 팀을 만들 수 있습니다.", + "teamstoolkit.accountTree.sandboxedTeam.button": "Teams 샌드박스에서 디버그(Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Microsoft 365 개발자 샌드박스 만들기", "teamstoolkit.appStudioLogin.loginCancel": "로그인이 취소되었습니다. Microsoft 365 Agents Toolkit에는 사용자 지정 앱 업로드 권한이 있는 Microsoft 365 계정이 필요합니다. Visual Studio 구독자인 경우 Microsoft 365 개발자 프로그램(https://developer.microsoft.com/en-us/microsoft-365/dev-program)으로 개발자 샌드박스를 만드세요.", "teamstoolkit.appStudioLogin.message": "Microsoft 365 Agents Toolkit에는 사용자 지정 앱 업로드 권한이 있는 Microsoft 365 계정이 필요합니다. Visual Studio 구독자인 경우 Microsoft 365 개발자 프로그램으로 개발자 샌드박스를 만드세요.", - "teamstoolkit.azureLogin.failToFindSubscription": "구독을 찾을 수 없습니다. 연결된 구독이 있는 테넌트로 전환합니다.", + "teamstoolkit.azureLogin.failToFindSubscription": "구독을 찾을 수 없습니다.", "teamstoolkit.azureLogin.message": "Microsoft 365 Agents Toolkit는 Microsoft 인증을 사용하여 Azure 계정 및 구독에 로그인하고 프로젝트를 위한 Azure 리소스를 배포합니다. 확인할 때까지 요금이 청구되지 않습니다.", "teamstoolkit.azureLogin.subscription": "구독", "teamstoolkit.azureLogin.selectSubscription": "현재 테넌트 ID에 대한 구독 선택", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "앱을 게시하기 전에 모든 통합 테스트 사례의 유효성을 검사하는 것이 좋습니다.", "teamstoolkit.commandsTreeViewProvider.publishTitle": "조직에 게시", "teamstoolkit.commandsTreeViewProvider.shareTitle": "공유", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "에이전트의 공유 범위를 변경합니다.", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "m365agents.yml 파일에서 '공유' 수명 주기 단계를 실행합니다.", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "시작", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "문제를 보고하고 의견을 알려주세요.", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "GitHub에서 이슈 보고", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Microsoft 365 앱 관리(Microsoft Entra 앱 포함) 공동 작업자", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "동작 추가", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "선언적 에이전트에 작업 추가", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "앱을 선언적 에이전트로 확장", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "추가 기능 프로젝트를 선언적 에이전트로 확장", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "선언적 에이전트로 확장", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "추가 기능 프로젝트를 선언적 에이전트 작업으로 확장", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "작업 다시 생성", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "선언적 에이전트에서 작업 다시 생성", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "작업 추가 중...", @@ -215,8 +215,8 @@ "teamstoolkit.commandsTreeViewProvider.validateManifestDescription": "Office 추가 기능 프로젝트의 매니페스트 파일 유효성 검사", "teamstoolkit.commandsTreeViewProvider.scriptLabTitle": "Script Lab", "teamstoolkit.commandsTreeViewProvider.scriptLabDescription": "Script Lab 소개 페이지 열기", - "teamstoolkit.commandsTreeViewProvider.promptLibraryTitle": "GitHub Copilot용 프롬프트 보기", - "teamstoolkit.commandsTreeViewProvider.promptLibraryDescription": "GitHub Copilot용 Office 프롬프트 라이브러리 열기", + "teamstoolkit.commandsTreeViewProvider.promptLibraryTitle": "GitHub Copilot 대한 프롬프트 보기", + "teamstoolkit.commandsTreeViewProvider.promptLibraryDescription": "office 프롬프트 라이브러리에서 GitHub Copilot 열기", "teamstoolkit.commandsTreeViewProvider.officeAddIn.officePartnerCenterTitle": "파트너 센터 열기", "teamstoolkit.commandsTreeViewProvider.officeAddIn.officePartnerCenterDescription": "파트너 센터 열기", "teamstoolkit.commandsTreeViewProvider.officeAddIn.getStartedTitle": "시작", @@ -316,16 +316,16 @@ "teamstoolkit.handlers.installOfficeAddinDependencyCancelled": "종속성 설치가 취소되었지만 왼쪽의 '개발 - 종속성 확인 및 설치' 단추를 클릭하여 종속성을 수동으로 설치할 수 있습니다.", "teamstoolkit.localDebug.learnMore": "자세히 알아보기", "teamstoolkit.localDebug.m365TenantHintMessage": "Office 365 대상 릴리스에서 개발자 테넌트를 등록한 후 며칠 후에 등록이 적용될 수 있습니다. Microsoft 365 전반에서 앱을 확장하기 위한 개발 환경 설정에 대한 자세한 내용을 보려면 '자세한 정보 가져오기' 단추를 클릭하세요.", - "teamstoolkit.handlers.askInstallCopilot": "앱을 개발하거나 Microsoft 365 Copilot을 사용자 지정할 때 Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장을 사용하려면 먼저 GitHub Copilot을 설치해야 합니다.", + "teamstoolkit.handlers.askInstallCopilot": "앱을 개발하거나 Microsoft 365 Copilot을 사용자 지정할 때 Microsoft 365 Agents Toolkit용 GitHub Copilot 확장을 사용하려면 먼저 GitHub Copilot을 설치해야 합니다.", "teamstoolkit.handlers.askInstallCopilot.install": "GitHub Copilot 설치", - "teamstoolkit.handlers.askInstallTeamsAgent": "앱을 개발하거나 Microsoft 365 Copilot을 사용자 지정할 때 Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장을 사용하려면 먼저 설치하세요. 이미 설치한 경우 아래에서 확인하세요.", + "teamstoolkit.handlers.askInstallTeamsAgent": "앱을 개발하거나 Microsoft 365 Copilot을 사용자 지정할 때 Microsoft 365 Agents Toolkit용 GitHub Copilot 확장을 사용하려면 먼저 설치하세요. 이미 설치한 경우 아래에서 확인하세요.", "teamstoolkit.handlers.askInstallTeamsAgent.install": "GitHub.com 설치", "teamstoolkit.handlers.askInstallTeamsAgent.confirmInstall": "설치 확인", - "teamstoolkit.handlers.installCopilotAndAgent.output": "앱을 개발하거나 Microsoft 365 Copilot을 사용자 지정할 때 Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장을 사용하려면 \"%s\"의 GitHub Copilot 및 \"%s\"의 Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장을 설치하세요.", - "teamstoolkit.handlers.installAgent.output": "앱을 개발하거나 Microsoft 365 Copilot을 사용자 지정할 때 Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장을 사용하려면 \"%s\"의 Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장을 설치하세요.", - "teamstoolkit.handlers.installCopilotError": "GitHub Copilot Chat을 설치할 수 없습니다. %s에 따라 설치를 진행한 후 다시 시도하세요.", - "teamstoolkit.handlers.chatTeamsAgentError": "GitHub Copilot Chat에 자동으로 포커스를 이동할 수 없습니다. GitHub Copilot Chat을 열고 \"%s\"(으)로 시작하세요.", - "teamstoolkit.handlers.verifyCopilotExtensionError": "GitHub Copilot Chat을 확인할 수 없습니다. %s에 따라 수동으로 설치를 진행한 후 다시 시도하세요.", + "teamstoolkit.handlers.installCopilotAndAgent.output": "앱을 개발하거나 Microsoft 365 Copilot을 사용자 지정할 때 Microsoft 365 Agents Toolkit용 GitHub Copilot 확장을 사용하려면 \"%s\"의 GitHub Copilot 및 \"%s\"의 Microsoft 365 Agents Toolkit용 GitHub Copilot 확장을 설치합니다.", + "teamstoolkit.handlers.installAgent.output": "앱을 개발하거나 Microsoft 365 Copilot을 사용자 지정할 때 Microsoft 365 Agents Toolkit용 GitHub Copilot 확장을 사용하려면 \"%s\"의 Microsoft 365 Agents Toolkit용 GitHub Copilot 확장을 설치합니다.", + "teamstoolkit.handlers.installCopilotError": "GitHub Copilot 채팅을 설치할 수 없습니다. %s 설치한 후 다시 시도하세요.", + "teamstoolkit.handlers.chatTeamsAgentError": "GitHub Copilot 채팅에 자동으로 집중할 수 없습니다. GitHub Copilot 채팅을 열고 \"%s\" 시작", + "teamstoolkit.handlers.verifyCopilotExtensionError": "GitHub Copilot 채팅을 확인할 수 없습니다. %s 따라 수동으로 설치하고 다시 시도하세요.", "teamstoolkit.handlers.teamsAgentTroubleshoot.noActiveEditor": "활성 편집기를 찾을 수 없습니다.", "teamstoolkit.localDebug.npmInstallFailedHintMessage": "작업 '%s' 완료되지 않았습니다. 자세한 오류 정보를 보려면 터미널 창을 검사 '%s' 문제를 보고하려면 '문제 보고' 단추를 클릭하세요.", "teamstoolkit.localDebug.openSettings": "설정 열기", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "취소", "teamstoolkit.localDebug.launchTeamsWebClientError": "Teams 웹 클라이언트를 시작할 수 없습니다.", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "Teams 웹 클라이언트를 시작하는 작업이 중지되었습니다. 종료 코드: '%s'", - "teamstoolkit.localDebug.useTestTool": "또는 %s을(를) 사용해서 계속할 수 있습니다.", + "teamstoolkit.localDebug.useTestTool": "또는 %s 옵션을 선택하여 이 단계를 건너뛸 수 있습니다.", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "Teams 데스크톱 클라이언트를 시작할 수 없습니다.", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "Teams 데스크톱 클라이언트를 시작하는 작업이 중지되었습니다. 종료 코드: '%s'", "teamstoolkit.localDebug.startDeletingAadProcess": "Microsoft Entra 응용 프로그램 프로세스 삭제를 시작합니다.", @@ -507,6 +507,10 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "Teams 및 Microsoft Entra 앱 등록을 변경할 수 있는 모든 소유자 나열", "teamstoolkit.manageCollaborator.command": "앱을 변경할 수 있는 사용자 관리", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[프로젝트 업그레이드](command:fx-extension.checkProjectUpgrade?%5B%22SideBar%22%5D)\n최신 버전과 계속 호환되도록 Microsoft 365 Agents Toolkit 프로젝트를 업그레이드하세요. 업그레이드 요약과 함께 백업 디렉터리가 만들어집니다. [추가 정보](command:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\n지금 업그레이드하지 않으려면 4.x.x 버전의 Microsoft 365 Agents Toolkit를 계속 사용하세요.", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Microsoft 365 에이전트 도구 키트를 시작합니다.\n단계별 자습서 시작\n[선언적 에이전트 빌드](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 또는 앱 템플릿 또는 샘플을 사용하여 앱 개발로 바로 이동\n[새 에이전트/앱 만들기](command:fx-extension.create?%5B%22SideBar%22%5D)\n[샘플 보기](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nGitHub Copilot을 사용하여 새 앱을 손쉽게 만드세요.\n[GitHub Copilot으로 앱 만들기](command:fx-extension.invokeChat?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D)용 앱을 빌드하거나 [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)을 확장하려면 설명서를 참조하세요.", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Microsoft 365 에이전트 도구 키트를 시작합니다.\n단계별 자습서 시작\n[선언적 에이전트 빌드](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 또는 앱 템플릿 또는 샘플을 사용하여 앱 개발로 바로 이동\n[새 에이전트/앱 만들기](command:fx-extension.create?%5B%22SideBar%22%5D)\n[샘플 보기](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nGitHub Copilot을 사용하여 새 앱을 손쉽게 만드세요. \n[GitHub Copilot을 사용하여 앱 만들기(미리 보기)](command:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D)용 앱을 빌드하거나 [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)을 확장하려면 설명서를 참조하세요.", + "teamstoolkit.walkthroughs.description": "Microsoft 365 Agents Toolkit를 사용하여 Microsoft Teams용 사용자 지정 알림 봇을 빌드하세요.", + "teamstoolkit.walkthroughs.withChat.description": "Microsoft 365 Agents Toolkit를 사용하여 Microsoft Teams용 사용자 지정 알림 봇을 빌드하세요.", "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Microsoft 365 에이전트 도구 키트를 시작합니다.\n단계별 자습서 시작\n[선언적 에이전트 빌드](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 또는 앱 템플릿 또는 샘플을 사용하여 앱 개발로 바로 이동\n[새 에이전트/앱 만들기](command:fx-extension.create?%5B%22SideBar%22%5D)\n[샘플 보기](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D)용 앱을 빌드하거나 [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)을 확장하려면 설명서를 참조하세요.", "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Microsoft 365 에이전트 도구 키트를 시작합니다.\n단계별 자습서 시작\n[선언적 에이전트 빌드](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 또는 앱 템플릿 또는 샘플을 사용하여 앱 개발로 바로 이동\n[새 에이전트/앱 만들기](command:fx-extension.create?%5B%22SideBar%22%5D)\n[샘플 보기](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D)용 앱을 빌드하거나 [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)을 확장하려면 설명서를 참조하세요.", "teamstoolkit.walkthroughs.description": "Microsoft 365 에이전트 도구 키트를 사용하여 Microsoft Teams용 사용자 지정 알림 봇을 구성하세요.", @@ -527,29 +531,29 @@ "teamstoolkit.walkthroughs.steps.teamsToolkitResources.title": "리소스", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.description": "에뮬레이트된 Microsoft 365 Agents Playground 환경에서 앱을 실행하고 디버그합니다.\n[Microsoft 365 Agents Playground에서 디버그](command:fx-extension.localdebug)\n팁: 작업 표시줄에서 [실행 및 디버그](command:workbench.view.debug) 패널을 사용하여 Teams에서 디버그합니다.", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.title": "Microsoft 365 에이전트 플레이그라운드에서 디버그", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "GitHub Copilot과 채팅", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "GitHub Copilot 채팅", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.title": "GitHub Copilot(미리 보기)과 채팅", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "도움이 더 필요하신가요? [GitHub Copilot과 채팅](command:fx-extension.invokeChat?%5B%22WalkThrough%22%5D)을 통해 앱 또는 Microsoft 365 Copilot 에이전트 개발을 탐색하세요.", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.description": "도움이 더 필요하신가요? [GitHub Copilot과 채팅](command:fx-extension.invokeChatWithPreviewTag?%5B%22WalkThrough%22%5D)을 통해 앱 또는 Microsoft 365 Copilot 에이전트 개발을 탐색하세요.", "teamstoolkit.walkthroughs.title": "알림 봇 빌드", - "teamsagent.walkthrough.title": "Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장으로 시작", - "teamsagent.walkthrough.description": "필수 단계(⚠️ 포함)를 완료하여 Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장을 설정하세요.", + "teamsagent.walkthrough.title": "Microsoft 365 Agents Toolkit용 GitHub Copilot 확장으로 시작", + "teamsagent.walkthrough.description": "필수 단계(⚠️ 포함)를 완료하여 Microsoft 365 Agents Toolkit용 GitHub Copilot 확장을 설정하세요.", "teamsagent.walkthrough.introduction.title": "소개", - "teamsagent.walkthrough.introduction.description": "Microsoft 365 에이전트 도구 키트(@m365agents)용 GitHub Copilot 확장은 앱 개발을 간소화하고 채팅 기능을 사용하여 Microsoft 365 Copilot을 사용자 지정할 수 있도록 합니다. [Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장](https://aka.ms/install-m365agents)에 대해 자세히 알아보세요.", - "teamsagent.walkthrough.copilotPlan.title": "GitHub Copilot에 대한 액세스 권한 얻기", - "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot Free (무료)**는 기본적으로 개인 GitHub 고객에게 제공되며, 일부 기능에 한해 제한적으로 액세스할 수 있습니다. 또한 다른 조직 또는 엔터프라이즈 플랜을 통해 Copilot을 사용할 수도 있습니다. [GitHub Copilot 플랜](https://aka.ms/teams-agent-github-copilot-plan) 및 [GitHub Copilot 무료 플랜](https://aka.ms/teams-agent-github-copilot-free)에 대해 자세히 알아보세요.", - "teamsagent.walkthrough.copilotChat.title": "⚠️Visual Studio Code용 GitHub Copilot Chat 설치", - "teamsagent.walkthrough.copilotChat.description": "Visual Studio Code용 GitHub Copilot Chat 확장을 사용하면 AI 기반 채팅 대화를 통해 코드를 생성하고 코드 이해도를 높이며 편집기를 구성할 수도 있습니다.\n[GitHub Copilot Chat 설치](command:fx-extension.installCopilotChat?%5B%22TeamsAgentRoughthrough%22%5D)", - "teamsagent.walkthrough.install.title": "⚠️Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장 설치", - "teamsagent.walkthrough.install.description": "[Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장](https://aka.ms/install-m365agents)(@m365agents)은 앱 개발을 간소화하고 채팅 기능을 사용하여 Microsoft 365 Copilot을 사용자 지정할 수 있도록 합니다.\n[Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장 설치](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.introduction.description": "Microsoft 365 Agents Toolkit(@m365agents)용 GitHub Copilot 확장은 앱 개발을 간소화하고 채팅 기능을 사용하여 Microsoft 365 Copilot를 사용자 지정할 수 있도록 합니다. [Microsoft 365 Agents Toolkit용 GitHub Copilot 확장](https://aka.ms/install-m365agents)에 대해 자세히 알아보세요.", + "teamsagent.walkthrough.copilotPlan.title": "GitHub Copilot 액세스 권한 얻기", + "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot 무료**는 기본적으로 개별 GitHub 고객이 사용할 수 있으며, 일부 기능에 대한 액세스가 제한됩니다. 다른 organization 또는 엔터프라이즈 계획을 통해 Copilot를 사용할 수도 있습니다. [GitHub Copilot plans](https://aka.ms/teams-agent-github-copilot-plan) 및 [GitHub Copilot free plan](https://aka.ms/teams-agent-github-copilot-free). 대한 자세한 정보", + "teamsagent.walkthrough.copilotChat.title": "⚠️Visual Studio Code GitHub Copilot 채팅 설치", + "teamsagent.walkthrough.copilotChat.description": "Visual Studio Code GitHub Copilot 채팅 확장을 사용하면 AI 기반 채팅 대화를 통해 코드를 생성하고 코드 이해도를 높이며 편집기를 구성할 수도 있습니다.\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentRoughthrough%22%5D)", + "teamsagent.walkthrough.install.title": "⚠️Microsoft 365 Agents Toolkit용 GitHub Copilot 확장 설치", + "teamsagent.walkthrough.install.description": "[Microsoft 365 Agents Toolkit용 GitHub Copilot 확장](https://aka.ms/install-m365agents)(@m365agents)은 앱 개발을 간소화하고 채팅 기능을 사용하여 Microsoft 365 Copilot을 사용자 지정할 수 있도록 합니다.\n[Microsoft 365 Agents Toolkit용 GitHub Copilot 확장 설치](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.installConfirm.title": "⚠️@m365agents 설치 확인", - "teamsagent.walkthrough.installConfirm.description": "[Microsoft 365 에이전트 도구 키트용 GitHub Copilot 확장](https://aka.ms/install-m365agents)이 설치된 후 설치가 완료된 것으로 표시하세요.\n[설치 완료 표시](command:fx-extension.markInstallTeamsAgentDone)", - "teamsagent.walkthrough.setup.title": "⚠️Visual Studio Code의 GitHub Copilot 설정", + "teamsagent.walkthrough.installConfirm.description": "[Microsoft 365 Agents Toolkit용 GitHub Copilot 확장](https://aka.ms/install-m365agents)이 설치된 후 설치가 완료된 것으로 표시하세요.\n[설치 완료 표시](command:fx-extension.markInstallTeamsAgentDone)", + "teamsagent.walkthrough.setup.title": "⚠️Visual Studio Code GitHub Copilot 설정", "teamsagent.walkthrough.setup.description": "GitHub 계정에 로그인하고 시작합니다. [GitHub Copilot 설정](https://aka.ms/teams-agent-github-copilot-setup) 방법에 대해 자세히 알아보세요.\n[GitHub Copilot Chat 열기](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.use.title": "@m365agents 사용 시작", "teamsagent.walkthrough.use.title.preview": "@m365agents 사용 시작(미리 보기)", - "teamsagent.walkthrough.use.description": "Microsoft 365 에이전트 도구 키트(@m365agents)용 GitHub Copilot 확장과 채팅하여 앱을 빌드하거나 Microsoft 365 Copilot을 사용자 지정할 수 있습니다.", - "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilot Chat 확장이 이미 설치되어 있습니다.", + "teamsagent.walkthrough.use.description": "Microsoft 365 Agents Toolkit용 GitHub Copilot 확장(@m365agents)과 채팅하여 앱을 빌드하거나 Microsoft 365 Copilot을 사용자 지정할 수 있습니다.", + "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilot 채팅 확장이 이미 설치되어 있습니다.", "teamstoolkit.officeAddIn.terminal.installDependency": "종속성 설치 중...", "teamstoolkit.officeAddIn.terminal.validateManifest": "매니페스트 확인 중...", "teamstoolkit.officeAddIn.terminal.stopDebugging": "디버깅을 중지하는 중...", @@ -611,32 +615,25 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "선언적 에이전트 개선", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "기능을 추가하여 선언적 에이전트의 사용자 환경을 개선합니다.\n\n매니페스트의 기능 요소는 사용자를 위해 다양한 기능을 잠금 해제합니다.", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "지능형 앱의 두 가지 경로", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "다음 두 가지 방법으로 Microsoft 365 지능형 앱을 빌드하세요.\n🎯 플러그인으로 Microsoft Copilot을 확장하거나\n✨ Microsoft Teams SDK와 Azure 서비스를 사용해 Teams에서 나만의 Copilot을 빌드하세요.", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "다음 두 가지 방법으로 Microsoft 365 지능형 앱 빌드:\n🎯 플러그 인으로 Microsoft Copilot 확장하거나\n✨ Teams AI 라이브러리 및 Azure 서비스를 사용하여 나만의 Teams의 Copilot 구축", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "API 플러그인", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "앱을 플러그 인으로 변환하여 Copilot의 기술을 향상시키고 일상적인 작업 및 워크플로에서 사용자 생산성을 향상시킵니다. [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22 사용자 연결%22%5D) 탐색", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "플러그 인 빌드", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "플러그 인 및 그래프 커넥터를 사용하여 다음 방법으로 Copilot 확장, 보강 및 사용자 지정\n[OpenAPI Description Document](command:fx-extension.createFromPagethrough?%5B%22RoughThrough%22%2C%20%7B%22project-type%22%3A%20%22copilot-agent-type%22%2C%20%22capabilities%22%3A%20%22api-plugin%22%7D%5D)\n[Teams Message Extension](command:fx-extension.createFrom %5B%%5B%2C%22%%20%7B%22capabilities%22%3A%20%22search-app%22%2C%20%2C 22project-type%22%3A%20%22me-type%22%2C%20%22me-architecture%22%3A%20%22bot-plugin%22%7D%5D)\n[Graph Connector](command:fx-extension.openSamples?%5B%22RoughThrough%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "사용자 지정 엔진 에이전트", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Teams에서 자연어 기반의 지능형 환경을 구축하여 협업을 위한 다양한 사용자층을 활용하세요. \nMicrosoft 365 Agents Toolkit는 Azure OpenAI 및 Teams AI 라이브러리와 통합되어 Copilot 개발을 간소화하고 고유한 Teams 기반 기능을 제공합니다. \n[Teams AI 라이브러리](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview)와 [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)를 탐색해 보세요.", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Teams의 방대한 사용자 기반을 활용하여 자연어 기반의 지능형 협업 환경을 구성하세요. \nMicrosoft 365 에이전트 도구 키트는 Azure OpenAI 및 Microsoft Teams SDK와 통합되어 Copilot 개발을 간소화하고 Teams 기반의 고유한 기능을 제공합니다. \n[Microsoft Teams SDK](https://aka.ms/teams-ai-library-v2)와 [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)를 탐색해 보세요.", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "사용자 지정 엔진 에이전트 빌드", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "일반적인 작업을 처리하는 AI 에이전트 봇이나 특정 질문에 답변하는 지능형 챗봇을 구성하세요.\n[기본 AI 챗봇 구성](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-basic%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[AI 에이전트 구성](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-agent%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[데이터와 채팅할 수 있는 봇 구성](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-rag%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "리소스", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "이러한 리소스를 탐색하여 지능형 앱을 빌드하고 개발 프로젝트를 향상합니다.\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [RAG(Retrieval Augmented Generation)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Microsoft 365 계정에 로그인해야 합니다.", - "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 에이전트 도구 키트가 인증 흐름을 지원하기 위해 추가 작업으로 프로젝트 구성(m365agents.yaml and m365agents.local.yaml) 파일을 업데이트했습니다. 원격 프로비전을 진행할 수 있습니다.", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "createPluginWithManifest 명령의 매개 변수가 잘못되었습니다. 사용법: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string). LAST_COMMAND 유효한 값: createPluginWithManifest, createDeclarativeCopilotWithManifest.", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "createDeclarativeAgentWithApiSpec 명령의 매개 변수가 잘못되었습니다. 사용법: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: string).", + "teamstoolkit.error.KiotaNotInstalled": "이 기능을 사용하려면 최소 버전 %s Microsoft Kiota 확장을 설치해야 합니다.", + "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 Agents Toolkit가 인증 흐름을 지원하기 위해 추가 작업으로 프로젝트 구성(teamsapp.yaml 및 teamsapp.local.yaml) 파일을 업데이트했습니다. 원격 프로비전을 진행할 수 있습니다.", "teamstoolkit.handeler.addAuthConfig.notification.provision": "프로비전", - "teamstoolkit.mcpUtils.setupMcpServer.message": "M365 에이전트 도구 키트 MCP 서버를 구성하시겠습니까? (작업 영역에서 %s을(를) 생성하거나 업데이트합니다.)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "확인", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "건너뛰기", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "M365 에이전트 도구 키트 MCP 서버를 구성했습니다.", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "M365 에이전트 도구 키트 MCP 서버를 구성할 수 없습니다. 오류: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "MCP로 래핑된 선언적 에이전트 프로젝트가 성공적으로 생성되었습니다. 이제 CodeLens의 \"시작\" 버튼을 눌러 MCP 서버를 시작하거나 .vscode/mcp.json 파일에서 MCP 서버를 원하는 대로 설정할 수 있습니다.\nMCP 서버에서 도구를 가져오려면 CodeLens 또는 Command Framework에서 \"ATK: UPDATE Action with MCP\"를 클릭합니다.", - "teamstoolkit.commands.updateActionWithMCP.title": "MCP에서 작업 가져오기", - "teamstoolkit.MCP.FileNotFound": ".vscode/mcp.json MCP 구성 파일을 찾을 수 없습니다. MCP 서버를 설정해야 합니다.", - "teamstoolkit.MCP.ContentInvalid": "MCP 구성 파일 콘텐츠가 잘못되었습니다. .vscode/mcp.json 파일의 내용이 올바른지 확인하세요.", - "teamstoolkit.MCP.ServerNotFound": "MCP 파일에서 MCP 서버를 찾을 수 없습니다.", - "teamstoolkit.MCP.NameOrServerUrlMissing": "MCP 이름 또는 서버 URL이 없습니다.", - "teamstoolkit.MCP.LocalMcpCommandMissing": "로컬 MCP 명령이 없습니다.", - "teamstoolkit.MCP.ToolsNotFound": "MCP 서버에 대한 도구를 찾을 수 없습니다. 서버를 먼저 실행하세요.", - "teamstoolkit.MCP.SelectServerFailed": "MCP 서버를 선택하지 못했습니다." + "teamstoolkit.config.enableKiota": "Kiota 확장을 사용하여 OpenAPI 사양 및 플러그 인 매니페스트를 생성하시겠습니까? 설정 페이지에서 이 설정을 업데이트할 수도 있습니다.", + "teamstoolkit.config.enableKiota.yes": "예", + "teamstoolkit.config.enableKiota.no": "아니요" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.pl.json b/packages/vscode-extension/package.nls.pl.json index f37fbeaeda1..c6c87efa631 100644 --- a/packages/vscode-extension/package.nls.pl.json +++ b/packages/vscode-extension/package.nls.pl.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: Trwa logowanie...", "teamstoolkit.accountTree.switchingM365": "Platforma Microsoft 365: trwa przełączanie...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "Włączono zespół w trybie środowiska testowego", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Zamiast tego możesz utworzyć piaskownicę w usłudze Teams na potrzeby testowania lokalnego.", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Możesz utworzyć zespół w trybie środowiska testowego na potrzeby testowania lokalnego.", "teamstoolkit.accountTree.sandboxedTeamDisabled": "Zespół w trybie środowiska testowego został wyłączony", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "Administrator konta platformy Microsoft 365 nie włączył zespołu w trybie środowiska testowego.", - "teamstoolkit.accountTree.suggestSandboxedTeam": "[Przekazywanie aplikacji niestandardowej](https://learn.microsoft.com/pl-pl/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) jest wyłączone na Twoim koncie platformy Microsoft 365. W usłudze Teams możesz utworzyć piaskownicę z kanałem na potrzeby programowania i testowania.", - "teamstoolkit.accountTree.sandboxedTeam.button": "Debuguj w piaskownicy w usłudze Teams (Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "[Przekazywanie aplikacji niestandardowej](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) jest wyłączone na Twoim koncie platformy Microsoft 365. Możesz jednak utworzyć zespół w trybie środowiska testowego na potrzeby testowania lokalnego.", + "teamstoolkit.accountTree.sandboxedTeam.button": "Debugowanie w trybie środowiska testowego aplikacji Teams (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Utwórz piaskownicę dewelopera Microsoft 365", "teamstoolkit.appStudioLogin.loginCancel": "Anulowano logowanie. Zestaw narzędzi Agentów platformy Microsoft 365 wymaga konta platformy Microsoft 365 z niestandardowym uprawnieniem do przekazywania aplikacji. Jeśli jesteś subskrybentem programu Visual Studio, utwórz piaskownicę dewelopera w programie dla deweloperów platformy Microsoft 365 (https://developer.microsoft.com/pl-pl/microsoft-365/dev-program).", "teamstoolkit.appStudioLogin.message": "Zestaw narzędzi Agentów platformy Microsoft 365 wymaga konta platformy Microsoft 365 z niestandardowym uprawnieniem do przekazywania aplikacji. Jeśli jesteś subskrybentem programu Visual Studio, utwórz piaskownicę dewelopera w programie dla deweloperów platformy Microsoft 365.", - "teamstoolkit.azureLogin.failToFindSubscription": "Nie znaleziono subskrypcji. Przełącz się do dzierżawy z połączoną subskrypcją.", + "teamstoolkit.azureLogin.failToFindSubscription": "Nie można odnaleźć subskrypcji.", "teamstoolkit.azureLogin.message": "Zestaw narzędzi agentów platformy Microsoft 365 będzie używać uwierzytelniania firmy Microsoft do logowania się do konta platformy Azure i subskrypcji w celu wdrożenia zasobów platformy Azure dla projektu. Opłata nie zostanie naliczona do czasu potwierdzenia.", "teamstoolkit.azureLogin.subscription": "subskrypcja", "teamstoolkit.azureLogin.selectSubscription": "Wybierz subskrypcję dla bieżącego identyfikatora dzierżawy", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "Przed opublikowaniem aplikacji zalecamy sprawdzenie poprawności wszystkich przypadków testów integracji.", "teamstoolkit.commandsTreeViewProvider.publishTitle": "Opublikuj w organizacji", "teamstoolkit.commandsTreeViewProvider.shareTitle": "Udostępnianie", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "Zmień udostępniony zakres agenta.", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "Uruchom etap cyklu życia udostępniania w pliku m365agents.yml.", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "Wprowadzenie", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "Zgłaszaj wszelkie problemy i przekazuj nam swoją opinię", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "Zgłaszanie problemów w usłudze GitHub", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Zarządzaj współpracownikami aplikacji platformy Microsoft 365 (za pomocą aplikacji Microsoft Entra)", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "Dodawanie akcji", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "Dodaj akcję w agencie deklaracyjnym", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Rozszerz aplikację na agenta deklaratywnego", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Rozszerz projekt dodatku na agenta deklaratywnego", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Rozszerz na agenta deklaratywnego", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Rozszerz projekt dodatku o akcję agenta deklaratywnego", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "Akcja ponownego generowania", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "Wygeneruj ponownie akcję w agencie deklaratywnym", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "Trwa dodawanie akcji...", @@ -316,16 +316,16 @@ "teamstoolkit.handlers.installOfficeAddinDependencyCancelled": "Instalacja zależności została anulowana, ale zależności można zainstalować ręcznie, klikając przycisk \"Projektowanie — Sprawdzanie i instalowanie zależności\" po lewej stronie.", "teamstoolkit.localDebug.learnMore": "Uzyskaj więcej informacji", "teamstoolkit.localDebug.m365TenantHintMessage": "Po zarejestrowaniu dzierżawy dewelopera w wersji docelowej usługi Office 365 rejestracja może wejść w życie za kilka dni. Kliknij przycisk „Uzyskaj więcej informacji”, aby uzyskać szczegółowe informacje na temat konfigurowania środowiska deweloperskiego w celu rozszerzenia aplikacji na platformę Microsoft 365.", - "teamstoolkit.handlers.askInstallCopilot": "Aby używać rozszerzenia narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365 podczas opracowywania aplikacji lub dostosowywania rozwiązania Microsoft 365 Copilot, musisz najpierw zainstalować narzędzie GitHub Copilot.", + "teamstoolkit.handlers.askInstallCopilot": "Aby używać rozszerzenia narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365 podczas opracowywania aplikacji lub dostosowywania rozwiązania Microsoft 365 Copilot, musisz najpierw zainstalować narzędzie GitHub Copilot.", "teamstoolkit.handlers.askInstallCopilot.install": "Instalowanie funkcji GitHub Copilot", - "teamstoolkit.handlers.askInstallTeamsAgent": "Aby używać rozszerzenia narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365 podczas tworzenia aplikacji lub dostosowywania rozwiązania Microsoft 365 Copilot, zainstaluj je najpierw. Jeśli już je zainstalowano, potwierdź to poniżej.", + "teamstoolkit.handlers.askInstallTeamsAgent": "Aby używać rozszerzenia narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365 podczas tworzenia aplikacji lub dostosowywania rozwiązania Microsoft 365 Copilot, zainstaluj je najpierw. Jeśli już je zainstalowano, potwierdź to poniżej.", "teamstoolkit.handlers.askInstallTeamsAgent.install": "Zainstaluj z GitHub.com", "teamstoolkit.handlers.askInstallTeamsAgent.confirmInstall": "Potwierdź instalację", - "teamstoolkit.handlers.installCopilotAndAgent.output": "Aby użyć rozszerzenia narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365 podczas opracowywania aplikacji lub dostosowywania rozwiązania Microsoft 365 Copilot, zainstaluj narzędzie GitHub Copilot z „%s” i rozszerzenie narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365 z „%s”.", - "teamstoolkit.handlers.installAgent.output": "Aby używać rozszerzenia narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365 podczas opracowywania aplikacji lub dostosowywania funkcji Microsoft 365 Copilot, zainstaluj rozszerzenie narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365 z „%s”.", + "teamstoolkit.handlers.installCopilotAndAgent.output": "Aby użyć rozszerzenia narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365 podczas opracowywania aplikacji lub dostosowywania rozwiązania Microsoft 365 Copilot, zainstaluj narzędzie GitHub Copilot z „%s” i rozszerzenie narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365 z „%s”.", + "teamstoolkit.handlers.installAgent.output": "Aby używać rozszerzenia narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365 podczas opracowywania aplikacji lub dostosowywania funkcji Microsoft 365 Copilot, zainstaluj rozszerzenie narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365 z „%s”.", "teamstoolkit.handlers.installCopilotError": "Nie można zainstalować programu GitHub Copilot Chat. Zainstaluj ją po %s i spróbuj ponownie.", - "teamstoolkit.handlers.chatTeamsAgentError": "Nie można automatycznie skupić się na GitHub Copilot Chat. Otwórz GitHub Copilot Chat i zacznij od „%s”", - "teamstoolkit.handlers.verifyCopilotExtensionError": "Nie można zweryfikować funkcji GitHub Copilot Chat. Zainstaluj ją ręcznie według %s i spróbuj ponownie.", + "teamstoolkit.handlers.chatTeamsAgentError": "Nie można automatycznie skupić się GitHub Copilot czacie. Otwórz czat GitHub Copilot i zacznij od \"%s\"", + "teamstoolkit.handlers.verifyCopilotExtensionError": "Nie można zweryfikować GitHub Copilot rozmowie. Zainstaluj ją ręcznie po %s i spróbuj ponownie.", "teamstoolkit.handlers.teamsAgentTroubleshoot.noActiveEditor": "Nie można odnaleźć aktywnego edytora.", "teamstoolkit.localDebug.npmInstallFailedHintMessage": "Zadanie '%s' nie zostało ukończone pomyślnie. Aby uzyskać szczegółowe informacje o błędzie, sprawdź '%s' oknie terminalu i zgłoś problem, kliknij przycisk Zgłoś problem.", "teamstoolkit.localDebug.openSettings": "Otwórz ustawienia", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "Anuluj", "teamstoolkit.localDebug.launchTeamsWebClientError": "Nie można uruchomić klienta internetowego usługi Teams.", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "Zadanie uruchomienia klienta internetowego usługi Teams zostało zatrzymane z kodem zakończenia „%s”.", - "teamstoolkit.localDebug.useTestTool": "Alternatywnie możesz użyć %s, aby kontynuować.", + "teamstoolkit.localDebug.useTestTool": "Możesz też pominąć ten krok, wybierając opcję %s.", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "Nie można uruchomić klienta klasycznego aplikacji Teams.", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "Zadanie uruchomienia klienta klasycznego usługi Teams zostało zatrzymane z kodem zakończenia „%s”.", "teamstoolkit.localDebug.startDeletingAadProcess": "Rozpocznij usuwanie Microsoft Entra procesu aplikacji.", @@ -507,6 +507,10 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "Wyświetl listę wszystkich właścicieli, którzy mogą wprowadzać zmiany w rejestracjach aplikacji usług Teams i Microsoft Entra", "teamstoolkit.manageCollaborator.command": "Zarządzaj tym, kto może wprowadzać zmiany w aplikacji", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[Uaktualnij projekt](command:fx-extension.checkProjectUpgrade?%5B%22Pasek_boczny%22%5D)\nUaktualnij projekt zestawu narzędzi agentów platformy Microsoft 365, aby zachować zgodność z najnowszą wersją. Zostanie utworzony katalog kopii zapasowej wraz z podsumowaniem uaktualnienia. [Więcej informacji](command:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\nJeśli nie chcesz teraz uaktualnić, nadal używaj zestawu narzędzi agentów platformy Microsoft 365 w wersji 4.x.x.", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Zestaw narzędzi agentów platformy Microsoft 365 — Zapraszamy!\nRozpocznij od samouczka z przewodnikiem\n[Utwórz agenta deklaratywnego](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Lub przejdź od razu do tworzenia aplikacji za pomocą szablonów lub próbek\n[Utwórz nowego agenta/nową aplikację](command:fx-extension.create?%5B%22Pasek_boczny%22%5D)\n[Przegląd próbek](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nUtwórz nową aplikację bezproblemowo za pomocą narzędzia GitHub Copilot.\n[Utwórz aplikację za pomocą narzędzia GitHub Copilot](command:fx-extension.invokeChat?%5B%22SideBar%22%5D)\nZapoznaj się z naszą dokumentacją, aby tworzyć aplikacje dla usługi [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) lub rozbudowywać środowisko [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Zestaw narzędzi agentów platformy Microsoft 365 — Zapraszamy!\nRozpocznij od samouczka z przewodnikiem\n[Utwórz agenta deklaratywnego](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Lub przejdź od razu do tworzenia aplikacji za pomocą szablonów lub próbek\n[Utwórz nowego agenta/nową aplikację](command:fx-extension.create?%5B%22Pasek_boczny%22%5D)\n[Przegląd próbek](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nUtwórz nową aplikację bezproblemowo za pomocą narzędzia GitHub Copilot. \n[Utwórz aplikację za pomocą narzędzia GitHub Copilot (wersja zapoznawcza)](command:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\nZapoznaj się z naszą dokumentacją, aby tworzyć aplikacje dla usługi [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) lub rozbudowywać środowisko [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.walkthroughs.description": "Utwórz niestandardowego bota powiadomień dla usługi Microsoft Teams przy użyciu zestawu narzędzi agentów platformy Microsoft 365.", + "teamstoolkit.walkthroughs.withChat.description": "Utwórz niestandardowego bota powiadomień dla usługi Microsoft Teams przy użyciu zestawu narzędzi agentów platformy Microsoft 365.", "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Zestaw narzędzi agentów Microsoft 365 — Zapraszamy!\nRozpocznij od samouczka z przewodnikiem\n[Utwórz agenta deklaratywnego](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Lub przejdź od razu do tworzenia aplikacji za pomocą szablonów lub próbek\n[Utwórz nowego agenta/nową aplikację](command:fx-extension.create?%5B%22Pasek_boczny%22%5D)\n[Przegląd próbek](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nZapoznaj się z naszą dokumentacją, aby tworzyć aplikacje dla usługi [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) lub rozbudowywać środowisko [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Zestaw narzędzi agentów Microsoft 365 — Zapraszamy!\nRozpocznij od samouczka z przewodnikiem\n[Utwórz agenta deklaratywnego](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Lub przejdź od razu do tworzenia aplikacji za pomocą szablonów lub próbek\n[Utwórz nowego agenta/nową aplikację](command:fx-extension.create?%5B%22Pasek_boczny%22%5D)\n[Przegląd próbek](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nZapoznaj się z naszą dokumentacją, aby tworzyć aplikacje dla usługi [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) lub rozbudowywać środowisko [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", "teamstoolkit.walkthroughs.description": "Utwórz niestandardowego bota powiadomień dla usługi Microsoft Teams przy użyciu Zestawu narzędzi agentów Microsoft 365.", @@ -527,29 +531,29 @@ "teamstoolkit.walkthroughs.steps.teamsToolkitResources.title": "Zasoby", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.description": "Uruchamiaj i debuguj aplikację w emulowanej wersji środowiska testowego agentów platformy Microsoft 365.\n[Debugowanie w środowisku testowym agentów platformy Microsoft 365](command:fx-extension.localdebug)\nPorada: użyj panelu [Uruchom i debuguj](command:workbench.view.debug) na pasku aktywności, aby debugować w usłudze Teams.", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.title": "Debugowanie w środowisku testowym agentów platformy Microsoft 365", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "Czat z funkcją GitHub Copilot", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "Czat z GitHub Copilot", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.title": "Czatowanie za pomocą narzędzia GitHub Copilot (wersja zapoznawcza)", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "Potrzebujesz dodatkowej pomocy? [Czatuj z narzędziem GitHub Copilot](command:fx-extension.invokeChat?%5B%22WalkThrough%22%5D) w celu odkrywania aplikacji lub opracowania agenta rozwiązania Microsoft 365 Copilot.", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.description": "Potrzebujesz dodatkowej pomocy? [Czatowanie z narzędziem GitHub Copilot](command:fx-extension.invokeChatWithPreviewTag?%5B%22WalkThrough%22%5D), aby poznać aplikację lub utworzyć agenta funkcji Microsoft 365 Copilot.", "teamstoolkit.walkthroughs.title": "Utwórz bota powiadomień", - "teamsagent.walkthrough.title": "Wprowadzenie do rozszerzenia narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365", - "teamsagent.walkthrough.description": "Wykonaj obowiązkowe kroki (z ⚠️) w celu skonfigurowania rozszerzenia narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365.", + "teamsagent.walkthrough.title": "Wprowadzenie do rozszerzenia narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365", + "teamsagent.walkthrough.description": "Wykonaj obowiązkowe kroki (z ⚠️) w celu skonfigurowania rozszerzenia narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365.", "teamsagent.walkthrough.introduction.title": "Wprowadzenie", - "teamsagent.walkthrough.introduction.description": "Rozszerzenie narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365 (@m365agents) upraszcza tworzenie aplikacji i umożliwia dostosowywanie rozwiązania Microsoft 365 Copilot za pomocą funkcji czatu. Dowiedz się więcej o [rozszerzeniu narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365](https://aka.ms/install-m365agents).", + "teamsagent.walkthrough.introduction.description": "Rozszerzenie narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365 (@m365agents) upraszcza tworzenie aplikacji i umożliwia dostosowywanie rozwiązania Microsoft 365 Copilot za pomocą funkcji czatu. Dowiedz się więcej o [rozszerzeniu narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365](https://aka.ms/install-m365agents).", "teamsagent.walkthrough.copilotPlan.title": "Uzyskaj dostęp do GitHub Copilot", "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot Bezpłatny** jest domyślnie dostępny dla indywidualnych klientów GitHub z ograniczonym dostępem do wybranych funkcji. Możesz także korzystać z rozwiązania Copilot w ramach innej organizacji lub planu przedsiębiorstwa. Dowiedz się więcej o [planach GitHub Copilot](https://aka.ms/teams-agent-github-copilot-plan) oraz [bezpłatnym planie GitHub Copilot](https://aka.ms/teams-agent-github-copilot-free).", - "teamsagent.walkthrough.copilotChat.title": "⚠️Zainstaluj GitHub Copilot Chat dla Visual Studio Code", + "teamsagent.walkthrough.copilotChat.title": "⚠️Zainstaluj czat GitHub Copilot dla Visual Studio Code", "teamsagent.walkthrough.copilotChat.description": "Dzięki rozszerzeniu GitHub Copilot Chat w Visual Studio Code możesz prowadzić konwersacje na czacie obsługiwane przez sztuczną inteligencję, aby generować kod, zwiększać zrozumienie kodu, a nawet konfigurować edytor.\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", - "teamsagent.walkthrough.install.title": "⚠️Instalowanie rozszerzenia narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365", - "teamsagent.walkthrough.install.description": "[Rozszerzenie narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365](https://aka.ms/install-m365agents) (@m365agents) upraszcza tworzenie aplikacji i umożliwia dostosowywanie rozwiązania Microsoft 365 Copilot za pomocą funkcji czatu.\n[Zainstaluj rozszerzenie narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.install.title": "⚠️Instalowanie rozszerzenia narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365", + "teamsagent.walkthrough.install.description": "[Rozszerzenie narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365](https://aka.ms/install-teamsapp) (@m365agents) upraszcza tworzenie aplikacji i umożliwia dostosowywanie rozwiązania Microsoft 365 Copilot za pomocą funkcji czatu.\n[Zainstaluj rozszerzenie narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.installConfirm.title": "⚠️Potwierdź instalację wzmianki @m365agents", - "teamsagent.walkthrough.installConfirm.description": "Oznacz instalację jako ukończoną po zainstalowaniu [rozszerzenia narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365](https://aka.ms/install-m365agents).\n[Oznacz instalację jako ukończoną](command:fx-extension.markInstallTeamsAgentDone)", + "teamsagent.walkthrough.installConfirm.description": "Oznacz instalację jako ukończoną po zainstalowaniu [rozszerzenia narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365](https://aka.ms/install-m365agents).\n[Oznacz instalację jako ukończoną](command:fx-extension.markInstallTeamsAgentDone)", "teamsagent.walkthrough.setup.title": "⚠️Skonfiguruj GitHub Copilot w Visual Studio Code", "teamsagent.walkthrough.setup.description": "Zaloguj się do konta usługi GitHub i rozpocznij pracę. Dowiedz się więcej o [set up GitHub Copilot](https://aka.ms/teams-agent-github-copilot-setup).\n[Open GitHub Copilot Chat](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.use.title": "Zacznij używać wzmianki @m365agents", "teamsagent.walkthrough.use.title.preview": "Zacznij używać wzmianki @m365agents (wersja zapoznawcza)", - "teamsagent.walkthrough.use.description": "Czatuj za pomocą rozszerzenia narzędzia GitHub Copilot dla Zestawu narzędzi agentów Microsoft 365 (@m365agents), aby tworzyć aplikacje lub dostosowywać i rozszerzać rozwiązanie Microsoft 365 Copilot.", - "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "Rozszerzenie GitHub Copilot Chat jest już zainstalowane.", + "teamsagent.walkthrough.use.description": "Czatuj za pomocą rozszerzenia narzędzia GitHub Copilot dla zestawu narzędzi agentów platformy Microsoft 365 (@m365agents), aby tworzyć aplikacje lub dostosowywać i rozszerzać rozwiązanie Microsoft 365 Copilot.", + "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "rozszerzenie czatu GitHub Copilot jest już zainstalowane.", "teamstoolkit.officeAddIn.terminal.installDependency": "Trwa instalowanie zależności...", "teamstoolkit.officeAddIn.terminal.validateManifest": "Trwa weryfikowanie manifestu...", "teamstoolkit.officeAddIn.terminal.stopDebugging": "Trwa zatrzymywanie debugowania...", @@ -611,32 +615,25 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "Ulepsz agenta deklaratywnego", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "Popraw środowisko użytkownika agenta deklaratywnego, dodając możliwości.\n\nElement capabilities w manifeście odblokowuje różne funkcje dla użytkowników.", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "Dwie ścieżki do inteligentnych aplikacji", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Twórz inteligentne aplikacje za pomocą platformy Microsoft 365 na dwa sposoby:\n🎯 Rozszerz możliwości funkcji Microsoft Copilot za pomocą wtyczki lub\n✨ Stwórz własne rozwiązanie Copilot w usłudze Teams przy użyciu zestawu SDK usługi Microsoft Teams i usług platformy Azure", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Twórz inteligentne aplikacje za pomocą Microsoft 365 na dwa sposoby:\n🎯 Rozszerz Microsoft Copilot za pomocą wtyczki lub\n✨ Twórz własne Copilot w programie Teams przy użyciu biblioteki AI aplikacji Teams i usług platformy Azure", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "Wtyczka interfejsu API", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "Przekształć aplikację w wtyczkę, aby zwiększyć umiejętności copilot i zwiększyć produktywność użytkowników w codziennych zadaniach i przepływach pracy. Eksploruj [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22WalkThrough%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "Kompiluj wtyczkę", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "Rozwiń, wzbogać i dostosuj funkcję Copilot za pomocą wtyczek i łączników programu Graph w dowolny z następujących sposobów\n[OpenAPI Description Document](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22project-type%22%3A%20%22copilot-agent-type%22%2C%20%22capabilities%22%3A%20%22api-plugin%22%7D%5D)\n[Teams Message Extension](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22search-app%22%2C%20%2 Typ2project%22%3A%20%22me%22%2C%20%22me-architecture%22%3A%20%22bot-plugin%22%7D%5D)\n[Graph Connector](command:fx-extension.openSamples?%5B%22WalkThrough%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "Agent aparatu niestandardowego", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Twórz inteligentne środowiska oparte na języku naturalnym w usłudze Teams, wykorzystując jej ogromną bazę użytkowników do współpracy. \nZestaw narzędzi agentów platformy Microsoft 365 integruje się z biblioteką sztucznej inteligencji usług Azure OpenAI i Teams, aby usprawnić rozwój funkcji Copilot i oferować unikatowe możliwości oparte na usłudze Teams. \nOdkrywaj [bibliotekę sztucznej inteligencji usługi Teams](https://learn.microsoft.com/pl-pl/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview) i usługi [Azure OpenAI](https://learn.microsoft.com/pl-pl/azure/ai-services/openai/overview)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Twórz inteligentne środowiska oparte na języku naturalnym w usłudze Teams, wykorzystując jej ogromną bazę użytkowników do współpracy. \nZestaw narzędzi agentów Microsoft 365 integruje się z usługą Azure OpenAI i Zestawem SDK aplikacji Microsoft Teams, aby usprawnić programowanie w funkcji Copilot i oferować unikatowe możliwości oparte na usłudze Teams. \nZapoznaj się z [Zestawem SDK aplikacji Microsoft Teams](https://aka.ms/teams-ai-library-v2) i usługą [Azure OpenAI Service](https://learn.microsoft.com/pl-pl/azure/ai-services/openai/overview)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "Kompiluj agenta aparatu niestandardowego", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "Utwórz bota agenta AI na potrzeby typowych zadań lub inteligentnego czatbota, aby odpowiedzieć na określone pytania\n[Utwórz podstawowego czatbota AI](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-basic%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[Utwórz agenta AI](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-agent%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[Utwórz bota do analizy danych](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-rag%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "Zasoby", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "Eksploruj te zasoby, aby tworzyć inteligentne aplikacje i ulepszać projekty programistyczne\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [Retrieval Augmented Generation (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Musisz zalogować się do konta Microsoft 365.", - "teamstoolkit.handeler.addAuthConfig.notification": "Zestaw narzędzi agentów Microsoft 365 pomyślnie zaktualizował konfigurację projektu (m365agents.yaml i m365agents.local.yaml) z dodaną akcją do obsługi przepływu uwierzytelniania. Możesz przejść do aprowizacji zdalnej.", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "Nieprawidłowy parametr w poleceniu createPluginWithManifest. Sposób użycia: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string). Prawidłowe wartości dla LAST_COMMAND: createPluginWithManifest, createDeclarativeCopilotWithManifest.", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "Nieprawidłowy parametr w poleceniu createDeclarativeAgentWithApiSpec. Sposób użycia: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: string).", + "teamstoolkit.error.KiotaNotInstalled": "Aby korzystać z tej funkcji, musisz zainstalować rozszerzenie Microsoft Kiota z minimalną wersją %s.", + "teamstoolkit.handeler.addAuthConfig.notification": "Zestaw narzędzi agentów platformy Microsoft 365 pomyślnie zaktualizował pliki konfiguracji projektu (teamsapp.yaml i teamsapp.local.yaml) z dodaną akcją do obsługi przepływu uwierzytelniania. Możesz przejść do aprowizacji zdalnej.", "teamstoolkit.handeler.addAuthConfig.notification.provision": "Inicjowanie obsługi", - "teamstoolkit.mcpUtils.setupMcpServer.message": "Skonfigurować serwer MCP zestawu narzędzi agentów Microsoft 365? (Spowoduje to utworzenie lub zaktualizowanie %s w obszarze roboczym)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "Potwierdź", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "Pomiń", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "Serwer MCP zestawu narzędzi agentów Microsoft 365 został pomyślnie skonfigurowany!", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "Nie można skonfigurować serwera MCP zestawu narzędzi agentów Microsoft 365. Błąd: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "Projekt agenta deklaratywnego został pomyślnie utworzony z opakowanym pakietem MCP. Teraz możesz uruchomić serwer MCP za pomocą przycisku CodeLens „Start” lub dostosować serwer MCP w pliku vscode/mcp.json.\nAby pobrać narzędzia z serwera MCP, kliknij pozycję „ATK: Akcja aktualizacji za pomocą MCP” z CodeLens lub Command Palatte.", - "teamstoolkit.commands.updateActionWithMCP.title": "Pobierz akcję z MCP", - "teamstoolkit.MCP.FileNotFound": "Nie znaleziono pliku konfiguracji MCP w pliku vscode/mcp.json. Upewnij się, że serwer MCP został skonfigurowany.", - "teamstoolkit.MCP.ContentInvalid": "Zawartość pliku konfiguracji MCP jest nieprawidłowa. Upewnij się, że zawartość pliku vscode/mcp.json jest poprawna.", - "teamstoolkit.MCP.ServerNotFound": "Nie znaleziono serwera MCP w pliku MCP.", - "teamstoolkit.MCP.NameOrServerUrlMissing": "Brak nazwy MCP lub adresu URL serwera.", - "teamstoolkit.MCP.LocalMcpCommandMissing": "Brakuje lokalnego polecenia MCP.", - "teamstoolkit.MCP.ToolsNotFound": "Nie znaleziono narzędzi dla serwera MCP. Najpierw uruchom serwer.", - "teamstoolkit.MCP.SelectServerFailed": "Nie można wybrać serwera MCP." + "teamstoolkit.config.enableKiota": "Czy chcesz użyć rozszerzenia Kiota do wygenerowania specyfikacji interfejsu OpenAPI i manifestu wtyczki? To ustawienie można również zaktualizować na stronie ustawień.", + "teamstoolkit.config.enableKiota.yes": "Tak", + "teamstoolkit.config.enableKiota.no": "Nie" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.pt-BR.json b/packages/vscode-extension/package.nls.pt-BR.json index c81d54389da..db89cec5155 100644 --- a/packages/vscode-extension/package.nls.pt-BR.json +++ b/packages/vscode-extension/package.nls.pt-BR.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: Entrando...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: Alternando...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "Equipe em Área Restrita Habilitada", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Em vez disso, você pode criar uma área restrita no Teams para teste local.", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Você pode criar equipe em área restrita para teste local.", "teamstoolkit.accountTree.sandboxedTeamDisabled": "Equipe em Área Restrita Desabilitada", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "O administrador da conta do Microsoft 365 não habilitou a Equipe em Área Restrita.", - "teamstoolkit.accountTree.suggestSandboxedTeam": "O [upload de aplicativo personalizado](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) está desativado na sua conta do Microsoft 365. Você pode criar uma área restrita no Teams com um canal para desenvolvimento e teste.", - "teamstoolkit.accountTree.sandboxedTeam.button": "Depurar na área restrita no Teams (Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "O [carregamento de aplicativo personalizado](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) está desabilitado de sua conta do Microsoft 365. Mas você pode criar uma equipe em área restrita para teste local.", + "teamstoolkit.accountTree.sandboxedTeam.button": "Depurar nas Área Restrita das Equipes (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Criar uma área Microsoft 365 para desenvolvedores", "teamstoolkit.appStudioLogin.loginCancel": "Entrada cancelada. O Kit de ferramentas do Microsoft 365 Agents precisa de uma conta Microsoft 365 com permissão para upload de aplicativos personalizados. Se você for um assinante do Visual Studio, crie uma área restrita de desenvolvedor com o Programa para Desenvolvedores do Microsoft 365 (https://developer.microsoft.com/en-us/microsoft-365/dev-program).", "teamstoolkit.appStudioLogin.message": "O Kit de ferramentas do Microsoft 365 Agents precisa de uma conta Microsoft 365 com permissão para upload de aplicativos personalizados. Se você for um assinante do Visual Studio, crie uma área restrita de desenvolvedor com o Programa para Desenvolvedores do Microsoft 365.", - "teamstoolkit.azureLogin.failToFindSubscription": "Nenhuma assinatura encontrada. Alterne para um locatário com uma assinatura vinculada.", + "teamstoolkit.azureLogin.failToFindSubscription": "Não foi possível encontrar uma assinatura.", "teamstoolkit.azureLogin.message": "O Kit de ferramentas do Microsoft 365 Agents usará a autenticação da Microsoft para acessar sua conta e assinatura do Azure, a fim de implantar os recursos do Azure para seu projeto. Você não será cobrado até confirmar.", "teamstoolkit.azureLogin.subscription": "assinatura", "teamstoolkit.azureLogin.selectSubscription": "Selecionar Assinatura para a ID do Locatário Atual", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "Antes de publicar seu aplicativo, recomendamos validar todos os casos de teste de integração.", "teamstoolkit.commandsTreeViewProvider.publishTitle": "Publicar na Organização", "teamstoolkit.commandsTreeViewProvider.shareTitle": "Compartilhar", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "Altere o escopo compartilhado do agente.", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "Execute o estágio de ciclo de vida \"compartilhar\" no arquivo m365agents.yml.", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "Introdução", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "Relate qualquer problema e nos informe seus comentários", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "Relatar Problemas no GitHub", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Gerenciar Colaboradores do Aplicativo Microsoft 365 (com o Aplicativo Microsoft Entra)", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "Adicionar Ação", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "Adicionar ação ao agente declarativo", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Estender o aplicativo para Agente Declarativo", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Estender o projeto do suplemento para Agente Declarativo", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Estender para Agente Declarativo", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Estender o projeto do suplemento para ação do Agente Declarativo", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "Regenerar Ação", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "Regenerar ação no agente declarativo", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "Adicionando ação...", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "Cancelar", "teamstoolkit.localDebug.launchTeamsWebClientError": "Não é possível iniciar o cliente web do Teams.", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "Tarefa para iniciar o cliente Web do Teams interrompida com o código de saída '%s'.", - "teamstoolkit.localDebug.useTestTool": "Como alternativa, você pode usar %s para continuar.", + "teamstoolkit.localDebug.useTestTool": "Como alternativa, você pode ignorar esta etapa escolhendo a %s opção.", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "Não é possível iniciar o cliente de área de trabalho do Teams.", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "A tarefa de iniciar o cliente da área de trabalho do Teams foi interrompida com o código de saída \"%s\".", "teamstoolkit.localDebug.startDeletingAadProcess": "Iniciar a exclusão Microsoft Entra processo de aplicativo.", @@ -507,8 +507,8 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "Liste todos os proprietários que podem fazer alterações em seus registros de aplicativo do Teams e do Microsoft Entra", "teamstoolkit.manageCollaborator.command": "Gerenciar quem pode fazer alterações em seu aplicativo", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[Atualizar Projeto](command:fx-extension.checkProjectUpgrade?%5B%22SideBar%22%5D)\nAtualize seu projeto do Kit de Ferramentas do Microsoft 365 Agents para manter a compatibilidade com a última versão. Um diretório de backup será criado junto com um Resumo de Atualização. [Mais informações](command:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\nSe você não deseja atualizar agora, continue usando o Kit de Ferramentas do Microsoft 365 Agents versão 4.x.x.", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Bem-vindo ao Microsoft 365 Agents Toolkit!\nIntrodução a um tutorial guiado\n[Criar um Agente Declarativo](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Ou vá diretamente para o desenvolvimento de aplicativos com modelos de aplicativo ou exemplos\n[Criar um Novo Agente/Aplicativo](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Exibir Exemplos](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nVisite nossa documentação para criar aplicativos para o [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) ou estender o [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Bem-vindo ao Microsoft 365 Agents Toolkit!\nIntrodução a um tutorial guiado\n[Criar um Agente Declarativo](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Ou vá diretamente para o desenvolvimento de aplicativos com modelos de aplicativo ou exemplos\n[Criar um Novo Agente/Aplicativo](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Exibir Exemplos](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nVisite nossa documentação para criar aplicativos para o [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) ou estender o [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Bem-vindo(a) à Caixa de Ferramentas do Microsoft 365 Agents!\nIntrodução com um tutorial guiado\n[Criar um Agente Declarativo](comando:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Ou vá direto para o desenvolvimento de aplicativo com modelos de aplicativos ou exemplos\n[Criar um novo agente/aplicativo](comando:fx-extension.create?%5B%22SideBar%22%5D)\n[Ver Exemplos](comando:fx-extension.openSamples?%5B%22SideBar%22%5D)\nCrie seu aplicativo com facilidade com o GitHub Copilot.\n[Criar Aplicativo com GitHub Copilot](comando:fx-extension.invokeChat?%5B%22SideBar%22%5D)\nVisite nossa documentação para criar aplicativos para [Microsoft Teams](comando:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) ou estenda [Microsoft 365 Copilot](comando:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Bem-vindo(a) à Caixa de Ferramentas do Microsoft 365 Agents!\nIntrodução com um tutorial guiado\n[Criar um Agente Declarativo](comando:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Ou vá direto para o desenvolvimento de aplicativo com modelos de aplicativos ou exemplos\n[Criar um novo agente/aplicativo](comando:fx-extension.create?%5B%22SideBar%22%5D)\n[Ver Exemplos](comando:fx-extension.openSamples?%5B%22SideBar%22%5D)\nCrie seu aplicativo com facilidade com o GitHub Copilot. \n[Criar Aplicativo com GitHub Copilot (pré-visualização)](comando:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\nVisite nossa documentação para criar aplicativos para [Microsoft Teams](comando:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) ou estenda [Microsoft 365 Copilot](comando:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", "teamstoolkit.walkthroughs.description": "Crie um bot de notificação personalizado para o Microsoft Teams usando o Kit de ferramentas do Microsoft 365 Agents.", "teamstoolkit.walkthroughs.withChat.description": "Crie um bot de notificação personalizado para o Microsoft Teams usando o Kit de ferramentas do Microsoft 365 Agents.", "teamstoolkit.walkthroughs.steps.teamsToolkitBuildApp.description": "Siga estas etapas para criar seu bot de notificação.\n[Build Notification Bot](command:fx-extension.create?%5B%22SideBar%22%5D)", @@ -527,7 +527,7 @@ "teamstoolkit.walkthroughs.steps.teamsToolkitResources.title": "Recursos", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.description": "Execute e depure seu aplicativo no ambiente emulado do Playground do Microsoft 365 Agents.\n[Depurar no Playground do Microsoft 365 Agents](comando:fx-extension.localdebug)\nDica: use o painel [Executar e Depurar](comando:workbench.view.debug) na barra de atividades para depurar no Teams.", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.title": "Depurar no Playground do Microsoft 365 Agents", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "Chat com o GitHub Copilot", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "Conversar com GitHub Copilot", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.title": "Bate-papo com o GitHub Copilot (Pré-visualização)", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "Precisa de mais ajuda online? [Converse com o GitHub Copilot](comando:fx-extension.invokeChat?%5B%22WalkThrough%22%5D) para explorar o desenvolvimento do aplicativo ou agente do Microsoft 365 Copilot.", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.description": "Precisa de mais ajuda online? [Converse com o GitHub Copilot](comando:fx-extension.invokeChatWithPreviewTag?%5B%22WalkThrough%22%5D) para explorar o desenvolvimento do aplicativo ou agente do Microsoft 365 Copilot.", @@ -549,7 +549,7 @@ "teamsagent.walkthrough.use.title": "Começar a usar @m365agents", "teamsagent.walkthrough.use.title.preview": "Começar a usar @m365agents (versão prévia)", "teamsagent.walkthrough.use.description": "Converse com a extensão do GitHub Copilot para a caixa de ferramentas do Microsoft 365 Agents (@m365agents) para criar aplicativos ou personalizar e estender o Microsoft 365 Copilot.", - "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "A extensão do GitHub Copilot Chat já está instalada.", + "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilot extensão de Chat já está instalada.", "teamstoolkit.officeAddIn.terminal.installDependency": "Instalando dependência...", "teamstoolkit.officeAddIn.terminal.validateManifest": "Validando manifesto...", "teamstoolkit.officeAddIn.terminal.stopDebugging": "Interrompendo a depuração...", @@ -611,32 +611,24 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "Melhore seu agente declarativo", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "Melhore a experiência do usuário do agente declarativo adicionando funcionalidades.\n\nO elemento de recursos no manifesto desbloqueia vários recursos para seus usuários.", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "Dois Caminhos para Aplicativos Inteligentes", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Crie seus aplicativos inteligentes com o Microsoft 365 de duas maneiras:\n🎯 Estenda o Microsoft Copilot com um plugin, Ou\n✨ Crie seu próprio Copilot no Teams usando o Microsoft Teams SDK e os serviços do Azure", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Crie seus aplicativos inteligentes com Microsoft 365 de duas maneiras:\n🎯 Estender Microsoft Copilot com um plug-in ou\n✨ Crie seu próprio Copilot no Teams usando a Biblioteca de IA do Teams e os serviços do Azure", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "Plug-in de API", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "Transforme seu aplicativo em um plug-in para aprimorar as habilidades do Copilot e aumentar a produtividade do usuário em tarefas diárias e fluxos de trabalho. Explore [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22Through%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "Criar um Plug-in", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "Expanda, enriqueça e personalize o Copilot com plug-ins e conectores do Graph de qualquer uma das seguintes maneiras\n[OpenAPI Description Document](command:fx-extension.createFromThroughthrough?%5B%22Through%22%2C%20%7B%22project-type%22%3A%20%22copilot-agent-type%22%2C%20%22capabilities%22%3A%20%22api-plugin%22%7D%5D)\n[Teams Message Extension](command:fx-extension.createFromThroughthrough?%5B%22Throughthrough%22%2C%20%7B%22capabilities%22%3A%20%22search-app%22%2C%20%2 2projeto-type%22%3A%20%22me-type%22%2C%20%22me-architecture%22%3A%20%22bot-plugin%22%7D%5D)\n[Graph Connector](command:fx-extension.openSamples?%5B%22Through%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "Agente de Mecanismo Personalizado", - "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Crie suas experiências inteligentes, orientadas por linguagem natural, no Teams, aproveitando sua vasta base de usuários para colaboração. \nO Microsoft 365 Agents Toolkit integra-se ao Azure OpenAI e ao Microsoft Teams SDK para simplificar o desenvolvimento de copilots e oferecer capacidades exclusivas baseadas no Teams. \nExplore o [Microsoft Teams SDK](https://aka.ms/teams-ai-library-v2) e o [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Crie experiências inteligentes e orientadas por linguagem natural no Teams, aproveitando sua vasta base de usuários para colaboração. \nO Kit de ferramentas do Microsoft 365 Agents se integra ao OpenAI do Azure e à Biblioteca de IA do Teams para simplificar o desenvolvimento do Copilot e oferecer funcionalidades exclusivas baseadas no Teams. \nExplore a [Biblioteca de IA do Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview) e o [Serviço OpenAI do Azure](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "Compilar Agente de Mecanismo Personalizado", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "Crie um bot de agente de IA para tarefas comuns ou um chatbot inteligente para responder a perguntas específicas\n[Build a Basic AI Chatbot](command:fx-extension.createFromThroughthrough?%5B%22Through%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-basic%22%2C%20%22project-type%22%3A%22capabilities%22%0 22custom-copilot-type%22capabilities%22%1 7D%22capabilities%22%2 D)\n[Build an AI Agent](command:fx-extension.createFromThroughthrough?%5B%22Through%22capabilities%22%5 2C%22capabilities%22%6 7B%22capabilities%22%3A%22capabilities%22%9 22custom-copilot-agent%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[Build a Bot to Chat with Your Data](command:fx-extension.createFromThroughthrough?%5B%22ThroughThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot pano%22%2C%20%tipo 22projetos%22%3A%20%22custom-copilot-type%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "Recursos", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "Explore esses recursos para criar aplicativos inteligentes e aprimorar seus projetos de desenvolvimento\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [Retrieval Augmented Generation (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Você precisa entrar em sua conta Microsoft 365 conta.", - "teamstoolkit.handeler.addAuthConfig.notification": "O Kit de ferramentas de agentes do Microsoft 365 atualizou com sucesso os arquivos de configuração do projeto (m365agents.yaml e m365agents.local.yaml) com ação adicionada para dar suporte ao fluxo de autenticação. Você pode prosseguir para o provisionamento remoto.", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "Parâmetro inválido no comando createPluginWithManifest. Uso: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string). Valores válidos para LAST_COMMAND: createPluginWithManifest, createDeclarativeCopilotWithManifest.", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "Parâmetro inválido no comando createDeclarativeAgentWithApiSpec. Uso: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: string).", + "teamstoolkit.error.KiotaNotInstalled": "Você precisa instalar a extensão Do Microsoft Kiota com a versão %s para usar este recurso.", + "teamstoolkit.handeler.addAuthConfig.notification": "O Kit de ferramentas do Microsoft 365 Agents atualizou com sucesso os arquivos de configuração do seu projeto (teamsapp.yaml e teamsapp.local.yaml) com uma ação adicionada para suportar o fluxo de autenticação. Você pode prosseguir para o provisionamento remoto.", "teamstoolkit.handeler.addAuthConfig.notification.provision": "Provisão", - "teamstoolkit.mcpUtils.setupMcpServer.message": "Configurar o servidor MCP do Kit de Ferramentas do M365 Agents? (Isso criará ou atualizará %s em seu espaço de trabalho)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "Confirmar", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "Ignorar", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "Servidor MCP do Kit de Ferramentas do M365 Agents configurado com êxito!", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "Não é possível configurar o servidor MCP do Kit de Ferramentas do M365 Agents. Erro: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "Projeto de agente declarativo criado com sucesso com um MCP encapsulado. Agora você pode iniciar o servidor MCP pelo botão CodeLens \"Start\" ou personalizar seu servidor MCP no arquivo .vscode/mcp.json.\nPara buscar ferramentas do servidor MCP, clique em \"ATK: Atualizar Ação com MCP\" no CodeLens ou na Paleta de Comandos.", - "teamstoolkit.commands.updateActionWithMCP.title": "Buscar ação do MCP", - "teamstoolkit.MCP.FileNotFound": "Arquivo de configuração MCP não encontrado em .vscode/mcp.json. Verifique se você configurou o servidor MCP.", - "teamstoolkit.MCP.ContentInvalid": "O conteúdo do arquivo de configuração MCP é inválido. Verifique se o conteúdo em .vscode/mcp.json está correto.", - "teamstoolkit.MCP.ServerNotFound": "Nenhum servidor MCP encontrado no arquivo MCP.", - "teamstoolkit.MCP.NameOrServerUrlMissing": "O nome MCP ou a URL do servidor está ausente.", - "teamstoolkit.MCP.LocalMcpCommandMissing": "Comando Local MCP ausente.", - "teamstoolkit.MCP.ToolsNotFound": "Nenhuma ferramenta encontrada para o servidor MCP. Execute o servidor primeiro.", - "teamstoolkit.MCP.SelectServerFailed": "Falha ao selecionar o servidor MCP." + "teamstoolkit.config.enableKiota": "Deseja usar a extensão Kiota para gerar a especificação OpenAPI e o manifesto do plug-in? Você também pode atualizar essa configuração na página de configurações.", + "teamstoolkit.config.enableKiota.yes": "Sim", + "teamstoolkit.config.enableKiota.no": "Não" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.ru.json b/packages/vscode-extension/package.nls.ru.json index 18682fa499a..214e3c2e3e6 100644 --- a/packages/vscode-extension/package.nls.ru.json +++ b/packages/vscode-extension/package.nls.ru.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: вход...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: переключение...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "Изолированная команда включена", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Вместо этого можно создать песочницу в Teams для локального тестирования.", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Вы можете создать изолированную команду для локального тестирования.", "teamstoolkit.accountTree.sandboxedTeamDisabled": "Изолированная команда отключена", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "Администратор учетной записи Microsoft 365 не включил изолированную команду.", - "teamstoolkit.accountTree.suggestSandboxedTeam": "[Отправка пользовательского приложения](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) отключена в вашей учетной записи Microsoft 365. Вы можете создать песочницу в Teams с каналом для разработки и тестирования.", + "teamstoolkit.accountTree.suggestSandboxedTeam": "[Отправка пользовательского приложения](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) отключена в вашей учетной записи Microsoft 365. Но вы можете создать изолированную команду для локального тестирования.", "teamstoolkit.accountTree.sandboxedTeam.button": "Отладка в песочнице Teams (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Создать песочницу Microsoft 365 разработчика", "teamstoolkit.appStudioLogin.loginCancel": "Вход отменен. Для набора средств агентов Microsoft 365 требуется учетная запись Microsoft 365 с разрешением на отправку пользовательских приложений. Если вы подписчик Visual Studio, создайте песочницу разработчика с помощью программы для разработчиков Microsoft 365 (https://developer.microsoft.com/en-us/microsoft-365/dev-program).", "teamstoolkit.appStudioLogin.message": "Для набора средств агентов Microsoft 365 требуется учетная запись Microsoft 365 с разрешением на отправку пользовательских приложений. Если вы подписчик Visual Studio, создайте песочницу разработчика с помощью программы для разработчиков Microsoft 365.", - "teamstoolkit.azureLogin.failToFindSubscription": "Подписка не найдена. Переключитесь на клиент со связанной подпиской.", + "teamstoolkit.azureLogin.failToFindSubscription": "Не удалось найти подписку.", "teamstoolkit.azureLogin.message": "Набор средств агентов Microsoft 365 будет использовать проверку подлинности Майкрософт для входа в учетную запись Azure и подписку с целью развертывания ресурсов Azure для вашего проекта. С вас не будет взиматься плата до вашего подтверждения.", "teamstoolkit.azureLogin.subscription": "подписка", "teamstoolkit.azureLogin.selectSubscription": "Выберите подписку для идентификатора текущего клиента", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "Перед публикацией приложения рекомендуется проверить все тестовые случаи интеграции.", "teamstoolkit.commandsTreeViewProvider.publishTitle": "Опубликовать в организации", "teamstoolkit.commandsTreeViewProvider.shareTitle": "Поделиться", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "Измените общую область агента.", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "Запустите этап жизненного цикла \"поделиться\" в файле m365agents.yml.", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "Начало работы", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "Сообщите о любых проблемах и поделитесь с нами отзывом", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "Сообщить о проблемах в GitHub", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Управление приложением Microsoft 365 (с приложением Microsoft Entra) Сотрудники", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "Добавить действие", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "Добавить действие в декларативный агент", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Расширить приложение до декларативного агента", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Расширить проект надстройки до Declarative Agent", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Расширить до декларативного агента", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Расширить проект надстройки до действия декларативного агента", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "Повторное создание действия", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "Повторное создание действия в декларативном агенте", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "Добавление действия...", @@ -323,9 +323,9 @@ "teamstoolkit.handlers.askInstallTeamsAgent.confirmInstall": "Подтверждение установки", "teamstoolkit.handlers.installCopilotAndAgent.output": "Чтобы использовать расширение GitHub Copilot для Microsoft 365 Agents Toolkit при разработке приложений или настройке Microsoft 365 Copilot, установите GitHub Copilot из \"%s\" и расширение GitHub Copilot для Microsoft 365 Agents Toolkit из \"%s\".", "teamstoolkit.handlers.installAgent.output": "Чтобы использовать расширение GitHub Copilot для Microsoft 365 Agents Toolkit при разработке приложений или настройке Microsoft 365 Copilot, установите расширение GitHub Copilot для Microsoft 365 Agents Toolkit из \"%s\".", - "teamstoolkit.handlers.installCopilotError": "Не удалось установить GitHub Copilot Chat. Установите его после %s и повторите попытку.", - "teamstoolkit.handlers.chatTeamsAgentError": "Не удалось автоматически сосредоточиться на GitHub Copilot Chat. Откройте GitHub Copilot Chat и начните с \"%s\"", - "teamstoolkit.handlers.verifyCopilotExtensionError": "Не удалось проверить GitHub Copilot Chat. Установите его вручную после %s и повторите попытку.", + "teamstoolkit.handlers.installCopilotError": "Не удалось установить GitHub Copilot Чат. Установите его после %s и повторите попытку.", + "teamstoolkit.handlers.chatTeamsAgentError": "Не удалось автоматически сосредоточиться на GitHub Copilot чате. Откройте GitHub Copilot чате и начните с \"%s\"", + "teamstoolkit.handlers.verifyCopilotExtensionError": "Не удалось проверить GitHub Copilot чате. Установите его вручную после %s и повторите попытку.", "teamstoolkit.handlers.teamsAgentTroubleshoot.noActiveEditor": "Не удалось найти активный редактор.", "teamstoolkit.localDebug.npmInstallFailedHintMessage": "Задача '%s' успешно завершена. Чтобы получить подробные сведения об ошибке, проверка '%s' окно терминала и чтобы сообщить о проблеме, нажмите кнопку \"Сообщить о проблеме\".", "teamstoolkit.localDebug.openSettings": "Открыть параметры", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "Отмена", "teamstoolkit.localDebug.launchTeamsWebClientError": "Не удалось запустить веб-клиент Teams.", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "Задача запуска веб-клиента Teams остановлена с кодом выхода \"%s\".", - "teamstoolkit.localDebug.useTestTool": "Или вы можете использовать %s для продолжения.", + "teamstoolkit.localDebug.useTestTool": "Вы также можете пропустить этот шаг, выбрав %s.", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "Не удалось запустить настольный клиент Teams.", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "Задача запуска клиента Teams для настольных компьютеров остановлена с кодом выхода \"%s\".", "teamstoolkit.localDebug.startDeletingAadProcess": "Начало удаления Microsoft Entra процесса приложения.", @@ -507,8 +507,8 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "Отобразить список всех владельцев, которые могут изменять регистрацию приложения Teams и Microsoft Entra", "teamstoolkit.manageCollaborator.command": "Управляйте тем, кто может вносить изменения в ваше приложение", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[Обновить проект](command:fx-extension.checkProjectUpgrade?%5B%22SideBar%22%5D)\nОбновите проект набора средств агентов Microsoft 365, чтобы обеспечить совместимость с последней версией. Будет создан резервный каталог и сводка обновления. [Дополнительные сведения](command:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\nЕсли вы не хотите обновлять сейчас, продолжайте использовать набор средств агентов Microsoft 365 версии 4.x.x.", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Добро пожаловать в набор инструментов для создания агентов Microsoft 365!\nНачало работы с интерактивным руководством\n[Создать декларативный агент](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Также можно перейти к разработке приложений с использованием шаблонов приложений и примеров\n[Создать новый агент или приложение](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Просмотреть примеры](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nОзнакомьтесь с документацией, чтобы создавать приложения для [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) или расширить возможности [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Добро пожаловать в набор инструментов для создания агентов Microsoft 365!\nНачало работы с интерактивным руководством\n[Создать декларативный агент](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Также можно перейти к разработке приложений с использованием шаблонов приложений и примеров\n[Создать новый агент или приложение](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Просмотреть примеры](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nОзнакомьтесь с документацией, чтобы создавать приложения для [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) или расширить возможности [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Добро пожаловать в набор средств агентов Microsoft 365!\nНачало работы с интерактивным руководством\n[Создать декларативный агент](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Также можно перейти к разработке приложений с использованием шаблонов приложений и примеров\n[Создать новый агент или приложение](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Просмотреть примеры](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nЛегко создавайте новые приложения, используя GitHub Copilot.\n[Создать приложение с помощью GitHub Copilot](command:fx-extension.invokeChat?%5B%22SideBar%22%5D)\nОзнакомьтесь с документацией, чтобы создавать приложения для [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) или расширить возможности [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Добро пожаловать в набор средств агентов Microsoft 365!\nНачало работы с интерактивным руководством\n[Создать декларативный агент](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Также можно перейти к разработке приложений с использованием шаблонов приложений и примеров\n[Создать новый агент или приложение](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Просмотреть примеры](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nЛегко создавайте новые приложения, используя GitHub Copilot. \n[Создать приложение с помощью GitHub Copilot (предварительная версия)](command:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\nОзнакомьтесь с документацией, чтобы создавать приложения для [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) или расширить возможности [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D).", "teamstoolkit.walkthroughs.description": "Создайте настраиваемый бот уведомлений для Microsoft Teams с помощью набора средств агентов Microsoft 365.", "teamstoolkit.walkthroughs.withChat.description": "Создайте настраиваемый бот уведомлений для Microsoft Teams с помощью набора средств агентов Microsoft 365.", "teamstoolkit.walkthroughs.steps.teamsToolkitBuildApp.description": "Выполните эти действия, чтобы создать бот уведомлений.\n[Build Notification Bot](command:fx-extension.create?%5B%22SideBar%22%5D)", @@ -538,18 +538,18 @@ "teamsagent.walkthrough.introduction.description": "Расширение GitHub Copilot для Microsoft 365 Agents Toolkit (@m365agents) упрощает разработку приложений и позволяет настраивать Microsoft 365 Copilot с помощью функций чата. Узнайте больше о [расширении GitHub Copilot для набора инструментов Microsoft 365 Agents](https://aka.ms/install-m365agents).", "teamsagent.walkthrough.copilotPlan.title": "Получить доступ к GitHub Copilot", "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot Free** по умолчанию доступен отдельным клиентам GitHub с ограниченным доступом к некоторым функциям. Вы также можете использовать Copilot в рамках другого плана организации или корпоративного плана. Подробнее о [планах GitHub Copilot](https://aka.ms/teams-agent-github-copilot-plan) и [бесплатном плане GitHub Copilot](https://aka.ms/teams-agent-github-copilot-free).", - "teamsagent.walkthrough.copilotChat.title": "⚠️Установить GitHub Copilot Chat для Visual Studio Code", - "teamsagent.walkthrough.copilotChat.description": "С помощью GitHub Copilot Chat в Visual Studio Code вы можете общаться в чате на основе ИИ, чтобы создавать код, повышать понимание кода и даже настраивать редактор.\n[Установить GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.copilotChat.title": "⚠️Установить GitHub Copilot чат для Visual Studio Code", + "teamsagent.walkthrough.copilotChat.description": "С помощью GitHub Copilot чата в Visual Studio Code вы можете общаться в чате на основе ИИ, чтобы создавать код, повышать понимание кода и даже настраивать редактор.\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.install.title": "⚠️Установите расширение GitHub Copilot для набора средств агентов Microsoft 365", "teamsagent.walkthrough.install.description": "[Расширение GitHub Copilot для набора инструментов Microsoft 365 Agents](https://aka.ms/install-m365agents) (@m365agents) упрощает разработку приложений и позволяет настраивать Microsoft 365 Copilot с помощью функций чата.\n[Установить расширение GitHub Copilot для набора средств агентов Microsoft 365](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.installConfirm.title": "⚠️Подтвердите установку @m365agents", "teamsagent.walkthrough.installConfirm.description": "Отметьте установку как завершенную после установки [расширения GitHub Copilot для набора инструментов Microsoft 365 Agents](https://aka.ms/install-m365agents).\n[Отметить установку как завершенную](command:fx-extension.markInstallTeamsAgentDone)", "teamsagent.walkthrough.setup.title": "⚠️Настройка GitHub Copilot в Visual Studio Code", - "teamsagent.walkthrough.setup.description": "Войдите в свою учетную запись GitHub и начните работу. Дополнительные сведения о том, как [настроить GitHub Copilot](https://aka.ms/teams-agent-github-copilot-setup).\n[Открыть GitHub Copilot Chat](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.setup.description": "Войдите в свою учетную запись GitHub и начните работу. Дополнительные сведения о том, как [set up GitHub Copilot](https://aka.ms/teams-agent-github-copilot-setup).\n[Open GitHub Copilot Chat](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.use.title": "Начните использовать @m365agents", "teamsagent.walkthrough.use.title.preview": "Начните использовать @m365agents (предварительная версия)", "teamsagent.walkthrough.use.description": "Общайтесь с помощью расширения GitHub Copilot для набора инструментов Microsoft 365 Agents (@m365agents), чтобы создавать приложения или настраивать и расширять Microsoft 365 Copilot.", - "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilot Chat уже установлен.", + "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilot чата уже установлено.", "teamstoolkit.officeAddIn.terminal.installDependency": "Установка зависимости...", "teamstoolkit.officeAddIn.terminal.validateManifest": "Проверка манифеста...", "teamstoolkit.officeAddIn.terminal.stopDebugging": "Остановка отладки...", @@ -611,32 +611,24 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "Улучшение декларативного агента", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "Улучшите взаимодействие с пользователем декларативного агента, добавив возможности.\n\nЭлемент capabilities в манифесте разблокирует различные функции для пользователей.", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "Два пути к интеллектуальным приложениям", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Создавайте интеллектуальные приложения с Microsoft 365 двумя способами:\n🎯 Расширьте Microsoft Copilot с помощью плагина или\n✨ Создайте собственный Copilot в Teams с помощью пакета SDK для Microsoft Teams и служб Azure", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Создавайте интеллектуальные приложения с Microsoft 365 двумя способами:\n🎯 Расширить Microsoft Copilot с помощью подключаемого модуля или\n✨ Создавайте собственные Copilot в Teams с помощью библиотеки ИИ Teams и служб Azure", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "Подключаемый модуль API", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "Преобразуйте свое приложение в подключаемый модуль, чтобы повысить навыки Copilot и повысить производительность пользователей в ежедневных задачах и рабочих процессах. Обзор [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22WalkThrough%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "Сборка подключаемого модуля", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "Развертывание, обогащение и настройка Copilot с помощью подключаемых модулей и соединителей Graph любым из следующих способов\n[OpenAPI Description Document](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22project-type%22%3A%20%22copilot-agent-type%22%2C%20%22capabilities%22%3A%20%22api-plugin%22%7D%5D)\n[Teams Message Extension](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22search-app%22%2C%20%22project-type%22%3A%20%22me-type%22%2C%20%22me-architecture%22%3A%20%22bot-plugin%22%7D%5D)\n[Graph Connector](command:fx-extension.openSamples?%5B%22WalkThrough%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "Агент настраиваемого обработчика", - "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Создавайте интеллектуальные пользовательские интерфейсы на основе естественного языка в Teams, используя обширную базу пользователей для совместной работы. \nНабор инструментов для создания агентов Microsoft 365 интегрируется с Azure OpenAI и пакетом SDK для Microsoft Teams, чтобы упростить разработку помощников и реализовать уникальные возможности на базе Teams. \nОбзор [пакета SDK для Microsoft Teams](https://aka.ms/teams-ai-library-v2) и [Службой Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Создавайте интеллектуальные пользовательские интерфейсы на основе естественного языка в Teams, используя обширную базу пользователей для совместной работы. \nНабор средств агентов Microsoft 365 интегрируется с Azure OpenAI и библиотекой ИИ Teams, чтобы упростить разработку помощников и реализовать уникальные возможности на базе Teams. \nОзнакомьтесь с [библиотекой ИИ Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview) и [Службой Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "Создать агент настраиваемого ядра", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "Создайте бот агента ИИ для распространенных задач или интеллектуальный чат-бот, чтобы ответить на конкретные вопросы\n[Build a Basic AI Chatbot](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom -copilot-basic%22%2C%20%22project-type%22%3A%22capabilities%22%0 22custom-copilot-type%22capabilities%22%1 7D%22capabilities%22%2 D)\n[Build an AI Agent](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22capabilities%22%5 2C%22capabilities%22%6 7B%22capabilities%22%3A%22capabilities%22%9 22custom -copilot-agent%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[Build a Bot to Chat with Your Data](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-rag%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "Ресурсы", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "Ознакомьтесь с этими ресурсами, чтобы создавать интеллектуальные приложения и улучшать проекты разработки\n🗒️ [Генеративный ИИ для начинающих](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [Создание ответов с дополнением результатами поиска (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [Обучение ИИ и Центр сообщества](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Необходимо войти в учетную запись Microsoft 365 учетной записи.", - "teamstoolkit.handeler.addAuthConfig.notification": "Набор инструментов для создания агентов Microsoft 365 обновил файлы конфигурации вашего проекта (m365agents.yaml и m365agents.local.yaml) с добавленным действием для поддержки потока проверки подлинности. Вы можете перейти к удаленной подготовке.", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "Недопустимый параметр в команде createPluginWithManifest. Использование: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string). Допустимые значения для LAST_COMMAND: createPluginWithManifest, createDeclarativeCopilotWithManifest.", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "Недопустимый параметр в команде createDeclarativeAgentWithApiSpec. Использование: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: string).", + "teamstoolkit.error.KiotaNotInstalled": "Чтобы использовать эту функцию, необходимо установить расширение Microsoft Kiota с минимальной %s версии.", + "teamstoolkit.handeler.addAuthConfig.notification": "Набор средств агентов Microsoft 365 успешно обновил конфигурацию вашего проекта (файлы teamsapp.yaml и teamsapp.local.yaml) с добавленным действием для поддержки потока проверки подлинности. Вы можете перейти к удаленной подготовке.", "teamstoolkit.handeler.addAuthConfig.notification.provision": "Подготовить к работе", - "teamstoolkit.mcpUtils.setupMcpServer.message": "Настроить сервер MCP набора инструментов для создания агентов M365? (Это создаст или обновит %s в вашей рабочей области)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "Подтвердить", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "Пропустить", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "Сервер MCP набора инструментов для создания агентов M365 настроен!", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "Не удается настроить сервер MCP набора инструментов для создания агентов M365. Ошибка: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "Проект декларативного агента создан с оболочкой MCP. Теперь вы можете запустить сервер MCP из кнопки \"Пуск\" в CodeLens или настроить сервер MCP в файле .vscode/mcp.json.\nЧтобы получить инструменты с сервера MCP, выберите \"ATK: обновить действие с MCP\" в CodeLens или палитре команд.", - "teamstoolkit.commands.updateActionWithMCP.title": "Получить действие из MCP", - "teamstoolkit.MCP.FileNotFound": "Файл конфигурации MCP не найден в .vscode/mcp.json. Убедитесь, что сервер MCP настроен.", - "teamstoolkit.MCP.ContentInvalid": "Содержимое файла конфигурации MCP недействительно. Проверьте правильность содержимого в .vscode/mcp.json.", - "teamstoolkit.MCP.ServerNotFound": "В файле MCP не найден сервер MCP.", - "teamstoolkit.MCP.NameOrServerUrlMissing": "Отсутствует имя MCP или URL-адрес сервера.", - "teamstoolkit.MCP.LocalMcpCommandMissing": "Отсутствует локальная команда MCP.", - "teamstoolkit.MCP.ToolsNotFound": "Инструменты для сервера MCP не найдены. Сначала запустите сервер.", - "teamstoolkit.MCP.SelectServerFailed": "Не удалось выбрать сервер MCP." + "teamstoolkit.config.enableKiota": "Хотите использовать расширение Kiota для генерации спецификации OpenAPI и манифеста подключаемого модуля? Этот параметр также можно обновить на странице настроек.", + "teamstoolkit.config.enableKiota.yes": "Да", + "teamstoolkit.config.enableKiota.no": "Нет" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.tr.json b/packages/vscode-extension/package.nls.tr.json index d0ec2043455..31fbd0b9d8f 100644 --- a/packages/vscode-extension/package.nls.tr.json +++ b/packages/vscode-extension/package.nls.tr.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: Oturum açılıyor...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: Değiştiriliyor...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "Korumalı Ekip Etkin", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Bunun yerine, yerel testler için Teams'de bir korumalı alan oluşturabilirsiniz.", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "Yerel test için korumalı Ekip oluşturabilirsiniz.", "teamstoolkit.accountTree.sandboxedTeamDisabled": "Korumalı Ekip Devre Dışı", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "Microsoft 365 hesabı yöneticisi Korumalı Ekip'i etkinleştirmedi.", - "teamstoolkit.accountTree.suggestSandboxedTeam": "[Özel uygulama karşıya yükleme](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) Microsoft 365 hesabınızda devre dışı bırakıldı. Teams'de geliştirme ve test için bir kanal içeren bir korumalı alan oluşturabilirsiniz.", - "teamstoolkit.accountTree.sandboxedTeam.button": "Teams'de korumalı alanda hata ayıklayın (Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "[Özel uygulama karşıya yükleme](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) Microsoft 365 hesabınızda devre dışı bırakıldı. Ancak yerel test için korumalı Ekip oluşturabilirsiniz.", + "teamstoolkit.accountTree.sandboxedTeam.button": "Teams Korumalı Alanı'nda hata ayıkla (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "Yeni bir Microsoft 365 korumalı alanı oluşturun", "teamstoolkit.appStudioLogin.loginCancel": "Oturum açma iptal edildi. Microsoft 365 Aracı Araç Seti için özel uygulama yükleme iznine sahip bir Microsoft 365 hesabı gereklidir. Visual Studio abonesiyseniz Microsoft 365 Geliştirici Programı (https://developer.microsoft.com/en-us/microsoft-365/dev-program) ile bir geliştirici korumalı alanı oluşturun.", "teamstoolkit.appStudioLogin.message": "Microsoft 365 Aracı Araç Seti için özel uygulama yükleme iznine sahip bir Microsoft 365 hesabı gereklidir. Visual Studio abonesiyseniz Microsoft 365 Geliştirici Programı ile bir geliştirici korumalı alanı oluşturun.", - "teamstoolkit.azureLogin.failToFindSubscription": "Abonelik bulunamadı. Bağlı aboneliği olan bir kiracıya geçin.", + "teamstoolkit.azureLogin.failToFindSubscription": "Abonelik bulunamadı.", "teamstoolkit.azureLogin.message": "Microsoft 365 Aracı Araç Seti, projeniz için Azure kaynaklarını dağıtmak üzere Azure hesabında ve aboneliğinde oturum açmak için Microsoft kimlik doğrulamasını kullanır. Onaylamadan ücretlendirilmezsiniz.", "teamstoolkit.azureLogin.subscription": "abonelik", "teamstoolkit.azureLogin.selectSubscription": "Geçerli Kiracı Kimliği için Abonelik Seçin", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "Uygulamanızı yayımlamadan önce tüm tümleştirme test çalışmalarını doğrulamanızı önerilir.", "teamstoolkit.commandsTreeViewProvider.publishTitle": "Kuruluşta Yayımla", "teamstoolkit.commandsTreeViewProvider.shareTitle": "Paylaş", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "Aracının paylaşılan kapsamını değiştirin.", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "m365agents.yml dosyasında 'paylaş' yaşam döngüsü aşamasını çalıştırın.", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "Kullanmaya Başlayın", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "Tüm sorunları bildirin ve geri bildiriminizi belirtin", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "GitHub'da Sorunları Bildirin", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "Microsoft 365 Uygulaması (Microsoft Entra uygulaması ile) Ortak Çalışanlarını Yönetin", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "Eylem Ekle", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "Bildirim aracısının eylemlerini ekle", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Uygulamayı Bildirim Aracısına genişlet", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Eklenti projesini Bildirim Aracısına genişlet", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Bildirim Aracısına genişlet", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Eklenti projesini Bildirim Aracısı eylemine genişlet", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "Eylemi Yeniden Oluştur", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "Bildirim aracında eylemi yeniden oluştur", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "Eylem ekleniyor...", @@ -323,7 +323,7 @@ "teamstoolkit.handlers.askInstallTeamsAgent.confirmInstall": "Yüklemeyi Onayla", "teamstoolkit.handlers.installCopilotAndAgent.output": "Uygulamaları geliştirirken veya Microsoft 365 Copilot'ı özelleştirirken Microsoft 365 Aracı Araç Seti için GitHub Copilot Uzantısı'nı kullanmak için “%s” adresinden GitHub Copilot'ı ve “%s” adresinden Microsoft 365 Aracı Araç Seti için GitHub Copilot Uzantısı'nı yükleyin.", "teamstoolkit.handlers.installAgent.output": "Uygulamaları geliştirirken veya Microsoft 365 Copilot’ı özelleştirirken Microsoft 365 Aracı Araç Seti için GitHub Copilot Uzantısını kullanmak için \"%s\" adresinden Microsoft 365 Aracı Araç Seti için GitHub Copilot Uzantısını yükleyin.", - "teamstoolkit.handlers.installCopilotError": "GitHub Copilot Chat yüklenemiyor. Aşağıdaki adımları %s ve yeniden deneyin.", + "teamstoolkit.handlers.installCopilotError": "GitHub Copilot Sohbeti yüklenemiyor. Aşağıdaki adımları %s ve yeniden deneyin.", "teamstoolkit.handlers.chatTeamsAgentError": "Sohbete otomatik olarak GitHub Copilot veremiyor. Sohbet GitHub Copilot açın ve sohbetle \"%s\"", "teamstoolkit.handlers.verifyCopilotExtensionError": "Sohbet GitHub Copilot doğrulanamıyor. Aşağıdaki adımları kendiniz %s ve yeniden deneyin.", "teamstoolkit.handlers.teamsAgentTroubleshoot.noActiveEditor": "Etkin bir düzenleyici bulunamıyor.", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "İptal", "teamstoolkit.localDebug.launchTeamsWebClientError": "Teams web istemcisi başlatılamıyor.", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "Teams web istemcisinin '%s' çıkış kodu ile durdurulmasını başlatma görevi.", - "teamstoolkit.localDebug.useTestTool": "Alternatif olarak, devam etmek için %s kullanabilirsiniz.", + "teamstoolkit.localDebug.useTestTool": "Alternatif olarak, bu adımı geçiş seçeneğini belirleyerek %s atlayın.", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "Teams masaüstü istemcisi başlatılamıyor.", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "Teams masaüstü istemcisinin '%s' çıkış kodu ile durdurulmasını başlatma görevi.", "teamstoolkit.localDebug.startDeletingAadProcess": "Uygulama işlemini Microsoft Entra başlatın.", @@ -507,8 +507,8 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "Teams ve Microsoft Entra uygulama kayıtlarınızda değişiklik yapabilen tüm sahipleri listeleyin", "teamstoolkit.manageCollaborator.command": "Uygulamanızda kimlerin değişiklik yapabileceğini yönetin", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[Projeyi Yükselt](command:fx-extension.checkProjectUpgrade?%5B%22SideBar%22%5D)\nEn son sürümle uyumlu kalmak için Microsoft 365 Aracı Araç Kiti projenizi yükseltin. Yükseltme Özeti ile birlikte yedekleme dizini de oluşturulacaktır. [Daha Fazla Bilgi](command:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\nŞimdi yükseltmek istemiyorsanız lütfen Microsoft 365 Aracı Araç Seti 4.x.x sürümünü kullanmaya devam edin.", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Microsoft 365 Aracı Araç Seti'ne hoş geldiniz!\nKılavuzlu öğretici ile kullanmaya başlayın\n[Bildirim Aracı Oluştur](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Veya uygulama şablonları ya da örnekler ile doğrudan uygulama geliştirmeye başlayın\n[Yeni Aracı/Uygulama Oluştur](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Örnekleri Görüntüle](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) için uygulama oluşturma hakkındaki belgelerimizi ziyaret edin veya [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D) deneyimini genişletin.", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Microsoft 365 Aracı Araç Seti'ne hoş geldiniz!\nKılavuzlu öğretici ile kullanmaya başlayın\n[Bildirim Aracı Oluştur](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Veya uygulama şablonları ya da örnekler ile doğrudan uygulama geliştirmeye başlayın\n[Yeni Aracı/Uygulama Oluştur](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Örnekleri Görüntüle](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) için uygulama oluşturma hakkındaki belgelerimizi ziyaret edin veya [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D) deneyimini genişletin.", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "Microsoft 365 Aracı Araç Seti'ne hoş geldiniz!\nKılavuzlu öğretici ile kullanmaya başlayın\n[Bildirim Aracı Oluştur](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Veya uygulama şablonları ya da örnekler ile doğrudan uygulama geliştirmeye başlayın\n[Yeni Aracı/Uygulama Oluştur](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Örnekleri Görüntüle](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nGitHub Copilot ile yeni uygulamanızı zahmetsizce oluşturun.\n[GitHub Copilot ile Uygulama Oluştur](command:fx-extension.invokeChat?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) için uygulama oluşturma hakkındaki belgelerimizi ziyaret edin veya [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D) deneyimini genişletin.", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "Microsoft 365 Aracı Araç Seti'ne hoş geldiniz!\nKılavuzlu öğretici ile kullanmaya başlayın\n[Bildirim Aracı Oluştur](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n Veya uygulama şablonları ya da örnekler ile doğrudan uygulama geliştirmeye başlayın\n[Yeni Aracı/Uygulama Oluştur](command:fx-extension.create?%5B%22SideBar%22%5D)\n[Örnekleri Görüntüle](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\nGitHub Copilot ile yeni uygulamanızı zahmetsizce oluşturun. \n[GitHub Copilot ile Uygulama Oluştur (Önizleme)](command:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\n[Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) için uygulama oluşturma hakkındaki belgelerimizi ziyaret edin veya [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D) deneyimini genişletin.", "teamstoolkit.walkthroughs.description": "Microsoft 365 Aracı Araç Seti'ni kullanarak Microsoft Teams için özel bir bildirim botu oluşturun.", "teamstoolkit.walkthroughs.withChat.description": "Microsoft 365 Aracı Araç Seti'ni kullanarak Microsoft Teams için özel bir bildirim botu oluşturun.", "teamstoolkit.walkthroughs.steps.teamsToolkitBuildApp.description": "Bildirim botunuz oluşturmak için bu adımları izleyin.\n[Build Notification Bot](command:fx-extension.create?%5B%22SideBar%22%5D)", @@ -538,8 +538,8 @@ "teamsagent.walkthrough.introduction.description": "Microsoft 365 Aracı Araç Seti için GitHub Copilot uzantısı (@m365agents), uygulama geliştirmeyi basitleştirir ve Microsoft 365 Copilot'ı sohbet özellikleriyle özelleştirme olanağı sunar. [Microsoft 365 Aracı Araç Seti için GitHub Copilot uzantısı](https://aka.ms/install-m365agents) hakkında daha fazla bilgi edinin.", "teamsagent.walkthrough.copilotPlan.title": "Erişim izni GitHub Copilot", "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot Ücretsiz**, özellikleri seçmek için sınırlı erişime sahip tek tek GitHub müşterileri tarafından varsayılan olarak kullanılabilir. Copilot'ı başka bir kuruluş veya kuruluş planı aracılığıyla da kullana ekleyebilirsiniz. [GitHub Copilot plans](https://aka.ms/teams-agent-github-copilot-plan) ve [GitHub Copilot free plan](https://aka.ms/teams-agent-github-copilot-free).", - "teamsagent.walkthrough.copilotChat.title": "⚠️GitHub Copilot Chat Visual Studio Code", - "teamsagent.walkthrough.copilotChat.description": "GitHub Copilot Chat uzantısıyla Visual Studio Code, kod oluşturmak, kod anlamanızı artırmak ve hatta düzenleyicinizi yapılandırmak için yapay zeka destekli sohbet görüşmeleriniz olabilir.\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.copilotChat.title": "⚠️GitHub Copilot sohbeti Visual Studio Code", + "teamsagent.walkthrough.copilotChat.description": "GitHub Copilot sohbet uzantısıyla Visual Studio Code, kod oluşturmak, kod anlamanızı artırmak ve hatta düzenleyicinizi yapılandırmak için yapay zeka destekli sohbet görüşmeleriniz olabilir.\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.install.title": "⚠️Microsoft 365 Aracı Araç Seti için GitHub Copilot uzantısını yükleyin", "teamsagent.walkthrough.install.description": "[Microsoft 365 Aracı Araç Seti için GitHub Copilot uzantısı](https://aka.ms/install-m365agents) (@m365agents), uygulama geliştirmeyi basitleştirir ve Microsoft 365 Copilot'ı sohbet özellikleriyle özelleştirme olanağı sunar.\n[Microsoft 365 Aracı Araç Seti için GitHub Copilot uzantısını yükleyin](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.installConfirm.title": "⚠️@m365agents uygulamasının yüklemesini onaylayın", @@ -549,7 +549,7 @@ "teamsagent.walkthrough.use.title": "@m365agents uygulamasını kullanmaya başlayın", "teamsagent.walkthrough.use.title.preview": "@m365agents uygulamasını kullanmaya başlayın (önizleme)", "teamsagent.walkthrough.use.description": "Uygulama oluşturmak veya Microsoft 365 Copilot'ı özelleştirmek ve genişletmek istiyorsanız Microsoft 365 Aracı Araç Seti (@m365agents) için GitHub Copilot uzantısı ile sohbet edin.", - "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilot Chat uzantısı zaten yüklü.", + "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "GitHub Copilot Sohbet uzantısı zaten yüklü.", "teamstoolkit.officeAddIn.terminal.installDependency": "Bağımlılık yükleniyor...", "teamstoolkit.officeAddIn.terminal.validateManifest": "Bildirim doğrulanıyor...", "teamstoolkit.officeAddIn.terminal.stopDebugging": "Hata ayıklama durduruluyor...", @@ -611,32 +611,24 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "Bildirim aracınızı geliştirin", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "Özellik ekleyerek bildirim aracısının kullanıcı deneyimini geliştirin.\n\nBildirimdeki özellikler öğesi, kullanıcılarınız için çeşitli özelliklerin kilidini oluşturur.", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "Akıllı Uygulamalara İki Yol", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Microsoft 365 ile akıllı uygulamalarınızı iki şekilde oluşturun:\n🎯 Microsoft Copilot'ı bir eklenti ile genişletin Veya\n✨ Microsoft Teams SDK ve Azure hizmetlerini kullanarak Teams'de kendi Copilot'ınızı oluşturun", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "Akıllı uygulamalarınızı iki Microsoft 365 şekilde oluşturun:\n🎯 Eklenti Microsoft Copilot genişlet veya\n✨ Teams AI Teams'de Copilot Azure hizmetlerini kullanarak kendi uygulamanızı oluşturun", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "API Eklentisi", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "Copilot'un becerilerini geliştirmek ve günlük görevlerde ve iş akışlarda kullanıcı üretkenliğini artırmak için uygulamanızı bir eklentiye dönüştürebilirsiniz. [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22WalkThrough%22%5D) öğesini keşfedin", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "Eklenti Oluştur", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "Aşağıdaki yöntemlerden herhangi birini kullanarak Eklentiler ve Graph bağlayıcıları ile Copilot'u genişletin, zenginleştirin ve özelleştirin\n[OpenAPI Description Document](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22project-type%22%3A%20%%22%22copilot-agent-type%22%2C%20%22capabilities%22%3A%20%22api-plugin%22%7B%5D)\n[Teams Message Extension](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22search-app%22%2C%20%22project-type%22%3A%20%22me-type%22%2C%20%22me mimarisi%22%3A%20%22bot-plugin%22%7D%5D)\n[Graph Connector](command:fx-extension.openSamples?%5B%22WalkThrough%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "Özel Altyapı Aracısı", - "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Teams'de akıllı, doğal dil odaklı deneyimlerinizi oluşturun ve işbirliği için geniş kullanıcı tabanından yararlanın. \nMicrosoft 365 Aracı Araç Seti, Azure OpenAI ve Microsoft Teams SDK ile tümleşerek copilot geliştirmeyi kolaylaştırır ve Teams tabanlı benzersiz özellikler sunar. \n[Microsoft Teams SDK](https://aka.ms/teams-ai-library-v2) ve [Azure OpenAI Hizmeti](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) hakkında bilgi edinin", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "Teams'de akıllı, doğal dil odaklı deneyimlerinizi oluşturun ve işbirliği için geniş kullanıcı tabanından yararlanın. \nMicrosoft 365 Aracı Araç Seti, copilot geliştirmeyi kolaylaştırmak ve benzersiz Teams tabanlı özellikler sunmak için Azure OpenAI ve Teams Yapay Zeka Kitaplığı ile tümleştirilmiştir. \n[Teams AI Kitaplığı](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview) ve [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) hakkında daha fazla bilgi edinin", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "Derleme Özel Altyapı Aracısı", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "Belirli soruları yanıtlamak için ortak görevler veya akıllı bir sohbet botu için bir yapay zeka aracısı botu oluşturun\n[Build a Basic AI Chatbot](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-basic%22%2C%20%22project-type%22%3A%22capabilities%22%0 22custom-copilot-type%22capabilities%22%1 7D%22capabilities%22%2 D)\n[Build an AI Agent](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22capabilities%22%5 2C%22capabilities%22%6 7B%22capabilities%22%3A%22capabilities%22%9 22custom-copilot-agent%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[Build a Bot to Chat with Your Data](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-rag%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "Kaynaklar", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "Akıllı uygulamalar oluşturmak ve geliştirme projelerinizi geliştiren bu kaynakları keşfedin\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [Alma Genişletilmiş Oluşturma (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "Bu hesapta oturum Microsoft 365 gerekir.", - "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 Aracı Araç Seti, kimlik doğrulama akışını desteklemek için eklenen eylemle proje yapılandırma (m365agents.yaml ve m365agents.local.yaml) dosyalarınızı başarıyla güncelleştirdi. Uzaktan sağlama işlemine devam edebilirsiniz.", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "createPluginWithManifest komutunda geçersiz parametre. Kullanım: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string). LAST_COMMAND için geçerli değerler: createPluginWithManifest, createDeclarativeCopilotWithManifest.", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "createDeclarativeAgentWithApiSpec komutunda geçersiz parametre. Kullanım: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: string).", + "teamstoolkit.error.KiotaNotInstalled": "Bu özelliği kullanmak için microsoft kiota uzantısını en düşük sürüme %s gerekir.", + "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 Aracı Araç Seti, kimlik doğrulama akışını desteklemek için eklenen eylemle proje yapılandırma (teamsapp.yaml ve teamsapp.local.yaml) dosyalarınızı başarıyla güncelleştirdi. Uzaktan sağlama işlemine devam edebilirsiniz.", "teamstoolkit.handeler.addAuthConfig.notification.provision": "Sağlama", - "teamstoolkit.mcpUtils.setupMcpServer.message": "M365 Aracı Araç Seti MCP sunucusu yapılandırılsın mı? (Bu, çalışma alanınızda %s dosyasını oluşturacak veya güncelleştirecektir)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "Onayla", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "Atla", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "M365 Aracı Araç Seti MCP sunucusu başarıyla yapılandırıldı!", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "M365 Aracı Araç Seti MCP sunucusu yapılandırılamıyor. Hata: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "MCP ile sarılmış bildirimsel aracı projesi başarıyla oluşturuldu. Artık CodeLens düğmesindeki “Başlat” seçeneğinden MCP sunucusunu başlatabilir veya .vscode/mcp.json dosyasında MCP sunucunuzu özelleştirebilirsiniz.\nMCP sunucusundan araçları almak için CodeLens veya Komut Paletinden “ATK: MCP ile Eylemi Güncelle” seçeneğine tıklayın.", - "teamstoolkit.commands.updateActionWithMCP.title": "MCP'den eylem getirme", - "teamstoolkit.MCP.FileNotFound": ".vscode/mcp.json içinde MCP yapılandırma dosyası bulunamadı. MCP sunucusunu kurduğunuzdan emin olun.", - "teamstoolkit.MCP.ContentInvalid": "MCP yapılandırma dosyasının içeriği geçersiz. .vscode/mcp.json içindeki içeriğin doğru olduğundan emin olun.", - "teamstoolkit.MCP.ServerNotFound": "MCP dosyasında MCP sunucusu bulunamadı.", - "teamstoolkit.MCP.NameOrServerUrlMissing": "MCP adı veya sunucu URL'si eksik.", - "teamstoolkit.MCP.LocalMcpCommandMissing": "Yerel MCP komutu eksik.", - "teamstoolkit.MCP.ToolsNotFound": "MCP sunucusu için hiçbir araç bulunamadı. Lütfen önce sunucuyu çalıştırın.", - "teamstoolkit.MCP.SelectServerFailed": "MCP sunucusu seçilemedi." + "teamstoolkit.config.enableKiota": "OpenAPI belirtimi ve eklenti bildirimi oluşturmak için Kiota uzantısını kullanmak istiyor musunuz? Bu ayarı ayarlar sayfasından da güncelleyebilirsiniz.", + "teamstoolkit.config.enableKiota.yes": "Evet", + "teamstoolkit.config.enableKiota.no": "Hayır" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.zh-Hans.json b/packages/vscode-extension/package.nls.zh-Hans.json index 17c95b5526f..868590d79cb 100644 --- a/packages/vscode-extension/package.nls.zh-Hans.json +++ b/packages/vscode-extension/package.nls.zh-Hans.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: 正在登录...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: 正在切换...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "沙盒团队已启用", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "可改为在 Teams 中创建沙盒进行本地测试。", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "可创建用于本地测试的沙盒团队。", "teamstoolkit.accountTree.sandboxedTeamDisabled": "沙盒团队已禁用", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "Microsoft 365 帐户管理员尚未启用沙盒团队。", - "teamstoolkit.accountTree.suggestSandboxedTeam": "已在 Microsoft 365 帐户中禁用[自定义应用上传](https://learn.microsoft.com/zh-cn/microsoftteams/platform/concepts/deploy-and-publish/apps-upload)。可在 Teams 中创建一个沙盒,并设置一个用于开发和测试的频道。", - "teamstoolkit.accountTree.sandboxedTeam.button": "在 Teams (Edge)中的沙盒中进行调试", + "teamstoolkit.accountTree.suggestSandboxedTeam": "[自定义应用上传](https://learn.microsoft.com/zh-cn/microsoftteams/platform/concepts/deploy-and-publish/apps-upload)已在 Microsoft 365 帐户中禁用。但是,可创建用于本地测试的沙盒团队。", + "teamstoolkit.accountTree.sandboxedTeam.button": "在 Teams 沙盒 (Edge) 中调试", "teamstoolkit.appStudioLogin.createM365TestingTenant": "创建Microsoft 365开发人员沙盒", "teamstoolkit.appStudioLogin.loginCancel": "登录已取消。Microsoft 365 代理工具包需要具有自定义应用上传权限的 Microsoft 365 帐户。如果你是 Visual Studio 订阅者,请通过 Microsoft 365 开发人员计划(https://developer.microsoft.com/en-us/microsoft-365/dev-program)创建开发人员沙盒。", "teamstoolkit.appStudioLogin.message": "Microsoft 365 代理工具包需要具有自定义应用上传权限的 Microsoft 365 帐户。如果你是 Visual Studio 订阅者,请通过 Microsoft 365 开发人员计划创建开发人员沙盒。", - "teamstoolkit.azureLogin.failToFindSubscription": "未找到订阅。请切换到关联了订阅的租户。", + "teamstoolkit.azureLogin.failToFindSubscription": "找不到订阅。", "teamstoolkit.azureLogin.message": "Microsoft 365 代理工具包将使用 Microsoft 身份验证登录 Azure 帐户和订阅,以便为项目部署 Azure 资源。在你确认之前,不会向你收费。", "teamstoolkit.azureLogin.subscription": "订阅", "teamstoolkit.azureLogin.selectSubscription": "选择当前租户 ID 的订阅", @@ -160,8 +160,8 @@ "teamstoolkit.commandsTreeViewProvider.previewAdaptiveCard": "预览和调试自适应卡片", "teamstoolkit.commandsTreeViewProvider.previewDescription": "调试和预览应用", "teamstoolkit.commandsTreeViewProvider.previewTitle": "预览应用(F5)", - "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle": "从 GitHub Copilot 获取帮助", - "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle.preview": "从 GitHub Copilot (预览)获取帮助", + "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle": "从GitHub Copilot获取帮助", + "teamstoolkit.commandsTreeViewProvider.getCopilotHelpTitle.preview": "从 GitHub Copilot (预览版)获取帮助", "teamstoolkit.commandsTreeViewProvider.getCopilotHelpDescription": "与 GitHub Copilot 聊天,以了解可以使用你的应用或智能 Microsoft 365 Copilot 副驾驶® 智能体执行的操作。", "teamstoolkit.commandsTreeViewProvider.provision.blockTooltip": "无法在预配期间运行命令。预配完成后重试。", "teamstoolkit.commandsTreeViewProvider.provision.running": "正在预配...", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "在发布应用之前,建议验证所有集成测试用例。", "teamstoolkit.commandsTreeViewProvider.publishTitle": "发布到组织", "teamstoolkit.commandsTreeViewProvider.shareTitle": "共享", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "更改智能体的共享范围。", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "在 m365agents.yml 文件中运行“共享”生命周期阶段。", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "入门", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "报告任何问题,并告诉我们你的反馈", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "在 GitHub 上报告问题", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "管理 Microsoft 365 应用(使用 Microsoft Entra 应用)协作者", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "添加操作", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "在声明性代理中添加操作", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "将应用扩展到声明性代理", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "将加载项项目扩展到声明性代理", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "扩展到声明性代理", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "将加载项项目扩展到声明性代理操作", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "重新生成操作", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "在声明性代理中重新生成操作", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "正在添加操作...", @@ -215,8 +215,8 @@ "teamstoolkit.commandsTreeViewProvider.validateManifestDescription": "验证 Office 外接程序项目的清单文件", "teamstoolkit.commandsTreeViewProvider.scriptLabTitle": "Script Lab", "teamstoolkit.commandsTreeViewProvider.scriptLabDescription": "打开Script Lab简介页", - "teamstoolkit.commandsTreeViewProvider.promptLibraryTitle": "查看 GitHub Copilot 的提示", - "teamstoolkit.commandsTreeViewProvider.promptLibraryDescription": "打开 Office 提示库以获取 GitHub Copilot", + "teamstoolkit.commandsTreeViewProvider.promptLibraryTitle": "查看GitHub Copilot的提示", + "teamstoolkit.commandsTreeViewProvider.promptLibraryDescription": "打开 Office 提示库以获取GitHub Copilot", "teamstoolkit.commandsTreeViewProvider.officeAddIn.officePartnerCenterTitle": "打开合作伙伴中心", "teamstoolkit.commandsTreeViewProvider.officeAddIn.officePartnerCenterDescription": "打开合作伙伴中心", "teamstoolkit.commandsTreeViewProvider.officeAddIn.getStartedTitle": "开始使用", @@ -323,9 +323,9 @@ "teamstoolkit.handlers.askInstallTeamsAgent.confirmInstall": "确认安装", "teamstoolkit.handlers.installCopilotAndAgent.output": "要在开发应用或自定义智能 Microsoft 365 Copilot 副驾驶® 时使用适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展,请从 \"%s\" 安装 GitHub Copilot,并从 \"%s\" 安装适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展。", "teamstoolkit.handlers.installAgent.output": "要在开发应用或自定义智能 Microsoft 365 Copilot 副驾驶® 时使用适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展,请从 \"%s\" 安装适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展。", - "teamstoolkit.handlers.installCopilotError": "无法安装 GitHub Copilot 对话助手。请按照 %s 进行安装,然后重试。", - "teamstoolkit.handlers.chatTeamsAgentError": "无法自动将焦点放在 GitHub Copilot 对话助手上。打开 GitHub Copilot 对话助手并以 \"%s\" 开头", - "teamstoolkit.handlers.verifyCopilotExtensionError": "无法验证 GitHub Copilot 对话助手。按照 %s 手动安装它,然后重试。", + "teamstoolkit.handlers.installCopilotError": "无法安装GitHub Copilot聊天。请按照 %s 进行安装,然后重试。", + "teamstoolkit.handlers.chatTeamsAgentError": "无法自动将焦点GitHub Copilot聊天。打开GitHub Copilot聊天并以 \"%s\" 开头", + "teamstoolkit.handlers.verifyCopilotExtensionError": "无法验证GitHub Copilot聊天。按照 %s 手动安装它,然后重试。", "teamstoolkit.handlers.teamsAgentTroubleshoot.noActiveEditor": "找不到活动编辑器。", "teamstoolkit.localDebug.npmInstallFailedHintMessage": "未成功完成任务 '%s'。有关详细的错误信息,检查 '%s'终端窗口并报告问题,请单击“报告问题”按钮。", "teamstoolkit.localDebug.openSettings": "打开设置", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "取消", "teamstoolkit.localDebug.launchTeamsWebClientError": "无法启动 Teams Web 客户端。", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "启动 Teams Web 客户端的任务已停止,退出代码为“%s”。", - "teamstoolkit.localDebug.useTestTool": "或者,可使用 %s 继续操作。", + "teamstoolkit.localDebug.useTestTool": "或者,你可以通过选择 %s 选项跳过此步骤。", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "无法启动 Teams 桌面客户端。", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "启动 Teams 桌面客户端的任务已停止,退出代码为“%s”。", "teamstoolkit.localDebug.startDeletingAadProcess": "开始删除Microsoft Entra应用程序进程。", @@ -507,6 +507,10 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "列出可对 Teams 进行更改并 Microsoft Entra 应用注册的所有所有者", "teamstoolkit.manageCollaborator.command": "管理谁可以对你的应用进行更改", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[升级项目](command:fx-extension.checkProjectUpgrade?%5B%22SideBar%22%5D)\n升级 Microsoft 365 代理工具包项目以与最新版本保持兼容。备份目录将与升级摘要一起创建。[更多信息](command:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\n如果不想立即升级,请继续使用 Microsoft 365 代理工具包版本 4.x.x。", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "欢迎使用 Microsoft 365 代理工具包!\n引导式教程入门\n[生成声明式代理](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 或使用应用模板或示例直接进入应用开发\n[创建新代理/应用](command:fx-extension.create?%5B%22SideBar%22%5D)\n[查看示例](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n使用 GitHub Copilot 轻松创建新应用。\n[使用 GitHub Copilot 创建应用](command:fx-extension.invokeChat?%5B%22SideBar%22%5D)\n请访问我们的文档以生成适用于 [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D)的应用,或扩展 [智能 Microsoft 365 Copilot 副驾驶®](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)。", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "欢迎使用 Microsoft 365 代理工具包!\n引导式教程入门\n[生成声明式代理](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 或使用应用模板或示例直接进入应用开发\n[创建新代理/应用](command:fx-extension.create?%5B%22SideBar%22%5D)\n[查看示例](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n使用 GitHub Copilot 轻松创建新应用。\n[使用 GitHub Copilot 创建应用(预览版)](command:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\n请访问我们的文档以生成适用于 [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D)的应用,或扩展 [智能 Microsoft 365 Copilot 副驾驶®](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)。", + "teamstoolkit.walkthroughs.description": "使用 Microsoft 365 代理工具包为 Microsoft Teams 生成自定义通知机器人。", + "teamstoolkit.walkthroughs.withChat.description": "使用 Microsoft 365 代理工具包为 Microsoft Teams 生成自定义通知机器人。", "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "欢迎使用 Microsoft 365 智能体工具包!\n引导式教程入门\n[生成声明式智能体](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 或使用应用模板或示例直接进入应用开发\n[创建新智能体/应用](command:fx-extension.create?%5B%22SideBar%22%5D)\n[查看示例](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n请访问我们的文档以生成适用于 [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D)的应用,或扩展[智能 Microsoft 365 Copilot 副驾驶®](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)。", "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "欢迎使用 Microsoft 365 智能体工具包!\n引导式教程入门\n[生成声明式智能体](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 或使用应用模板或示例直接进入应用开发\n[创建新智能体/应用](command:fx-extension.create?%5B%22SideBar%22%5D)\n[查看示例](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n请访问我们的文档以生成适用于 [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D)的应用,或扩展[智能 Microsoft 365 Copilot 副驾驶®](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)。", "teamstoolkit.walkthroughs.description": "使用 Microsoft 365 智能体工具包为 Microsoft Teams 构建自定义通知机器人。", @@ -527,29 +531,29 @@ "teamstoolkit.walkthroughs.steps.teamsToolkitResources.title": "资源", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.description": "在模拟 Microsoft 365 智能体操场环境中运行和调试应用。\n[在 Microsoft 365 智能体操场中调试](command:fx-extension.localdebug)\n提示: 使用活动栏上的[运行和调试](command:workbench.view.debug)面板在 Teams 中进行调试。", "teamstoolkit.walkthroughs.steps.teamsToolkitPreview.title": "在 Microsoft 365 智能体操场调试", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "与 GitHub Copilot 聊天", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.title": "与 GitHub Copilot (预览)聊天", - "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "需要更多帮助? [与 GitHub Copilot 聊天](command:fx-extension.invokeChat?%5B%22WalkThrough%22%5D),以探索应用或智能 Microsoft 365 Copilot 副驾驶® 智能体开发。", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.title": "与GitHub Copilot聊天", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.title": "与 GitHub Copilot (预览版)聊天", + "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.description": "需要更多帮助?[与 GitHub Copilot 聊天](command:fx-extension.invokeChat?%5B%22WalkThrough%22%5D),以探索应用或智能 Microsoft 365 Copilot 副驾驶® 智能体开发。", "teamstoolkit.walkthroughs.steps.helpwithGitHubCopilot.preview.description": "需要更多帮助?[与 GitHub Copilot 聊天](command:fx-extension.invokeChatWithPreviewTag?%5B%22WalkThrough%22%5D),以探索应用或智能 Microsoft 365 Copilot 副驾驶® 智能体开发。", "teamstoolkit.walkthroughs.title": "生成通知机器人", - "teamsagent.walkthrough.title": "开始使用适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展", - "teamsagent.walkthrough.description": "完成设置适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展的必需步骤(通过 ⚠️)。", + "teamsagent.walkthrough.title": "开始使用适用于 Microsoft 365 代理工具包的 GitHub Copilot 扩展", + "teamsagent.walkthrough.description": "完成设置适用于 Microsoft 365 代理工具包的 GitHub Copilot 扩展的必需步骤(通过 ⚠️)。", "teamsagent.walkthrough.introduction.title": "简介", "teamsagent.walkthrough.introduction.description": "适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展(@m365agents)可简化应用开发,并通过聊天功能支持自定义智能 Microsoft 365 Copilot 副驾驶®。详细了解[适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展](https://aka.ms/install-m365agents)。", - "teamsagent.walkthrough.copilotPlan.title": "获取对 GitHub Copilot 的访问权限", + "teamsagent.walkthrough.copilotPlan.title": "获取对GitHub Copilot的访问权限", "teamsagent.walkthrough.copilotPlan.description": "**GitHub Copilot免费**默认对单个 GitHub 客户可用,对选择功能的访问权限有限。你还可以通过其他组织或企业计划使用 Copilot。详细了解 [GitHub Copilot plans](https://aka.ms/teams-agent-github-copilot-plan) 和 [GitHub Copilot free plan](https://aka.ms/teams-agent-github-copilot-free).", - "teamsagent.walkthrough.copilotChat.title": "⚠️安装适用于 Visual Studio Code 的 GitHub Copilot 对话助手", - "teamsagent.walkthrough.copilotChat.description": "借助 Visual Studio Code 中的 GitHub Copilot 对话助手扩展,你可以让 AI 支持的聊天对话生成代码、提高代码理解度,甚至配置编辑器。\n[安装 GitHub Copilot 对话助手](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.copilotChat.title": "⚠️安装GitHub Copilot聊天Visual Studio Code", + "teamsagent.walkthrough.copilotChat.description": "借Visual Studio Code中GitHub Copilot聊天扩展,你可以让 AI 支持的聊天对话生成代码、提高代码理解度,甚至配置编辑器。\n[Install GitHub Copilot Chat](command:fx-extension.installCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.install.title": "⚠️安装适用于 Microsoft 365 代理工具包的 GitHub Copilot 扩展", "teamsagent.walkthrough.install.description": "[适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展](https://aka.ms/install-m365agents) (@m365agents)可简化 Teams 应用开发,并通过聊天功能支持自定义智能 Microsoft 365 Copilot 副驾驶®。\n[安装适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展](command:fx-extension.openInstallTeamsAgent?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.installConfirm.title": "⚠️确认安装 @m365agents", "teamsagent.walkthrough.installConfirm.description": "请在安装[适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展](https://aka.ms/install-m365agents)后将安装标记为已完成。\n[将安装标记为已完成](command:fx-extension.markInstallTeamsAgentDone)", - "teamsagent.walkthrough.setup.title": "⚠️在 Visual Studio Code 中设置 GitHub Copilot", - "teamsagent.walkthrough.setup.description": "登录到 GitHub 帐户并开始使用。详细了解如何[设置 GitHub Copilot](https://aka.ms/teams-agent-github-copilot-setup)。\n[打开 GitHub Copilot 对话助手](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", + "teamsagent.walkthrough.setup.title": "⚠️在Visual Studio Code中设置GitHub Copilot", + "teamsagent.walkthrough.setup.description": "登录到 GitHub 帐户并开始使用。详细了解如何 [set up GitHub Copilot](https://aka.ms/teams-agent-github-copilot-setup).\n[Open GitHub Copilot Chat](command:fx-extension.openGitHubCopilotChat?%5B%22TeamsAgentWalkthrough%22%5D)", "teamsagent.walkthrough.use.title": "开始使用 @m365agents", "teamsagent.walkthrough.use.title.preview": "开始使用 @m365agents (预览版)", "teamsagent.walkthrough.use.description": "与适用于 Microsoft 365 智能体工具包的 GitHub Copilot 扩展(@m365agents)聊天,以生成应用,或自定义和扩展智能 Microsoft 365 Copilot 副驾驶®。", - "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "已安装 GitHub Copilot 对话助手扩展。", + "teamstoolkit.handlers.installCopilotChatExtensionAlreadyInstalled": "已安装GitHub Copilot聊天扩展。", "teamstoolkit.officeAddIn.terminal.installDependency": "正在安装依赖项...", "teamstoolkit.officeAddIn.terminal.validateManifest": "正在验证清单...", "teamstoolkit.officeAddIn.terminal.stopDebugging": "正在停止调试...", @@ -611,32 +615,24 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "改进声明性代理", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "通过添加功能来改进声明性代理的用户体验。\n\n清单中的 capabilities 元素可为用户解锁各种功能。", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "智能应用的两个路径", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "通过两种方式使用 Microsoft 365 构建智能应用:\n🎯 使用插件扩展 Microsoft Copilot,或\n✨ 使用 Microsoft Teams SDK 和 Azure 服务在 Teams 中构建你自己的 Copilot", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "通过以下两种方式使用Microsoft 365生成智能应用:\n🎯 使用插件扩展Microsoft Copilot,或者\n✨ 使用 Teams AI 库和 Azure 服务生成自己的Teams 中的 Copilot", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "API 插件", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "将应用转换为插件,以提高 Copilot 的技能,并提高用户在日常任务和工作流中的生产力。浏览 [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22WalkThrough%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "生成插件", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "通过以下任意方式使用插件和 Graph 连接器展开、扩充和自定义 Copilot\n[OpenAPI Description Document](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22p类型%22%3A%20%22copilot-agent-type%22%2C%20%22capabilities%22%3A(0 22api-plugin(1 7D(2 D)\n[Teams Message Extension](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough(5 2C(6 7B%22capabilities%22%3A(9 22search-app%22%2C%20%22 3A%22%3A 类型%20%22me 类型%22%2C%20%22me 体系结构%22%3A%20%22bot-plugin%22%7D%5D)\n[Graph Connector](command:fx-extension.openSamples?%5B%22WalkThrough%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "自定义引擎代理", - "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "在 Teams 中构建智能的自然语言驱动体验,利用其庞大的用户群进行协作。\nMicrosoft 365 智能体工具包与 Azure OpenAI 和 Microsoft Teams SDK 集成,可简化 copilot 开发并提供基于 Teams 的独特功能。\n浏览 [Microsoft Teams SDK](https://aka.ms/teams-ai-library-v2) 和 [Azure OpenAI 服务](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/overview)", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "在 Teams 中构建智能的自然语言驱动体验,利用其庞大的用户群进行协作。\nMicrosoft 365 代理工具包与 Azure OpenAI 和 Teams AI 库集成,以简化 copilot 开发并提供基于 Teams 的独特功能。\n浏览 [Teams AI 库](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview)和 [Azure OpenAI 服务](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "生成自定义引擎代理", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "为常见任务或智能聊天机器人构建 AI 智能体机器人以回答特定问题\n[Build a Basic AI Chatbot](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-co 3A%22%3A%22%2C%20%22project-type%22capabilities%22%0 22 自定义-copilot 类型%22capabilities%22%1 7D%22capabilities%22%2 D)\n[Build an AI Agent](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22capabilities%22%5 2C%22capabilities%22%6 7B%22capabilities%22%3A%22capabilities%22%9 22custom-co%22%2C%20%22 项目类型%22%3A%20%22 自定义-copilot 类型%22%7D%5D) 的 2C 代理\n[Build a Bot to Chat with Your Data](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-rag%22%2C%20%22 项目类型%22%3A%20%22 自定义-copilot 类型%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "资源", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "浏览这些资源以生成智能应用并增强你的开发项目\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [Retrieval Augmented Generation (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "你需要登录Microsoft 365帐户。", - "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 智能体工具包已成功更新项目配置(m365agents.yaml 和 m365agents.local.yaml)文件,并添加了支持身份验证流的操作。可以继续进行远程预配。", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "createPluginWithManifest 命令中的参数无效。用法:createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string)。LAST_COMMAND 的有效值:createPluginWithManifest、createDeclarativeCopilotWithManifest。", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "createDeclarativeAgentWithApiSpec 命令中的参数无效。用法: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: string)。", + "teamstoolkit.error.KiotaNotInstalled": "需要安装Microsoft最低版本为 %s 的 Kiota 扩展才能使用此功能。", + "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 代理工具包已成功更新项目配置(teamsapp.yaml 和 teamsapp.local.yaml)文件,并添加了支持身份验证流的操作。可以继续进行远程预配。", "teamstoolkit.handeler.addAuthConfig.notification.provision": "预配", - "teamstoolkit.mcpUtils.setupMcpServer.message": "是否配置 M365 智能体工具包 MCP 服务器?(这将在你的工作区中创建或更新 %s)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "确认", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "跳过", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "M365 智能体工具包 MCP 服务器配置成功!", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "无法否配置 M365 智能体工具包 MCP 服务器。错误: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "已成功创建封装了 MCP 的声明式智能体项目。现在可通过 CodeLens 上的“启动”按钮启动 MCP 服务器,或在 .vscode/mcp.json 文件中自定义 MCP 服务器。\n要从 MCP 服务器提取工具,请在 CodeLens 或命令面板中单击“ATK: 使用 MCP 更新操作”。", - "teamstoolkit.commands.updateActionWithMCP.title": "从 MCP 提取操作", - "teamstoolkit.MCP.FileNotFound": "在 .vscode/mcp.json 中未找到 MCP 配置文件。请确保已设置 MCP 服务器。", - "teamstoolkit.MCP.ContentInvalid": "MCP 配置文件内容无效。请确保 .vscode/mcp.json 中的内容正确。", - "teamstoolkit.MCP.ServerNotFound": "在 MCP 文件中未找到 MCP 服务器。", - "teamstoolkit.MCP.NameOrServerUrlMissing": "缺少 MCP 名称或服务器 URL。", - "teamstoolkit.MCP.LocalMcpCommandMissing": "缺少本地 MCP 命令。", - "teamstoolkit.MCP.ToolsNotFound": "未找到 MCP 服务器的工具。请先运行服务器。", - "teamstoolkit.MCP.SelectServerFailed": "未能选择 MCP 服务器。" + "teamstoolkit.config.enableKiota": "是否要使用 Kiota 扩展来生成 OpenAPI 规范和插件清单?还可以从设置页更新此设置。", + "teamstoolkit.config.enableKiota.yes": "是", + "teamstoolkit.config.enableKiota.no": "否" } \ No newline at end of file diff --git a/packages/vscode-extension/package.nls.zh-Hant.json b/packages/vscode-extension/package.nls.zh-Hant.json index 87ad09d25bf..e73e07b8a2b 100644 --- a/packages/vscode-extension/package.nls.zh-Hant.json +++ b/packages/vscode-extension/package.nls.zh-Hant.json @@ -22,15 +22,15 @@ "teamstoolkit.accountTree.signingInM365": "Microsoft 365: 正在登入...", "teamstoolkit.accountTree.switchingM365": "Microsoft 365: 切換中...", "teamstoolkit.accountTree.sandboxedTeamEnabled": "沙箱化小組已啟用", - "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "您可以改為在 Teams 中建立沙箱以進行本機測試。", + "teamstoolkit.accountTree.sandboxedTeamEnabled.tooltip": "您可以建立沙箱化小組以進行本機測試。", "teamstoolkit.accountTree.sandboxedTeamDisabled": "沙箱化小組已停用", "teamstoolkit.accountTree.sandboxedTeamDisabled.tooltip": "Microsoft 365 帳戶系統管理員尚未啟用沙箱化小組。", - "teamstoolkit.accountTree.suggestSandboxedTeam": "[自訂應用程式上傳](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) 已在您的 Microsoft 365 帳戶中停用。您可以在 Teams 中建立具有開發與測試通道的沙箱。", - "teamstoolkit.accountTree.sandboxedTeam.button": "在 Teams 中的沙箱中進行偵錯 (Edge)", + "teamstoolkit.accountTree.suggestSandboxedTeam": "[自訂應用程式上傳](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/apps-upload) 已在您的 Microsoft 365 帳戶中停用。但您可以建立沙箱化小組以進行本機測試。", + "teamstoolkit.accountTree.sandboxedTeam.button": "在 Teams 沙箱中偵錯 (Edge)", "teamstoolkit.appStudioLogin.createM365TestingTenant": "建立Microsoft 365開發人員沙盒", "teamstoolkit.appStudioLogin.loginCancel": "登入已取消。Microsoft 365 Agents 工具組需要具有自訂應用程式上傳權限的 Microsoft 365 帳戶。如果您是 Visual Studio 訂閱者,請使用 Microsoft 365 開發人員計畫 (https://developer.microsoft.com/en-us/microsoft-365/dev-program) 來建立開發人員沙箱。", "teamstoolkit.appStudioLogin.message": "Microsoft 365 Agents 工具組需要具有自訂應用程式上傳權限的 Microsoft 365 帳戶。如果您是 Visual Studio 訂閱者,請利用 Microsoft 365 開發人員計畫來建立開發人員沙箱。", - "teamstoolkit.azureLogin.failToFindSubscription": "找不到任何訂用帳戶。切換到具有連結訂用帳戶的租用戶。", + "teamstoolkit.azureLogin.failToFindSubscription": "找不到訂用帳戶。", "teamstoolkit.azureLogin.message": "Microsoft 365 Agents 工具組將使用 Microsoft 驗證來登入 Azure 帳戶和訂用帳戶,以為您的專案部署 Azure 資源。在您確認之前,系統不會向您收費。", "teamstoolkit.azureLogin.subscription": "訂閱", "teamstoolkit.azureLogin.selectSubscription": "選取目前租用戶標識碼的訂閱", @@ -174,7 +174,7 @@ "teamstoolkit.commandsTreeViewProvider.publishInDevPortalDescription": "在發佈您的應用程式之前,建議您驗證所有整合測試案例。", "teamstoolkit.commandsTreeViewProvider.publishTitle": "發佈至組織", "teamstoolkit.commandsTreeViewProvider.shareTitle": "分享", - "teamstoolkit.commandsTreeViewProvider.shareDescription": "變更代理程式的共用範圍。", + "teamstoolkit.commandsTreeViewProvider.shareDescription": "在 m365agents.yml 檔案中執行 [共用] 生命週期階段。", "teamstoolkit.commandsTreeViewProvider.getStartedTitle": "開始使用", "teamstoolkit.commandsTreeViewProvider.reportIssuesDescription": "回報任何問題,並讓我們知道您的意見反應", "teamstoolkit.commandsTreeViewProvider.reportIssuesTitle": "回報 GitHub 的問題", @@ -190,10 +190,10 @@ "teamstoolkit.commandsTreeViewProvider.manageCollaboratorDescription": "管理 Microsoft 365 應用程式 (具有 Microsoft Entra 應用程式) 共同作業者者", "teamstoolkit.commandsTreeViewProvider.addPluginTitle": "新增動作", "teamstoolkit.commandsTreeViewProvider.addPluginDescription": "在宣告式代理程式中新增動作", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "將應用程式延伸至宣告式代理程式", - "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "將增益集專案延伸至宣告式代理程式", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "延伸至宣告式代理程式", - "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "將增益集專案延伸至宣告式代理程式動作", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDA": "Extend the App to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOSExtendToDADescription": "Extend the add-in project to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.title": "Extend to Declarative Agent", + "teamstoolkit.commandsTreeViewProvider.metaOS.convert.description": "Extend the add-in project to Declarative Agent action", "teamstoolkit.commandsTreeViewProvider.regenerateActionTitle": "重新產生動作", "teamstoolkit.commandsTreeViewProvider.regenerateActionDescription": "在宣告式代理程式中重新產生動作", "teamstoolkit.commandsTreeViewProvider.addPlugin.running": "新增動作...", @@ -371,7 +371,7 @@ "teamstoolkit.localDebug.output.tunnel.devTunnelLimitExceeded.cancel": "取消", "teamstoolkit.localDebug.launchTeamsWebClientError": "無法啟動 Teams Web 用戶端。", "teamstoolkit.localDebug.launchTeamsWebClientStoppedError": "啟動 Teams Web 用戶端的工作已停止,結束代碼 '%s'。", - "teamstoolkit.localDebug.useTestTool": "或者,您可以使用 %s 以繼續。", + "teamstoolkit.localDebug.useTestTool": "或者,您可以選擇 %s 選項來略過此步驟。", "teamstoolkit.localDebug.launchTeamsDesktopClientError": "無法啟動 Teams 桌面用戶端。", "teamstoolkit.localDebug.launchTeamsDesktopClientStoppedError": "啟動 Teams 桌面用戶端的工作已停止,結束代碼 '%s'。", "teamstoolkit.localDebug.startDeletingAadProcess": "開始刪除 Microsoft Entra 應用程式進程。", @@ -507,8 +507,8 @@ "teamstoolkit.manageCollaborator.listCollaborator.description": "列出可以變更您 Teams 和 Microsoft Entra 應用程式註冊的所有擁有者", "teamstoolkit.manageCollaborator.command": "管理可以對您的應用程式進行變更的人員", "teamstoolkit.viewsWelcome.teamsfx-project-and-check-upgradeV3.content": "[升級專案](command:fx-extension.checkProjectUpgrade?%5B%22SideBar%22%5D)\n升級您的 Microsoft 365 Agents 工具組專案,以與最新版本保持相容。備份目錄會隨著升級摘要建立。[詳細資訊](command:fx-extension.openDocument?%5B%22SideBar%22%2C%22learnmore%22%5D)\n如果您不想現在升級,請繼續使用 Microsoft 365 Agents 工具組版本 4.x.x。", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "歡迎使用 Microsoft 365 Agents 工具組!\n使用引導式教學課程開始\n[建置宣告式代理程式](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 或使用應用程式範本或範例直接進入應用程式開發\n[建立新的代理程式/應用程式](command:fx-extension.create?%5B%22SideBar%22%5D)\n[檢視範例](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n請瀏覽我們的文件以建置 [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) 的應用程式,或延伸 [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)。", - "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "歡迎使用 Microsoft 365 Agents 工具組!\n使用引導式教學課程開始\n[建置宣告式代理程式](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 或使用應用程式範本或範例直接進入應用程式開發\n[建立新的代理程式/應用程式](command:fx-extension.create?%5B%22SideBar%22%5D)\n[檢視範例](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n請瀏覽我們的文件以建置 [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) 的應用程式,或延伸 [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)。", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat.content": "歡迎使用 Microsoft 365 Agents 工具組!\n使用引導式教學課程開始\n[建置宣告式代理程式](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 或使用應用程式範本或範例直接進入應用程式開發\n[建立新的代理程式/應用程式](command:fx-extension.create?%5B%22SideBar%22%5D)\n[檢視範例](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n使用 GitHub Copilot 輕鬆建立您的新應用程式。\n[使用 GitHub Copilot 建立應用程式](command:fx-extension.invokeChat?%5B%22SideBar%22%5D)\n請瀏覽我們的文件以建置 [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) 的應用程式,或延伸 [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)。", + "teamstoolkit.viewsWelcome.teamsfx-empty-project-with-chat-preview-tag.content": "歡迎使用 Microsoft 365 Agents 工具組!\n使用引導式教學課程開始\n[建置宣告式代理程式](command:fx-extension.buildIntelligentAppsWalkthrough?%5B%22SideBar%22%5D)\n 或使用應用程式範本或範例直接進入應用程式開發\n[建立新的代理程式/應用程式](command:fx-extension.create?%5B%22SideBar%22%5D)\n[檢視範例](command:fx-extension.openSamples?%5B%22SideBar%22%5D)\n使用 GitHub Copilot 輕鬆建立您的新應用程式。\n[使用 GitHub Copilot 建立應用程式 (預覽)](command:fx-extension.invokeChatWithPreviewTag?%5B%22SideBar%22%5D)\n請瀏覽我們的文件以建置 [Microsoft Teams](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-apps%22%5D) 的應用程式,或延伸 [Microsoft 365 Copilot](command:fx-extension.openDocument?%5B%22documentName%22%2C%22build-agents%22%5D)。", "teamstoolkit.walkthroughs.description": "使用 Microsoft 365 Agents 工具組為 Microsoft Teams 建置自訂通知 Bot。", "teamstoolkit.walkthroughs.withChat.description": "使用 Microsoft 365 Agents 工具組為 Microsoft Teams 建置自訂通知 Bot。", "teamstoolkit.walkthroughs.steps.teamsToolkitBuildApp.description": "請遵循這些步驟建立您的通知 Bot。\n[Build Notification Bot](command:fx-extension.create?%5B%22SideBar%22%5D)", @@ -611,32 +611,25 @@ "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.title": "改進您的宣告式代理程式", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppsExplore.description": "新增功能以改善宣告式代理程式的用戶體驗。\n\n指令清單中的 capabilities 元素會為您的使用者解除鎖定各種功能。", "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.title": "智慧型應用程式的兩個路徑", - "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "使用 Microsoft 365 以兩種方式建立您的智慧型應用程式:\n🎯 使用外掛程式擴充 Microsoft Copilot,或\n✨ 使用 Microsoft Teams SDK 和 Azure 服務在 Teams 中建置您自己的 Copilot", + "teamstoolkit.walkthroughs.buildIntelligentApps.twoPathsToIntelligentApps.description": "使用下列兩種方式使用Microsoft 365建置智慧型應用程式:\n🎯 使用外掛程式擴充 Microsoft Copilot,或\n✨ 使用 Teams AI 連結庫和 Azure 服務建置您自己的 Copilot in Teams", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.title": "API 外掛程式", "teamstoolkit.walkthroughs.buildIntelligentApps.copilotPlugin.description": "將您的應用程式轉換為外掛程式,以增強 Copilot 的技能,並提高使用者在日常工作和工作流程中的生產力。探索 [Copilot Extensibility](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/)\n[Check Copilot Access](command:fx-extension.checkCopilotAccess?%5B%22WalkThrough%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.title": "建置外掛程式", "teamstoolkit.walkthroughs.buildIntelligentApps.buildPlugin.description": "使用外掛程式和圖形連接器,以下列任一方式展開、擴充及自定義 Copilot\n[OpenAPI Description Document](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22project 類型%22%3A%20%22copilot-agent-type%22%2C%20%22capabilities%22%3A(0 22api-plugin(1 7D(2 D)\n[Teams Message Extension](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough(5 2C(6 7B%22capabilities%22%3A(9 22search-app%22%2C%20%22project-type%22%3A%20%22me 類型%22%2C%20%22me 架構%22%3A%20%22bot-plugin%22%7D%5D)\n[Graph Connector](command:fx-extension.openSamples?%5B%22WalkThrough%22%2C%20%22gc-nodejs-typescript-food-catalog%22%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.title": "自訂引擎代理程式", + "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "在 Teams 中建置智慧、自然語言導向體驗,利用其龐大的使用者基礎進行共同作業。\nMicrosoft 365 Agents 工具組與 Azure OpenAI 和 Teams AI 程式庫整合,以簡化 Copilot 開發並提供獨特的 Teams 功能。\n探索 [Teams AI 程式庫](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/teams%20conversational%20ai/teams-conversation-ai-overview) 和 [Azure OpenAI 服務](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", "teamstoolkit.walkthroughs.buildIntelligentApps.customCopilot.description": "在 Teams 中建置智慧、自然語言導向體驗,利用其龐大的使用者基礎進行共同作業。 \nMicrosoft 365 Agents 工具組與 Azure OpenAI 和 Microsoft Teams SDK 整合,以簡化 Copilot 開發並提供獨特的 Teams 功能。 \n探索 [Microsoft Teams SDK](https://aka.ms/teams-ai-library-v2) 和 [Azure OpenAI 服務](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.title": "建置自定義引擎代理程式", "teamstoolkit.walkthroughs.buildIntelligentApps.buildCustomCopilot.description": "為常見工作或智慧型手機聊天機器人建置 AI Agent Bot 以回答特定問題\n[建置一個基本的 AI 聊天機器人](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-basic%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[建置一個 AI Agent](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-agent%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)\n[建置一個可與您的資料聊天的 Bot](command:fx-extension.createFromWalkthrough?%5B%22WalkThrough%22%2C%20%7B%22capabilities%22%3A%20%22custom-copilot-rag%22%2C%20%22project-type%22%3A%20%22custom-copilot-type%22%7D%5D)", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.title": "資源", "teamstoolkit.walkthroughs.buildIntelligentApps.intelligentAppResources.description": "探索這些資源以建置智慧型應用程式並增強您的開發專案\n🗒️ [Generative AI for Beginners](https://github.com/microsoft/generative-ai-for-beginners/tree/main)\n✨ [擷取擴增產生 (RAG)](https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview)\n📚 [AI Learning and Community Hub](https://learn.microsoft.com/en-us/ai/)", "teamstoolkit.m365.needSignIn.message": "您必須登入您的Microsoft 365帳戶。", - "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 Agents 工具組已成功更新您的專案設定 (m365agents.yaml 和 m365agents.local.yaml) 檔案,加上新增的動作以支援驗證流程。您可以繼續進行遠端佈建。", + "teamstoolkit.handler.createPluginWithManifest.error.missingParameter": "createPluginWithManifest 命令中無效的參數。使用方式: createPluginWithManifest(API_SPEC_PATH:string, PLUGIN_MANIFEST_PATH: string, { lastCommand: string }, OUTPUT_FOLDER?: string)。LAST_COMMAND 的有效值: createPluginWithManifest、createDeclarativeCopilotWithManifest。", + "teamstoolkit.handler.createDeclarativeAgentWithApiSpec.error.invalidParameter": "createDeclarativeAgentWithApiSpec 命令中的參數無效。使用方式: createDeclarativeAgentWithApiSpec(API_SPEC_PATH: 字串)。", + "teamstoolkit.error.KiotaNotInstalled": "您必須安裝Microsoft版本最低的 Kiota 延伸模組 %s 才能使用此功能。", + "teamstoolkit.handeler.addAuthConfig.notification": "Microsoft 365 Agents 工具組已成功更新您的專案設定 (teamsapp.yaml 和 teamsapp.local.yaml) 檔案,加上新的動作以支援驗證流程。您可以繼續進行遠端佈建。", "teamstoolkit.handeler.addAuthConfig.notification.provision": "佈建", - "teamstoolkit.mcpUtils.setupMcpServer.message": "設定 M365 Agents Toolkit MCP 伺服器?(這會在您的工作區中建立或更新 %s)", - "teamstoolkit.mcpUtils.setupMcpServer.confirm": "確認", - "teamstoolkit.mcpUtils.setupMcpServer.skip": "跳過", - "teamstoolkit.mcpUtils.setupMcpServer.successMessage": "已成功設定 M365 Agents Toolkit MCP 伺服器!", - "teamstoolkit.mcpUtils.setupMcpServer.errorMessage": "無法設定 M365 Agents Toolkit MCP 伺服器。錯誤: %s", - "teamstoolkit.handlers.openWorkspaceMCPConfigNotification": "已成功建立宣告式代理程式專案並包裝 MCP。您現在可以從 CodeLens 按鈕 [開始] 啟動 MCP 伺服器,或在 .vscode/mcp.json 檔案中自訂 MCP 伺服器。\n若要從 MCP 伺服器擷取工具,請按一下 CodeLens 或命令面板中的 [ATK: 使用 MCP 更新動作]。", - "teamstoolkit.commands.updateActionWithMCP.title": "從 MCP 擷取動作", - "teamstoolkit.MCP.FileNotFound": "在 .vscode/mcp.json 中找不到 MCP 組態檔。請確保您已設定 MCP 伺服器。", - "teamstoolkit.MCP.ContentInvalid": "MCP 組態檔內容無效。請確保 .vscode/mcp.json 中的內容正確無誤。", - "teamstoolkit.MCP.ServerNotFound": "在 MCP 檔案中找不到 MCP 伺服器。", - "teamstoolkit.MCP.NameOrServerUrlMissing": "遺漏 MCP 名稱或伺服器 URL。", - "teamstoolkit.MCP.LocalMcpCommandMissing": "本機 MCP 命令遺失。", - "teamstoolkit.MCP.ToolsNotFound": "找不到 MCP 伺服器的工具。請先執行伺服器。", - "teamstoolkit.MCP.SelectServerFailed": "無法選取 MCP 伺服器。" + "teamstoolkit.config.enableKiota": "您想使用 Kiota 擴充來產生 OpenAPI 規格和外掛程式資訊清單嗎?您也可以從設定頁面更新此設定。", + "teamstoolkit.config.enableKiota.yes": "是", + "teamstoolkit.config.enableKiota.no": "否" } \ No newline at end of file diff --git a/packages/vscode-extension/src/extension.ts b/packages/vscode-extension/src/extension.ts index d4ec9beee55..d5dc1780861 100644 --- a/packages/vscode-extension/src/extension.ts +++ b/packages/vscode-extension/src/extension.ts @@ -117,6 +117,7 @@ import { addAuthActionHandler, addKnowledgeHandler, addPluginHandler, + addSkillHandler, addWebpartHandler, copilotPluginAddAPIHandler, createNewProjectHandler, @@ -300,6 +301,13 @@ export async function activate(context: vscode.ExtensionContext) { isKiotaNPMIntegrationEnabled ); + const isAgentSkillsEnabled = featureFlagManager.getBooleanValue(FeatureFlags.AgentSkillsEnabled); + await vscode.commands.executeCommand( + "setContext", + "fx-extension.isAgentSkillsEnabled", + isAgentSkillsEnabled + ); + void VsCodeLogInstance.info("Microsoft 365 Agents Toolkit extension is now active!"); // Don't wait this async method to let it run in background. @@ -654,6 +662,7 @@ function registerTreeViewCommandsInDevelopment(context: vscode.ExtensionContext) addKnowledgeHandler, "addKnowledge" ); + registerInCommandController(context, "fx-extension.addSkill", addSkillHandler, "addSkill"); } function registerTreeViewCommandsInLifecycle(context: vscode.ExtensionContext) { diff --git a/packages/vscode-extension/src/handlers/lifecycleHandlers.ts b/packages/vscode-extension/src/handlers/lifecycleHandlers.ts index 304c38fbef1..f7dab4c8bd6 100644 --- a/packages/vscode-extension/src/handlers/lifecycleHandlers.ts +++ b/packages/vscode-extension/src/handlers/lifecycleHandlers.ts @@ -181,6 +181,15 @@ export async function addKnowledgeHandler(...args: unknown[]) { return result; } +export async function addSkillHandler(...args: unknown[]) { + ExtTelemetry.sendTelemetryEvent(TelemetryEvent.AddSkillStart, getTriggerFromProperty(args)); + const result = await runCommand(Stage.addSkill); + if (result.isErr()) { + return err(result.error); + } + return result; +} + /** * scaffold based on app id from Developer Portal */ diff --git a/packages/vscode-extension/src/handlers/sharedOpts.ts b/packages/vscode-extension/src/handlers/sharedOpts.ts index 5d949d5641c..c1c803f4324 100644 --- a/packages/vscode-extension/src/handlers/sharedOpts.ts +++ b/packages/vscode-extension/src/handlers/sharedOpts.ts @@ -162,6 +162,10 @@ export async function runCommand( result = await core.addKnowledge(inputs); break; } + case Stage.addSkill: { + result = await core.addSkill(inputs); + break; + } case Stage.setSensitivityLabel: { result = await core.setSensitivityLabel(inputs); break; diff --git a/packages/vscode-extension/src/telemetry/extTelemetry.ts b/packages/vscode-extension/src/telemetry/extTelemetry.ts index 7045fbe9c66..cebb4e72683 100644 --- a/packages/vscode-extension/src/telemetry/extTelemetry.ts +++ b/packages/vscode-extension/src/telemetry/extTelemetry.ts @@ -92,6 +92,8 @@ export namespace ExtTelemetry { return TelemetryEvent.AddAuthAction; case Stage.addKnowledge: return TelemetryEvent.AddKnowledge; + case Stage.addSkill: + return TelemetryEvent.AddSkill; case Stage.shareRemove: return TelemetryEvent.ShareRemove; default: diff --git a/packages/vscode-extension/src/telemetry/extTelemetryEvents.ts b/packages/vscode-extension/src/telemetry/extTelemetryEvents.ts index f56366421ec..4be2a61aea8 100644 --- a/packages/vscode-extension/src/telemetry/extTelemetryEvents.ts +++ b/packages/vscode-extension/src/telemetry/extTelemetryEvents.ts @@ -52,6 +52,9 @@ export enum TelemetryEvent { AddKnowledgeStart = "add-knowledge-start", AddKnowledge = "add-knowledge", + AddSkillStart = "add-skill-start", + AddSkill = "add-skill", + ValidateManifestStart = "validate-manifest-start", ValidateManifest = "validate-manifest", ValidateApplication = "validate-application", diff --git a/packages/vscode-extension/src/treeview/treeViewManager.ts b/packages/vscode-extension/src/treeview/treeViewManager.ts index aec931d931c..56a95ff68cb 100644 --- a/packages/vscode-extension/src/treeview/treeViewManager.ts +++ b/packages/vscode-extension/src/treeview/treeViewManager.ts @@ -270,6 +270,18 @@ class TreeViewManager { ), ] : []), + ...(isDeclarativeCopilotApp && + featureFlagManager.getBooleanValue(FeatureFlags.AgentSkillsEnabled) + ? [ + new TreeViewCommand( + localize("teamstoolkit.commandsTreeViewProvider.addSkillTitle"), + localize("teamstoolkit.commandsTreeViewProvider.addSkillDescription"), + "fx-extension.addSkill", + "addSkill", + { name: "lightbulb", custom: false } + ), + ] + : []), ...(isDeclarativeCopilotApp ? [ new TreeViewCommand( diff --git a/packages/vscode-extension/test/treeview/treeViewManager.test.ts b/packages/vscode-extension/test/treeview/treeViewManager.test.ts index 87d0a719c0b..351726d5d03 100644 --- a/packages/vscode-extension/test/treeview/treeViewManager.test.ts +++ b/packages/vscode-extension/test/treeview/treeViewManager.test.ts @@ -178,6 +178,6 @@ describe("TreeViewManager", () => { const developmentTreeview = treeViewManager.getTreeView("teamsfx-development"); chai.assert.isDefined(developmentTreeview); - chai.assert.equal((developmentTreeview as any).commands.length, 8); + chai.assert.equal((developmentTreeview as any).commands.length, 9); }); });