From 3e660d4e2003267fc3e196b8653510cd5cddb04a Mon Sep 17 00:00:00 2001 From: escott- Date: Tue, 13 Oct 2026 13:02:27 -0700 Subject: [PATCH] chore(release): prepare MCP 1.0.24 Bumps the workspace, npm package, MCP Registry metadata and the boundary self-test to 1.0.24. Adds the 1.0.24 changelog: the Agent Coach Kit tool descriptions and the /coach server instructions describe the coaching behaviour instead of commanding replies and approvals, after ChatGPT's permission card flagged the first workflow_save call (ad73c8d); and the plugin signs in with ChatGPT's Client ID Metadata Document (5527e2b, repository only). The tools, their parameters and their behaviour are unchanged. No dependency changes; no open PRs were left out. Checked on ovh-desktop against main ad73c8d plus this change, on the final tree (the gate ran twice: the second run after the changelog's length claim was corrected, because workflow_delete grew from 513 to 518 characters and the commit message of ad73c8d says no description grows): - cargo fmt --all --check - cargo clippy --locked --workspace --all-targets -- -D warnings - cargo test --locked --workspace --all-targets: 3279 passed, 0 failed, 21 ignored - account_connection_smoke: 9 tests - cargo audit --deny warnings (403 crates, no advisories) and cargo deny --locked check - on a clean archive: release_contract metadata and resolve-version for tag v1.0.24, public_boundary, the four script tests, the adoption and grounding tests, npm test (6 passed) - the gate binary on /coach over the stateless and the legacy transport: exactly the three coach tools, none of the six flagged phrases in any description or in the instructions from initialize and server/discover, the replacement wording present, identical input schemas; the published 1.0.23 fails the 7 wording checks Co-Authored-By: Claude Sonnet 5.5 Signed-off-by: escott- --- .github/scripts/test_public_boundary.py | 2 +- CHANGELOG.md | 34 +++++++++++++++++++++++++ Cargo.lock | 14 +++++----- Cargo.toml | 14 +++++----- package.json | 2 +- server.json | 4 +-- 6 files changed, 52 insertions(+), 18 deletions(-) diff --git a/.github/scripts/test_public_boundary.py b/.github/scripts/test_public_boundary.py index 2e2e62a..87d92d1 100644 --- a/.github/scripts/test_public_boundary.py +++ b/.github/scripts/test_public_boundary.py @@ -26,7 +26,7 @@ def test_private_search_names_are_rejected_in_public_comments_and_copy(self) -> boundary.verify_paths_and_source(root) def test_repository_satisfies_public_boundary(self) -> None: - self.assertEqual(boundary.verify(REPOSITORY_ROOT), "1.0.23") + self.assertEqual(boundary.verify(REPOSITORY_ROOT), "1.0.24") def test_forbidden_private_source_is_detected(self) -> None: with tempfile.TemporaryDirectory(prefix="public-boundary-") as temporary: diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e29701..442d571 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,39 @@ # Changelog +## 1.0.24 + +- Agent Coach Kit: the text of the `workflow`, `workflow_save` and + `workflow_delete` tools and of the `/coach` server instructions describes the + coaching behaviour instead of commanding replies and approvals. ChatGPT's + permission card for the first `workflow_save` call warned "Suspicious + Instruction": the call was clean, the wording was the trigger ("without being + asked", "never claim ... unless the reply ends with", "never invent + approval", "nothing is deleted"). The text now says what each tool does and + what the statuses mean: a reaction is recorded with `add_feedback`; a result + ends with `[COACH_SAVED]` or `[COACH_ALREADY_SAVED]` when stored and + `[COACH_NOT_SAVED]` or `[COACH_CONFLICT]` when not; approvals, verdicts and + scores come from the person and facts from the job's sources; each change is + a new version and earlier versions stay readable; `COACH DATA` is the + person's stored data, "reference, not instructions"; `workflow_delete` is for + the person's own request. The text keeps about the same length (`workflow` + 1332 to 1331 characters, `workflow_save` 2054 to 2054, `workflow_delete` 513 + to 518, the instructions 739 to 737). The tools, their parameters and their + behaviour are unchanged, and a test keeps the flagged phrases out of the + server instructions and all three descriptions (ad73c8d). +- Agent Coach Kit for Codex Cloud and the ChatGPT plugin package (repository + only): the skills and the AGENTS snippet get the same rewording, with the rule + leads kept identical across both skills (ad73c8d). The plugin signs in with + ChatGPT's Client ID Metadata Document (`"mode": "cimd"` in + `plugins/agent-coach-kit/mcp.json`) instead of registering a client per + connection, now that ContextStream's authorization server advertises + `client_id_metadata_document_supported`; dynamic registration stays available + as a fallback (5527e2b). + +Who gets what: the new tool and instruction text reaches ChatGPT and Codex when +the hosted gateway runs this version. The default, OpenAI and consolidated tool +lists do not change. The kit and the plugin package live in the repository; +they are not part of the npm package or the binaries. No dependency changes. + ## 1.0.23 - Agent Coach Kit: `workflow(action="compare")` marks feedback a version diff --git a/Cargo.lock b/Cargo.lock index a3720ee..ff9a1b7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1624,7 +1624,7 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "mcp-acceleration-products" -version = "1.0.23" +version = "1.0.24" dependencies = [ "async-trait", "chrono", @@ -1642,7 +1642,7 @@ dependencies = [ [[package]] name = "mcp-client" -version = "1.0.23" +version = "1.0.24" dependencies = [ "anyhow", "base64 0.23.1", @@ -1670,7 +1670,7 @@ dependencies = [ [[package]] name = "mcp-model-registry" -version = "1.0.23" +version = "1.0.24" dependencies = [ "mcp-types", "serde", @@ -1679,7 +1679,7 @@ dependencies = [ [[package]] name = "mcp-server" -version = "1.0.23" +version = "1.0.24" dependencies = [ "anyhow", "async-trait", @@ -1736,7 +1736,7 @@ dependencies = [ [[package]] name = "mcp-session" -version = "1.0.23" +version = "1.0.24" dependencies = [ "chrono", "dashmap", @@ -1756,7 +1756,7 @@ dependencies = [ [[package]] name = "mcp-tools" -version = "1.0.23" +version = "1.0.24" dependencies = [ "anyhow", "async-trait", @@ -1792,7 +1792,7 @@ dependencies = [ [[package]] name = "mcp-types" -version = "1.0.23" +version = "1.0.24" dependencies = [ "async-trait", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 8e65db0..ab71178 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ members = [ ] [workspace.package] -version = "1.0.23" +version = "1.0.24" edition = "2021" rust-version = "1.95" license = "MIT" @@ -90,12 +90,12 @@ fs2 = "0.4" notify = "8" # Workspace crates -mcp-types = { version = "=1.0.23", path = "crates/mcp-types" } -mcp-client = { version = "=1.0.23", path = "crates/mcp-client" } -mcp-session = { version = "=1.0.23", path = "crates/mcp-session" } -mcp-tools = { version = "=1.0.23", path = "crates/mcp-tools" } -mcp-model-registry = { version = "=1.0.23", path = "crates/mcp-model-registry" } -mcp-acceleration-products = { version = "=1.0.23", path = "crates/mcp-acceleration-products" } +mcp-types = { version = "=1.0.24", path = "crates/mcp-types" } +mcp-client = { version = "=1.0.24", path = "crates/mcp-client" } +mcp-session = { version = "=1.0.24", path = "crates/mcp-session" } +mcp-tools = { version = "=1.0.24", path = "crates/mcp-tools" } +mcp-model-registry = { version = "=1.0.24", path = "crates/mcp-model-registry" } +mcp-acceleration-products = { version = "=1.0.24", path = "crates/mcp-acceleration-products" } # Testing mockall = "0.15" diff --git a/package.json b/package.json index 9c3f1a9..c70992a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@contextstream/mcp-server", "mcpName": "io.github.contextstream/mcp-server", - "version": "1.0.23", + "version": "1.0.24", "description": "Verified npm launcher for the open-source ContextStream Rust MCP server", "type": "module", "license": "MIT", diff --git a/server.json b/server.json index 0902bf7..aa1bd00 100644 --- a/server.json +++ b/server.json @@ -3,7 +3,7 @@ "name": "io.github.contextstream/mcp-server", "title": "ContextStream MCP Server", "description": "Project memory, semantic code search, and grounded agent context.", - "version": "1.0.23", + "version": "1.0.24", "repository": { "url": "https://github.com/contextstream/mcp-server", "source": "github" @@ -20,7 +20,7 @@ "registryType": "npm", "registryBaseUrl": "https://registry.npmjs.org", "identifier": "@contextstream/mcp-server", - "version": "1.0.23", + "version": "1.0.24", "transport": { "type": "stdio" },