{
  "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 edtior 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#.qir.targetProfile": {
          "type": "string",
          "default": "unrestricted",
          "enum": [
            "unrestricted",
            "base",
            "adaptive_ri",
            "adaptive_rif"
          ],
          "enumDescriptions": [
            "The set of all capabilities required to run any Q# program.",
            "The minimal set of capabilities required to run a quantum program. This option maps to the Base Profile as defined by the QIR specification.",
            "The Adaptive_RI target profile includes all of the required Adaptive Profile capabilities, as well as the optional integer computation and qubit reset capabilities, as defined by the QIR specification.",
            "The Adaptive_RIF target profile includes all of the required Adaptive Profile capabilities, as well as the optional integer & floating point computation and qubit reset capabilities, as defined by the QIR specification."
          ],
          "markdownDescription": "Setting the target profile allows the Q# extension to generate programs that are compatible with a specific target. The target is the hardware or simulator which will be used to run the Q# program. [Learn more](https://aka.ms/qdk.qir)"
        },
        "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"
            }
          }
        }
      }
    },
    "menus": {
      "editor/title/run": [
        {
          "command": "qsharp-vscode.runEditorContents",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm",
          "group": "navigation@1"
        },
        {
          "command": "qsharp-vscode.debugEditorContents",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm",
          "group": "navigation@2"
        }
      ],
      "commandPalette": [
        {
          "command": "qsharp-vscode.debugEditorContents",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm"
        },
        {
          "command": "qsharp-vscode.runEditorContents",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm"
        },
        {
          "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.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.setTargetProfile",
          "when": "resourceLangId == qsharp || resourceLangId == openqasm"
        },
        {
          "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"
        },
        {
          "command": "qsharp-vscode.copilotClear",
          "when": "view == quantum-copilot",
          "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.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": {
      "activitybar": [
        {
          "id": "quantum-copilot-container",
          "title": "Microsoft Quantum Copilot",
          "icon": "resources/Q-vector-1024x1024.svg"
        }
      ]
    },
    "views": {
      "explorer": [
        {
          "id": "quantum-workspaces",
          "name": "Quantum Workspaces"
        }
      ],
      "quantum-copilot-container": [
        {
          "when": "config.Q#.chat.enabled",
          "id": "quantum-copilot",
          "type": "webview",
          "name": "Microsoft Quantum Copilot"
        }
      ]
    },
    "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.debugEditorContents",
        "title": "Debug file",
        "category": "Debug",
        "enablement": "!inDebugMode",
        "icon": "$(debug-alt)"
      },
      {
        "command": "qsharp-vscode.runEditorContents",
        "title": "Run File",
        "category": "Debug",
        "enablement": "!inDebugMode",
        "icon": "$(play)"
      },
      {
        "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.copilotClear",
        "category": "QDK",
        "title": "Clear Quantum Copilot chat",
        "enablement": "config.Q#.chat.enabled && !qdkCopilotIsBusy",
        "icon": "$(clear-all)"
      },
      {
        "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",
        "icon": "$(cloud-download)"
      },
      {
        "command": "qsharp-vscode.setTargetProfile",
        "category": "QDK",
        "title": "Set the Azure Quantum QIR target profile"
      },
      {
        "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.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"
        ],
        "toolReferenceName": "azureQuantumSubmitToTarget",
        "displayName": "Submit to Azure Quantum Target",
        "modelDescription": "Submit the current program to Azure Quantum with the provided information. Call this when you need to submit or run a program with Azure Quantum, for example when a customer asks 'Can you submit this program to Azure?'",
        "canBeReferencedInPrompt": true,
        "icon": "./resources/file-icon-light.svg",
        "inputSchema": {
          "type": "object",
          "properties": {
            "job_name": {
              "type": "string",
              "description": "The string to name the created job."
            },
            "target_id": {
              "type": "string",
              "description": "The ID or name of the target to submit the job to."
            },
            "number_of_shots": {
              "type": "number",
              "description": "The number of shots to use for the job."
            }
          },
          "required": [
            "job_name",
            "target_id",
            "number_of_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": "qsharp-run-program",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "qsharpRunProgram",
        "displayName": "Run Q# Program",
        "modelDescription": "Executes a Q# program. The path to a .qs file must be specified in the `filePath` parameter. A quantum simulator will be run locally. Q# does not provide any CLI tools, so call this tool whenever you need to execute Q#, 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 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": "qsharp-generate-circuit",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "qsharpGenerateCircuit",
        "displayName": "Generate Q# Circuit Diagram",
        "modelDescription": "Generates a visual circuit diagram for a Q# program. The path to a .qs file must be specified in the `filePath` parameter. This tool will compile the Q# 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 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": "qsharp-run-resource-estimator",
        "tags": [
          "azure-quantum",
          "qsharp",
          "qdk"
        ],
        "toolReferenceName": "qsharpRunResourceEstimator",
        "displayName": "Run Q# Resource Estimator",
        "modelDescription": "Runs the quantum resource estimator on a Q# program to calculate the required physical resources. The path to a .qs 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 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
        }
      }
    ]
  },
  "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:copilotView": "node ../node_modules/typescript/bin/tsc -p ./src/copilot/webview/tsconfig.json",
    "tsc:check": "npm run tsc:check:main && npm run tsc:check:view && npm run tsc:check:copilotView",
    "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",
    "tsc:watch:copilotView": "node ../node_modules/typescript/bin/tsc -p ./src/copilot/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"
}
