{
  "name": "windows-ai-studio",
  "displayName": "Foundry Toolkit for VS Code",
  "description": "Build AI agents and workflows in Microsoft Foundry, experiment with open or proprietary models.",
  "version": "1.0.1",
  "publisher": "ms-windows-ai-studio",
  "icon": "media/Market_AIToolkit_128.png",
  "author": {
    "name": "Microsoft"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/Microsoft/windows-ai-studio.git"
  },
  "bugs": {
    "url": "https://github.com/Microsoft/windows-ai-studio/issues"
  },
  "license": "SEE LICENSE IN LICENSE.txt",
  "engines": {
    "vscode": "^1.104.0"
  },
  "extensionKind": [
    "workspace"
  ],
  "categories": [
    "AI",
    "Azure",
    "Chat",
    "Data Science",
    "Machine Learning",
    "Other"
  ],
  "extensionDependencies": [
    "ms-azuretools.vscode-azure-mcp-server"
  ],
  "extensionPack": [
    "TeamsDevApp.vscode-ai-foundry"
  ],
  "preview": false,
  "keywords": [
    "AI",
    "Azure",
    "Chat",
    "Data Science",
    "Machine Learning",
    "studio",
    "windows",
    "models",
    "LLM"
  ],
  "activationEvents": [
    "onUri",
    "onStartupFinished",
    "workspaceContains:infra/finetuning.config.json",
    "workspaceContains:infra/inference.config.json",
    "workspaceContains:prompt.aitk.txt",
    "workspaceContains:.aitk/*",
    "workspaceContains:model_lab.workspace.config",
    "workspaceContains:finetuning.workspace.config",
    "onLanguageModelChat:aitk-foundry-local",
    "onLanguageModelChat:aitk-foundry",
    "onLanguageModelChat:aitk-github",
    "onLanguage:python",
    "onLanguage:jsonl"
  ],
  "aiKey": "0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255",
  "main": "./dist/extension.js",
  "l10n": "./l10n",
  "contributes": {
    "configuration": {
      "title": "AI Toolkit",
      "properties": {
        "windowsaistudio.tracingGrpcPort": {
          "type": "integer",
          "default": 4317,
          "description": "The port to use for the OpenTelemetry OTLP gRPC receiver"
        },
        "windowsaistudio.tracingHttpPort": {
          "type": "integer",
          "default": 4318,
          "description": "The port to use for the OpenTelemetry OTLP HTTP receiver"
        },
        "windowsaistudio.enableRemoteFine-tuningAndInference": {
          "type": "boolean",
          "default": false,
          "description": "Enable to run fine-tuning and inference on Azure Container Apps (Reload Visual Studio Code after changing this setting to take effect)."
        },
        "windowsaistudio.templateRef": {
          "type": [
            "string",
            "null"
          ],
          "default": null,
          "description": "Branch to pull from the template repo"
        },
        "windowsaistudio.openAIInferencePort": {
          "type": "integer",
          "default": null,
          "description": "The Open AI inference http local port"
        },
        "windowsaistudio.workspaceAgentPipe": {
          "type": "string",
          "default": null,
          "description": "Workspace Agent Pipe name"
        },
        "windowsaistudio.playgroundAgentPipe": {
          "type": "string",
          "default": null,
          "description": "Playground Agent Pipe name"
        },
        "windowsaistudio.playgroundAgentModelStorage": {
          "type": "string",
          "default": null,
          "description": "Playground Agent model storage path"
        },
        "windowsaistudio.playgroundShowResourceUsage": {
          "type": "boolean",
          "default": true,
          "description": "Show resource usage in Playground"
        },
        "windowsaistudio.enableCudaForResourceUsage": {
          "type": "boolean",
          "default": false,
          "description": "Enable CUDA as GPU resource for 'show resource usage' in Playground and Profiling (Windows ML)",
          "tags": [
            "experimental"
          ]
        },
        "windowsaistudio.remoteInfereneEndpoints": {
          "type": "array",
          "description": "List of remote inference endpoints",
          "items": {
            "type": "object",
            "order": 1,
            "description": "Remote inference endpoint",
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "Custom"
                  },
                  "name": {
                    "type": "string",
                    "description": "Name of the inference endpoint",
                    "examples": [
                      "gpt-4o-mini"
                    ]
                  },
                  "displayName": {
                    "type": "string",
                    "description": "Display Name used in the UI",
                    "examples": [
                      "my-remote-gpt-4o-mini"
                    ]
                  },
                  "chatCompletionUrl": {
                    "type": "string",
                    "description": "The endpoint URL",
                    "examples": [
                      "https://YOUR_RESOURCE_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_ID/chat/completions?api-version=2024-06-01"
                    ]
                  },
                  "headers": {
                    "type": "object",
                    "patternProperties": {
                      "^.*$": {
                        "type": "string"
                      }
                    },
                    "description": "Headers for API key authentication",
                    "additionalProperties": false,
                    "examples": [
                      {
                        "api-key": "******"
                      }
                    ]
                  }
                },
                "additionalProperties": false,
                "default": {
                  "type": "Custom",
                  "name": "<Some name>",
                  "chatCompletionUrl": "https://YOUR_RESOURCE_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_ID/chat/completions?api-version=2024-06-01",
                  "headers": {
                    "api-key": "******"
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "GitHub"
                  },
                  "id": {
                    "type": "string",
                    "description": "Model ID for GitHub model",
                    "examples": [
                      "azureml://registries/azure-openai/models/gpt-4o/versions/2"
                    ]
                  }
                },
                "additionalProperties": false,
                "default": {
                  "type": "GitHub",
                  "name": "gpt-4o-mini"
                }
              }
            ]
          }
        },
        "windowsaistudio.externalOpenAIProviders": {
          "type": "array",
          "description": "List of external providers to register",
          "items": {
            "type": "object",
            "order": 1,
            "description": "External OpenAI provider",
            "properties": {
              "TypeName": {
                "type": "string",
                "description": "Type Name of the external provider"
              },
              "ModelName": {
                "type": "string",
                "description": "Name of the AI model to expose"
              },
              "BaseUri": {
                "type": "string",
                "description": "The Base URI where the external provider receive http requests"
              }
            },
            "additionalProperties": false,
            "default": {
              "TypeName": "Python",
              "ModelName": "<Some model>",
              "BaseUri": "http://localhost:8000"
            }
          },
          "uniqueItems": true
        },
        "windowsaistudio.modelLabAcceptedDatasets": {
          "type": "array",
          "description": "User accepted datasets in Model Lab",
          "items": {
            "type": "string"
          },
          "default": [],
          "uniqueItems": true
        },
        "windowsaistudio.modelLabGlobalCachePath": {
          "type": "string",
          "description": "If set, use this global shared cache instead of per project in Model Lab",
          "default": null,
          "scope": "machine"
        },
        "windowsaistudio.autoCheckFoundrySkill": {
          "type": "boolean",
          "default": true,
          "description": "Automatically install and update the microsoft-foundry skill (to ~/.agents/skills/). If disabled, can use 'AI Toolkit: Install Foundry Skill' command to install manually."
        },
        "windowsaistudio.modelLabGradioPort": {
          "type": "integer",
          "description": "Port number for the Gradio web demo server. Default is 7860.",
          "default": 7860,
          "minimum": 1,
          "maximum": 65535
        }
      }
    },
    "taskDefinitions": [
      {
        "type": "aitk",
        "required": [
          "command"
        ],
        "properties": {
          "command": {
            "type": "string",
            "description": "The AITK command to execute"
          },
          "args": {
            "type": "object",
            "description": "Arguments for the command"
          }
        }
      }
    ],
    "viewsContainers": {
      "activitybar": [
        {
          "id": "ai-toolkit-explorer",
          "title": "AI Toolkit",
          "icon": "media/AIToolkit.svg"
        }
      ]
    },
    "views": {
      "test": [
        {
          "id": "ai-mlstudio.view.evaluation",
          "name": "AI Toolkit"
        }
      ],
      "ai-toolkit-explorer": [
        {
          "id": "aiToolkitRemoteResources",
          "name": "My Resources",
          "icon": "media/AIToolkit.svg",
          "contextualTitle": "My Resources"
        },
        {
          "id": "aiToolkitUserTools",
          "name": "Developer Tools",
          "icon": "media/AIToolkit.svg",
          "contextualTitle": "Developer Tools"
        },
        {
          "id": "aiToolkitHelpAndFeedback",
          "name": "Help and Feedback",
          "icon": "media/AIToolkit.svg",
          "contextualTitle": "Help and Feedback"
        }
      ]
    },
    "submenus": [
      {
        "id": "ai-mlstudio.viewModeSubmenu",
        "label": "%ai-mlstudio.viewModeSubmenu.label%",
        "icon": "$(arrow-swap)"
      },
      {
        "id": "ai-mlstudio.recentAgentsAddSubmenu",
        "label": "%ai-mlstudio.recentAgentsAddSubmenu.label%",
        "icon": "$(add)"
      }
    ],
    "menus": {
      "view/item/context": [
        {
          "command": "ai-mlstudio.command.submitEvaluation",
          "when": "view == ai-mlstudio.view.evaluation && viewItem == agent",
          "group": "inline"
        },
        {
          "command": "ai-mlstudio.evaluation.generateTestCases",
          "when": "view == ai-mlstudio.view.evaluation && viewItem == evaluationGroup",
          "group": "inline"
        },
        {
          "command": "ai-mlstudio.evaluation.openDataset",
          "when": "view == ai-mlstudio.view.evaluation && viewItem == evaluationGroup",
          "group": "inline"
        },
        {
          "command": "ai-mlstudio.evaluation.downloadRemoteResult",
          "when": "view == ai-mlstudio.view.evaluation && viewItem == remoteEvaluationResult",
          "group": "inline"
        },
        {
          "command": "ai-mlstudio.evaluation.refreshRemoteResults",
          "when": "view == ai-mlstudio.view.evaluation && viewItem == evaluationResultsRemote",
          "group": "inline"
        },
        {
          "command": "ai-mlstudio.evaluation.refreshAgentEvals",
          "when": "view == ai-mlstudio.view.evaluation && viewItem == remoteAgent",
          "group": "inline"
        },
        {
          "command": "ai-mlstudio.treeView.models.loadInPlayground",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<loadInPlayground>/",
          "group": "1-model-action@1"
        },
        {
          "command": "ai-mlstudio.treeView.models.loadInAgentBuilder",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<loadInAgentBuilder>/",
          "group": "1-model-action@2"
        },
        {
          "command": "ai-mlstudio.treeView.models.createFineTuneProject",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<createFineTuneProject>/",
          "group": "1-model-action@3"
        },
        {
          "command": "ai-mlstudio.treeView.models.copyModelName",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<copyModelName>/",
          "group": "2-model-management@1"
        },
        {
          "command": "ai-mlstudio.treeView.models.edit",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<edit>/",
          "group": "2-model-management@2"
        },
        {
          "command": "ai-mlstudio.treeView.models.refresh",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<refresh>/",
          "group": "2-model-management@3"
        },
        {
          "command": "ai-mlstudio.treeView.models.delete",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<delete>/",
          "group": "2-model-management@4"
        },
        {
          "command": "ai-mlstudio.treeView.models.cancelDownloading",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<cancelDownloading>/",
          "group": "2-model-management@5"
        },
        {
          "command": "ai-mlstudio.treeView.models.about",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<about>/",
          "group": "3-model-about@1"
        },
        {
          "command": "ai-mlstudio.treeView.models.startServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && (viewItem == ONNX || viewItem == 'Foundry Local' || viewItem == 'Microsoft Foundry on Windows')",
          "group": "1-endpoint-management@1"
        },
        {
          "command": "ai-mlstudio.treeView.models.stopServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && (viewItem == ONNX || viewItem == 'Foundry Local' || viewItem == 'Microsoft Foundry on Windows')",
          "group": "1-endpoint-management@2"
        },
        {
          "command": "ai-mlstudio.treeView.models.copyEndpoint",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && (viewItem == ONNX || viewItem == 'Foundry Local' || viewItem == 'Microsoft Foundry on Windows')",
          "group": "1-endpoint-management@3"
        },
        {
          "command": "ai-mlstudio.treeView.models.foundry.selectProject",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == 'Microsoft Foundry'",
          "group": "1-foundry-management@1"
        },
        {
          "command": "ai-mlstudio.treeView.models.foundry.selectProject",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == 'Microsoft Foundry'",
          "group": "inline@1"
        },
        {
          "command": "ai-mlstudio.treeView.models.refresh",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == 'Microsoft Foundry'",
          "group": "inline@2"
        },
        {
          "command": "ai-mlstudio.treeView.models.foundry.selectProject",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == foundry-root",
          "group": "inline@1"
        },
        {
          "command": "ai-mlstudio.treeView.models.refresh",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == foundry-root",
          "group": "inline@2"
        },
        {
          "command": "ai-mlstudio.treeView.models.addRemoteInferenceEndpoint",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == my-models-root",
          "group": "inline@1"
        },
        {
          "command": "ai-mlstudio.treeView.models.remoteInferenceInPlaygroundDocs",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == my-models-root",
          "group": "inline@2"
        },
        {
          "command": "ai-mlstudio.treeView.agents.designWithBuilder",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == my-agents-root",
          "group": "inline"
        },
        {
          "submenu": "ai-mlstudio.recentAgentsAddSubmenu",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == recent-agents-root",
          "group": "inline"
        },
        {
          "command": "ai-mlstudio.recentAgents.designWithBuilder",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /^recent-agent-(local|prompt)$/",
          "group": "inline"
        },
        {
          "command": "ai-mlstudio.recentAgents.createInCode",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == recent-agent-hosted",
          "group": "inline"
        },
        {
          "command": "ai-mlstudio.treeView.agents.refreshLocalAgents",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == local-agents-category",
          "group": "inline"
        },
        {
          "command": "ai-mlstudio.treeView.models.foundry.selectProject",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == foundry-agents-category",
          "group": "inline@1"
        },
        {
          "command": "ai-mlstudio.treeView.agents.refreshFoundryAgents",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == foundry-agents-category",
          "group": "inline@2"
        },
        {
          "command": "ai-mlstudio.mcp.addServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == local-mcp-servers-category",
          "group": "inline@1"
        },
        {
          "command": "ai-mlstudio.mcp.editConfiguration",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == local-mcp-servers-category",
          "group": "inline@2"
        },
        {
          "command": "ai-mlstudio.mcp.createNewServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == local-mcp-servers-category",
          "group": "inline@3"
        },
        {
          "command": "ai-mlstudio.mcp.openDocumentation",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == local-mcp-servers-category",
          "group": "inline@4"
        },
        {
          "command": "ai-mlstudio.mcp.refreshServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == local-mcp-servers-category",
          "group": "inline@5"
        },
        {
          "command": "ai-mlstudio.mcp.addServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == mcp-servers-root-local",
          "group": "inline@1"
        },
        {
          "command": "ai-mlstudio.mcp.configureFoundryServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /^mcp-servers-root(-remote)?$/",
          "group": "inline@1"
        },
        {
          "command": "ai-mlstudio.treeView.models.foundry.selectProject",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == foundry-mcp-servers-category",
          "group": "inline@1"
        },
        {
          "command": "ai-mlstudio.mcp.configureFoundryServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == foundry-mcp-servers-category",
          "group": "inline@2"
        },
        {
          "command": "ai-mlstudio.mcp.refreshServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == foundry-mcp-servers-category",
          "group": "inline@3"
        },
        {
          "command": "ai-mlstudio.treeView.agents.renameAgent",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<renameAgent>/",
          "group": "2-agent-management@1"
        },
        {
          "command": "ai-mlstudio.treeView.agents.deleteAgent",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<deleteAgent>/",
          "group": "2-agent-management@2"
        },
        {
          "command": "ai-mlstudio.treeView.agents.renameAgentVersion",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<renameAgentVersion>/",
          "group": "2-version-management@1"
        },
        {
          "command": "ai-mlstudio.treeView.agents.deleteAgentVersion",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /<deleteAgentVersion>/",
          "group": "2-version-management@2"
        },
        {
          "command": "ai-mlstudio.mcp.startServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == mcp-server-item-disconnected",
          "group": "2-mcp-management@1"
        },
        {
          "command": "ai-mlstudio.mcp.stopServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == mcp-server-item-connected",
          "group": "2-mcp-management@1"
        },
        {
          "command": "ai-mlstudio.mcp.cancelServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == mcp-server-item-connecting",
          "group": "2-mcp-management@1"
        },
        {
          "command": "ai-mlstudio.mcp.refreshServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /^mcp-server-item/",
          "group": "2-mcp-management@2"
        },
        {
          "command": "ai-mlstudio.mcp.connectToAgent",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /^mcp-server-item/",
          "group": "1-mcp-action@1"
        },
        {
          "command": "ai-mlstudio.mcp.editFoundryServer",
          "when": "false",
          "group": "2-mcp-management@0"
        },
        {
          "command": "ai-mlstudio.mcp.editConfiguration",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /^mcp-server-item/",
          "group": "3-mcp-configuration@1"
        },
        {
          "command": "ai-mlstudio.mcp.removeServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem =~ /^mcp-server-item/",
          "group": "3-mcp-configuration@2"
        },
        {
          "command": "ai-mlstudio.mcp.removeFoundryServer",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == foundry-mcp-server-item",
          "group": "2-mcp-management@1"
        },
        {
          "command": "ai-mlstudio.mcp.removeAzureAISearchConnection",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == azure-ai-search-connection-item",
          "group": "2-mcp-management@1"
        },
        {
          "command": "ai-mlstudio.mcp.removeBingConnection",
          "when": "view =~ /^aiToolkit(Local|Remote)Resources$/ && viewItem == bing-connection-item",
          "group": "2-mcp-management@1"
        }
      ],
      "explorer/context": [
        {
          "command": "ai-mlstudio.openDataset",
          "when": "false",
          "group": "navigation"
        },
        {
          "command": "ai-mlstudio.openDataViewer",
          "when": "resourceExtname == .csv || resourceExtname == .jsonl || resourceExtname == .json",
          "group": "navigation"
        }
      ],
      "editor/title/context": [
        {
          "command": "ai-mlstudio.openDataViewer",
          "when": "resourceExtname == .csv || resourceExtname == .jsonl || resourceExtname == .json",
          "group": "navigation"
        }
      ],
      "view/title": [
        {
          "submenu": "ai-mlstudio.viewModeSubmenu",
          "when": "view == aiToolkitUserTools",
          "group": "navigation"
        }
      ],
      "ai-mlstudio.viewModeSubmenu": [
        {
          "command": "ai-mlstudio.switchToLifecycleMode.active",
          "group": "viewMode@1",
          "when": "aiToolkit.devToolsMode == lifecycle"
        },
        {
          "command": "ai-mlstudio.switchToLifecycleMode",
          "group": "viewMode@1",
          "when": "aiToolkit.devToolsMode != lifecycle"
        },
        {
          "command": "ai-mlstudio.switchToFunctionalMode.active",
          "group": "viewMode@2",
          "when": "aiToolkit.devToolsMode == functional"
        },
        {
          "command": "ai-mlstudio.switchToFunctionalMode",
          "group": "viewMode@2",
          "when": "aiToolkit.devToolsMode != functional"
        }
      ],
      "ai-mlstudio.recentAgentsAddSubmenu": [
        {
          "command": "ai-mlstudio.recentAgents.createInCode",
          "group": "1_recentAgents@1"
        },
        {
          "command": "ai-mlstudio.recentAgents.designWithBuilder",
          "group": "1_recentAgents@2"
        }
      ],
      "commandPalette": [
        {
          "command": "ai-mlstudio.switchTreeViewMode",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.switchToFunctionalMode",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.switchToFunctionalMode.active",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.switchToLifecycleMode",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.switchToLifecycleMode.active",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.refresh",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.loadInPlayground",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.createFineTuneProject",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.loadInAgentBuilder",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.addRemoteInferenceEndpoint",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.foundry.selectProject",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.edit",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.delete",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.cancelDownloading",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.about",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.click",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.startServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.stopServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.copyEndpoint",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.agents.renameAgent",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.agents.deleteAgent",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.agents.renameAgentVersion",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.agents.deleteAgentVersion",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.setupAIModel",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.deleteInferenceModel",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.copyGHAccessToken",
          "when": "false"
        },
        {
          "command": "_ai-mlstudio.comingSoon",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.addRemoteInferenceEndpoint",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.models.remoteInferenceInPlaygroundDocs",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.promptBuilder",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.agentBuilder",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.createNewAgent",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.agents.designWithBuilder",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.recentAgents.createInCode",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.recentAgents.designWithBuilder",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.agents.refreshLocalAgents",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.agents.refreshFoundryAgents",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.addServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.editConfiguration",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.editFoundryServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.createNewServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.addStdioServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.addHttpServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.openDocumentation",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.connectToAgent",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.refreshServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.stopServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.startServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.cancelServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.removeServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.configureFoundryServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.removeFoundryServer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.removeAzureAISearchConnection",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.mcp.removeBingConnection",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.openDataset",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.treeView.evaluation.openInDataViewer",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.evaluation.downloadRemoteResult",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.evaluation.refreshRemoteResults",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.evaluation.refreshAgentEvals",
          "when": "false"
        },
        {
          "command": "ai-mlstudio.askCopilot",
          "when": "false"
        }
      ]
    },
    "customEditors": [
      {
        "viewType": "ai-mlstudio.dataEditor",
        "displayName": "Data Viewer",
        "selector": [
          {
            "filenamePattern": "*.csv"
          },
          {
            "filenamePattern": "*.jsonl"
          }
        ],
        "priority": "option"
      }
    ],
    "viewsWelcome": [
      {
        "view": "aiToolkitRemoteResources",
        "contents": "Get started with AI Toolkit: explore models or quickly build and test agents.\nStart your exploration by [adding a model from catalog](https://aka.ms/AIToolkit/doc/models). You can start free with GitHub hosted model.\n[Start with a FREE model on GitHub](command:ai-mlstudio.models?%7B%22initialProviderFilter%22%3A%20%22GitHub%22%7D)\nPrefer to start building? Create your agent today.\n[Create an Agent](command:ai-mlstudio.createNewAgent)\nConnect to Microsoft Foundry to access enterprise-ready models and agents.\n[Use Enterprise Ready Model on Microsoft Foundry](command:ai-mlstudio.models?%7B%22initialProviderFilter%22%3A%20%22Microsoft%20Foundry%22%7D)\nVisit [AI Toolkit documentation](http://aka.ms/aitoolkit/docs) for more features."
      }
    ],
    "commands": [
      {
        "command": "ai-mlstudio.command.submitEvaluation",
        "title": "Submit Evaluation to Microsoft Foundry",
        "category": "AI Toolkit",
        "icon": "$(cloud-upload)"
      },
      {
        "command": "ai-mlstudio.evaluation.generateTestCases",
        "title": "Generate Test Cases with Copilot",
        "category": "AI Toolkit",
        "icon": "$(sparkle)"
      },
      {
        "command": "ai-mlstudio.evaluation.openDataset",
        "title": "Open Dataset",
        "category": "AI Toolkit",
        "icon": "$(go-to-file)"
      },
      {
        "command": "ai-mlstudio.treeView.evaluation.openInDataViewer",
        "title": "Open in Data Viewer",
        "category": "AI Toolkit",
        "icon": "$(table)"
      },
      {
        "command": "ai-mlstudio.evaluation.downloadRemoteResult",
        "title": "Download Evaluation Result",
        "category": "AI Toolkit",
        "icon": "$(cloud-download)"
      },
      {
        "command": "ai-mlstudio.evaluation.refreshRemoteResults",
        "title": "Refresh Remote Evaluations",
        "category": "AI Toolkit",
        "icon": "$(refresh)"
      },
      {
        "command": "ai-mlstudio.evaluation.refreshAgentEvals",
        "title": "Refresh Agent Evaluations",
        "category": "AI Toolkit",
        "icon": "$(refresh)"
      },
      {
        "command": "ai-mlstudio.evaluation.analyzeResults",
        "title": "Analyze Evaluation Results",
        "category": "AI Toolkit",
        "icon": "$(graph)"
      },
      {
        "command": "ai-mlstudio.openDataViewer",
        "title": "Open in Data Viewer",
        "icon": "$(table)"
      },
      {
        "command": "ai-mlstudio.treeView.models.refresh",
        "title": "%command.ai-mlstudio.models.refresh.title%",
        "icon": "$(refresh)"
      },
      {
        "command": "ai-mlstudio.treeView.models.loadInPlayground",
        "title": "%command.ai-mlstudio.models.loadInPlayground.title%",
        "enablement": "!ai-mlstudio.modelLoading"
      },
      {
        "command": "ai-mlstudio.treeView.models.copyModelName",
        "title": "%command.ai-mlstudio.models.copyModelName.title%"
      },
      {
        "command": "ai-mlstudio.treeView.models.createFineTuneProject",
        "title": "%command.ai-mlstudio.models.createFineTuneProject.title%"
      },
      {
        "command": "ai-mlstudio.treeView.models.loadInAgentBuilder",
        "title": "%command.ai-mlstudio.models.loadInAgentBuilder.title%",
        "enablement": "!ai-mlstudio.modelLoading"
      },
      {
        "command": "ai-mlstudio.treeView.models.addRemoteInferenceEndpoint",
        "title": "%command.ai-mlstudio.treeView.models.addRemoteInferenceEndpoint.title%",
        "icon": "$(add)"
      },
      {
        "command": "ai-mlstudio.treeView.models.remoteInferenceInPlaygroundDocs",
        "title": "%command.ai-mlstudio.treeView.models.remoteInferenceInPlaygroundDocs.title%",
        "icon": "$(info)"
      },
      {
        "command": "ai-mlstudio.treeView.models.edit",
        "title": "%command.ai-mlstudio.treeView.models.edit.title%",
        "enablement": "!ai-mlstudio.modelLoading"
      },
      {
        "command": "ai-mlstudio.treeView.models.delete",
        "title": "%command.ai-mlstudio.treeView.models.delete.title%",
        "enablement": "!ai-mlstudio.modelLoading"
      },
      {
        "command": "ai-mlstudio.treeView.models.cancelDownloading",
        "title": "%command.ai-mlstudio.treeView.models.cancelDownloading.title%",
        "enablement": "!ai-mlstudio.modelLoading"
      },
      {
        "command": "ai-mlstudio.treeView.models.about",
        "title": "%command.ai-mlstudio.treeView.models.about.title%"
      },
      {
        "command": "ai-mlstudio.treeView.models.click",
        "title": "%command.ai-mlstudio.treeView.models.click.title%"
      },
      {
        "command": "ai-mlstudio.treeView.models.startServer",
        "title": "%command.ai-mlstudio.treeView.models.startServer.title%"
      },
      {
        "command": "ai-mlstudio.treeView.models.stopServer",
        "title": "%command.ai-mlstudio.treeView.models.stopServer.title%"
      },
      {
        "command": "ai-mlstudio.treeView.models.copyEndpoint",
        "title": "%command.ai-mlstudio.treeView.models.copyEndpoint.title%"
      },
      {
        "command": "ai-mlstudio.treeView.models.foundry.selectProject",
        "title": "%command.ai-mlstudio.treeView.models.foundry.selectProject.title%",
        "icon": "$(list-filter)"
      },
      {
        "command": "ai-mlstudio.commandPalette.addRemoteInferenceEndpoint",
        "title": "%command.ai-mlstudio.commandPalette.addRemoteInferenceEndpoint.title%"
      },
      {
        "command": "ai-mlstudio.addRemoteInferenceEndpoint",
        "title": "%command.ai-mlstudio.commandPalette.addRemoteInferenceEndpoint.title%"
      },
      {
        "command": "ai-mlstudio.treeView.agents.renameAgent",
        "title": "%command.ai-mlstudio.treeView.agents.renameAgent.title%"
      },
      {
        "command": "ai-mlstudio.treeView.agents.deleteAgent",
        "title": "%command.ai-mlstudio.treeView.agents.deleteAgent.title%"
      },
      {
        "command": "ai-mlstudio.treeView.agents.renameAgentVersion",
        "title": "%command.ai-mlstudio.treeView.agents.renameAgentVersion.title%"
      },
      {
        "command": "ai-mlstudio.treeView.agents.deleteAgentVersion",
        "title": "%command.ai-mlstudio.treeView.agents.deleteAgentVersion.title%"
      },
      {
        "command": "ai-mlstudio.treeView.agents.refreshLocalAgents",
        "title": "%command.ai-mlstudio.treeView.agents.refreshLocalAgents.title%",
        "icon": "$(refresh)"
      },
      {
        "command": "ai-mlstudio.treeView.agents.refreshFoundryAgents",
        "title": "%command.ai-mlstudio.treeView.agents.refreshFoundryAgents.title%",
        "icon": "$(refresh)"
      },
      {
        "command": "ai-mlstudio.setupAIModel",
        "title": "Setup",
        "icon": {
          "light": "resources/light/edit.svg",
          "dark": "resources/dark/edit.svg"
        }
      },
      {
        "command": "ai-mlstudio.setHFAccessToken",
        "title": "%command.ai-mlstudio.setHFAccessToken.title%"
      },
      {
        "command": "ai-mlstudio.setGHAccessToken",
        "title": "%command.ai-mlstudio.setGHAccessToken.title%"
      },
      {
        "command": "ai-mlstudio.copyGHAccessToken",
        "title": "%command.ai-mlstudio.copyGHAccessToken.title%"
      },
      {
        "command": "ai-mlstudio.resetAllTokens",
        "title": "%command.ai-mlstudio.resetAllTokens.title%"
      },
      {
        "command": "ai-mlstudio.showWhatsNew",
        "title": "%command.ai-mlstudio.showWhatsNew.title%"
      },
      {
        "command": "ai-mlstudio.joinCommunity",
        "title": "%command.ai-mlstudio.joinCommunity.title%"
      },
      {
        "command": "ai-mlstudio.askCopilot",
        "title": "%command.ai-mlstudio.askCopilot.title%"
      },
      {
        "command": "ai-mlstudio.prepareEnvironment",
        "title": "%command.ai-mlstudio.prepareEnvironment.title%"
      },
      {
        "command": "_ai-mlstudio.comingSoon",
        "title": "%command.ai-mlstudio.comingSoon.title%"
      },
      {
        "command": "_ai-mlstudio.validateRequirements",
        "title": "%command.ai-mlstudio.validateRequirements.title%"
      },
      {
        "command": "ai-mlstudio.provision",
        "title": "%command.ai-mlstudio.provision.title%",
        "enablement": "ai-mlstudio.enableRemote"
      },
      {
        "command": "ai-mlstudio.run",
        "title": "%command.ai-mlstudio.run.title%",
        "enablement": "ai-mlstudio.enableRemote"
      },
      {
        "command": "ai-mlstudio.provisionInference",
        "title": "%command.ai-mlstudio.provisionInference.title%",
        "enablement": "ai-mlstudio.enableRemote"
      },
      {
        "command": "ai-mlstudio.deployInference",
        "title": "%command.ai-mlstudio.deployInference.title%",
        "enablement": "ai-mlstudio.enableRemote"
      },
      {
        "command": "ai-mlstudio.downloadInferenceModel",
        "title": "%command.ai-mlstudio.downloadInferenceModel.title%"
      },
      {
        "command": "ai-mlstudio.deleteInferenceModel",
        "title": "%command.ai-mlstudio.deleteInferenceModel.title%"
      },
      {
        "command": "ai-mlstudio.unloadInferenceModel",
        "title": "%command.ai-mlstudio.unloadInferenceModel.title%"
      },
      {
        "command": "ai-mlstudio.shutdownInferenceAgent",
        "title": "%command.ai-mlstudio.shutdownInferenceAgent.title%"
      },
      {
        "command": "ai-mlstudio.installCudaWslLinux",
        "title": "%command.ai-mlstudio.installCudaWslLinux.title%"
      },
      {
        "command": "ai-mlstudio.installCondaWslLinux",
        "title": "%command.ai-mlstudio.installCondaWslLinux.title%"
      },
      {
        "command": "ai-mlstudio.showOutputChannel",
        "title": "%command.ai-mlstudio.showOutputChannel.title%"
      },
      {
        "command": "ai-mlstudio.streamingLog",
        "title": "%command.ai-mlstudio.streamingLog.title%",
        "enablement": "ai-mlstudio.enableRemote"
      },
      {
        "command": "ai-mlstudio.editSecret",
        "title": "%command.ai-mlstudio.editSecret.title%",
        "enablement": "ai-mlstudio.enableRemote"
      },
      {
        "command": "ai-mlstudio.models",
        "title": "%command.ai-mlstudio.models.title%",
        "icon": "$(library)"
      },
      {
        "command": "ai-mlstudio.toolCatalog",
        "title": "%command.ai-mlstudio.toolCatalog.title%",
        "icon": "$(tools)"
      },
      {
        "command": "ai-mlstudio.tutorials",
        "title": "%command.ai-mlstudio.tutorials.title%",
        "icon": "$(folder-library)"
      },
      {
        "command": "ai-mlstudio.modelPlayground",
        "title": "%command.ai-mlstudio.modelPlayground.title%"
      },
      {
        "command": "ai-mlstudio.openTestTool",
        "title": "%command.ai-mlstudio.openTestTool.title%",
        "icon": "$(code)"
      },
      {
        "command": "ai-mlstudio.modelComparison",
        "title": "%command.ai-mlstudio.modelComparison.title%"
      },
      {
        "command": "ai-mlstudio.promptBuilder",
        "title": "AI Toolkit: Open Agent Builder"
      },
      {
        "command": "ai-mlstudio.agentBuilder",
        "title": "%command.ai-mlstudio.agentBuilder.title%"
      },
      {
        "command": "ai-mlstudio.createNewAgent",
        "title": "%command.ai-mlstudio.createNewAgent.title%",
        "icon": "$(add)"
      },
      {
        "command": "ai-mlstudio.treeView.agents.designWithBuilder",
        "title": "%command.ai-mlstudio.treeView.agents.designWithBuilder.title%",
        "icon": "$(add)"
      },
      {
        "command": "ai-mlstudio.recentAgents.createInCode",
        "title": "%command.ai-mlstudio.recentAgents.createInCode.title%",
        "icon": "$(add)"
      },
      {
        "command": "ai-mlstudio.recentAgents.designWithBuilder",
        "title": "%command.ai-mlstudio.recentAgents.designWithBuilder.title%",
        "icon": "$(add)"
      },
      {
        "command": "ai-mlstudio.openDataset",
        "title": "%command.ai-mlstudio.openDataset.title%",
        "enablement": "false"
      },
      {
        "command": "ai-mlstudio.encryptCustomModelValue",
        "title": "AI Toolkit: Encrypt a value for custom model",
        "enablement": "false"
      },
      {
        "command": "ai-mlstudio.test.happyPath",
        "title": "AI Toolkit: A Test Command",
        "enablement": "false"
      },
      {
        "command": "ai-mlstudio.installFoundrySkill",
        "title": "%command.ai-mlstudio.installFoundrySkill.title%"
      },
      {
        "command": "ai-mlstudio.mcp.addServer",
        "title": "%command.ai-mlstudio.mcp.addServer.title%",
        "icon": "$(add)"
      },
      {
        "command": "ai-mlstudio.mcp.addStdioServer",
        "title": "%command.ai-mlstudio.mcp.addStdioServer.title%",
        "icon": "$(tools)"
      },
      {
        "command": "ai-mlstudio.mcp.addHttpServer",
        "title": "%command.ai-mlstudio.mcp.addHttpServer.title%",
        "icon": "$(cloud)"
      },
      {
        "command": "ai-mlstudio.mcp.editConfiguration",
        "title": "%command.ai-mlstudio.mcp.editConfiguration.title%",
        "icon": "$(symbol-module)"
      },
      {
        "command": "ai-mlstudio.mcp.editFoundryServer",
        "title": "%command.ai-mlstudio.mcp.editFoundryServer.title%",
        "icon": "$(edit)"
      },
      {
        "command": "ai-mlstudio.mcp.createNewServer",
        "title": "%command.ai-mlstudio.mcp.createNewServer.title%",
        "icon": "$(empty-window)"
      },
      {
        "command": "ai-mlstudio.mcp.startServer",
        "title": "%command.ai-mlstudio.mcp.startServer.title%"
      },
      {
        "command": "ai-mlstudio.mcp.stopServer",
        "title": "%command.ai-mlstudio.mcp.stopServer.title%"
      },
      {
        "command": "ai-mlstudio.mcp.cancelServer",
        "title": "%command.ai-mlstudio.mcp.cancelServer.title%"
      },
      {
        "command": "ai-mlstudio.mcp.refreshServer",
        "title": "%command.ai-mlstudio.mcp.refreshServer.title%",
        "icon": "$(refresh)"
      },
      {
        "command": "ai-mlstudio.mcp.openDocumentation",
        "title": "%command.ai-mlstudio.mcp.openDocumentation.title%",
        "icon": "$(book)"
      },
      {
        "command": "ai-mlstudio.mcp.connectToAgent",
        "title": "%command.ai-mlstudio.mcp.connectToAgent.title%",
        "icon": "$(add)"
      },
      {
        "command": "ai-mlstudio.mcp.removeServer",
        "title": "%command.ai-mlstudio.mcp.removeServer.title%"
      },
      {
        "command": "ai-mlstudio.mcp.configureFoundryServer",
        "title": "%command.ai-mlstudio.mcp.configureFoundryServer.title%",
        "icon": "$(add)"
      },
      {
        "command": "ai-mlstudio.mcp.removeFoundryServer",
        "title": "%command.ai-mlstudio.mcp.removeFoundryServer.title%"
      },
      {
        "command": "ai-mlstudio.mcp.removeAzureAISearchConnection",
        "title": "%command.ai-mlstudio.mcp.removeAzureAISearchConnection.title%"
      },
      {
        "command": "ai-mlstudio.mcp.removeBingConnection",
        "title": "%command.ai-mlstudio.mcp.removeBingConnection.title%"
      },
      {
        "command": "ai-mlstudio.tracing.startCollector",
        "title": "%command.ai-mlstudio.tracing.startCollector.title%",
        "enablement": "aiToolkit.tracingSupported"
      },
      {
        "command": "ai-mlstudio.tracing.stopCollector",
        "title": "%command.ai-mlstudio.tracing.stopCollector.title%",
        "enablement": "aiToolkit.tracingSupported"
      },
      {
        "command": "ai-mlstudio.tracing.showStatus",
        "title": "%command.ai-mlstudio.tracing.showStatus.title%",
        "enablement": "aiToolkit.tracingSupported"
      },
      {
        "command": "ai-mlstudio.tracing.open",
        "title": "%command.ai-mlstudio.tracing.open.title%",
        "enablement": "aiToolkit.tracingSupported"
      },
      {
        "command": "ai-mlstudio.tracing.openFoundryTrace",
        "title": "%command.ai-mlstudio.tracing.openFoundryTrace.title%"
      },
      {
        "command": "ai-mlstudio.triggerFoundryModelDeployment",
        "title": "AI Toolkit: Trigger Foundry Model Deployment"
      },
      {
        "command": "ai-mlstudio.modelLab.generationCompleted",
        "title": "%command.ai-mlstudio.modelLab.generationCompleted.title%"
      },
      {
        "command": "ai-mlstudio.switchTreeViewMode",
        "title": "%command.ai-mlstudio.switchTreeViewMode.title%",
        "icon": "$(arrow-swap)"
      },
      {
        "command": "ai-mlstudio.setTreeViewMode",
        "title": "%command.ai-mlstudio.setTreeViewMode.title%"
      },
      {
        "command": "ai-mlstudio.switchToFunctionalMode",
        "title": "%command.ai-mlstudio.switchToFunctionalMode.title%",
        "icon": "$(arrow-swap)"
      },
      {
        "command": "ai-mlstudio.switchToLifecycleMode",
        "title": "%command.ai-mlstudio.switchToLifecycleMode.title%",
        "icon": "$(arrow-swap)"
      },
      {
        "command": "ai-mlstudio.switchToFunctionalMode.active",
        "title": "%command.ai-mlstudio.switchToFunctionalMode.active.title%",
        "icon": "$(arrow-swap)"
      },
      {
        "command": "ai-mlstudio.switchToLifecycleMode.active",
        "title": "%command.ai-mlstudio.switchToLifecycleMode.active.title%",
        "icon": "$(arrow-swap)"
      }
    ],
    "walkthroughs": [
      {
        "id": "aiToolkitGetStarted",
        "title": "%command.ai-mlstudio.walkthrough.title%",
        "description": "%command.ai-mlstudio.walkthrough.description%",
        "steps": [
          {
            "id": "aiToolkitExplore",
            "title": "%command.ai-mlstudio.walkthrough.Explore.title%",
            "description": "%command.ai-mlstudio.walkthrough.Explore.description%",
            "media": {
              "image": {
                "dark": "resources/walkthrough/s3_models_dark.svg",
                "light": "resources/walkthrough/s3_models_light.svg",
                "hc": "resources/walkthrough/s3_models_dark.svg"
              },
              "altText": "%command.ai-mlstudio.walkthrough.Explore.title%"
            }
          },
          {
            "id": "aiToolkitTryPlayground",
            "title": "%command.ai-mlstudio.walkthrough.tryPlayground.title%",
            "description": "%command.ai-mlstudio.walkthrough.tryPlayground.description%",
            "media": {
              "image": {
                "dark": "resources/walkthrough/s2_agent_dark.svg",
                "light": "resources/walkthrough/s2_agent_light.svg",
                "hc": "resources/walkthrough/s2_agent_dark.svg"
              },
              "altText": "%command.ai-mlstudio.walkthrough.tryPlayground.title%"
            }
          },
          {
            "id": "aiToolkitDownloadModel",
            "title": "%command.ai-mlstudio.walkthrough.downloadModel.title%",
            "description": "%command.ai-mlstudio.walkthrough.downloadModel.description%",
            "media": {
              "svg": "resources/walkthrough/s1_setup_new.svg",
              "altText": "%command.ai-mlstudio.walkthrough.downloadModel.title%"
            }
          }
        ]
      }
    ],
    "languageModelTools": [
      {
        "name": "aitk-get_agent_code_gen_best_practices",
        "displayName": "%languageModelTool.ai-mlstudio.getAgentCodeGenBestPractices.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.getAgentCodeGenBestPractices.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.getAgentCodeGenBestPractices.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_get_agent_code_gen_best_practices",
        "inputSchema": {
          "type": "object",
          "properties": {
            "requiredHost": {
              "type": "string",
              "description": "The explicitly required host for the model or agent. DO NOT provide if not determined or just guess. 'GitHub' means to use GitHub-hosted models. 'Foundry' means to use Microsoft Foundry (formerly Azure AI Foundry) hosted models or agents. 'other' means none of above.",
              "enum": [
                "GitHub",
                "Foundry",
                "other"
              ]
            },
            "moreIntent": {
              "type": "string",
              "description": "Additional intent of app development, e.g. 'create hello world agent', 'connect to my tools', 'make app agentic', etc."
            }
          }
        }
      },
      {
        "name": "aitk-get_ai_model_guidance",
        "displayName": "%languageModelTool.ai-mlstudio.getAiModelGuidance.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.getAiModelGuidance.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.getAiModelGuidance.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_get_ai_model_guidance",
        "inputSchema": {
          "type": "object",
          "properties": {
            "preferredHost": {
              "type": "array",
              "description": "Host preferences (NOT publisher) for the AI model. If preference not determined or matched, use empty array. Can have multiple preferences if needed.",
              "items": {
                "type": "string",
                "enum": [
                  "Foundry",
                  "GitHub",
                  "OpenAI",
                  "Anthropic",
                  "Google",
                  "other"
                ],
                "description": "Preferred host for the AI model.\n 'Foundry' means user explicitly asks for Microsoft Foundry (formerly Azure AI Foundry) hosted models, or calls '*.ai.azure.com', or '*.openai.azure.com';\n 'GitHub' means user explicitly asks for GitHub hosted models, or calls 'models.inference.ai.azure.com', or 'models.github.ai', or uses GitHub token to access model;\n 'OpenAI' means user explicitly asks for OpenAI hosted models, or calls 'api.openai.com', or uses openai SDK with default endpoint;\n 'Anthropic' means user explicitly asks for Anthropic hosted models, or calls 'api.anthropic.com';\n 'Google' means user explicitly asks for Google hosted models, or calls '*.googleapis.com', or uses google generativeai SDK;\n 'other' means none of above."
              }
            },
            "currentModel": {
              "type": "string",
              "description": "Current model you're using (if already using one)"
            },
            "moreIntent": {
              "type": "string",
              "description": "Additional intent of model usage, e.g. 'ask for model choice', 'generate code', 'compare models', etc."
            }
          },
          "required": [
            "preferredHost"
          ]
        }
      },
      {
        "name": "aitk-get_agent_model_code_sample",
        "displayName": "%languageModelTool.ai-mlstudio.getAgentModelCodeSample.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.getAgentModelCodeSample.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.getAgentModelCodeSample.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_get_agent_model_code_sample",
        "inputSchema": {
          "type": "object",
          "properties": {
            "category": {
              "type": "string",
              "description": "The category of the AI application development. 'Agent' means to build single agent or agentic app with complex capabilities. 'Workflow' or 'MultiAgents' means to orchestrate multiple agents or build as workflow. 'Chat' means to build simple chat with model.",
              "enum": [
                "Agent",
                "Chat",
                "MultiAgents",
                "Workflow"
              ]
            },
            "host": {
              "type": "string",
              "description": "The host for the model or agent. 'GitHub' means to use GitHub-hosted models. 'Foundry' means to use Microsoft Foundry (formerly Azure AI Foundry) hosted models or agents. 'other' means none of above. For workflow or multi-agents category, use 'Foundry'.",
              "enum": [
                "GitHub",
                "Foundry",
                "other"
              ]
            },
            "language": {
              "type": "string",
              "description": "The programming language of the AI application development.",
              "enum": [
                "Python",
                "Node.js",
                ".NET",
                "Java",
                "other"
              ]
            }
          },
          "required": [
            "category",
            "host",
            "language"
          ]
        }
      },
      {
        "name": "aitk-get_tracing_code_gen_best_practices",
        "displayName": "%languageModelTool.ai-mlstudio.getTracingCodeGenBestPractices.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.getTracingCodeGenBestPractices.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.getTracingCodeGenBestPractices.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_get_tracing_code_gen_best_practices",
        "inputSchema": {
          "type": "object",
          "properties": {
            "language": {
              "type": "string",
              "description": "The programming language of the AI application",
              "enum": [
                "python",
                "javascript",
                "typescript",
                "others"
              ]
            },
            "sdk": {
              "type": "string",
              "description": "The AI SDK used by the application, which impacts how tracing is implemented. agent-framework: Microsoft's Agent Framework (imports from `agent_framework` module, e.g., `from agent_framework.openai import OpenAIChatClient`). openai-agents: OpenAI's Agents SDK (imports from `agents` module, e.g., `from agents import Agent`).",
              "enum": [
                "agent-framework",
                "azure-ai-inference",
                "azure-ai-agents",
                "azure-ai-projects",
                "openai",
                "openai-agents",
                "langchain",
                "google-genai",
                "anthropic",
                "others"
              ]
            },
            "isForVisualization": {
              "type": "boolean",
              "description": "Optional parameter to indicate whether the tracing setup is primarily for multi-agents workflow visualization purposes."
            }
          },
          "required": [
            "language",
            "sdk"
          ]
        }
      },
      {
        "name": "aitk-get_evaluation_code_gen_best_practices",
        "displayName": "%languageModelTool.ai-mlstudio.getEvaluationCodeGenBestPractices.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.getEvaluationCodeGenBestPractices.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.getEvaluationCodeGenBestPractices.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_get_evaluation_code_gen_best_practices",
        "inputSchema": {
          "type": "object",
          "properties": {
            "evaluationMetrics": {
              "type": "array",
              "description": "List of what you want to evaluate for your AI application or agent. ONLY include when the user explicitly describes specific evaluation goals, metrics with clear details (e.g., 'Evaluate if generated review text has a positive sentiment', 'check if responses contain specific keywords', 'validate JSON format'). Do NOT include for general requests like 'add evaluation' or 'evaluate my app' without specific requirements.",
              "items": {
                "type": "string",
                "description": "Description of what to evaluate and the goal (e.g., 'Response accuracy - check if answers are factually correct', 'Response relevance - assess how well responses address the user question', 'Response time - measure if responses are generated within acceptable time limits')"
              }
            },
            "dataset": {
              "type": "string",
              "description": "The test dataset for evaluation"
            },
            "evaluationSdk": {
              "type": "string",
              "description": "The evaluation SDK to use",
              "default": "azure-ai-evaluation",
              "enum": [
                "azure-ai-evaluation",
                "pytest-agent-evals",
                "azure-ai-projects"
              ]
            },
            "language": {
              "type": "string",
              "description": "The programming language for the evaluation code",
              "default": "python"
            },
            "runtime": {
              "type": "string",
              "description": "The evaluation runtime environment. 'local' means running the evaluation locally. 'Foundry' means running the evaluation in Microsoft Foundry.",
              "enum": [
                "local",
                "Foundry"
              ]
            }
          },
          "required": []
        }
      },
      {
        "name": "aitk-convert_declarative_agent_to_code",
        "displayName": "%languageModelTool.ai-mlstudio.convertDeclarativeAgentToCode.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.convertDeclarativeAgentToCode.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.convertDeclarativeAgentToCode.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_convert_declarative_agent_to_code",
        "inputSchema": {
          "type": "object",
          "properties": {
            "language": {
              "type": "string",
              "description": "The programming language for the generated agent code. If not specified, Python is recommended.",
              "enum": [
                "Python",
                ".NET"
              ],
              "default": "Python"
            }
          }
        }
      },
      {
        "name": "aitk-evaluation_agent_runner_best_practices",
        "displayName": "%languageModelTool.ai-mlstudio.getEvaluationAgentRunnerBestPractices.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.getEvaluationAgentRunnerBestPractices.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.getEvaluationAgentRunnerBestPractices.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_evaluation_agent_runner_best_practices",
        "inputSchema": {
          "type": "object",
          "properties": {
            "sdk": {
              "type": "string",
              "description": "The AI SDK used by the application.",
              "enum": [
                "agent-framework",
                "others"
              ]
            }
          },
          "required": []
        }
      },
      {
        "name": "aitk-evaluation_planner",
        "displayName": "%languageModelTool.ai-mlstudio.evaluationPlanner.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.evaluationPlanner.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.evaluationPlanner.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_evaluation_planner",
        "inputSchema": {
          "type": "object",
          "properties": {
            "sdk": {
              "type": "string",
              "description": "The AI SDK used by the application.",
              "enum": [
                "agent-framework",
                "others"
              ]
            }
          },
          "required": []
        }
      },
      {
        "name": "aitk-get_custom_evaluator_guidance",
        "displayName": "%languageModelTool.ai-mlstudio.getCustomEvaluatorGuidance.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.getCustomEvaluatorGuidance.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.getCustomEvaluatorGuidance.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_get_custom_evaluator_guidance",
        "inputSchema": {
          "type": "object",
          "properties": {}
        }
      },
      {
        "name": "ai-mlstudio-check_panel_open",
        "displayName": "Check Data Viewer panel Open Status",
        "toolReferenceName": "check_panel_open",
        "icon": "$(window)",
        "userDescription": "Check if a 'Data Viewer' panel is currently open.",
        "modelDescription": "Prerequisite: ALWAYS call 'data_analysis_best_practice' tool first to understand the analysis workflow before using this tool. Checks if a 'Data Viewer' panel is currently open. Returns the status (OPEN/CLOSED), data source (file path), and details. For JSON files, the details indicate that the panel data is the value of a specific JSON array property. Use this tool to determine which file is currently open in the panel.",
        "canBeReferencedInPrompt": true,
        "inputSchema": {
          "type": "object",
          "properties": {}
        }
      },
      {
        "name": "ai-mlstudio-get_table_schema",
        "displayName": "Get Tabular Data Schema",
        "toolReferenceName": "get_table_schema",
        "icon": "$(table)",
        "userDescription": "Get the schema of the data in the currently open 'Data Viewer' panel, or from a CSV/JSONL/JSON file.",
        "modelDescription": "Prerequisite: ALWAYS call 'data_analysis_best_practice' tool first to understand the analysis workflow before using this tool. Get the schema of tabular data. If a 'Data Viewer' panel is open (check using 'check_panel_open'), uses the data from that panel (no file path needed). Otherwise, reads from the specified file path (supports CSV, JSONL, and JSON files). For JSON files: if it's a root-level array or AITK Local Evaluation format, the tool auto-selects the appropriate property; otherwise, it returns available array properties and asks you to prompt the user to select one, then call again with selectedJsonProperty. Returns metadata including: total row count, total column count, column names, inferred data types for each column (string, number, boolean, null, object, array, or mixed). Use this tool FIRST when analyzing data to understand the structure.",
        "canBeReferencedInPrompt": true,
        "inputSchema": {
          "type": "object",
          "properties": {
            "filePath": {
              "type": "string",
              "description": "Optional. The absolute file path to a CSV, JSONL, or JSON file. Not needed if 'Data Viewer' panel is already open."
            },
            "selectedJsonProperty": {
              "type": "string",
              "description": "Optional. For JSON files only. The name of the array property to analyze. Use this when the tool previously returned available array properties and the user has selected one."
            }
          }
        }
      },
      {
        "name": "ai-mlstudio-data_analysis_best_practice",
        "displayName": "Data Analysis Best Practices",
        "toolReferenceName": "data_analysis_best_practice",
        "icon": "$(lightbulb)",
        "userDescription": "Get best practices for analyzing data files.",
        "modelDescription": "Get best practices and recommended workflow for analyzing data files. ALWAYS call this tool FIRST when the user asks to analyze or work with data files to ensure proper analysis workflow.",
        "canBeReferencedInPrompt": true,
        "inputSchema": {
          "type": "object",
          "properties": {}
        }
      },
      {
        "name": "ai-mlstudio-read_rows",
        "displayName": "Read Rows of Tabular Data",
        "toolReferenceName": "read_rows",
        "icon": "$(list-flat)",
        "userDescription": "Read specific rows from the currently open 'Data Viewer' panel or from a CSV/JSONL/JSON file.",
        "modelDescription": "Prerequisite: ALWAYS call 'data_analysis_best_practice' tool first to understand the analysis workflow before using this tool. Reads specific row(s) from the currently open 'Data Viewer' panel or from a file by row number or range, with optional column filtering. If a 'Data Viewer' panel is open (check using 'check_panel_open'), uses data from that panel (faster). Otherwise, reads from the specified filePath (supports CSV, JSONL, and JSON files). For JSON files: if it's a root-level array or AITK Local Evaluation format, the tool auto-selects the appropriate property; otherwise, it returns available array properties and asks you to prompt the user to select one, then call again with selectedJsonProperty. This tool is useful when you need to: 1) Read a single row by its number, 2) Read a range of rows (startRow to endRow, inclusive), 3) Filter the output to show only specific columns. Important: Row numbers are 1-based (first row is 1, NOT 0).",
        "canBeReferencedInPrompt": true,
        "inputSchema": {
          "type": "object",
          "properties": {
            "filePath": {
              "type": "string",
              "description": "Optional. The absolute file path to a CSV, JSONL, or JSON file. Not needed if 'Data Viewer' panel is already open."
            },
            "startRow": {
              "type": "number",
              "description": "The starting row number (1-based, first row is 1). Defaults to 1 if not specified."
            },
            "endRow": {
              "type": "number",
              "description": "The ending row number (1-based, inclusive). If not specified, only the startRow is returned."
            },
            "columns": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Optional list of column names to include in the output. If not specified, all columns are returned."
            },
            "selectedJsonProperty": {
              "type": "string",
              "description": "Optional. For JSON files only. The name of the array property to read from. Use this when the tool previously returned available array properties and the user has selected one."
            }
          }
        }
      },
      {
        "name": "ai-mlstudio-read_cell",
        "displayName": "Read Cell of Tabular Data",
        "toolReferenceName": "read_cell",
        "icon": "$(symbol-field)",
        "userDescription": "Read a specific cell value from the currently open 'Data Viewer' panel or from a CSV/JSONL/JSON file.",
        "modelDescription": "Prerequisite: ALWAYS call 'data_analysis_best_practice' tool first to understand the analysis workflow before using this tool. Reads a specific cell value from the currently open 'Data Viewer' panel or from a file by row number and column name. If a 'Data Viewer' panel is open (check using 'check_panel_open'), uses data from that panel (faster). Otherwise, reads from the specified filePath (supports CSV, JSONL, and JSON files). For JSON files: if it's a root-level array or AITK Local Evaluation format, the tool auto-selects the appropriate property; otherwise, it returns available array properties and asks you to prompt the user to select one, then call again with selectedJsonProperty. Returns the cell value along with its data type. For object/array values, returns pretty-printed JSON. Important: Row numbers are 1-based (first row is 1, NOT 0). Column name must match exactly.",
        "canBeReferencedInPrompt": true,
        "inputSchema": {
          "type": "object",
          "properties": {
            "filePath": {
              "type": "string",
              "description": "Optional. The absolute file path to a CSV, JSONL, or JSON file. Not needed if 'Data Viewer' panel is already open."
            },
            "row": {
              "type": "number",
              "description": "The row number (1-based, first row is 1) of the cell to read."
            },
            "column": {
              "type": "string",
              "description": "The column name of the cell to read."
            },
            "selectedJsonProperty": {
              "type": "string",
              "description": "Optional. For JSON files only. The name of the array property to read from. Use this when the tool previously returned available array properties and the user has selected one."
            }
          },
          "required": [
            "row",
            "column"
          ]
        }
      },
      {
        "name": "ai-mlstudio-export_panel_data",
        "displayName": "Export Data Viewer Panel Data",
        "toolReferenceName": "export_panel_data",
        "icon": "$(export)",
        "userDescription": "Export the current Data Viewer panel data to a file.",
        "modelDescription": "Prerequisite: ALWAYS call 'data_analysis_best_practice' tool first to understand the analysis workflow before using this tool. Exports the current active 'Data Viewer' panel data to the 'DataAnalysisExpert' folder in the workspace (creates the folder if it doesn't exist). This tool requires user confirmation before execution. Export format matches the source file type: CSV sources export to CSV, JSONL sources export to JSONL, JSON sources export to JSON array. Use this tool when you need to: 1) Export panel data for script-based analysis, 2) Save a snapshot of the current data state.",
        "canBeReferencedInPrompt": true,
        "inputSchema": {
          "type": "object",
          "properties": {
            "fileName": {
              "type": "string",
              "description": "Optional. The output file name (without extension). Extension is auto-determined based on source file type: .csv for CSV sources, .jsonl for JSONL sources, .json for JSON sources. If not provided, defaults to '<originalFileName>_exported'."
            }
          }
        }
      },
      {
        "name": "ai-mlstudio-get_trend_data",
        "displayName": "Get Evaluation Trend Data",
        "toolReferenceName": "get_trend_data",
        "icon": "$(graph)",
        "userDescription": "Get the evaluation trend data from the currently focused trend analysis view.",
        "modelDescription": "Gets the evaluation trend data from the currently focused Evaluation Trend Analysis view (either standalone panel or embedded trend in Data Viewer). Returns: dataPoints (array of files with fileName, filePath, and metrics - metric values are AVERAGED across selected rows), selectedMetrics (list of metrics being compared), jsonArrayProperty (for JSON files, indicates which array property the data comes from), selectedRows (1-based row indices used for averaging, undefined means all rows), totalRows (total row count). Use this tool when the user asks to analyze or discuss evaluation trends. The tool automatically detects which trend view is currently active/focused.",
        "canBeReferencedInPrompt": true,
        "inputSchema": {
          "type": "object",
          "properties": {}
        }
      },
      {
        "name": "aitk-list_foundry_models",
        "displayName": "%languageModelTool.ai-mlstudio.listFoundryModels.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.listFoundryModels.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.listFoundryModels.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_list_foundry_models"
      },
      {
        "name": "aitk-agent_as_server",
        "displayName": "%languageModelTool.ai-mlstudio.agentAsServer.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.agentAsServer.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.agentAsServer.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_agent_as_server"
      },
      {
        "name": "aitk-add_agent_debug",
        "displayName": "%languageModelTool.ai-mlstudio.addAgentDebug.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.addAgentDebug.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.addAgentDebug.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_add_agent_debug"
      },
      {
        "name": "aitk-usage_guidance",
        "displayName": "%languageModelTool.ai-mlstudio.usageGuidance.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.usageGuidance.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.usageGuidance.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_usage_guidance"
      },
      {
        "name": "aitk-gen_windows_ml_web_demo",
        "displayName": "%languageModelTool.ai-mlstudio.genWindowsMLWebDemo.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.genWindowsMLWebDemo.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.genWindowsMLWebDemo.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_gen_windows_ml_web_demo",
        "inputSchema": {
          "type": "object",
          "properties": {
            "modelId": {
              "type": "string",
              "description": "Full HuggingFace model ID (format: 'organization/model-name', e.g., 'openai/whisper-large-v3')."
            },
            "modelPaths": {
              "type": "object",
              "description": "(For non-LLM) A JSON object mapping model names to their ONNX file paths. Keys are model identifiers, values are absolute paths. Example: {'model': 'path/to/model.onnx'} for single model, or {'encoder': 'path/encoder.onnx', 'decoder': 'path/decoder.onnx'} for multiple models."
            },
            "modelDir": {
              "type": "string",
              "description": "(For LLM) Directory containing the ONNX model files."
            },
            "executionProvider": {
              "type": "string",
              "description": "Execution provider used for model inference. e.g., 'CPUExecutionProvider', 'CUDAExecutionProvider', 'DirectMLExecutionProvider'."
            },
            "deviceType": {
              "type": "string",
              "description": "Runtime device type for the model inference. e.g. 'CPU', 'GPU'."
            },
            "samplePath": {
              "type": "string",
              "description": "Path to inference sample file."
            },
            "outputDir": {
              "type": "string",
              "description": "Path to the directory where output will be saved."
            },
            "isLLM": {
              "type": "boolean",
              "description": "Indicates whether the model is a Large Language Model (LLM)."
            },
            "confirmed": {
              "type": "boolean",
              "description": "Set to true to confirm regeneration when output directory already exists. Default is false."
            },
            "gradioPort": {
              "type": "integer",
              "description": "Port number for the Gradio web demo server. Default is 7860."
            }
          },
          "required": []
        }
      },
      {
        "name": "aitk-gen_windows_ml_inference_sample",
        "displayName": "%languageModelTool.ai-mlstudio.genWindowsMLInferenceSample.displayName%",
        "modelDescription": "%languageModelTool.ai-mlstudio.genWindowsMLInferenceSample.modelDescription%",
        "userDescription": "%languageModelTool.ai-mlstudio.genWindowsMLInferenceSample.userDescription%",
        "canBeReferencedInPrompt": true,
        "toolReferenceName": "aitk_gen_windows_ml_inference_sample",
        "when": "config.windowsaistudio.modelLabInternalFeatures",
        "inputSchema": {
          "type": "object",
          "properties": {
            "modelId": {
              "type": "string",
              "description": "Full HuggingFace model ID (format: 'organization/model-name', e.g., 'openai/whisper-large-v3')."
            },
            "modelPaths": {
              "type": "object",
              "description": "(For non-LLM) A JSON object mapping model names to their ONNX file paths. Keys are model identifiers, values are absolute paths. Example: {'model': 'path/to/model.onnx'} for single model, or {'encoder': 'path/encoder.onnx', 'decoder': 'path/decoder.onnx'} for multiple models."
            },
            "modelDir": {
              "type": "string",
              "description": "(For LLM) Directory containing the ONNX model files."
            },
            "executionProvider": {
              "type": "string",
              "description": "Execution provider used for model inference. e.g., 'CPUExecutionProvider', 'CUDAExecutionProvider', 'DirectMLExecutionProvider'."
            },
            "deviceType": {
              "type": "string",
              "description": "Runtime device type for the model inference. e.g. 'CPU', 'GPU'."
            },
            "samplePath": {
              "type": "string",
              "description": "Path to inference sample file."
            },
            "outputDir": {
              "type": "string",
              "description": "Path to the directory where output will be saved."
            },
            "isLLM": {
              "type": "boolean",
              "description": "Indicates whether the model is a Large Language Model (LLM)."
            },
            "confirmed": {
              "type": "boolean",
              "description": "Set to true to confirm regeneration when output directory already exists. Default is false."
            }
          },
          "required": []
        }
      }
    ],
    "languageModelChatProviders": [
      {
        "vendor": "aitk-foundry",
        "displayName": "Microsoft Foundry via AI Toolkit"
      },
      {
        "vendor": "aitk-foundry-local",
        "displayName": "Foundry Local via AI Toolkit"
      },
      {
        "vendor": "aitk-github",
        "displayName": "GitHub Models via AI Toolkit"
      }
    ],
    "mcpServerDefinitionProviders": [
      {
        "id": "aiToolkitMcpProvider",
        "label": "AI Toolkit MCP Servers"
      }
    ],
    "chatAgents": [
      {
        "name": "AIAgentExpert",
        "path": "./resources/lmt/chatAgents/AIAgentExpert.agent.md",
        "description": "Expert in developing AI agent applications with best practices"
      },
      {
        "name": "DataAnalysisExpert",
        "description": "Expert in analyzing data files using Data Viewer. Can explore data structure, read specific rows and cells, and provide insights.",
        "path": "./resources/lmt/chatAgents/DataAnalysisExpert.agent.md"
      }
    ],
    "chatSkills": [
      {
        "path": "./resources/skills/microsoft-foundry-agent-framework-code-gen/SKILL.md"
      },
      {
        "path": "./resources/skills/aitk-quick-start/SKILL.md"
      }
    ]
  },
  "scripts": {
    "build-workspace-agent-win-x64": "dotnet publish ../../src/WorkspaceAutomation.Agent/WorkspaceAutomation.Agent.csproj -c Release --runtime win-x64 /p:Platform=x64 /p:DebugSymbols=false /p:DebugType=None",
    "build-inference-agent-win-x64": "dotnet publish ../../src/Inference.Service/Inference.Service.Agent/Inference.Service.Agent.csproj -c Release --runtime win-x64 /p:Platform=x64 /p:DebugSymbols=false /p:DebugType=None",
    "build-workspace-agent-win-arm64": "dotnet publish ../../src/WorkspaceAutomation.Agent/WorkspaceAutomation.Agent.csproj -c Release --runtime win-arm64 /p:Platform=arm64 /p:DebugSymbols=false /p:DebugType=None",
    "build-inference-agent-win-arm64": "dotnet publish ../../src/Inference.Service/Inference.Service.Agent/Inference.Service.Agent.csproj -c Release --runtime win-arm64 /p:Platform=arm64 /p:DebugSymbols=false /p:DebugType=None",
    "build-workspace-agent-linux-x64": "dotnet publish ../../src/WorkspaceAutomation.Agent/WorkspaceAutomation.Agent.csproj -c Release --runtime linux-x64 /p:Platform=x64 /p:DebugSymbols=false /p:DebugType=None",
    "build-inference-agent-linux-x64": "dotnet publish ../../src/Inference.Service/Inference.Service.Agent/Inference.Service.Agent.csproj -c Release --runtime linux-x64 /p:Platform=x64 /p:DebugSymbols=false /p:DebugType=None",
    "build-inference-agent-osx-arm64": "dotnet publish ../../src/Inference.Service/Inference.Service.Agent/Inference.Service.Agent.csproj -c Release --runtime osx-arm64 /p:Platform=arm64 /maxcpucount:1 /p:DebugSymbols=false /p:DebugType=None",
    "build-workspace-agent-osx-arm64": "dotnet publish ../../src/WorkspaceAutomation.Agent/WorkspaceAutomation.Agent.csproj -c Release --runtime osx-arm64 /p:Platform=arm64 /maxcpucount:1 /p:DebugSymbols=false /p:DebugType=None",
    "build-inference-agent-linux-arm64": "echo no-op",
    "build-workspace-agent-linux-arm64": "echo no-op",
    "build-inference-agent-osx-x64": "echo no-op",
    "build-workspace-agent-osx-x64": "echo no-op",
    "build-inference-agent-universal": "echo no-op",
    "build-workspace-agent-universal": "echo no-op",
    "package-linux-x64": "npm run set-version && vsce package --target linux-x64 && npm run reset-version",
    "package-linux-arm64": "npm run set-version && vsce package --target linux-arm64 && npm run reset-version",
    "package-darwin-arm64": "npm run set-version && vsce package --target darwin-arm64 && npm run reset-version",
    "package-darwin-x64": "npm run set-version && vsce package --target darwin-x64 && npm run reset-version",
    "package-win32-x64": "npm run set-version && vsce package --target win32-x64 && npm run reset-version",
    "package-win32-arm64": "npm run set-version && vsce package --target win32-arm64 && npm run reset-version",
    "package-universal": "npm run set-version && vsce package && npm run reset-version",
    "package-pre-release-linux-x64": "npm run set-version && vsce package --pre-release --target linux-x64 && npm run reset-version",
    "package-pre-release-linux-arm64": "npm run set-version && vsce package --pre-release --target linux-arm64 && npm run reset-version",
    "package-pre-release-darwin-arm64": "npm run set-version && vsce package --pre-release --target darwin-arm64 && npm run reset-version",
    "package-pre-release-darwin-x64": "npm run set-version && vsce package --pre-release --target darwin-x64 && npm run reset-version",
    "package-pre-release-win32-x64": "npm run set-version && vsce package --pre-release --target win32-x64 && npm run reset-version",
    "package-pre-release-win32-arm64": "npm run set-version && vsce package --pre-release --target win32-arm64 && npm run reset-version",
    "package-pre-release-universal": "npm run set-version && vsce package --pre-release && npm run reset-version",
    "vsce-manifest": "vsce generate-manifest",
    "vscode:prepublish": "webpack --mode production",
    "test-compile": "tsc -p ./",
    "build:test": "tsc --project tsconfig.test.json --incremental",
    "test:unit": "npm run download-template && npm run build:test && mocha",
    "lint": "eslint \"src/**/*.ts\"",
    "fix:python": "resources\\modelLab\\formatTool\\format-fix.bat",
    "watch": "webpack --mode development --watch",
    "prepare-bin": "npm run copy-workspace-agent && npm run copy-workspace-agent-scripts && npm run copy-inference-agent",
    "copy-workspace-agent-scripts": "echo \"linux copyfiles behaves differently, so need this\" && mkdirp ./bin/Scripts && copyfiles --flat -V ../../artifacts/publish/WorkspaceAutomation.Agent/release*/Scripts/* ./bin/Scripts",
    "copy-workspace-agent": "copyfiles -u 6 -V ../../artifacts/publish/WorkspaceAutomation.Agent/release*/** -e ../../artifacts/publish/WorkspaceAutomation.Agent/release* -e ../../artifacts/publish/WorkspaceAutomation.Agent/release*/*.pdb -e ../../artifacts/publish/WorkspaceAutomation.Agent/release*/*.lib -e ../../artifacts/publish/WorkspaceAutomation.Agent/release*/*.xml -e ../../artifacts/publish/WorkspaceAutomation.Agent/release*/payload*.json ./bin",
    "copy-inference-agent": "copyfiles -u 6 -V ../../artifacts/publish/Inference.Service.Agent/release*/** -e ../../artifacts/publish/Inference.Service.Agent/release* -e ../../artifacts/publish/Inference.Service.Agent/release*/*.pdb -e ../../artifacts/publish/Inference.Service.Agent/release*/*.lib -e ../../artifacts/publish/Inference.Service.Agent/release*/*.xml -e ../../artifacts/publish/Inference.Service.Agent/release*/onnx*.exe ./bin",
    "compile-development": "webpack --mode development",
    "bootstrap-developer-win-arm64": "npm run install:all && npm run build:webview && npm run build:model-lab && npm run build-workspace-agent-win-arm64 && npm run build-inference-agent-win-arm64 && npm run prepare-bin && npm run compile-development && npm run download-template",
    "bootstrap-developer-win-x64": "npm run install:all && npm run build:webview && npm run build:model-lab && npm run build-workspace-agent-win-x64 && npm run build-inference-agent-win-x64 && npm run prepare-bin && npm run compile-development && npm run download-template",
    "bootstrap-developer-linux-x64": "npm run install:all && npm run build:webview && npm run build:model-lab && npm run build-workspace-agent-linux-x64 && npm run build-inference-agent-linux-x64 && npm run prepare-bin && npm run compile-development && npm run download-template",
    "install:all": "npm install && cd webview-ui && npm install && cd ../model-lab-ui && npm install",
    "start:webview": "cd webview-ui && npm run start",
    "build:webview": "cd webview-ui && npm run build",
    "build:model-lab": "npm run prettier:model-lab && npm run sync:model-lab && cd model-lab-ui && npm run build",
    "setup:model-lab-uitest": "npm run build:model-lab && extest setup-tests -e ./model-lab-ui/dist-uitests-ext",
    "test:model-lab-ui": "extest run-tests ./model-lab-ui/dist-uitests/%npm_config_test%.test.js -m ./model-lab-ui/.mocharc-debug.js -e ./model-lab-ui/dist-uitests-ext",
    "sync:model-lab": "copyfiles -u 3 -V model-lab-ui/src/rpc/**/* src/model-lab/rpc && copyfiles -u 2 -V model-lab-ui/src/rpc/interface/model.ts model-lab-ui/uitests",
    "prettier:model-lab": "prettier --write model-lab-ui/src/**/*.ts model-lab-ui/src/**/*.tsx model-lab-ui/uitests/**/*.ts src/model-lab/**/*.ts tests/model-lab/**/*.ts",
    "pretest": "npm run compile-development && npm run lint && npm run download-template",
    "set-version": "nbgv-setversion",
    "reset-version": "nbgv-setversion --reset",
    "export-l10n": "vscode-l10n-dev export --outDir ./l10n ./src",
    "lockfile": "^1.0.4",
    "download-template": "npm run download-ai-studio-template && npm run download-chat-template",
    "download-ai-studio-template": "ts-node ./src/utilities/templateUtils.ts -- https://api.github.com/repos/microsoft/windows-ai-studio-templates/releases/latest ./resources template.zip",
    "download-chat-template": "ts-node ./src/utilities/templateUtils.ts -- https://api.github.com/repos/Azure/azure-webpubsub/releases/tags/release/ai-demo-v0.1.0 ./resources chat-demo.zip",
    "zip-template": "python ./resources/modelLab/utilities.py --task zipTemplate --input ../../../windows-ai-studio-templates --output ./resources/template.zip",
    "setup": "npm run install:all && npm run build:webview && npm run compile-development"
  },
  "devDependencies": {
    "@types/adm-zip": "^0.5.5",
    "@types/chai": "^4.3.17",
    "@types/chai-as-promised": "^7.1.3",
    "@types/escape-html": "^1.0.4",
    "@types/fs-extra": "^11.0.4",
    "@types/glob": "^8.1.0",
    "@types/kill-port": "^2.0.3",
    "@types/lockfile": "^1.0.4",
    "@types/mocha": "^10.0.7",
    "@types/mock-fs": "^4.13.4",
    "@types/mustache": "^4.2.5",
    "@types/node": "^16.18.113",
    "@types/semver": "^7.5.8",
    "@types/sinon": "^17.0.3",
    "@types/tmp": "^0.2.6",
    "@types/uuid": "^9.0.8",
    "@types/vscode": "^1.104.0",
    "@typescript-eslint/parser": "^6.7.0",
    "@vscode/l10n-dev": "^0.0.35",
    "@vscode/vsce": "^3.0.0",
    "chai": "^4.5.0",
    "chai-as-promised": "^7.1.2",
    "copy-webpack-plugin": "^12.0.2",
    "copyfiles": "^2.4.1",
    "dotenv": "^16.4.5",
    "esbuild": "^0.25.0",
    "mkdirp": "^3.0.1",
    "mocha": "^10.7.3",
    "mock-fs": "^5.4.1",
    "nerdbank-gitversioning": "3.6.133",
    "prettier": "^3.5.3",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "sinon": "^18.0.0",
    "ts-loader": "^9.5.1",
    "ts-node": "^10.9.2",
    "typemoq": "^2.1.0",
    "typescript": "^5.2.2",
    "vscode-extension-tester": "^8.18.0",
    "webpack": "^5.85.0",
    "webpack-cli": "^5.1.1"
  },
  "dependencies": {
    "@anthropic-ai/sdk": "^0.51.0",
    "@azure-rest/ai-inference": "^1.0.0-beta.4",
    "@azure/ai-projects": "^2.0.0-beta.3",
    "@azure/arm-appcontainers": "^2.0.0",
    "@azure/arm-resources": "^5.2.0",
    "@azure/arm-storage": "^18.2.0",
    "@azure/arm-subscriptions": "^5.1.0",
    "@azure/core-rest-pipeline": "^1.15.2",
    "@azure/core-sse": "^2.1.3",
    "@azure/identity": "^4.13.0",
    "@azure/storage-file-share": "^12.24.0",
    "@dw-ai/extension": "0.2.9",
    "@google/generative-ai": "^0.22.0",
    "@grpc/grpc-js": "^1.13.4",
    "@grpc/proto-loader": "^0.7.15",
    "@huggingface/hub": "^2.6.12",
    "@langchain/community": "^0.3.50",
    "@langchain/core": "^0.3.80",
    "@microsoft/1ds-core-js": "^3.2.15",
    "@microsoft/1ds-post-js": "^3.2.15",
    "@microsoft/vscode-azext-azureauth": "^2.3.0",
    "@microsoft/vscode-azext-azureutils": "^3.0.1",
    "@modelcontextprotocol/sdk": "^1.25.1",
    "@types/lodash": "^4.17.14",
    "@vscode/extension-telemetry": "^0.9.6",
    "@vscode/python-extension": "^1.0.5",
    "@vscode/sqlite3": "^5.1.6-vscode",
    "adm-zip": "^0.5.15",
    "ajv": "^6.12.6",
    "async-mutex": "^0.5.0",
    "axios": "^1.12.0",
    "csv-parse": "^5.6.0",
    "csv-stringify": "^6.5.2",
    "epub2": "^3.0.2",
    "escape-html": "^1.0.3",
    "foundry-local-sdk": "^0.3.1",
    "fs-extra": "^11.2.0",
    "glob": "^11.1.0",
    "html-to-text": "^9.0.5",
    "image-size": "^1.1.1",
    "kill-port": "^2.0.1",
    "lockfile": "^1.0.4",
    "lodash": "^4.17.21",
    "mammoth": "^1.8.0",
    "mime": "^4.0.4",
    "mustache": "^4.2.0",
    "officeparser": "^4.1.2",
    "ollama": "^0.5.12",
    "openai": "^5.12.1",
    "pdf-parse": "^1.1.1",
    "promise-socket": "^7.0.0",
    "semver": "^7.6.3",
    "skills": "1.4.3",
    "systeminformation": "^5.27.14",
    "tiktoken": "^1.0.17",
    "tmp": "^0.2.3",
    "uuid": "^9.0.1",
    "vscode-jsonrpc": "^8.2.0",
    "word-extractor": "^1.0.4",
    "yaml": "^2.5.0",
    "zod": "^3.23.8"
  },
  "overrides": {
    "@browserbasehq/stagehand": {
      "openai": "^5.12.1"
    },
    "@langchain/openai": {
      "openai": "^5.12.1"
    }
  }
}
