Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/scripts/test_public_boundary.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.21")
self.assertEqual(boundary.verify(REPOSITORY_ROOT), "1.0.22")

def test_forbidden_private_source_is_detected(self) -> None:
with tempfile.TemporaryDirectory(prefix="public-boundary-") as temporary:
Expand Down
44 changes: 44 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,49 @@
# Changelog

## 1.0.22

- Agent Coach Kit: a new `/coach` endpoint lets a person coach an agent on
recurring work from ChatGPT or Codex. It serves exactly three tools:
`workflow` (read-only: `capabilities`, `list`, `get`, `context`, `history`,
`compare`, `metrics`, `export`), `workflow_save` (append-only: create a
workflow, refine its goal, start a job, save an output as text, an https link
or a file the host hands over, add, rescope or retract feedback, edit or
import guidance, set effort, close, reopen or cancel a job, record a
verdict) and `workflow_delete` (one workflow, only with `confirm` set to its
slug; hidden at once, erased within 30 days). Every write carries an
operation id derived from its arguments, so a retry never saves twice, and
ends with one status line: `[COACH_SAVED]`, `[COACH_ALREADY_SAVED]`,
`[COACH_CONFLICT]` or `[COACH_NOT_SAVED]`. Replies name things by readable
reference (`weekly-note#4/v2`), keep the person's words ("You said") apart
from the coach's reading, and fence saved data as data, not instructions.
`/coach` has its own OAuth protected-resource metadata
(`/.well-known/oauth-protected-resource/coach`, scopes `read:coach` and
`write:coach`) and serves a ChatGPT widget (`ui://widget/coach.html`); hosts
without widgets get the same information as text. The coach tools stay off
every other surface; a server started with
`CONTEXTSTREAM_TOOL_SURFACE_PROFILE=coach` serves only them. Coach is a pilot:
accounts without it get `coach_not_enabled`, which is not treated as a
sign-in problem (3ccd4fe, 956e406).
- Hosted gateway: the HTTP gateway registers the coach tools (it builds its own
tool registry, so `/coach` listed nothing there), `compare` no longer shows a
version as revising itself, and `get` on guidance shows the person's words
beside the coach's reading (956e406).
- Tool results can carry `_meta`, which the transports merge into the
response's `_meta`; the coach tools use it to ask ChatGPT to sign the person
in after a 401 or 403 (3ccd4fe).
- Agent Coach Kit for Codex Cloud (`kits/agent-coach-kit/codex-cloud`): Codex
Cloud tasks cannot load MCP servers, so a repo skill
(`.agents/skills/contextstream-coach/SKILL.md`) and a standard-library helper
(`scripts/coach.py`) call the coach REST API with the person's key from a
Codex network secret. The README covers the environment, network access, the
storage host for large media, every command, the save tags and the exit
codes. The kit lives in the repository; it is not part of the npm package or
the binaries (066161c, 2809dab).

Who gets what: the coach tools reach ChatGPT and Codex when the hosted gateway
runs this version; the default, OpenAI and consolidated tool lists do not
change. No dependency changes.

## 1.0.21

- Hosted gateway: tools no longer read or write the gateway host's own disk.
Expand Down
14 changes: 7 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 7 additions & 7 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ members = [
]

[workspace.package]
version = "1.0.21"
version = "1.0.22"
edition = "2021"
rust-version = "1.95"
license = "MIT"
Expand Down Expand Up @@ -90,12 +90,12 @@ fs2 = "0.4"
notify = "8"

# Workspace crates
mcp-types = { version = "=1.0.21", path = "crates/mcp-types" }
mcp-client = { version = "=1.0.21", path = "crates/mcp-client" }
mcp-session = { version = "=1.0.21", path = "crates/mcp-session" }
mcp-tools = { version = "=1.0.21", path = "crates/mcp-tools" }
mcp-model-registry = { version = "=1.0.21", path = "crates/mcp-model-registry" }
mcp-acceleration-products = { version = "=1.0.21", path = "crates/mcp-acceleration-products" }
mcp-types = { version = "=1.0.22", path = "crates/mcp-types" }
mcp-client = { version = "=1.0.22", path = "crates/mcp-client" }
mcp-session = { version = "=1.0.22", path = "crates/mcp-session" }
mcp-tools = { version = "=1.0.22", path = "crates/mcp-tools" }
mcp-model-registry = { version = "=1.0.22", path = "crates/mcp-model-registry" }
mcp-acceleration-products = { version = "=1.0.22", path = "crates/mcp-acceleration-products" }

# Testing
mockall = "0.15"
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@contextstream/mcp-server",
"mcpName": "io.github.contextstream/mcp-server",
"version": "1.0.21",
"version": "1.0.22",
"description": "Verified npm launcher for the open-source ContextStream Rust MCP server",
"type": "module",
"license": "MIT",
Expand Down
4 changes: 2 additions & 2 deletions server.json
Original file line number Diff line number Diff line change
Expand Up @@ -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.21",
"version": "1.0.22",
"repository": {
"url": "https://github.com/contextstream/mcp-server",
"source": "github"
Expand All @@ -20,7 +20,7 @@
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "@contextstream/mcp-server",
"version": "1.0.21",
"version": "1.0.22",
"transport": {
"type": "stdio"
},
Expand Down
Loading