{
  "name": "qsharp-lang-vscode-dev",
  "displayName": "[DEV BUILD] Azure Quantum Development Kit (QDK)",
  "description": "Q# and OpenQASM Language Support",
  "version": "0.0.0",
  "publisher": "quantum",
  "icon": "resources/qdk.png",
  "galleryBanner": {
    "color": "#252526",
    "theme": "dark"
  },
  "type": "commonjs",
  "engines": {
    "vscode": "^1.77.0"
  },
  "categories": [
    "Programming Languages",
    "Notebooks"
  ],
  "browser": "./out/extension.js",
  "virtualWorkspaces": true,
  "activationEvents": [
    "onNotebook:jupyter-notebook",
    "onDebug",
    "onDebugResolve:qsharp",
    "onDebugDynamicConfigurations:qsharp",
    "onFileSystem:qsharp-vfs",
    "onWebviewPanel:qsharp-webview"
  ],
  "contributes": {
    "walkthroughs": [
      {
        "id": "qsharp-vscode.welcome",
        "title": "The Azure Quantum Development Kit",
        "description": "Getting started with the Azure Quantum Development Kit in VS Code",
        "steps": [
          {
            "id": "qsharp-vscode.welcome.editor",
            "title": "Welcome to the Azure Quantum Development Kit",
            "description": "The Azure Quantum Development Kit (QDK) is an open-source SDK that you can use to write quantum programs and execute them on quantum hardware. This walkthrough will show you how to get started with the Azure Quantum Development Kit in VS Code.\n\nThe QDK gives you rich editor support for writing quantum programs, such as error checking, signature help, completion lists, safely renaming identifiers, and much more.",
            "media": {
              "image": "resources/intellisense.png",
              "altText": "Intellisense"
            }
          },
          {
            "id": "qsharp-vscode.welcome.debug",
            "title": "Debug Q# code",
            "description": "With your Q# code open in the editor, use the F5 shortcut or the top right icons in the code editor to run or debug the code.",
            "media": {
              "image": "resources/debug.png",
              "altText": "Debug"
            }
          },
          {
            "id": "qsharp-vscode.welcome.simulator",
            "title": "Run quantum simulations",
            "description": "You can run quantum simulations directly in VS Code and see the program output in the integrated terminal.",
            "media": {
              "image": "resources/console.png",
              "altText": "Console"
            }
          },
          {
            "id": "qsharp-vscode.welcome.submit",
            "title": "Run on Azure Quantum",
            "description": "If you have an Azure subscription, you can connect to your Azure Quantum workspace and submit your Q# program directly to quantum hardware",
            "media": {
              "image": "resources/submit.png",
              "altText": "Submit to Azure"
            }
          },
          {
            "id": "qsharp-vscode.welcome.starters",
            "title": "Starting points",
            "description": "Explore Q# safely by opening files in the [Q# playground](command:qsharp-vscode.openPlayground), or work in Python by [creating a Jupyter Notebook](command:qsharp-vscode.createNotebook) from a template",
            "media": {
              "image": "resources/notebook.png",
              "altText": "Jupyter Notebooks"
            }
          }
        ]
      }
    ],
    "webOpener": {
      "scheme": "qsharp-vfs",
      "runCommands": [
        {
          "command": "qsharp-vscode.webOpener",
          "args": [
            "$url"
          ]
        }
      ]
    },
    "configuration": {
      "title": "Q#",
      "properties": {
        "Q#.simulation.pauliNoise": {
          "markdownDescription": "The Pauli noise to apply when running multiple shots via the Histogram command. This is applied for every gate or measurement on all qubits referenced.\n\nProbability values are in the range [0, 1].",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "X": {
              "type": "number",
              "default": 0,
              "minimum": 0,
              "maximum": 1,
              "description": "The probability of a bit flip error occurring"
            },
            "Y": {
              "type": "number",
              "default": 0,
              "minimum": 0,
              "maximum": 1,
              "description": "The probability of a bit-and-phase flip error occurring"
            },
            "Z": {
              "type": "number",
              "default": 0,
              "minimum": 0,
              "maximum": 1,
              "description": "The probability of a phase flip error occurring"
            }
          }
        },
        "Q#.simulation.qubitLoss": {
          "markdownDescription": "The probability of a qubit loss occurring when running multiple shots via the Histogram command. This is applied on every gate or measurement on all qubits referenced.\n\nProbability values are in the range [0, 1].",
          "type": "number",
          "default": 0,
          "minimum": 0,
          "maximum": 1,
          "description": "The probability of a qubit loss occurring"
        },
        "Q#.dev.showDevDiagnostics": {
          "type": "boolean",
          "default": false,
          "description": "Show dev diagnostics in Problems view for each open document. This is for internal development and testing purposes.",
          "tags": [
            "hidden"
          ]
        },
        "Q#.notifications.suppressUpdateNotifications": {
          "type": "boolean",
          "default": false,
          "description": "Suppress notifications about new QDK updates. If true, you will not be prompted about new features after updates."
        },
        "Q#.azure.experimental.uploadSupplementalData": {
          "type": "boolean",
          "default": false,
          "tags": [
            "experimental"
          ],
          "description": "Upload supplemental input data (circuit diagram) to the storage container when submitting jobs to Azure Quantum."
        }
      }
    },
    "menus": {
      "editor/title/run": [
        {
          "command": "qsharp-vscode.runProgram",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm || resourceLangId == qsharpcircuit",
          "group": "navigation@1"
        },
        {
          "command": "qsharp-vscode.debugProgram",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm || resourceLangId == qsharpcircuit",
          "group": "navigation@2"
        }
      ],
      "commandPalette": [
        {
          "command": "qsharp-vscode.runProgram",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm || resourceLangId == qsharpcircuit"
        },
        {
          "command": "qsharp-vscode.debugProgram",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm || resourceLangId == qsharpcircuit"
        },
        {
          "command": "qsharp-vscode.runEditorContentsWithCircuit",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm"
        },
        {
          "command": "qsharp-vscode.targetSubmit",
          "when": "qsharp-vscode.treeItemSupportsQir"
        },
        {
          "command": "qsharp-vscode.workspacesRemove",
          "when": "qsharp-vscode.treeItemIsWorkspace"
        },
        {
          "command": "qsharp-vscode.workspacePythonCode",
          "when": "qsharp-vscode.treeItemIsWorkspace"
        },
        {
          "command": "qsharp-vscode.workspaceOpenPortal",
          "when": "qsharp-vscode.treeItemIsWorkspace"
        },
        {
          "command": "qsharp-vscode.downloadResults",
          "when": "qsharp-vscode.treeItemSupportsDownload"
        },
        {
          "command": "qsharp-vscode.downloadRawResults",
          "when": "qsharp-vscode.treeItemSupportsDownload"
        },
        {
          "command": "qsharp-vscode.getQir",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm"
        },
        {
          "command": "qsharp-vscode.showHistogram",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm"
        },
        {
          "command": "qsharp-vscode.showRe",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm"
        },
        {
          "command": "qsharp-vscode.showHelp",
          "when": "resourceLangId == qsharp"
        },
        {
          "command": "qsharp-vscode.showCircuit",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm"
        },
        {
          "command": "qsharp-vscode.showDocumentation",
          "when": "resourceLangId == qsharp"
        },
        {
          "command": "qsharp-vscode.webOpener",
          "when": "false"
        },
        {
          "command": "qsharp-vscode.populateFilesList",
          "when": "resourceFilename == qsharp.json"
        },
        {
          "command": "qsharp-vscode.addProjectReference",
          "when": "resourceFilename == qsharp.json"
        },
        {
          "command": "qsharp-vscode.updateCopilotInstructions"
        }
      ],
      "view/title": [
        {
          "command": "qsharp-vscode.workspacesRefresh",
          "when": "view == quantum-workspaces",
          "group": "navigation"
        },
        {
          "command": "qsharp-vscode.workspacesAdd",
          "when": "view == quantum-workspaces",
          "group": "navigation"
        }
      ],
      "view/item/context": [
        {
          "command": "qsharp-vscode.workspaceOpenPortal",
          "group": "inline",
          "when": "view == quantum-workspaces && viewItem == workspace"
        },
        {
          "command": "qsharp-vscode.workspacesRemove",
          "when": "view == quantum-workspaces && viewItem == workspace"
        },
        {
          "command": "qsharp-vscode.targetSubmit",
          "group": "inline",
          "when": "view == quantum-workspaces && viewItem == qir-target"
        },
        {
          "command": "qsharp-vscode.downloadResults",
          "group": "inline",
          "when": "view == quantum-workspaces && viewItem == result-download"
        },
        {
          "command": "qsharp-vscode.downloadRawResults",
          "group": "inline",
          "when": "view == quantum-workspaces && viewItem == result-download"
        },
        {
          "command": "qsharp-vscode.workspacePythonCode",
          "when": "view == quantum-workspaces && viewItem == workspace"
        }
      ],
      "explorer/context": [
        {
          "command": "qsharp-vscode.createProject",
          "when": "explorerResourceIsFolder"
        },
        {
          "command": "qsharp-vscode.populateFilesList",
          "when": "resourceFilename == qsharp.json"
        },
        {
          "command": "qsharp-vscode.addProjectReference",
          "when": "resourceFilename == qsharp.json"
        }
      ]
    },
    "viewsContainers": {},
    "views": {
      "explorer": [
        {
          "id": "quantum-workspaces",
          "name": "Quantum Workspaces"
        }
      ]
    },
    "viewsWelcome": [
      {
        "view": "quantum-workspaces",
        "contents": "Connect to Azure Quantum\n[Connect to an existing workspace](command:qsharp-vscode.workspacesAdd)\nNote: For the first workspace added there may be several consent prompts to grant VS Code access.\nFor more information about the QDK and Azure Quantum, visit [https://aka.ms/AQ/Documentation](https://aka.ms/AQ/Documentation)."
      }
    ],
    "commands": [
      {
        "command": "qsharp-vscode.createProject",
        "title": "Create Q# project",
        "category": "QDK"
      },
      {
        "command": "qsharp-vscode.webOpener",
        "title": "Internal web opener",
        "category": "QDK"
      },
      {
        "command": "qsharp-vscode.debugProgram",
        "title": "Start Debugging",
        "category": "Debug",
        "enablement": "!inDebugMode",
        "icon": "$(debug-alt)"
      },
      {
        "command": "qsharp-vscode.runProgram",
        "title": "Run program",
        "category": "QDK"
      },
      {
        "command": "qsharp-vscode.runEditorContentsWithCircuit",
        "title": "Run file and show circuit diagram",
        "category": "QDK"
      },
      {
        "command": "qsharp-vscode.showHistogram",
        "title": "Run file and show histogram",
        "category": "QDK"
      },
      {
        "command": "qsharp-vscode.showRe",
        "title": "Calculate Resource Estimates",
        "category": "QDK"
      },
      {
        "command": "qsharp-vscode.showHelp",
        "title": "Help",
        "category": "QDK"
      },
      {
        "command": "qsharp-vscode.showCircuit",
        "title": "Show circuit",
        "category": "QDK"
      },
      {
        "command": "qsharp-vscode.showDocumentation",
        "title": "Show API documentation",
        "category": "QDK"
      },
      {
        "command": "qsharp-vscode.workspacesRefresh",
        "category": "QDK",
        "title": "Refresh Azure Quantum workspaces",
        "icon": "$(refresh)"
      },
      {
        "command": "qsharp-vscode.workspacesAdd",
        "category": "QDK",
        "title": "Connect to an Azure Quantum workspace",
        "icon": "$(add)"
      },
      {
        "command": "qsharp-vscode.workspacesRemove",
        "category": "QDK",
        "title": "Remove workspace connection",
        "icon": "$(remove)"
      },
      {
        "command": "qsharp-vscode.workspacePythonCode",
        "category": "QDK",
        "title": "Copy Python code to connect to workspace"
      },
      {
        "command": "qsharp-vscode.workspaceOpenPortal",
        "category": "QDK",
        "title": "Open the workspace in the Azure portal",
        "icon": "$(link-external)"
      },
      {
        "command": "qsharp-vscode.targetSubmit",
        "category": "QDK",
        "title": "Submit current QDK program",
        "icon": "$(run)"
      },
      {
        "command": "qsharp-vscode.getQir",
        "category": "QDK",
        "title": "Get QIR for current QDK program"
      },
      {
        "command": "qsharp-vscode.downloadResults",
        "category": "QDK",
        "title": "Download Azure Quantum job results as histogram",
        "icon": "$(graph)"
      },
      {
        "command": "qsharp-vscode.downloadRawResults",
        "category": "QDK",
        "title": "Download Azure Quantum job results as text",
        "icon": "$(output)"
      },
      {
        "command": "qsharp-vscode.createNotebook",
        "category": "QDK",
        "title": "Create an Azure Quantum notebook"
      },
      {
        "command": "qsharp-vscode.openPlayground",
        "category": "QDK",
        "title": "Open QDK playground"
      },
      {
        "command": "qsharp-vscode.populateFilesList",
        "category": "QDK",
        "title": "Populate qsharp.json files list"
      },
      {
        "command": "qsharp-vscode.addProjectReference",
        "category": "QDK",
        "title": "Add Q# project reference"
      },
      {
        "command": "qsharp-vscode.showChangelog",
        "title": "Show Changelog",
        "category": "QDK"
      },
      {
        "command": "qsharp-vscode.updateCopilotInstructions",
        "category": "QDK",
        "title": "Add Copilot instructions file for Q# and OpenQASM"
      }
    ],
    "breakpoints": [
      {
        "language": "qsharp"
      },
      {
        "language": "openqasm"
      }
    ],
    "languages": [
      {
        "id": "qsharp",
        "aliases": [
          "Q#",
          "qsharp"
        ],
        "extensions": [
          ".qs"
        ],
        "icon": {
          "light": "./resources/file-icon-light.svg",
          "dark": "./resources/file-icon-dark.svg"
        },
        "configuration": "./language-configuration.json"
      },
      {
        "id": "qsharpcircuit",
        "aliases": [
          "Q# Circuit",
          "qsc"
        ],
        "extensions": [
          ".qsc"
        ],
        "icon": {
          "light": "./resources/file-icon-light.svg",
          "dark": "./resources/file-icon-dark.svg"
        }
      },
      {
        "id": "openqasm",
        "aliases": [
          "openqasm",
          "OpenQASM",
          "QASM"
        ],
        "extensions": [
          ".qasm",
          ".inc"
        ],
        "configuration": "./language-configuration-openqasm.json"
      }
    ],
    "grammars": [
      {
        "language": "qsharp",
        "scopeName": "source.qsharp",
        "path": "./syntaxes/qsharp.tmLanguage.json"
      },
      {
        "language": "openqasm",
        "scopeName": "source.openqasm",
        "path": "./syntaxes/openqasm.tmLanguage.json"
      }
    ],
    "jsonValidation": [
      {
        "fileMatch": "qsharp.json",
        "url": "./qsharp.schema.json"
      }
    ],
    "debuggers": [
      {
        "type": "qsharp",
        "languages": [
          "qsharp",
          "openqasm"
        ],
        "label": "QDK Debug",
        "configurationAttributes": {
          "launch": {
            "properties": {
              "program": {
                "type": "string",
                "description": "Absolute path to a source file.",
                "default": "${file}"
              },
              "stopOnEntry": {
                "type": "boolean",
                "description": "Automatically stop after launch.",
                "default": false
              },
              "entry": {
                "type": "string",
                "description": "Entry expression.",
                "default": ""
              },
              "shots": {
                "type": "number",
                "description": "Number of shots to execute.",
                "default": 1
              },
              "trace": {
                "type": "boolean",
                "description": "Enable logging of the Debug Adapter Protocol.",
                "default": false
              },
              "showCircuit": {
                "type": "boolean",
                "description": "Display the quantum circuit diagram while running.",
                "default": false
              }
            }
          }
        }
      }
    ],
    "configurationDefaults": {
      "[qsharp]": {
        "debug.saveBeforeStart": "none"
      }
    },
    "customEditors": [
      {
        "viewType": "qsharp-webview.circuit",
        "displayName": "Quantum Circuit",
        "selector": [
          {
            "filenamePattern": "*.qsc"
          }
        ],
        "priority": "default"
      }
    ],
    "languageModelTools": [
      {
        "name": "azure-quantum-get-jobs",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "azureQuantumGetJobs",
        "displayName": "Get Azure Quantum Jobs",
        "modelDescription": "Get a list of recent jobs that have been run by the customer, along with their statuses, in the currently active workspace. Call this when you need to know what jobs have been run recently or need a history of jobs run, for example when a customer asks 'What are my recent jobs?'",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "required": [],
          "additionalProperties": false
        }
      },
      {
        "name": "azure-quantum-get-job",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "azureQuantumGetJob",
        "displayName": "Get Azure Quantum Job Details",
        "modelDescription": "Get the job information for a customer's job given its id. Call this whenever you need to know information about a specific job, for example when a customer asks 'What is the status of my job?'",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {
            "job_id": {
              "type": "string",
              "description": "Job's unique identifier."
            }
          },
          "required": [
            "job_id"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "azure-quantum-connect-to-workspace",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "azureQuantumConnectToWorkspace",
        "displayName": "Connect to Azure Quantum Workspace",
        "modelDescription": "Starts the UI flow to connect to an existing Azure Quantum Workspace. Call this when the customer does not have an active workspace, and agrees to connect to a workspace.",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "required": [],
          "additionalProperties": false
        }
      },
      {
        "name": "azure-quantum-download-job-results",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "azureQuantumDownloadJobResults",
        "displayName": "Download Azure Quantum Job Results",
        "modelDescription": "Download and display the results from a customer's job given its id. Call this when you need to download or display as a histogram the results for a job, for example when a customer asks 'What are the results of my last job?' or 'Can you show me the histogram for this job?'",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {
            "job_id": {
              "type": "string",
              "description": "Job's unique identifier."
            }
          },
          "required": [
            "job_id"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "azure-quantum-get-workspaces",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "azureQuantumGetWorkspaces",
        "displayName": "Get Azure Quantum Workspaces",
        "modelDescription": "Get a list of workspaces the customer has access to, in the form of workspace ids. Call this when you need to know what workspaces the customer has access to, for example when a customer asks 'What are my workspaces?'",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "required": [],
          "additionalProperties": false
        }
      },
      {
        "name": "azure-quantum-submit-to-target",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk",
          "openqasm"
        ],
        "toolReferenceName": "azureQuantumSubmitToTarget",
        "displayName": "Submit Program to Azure Quantum",
        "modelDescription": "Submits a Q# or OpenQASM program to Azure Quantum. The path to a .qs or .qasm file must be specified in the `filePath` parameter. The program will first be compiled to Quantum Intermediate Representation (QIR), and then submitted to run on the specified target.",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {
            "filePath": {
              "type": "string",
              "description": "The absolute path to the .qs or .qasm file. If this file is part of a project, the whole project will be compiled as the program. A .qs file belongs to a project if it resides anywhere under a src/ directory whose parent directory also contains a qsharp.json manifest."
            },
            "jobName": {
              "type": "string",
              "description": "A name for the job."
            },
            "targetId": {
              "type": "string",
              "description": "The ID of the target to submit the job to, as returned by the azure-quantum-get-providers tool."
            },
            "shots": {
              "type": "number",
              "description": "The number of shots to use for the job."
            }
          },
          "required": [
            "filePath",
            "jobName",
            "targetId",
            "shots"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "azure-quantum-get-active-workspace",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "azureQuantumGetActiveWorkspace",
        "displayName": "Get Active Azure Quantum Workspace",
        "modelDescription": "Get the id of the active workspace for this conversation. Call this when you need to know what workspace is the active workspace being used in the context of the current conversation, for example when a customer asks 'What is the workspace that's being used?'",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "required": [],
          "additionalProperties": false
        }
      },
      {
        "name": "azure-quantum-set-active-workspace",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "azureQuantumSetActiveWorkspace",
        "displayName": "Set Active Azure Quantum Workspace",
        "modelDescription": "Set the active workspace for this conversation by id. Call this when you need to set what workspace is the active workspace being used in the context of the current conversation, for example when a customer says 'Please use this workspace for my requests.'",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string",
              "description": "The id of the workspace to set as active."
            }
          },
          "required": [
            "workspace_id"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "azure-quantum-get-providers",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "azureQuantumGetProviders",
        "displayName": "Get Azure Quantum Providers",
        "modelDescription": "Get a list of hardware providers available to the customer, along with their provided targets. Call this when you need to know what providers or targets are available, for example when a customer asks 'What are the available providers?' or 'What targets do I have available?'",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "required": [],
          "additionalProperties": false
        }
      },
      {
        "name": "azure-quantum-get-target",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "azureQuantumGetTarget",
        "displayName": "Get Azure Quantum Target",
        "modelDescription": "Get the target information for a specified target given its id. Call this whenever you need to know information about a specific target, for example when a customer asks 'What is the status of this target?'",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {
            "target_id": {
              "type": "string",
              "description": "The ID of the target to get."
            }
          },
          "required": [
            "target_id"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "qdk-run-program",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk",
          "openqasm"
        ],
        "toolReferenceName": "qdkRunProgram",
        "displayName": "Run Quantum Program",
        "modelDescription": "Executes a Q# or OpenQASM program. The path to a .qs or .qasm file must be specified in the `filePath` parameter. A quantum simulator will be run locally. Q# or OpenQASM do not provide any CLI tools, so call this tool whenever you need to execute code, instead of running any CLI commands. The `shots` parameter controls the number of times to repeat the simulation. If the number of shots is greater than 1, a histogram will be generated, and the results will be displayed in a dedicated panel.",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {
            "filePath": {
              "type": "string",
              "description": "The absolute path to the .qs or .qasm file. If this file is part of a project, the whole project will be compiled as the program. A .qs file belongs to a project if it resides anywhere under a src/ directory whose parent directory also contains a qsharp.json manifest."
            },
            "shots": {
              "type": "number",
              "description": "The number of times to run the program. Defaults to 1 if not specified.",
              "default": 1
            }
          },
          "required": [
            "filePath"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "qdk-generate-circuit",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk",
          "openqasm"
        ],
        "toolReferenceName": "qdkGenerateCircuit",
        "displayName": "Generate Quantum Circuit Diagram",
        "modelDescription": "Generates a visual circuit diagram for a Q# or OpenQASM program. The path to a .qs or .qasm file must be specified in the `filePath` parameter. This tool will compile the program and generate a quantum circuit diagram that visually represents the quantum operations in the code. If the program contains any dynamic behavior such as comparing measurement results, then the program will be executed using a quantum simulator, and the resulting circuit diagram will simply be a trace of the operations that were actually executed during simulation. The diagram will be displayed in a dedicated circuit panel.",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {
            "filePath": {
              "type": "string",
              "description": "The absolute path to the .qs or .qasm file. If this file is part of a project, the whole project will be compiled as the program. A .qs file belongs to a project if it resides anywhere under a src/ directory whose parent directory also contains a qsharp.json manifest."
            }
          },
          "required": [
            "filePath"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "qdk-run-resource-estimator",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk",
          "openqasm"
        ],
        "toolReferenceName": "qdkRunResourceEstimator",
        "displayName": "Run Quantum Resource Estimator",
        "modelDescription": "Runs the quantum resource estimator on a Q# or OpenQASM program to calculate the required physical resources. The path to a .qs or .qasm file must be specified in the `filePath` parameter. This tool will analyze the Q# program and generate estimates of the quantum resources required to run the algorithm, such as the number of qubits, T gates, and other quantum operations. Results will be displayed in a dedicated resource estimator panel.",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {
            "filePath": {
              "type": "string",
              "description": "The absolute path to the .qs or .qasm file. If this file is part of a project, the whole project will be compiled as the program. A .qs file belongs to a project if it resides anywhere under a src/ directory whose parent directory also contains a qsharp.json manifest."
            },
            "qubitTypes": {
              "type": "array",
              "description": "Array of qubit type labels to use for resource estimation. Allowed values:\n- 'qubit_gate_ns_e3': Superconducting/spin qubit with 1e-3 error rate\n- 'qubit_gate_ns_e4': Superconducting/spin qubit with 1e-4 error rate\n- 'qubit_gate_us_e3': Trapped ion qubit with 1e-3 error rate\n- 'qubit_gate_us_e4': Trapped ion qubit with 1e-4 error rate\n- 'qubit_maj_ns_e4 + surface_code': Majorana qubit with 1e-4 error rate (surface code QEC)\n- 'qubit_maj_ns_e6 + surface_code': Majorana qubit with 1e-6 error rate (surface code QEC)\n- 'qubit_maj_ns_e4 + floquet_code': Majorana qubit with 1e-4 error rate (floquet code QEC)\n- 'qubit_maj_ns_e6 + floquet_code': Majorana qubit with 1e-6 error rate (floquet code QEC)",
              "items": {
                "type": "string",
                "enum": [
                  "qubit_gate_ns_e3",
                  "qubit_gate_ns_e4",
                  "qubit_gate_us_e3",
                  "qubit_gate_us_e4",
                  "qubit_maj_ns_e4 + surface_code",
                  "qubit_maj_ns_e6 + surface_code",
                  "qubit_maj_ns_e4 + floquet_code",
                  "qubit_maj_ns_e6 + floquet_code"
                ]
              },
              "default": [
                "qubit_gate_ns_e3"
              ]
            },
            "errorBudget": {
              "type": "number",
              "description": "Error budget for the resource estimation. Must be a number between 0 and 1. Default is 0.001.",
              "minimum": 0,
              "maximum": 1,
              "default": 0.001
            }
          },
          "required": [
            "filePath"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "qsharp-get-library-descriptions",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "qsharpGetLibraryDescriptions",
        "displayName": "Get Q# Library API Descriptions",
        "modelDescription": "Returns a Markdown string summarizing all Q# standard library items, grouped by namespace. Each entry includes its signature and a short description extracted from doc comments when available. Use this tool to answer any questions about Q# library functions or to ensure generated Q# code uses library functions correctly.",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "required": [],
          "additionalProperties": false
        }
      }
    ]
  },
  "scripts": {
    "build": "npm run tsc:check && node build.mjs",
    "build:watch": "node build.mjs --watch",
    "start": "npm exec --no -- @vscode/test-web --extensionDevelopmentPath . ../../samples",
    "test": "node ./test/runTests.mjs -- ",
    "pretest": "npm exec --no playwright install chromium && node ./test/buildTests.mjs",
    "tsc:check:main": "node ../../node_modules/typescript/bin/tsc -p ./tsconfig.json",
    "tsc:check:view": "node ../../node_modules/typescript/bin/tsc -p ./src/webview/tsconfig.json",
    "tsc:check": "npm run tsc:check:main && npm run tsc:check:view",
    "tsc:watch": "node ../../node_modules/typescript/bin/tsc -p ./tsconfig.json --watch --preserveWatchOutput",
    "tsc:watch:view": "node ../../node_modules/typescript/bin/tsc -p ./src/webview/tsconfig.json --watch --preserveWatchOutput"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/microsoft/qsharp.git"
  },
  "license": "SEE LICENSE IN LICENSE.txt",
  "aiKey": "0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255"
}
