The extension contributes breakpoints for OpenQASM and a `wai-quantum` debugger whose launch settings (program, stopOnEntry, inputs, noise, method, outcomes) are the ones `wai-quantum dap` reads; it starts the adapter as the command line's dap verb, and "Debug the program" debugs the file in the editor. The Lua configuration registers the adapter with the debug adapter plugin, and languages.toml declares it with a launch template. test/check.mjs holds the manifest to the adapter's source and checks the client starts it; the editors workflow runs the debugger's module tests and tests/dap.rs on Linux and macOS. Co-Authored-By: Claude Opus 5.5 <[email protected]>
275 lines
8.2 KiB
JSON
275 lines
8.2 KiB
JSON
{
|
|
"name": "wai-quantum",
|
|
"displayName": "WAI Quantum",
|
|
"description": "OpenQASM 3 with the WAI Quantum engine: its diagnostics, completion, hover with each gate's matrix and cost, definitions, renames, formatting, Run, Plan, Critique, Shortcuts and Receipt run on this machine, and a debugger that steps a program forward and back through its state and its branches",
|
|
"version": "0.1.0",
|
|
"publisher": "transaction-science",
|
|
"license": "Apache-2.0",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://git.transaction.science/Transaction-Science/open-standards",
|
|
"directory": "wai/tools/wai-quantum-editor"
|
|
},
|
|
"homepage": "https://wai.transaction.science/quantum-run",
|
|
"engines": {
|
|
"vscode": "^1.91.0"
|
|
},
|
|
"categories": [
|
|
"Programming Languages",
|
|
"Formatters",
|
|
"Linters",
|
|
"Debuggers"
|
|
],
|
|
"keywords": [
|
|
"openqasm",
|
|
"qasm",
|
|
"quantum",
|
|
"language server",
|
|
"debugger"
|
|
],
|
|
"main": "./dist/extension.js",
|
|
"activationEvents": [
|
|
"onLanguage:openqasm",
|
|
"onDebugResolve:wai-quantum"
|
|
],
|
|
"contributes": {
|
|
"languages": [
|
|
{
|
|
"id": "openqasm",
|
|
"aliases": [
|
|
"OpenQASM",
|
|
"openqasm",
|
|
"qasm"
|
|
],
|
|
"extensions": [
|
|
".qasm"
|
|
],
|
|
"configuration": "./language-configuration.json"
|
|
}
|
|
],
|
|
"grammars": [
|
|
{
|
|
"language": "openqasm",
|
|
"scopeName": "source.openqasm",
|
|
"path": "./syntaxes/openqasm.tmLanguage.json"
|
|
}
|
|
],
|
|
"breakpoints": [
|
|
{
|
|
"language": "openqasm"
|
|
}
|
|
],
|
|
"debuggers": [
|
|
{
|
|
"type": "wai-quantum",
|
|
"label": "WAI Quantum",
|
|
"languages": [
|
|
"openqasm"
|
|
],
|
|
"configurationAttributes": {
|
|
"launch": {
|
|
"required": [
|
|
"program"
|
|
],
|
|
"properties": {
|
|
"program": {
|
|
"type": "string",
|
|
"default": "${file}",
|
|
"description": "The program to debug."
|
|
},
|
|
"stopOnEntry": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Stop before the first step, rather than at the first breakpoint."
|
|
},
|
|
"inputs": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
},
|
|
"default": {},
|
|
"description": "The values a generator's integer inputs are read at, as {\"n\": 4}."
|
|
},
|
|
"noise": {
|
|
"type": "object",
|
|
"description": "Noise channels and their probabilities (depolarizing_1q, depolarizing_2q, amplitude_damping, dephasing, readout): the density matrix is stepped, beside the noiseless state."
|
|
},
|
|
"method": {
|
|
"type": "string",
|
|
"enum": [
|
|
"auto",
|
|
"exact",
|
|
"statevector",
|
|
"density_matrix"
|
|
],
|
|
"default": "auto",
|
|
"description": "What the engine steps: the bit-exact or double-precision state vector, or the density matrix."
|
|
},
|
|
"outcomes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"enum": [
|
|
0,
|
|
1
|
|
]
|
|
},
|
|
"description": "The outcome of each measurement the path meets, in order (a recorded path, replayed); the likelier when not given."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"initialConfigurations": [
|
|
{
|
|
"type": "wai-quantum",
|
|
"request": "launch",
|
|
"name": "Debug the program",
|
|
"program": "${file}",
|
|
"stopOnEntry": true
|
|
}
|
|
],
|
|
"configurationSnippets": [
|
|
{
|
|
"label": "WAI Quantum: Debug the program",
|
|
"description": "Step through an OpenQASM program on the engine",
|
|
"body": {
|
|
"type": "wai-quantum",
|
|
"request": "launch",
|
|
"name": "Debug the program",
|
|
"program": "^\"\\${file}\"",
|
|
"stopOnEntry": true
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"configuration": {
|
|
"title": "WAI Quantum",
|
|
"properties": {
|
|
"waiQuantum.path": {
|
|
"type": "string",
|
|
"default": "wai-quantum",
|
|
"markdownDescription": "The `wai-quantum` command line the editor runs as its language server (`wai-quantum lsp`): a name on the `PATH`, or a full path."
|
|
},
|
|
"waiQuantum.serverArgs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": [],
|
|
"markdownDescription": "More arguments for `wai-quantum lsp`, as `[\"--key\", \"/path/to/key\"]` to sign runs with that key, or `[\"--demo-key\"]` for the published demo key."
|
|
},
|
|
"waiQuantum.inputs": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
},
|
|
"default": {},
|
|
"markdownDescription": "The values a generator's integer inputs are read at, as `{\"n\": 8}`. An input not given is read at 4."
|
|
},
|
|
"waiQuantum.shots": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"default": null,
|
|
"markdownDescription": "The shots Run and Receipt sample; the engine's own default (1024) when not set."
|
|
},
|
|
"waiQuantum.trace.server": {
|
|
"type": "string",
|
|
"enum": [
|
|
"off",
|
|
"messages",
|
|
"verbose"
|
|
],
|
|
"default": "off",
|
|
"description": "Log the messages between the editor and the language server."
|
|
}
|
|
}
|
|
},
|
|
"commands": [
|
|
{
|
|
"command": "waiQuantum.run",
|
|
"title": "Run the program here",
|
|
"category": "WAI Quantum"
|
|
},
|
|
{
|
|
"command": "waiQuantum.plan",
|
|
"title": "Plan the program",
|
|
"category": "WAI Quantum"
|
|
},
|
|
{
|
|
"command": "waiQuantum.critique",
|
|
"title": "Critique the program",
|
|
"category": "WAI Quantum"
|
|
},
|
|
{
|
|
"command": "waiQuantum.shortcuts",
|
|
"title": "Find the program's classical shortcuts",
|
|
"category": "WAI Quantum"
|
|
},
|
|
{
|
|
"command": "waiQuantum.receipt",
|
|
"title": "Run the program and show its receipt",
|
|
"category": "WAI Quantum"
|
|
},
|
|
{
|
|
"command": "waiQuantum.debug",
|
|
"title": "Debug the program",
|
|
"category": "WAI Quantum"
|
|
},
|
|
{
|
|
"command": "waiQuantum.showOutput",
|
|
"title": "Show the results",
|
|
"category": "WAI Quantum"
|
|
},
|
|
{
|
|
"command": "waiQuantum.restart",
|
|
"title": "Restart the language server",
|
|
"category": "WAI Quantum"
|
|
}
|
|
],
|
|
"menus": {
|
|
"commandPalette": [
|
|
{
|
|
"command": "waiQuantum.run",
|
|
"when": "editorLangId == openqasm"
|
|
},
|
|
{
|
|
"command": "waiQuantum.plan",
|
|
"when": "editorLangId == openqasm"
|
|
},
|
|
{
|
|
"command": "waiQuantum.critique",
|
|
"when": "editorLangId == openqasm"
|
|
},
|
|
{
|
|
"command": "waiQuantum.shortcuts",
|
|
"when": "editorLangId == openqasm"
|
|
},
|
|
{
|
|
"command": "waiQuantum.receipt",
|
|
"when": "editorLangId == openqasm"
|
|
},
|
|
{
|
|
"command": "waiQuantum.debug",
|
|
"when": "editorLangId == openqasm"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"scripts": {
|
|
"build": "node build.mjs",
|
|
"package": "node build.mjs && vsce package --no-dependencies --baseContentUrl https://git.transaction.science/Transaction-Science/open-standards/src/branch/main/wai/tools/wai-quantum-editor --baseImagesUrl https://git.transaction.science/Transaction-Science/open-standards/raw/branch/main/wai/tools/wai-quantum-editor --out wai-quantum.vsix",
|
|
"test": "node test/check.mjs"
|
|
},
|
|
"dependencies": {
|
|
"vscode-languageclient": "10.1.2"
|
|
},
|
|
"devDependencies": {
|
|
"@vscode/vsce": "4.0.0",
|
|
"esbuild": "0.28.2",
|
|
"luaparse": "0.3.1",
|
|
"smol-toml": "1.9.0"
|
|
}
|
|
}
|