Skip to content

feat: add VS Code plugin workspace - #647

Open
LiHao-MS wants to merge 6 commits into
MoonshotAI:mainfrom
LiHao-MS:add-vscode
Open

feat: add VS Code plugin workspace#647
LiHao-MS wants to merge 6 commits into
MoonshotAI:mainfrom
LiHao-MS:add-vscode

Conversation

@LiHao-MS

@LiHao-MS LiHao-MS commented Jun 11, 2026

Copy link
Copy Markdown

Related Issue

No linked issue yet; the problem is described below.

Problem

Kimi Code currently supports IDE integration through ACP clients, but the repository does not include a first-party VS Code extension. VS Code users need a native sidebar/chat surface that can reuse the local Kimi Code CLI login state, drive sessions through ACP, show approvals and file changes, and expose common editor commands without manual ACP client setup.

What changed

Added a VS Code workspace app for Kimi Code, including the extension host, private VS Code agent SDK, display model, React webview UI, packaging/build scripts, runtime boundary checks, and workspace/Nix configuration.

Extended the ACP adapter and SDK surfaces needed by the extension, including Kimi extension notifications for compaction, interrupted steps, subagent activity, shared slash command metadata, and SDK clear-context support.

Added focused tests for the VS Code agent SDK, display model, webview stores, and ACP adapter behavior. Updated the IDE documentation in English and Chinese with Kimi Code for VS Code usage notes.

Updated VS Code history loading so selecting a saved session replays local session records from agents/main/wire.jsonl without starting the CLI, resets stale active/prewarmed sessions before replay, and shows a loading indicator while history is being loaded.

Rebase onto latest main

Rebased the branch onto the current main (previously it carried a merge commit) so the PR is now a linear history of five commits on top of origin/main. Conflicts were limited to shared infrastructure files (AGENTS.md, package.json, flake.nix, .gitignore, .changeset/*, pnpm-workspace.yaml) and apps/kimi-code/src/tui/commands/registry.ts. The registry conflict was semantic: the shared slash-command registry was merged with the /add-dir and /web commands that landed on main after this branch was created, so both commands are now registered in the shared registry and the /add-dir path completion is wired through the TUI extensions map.

Optimization pass

  • Hardened webview bridge effects: trackFiles, clearTrackedFiles, and getMCPServers now attach .catch handlers instead of leaving rejected promises unhandled, and the intentionally no-op display effects are documented.
  • Removed the unused recommended-mcp module from the webview services barrel.
  • Added a test script to apps/vscode (runs the agent-sdk, display-model, and webview suites) and a typecheck script to the webview package.
  • Restored argumentHint passthrough in the TUI slash-command adapter so hints such as /add-dir [list] | <path> survive the shared registry, with a contract test locking the surface scoping.

Validation

  • pnpm -C apps/vscode test (agent-sdk, display-model, webview suites)
  • pnpm -C apps/vscode run typecheck
  • pnpm -C apps/vscode run build
  • pnpm -C apps/vscode run lint (0 errors, pre-existing warnings only)
  • pnpm --filter @moonshot-ai/acp-adapter test and pnpm --filter @moonshot-ai/kimi-code run typecheck
  • node scripts/check-nix-workspace.mjs (workspacePaths / workspaceNames in sync)
  • git diff --check

Note: the pnpmDeps hash in flake.nix is carried from the earlier "stabilize VS Code workspace CI" commit. Because the lockfile was regenerated against the rebased tree, the Nix build CI may report a fresh got hash; if so it will be applied in a follow-up commit.

Checklist

  • I have read the CONTRIBUTING document.
  • I have linked a related issue, or explained the problem above.
  • I have added tests that prove my feature works.
  • Ran gen-changesets skill, or this PR needs no changeset.
  • Ran gen-docs skill, or this PR needs no doc update.

@changeset-bot

changeset-bot Bot commented Jun 11, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7d8af44

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@moonshot-ai/kimi-code Minor
@moonshot-ai/kimi-code-sdk Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d1d10c4845

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/vscode/src/managers/git.manager.ts Outdated
Comment thread apps/vscode/src/managers/git.manager.ts
Comment thread apps/vscode/src/handlers/file.handler.ts Outdated
@pkg-pr-new

pkg-pr-new Bot commented Jun 11, 2026

Copy link
Copy Markdown
pnpm dlx https://pkg.pr.new/@moonshot-ai/kimi-code@d1d10c4
npx https://pkg.pr.new/@moonshot-ai/kimi-code@d1d10c4

commit: d1d10c4

lihao added 6 commits June 29, 2026 16:27
- Add .catch handlers to bridge RPC effects (trackFiles, clearTrackedFiles,
  getMCPServers) so rejected promises no longer surface as unhandled
  rejections; document the intentionally no-op display effects.
- Remove the unused recommended-mcp module from the webview services barrel.
- Add a test script to apps/vscode and a typecheck script to the webview
  so the package has standard, self-contained entry points.
- Restore argumentHint passthrough in the TUI slash command adapter so
  hints like /add-dir [list] | <path> survive the shared registry, and
  lock the surface scoping with a contract test.
Advertise and implement /goal, /plan, /auto, /swarm, /model, and /undo on
the ACP surface so VS Code (and other ACP clients) can use them:

- /goal: status / pause / resume / cancel / create (create also kicks off
  the first turn pursuing the objective), backed by the SDK goal lifecycle.
- /plan, /auto: toggle the corresponding session mode.
- /model: show the current model or switch with /model <name>.
- /swarm: toggle swarm mode (on/off/bare) or run a task in swarm mode.
- /undo: withdraw the last prompt from the transcript.

Each command gets an input hint where it takes arguments, and the shared
registry stays the single source of truth for the ACP palette.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant