Skip to content

Commit b82e238

Browse files
release: 2.0.0
Major release: full MCP support (stdio + HTTP + SSE + sampling guard), Claude-Code-compatible skill bundles + web marketplace, OpenRouter provider with authoritative usage.cost, checkpoints, /compact, /cost, custom slash commands, lifecycle hooks, type-to-filter menus, first-run picker reorder. See CHANGELOG.md for the full list.
1 parent 188f7b0 commit b82e238

48 files changed

Lines changed: 8023 additions & 148 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,199 @@ Versioning: [Semantic Versioning](https://semver.org/).
66

77
For releases before v1.3.35, see [GitHub Releases](https://github.com/VladoIvankovic/Codeep/releases).
88

9+
> **Authoring convention:** put a one-line `> TL;DR` under each
10+
> `## [version]` heading. It's auto-extracted by `codeep.dev/releases/rss.xml`
11+
> as the social-share summary (IFTTT → X/Bluesky), capped at 220 chars.
12+
> If omitted, the feed falls back to the first paragraph.
13+
14+
## [2.0.0] — 2026-05-18
15+
16+
> Codeep 2.0 is here. Full MCP support (stdio + HTTP), skill bundles with a public marketplace, OpenRouter with accurate per-call cost, checkpoints, custom commands, lifecycle hooks. 921 tests green.
17+
18+
Big release. Major version bump because the on-disk `mcp_servers.json`
19+
shape now accepts `url` (HTTP transport) alongside `command` (stdio),
20+
because the agent now actively reads from MCP servers' `resources`,
21+
`prompts`, and (optionally) hosts `sampling` for them — clients that
22+
relied on Codeep behaving as a tools-only client will see new traffic
23+
— and because **skill bundles** are a new top-level concept the agent
24+
auto-discovers and invokes.
25+
26+
### Added — OpenRouter provider (100+ models via one key)
27+
28+
- **`openrouter` provider** wired through the existing OpenAI-compatible
29+
flow. Top 12 popular models hardcoded for the picker; the full
30+
catalogue (100+) is fetched on demand via `/model`, with live pricing
31+
per 1M tokens and context-window size shown per row.
32+
- **Authoritative cost from `usage.cost`.** OpenRouter returns the
33+
per-call USD figure in its response — we use that instead of our
34+
local pricing table, so your dashboard / `/cost` numbers match the
35+
OpenRouter invoice exactly with zero local maintenance.
36+
- **Branding headers** (`HTTP-Referer: https://codeep.dev`,
37+
`X-Title: Codeep`) sent on every OpenRouter request — surfaces
38+
Codeep traffic in their dashboard for attribution.
39+
- **`/openrouter` slash command** for routing preferences:
40+
`prefer <p1>,<p2>` (provider order), `ignore <p1>` (block list),
41+
`fallbacks on|off`, `privacy strict|allow` (sets `data_collection`),
42+
`clear`. Stored per-machine in conf.
43+
- **`openrouter/auto` support** — set the model id to `openrouter/auto`
44+
and OpenRouter picks the best upstream for each task. Combine with
45+
`/openrouter prefer` to bias the auto-router without locking it down.
46+
47+
### Added — Skill bundles (Claude Code-compatible)
48+
49+
- **Structured skill bundles** under `.codeep/skills/<name>/SKILL.md`
50+
(project) and `~/.codeep/skills/<name>/SKILL.md` (global). The
51+
SKILL.md format is a **superset of Claude Code skills** — paste an
52+
existing skill verbatim and it works. Codeep-specific extensions
53+
(`codeep-min-version`, `codeep-requires-mcp`) are valid YAML, so
54+
Claude Code parsers tolerate them.
55+
- **Agent auto-discovery.** Every agent run injects the bundle catalog
56+
into the system prompt and registers a virtual `invoke_skill` tool.
57+
The model picks a skill when the user's intent matches; we return
58+
the SKILL.md body for it to follow step by step.
59+
- **Slash commands** for managing bundles:
60+
- `/skills bundles` — list installed
61+
- `/skills create-bundle <name>` — scaffold a project skill
62+
- `/skills show <name>` — print the SKILL.md
63+
- `/skills browse [query]` — search the public marketplace
64+
- `/skills install <owner>/<slug>` — pull from marketplace
65+
- `/skills publish <slug> [--public]` — share to codeep.dev
66+
- `/skills unpublish <owner>/<slug>` — remove your published skill
67+
- **Public marketplace** at [codeep.dev/skills](https://codeep.dev/skills).
68+
Owners manage their published skills at `/dashboard/skills`
69+
toggle visibility, unpublish, see install counts.
70+
- **VS Code commands** for the bundle workflow: `Codeep: Browse Skill
71+
Bundles…`, `Codeep: Create Skill Bundle…`, `Codeep: Open Skills
72+
Folder`.
73+
- **Welcome banner warning** when a workspace ships project-scoped
74+
skill bundles — informed consent before the agent starts invoking
75+
unfamiliar capabilities.
76+
77+
### Added — MCP gets full spec coverage
78+
79+
- **Streamable HTTP transport.** MCP servers configured with `url` (and
80+
optional `headers`) are reached over the spec's HTTP+SSE flow instead
81+
of stdio. POST for requests, GET-side SSE for server-pushed
82+
notifications and server-initiated requests. Mutually exclusive with
83+
`command` — pick one per server.
84+
- **Sampling capability.** When a server opts into `sampling`, it can
85+
ask Codeep to generate a completion on its behalf; we bridge to the
86+
active provider via `chat()`. Server gets just the assistant text;
87+
no tool use is forwarded.
88+
- **Resources & prompts auto-injected into the agent's tool catalog.**
89+
Each server that exposes resources or prompts gets four virtual tools
90+
the model can call natively: `<server>__resource_list`,
91+
`<server>__resource_read`, `<server>__prompt_list`,
92+
`<server>__prompt_get`. No more "user types `/mcp read <uri>`
93+
manually". Servers that don't expose either get nothing extra.
94+
- **Mid-run tool catalog refresh.** A `tools/list_changed` notification
95+
(or a successful auto-restart) flips a dirty bit; the agent re-fetches
96+
the catalog at the start of the next iteration so the model sees new
97+
tools without a session restart.
98+
- **MCP marketplace.** `/mcp browse` shows a curated catalog of popular
99+
servers (filesystem, github, postgres, slack, brave-search, …);
100+
`/mcp install <id> [extra args]` writes the config + spawns. Each
101+
entry surfaces env-var and arg hints so the user knows what to set.
102+
- **`roots` + `roots/list` capability negotiation.** Codeep advertises
103+
`roots: { listChanged: true }` in `initialize` and handles
104+
`roots/list` requests by returning the current workspace folder —
105+
filesystem-shaped servers can scope reads accordingly.
106+
107+
### Added — TUI polish
108+
109+
- **Type-to-filter in every menu picker.** `/model`, `/provider`,
110+
`/login`, `/lang`, sessions, export, logout — start typing and the
111+
list narrows by key / label / description. Backspace edits, first
112+
Esc clears the filter, second Esc closes. Critical for the
113+
OpenRouter 100+ model catalogue but useful everywhere.
114+
- **First-run provider picker reordered.** Anthropic, OpenAI,
115+
OpenRouter, Z.AI sit at the top instead of being buried under
116+
regional / parameter-variant entries. Each row now shows the short
117+
provider description ("Unified access to 100+ models via one API
118+
key") so the value prop is visible at a glance.
119+
120+
### Added — earlier in the 2.0 cycle (already in dev builds)
121+
122+
- **`/cost`**, **`/compact [keepN]`**, **`/commands`**, **`/checkpoint
123+
[name]`**, **`/checkpoints`**, **`/rewind <id>`**, **`/hooks`**,
124+
**`/mcp`** slash commands.
125+
- **Custom slash commands.** `.codeep/commands/<name>.md` Markdown
126+
templates with `{{args}}` / `$ARGUMENTS` / `{{argN}}` placeholders.
127+
Project files shadow global. Warning banner on first session.
128+
- **Lifecycle hooks.** `.codeep/hooks/<event>.sh` shell scripts run on
129+
`pre_tool_call`, `post_edit`, `on_error`, `pre_commit`. Apply
130+
uniformly to built-in and MCP tools.
131+
- **`/memory`** and **`/profile`** now work in ACP (Zed / VS Code), not
132+
just the TUI.
133+
- **ACP `fs/read_text_file` and `fs/write_text_file` delegation**
134+
agent tool calls route through the client when capability is
135+
advertised, with a 100 KB size cap on delegated reads.
136+
- **ACP `authMethods`** — single `Codeep CLI` agent-type entry for
137+
acp-registry compliance + `authenticate` no-op handler.
138+
- **Auto-reconnect on MCP server crash** (3× in 60s with exponential
139+
backoff). Persistent failures surface in `/mcp` instead of being
140+
silently dropped.
141+
- **VS Code 0.2.0:**
142+
- Native `vscode.diff` viewer for proposed edits + Accept/Reject
143+
CodeLens (closes diff tab → implicit reject).
144+
- `Cmd+Shift+A` Attach Active File.
145+
- `@symbol` mentions alongside `@file`.
146+
- MCP server management from the command palette (Add / Remove /
147+
Open Config).
148+
- Auto-loads `~/.codeep/mcp_servers.json` and project equivalent.
149+
- Permission labels honest about scope ("Allow for this session").
150+
151+
### Fixed
152+
153+
- `/provider` was not in `AVAILABLE_COMMANDS` — invisible to Zed / VS
154+
Code `/` autocomplete.
155+
- `/apikey` and `/login` warn that inline keys leak into shell history.
156+
- `write_file` double-recorded itself in the action log when client-side
157+
delegation failed and we fell through to disk.
158+
- Delegated `fs/read_text_file` had no size cap; a misbehaving client
159+
could return a multi-GB blob and OOM the agent.
160+
- `compactHistory()` had no timeout — a hung provider would wedge the
161+
session. Now caps at 60 s with an external `abortSignal` honoured.
162+
- Diff editor occasionally stayed orphaned in VS Code if the user
163+
responded faster than the open completed.
164+
- MCP tool name normalization stripped hyphens, so servers named with a
165+
`-` couldn't route their tool calls (`my-fs__read_file`
166+
`my_fs__read_file`).
167+
168+
### Removed
169+
170+
- 19 obsolete model entries in `tokenTracker.ts` (gpt-4.1*, o3,
171+
o4-mini, gpt-4o, claude-mythos-preview, claude-sonnet-4-5-20250929,
172+
gemini-2.5-*, gemini-3.1-flash-lite-preview, MiniMax-M2.5*,
173+
MiniMax-M2.1*, MiniMax-M2) — continuation of the 1.3.42 cleanup.
174+
175+
### Security
176+
177+
- **MCP `sampling/createMessage` now rate-limited and budget-capped per
178+
server** (≥1 s spacing, 100 requests / process). Each accepted request
179+
is logged to stderr with the originating server name. Closes the path
180+
by which a misbehaving or malicious MCP server could drain a user's
181+
paid-provider credits.
182+
- `npm audit fix` resolved `fast-uri` (path traversal / host confusion)
183+
and `picomatch` (ReDoS / method injection) high-severity CVEs in
184+
transitive dependencies.
185+
186+
### Packaging
187+
188+
- npm tarball reduced from **164.8 MB → 340 kB** (unpacked 436 MB → 1.4 MB)
189+
by excluding `dist/zed/*` and `bin/codeep-*` pkg-built standalone
190+
binaries from the `files` field. Those binaries continue to ship via
191+
GitHub releases and the Zed extension distribution.
192+
193+
### Breaking changes
194+
195+
- `McpServer` in the protocol now has `command?` and `args?` (was
196+
required), plus new `url?` and `headers?`. ACP clients that produced
197+
the old shape still work — fields are optional, parser accepts both.
198+
- MCP client protocol version bumped from `1.4.0` to `2.0.0` in
199+
`initialize`'s `clientInfo`. Servers that key off the version string
200+
may need an allowlist update.
201+
9202
## [1.3.42] — 2026-05-12
10203

11204
### Fixed

0 commit comments

Comments
 (0)