diff --git a/bun.lock b/bun.lock index 26ec960..f07731f 100644 --- a/bun.lock +++ b/bun.lock @@ -21,21 +21,21 @@ }, "packages/wbot": { "name": "@celados/wbot", - "version": "0.2.7", + "version": "0.3.0-rc.1", "bin": { "wbot": "./dist/wbot.js", }, "devDependencies": { - "@celados/argc": "^8.0.0", + "@celados/argc": "^10.2.0", "@modelcontextprotocol/sdk": "1.30.0", - "@valibot/to-json-schema": "1.7.1", - "valibot": "1.4.2", + "@valibot/to-json-schema": "1.8.0", + "valibot": "1.5.0", "zod": "4.4.3", }, }, }, "packages": { - "@celados/argc": ["@celados/argc@8.0.0", "https://npm.celados.com/@celados/argc/-/@celados/argc-8.0.0.tgz", { "dependencies": { "yaml": "2.9.0" }, "peerDependencies": { "@standard-schema/spec": "^1.0.0" } }, "sha512-xVY1Dqta6Z5Fhx2QpDC4udfkC6903YOniosf0clmd034+Cvn56G968RIElW6n7BXw/oVTBBZTT+HnQInxImRtw=="], + "@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/wbot": ["@celados/wbot@workspace:packages/wbot"], @@ -235,7 +235,7 @@ "@types/node": ["@types/node@24.13.3", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q=="], - "@valibot/to-json-schema": ["@valibot/to-json-schema@1.7.1", "", { "peerDependencies": { "valibot": "^1.4.0" } }, "sha512-3qkmU6KXWh8GIThEAW3kuRHPQBMjWkKy+Ppz3WkUucx53DTpOa6siMn4xDGSOhlVyMrDaJTCTMLYPZVAIk1P0A=="], + "@valibot/to-json-schema": ["@valibot/to-json-schema@1.8.0", "", { "peerDependencies": { "valibot": "^1.5.0" } }, "sha512-a0M+uwCuQZEPAo65NYkFSJ14O5c213KoSZmPdoCfuFvUhfULi4T2Z6Tpjv6lTVMW9RoLm74RpRAjNEa43KcN+g=="], "@vitest/expect": ["@vitest/expect@4.1.0", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.0", "@vitest/utils": "4.1.0", "chai": "^6.2.2", "tinyrainbow": "^3.0.3" } }, "sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA=="], @@ -541,7 +541,7 @@ "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], - "valibot": ["valibot@1.4.2", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-gjdCvJ6d3RyHAneqxMYMW9QMCwYMb3jpOO0IyHZV1bnRHFBHrX3VkIILt5XYR0WhwHiH7Mty8ovuPZ/O3gamrg=="], + "valibot": ["valibot@1.5.0", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-nil6AkP2TChWL43Z5uJ6GTxX01CUA+g8LWUM+N/rB9NBbkUMaUsi9PUNzlUPgoKASgmx9f7eGOYpJ04/fSa6FQ=="], "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], @@ -559,7 +559,7 @@ "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], - "yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], + "yaml": ["yaml@2.9.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw=="], "zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], diff --git a/packages/wbot/CHANGELOG.md b/packages/wbot/CHANGELOG.md index ce79d71..66bbc49 100644 --- a/packages/wbot/CHANGELOG.md +++ b/packages/wbot/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to the public wbot client are documented in this file. ## Unreleased +## 0.3.0-rc.1 - 2026-11-12 + +### Changed + +- Update the CLI framework from `@celados/argc` 8.0 to 10.2. Breaking for callers that read + `@schema` text or branch on input error codes: + - argc 9.0 removes the agent pipe guard: `wbot @skill`, `wbot @schema` and help are no longer + refused with `OUTPUT_CAPTURED` when stdout is captured. + - The whole input object may come from stdin (`wbot messages.send - <<'EOF' … EOF`) or a file + (`wbot messages.send @send.yaml`) as YAML or JSON5, so multi-line `text` needs no escaping. + - A malformed input is `error: BAD_INPUT` (with `source`, `format`, `line`/`col`) instead of + `BAD_INPUT_JSON`. + - `@schema` renders input-side types (fields with defaults are optional, e.g. `limit?: number`) and + its `call:` frontmatter is a list that includes the heredoc form. The hidden `auth` group is no + longer listed (argc 8.2 honours `hidden`); `wbot @schema .auth` and `wbot auth set` still work. + - Command names, fields, results, MCP tools and the Platform API are unchanged. + ## 0.2.8 - 2026-11-06 ### Changed diff --git a/packages/wbot/README.md b/packages/wbot/README.md index 052fb4e..8ec20f4 100644 --- a/packages/wbot/README.md +++ b/packages/wbot/README.md @@ -112,8 +112,22 @@ wbot messages.send '{ "conversationId": "conversation-id", "requestId": "digest: wbot outbound-sends.get '{ "outboundSendId": "outbound-send-id" }' ``` +Multi-line text is easiest as the whole input in YAML on stdin: the quoted heredoc expands nothing +and `|` keeps the lines verbatim. The same object can come from a file: `wbot messages.send @send.yaml`. + +```sh +wbot messages.send - <<'EOF' +conversationId: conversation-id +requestId: digest:2026-09-21:conversation-id +requestedBy: agent:grok +text: | + Daily summary + - 3 new threads +EOF +``` + All four send fields are required non-empty strings. `requestedBy` identifies the caller for -attribution; it does not change the Tenant or its authorization. JSON text supports newlines and +attribution; it does not change the Tenant or its authorization. Text supports newlines and Unicode. The send result contains `outboundSendId`, `conversationId`, and `status: "queued"`. Save `outboundSendId` and query it to obtain the current execution outcome. diff --git a/packages/wbot/package.json b/packages/wbot/package.json index ca695fd..e218898 100644 --- a/packages/wbot/package.json +++ b/packages/wbot/package.json @@ -1,6 +1,6 @@ { "name": "@celados/wbot", - "version": "0.2.8", + "version": "0.3.0-rc.1", "private": true, "description": "Agent-first conversation reading and authorized text and JPEG sending with read-only MCP tools", "license": "MIT", @@ -23,10 +23,10 @@ "build": "bun build ./wbot-cli.ts --target=bun --outfile=dist/wbot.js" }, "devDependencies": { - "@celados/argc": "^8.0.0", + "@celados/argc": "^10.2.0", "@modelcontextprotocol/sdk": "1.30.0", - "@valibot/to-json-schema": "1.7.1", - "valibot": "1.4.2", + "@valibot/to-json-schema": "1.8.0", + "valibot": "1.5.0", "zod": "4.4.3" }, "engines": { diff --git a/packages/wbot/scripts/verify-package-artifact.ts b/packages/wbot/scripts/verify-package-artifact.ts index ff3f8ee..bcb5e91 100644 --- a/packages/wbot/scripts/verify-package-artifact.ts +++ b/packages/wbot/scripts/verify-package-artifact.ts @@ -165,8 +165,7 @@ async function runCommand( ): Promise<{ stdout: string; stderr: string }> { const child = Bun.spawn([...command], { cwd, - // A program reading the CLI's output opts out of argc's agent pipe guard (7.12). - env: { ...Bun.env, ...additionalEnvironment, CI: "1", ARGC_ALLOW_CAPTURE: "1" }, + env: { ...Bun.env, ...additionalEnvironment, CI: "1" }, stdin: "ignore", stdout: "pipe", stderr: "pipe", diff --git a/plugins/claude/.claude-plugin/marketplace.json b/plugins/claude/.claude-plugin/marketplace.json index be1fc4c..5843296 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.2.8" + "version": "0.3.0-rc.1" } ] } diff --git a/plugins/claude/wbot/.claude-plugin/plugin.json b/plugins/claude/wbot/.claude-plugin/plugin.json index c175e3e..ef42780 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.2.8", + "version": "0.3.0-rc.1", "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 13a0d6a..cc6bd5b 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.2.8/wbot-0.2.8.tgz", + "@celados/wbot@https://github.com/celados/wbot/releases/download/v0.3.0-rc.1/wbot-0.3.0-rc.1.tgz", "wbot", "mcp" ] diff --git a/plugins/codex/wbot/.codex-plugin/plugin.json b/plugins/codex/wbot/.codex-plugin/plugin.json index e70e6cc..0122d24 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.2.8", + "version": "0.3.0-rc.1", "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 13a0d6a..cc6bd5b 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.2.8/wbot-0.2.8.tgz", + "@celados/wbot@https://github.com/celados/wbot/releases/download/v0.3.0-rc.1/wbot-0.3.0-rc.1.tgz", "wbot", "mcp" ]