diff --git a/bun.lock b/bun.lock index f07731f..c71eea3 100644 --- a/bun.lock +++ b/bun.lock @@ -21,12 +21,12 @@ }, "packages/wbot": { "name": "@celados/wbot", - "version": "0.3.0-rc.1", + "version": "0.3.0-rc.2", "bin": { "wbot": "./dist/wbot.js", }, "devDependencies": { - "@celados/argc": "^10.2.0", + "@celados/argc": "^11.0.0", "@modelcontextprotocol/sdk": "1.30.0", "@valibot/to-json-schema": "1.8.0", "valibot": "1.5.0", @@ -35,7 +35,7 @@ }, }, "packages": { - "@celados/argc": ["@celados/argc@10.2.0", "https://npm.celados.com/@celados/argc/-/@celados/argc-10.2.0.tgz", { "dependencies": { "yaml": "^2.9.1" }, "peerDependencies": { "@standard-schema/spec": "^1.0.0", "@valibot/to-json-schema": "^1.8.0", "valibot": "^1.5.0" } }, "sha512-cRjltgtnTDmM9WAUQ3Xgm/076R5qns6F+vkzmGxzOnZbY+HiPYAR2nXBsjSbWvBdsmi6gK/oe44NQHjXANBbQw=="], + "@celados/argc": ["@celados/argc@11.0.0", "https://npm.celados.com/@celados/argc/-/@celados/argc-11.0.0.tgz", { "dependencies": { "yaml": "^2.9.1" }, "peerDependencies": { "@standard-schema/spec": "^1.0.0", "@valibot/to-json-schema": "^1.8.0", "valibot": "^1.5.0" } }, "sha512-376S0EpKHXV00RLGmQuMfuYYZBLgWIAHngpdmGAbGAn5FBhHNeKd5Lg9XNdv/qtTfIwlONOLnfyt4QTM1Gw3ZA=="], "@celados/wbot": ["@celados/wbot@workspace:packages/wbot"], diff --git a/packages/wbot/CHANGELOG.md b/packages/wbot/CHANGELOG.md index 35b0a7d..f0639e9 100644 --- a/packages/wbot/CHANGELOG.md +++ b/packages/wbot/CHANGELOG.md @@ -4,6 +4,17 @@ All notable changes to the public wbot client are documented in this file. ## Unreleased +## 0.3.0-rc.2 - 2026-11-12 + +### Breaking Changes + +- Update the CLI framework from `@celados/argc` 10.2 to 11.0. Breaking for callers that read `@schema` + text: it is flat Markdown now. `## Commands` lists one `### ` block per command (for example + `### messages.send`): the description, the input object `{ field: Type // note }` with `= default` + for defaulted fields, and no nested `wbot: { messages: { send(input: …) } }` type or `/** */` + blocks. A namespace is `### messages.*`; the hidden `auth` group is still named by path + (`wbot @schema .auth`). Command names, fields, results, MCP tools and the Platform API are unchanged. + ## 0.3.0-rc.1 - 2026-11-12 ### Breaking Changes diff --git a/packages/wbot/package.json b/packages/wbot/package.json index e218898..8e89583 100644 --- a/packages/wbot/package.json +++ b/packages/wbot/package.json @@ -1,6 +1,6 @@ { "name": "@celados/wbot", - "version": "0.3.0-rc.1", + "version": "0.3.0-rc.2", "private": true, "description": "Agent-first conversation reading and authorized text and JPEG sending with read-only MCP tools", "license": "MIT", @@ -23,7 +23,7 @@ "build": "bun build ./wbot-cli.ts --target=bun --outfile=dist/wbot.js" }, "devDependencies": { - "@celados/argc": "^10.2.0", + "@celados/argc": "^11.0.0", "@modelcontextprotocol/sdk": "1.30.0", "@valibot/to-json-schema": "1.8.0", "valibot": "1.5.0", diff --git a/packages/wbot/scripts/verify-package-artifact.ts b/packages/wbot/scripts/verify-package-artifact.ts index bcb5e91..e711ba8 100644 --- a/packages/wbot/scripts/verify-package-artifact.ts +++ b/packages/wbot/scripts/verify-package-artifact.ts @@ -85,13 +85,13 @@ try { const wbot = join(globalBinDirectory, "wbot"); const schema = await runCommand([wbot, "@schema"], consumerDirectory); for (const command of [ - "list(input:", - "history(input:", - "updates(input:", - "send(input:", + "### conversations.list", + "### messages.history", + "### messages.updates", + "### messages.send", "imagePath", "outbound-sends", - "mcp()", + "### mcp", ]) { if (!schema.stdout.includes(command)) { throw new Error(`The installed wbot artifact is missing ${command}`); diff --git a/packages/wbot/wbot-agent-tools.test.ts b/packages/wbot/wbot-agent-tools.test.ts index e2cfb2a..adfcc1f 100644 --- a/packages/wbot/wbot-agent-tools.test.ts +++ b/packages/wbot/wbot-agent-tools.test.ts @@ -47,10 +47,10 @@ describe("功能 1:CLI 发送能力与 MCP 只读工具面", () => { expect(result.exitCode, result.stderr).toBe(0); expect(result.stdout).toContain("wbot"); - expect(result.stdout).toMatch(/conversations:\s*\{[\s\S]*list\(input:/); - expect(result.stdout).toMatch(/messages:\s*\{[\s\S]*history\(input:/); - expect(result.stdout).toMatch(/messages:\s*\{[\s\S]*updates\(input:/); - expect(result.stdout).toContain("send(input:"); + expect(result.stdout).toContain("### conversations.list"); + expect(result.stdout).toContain("### messages.history"); + expect(result.stdout).toContain("### messages.updates"); + expect(result.stdout).toContain("### messages.send"); expect(result.stdout).toContain("outbound-sends"); expect(result.stdout).toContain("requestId: string"); expect(result.stdout).not.toMatch(/operator/i); diff --git a/packages/wbot/wbot-public-entrypoint.test.ts b/packages/wbot/wbot-public-entrypoint.test.ts index 22e2457..7a41e18 100644 --- a/packages/wbot/wbot-public-entrypoint.test.ts +++ b/packages/wbot/wbot-public-entrypoint.test.ts @@ -51,11 +51,11 @@ describe("功能 1:外部用户只看到一个产品入口", () => { const result = await runCli(["@schema"]); expect(result.exitCode, result.stderr).toBe(0); - expect(result.stdout).toMatch(/conversations:\s*\{[\s\S]*list\(input:/); - expect(result.stdout).toMatch(/messages:\s*\{[\s\S]*history\(input:/); - expect(result.stdout).toMatch(/messages:\s*\{[\s\S]*updates\(input:/); - expect(result.stdout).toContain("mcp()"); - expect(result.stdout).toContain("send(input:"); + expect(result.stdout).toContain("### conversations.list"); + expect(result.stdout).toContain("### messages.history"); + expect(result.stdout).toContain("### messages.updates"); + expect(result.stdout).toContain("### mcp"); + expect(result.stdout).toContain("### messages.send"); expect(result.stdout).toContain("outbound-sends"); expect(result.stdout).not.toMatch(/operator/i); }); diff --git a/plugins/claude/.claude-plugin/marketplace.json b/plugins/claude/.claude-plugin/marketplace.json index 5843296..4ea14a6 100644 --- a/plugins/claude/.claude-plugin/marketplace.json +++ b/plugins/claude/.claude-plugin/marketplace.json @@ -8,7 +8,7 @@ "name": "wbot", "source": "./wbot", "description": "Read authorized WeChat conversations through wbot.", - "version": "0.3.0-rc.1" + "version": "0.3.0-rc.2" } ] } diff --git a/plugins/claude/wbot/.claude-plugin/plugin.json b/plugins/claude/wbot/.claude-plugin/plugin.json index ef42780..16f5088 100644 --- a/plugins/claude/wbot/.claude-plugin/plugin.json +++ b/plugins/claude/wbot/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "wbot", - "version": "0.3.0-rc.1", + "version": "0.3.0-rc.2", "description": "Read authorized WeChat conversations through wbot.", "author": { "name": "Celados" diff --git a/plugins/claude/wbot/.mcp.json b/plugins/claude/wbot/.mcp.json index cc6bd5b..e240679 100644 --- a/plugins/claude/wbot/.mcp.json +++ b/plugins/claude/wbot/.mcp.json @@ -5,7 +5,7 @@ "args": [ "--bun", "--package", - "@celados/wbot@https://github.com/celados/wbot/releases/download/v0.3.0-rc.1/wbot-0.3.0-rc.1.tgz", + "@celados/wbot@https://github.com/celados/wbot/releases/download/v0.3.0-rc.2/wbot-0.3.0-rc.2.tgz", "wbot", "mcp" ] diff --git a/plugins/codex/wbot/.codex-plugin/plugin.json b/plugins/codex/wbot/.codex-plugin/plugin.json index 0122d24..67c69e3 100644 --- a/plugins/codex/wbot/.codex-plugin/plugin.json +++ b/plugins/codex/wbot/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "wbot", - "version": "0.3.0-rc.1", + "version": "0.3.0-rc.2", "description": "Read authorized WeChat conversations through wbot.", "author": { "name": "Celados" diff --git a/plugins/codex/wbot/.mcp.json b/plugins/codex/wbot/.mcp.json index cc6bd5b..e240679 100644 --- a/plugins/codex/wbot/.mcp.json +++ b/plugins/codex/wbot/.mcp.json @@ -5,7 +5,7 @@ "args": [ "--bun", "--package", - "@celados/wbot@https://github.com/celados/wbot/releases/download/v0.3.0-rc.1/wbot-0.3.0-rc.1.tgz", + "@celados/wbot@https://github.com/celados/wbot/releases/download/v0.3.0-rc.2/wbot-0.3.0-rc.2.tgz", "wbot", "mcp" ]