diff --git a/packages/cli/src/userInteraction.ts b/packages/cli/src/userInteraction.ts index ba4c32e97c..cfecb4e033 100644 --- a/packages/cli/src/userInteraction.ts +++ b/packages/cli/src/userInteraction.ts @@ -206,7 +206,9 @@ class CLIUserInteraction implements UserInteraction { const choices = (option as OptionItem[]).map((op) => { return { id: op.id, - title: labelClean(op.label), + title: !op.description + ? labelClean(op.label) + : labelClean(op.label) + ` (${op.description})`, detail: op.detail, }; }); diff --git a/packages/cli/tests/unit/ui.tests.ts b/packages/cli/tests/unit/ui.tests.ts index 9a4d19caa9..8860299a25 100644 --- a/packages/cli/tests/unit/ui.tests.ts +++ b/packages/cli/tests/unit/ui.tests.ts @@ -126,6 +126,36 @@ describe("User Interaction Tests", function () { } }); + it("Add description in title", async () => { + const config: SingleSelectConfig = { + name: "test", + title: "test", + options: [{ id: "id1", description: "some description", label: "label" }], + }; + sandbox.stub(UI, "loadSelectDynamicData").resolves(ok({} as any)); + sandbox.stub(UI, "singleSelect").resolves(ok("id1")); + const result = await UI.selectOption(config); + expect(result.isOk()); + if (result.isOk()) { + expect(result.value.result).equal("id1"); + } + }); + + it("No description in title", async () => { + const config: SingleSelectConfig = { + name: "test", + title: "test", + options: [{ id: "id1", label: "label" }], + }; + sandbox.stub(UI, "loadSelectDynamicData").resolves(ok({} as any)); + sandbox.stub(UI, "singleSelect").resolves(ok("id1")); + const result = await UI.selectOption(config); + expect(result.isOk()); + if (result.isOk()) { + expect(result.value.result).equal("id1"); + } + }); + it("invalid option", async () => { sandbox.stub(UI, "singleSelect").resolves(ok("c")); const config: SingleSelectConfig = { diff --git a/packages/fx-core/src/component/deps-checker/util/cpUtils.ts b/packages/fx-core/src/component/deps-checker/util/cpUtils.ts index 79cceb923c..c9e070194f 100644 --- a/packages/fx-core/src/component/deps-checker/util/cpUtils.ts +++ b/packages/fx-core/src/component/deps-checker/util/cpUtils.ts @@ -4,7 +4,6 @@ /* eslint-disable @typescript-eslint/no-namespace */ import * as cp from "child_process"; import * as os from "os"; -import * as shellQuote from "shell-quote"; export interface DebugLogger { debug(message: string): void; @@ -57,8 +56,7 @@ export namespace cpUtils { }; Object.assign(options, additionalOptions); - const quotedCommand = shellQuote.quote([command]); - const childProc: cp.ChildProcess = cp.spawn(quotedCommand, args, options); + const childProc: cp.ChildProcess = cp.spawn(command, args, options); let timer: NodeJS.Timeout; if (options.timeout && options.timeout > 0) { // timeout only exists for exec not spawn diff --git a/packages/fx-core/src/component/generator/apiSpec/helper.ts b/packages/fx-core/src/component/generator/apiSpec/helper.ts index 00cfd30d55..6c270f62ae 100644 --- a/packages/fx-core/src/component/generator/apiSpec/helper.ts +++ b/packages/fx-core/src/component/generator/apiSpec/helper.ts @@ -916,7 +916,7 @@ async function updateAdaptiveCardForCustomApi( const name = item.item.operationId!.replace(/[^a-zA-Z0-9]/g, "_"); const [card, jsonPath] = AdaptiveCardGenerator.generateAdaptiveCard(item.item, true); if (jsonPath !== "$" && card.body && card.body[0] && (card.body[0] as any).$data) { - (card.body as any).$data = `\${${jsonPath}}`; + (card.body[0] as any).$data = `\${${jsonPath}}`; } const cardFilePath = path.join(adaptiveCardsFolderPath, `${name}.json`); await fs.writeFile(cardFilePath, JSON.stringify(card, null, 2)); @@ -1022,7 +1022,7 @@ async def {{operationId}}( ): parameters = context.data path = parameters.get("path", {}) - body = parameters.get("body", {}) + body = parameters.get("body", None) query = parameters.get("query", {}) resp = client.{{operationId}}(**path, json=body, _headers={}, _params=query, _cookies={}) diff --git a/packages/fx-core/src/component/generator/officeAddin/generator.ts b/packages/fx-core/src/component/generator/officeAddin/generator.ts index eea163c1af..1d14ba92a7 100644 --- a/packages/fx-core/src/component/generator/officeAddin/generator.ts +++ b/packages/fx-core/src/component/generator/officeAddin/generator.ts @@ -259,55 +259,4 @@ export class OfficeAddinGeneratorNew extends DefaultTemplateGenerator { if (res.isErr()) return err(res.error); return Promise.resolve(ok([{ templateName: tplName, language: lang }])); } - - public async post( - context: Context, - inputs: Inputs, - destinationPath: string, - actionContext?: ActionContext - ): Promise> { - const res = await OfficeAddinGenerator.doScaffolding(context, inputs, destinationPath); - if (res.isErr()) return err(res.error); - await this.fixIconPath(destinationPath); - return ok({}); - } - - /** - * this is a work around for MOS API bug that will return invalid package if the icon path is not root folder of appPackage - * so this function will move the two icon files to root folder of appPackage and update the manifest.json - */ - async fixIconPath(projectPath: string): Promise { - const outlineOldPath = join(projectPath, "appPackage", "assets", "outline.png"); - const colorOldPath = join(projectPath, "appPackage", "assets", "color.png"); - const outlineNewPath = join(projectPath, "appPackage", "outline.png"); - const colorNewPath = join(projectPath, "appPackage", "color.png"); - const manifestPath = join(projectPath, "appPackage", "manifest.json"); - if (!(await fse.pathExists(manifestPath))) return; - const manifest = await fse.readJson(manifestPath); - let change = false; - if (manifest.icons.outline === "assets/outline.png") { - if ((await fse.pathExists(outlineOldPath)) && !(await fse.pathExists(outlineNewPath))) { - await fse.move(outlineOldPath, outlineNewPath); - manifest.icons.outline = "outline.png"; - change = true; - } - } - if (manifest.icons.color === "assets/color.png") { - if ((await fse.pathExists(colorOldPath)) && !(await fse.pathExists(colorNewPath))) { - await fse.move(colorOldPath, colorNewPath); - manifest.icons.color = "color.png"; - change = true; - } - } - if (change) { - await fse.writeJson(manifestPath, manifest, { spaces: 4 }); - const webpackConfigPath = join(projectPath, "webpack.config.js"); - const content = await fse.readFile(webpackConfigPath, "utf8"); - const newContent = content.replace( - 'from: "appPackage/assets/*",\r\n to: "assets/[name][ext][query]",\r\n },', - 'from: "appPackage/assets/*",\r\n to: "assets/[name][ext][query]",\r\n },\r\n {\r\n from: "appPackage/*.png",\r\n to: "[name]" + "[ext]",\r\n },' - ); - await fse.writeFile(webpackConfigPath, newContent); - } - } } diff --git a/packages/fx-core/tests/component/generator/officeAddinGenerator.test.ts b/packages/fx-core/tests/component/generator/officeAddinGenerator.test.ts index fc01fb7c75..f3e0c8fab0 100644 --- a/packages/fx-core/tests/component/generator/officeAddinGenerator.test.ts +++ b/packages/fx-core/tests/component/generator/officeAddinGenerator.test.ts @@ -1033,191 +1033,6 @@ describe("OfficeAddinGeneratorNew", () => { chai.assert.isTrue(res.isErr()); }); }); - - describe("post()", () => { - const sandbox = sinon.createSandbox(); - afterEach(() => { - sandbox.restore(); - }); - it(`happy`, async () => { - const inputs: Inputs = { - platform: Platform.CLI, - projectPath: "./", - }; - sandbox.stub(OfficeAddinGenerator, "doScaffolding").resolves(ok(undefined)); - sandbox.stub(generator, "fixIconPath").resolves(); - const res = await generator.post(context, inputs, "./"); - chai.assert.isTrue(res.isOk()); - }); - }); -}); - -describe("fixIconPath()", () => { - const generator = new OfficeAddinGeneratorNew(); - const sandbox = sinon.createSandbox(); - beforeEach(() => { - sandbox.stub(fse, "readFile").resolves("" as any); - sandbox.stub(fse, "writeFile").resolves(); - }); - afterEach(() => { - sandbox.restore(); - }); - it("manifest not found", async () => { - sandbox.stub(fse, "pathExists").resolves(false); - const move = sandbox.stub(fse, "move").resolves(); - await generator.fixIconPath("./"); - chai.assert.isTrue(move.notCalled); - }); - it("happy", async () => { - sandbox.stub(fse, "pathExists").callsFake(async (path) => { - if (path.endsWith("manifest.json")) { - return true; - } else if (path.endsWith("assets/outline.png") || path.endsWith("assets\\outline.png")) { - return true; - } else if (path.endsWith("assets/color.png") || path.endsWith("assets\\color.png")) { - return true; - } else if (path.endsWith("color.png")) { - return false; - } else if (path.endsWith("outline.png")) { - return false; - } - }); - sandbox - .stub(fse, "readJson") - .resolves({ icons: { outline: "assets/outline.png", color: "assets/color.png" } }); - const move = sandbox.stub(fse, "move").resolves(); - const writeJson = sandbox.stub(fse, "writeJson").resolves(); - await generator.fixIconPath("./"); - chai.assert.isTrue(move.calledTwice); - chai.assert.isTrue(writeJson.calledOnce); - }); - it("no need to move", async () => { - sandbox.stub(fse, "pathExists").callsFake(async (path) => { - if (path.endsWith("manifest.json")) { - return true; - } else if (path.endsWith("assets/outline.png") || path.endsWith("assets\\outline.png")) { - return true; - } else if (path.endsWith("assets/color.png") || path.endsWith("assets\\color.png")) { - return true; - } else if (path.endsWith("color.png")) { - return false; - } else if (path.endsWith("outline.png")) { - return false; - } - }); - sandbox - .stub(fse, "readJson") - .resolves({ icons: { outline: "outline.png", color: "color.png" } }); - const move = sandbox.stub(fse, "move").resolves(); - const writeJson = sandbox.stub(fse, "writeJson").resolves(); - await generator.fixIconPath("./"); - chai.assert.isTrue(move.notCalled); - chai.assert.isTrue(writeJson.notCalled); - }); - it("no need to move", async () => { - sandbox.stub(fse, "pathExists").callsFake(async (path) => { - if (path.endsWith("manifest.json")) { - return true; - } else if (path.endsWith("assets/outline.png") || path.endsWith("assets\\outline.png")) { - return false; - } else if (path.endsWith("assets/color.png") || path.endsWith("assets\\color.png")) { - return false; - } else if (path.endsWith("color.png")) { - return false; - } else if (path.endsWith("outline.png")) { - return false; - } - }); - sandbox - .stub(fse, "readJson") - .resolves({ icons: { outline: "assets/outline.png", color: "assets/color.png" } }); - const move = sandbox.stub(fse, "move").resolves(); - const writeJson = sandbox.stub(fse, "writeJson").resolves(); - await generator.fixIconPath("./"); - chai.assert.isTrue(move.notCalled); - chai.assert.isTrue(writeJson.notCalled); - }); - describe("fixIconPath()", () => { - const sandbox = sinon.createSandbox(); - afterEach(() => { - sandbox.restore(); - }); - it("manifest not found", async () => { - sandbox.stub(fse, "pathExists").resolves(false); - const move = sandbox.stub(fse, "move").resolves(); - await generator.fixIconPath("./"); - chai.assert.isTrue(move.notCalled); - }); - it("happy", async () => { - sandbox.stub(fse, "pathExists").callsFake(async (path) => { - if (path.endsWith("manifest.json")) { - return true; - } else if (path.endsWith("assets/outline.png") || path.endsWith("assets\\outline.png")) { - return true; - } else if (path.endsWith("assets/color.png") || path.endsWith("assets\\color.png")) { - return true; - } else if (path.endsWith("color.png")) { - return false; - } else if (path.endsWith("outline.png")) { - return false; - } - }); - sandbox - .stub(fse, "readJson") - .resolves({ icons: { outline: "assets/outline.png", color: "assets/color.png" } }); - const move = sandbox.stub(fse, "move").resolves(); - const writeJson = sandbox.stub(fse, "writeJson").resolves(); - await generator.fixIconPath("./"); - chai.assert.isTrue(move.calledTwice); - chai.assert.isTrue(writeJson.calledOnce); - }); - it("no need to move", async () => { - sandbox.stub(fse, "pathExists").callsFake(async (path) => { - if (path.endsWith("manifest.json")) { - return true; - } else if (path.endsWith("assets/outline.png") || path.endsWith("assets\\outline.png")) { - return true; - } else if (path.endsWith("assets/color.png") || path.endsWith("assets\\color.png")) { - return true; - } else if (path.endsWith("color.png")) { - return false; - } else if (path.endsWith("outline.png")) { - return false; - } - }); - sandbox - .stub(fse, "readJson") - .resolves({ icons: { outline: "outline.png", color: "color.png" } }); - const move = sandbox.stub(fse, "move").resolves(); - const writeJson = sandbox.stub(fse, "writeJson").resolves(); - await generator.fixIconPath("./"); - chai.assert.isTrue(move.notCalled); - chai.assert.isTrue(writeJson.notCalled); - }); - it("no need to move", async () => { - sandbox.stub(fse, "pathExists").callsFake(async (path) => { - if (path.endsWith("manifest.json")) { - return true; - } else if (path.endsWith("assets/outline.png") || path.endsWith("assets\\outline.png")) { - return false; - } else if (path.endsWith("assets/color.png") || path.endsWith("assets\\color.png")) { - return false; - } else if (path.endsWith("color.png")) { - return false; - } else if (path.endsWith("outline.png")) { - return false; - } - }); - sandbox - .stub(fse, "readJson") - .resolves({ icons: { outline: "assets/outline.png", color: "assets/color.png" } }); - const move = sandbox.stub(fse, "move").resolves(); - const writeJson = sandbox.stub(fse, "writeJson").resolves(); - await generator.fixIconPath("./"); - chai.assert.isTrue(move.notCalled); - chai.assert.isTrue(writeJson.notCalled); - }); - }); }); describe("doScaffolding()", () => { diff --git a/packages/vscode-extension/PRERELEASE.md b/packages/vscode-extension/PRERELEASE.md index 5c501bff02..c5085e678b 100644 --- a/packages/vscode-extension/PRERELEASE.md +++ b/packages/vscode-extension/PRERELEASE.md @@ -4,6 +4,39 @@ > Note: This changelog only includes the changes for the pre-release versions of Teams Toolkit. For the changelog of stable versions, please refer to the [Teams Toolkit Changelog](https://github.com/OfficeDev/TeamsFx/blob/dev/packages/vscode-extension/CHANGELOG.md). +### August 14, 2024 + +#### New Features +- **Enhanced App Validation**: Developers can now evaluate their app packages using the same test cases Microsoft employs during app review. The Enhanced App Validation feature in Teams Toolkit identifies any errors or warnings within your app package and provides clear guidelines for resolution. For more details on Microsoft test cases, refer to the [Teams Store validation guidelines](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines) and [Commercial marketplace certification policies](https://learn.microsoft.com/en-us/legal/marketplace/certification-policies). +![App Validation](https://github.com/user-attachments/assets/4c2b8c49-6a0a-4ea7-8796-a94464714463) + +- **Generate an Intelligent Chatbot with Python**: Following the release of support for building [Custom Engine Copilot](https://learn.microsoft.com/microsoft-365-copilot/extensibility/overview-custom-engine-copilot) during Build 2024, which included the ability to "chat with" your own API, Teams Toolkit now extends this capability to the Python programming language. +![App Generator](https://github.com/user-attachments/assets/21efa344-aea5-4d44-bb78-aa8e26dc68a1) + +- **Create Declarative Copilot**: Teams Toolkit now allows you to build a declarative copilot, enabling you to customize Microsoft 365 Copilot by declaring specific instructions, actions, and knowledge. Declarative copilots run on the same orchestrator, foundation models, and trusted AI services that power Microsoft Copilot. You can learn more about [declarative copilots here](https://learn.microsoft.com/microsoft-365-copilot/extensibility/overview-declarative-copilot). The toolkit supports the creation of both basic declarative copilots and those with an API plugin. +![Declarative Copilot](https://github.com/user-attachments/assets/37412cdd-c7e8-4e38-bd45-794997b050ec) + +- **Using Assistant API on Azure OpenAI Service**: The Teams Toolkit has updated the `AI Agent` (Python) app template to support the Assistant API on Azure OpenAI Service. You can now build your own AI Agents on Microsoft 365 using Python, with the option to use either Azure OpenAI Service or OpenAI directly. Support for TypeScript and JavaScript is forthcoming. + +#### Enhancements + +- Teams Toolkit will continue to update scaffold app templates to ensure compliance with [Teams Store validation guidelines](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines). The first round of updates focuses on bot templates, including: + - [PR#12063](https://github.com/OfficeDev/teams-toolkit/pull/12063): Updated `Basic Bot` and `Message Extension` + - [PR#12096](https://github.com/OfficeDev/teams-toolkit/pull/12096): Updated `Chat Command` + - [PR#12123](https://github.com/OfficeDev/teams-toolkit/pull/12123): Updated `Chat Notification Messages` + - [PR#12119](https://github.com/OfficeDev/teams-toolkit/pull/12119): Updated `Sequential Workflow in Chat` +- Teams Toolkit now prompts users to generate an API key before debugging API ME or API Plugin with API Key authentication templates. +- Secret values have been redacted from the Visual Studio Code output channel. + +#### Bug Fixes + +- Fixed vulnerability issues in TeamsFx SDK. [#11973](https://github.com/OfficeDev/teams-toolkit/pull/11937) +- Resolved compatibility issues with `groupchat` and `groupChat` in the Teams app manifest. [#12028](https://github.com/OfficeDev/teams-toolkit/pull/12028) +- Corrected an issue where the link redirection for the lifecycle `Provision` button was incorrect. [#12120](https://github.com/OfficeDev/teams-toolkit/pull/12120) +- Fixed initialization failures of `publicClientApplication` in TeamsFx SDK. [#12159](https://github.com/OfficeDev/teams-toolkit/pull/12159) +- Addressed issues when creating SharePoint Framework-based tab apps. [#12173](https://github.com/OfficeDev/teams-toolkit/pull/12173) + + ### July 17, 2024 #### New Features diff --git a/packages/vscode-extension/src/controls/sampleGallery/offlinePage.tsx b/packages/vscode-extension/src/controls/sampleGallery/offlinePage.tsx index 54a73e1c10..6927cd102c 100644 --- a/packages/vscode-extension/src/controls/sampleGallery/offlinePage.tsx +++ b/packages/vscode-extension/src/controls/sampleGallery/offlinePage.tsx @@ -5,7 +5,7 @@ import "./offlinePage.scss"; import * as React from "react"; -import OfflineImage from "../../../img/webview/sample/offline.svg"; +import OfflineImage from "../../../img/webview/sample/offline.svg?react"; export default class OfflinePage extends React.Component { constructor(props: unknown) { diff --git a/packages/vscode-extension/src/controls/sampleGallery/sampleCard.tsx b/packages/vscode-extension/src/controls/sampleGallery/sampleCard.tsx index ed344ab3dc..95e498a062 100644 --- a/packages/vscode-extension/src/controls/sampleGallery/sampleCard.tsx +++ b/packages/vscode-extension/src/controls/sampleGallery/sampleCard.tsx @@ -7,7 +7,7 @@ import * as React from "react"; import { Image } from "@fluentui/react"; -import Turtle from "../../../img/webview/sample/turtle.svg"; +import Turtle from "../../../img/webview/sample/turtle.svg?react"; import { TelemetryTriggerFrom } from "../../telemetry/extTelemetryEvents"; import { SampleProps } from "./ISamples"; diff --git a/templates/common/api-plugin-existing-api/.vscode/launch.json.tpl b/templates/common/api-plugin-existing-api/.vscode/launch.json.tpl index 5260ffcb74..b3ddbb03a8 100644 --- a/templates/common/api-plugin-existing-api/.vscode/launch.json.tpl +++ b/templates/common/api-plugin-existing-api/.vscode/launch.json.tpl @@ -35,7 +35,7 @@ "name": "Preview in Copilot (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 1 @@ -46,7 +46,7 @@ "name": "Preview in Copilot (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 2 diff --git a/templates/common/copilot-gpt-basic/.vscode/launch.json b/templates/common/copilot-gpt-basic/.vscode/launch.json index ed864bd345..de1b02ec6a 100644 --- a/templates/common/copilot-gpt-basic/.vscode/launch.json +++ b/templates/common/copilot-gpt-basic/.vscode/launch.json @@ -5,7 +5,7 @@ "name": "Preview in Copilot (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 1 @@ -16,7 +16,7 @@ "name": "Preview in Copilot (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 2 diff --git a/templates/common/copilot-gpt-basic/appPackage/declarativeCopilot.json.tpl b/templates/common/copilot-gpt-basic/appPackage/declarativeCopilot.json.tpl index dc2e8ad9fc..ffcd731876 100644 --- a/templates/common/copilot-gpt-basic/appPackage/declarativeCopilot.json.tpl +++ b/templates/common/copilot-gpt-basic/appPackage/declarativeCopilot.json.tpl @@ -2,5 +2,5 @@ "$schema": "https://aka.ms/json-schemas/copilot-extensions/v1.0/declarative-copilot.schema.json", "name": "{{appName}}", "description": "Declarative copilot created with Teams Toolkit", - "instructions": "You are a declarative copilot and were created with Team Toolkit. You should start every response and answer to the user with \"Thanks for using Teams Toolkit to create your declarative copilot!\\n\" and then answer the questions and help the user." + "instructions": "You are a declarative copilot and were created with Team Toolkit. You should start every response and answer to the user with \"Thanks for using Teams Toolkit to create your declarative copilot!\n\n\" and then answer the questions and help the user." } \ No newline at end of file diff --git a/templates/csharp/copilot-gpt-from-scratch-plugin/.{{NewProjectTypeName}}/launchSettings.json.tpl b/templates/csharp/copilot-gpt-from-scratch-plugin/.{{NewProjectTypeName}}/launchSettings.json.tpl index 9813104d70..dc1b9129db 100644 --- a/templates/csharp/copilot-gpt-from-scratch-plugin/.{{NewProjectTypeName}}/launchSettings.json.tpl +++ b/templates/csharp/copilot-gpt-from-scratch-plugin/.{{NewProjectTypeName}}/launchSettings.json.tpl @@ -3,7 +3,7 @@ // Launch project within Copilot "Copilot (browser)": { "commandName": "Project", - "launchUrl": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "launchUrl": "https://www.office.com/chat?auth=2", } } } \ No newline at end of file diff --git a/templates/csharp/copilot-gpt-from-scratch-plugin/Properties/launchSettings.json.tpl b/templates/csharp/copilot-gpt-from-scratch-plugin/Properties/launchSettings.json.tpl index 9e899cfb36..ab71d12772 100644 --- a/templates/csharp/copilot-gpt-from-scratch-plugin/Properties/launchSettings.json.tpl +++ b/templates/csharp/copilot-gpt-from-scratch-plugin/Properties/launchSettings.json.tpl @@ -6,7 +6,7 @@ "commandLineArgs": "host start --port 5130 --pause-on-error", "dotnetRunMessages": true, "launchBrowser": true, - "launchUrl": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "launchUrl": "https://www.office.com/chat?auth=2", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, diff --git a/templates/csharp/copilot-gpt-from-scratch-plugin/teamsapp.local.yml.tpl b/templates/csharp/copilot-gpt-from-scratch-plugin/teamsapp.local.yml.tpl index 3663ccf2df..3f591bd647 100644 --- a/templates/csharp/copilot-gpt-from-scratch-plugin/teamsapp.local.yml.tpl +++ b/templates/csharp/copilot-gpt-from-scratch-plugin/teamsapp.local.yml.tpl @@ -71,7 +71,7 @@ provision: commandLineArgs: "host start --port 5130 --pause-on-error" dotnetRunMessages: true launchBrowser: true - launchUrl: "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt" + launchUrl: "https://www.office.com/chat?auth=2" environmentVariables: ASPNETCORE_ENVIRONMENT: "Development" hotReloadProfile: "aspnetcore" diff --git a/templates/js/api-plugin-from-scratch-bearer/.vscode/launch.json.tpl b/templates/js/api-plugin-from-scratch-bearer/.vscode/launch.json.tpl index 6bf771e680..4cc092ce1b 100644 --- a/templates/js/api-plugin-from-scratch-bearer/.vscode/launch.json.tpl +++ b/templates/js/api-plugin-from-scratch-bearer/.vscode/launch.json.tpl @@ -126,7 +126,7 @@ "name": "Launch App in Teams (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -141,7 +141,7 @@ "name": "Launch App in Teams (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -156,7 +156,7 @@ "name": "Preview in Copilot (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 1 @@ -167,7 +167,7 @@ "name": "Preview in Copilot (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 2 diff --git a/templates/js/api-plugin-from-scratch-bearer/appPackage/repairDeclarativeCopilot.json.tpl b/templates/js/api-plugin-from-scratch-bearer/appPackage/repairDeclarativeCopilot.json.tpl index 8159ff453a..084a479840 100644 --- a/templates/js/api-plugin-from-scratch-bearer/appPackage/repairDeclarativeCopilot.json.tpl +++ b/templates/js/api-plugin-from-scratch-bearer/appPackage/repairDeclarativeCopilot.json.tpl @@ -1,7 +1,7 @@ { "$schema": "https://aka.ms/json-schemas/copilot-extensions/v1.0/declarative-copilot.schema.json", "name": "{{appName}}${{APP_NAME_SUFFIX}}", - "description": "This GPT helps you with finding car repair records.", + "description": "This declarative copilot helps you with finding car repair records.", "instructions": "You will help the user find car repair records assigned to a specific person, the name of the person should be provided by the user. The user will provide the name of the person and you will need to understand the user's intent and provide the car repair records assigned to that person. You can only access and leverage the data from the 'repairPlugin' action.", "conversation_starters": [ { diff --git a/templates/js/api-plugin-from-scratch-oauth/.vscode/launch.json.tpl b/templates/js/api-plugin-from-scratch-oauth/.vscode/launch.json.tpl index 6bf771e680..4cc092ce1b 100644 --- a/templates/js/api-plugin-from-scratch-oauth/.vscode/launch.json.tpl +++ b/templates/js/api-plugin-from-scratch-oauth/.vscode/launch.json.tpl @@ -126,7 +126,7 @@ "name": "Launch App in Teams (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -141,7 +141,7 @@ "name": "Launch App in Teams (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -156,7 +156,7 @@ "name": "Preview in Copilot (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 1 @@ -167,7 +167,7 @@ "name": "Preview in Copilot (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 2 diff --git a/templates/js/api-plugin-from-scratch-oauth/appPackage/ai-plugin.dev.json b/templates/js/api-plugin-from-scratch-oauth/appPackage/ai-plugin.dev.json.tpl similarity index 100% rename from templates/js/api-plugin-from-scratch-oauth/appPackage/ai-plugin.dev.json rename to templates/js/api-plugin-from-scratch-oauth/appPackage/ai-plugin.dev.json.tpl diff --git a/templates/js/api-plugin-from-scratch-oauth/appPackage/ai-plugin.local.json b/templates/js/api-plugin-from-scratch-oauth/appPackage/ai-plugin.local.json.tpl similarity index 100% rename from templates/js/api-plugin-from-scratch-oauth/appPackage/ai-plugin.local.json rename to templates/js/api-plugin-from-scratch-oauth/appPackage/ai-plugin.local.json.tpl diff --git a/templates/js/api-plugin-from-scratch-oauth/appPackage/repairDeclarativeCopilot.json.tpl b/templates/js/api-plugin-from-scratch-oauth/appPackage/repairDeclarativeCopilot.json.tpl index 126a658833..b9fbb546b0 100644 --- a/templates/js/api-plugin-from-scratch-oauth/appPackage/repairDeclarativeCopilot.json.tpl +++ b/templates/js/api-plugin-from-scratch-oauth/appPackage/repairDeclarativeCopilot.json.tpl @@ -1,7 +1,7 @@ { "$schema": "https://aka.ms/json-schemas/copilot-extensions/v1.0/declarative-copilot.schema.json", "name": "{{appName}}${{APP_NAME_SUFFIX}}", - "description": "This GPT helps you with finding car repair records.", + "description": "This declarative copilot helps you with finding car repair records.", "instructions": "You will help the user find car repair records assigned to a specific person, the name of the person should be provided by the user. The user will provide the name of the person and you will need to understand the user's intent and provide the car repair records assigned to that person. You can only access and leverage the data from the 'repairPlugin' action.", "conversation_starters": [ { diff --git a/templates/js/api-plugin-from-scratch/.vscode/launch.json.tpl b/templates/js/api-plugin-from-scratch/.vscode/launch.json.tpl index 91500fec19..b97d25bea0 100644 --- a/templates/js/api-plugin-from-scratch/.vscode/launch.json.tpl +++ b/templates/js/api-plugin-from-scratch/.vscode/launch.json.tpl @@ -128,7 +128,7 @@ "name": "Launch App in Teams (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -143,7 +143,7 @@ "name": "Launch App in Teams (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -158,7 +158,7 @@ "name": "Preview in Copilot (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 1 @@ -169,7 +169,7 @@ "name": "Preview in Copilot (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 2 diff --git a/templates/js/api-plugin-from-scratch/appPackage/repairDeclarativeCopilot.json.tpl b/templates/js/api-plugin-from-scratch/appPackage/repairDeclarativeCopilot.json.tpl index 8159ff453a..084a479840 100644 --- a/templates/js/api-plugin-from-scratch/appPackage/repairDeclarativeCopilot.json.tpl +++ b/templates/js/api-plugin-from-scratch/appPackage/repairDeclarativeCopilot.json.tpl @@ -1,7 +1,7 @@ { "$schema": "https://aka.ms/json-schemas/copilot-extensions/v1.0/declarative-copilot.schema.json", "name": "{{appName}}${{APP_NAME_SUFFIX}}", - "description": "This GPT helps you with finding car repair records.", + "description": "This declarative copilot helps you with finding car repair records.", "instructions": "You will help the user find car repair records assigned to a specific person, the name of the person should be provided by the user. The user will provide the name of the person and you will need to understand the user's intent and provide the car repair records assigned to that person. You can only access and leverage the data from the 'repairPlugin' action.", "conversation_starters": [ { diff --git a/templates/js/copilot-gpt-from-scratch-plugin/.vscode/launch.json b/templates/js/copilot-gpt-from-scratch-plugin/.vscode/launch.json index 810ea6eb0f..910cce13c4 100644 --- a/templates/js/copilot-gpt-from-scratch-plugin/.vscode/launch.json +++ b/templates/js/copilot-gpt-from-scratch-plugin/.vscode/launch.json @@ -5,7 +5,7 @@ "name": "Launch App in Teams (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -20,7 +20,7 @@ "name": "Launch App in Teams (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -35,7 +35,7 @@ "name": "Preview in Copilot (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 1 @@ -46,7 +46,7 @@ "name": "Preview in Copilot (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 2 diff --git a/templates/python/custom-copilot-rag-custom-api/.vscode/launch.json b/templates/python/custom-copilot-rag-custom-api/.vscode/launch.json index c54ee4d329..4ad28db3b2 100644 --- a/templates/python/custom-copilot-rag-custom-api/.vscode/launch.json +++ b/templates/python/custom-copilot-rag-custom-api/.vscode/launch.json @@ -1,119 +1,130 @@ { "version": "0.2.0", "configurations": [ - { - "name": "Launch Remote in Teams (Edge)", - "type": "msedge", - "request": "launch", - "url": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}", - "presentation": { - "group": "group 1: Teams", - "order": 3 - }, - "internalConsoleOptions": "neverOpen" + { + "name": "Launch Remote (Edge)", + "type": "msedge", + "request": "launch", + "url": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}", + "presentation": { + "group": "3-remote", + "order": 1 }, - { - "name": "Launch Remote in Teams (Chrome)", - "type": "chrome", - "request": "launch", - "url": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}", - "presentation": { - "group": "group 1: Teams", - "order": 3 - }, - "internalConsoleOptions": "neverOpen" + "internalConsoleOptions": "neverOpen" + }, + { + "name": "Launch Remote (Chrome)", + "type": "chrome", + "request": "launch", + "url": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}", + "presentation": { + "group": "3-remote", + "order": 2 }, - { - "name": "Launch App (Edge)", - "type": "msedge", - "request": "launch", - "url": "https://teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}", - "presentation": { - "group": "all", - "hidden": true - }, - "internalConsoleOptions": "neverOpen" + "internalConsoleOptions": "neverOpen" + }, + { + "name": "Launch Remote (Desktop)", + "type": "node", + "request": "launch", + "preLaunchTask": "Start Teams App in Desktop Client (Remote)", + "presentation": { + "group": "3-remote", + "order": 3 }, - { - "name": "Launch App (Chrome)", - "type": "chrome", - "request": "launch", - "url": "https://teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}", - "presentation": { - "group": "all", - "hidden": true - }, - "internalConsoleOptions": "neverOpen" + "internalConsoleOptions": "neverOpen" + }, + { + "name": "Launch App (Edge)", + "type": "msedge", + "request": "launch", + "url": "https://teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}", + "presentation": { + "group": "all", + "hidden": true }, - { - "name": "Start Python", - "type": "debugpy", - "request": "launch", - "program": "${workspaceFolder}/src/app.py", - "cwd": "${workspaceFolder}/src", - "console": "integratedTerminal" + "internalConsoleOptions": "neverOpen" + }, + { + "name": "Launch App (Chrome)", + "type": "chrome", + "request": "launch", + "url": "https://teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}", + "presentation": { + "group": "all", + "hidden": true }, - { - "name": "Start Test Tool", - "type": "node", - "request": "launch", - "program": "${workspaceFolder}/devTools/teamsapptester/node_modules/@microsoft/teams-app-test-tool/cli.js", - "args": [ - "start" - ], - "cwd": "${workspaceFolder}", - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen" - } + "internalConsoleOptions": "neverOpen" + }, + { + "name": "Start Python", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/src/app.py", + "cwd": "${workspaceFolder}/src", + "console": "integratedTerminal" + }, + { + "name": "Start Test Tool", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/devTools/teamsapptester/node_modules/@microsoft/teams-app-test-tool/cli.js", + "args": [ + "start" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + } ], "compounds": [ - { - "name": "Debug in Teams (Edge)", - "configurations": [ - "Launch App (Edge)", - "Start Python" - ], - "cascadeTerminateToConfigurations": [ - "Start Python" - ], - "preLaunchTask": "Start Teams App Locally", - "presentation": { - "group": "1-local", - "order": 1 - }, - "stopAll": true + { + "name": "Debug in Teams (Edge)", + "configurations": ["Launch App (Edge)", "Start Python"], + "cascadeTerminateToConfigurations": ["Start Python"], + "preLaunchTask": "Start Teams App Locally", + "presentation": { + "group": "1-local", + "order": 1 }, - { - "name": "Debug in Teams (Chrome)", - "configurations": [ - "Launch App (Chrome)", - "Start Python" - ], - "cascadeTerminateToConfigurations": [ - "Start Python" - ], - "preLaunchTask": "Start Teams App Locally", - "presentation": { - "group": "1-local", - "order": 2 - }, - "stopAll": true + "stopAll": true + }, + { + "name": "Debug in Teams (Chrome)", + "configurations": ["Launch App (Chrome)", "Start Python"], + "cascadeTerminateToConfigurations": ["Start Python"], + "preLaunchTask": "Start Teams App Locally", + "presentation": { + "group": "1-local", + "order": 2 }, - { - "name": "Debug in Test Tool", - "configurations": [ - "Start Python", - "Start Test Tool" - ], - "cascadeTerminateToConfigurations": [ - "Start Test Tool" - ], - "preLaunchTask": "Deploy (Test Tool)", - "presentation": { - "group": "2-local", - "order": 1 - }, - "stopAll": true - } + "stopAll": true + }, + { + "name": "Debug in Teams (Desktop)", + "configurations": ["Start Python"], + "preLaunchTask": "Start Teams App in Desktop Client", + "presentation": { + "group": "1-local", + "order": 3 + }, + "stopAll": true + }, + { + "name": "Debug in Test Tool", + "configurations": [ + "Start Python", + "Start Test Tool" + ], + "cascadeTerminateToConfigurations": [ + "Start Test Tool" + ], + "preLaunchTask": "Deploy (Test Tool)", + "presentation": { + "group": "2-local", + "order": 1 + }, + "stopAll": true + } ] } \ No newline at end of file diff --git a/templates/python/custom-copilot-rag-custom-api/.vscode/tasks.json b/templates/python/custom-copilot-rag-custom-api/.vscode/tasks.json index cd77312c80..a964abf89f 100644 --- a/templates/python/custom-copilot-rag-custom-api/.vscode/tasks.json +++ b/templates/python/custom-copilot-rag-custom-api/.vscode/tasks.json @@ -103,6 +103,33 @@ "args": { "env": "local" } + }, + { + "label": "Start Teams App in Desktop Client", + "dependsOn": [ + "Validate prerequisites", + "Start local tunnel", + "Provision", + "Deploy", + "Start desktop client" + ], + "dependsOrder": "sequence" + }, + { + "label": "Start desktop client", + "type": "teamsfx", + "command": "launch-desktop-client", + "args": { + "url": "teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true" + } + }, + { + "label": "Start Teams App in Desktop Client (Remote)", + "type": "teamsfx", + "command": "launch-desktop-client", + "args": { + "url": "teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true" + } } ] } \ No newline at end of file diff --git a/templates/python/custom-copilot-rag-custom-api/infra/azure.bicep.tpl b/templates/python/custom-copilot-rag-custom-api/infra/azure.bicep.tpl index eec896b4d2..f03c1f317f 100644 --- a/templates/python/custom-copilot-rag-custom-api/infra/azure.bicep.tpl +++ b/templates/python/custom-copilot-rag-custom-api/infra/azure.bicep.tpl @@ -59,7 +59,7 @@ resource webApp 'Microsoft.Web/sites@2021-02-01' = { serverFarmId: serverfarm.id siteConfig: { alwaysOn: true - appCommandLine: 'gunicorn --bind 0.0.0.0 --worker-class aiohttp.worker.GunicornWebWorker --timeout 600 app:app' + appCommandLine: 'gunicorn --bind 0.0.0.0 --worker-class aiohttp.worker.GunicornWebWorker --timeout 600 --chdir src app:app' linuxFxVersion: pythonVersion appSettings: [ { diff --git a/templates/python/custom-copilot-rag-custom-api/requirements.txt b/templates/python/custom-copilot-rag-custom-api/requirements.txt new file mode 100644 index 0000000000..708094ab33 --- /dev/null +++ b/templates/python/custom-copilot-rag-custom-api/requirements.txt @@ -0,0 +1,7 @@ +python-dotenv +aiohttp +teams-ai~=1.2.0 +requests~=2.32.3 +pyyaml~=6.0.1 +openapi-pydantic~=0.4.1 +jsonref~=1.1.0 \ No newline at end of file diff --git a/templates/python/custom-copilot-rag-custom-api/src/bot.py.tpl b/templates/python/custom-copilot-rag-custom-api/src/bot.py.tpl index 5df0e52252..1a4f65c002 100644 --- a/templates/python/custom-copilot-rag-custom-api/src/bot.py.tpl +++ b/templates/python/custom-copilot-rag-custom-api/src/bot.py.tpl @@ -7,7 +7,7 @@ from botbuilder.core import MemoryStorage, TurnContext, CardFactory, MessageFact from teams import Application, ApplicationOptions, TeamsAdapter from teams.ai import AIOptions from teams.ai.actions import ActionTurnContext -from teams.ai.models import AzureOpenAIModelOptions, OpenAIModel +from teams.ai.models import AzureOpenAIModelOptions, OpenAIModel, OpenAIModelOptions from teams.ai.planners import ActionPlanner, ActionPlannerOptions from teams.ai.prompts import PromptManager, PromptManagerOptions from teams.state import TurnState @@ -44,7 +44,8 @@ model = OpenAIModel( ) {{/useOpenAI}} -prompts = PromptManager(PromptManagerOptions(prompts_folder=f"{os.getcwd()}/prompts")) +prompts_folder_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "prompts") +prompts = PromptManager(PromptManagerOptions(prompts_folder=f"{prompts_folder_path}")) planner = ActionPlanner( ActionPlannerOptions(model=model, prompts=prompts, default_prompt="chat") diff --git a/templates/python/custom-copilot-rag-custom-api/src/requirements.txt b/templates/python/custom-copilot-rag-custom-api/src/requirements.txt deleted file mode 100644 index caec66633e..0000000000 --- a/templates/python/custom-copilot-rag-custom-api/src/requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -python-dotenv -aiohttp -teams-ai~=1.2.0 -requests~=2.32.3, -pyyaml~=6.0.1, -openapi-pydantic~=0.4.1, -jsonref~=1.1.0 \ No newline at end of file diff --git a/templates/python/custom-copilot-rag-custom-api/teamsapp.yml.tpl b/templates/python/custom-copilot-rag-custom-api/teamsapp.yml.tpl index 49a1c81957..af28fcf93f 100644 --- a/templates/python/custom-copilot-rag-custom-api/teamsapp.yml.tpl +++ b/templates/python/custom-copilot-rag-custom-api/teamsapp.yml.tpl @@ -89,7 +89,7 @@ deploy: - uses: azureAppService/zipDeploy with: # Deploy base folder - artifactFolder: src + artifactFolder: . # Ignore file location, leave blank will ignore nothing ignoreFile: .webappignore # The resource id of the cloud resource to be deployed to. @@ -133,4 +133,4 @@ publish: # Write the information of created resources into environment file for # the specified environment variable(s). writeToEnvironmentFile: - publishedAppId: TEAMS_APP_PUBLISHED_APP_ID \ No newline at end of file + publishedAppId: TEAMS_APP_PUBLISHED_APP_ID diff --git a/templates/ts/api-plugin-from-scratch-bearer/.vscode/launch.json.tpl b/templates/ts/api-plugin-from-scratch-bearer/.vscode/launch.json.tpl index 47affd4f4b..e4e8ee8d31 100644 --- a/templates/ts/api-plugin-from-scratch-bearer/.vscode/launch.json.tpl +++ b/templates/ts/api-plugin-from-scratch-bearer/.vscode/launch.json.tpl @@ -126,7 +126,7 @@ "name": "Launch App in Teams (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -141,7 +141,7 @@ "name": "Launch App in Teams (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -156,7 +156,7 @@ "name": "Preview in Copilot (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 1 @@ -167,7 +167,7 @@ "name": "Preview in Copilot (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 2 diff --git a/templates/ts/api-plugin-from-scratch-bearer/appPackage/repairDeclarativeCopilot.json.tpl b/templates/ts/api-plugin-from-scratch-bearer/appPackage/repairDeclarativeCopilot.json.tpl index 8159ff453a..084a479840 100644 --- a/templates/ts/api-plugin-from-scratch-bearer/appPackage/repairDeclarativeCopilot.json.tpl +++ b/templates/ts/api-plugin-from-scratch-bearer/appPackage/repairDeclarativeCopilot.json.tpl @@ -1,7 +1,7 @@ { "$schema": "https://aka.ms/json-schemas/copilot-extensions/v1.0/declarative-copilot.schema.json", "name": "{{appName}}${{APP_NAME_SUFFIX}}", - "description": "This GPT helps you with finding car repair records.", + "description": "This declarative copilot helps you with finding car repair records.", "instructions": "You will help the user find car repair records assigned to a specific person, the name of the person should be provided by the user. The user will provide the name of the person and you will need to understand the user's intent and provide the car repair records assigned to that person. You can only access and leverage the data from the 'repairPlugin' action.", "conversation_starters": [ { diff --git a/templates/ts/api-plugin-from-scratch-oauth/.vscode/launch.json.tpl b/templates/ts/api-plugin-from-scratch-oauth/.vscode/launch.json.tpl index 6bf771e680..4cc092ce1b 100644 --- a/templates/ts/api-plugin-from-scratch-oauth/.vscode/launch.json.tpl +++ b/templates/ts/api-plugin-from-scratch-oauth/.vscode/launch.json.tpl @@ -126,7 +126,7 @@ "name": "Launch App in Teams (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -141,7 +141,7 @@ "name": "Launch App in Teams (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -156,7 +156,7 @@ "name": "Preview in Copilot (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 1 @@ -167,7 +167,7 @@ "name": "Preview in Copilot (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 2 diff --git a/templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.dev.json b/templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.dev.json.tpl similarity index 97% rename from templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.dev.json rename to templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.dev.json.tpl index 0381f55944..2737eeba05 100644 --- a/templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.dev.json +++ b/templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.dev.json.tpl @@ -2,7 +2,7 @@ "$schema": "https://aka.ms/json-schemas/copilot-extensions/v2.1/plugin.schema.json", "schema_version": "v2.1", "namespace": "repairs", - "name_for_human": "test${{APP_NAME_SUFFIX}}", + "name_for_human": "{{appName}}${{APP_NAME_SUFFIX}}", "description_for_human": "Track your repair records", "description_for_model": "Plugin for searching a repair list, you can search by who's assigned to the repair.", "functions": [ diff --git a/templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.local.json b/templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.local.json.tpl similarity index 97% rename from templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.local.json rename to templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.local.json.tpl index e2d58c34a4..b42248160f 100644 --- a/templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.local.json +++ b/templates/ts/api-plugin-from-scratch-oauth/appPackage/ai-plugin.local.json.tpl @@ -2,7 +2,7 @@ "$schema": "https://aka.ms/json-schemas/copilot-extensions/v2.1/plugin.schema.json", "schema_version": "v2.1", "namespace": "repairs", - "name_for_human": "test${{APP_NAME_SUFFIX}}", + "name_for_human": "{{appName}}${{APP_NAME_SUFFIX}}", "description_for_human": "Track your repair records", "description_for_model": "Plugin for searching a repair list, you can search by who's assigned to the repair.", "functions": [ diff --git a/templates/ts/api-plugin-from-scratch-oauth/appPackage/repairDeclarativeCopilot.json.tpl b/templates/ts/api-plugin-from-scratch-oauth/appPackage/repairDeclarativeCopilot.json.tpl index 126a658833..b9fbb546b0 100644 --- a/templates/ts/api-plugin-from-scratch-oauth/appPackage/repairDeclarativeCopilot.json.tpl +++ b/templates/ts/api-plugin-from-scratch-oauth/appPackage/repairDeclarativeCopilot.json.tpl @@ -1,7 +1,7 @@ { "$schema": "https://aka.ms/json-schemas/copilot-extensions/v1.0/declarative-copilot.schema.json", "name": "{{appName}}${{APP_NAME_SUFFIX}}", - "description": "This GPT helps you with finding car repair records.", + "description": "This declarative copilot helps you with finding car repair records.", "instructions": "You will help the user find car repair records assigned to a specific person, the name of the person should be provided by the user. The user will provide the name of the person and you will need to understand the user's intent and provide the car repair records assigned to that person. You can only access and leverage the data from the 'repairPlugin' action.", "conversation_starters": [ { diff --git a/templates/ts/api-plugin-from-scratch/.vscode/launch.json.tpl b/templates/ts/api-plugin-from-scratch/.vscode/launch.json.tpl index 91500fec19..b97d25bea0 100644 --- a/templates/ts/api-plugin-from-scratch/.vscode/launch.json.tpl +++ b/templates/ts/api-plugin-from-scratch/.vscode/launch.json.tpl @@ -128,7 +128,7 @@ "name": "Launch App in Teams (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -143,7 +143,7 @@ "name": "Launch App in Teams (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -158,7 +158,7 @@ "name": "Preview in Copilot (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 1 @@ -169,7 +169,7 @@ "name": "Preview in Copilot (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 2 diff --git a/templates/ts/api-plugin-from-scratch/appPackage/repairDeclarativeCopilot.json.tpl b/templates/ts/api-plugin-from-scratch/appPackage/repairDeclarativeCopilot.json.tpl index 8159ff453a..084a479840 100644 --- a/templates/ts/api-plugin-from-scratch/appPackage/repairDeclarativeCopilot.json.tpl +++ b/templates/ts/api-plugin-from-scratch/appPackage/repairDeclarativeCopilot.json.tpl @@ -1,7 +1,7 @@ { "$schema": "https://aka.ms/json-schemas/copilot-extensions/v1.0/declarative-copilot.schema.json", "name": "{{appName}}${{APP_NAME_SUFFIX}}", - "description": "This GPT helps you with finding car repair records.", + "description": "This declarative copilot helps you with finding car repair records.", "instructions": "You will help the user find car repair records assigned to a specific person, the name of the person should be provided by the user. The user will provide the name of the person and you will need to understand the user's intent and provide the car repair records assigned to that person. You can only access and leverage the data from the 'repairPlugin' action.", "conversation_starters": [ { diff --git a/templates/ts/copilot-gpt-from-scratch-plugin/.vscode/launch.json b/templates/ts/copilot-gpt-from-scratch-plugin/.vscode/launch.json index 810ea6eb0f..910cce13c4 100644 --- a/templates/ts/copilot-gpt-from-scratch-plugin/.vscode/launch.json +++ b/templates/ts/copilot-gpt-from-scratch-plugin/.vscode/launch.json @@ -5,7 +5,7 @@ "name": "Launch App in Teams (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -20,7 +20,7 @@ "name": "Launch App in Teams (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "cascadeTerminateToConfigurations": [ "Attach to Backend" ], @@ -35,7 +35,7 @@ "name": "Preview in Copilot (Edge)", "type": "msedge", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 1 @@ -46,7 +46,7 @@ "name": "Preview in Copilot (Chrome)", "type": "chrome", "request": "launch", - "url": "https://www.office.com/chat?auth=2&cspoff=1&M365ChatFeatures=immersive-bizchat-avalon-endpoint%2cimmersive-bizchat-sydney-response-unpack-v2%2c-immersive-bizchat-send-conv-id-for-new-chat%2c-immersive-bizchat-handoff-buttons%2c-immersive-bizchat-enable-calendar-handoff%2c-immersive-bizchat-analytics-skill%2cimmersive-bizchat-enable-sydney-verbosity%2c-immersive-bizchat-chat-input-transform-spo-file-url%2cimmersive-bizchat-gpt", + "url": "https://www.office.com/chat?auth=2", "presentation": { "group": "remote", "order": 2