feat(connect): Warp + Cline + Continue + Zed + Droid adapters (5 new)#677
Conversation
Warp stores MCP config at ~/.warp/.mcp.json with the same mcpServers schema as Claude Code, so the shared createJsonMcpAdapter wires it in 17 lines. Adds Warp to the connect surface (12 adapters total) and the README agents grid. Native-citizen second-class win: Warp's skill discovery already scans .claude/skills/ — installing the existing agentmemory Claude Code plugin makes the 8 memory skills (remember, recall, recap, handoff, forget, commit-context, commit-history, session-history) appear in Warp's slash-command palette with zero extra wiring. Tests bumped: ADAPTERS.length 11 -> 12, knownAgents includes 'warp', new connect-new-agents Warp install case.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (9)
✅ Files skipped from review due to trivial changes (2)
🚧 Files skipped from review as they are similar to previous changes (7)
📝 WalkthroughWalkthroughAdds multiple new CLI connect adapters (Warp, Cline, Droid, Zed, Continue), extends the JSON MCP adapter to support a configurable top-level wrapperKey, registers adapters in the CLI registry, updates tests to cover detection/installation, and documents Warp in the README. ChangesConnect adapters and json-mcp-adapter
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint skipped: no ESLint configuration detected in root package.json. To enable, add Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
src/cli/connect/warp.ts (1)
5-10: ⚡ Quick winReplace WHAT-style block comments with self-documenting names or compact rationale-only notes.
This comment block is descriptive but violates the repo rule for
srcTS files.As per coding guidelines,
src/**/*.{ts,tsx}should “Avoid code comments explaining WHAT — use clear naming instead”.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/cli/connect/warp.ts` around lines 5 - 10, The top-of-file WHAT-style comment in warp.ts should be replaced with a concise, rationale-only note or self-documenting symbol: remove the multi-line descriptive block and either (a) add a short one-line comment summarizing intent (e.g., "// MCP server config stored under ~/.warp/.mcp.json; see docs for details") or (b) create a named constant or JSDoc near the related export (e.g., MCP_SERVERS_DOC or the mcpServers variable/function) with a compact rationale and a docs URL; do not leave long WHAT explanations in src TS files.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@README.md`:
- Around line 199-203: The agents grid row currently uses fixed <td
align="center" width="12.5%"> cells which makes the row exceed 100% when an
extra cell (the Warp cell with its anchor and image) is added; either move the
Warp <td> into a new <tr> so the original row stays at 8 cells, or change the
per-cell sizing to a responsive approach (e.g., remove fixed width attributes
from the <td> elements or normalize them to equal fractions like ~11.11% for 9
cells and let CSS handle wrapping), and ensure the Warp <td> (the <a
href="https://www.warp.dev">... image ...</a>) is updated accordingly.
In `@test/connect-new-agents.test.ts`:
- Around line 119-127: The test overrides process.env["HOME"] but not
process.env["USERPROFILE"], which can make os.homedir() return the real host
path on Windows; capture the original USERPROFILE (e.g. const ORIG_USERPROFILE =
process.env["USERPROFILE"]) alongside ORIG, set process.env["USERPROFILE"] =
home inside beforeEach (where home = freshHome()), and restore ORIG_USERPROFILE
in afterEach (similar to restoring process.env["HOME"]); apply these changes
around the existing beforeEach/afterEach that reference ORIG, home, freshHome(),
vi.resetModules(), and rmSync so homedir()-based path resolution is
deterministic on Windows.
---
Nitpick comments:
In `@src/cli/connect/warp.ts`:
- Around line 5-10: The top-of-file WHAT-style comment in warp.ts should be
replaced with a concise, rationale-only note or self-documenting symbol: remove
the multi-line descriptive block and either (a) add a short one-line comment
summarizing intent (e.g., "// MCP server config stored under ~/.warp/.mcp.json;
see docs for details") or (b) create a named constant or JSDoc near the related
export (e.g., MCP_SERVERS_DOC or the mcpServers variable/function) with a
compact rationale and a docs URL; do not leave long WHAT explanations in src TS
files.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: e3715b13-6a9c-4efe-9ccb-f6e5844982c1
📒 Files selected for processing (5)
README.mdsrc/cli/connect/index.tssrc/cli/connect/warp.tstest/cli-connect.test.tstest/connect-new-agents.test.ts
| const ORIG = process.env["HOME"]; | ||
| beforeEach(() => { | ||
| home = freshHome(); | ||
| vi.resetModules(); | ||
| process.env["HOME"] = home; | ||
| }); | ||
| afterEach(() => { | ||
| process.env["HOME"] = ORIG; | ||
| rmSync(home, { recursive: true, force: true }); |
There was a problem hiding this comment.
❓ Verification inconclusive
🏁 Script executed:
#!/bin/bash
# Verify this test mutates HOME but not USERPROFILE,
# while the adapter uses node:os homedir().
set -euo pipefail
echo "== Adapter uses homedir() =="
rg -n --type=ts 'homedir\(\)|detectDir|configPath' src/cli/connect/warp.ts
echo
echo "== Warp suite env setup =="
rg -n --type=ts -C2 'describe\("connect: Warp"|process\.env\["HOME"\]|USERPROFILE' test/connect-new-agents.test.tsRepository: rohitg00/agentmemory
Length of output: 1981
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Where node:os homedir() is used (any TS) =="
rg -n --type=ts 'homedir\(' src || true
echo
echo "== Warp suite env setup =="
rg -n --type=ts -C2 'describe\("connect: Warp"|process\.env\["HOME"\]|process\.env\["USERPROFILE"\]' test/connect-new-agents.test.tsRepository: rohitg00/agentmemory
Length of output: 1962
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Where homedir() is used =="
rg -n --type=ts 'homedir\(' src || true
echo
echo "== Warp suite env setup =="
rg -n --type=ts -C2 'describe\("connect: Warp"|process\.env\["HOME"\]|process\.env\["USERPROFILE"\]' test/connect-new-agents.test.tsRepository: rohitg00/agentmemory
Length of output: 1962
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Adapter uses node:os homedir() =="
rg -n --type=ts 'homedir\(' src || true
echo
echo "== Warp suite env setup (HOME/USERPROFILE) =="
rg -n --type=ts -C2 'describe\("connect: Warp"|process\.env\["HOME"\]|process\.env\["USERPROFILE"\]' test/connect-new-agents.test.tsRepository: rohitg00/agentmemory
Length of output: 1962
Mirror process.env["USERPROFILE"] with process.env["HOME"] in the Warp suite (test/connect-new-agents.test.ts, lines 119-127) to keep homedir()-based path resolution deterministic on Windows.
Only overriding HOME can cause node:os homedir() to fall back to host-specific USERPROFILE, making the test environment non-isolated/flaky.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@test/connect-new-agents.test.ts` around lines 119 - 127, The test overrides
process.env["HOME"] but not process.env["USERPROFILE"], which can make
os.homedir() return the real host path on Windows; capture the original
USERPROFILE (e.g. const ORIG_USERPROFILE = process.env["USERPROFILE"]) alongside
ORIG, set process.env["USERPROFILE"] = home inside beforeEach (where home =
freshHome()), and restore ORIG_USERPROFILE in afterEach (similar to restoring
process.env["HOME"]); apply these changes around the existing
beforeEach/afterEach that reference ORIG, home, freshHome(), vi.resetModules(),
and rmSync so homedir()-based path resolution is deterministic on Windows.
ADAPTERS bumped 12 -> 16. Schemas verified via context7 (Cline, Continue, Goose) + WebFetch (Zed, Droid). - Cline: ~/.cline/mcp.json, same Claude-style mcpServers wrapper. - Droid (Factory.ai): ~/.factory/mcp.json, same mcpServers wrapper with optional type:stdio per entry. - Zed: ~/.config/zed/settings.json, uses 'context_servers' key (NOT mcpServers); createJsonMcpAdapter now accepts wrapperKey override. - Continue.dev: ~/.continue/config.json, mcpServers is an ARRAY of named entries (not object) — custom adapter writes array form. Goose deferred — its YAML config uses 'extensions:' with 'cmd' (not 'command') and adding a YAML dep for one adapter isn't worth it. README documents the manual path (goose configure → Add Extension → MCP). Tests: 8 new install + detect cases under connect-new-agents.test.ts. ADAPTERS.length 12 -> 16. All 1181 unit tests pass.
Doc verification flagged two real schema bugs in the prior commit:
1. Droid (Factory.ai): docs.factory.ai/cli/configuration/mcp specifies 'type' as REQUIRED for stdio servers ('Either stdio or http'). Previous entry was missing it — Droid would reject the agentmemory block at parse time. Extended createJsonMcpAdapter with optional extraEntryFields; droid sets type:'stdio'.
2. Continue.dev: config.yaml takes precedence over config.json per docs.continue.dev/reference/yaml-migration. config.json is deprecated and ignored when yaml is present. Prior adapter wrote to config.json blindly which would no-op on modern Continue installs.
New three-branch logic:
- yaml exists -> stub result with copy-pasteable block (refuses silent yaml mutation, no YAML dep in tree)
- json exists (legacy only) -> modify in place
- neither -> create fresh config.yaml via hand-rolled emitter (safe since no existing content to preserve)
Zed (~/.config/zed/settings.json), Cline (~/.cline/mcp.json), Warp (~/.warp/.mcp.json) paths re-verified against current docs — all correct.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/cli/connect/zed.ts`:
- Around line 11-14: The isMac conditional and ternary in computing zedConfigDir
is dead code since both branches call join(homedir(), ".config", "zed"); remove
the isMac variable and the ternary and replace with a single constant
declaration for zedConfigDir that directly assigns join(homedir(), ".config",
"zed") (keep the existing imports of platform(), join, homedir() if used
elsewhere).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: eb461402-0b96-427f-b95f-be26e7f2e5a7
📒 Files selected for processing (9)
README.mdsrc/cli/connect/cline.tssrc/cli/connect/continue.tssrc/cli/connect/droid.tssrc/cli/connect/index.tssrc/cli/connect/json-mcp-adapter.tssrc/cli/connect/zed.tstest/cli-connect.test.tstest/connect-new-agents.test.ts
✅ Files skipped from review due to trivial changes (1)
- README.md
🚧 Files skipped from review as they are similar to previous changes (1)
- src/cli/connect/index.ts
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
src/cli/connect/json-mcp-adapter.ts (1)
25-27: ⚡ Quick winRemove inline WHAT-comments and rely on naming/docs instead.
This new explanatory block should be moved to higher-level docs (or removed) to match the repo’s TS style rule.
As per coding guidelines, "Avoid code comments explaining WHAT — use clear naming instead".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/cli/connect/json-mcp-adapter.ts` around lines 25 - 27, Remove the inline explanatory comment that starts "Extra fields merged into the agentmemory entry..." above the extraEntryFields property in json-mcp-adapter.ts; instead either move that explanation into higher-level docs or convert it into proper TSDoc for the interface/type that contains extraEntryFields, and ensure the property name extraEntryFields remains self-descriptive (or rename it if needed) so the code needs no WHAT-comment inline.src/cli/connect/continue.ts (1)
16-23: ⚡ Quick winDrop WHAT-comments in this TS source and keep intent in naming/log messages.
These added explanatory comments should be removed or moved to external docs to align with project conventions.
As per coding guidelines, "Avoid code comments explaining WHAT — use clear naming instead".
Also applies to: 53-55, 88-90, 101-102, 151-151
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/cli/connect/continue.ts` around lines 16 - 23, Remove the large "WHAT" explanatory comment blocks in this module (including the block above CONTINUE_DIR and the other comment blocks referenced) and preserve their intent by using clearer identifier names and concise log/messages instead of inline WHAT-comments; specifically, keep the constant CONTINUE_DIR, remove the long descriptive comment above it, and where those comments explained behavior (YAML vs JSON handling, migration branches, or links) fold that text into descriptive variable/flag names, function names, or concise log messages and move full explanations to external docs per project conventions.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/cli/connect/continue.ts`:
- Around line 91-94: The prompt text is misleading because manual includes a
full snippet with a top-level mcpServers: key (generated by renderFreshYaml())
but tells users to "Add this under mcpServers", which will duplicate the key;
update the message around the manual variable to either instruct users to "Add
or merge this top-level snippet into ~/.continue/config.yaml (it already
includes the mcpServers: key)" or change the snippet generation to omit the
top-level key; specifically modify the string that builds manual (where manual
is defined) to clarify "merge/replace top-level mcpServers:" or adjust the
call/renderFreshYaml() so it returns only the inner entries if you intend
insertion under an existing mcpServers key.
---
Nitpick comments:
In `@src/cli/connect/continue.ts`:
- Around line 16-23: Remove the large "WHAT" explanatory comment blocks in this
module (including the block above CONTINUE_DIR and the other comment blocks
referenced) and preserve their intent by using clearer identifier names and
concise log/messages instead of inline WHAT-comments; specifically, keep the
constant CONTINUE_DIR, remove the long descriptive comment above it, and where
those comments explained behavior (YAML vs JSON handling, migration branches, or
links) fold that text into descriptive variable/flag names, function names, or
concise log messages and move full explanations to external docs per project
conventions.
In `@src/cli/connect/json-mcp-adapter.ts`:
- Around line 25-27: Remove the inline explanatory comment that starts "Extra
fields merged into the agentmemory entry..." above the extraEntryFields property
in json-mcp-adapter.ts; instead either move that explanation into higher-level
docs or convert it into proper TSDoc for the interface/type that contains
extraEntryFields, and ensure the property name extraEntryFields remains
self-descriptive (or rename it if needed) so the code needs no WHAT-comment
inline.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: d6800fb9-b4a4-4ace-a53b-c025cbf10f85
📒 Files selected for processing (5)
README.mdsrc/cli/connect/continue.tssrc/cli/connect/droid.tssrc/cli/connect/json-mcp-adapter.tstest/connect-new-agents.test.ts
✅ Files skipped from review due to trivial changes (1)
- README.md
🚧 Files skipped from review as they are similar to previous changes (2)
- src/cli/connect/droid.ts
- test/connect-new-agents.test.ts
Three of four CodeRabbit findings on PR #677 verified valid + fixed: - README agents grid was 9 cells x 12.5% = 112.5% on row 2 — overflow. Moved Warp to a fresh row 3. - src/cli/connect/zed.ts had an isMac ternary returning the same path on both branches (dead code). Collapsed to one constant. - src/cli/connect/continue.ts yaml-stub message said 'under mcpServers:' but the printed snippet already includes the top-level mcpServers: key. Reworded to 'merge this block' and explicitly noted the snippet's own top-level key, so users with an existing mcpServers list append rather than duplicate. Skipped (one): test harness mutates HOME but not USERPROFILE. Adapter detect uses node:os homedir() which reads USERPROFILE on Windows. Connect command explicitly refuses to run on Windows (platform()==='win32' early-exit), so the Windows path isn't exercised. Pre-existing pattern across all connect tests.
PR #677 shipped 5 MCP-only adapters (Warp, Cline, Continue, Zed, Droid) but didn't ship native skill installs, which left ~600 LOC of per-agent file-tree manipulation on the table. Turns out the vercel-labs/skills CLI already covers 4 of the 5 (warp, cline, continue, droid) plus 45+ other agents, reading SKILL.md files from any git repo and installing to the calling agent's native directory. This wires that path into the agentmemory UX without taking a new runtime dep: - `summarize()` in `src/cli/connect/index.ts` prints a one-line next-step pointing users at `npx skills add rohitg00/agentmemory -y` after any successful or already-wired adapter run. No subprocess spawn — keeps `connect` deterministic + offline-capable; the install is opt-in. - README "Other agents" section gets a "Native skills via `npx skills add`" subsection explaining the two-step pattern (`connect` for MCP, `skills add` for skill autoload) and listing the 50+ supported agents. - README install snippet bumps from one-line `connect` to the two-line flow so first-run users see both paths immediately. Tracked via #708. Closes the audit angle for #703 / #704 / #705 / #707 — see those issues' closing comments. #706 (Zed) remains open since the skills CLI keyword list doesn't include Zed yet.
Bumps version across 9 files + adds CHANGELOG entry summarizing the 18 commits since v0.9.22. Highlights: - GitHub Copilot CLI first-class support (#534) — plugin + hooks + MCP with LSP-style Content-Length framing on the standalone stdio transport. - Five new MCP adapters: Warp, Cline, Continue, Zed, Droid (#677); ADAPTERS count 11 → 17. - Three silent DX bugs fixed: graph extraction never fired on session end (#666 / #698), status reported zero memories (#666), consolidation defaulted off even with an LLM provider configured (#612 / #696). - Nine telemetry hooks switched to fire-and-forget so they don't block Claude Code's next-prompt boundary (#573 / #688). - Hook project field now sends repo basename instead of full filesystem path so auto-injected context isn't silently filtered out (#474 / #687). - Local-LLM docs: Ollama / LM Studio / vLLM section added (#671 / #697). Version-bump files: package.json, plugin/.claude-plugin/plugin.json, plugin/plugin.json, plugin/.codex-plugin/plugin.json, packages/mcp/package.json, src/version.ts, src/types.ts, src/functions/export-import.ts, test/export-import.test.ts.
* chore(release): v0.9.23 Bumps version across 9 files + adds CHANGELOG entry summarizing the 18 commits since v0.9.22. Highlights: - GitHub Copilot CLI first-class support (#534) — plugin + hooks + MCP with LSP-style Content-Length framing on the standalone stdio transport. - Five new MCP adapters: Warp, Cline, Continue, Zed, Droid (#677); ADAPTERS count 11 → 17. - Three silent DX bugs fixed: graph extraction never fired on session end (#666 / #698), status reported zero memories (#666), consolidation defaulted off even with an LLM provider configured (#612 / #696). - Nine telemetry hooks switched to fire-and-forget so they don't block Claude Code's next-prompt boundary (#573 / #688). - Hook project field now sends repo basename instead of full filesystem path so auto-injected context isn't silently filtered out (#474 / #687). - Local-LLM docs: Ollama / LM Studio / vLLM section added (#671 / #697). Version-bump files: package.json, plugin/.claude-plugin/plugin.json, plugin/plugin.json, plugin/.codex-plugin/plugin.json, packages/mcp/package.json, src/version.ts, src/types.ts, src/functions/export-import.ts, test/export-import.test.ts. * chore(release): add #701 + #709 to v0.9.23 CHANGELOG
Five new connect adapters. `ADAPTERS` bumps 11 → 16.
Shared helper extensions
`createJsonMcpAdapter` gained two options:
Continue uses a custom adapter (array form + yaml branch) — separate from the shared helper.
Doc verification (end-to-end)
After the first cut, re-verified every adapter against its authoritative docs. Two real schema bugs caught:
Native-citizen win
Beyond MCP wiring: Warp's skill discovery already scans `.claude/skills/`, `.codex/skills/`, `.cursor/skills/`. Once a user installs the agentmemory Claude Code plugin, all 8 memory skills (`remember`, `recall`, `recap`, `handoff`, `forget`, `commit-context`, `commit-history`, `session-history`) surface in Warp's slash-command palette automatically.
Deferred
Verification
Sources
Summary by CodeRabbit
New Features
Tests
Documentation