diff --git a/wai/CHANGELOG.md b/wai/CHANGELOG.md index ff9aab444..00e233db4 100644 --- a/wai/CHANGELOG.md +++ b/wai/CHANGELOG.md @@ -6,6 +6,14 @@ wire format may change and such changes are recorded here. ## Unreleased +### wai-quantum-cli 0.2.2: the registry's line shown as text + +This release changes no code. 0.2.1 put the `mcp-name` line in an HTML comment, but the MCP Registry reads the +README as crates.io renders it, and the rendering drops comments, so the registry could not find it. 0.2.2 shows +the line as code in the README (and its translation), and a test holds the README to that. 0.2.1 went to crates.io +only; the binaries, the Homebrew formula and the Scoop manifest go from 0.2.0 to 0.2.2. The desktop app requires +0.2.2, and both lockfiles that hold `wai-quantum-cli` move with it. + ### wai-quantum-cli 0.2.1: the command line on the MCP Registry This release changes no code; `wai-quantum-cli` 0.2.1 is 0.2.0 with the README line the MCP Registry reads. diff --git a/wai/wai-quantum-cli/Cargo.lock b/wai/wai-quantum-cli/Cargo.lock index cac1aff5e..d0ac9590f 100644 --- a/wai/wai-quantum-cli/Cargo.lock +++ b/wai/wai-quantum-cli/Cargo.lock @@ -1133,7 +1133,7 @@ dependencies = [ [[package]] name = "wai-quantum-cli" -version = "0.2.1" +version = "0.2.2" dependencies = [ "clap", "clap_complete", diff --git a/wai/wai-quantum-cli/Cargo.toml b/wai/wai-quantum-cli/Cargo.toml index bed75deb8..cfb987744 100644 --- a/wai/wai-quantum-cli/Cargo.toml +++ b/wai/wai-quantum-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wai-quantum-cli" -version = "0.2.1" +version = "0.2.2" edition = "2024" rust-version = "1.97" license = "Apache-2.0" diff --git a/wai/wai-quantum-cli/README.md b/wai/wai-quantum-cli/README.md index 95fe3e5bf..803af6aaa 100644 --- a/wai/wai-quantum-cli/README.md +++ b/wai/wai-quantum-cli/README.md @@ -1,7 +1,5 @@ # wai-quantum - - The command line of the WAI quantum stack. It runs OpenQASM programs on this machine, planned and run by the same engine as the quantum job service ([`wai_quantum::engine`](../wai-quantum/src/engine/mod.rs)), so a job gives the same result here as there. It also sends programs to the service, checks and draws them, verifies receipts, and serves its tools to agents over MCP. ## Installing it @@ -396,7 +394,7 @@ wai-quantum mcp install --file PATH # merged into the JSON configura { "mcpServers": { "wai-quantum": { "command": "wai-quantum", "args": ["mcp"] } } } ``` -`install` keeps every other entry and key, in its order, and writes the file whole or not at all. It refuses a file that is not a JSON object (one with comments included), and refuses to replace a different `wai-quantum` entry unless you pass `--force`. `--command` gives the full path of `wai-quantum` for a client that does not search your PATH, and `--name`, `--memory-gb` and `--key` shape the entry. [`server.json`](server.json) describes the server in the MCP Registry's format, as `science.transaction.wai/quantum`. +`install` keeps every other entry and key, in its order, and writes the file whole or not at all. It refuses a file that is not a JSON object (one with comments included), and refuses to replace a different `wai-quantum` entry unless you pass `--force`. `--command` gives the full path of `wai-quantum` for a client that does not search your PATH, and `--name`, `--memory-gb` and `--key` shape the entry. [`server.json`](server.json) describes the server in the MCP Registry's format, as `science.transaction.wai/quantum`. The registry checks this crate's claim to that name against this line of the README as crates.io shows it: `mcp-name: science.transaction.wai/quantum`. ### Instructions for coding agents diff --git a/wai/wai-quantum-cli/README.zh-CN.md b/wai/wai-quantum-cli/README.zh-CN.md index c593a0244..534e76637 100644 --- a/wai/wai-quantum-cli/README.zh-CN.md +++ b/wai/wai-quantum-cli/README.zh-CN.md @@ -387,7 +387,7 @@ wai-quantum mcp install --file PATH # 合并到客户端读取的 JS { "mcpServers": { "wai-quantum": { "command": "wai-quantum", "args": ["mcp"] } } } ``` -`install` 保留其他所有条目和键及其顺序,并且要么完整写入文件,要么完全不写。它拒绝不是 JSON 对象的文件(包括带注释的文件),并且除非你传入 `--force`,否则拒绝替换另一个不同的 `wai-quantum` 条目。对于不搜索你的 PATH 的客户端,`--command` 给出 `wai-quantum` 的完整路径;`--name`、`--memory-gb` 和 `--key` 用于定制该条目。[`server.json`](server.json) 以 MCP 注册表的格式描述该服务器,名称为 `science.transaction.wai/quantum`。 +`install` 保留其他所有条目和键及其顺序,并且要么完整写入文件,要么完全不写。它拒绝不是 JSON 对象的文件(包括带注释的文件),并且除非你传入 `--force`,否则拒绝替换另一个不同的 `wai-quantum` 条目。对于不搜索你的 PATH 的客户端,`--command` 给出 `wai-quantum` 的完整路径;`--name`、`--memory-gb` 和 `--key` 用于定制该条目。[`server.json`](server.json) 以 MCP 注册表的格式描述该服务器,名称为 `science.transaction.wai/quantum`。注册表根据 crates.io 显示的 README 中的这一行核对本 crate 对该名称的归属:`mcp-name: science.transaction.wai/quantum`。 ### 给编程智能体的说明 diff --git a/wai/wai-quantum-cli/server.json b/wai/wai-quantum-cli/server.json index 3a368939e..69da413ea 100644 --- a/wai/wai-quantum-cli/server.json +++ b/wai/wai-quantum-cli/server.json @@ -3,14 +3,14 @@ "name": "science.transaction.wai/quantum", "title": "WAI Quantum", "description": "OpenQASM 3 programs run, checked against their intent and signed on this machine.", - "version": "0.2.1", + "version": "0.2.2", "websiteUrl": "https://wai.transaction.science/quantum-run/", "packages": [ { "registryType": "cargo", "registryBaseUrl": "https://crates.io", "identifier": "wai-quantum-cli", - "version": "0.2.1", + "version": "0.2.2", "transport": { "type": "stdio" }, diff --git a/wai/wai-quantum-cli/src/guide.rs b/wai/wai-quantum-cli/src/guide.rs index f0c40295f..df56aa0de 100644 --- a/wai/wai-quantum-cli/src/guide.rs +++ b/wai/wai-quantum-cli/src/guide.rs @@ -871,5 +871,10 @@ mod tests { assert_eq!((p["identifier"].as_str(), p["version"].as_str()), (Some(env!("CARGO_PKG_NAME")), Some(env!("CARGO_PKG_VERSION")))); assert_eq!(p["packageArguments"][0]["value"], "mcp"); assert_eq!(p["transport"]["type"], "stdio"); + // The registry finds this token in the README as crates.io renders it, which drops + // HTML comments: it is shown as code, and the `` after it ends the name. + let token = format!("`mcp-name: {name}`"); + let readme = include_str!("../README.md"); + assert!(readme.contains(&token) && !readme.contains(&format!("