Files
claude-mem/docs/context/vscode-copilot-extension-plan.md
T

4.2 KiB

VS Code Copilot Extension Integration Plan

1. Groundwork

  • Audit existing claude-mem hook scripts (context-hook, user-message-hook, new-hook, save-hook, summary-hook, cleanup-hook) and their worker-service payloads.
  • Document REST endpoints, request bodies, and SessionStore schema fields used today so the extension mirrors them exactly.
  • Confirm worker service availability workflow (ensureWorkerRunning, port resolution) and decide how extension error reporting will surface issues to Copilot chat users.

2. Project Scaffold

  • Clone the VS Code chat-sample starter, convert to a TypeScript-only extension, and align lint/tsconfig with repo standards.
  • Add build pipeline (esbuild or webpack) plus npm scripts that match the existing scripts/build-hooks.js release flow.
  • Wire extension activation events for chat participation and ensure packaging metadata (publisher, categories) is in place.

3. Shared Worker Client

  • Extract reusable worker-service client utilities from plugin/scripts/*.js (port discovery, session init, observation uploads).
  • Publish TypeScript definitions by re-exporting from src/services/worker-types.ts to keep contracts synchronized.
  • Centralize HTTP calls (timeouts, retries, logging) so every tool implementation uses the same helper layer.

4. Language Model Tool Contracts

  • Add contributes.languageModelTools entries in package.json for lifecycle parity:
    • mem_session_init, mem_user_prompt_log, mem_observation_record, mem_summary_finalize, mem_session_cleanup.
  • Provide detailed JSON schemas mirroring hook input structures (session IDs, cwd, prompt text, tool payload metadata).
  • Supply descriptive modelDescription, userDescription, icons, tags, and enable canBeReferencedInPrompt where appropriate.

5. Tool Implementations

  • Register each tool via vscode.lm.registerTool inside activate.
  • Implement prepareInvocation to show user confirmations (especially for cleanup/stop actions) and tailor messages to match existing CLI prompts.
  • In invoke, call the shared worker client, translate successes into LanguageModelToolResult text parts, and craft error messages that guide the LLM toward recovery (retry, alternate parameters).
  • Ensure telemetry/logging records tool usage for debugging without leaking sensitive data.

6. Chat Orchestration

  • Implement a chat participant based on the sample that maps Copilot threads to claude-mem session IDs stored in turn metadata.
  • On conversation start, auto-run mem_session_init; before each user prompt, dispatch mem_user_prompt_log; when Copilot signals stop, run mem_summary_finalize (with fallbacks if the worker is unavailable).
  • Capture tool events emitted by Copilot (file edits, terminal runs) and forward them through mem_observation_record with matching payload structure.
  • Handle conversation disposal or model changes by calling mem_session_cleanup to mirror SessionEnd hooks.

7. Settings and UX

  • Read .claude-mem/settings.json overrides (worker port, observation depth) and surface VS Code settings for Copilot-specific toggles (auto-sync enabled, max observations per prompt).
  • Add status bar indicator/commands for worker health, quick restart instructions, and opening the viewer UI (http://localhost:37777).
  • Provide inline notifications when the worker is unreachable, including guidance to restart via PM2.

8. Testing and QA

  • Draft manual validation checklist: initial session, prompt logging, observation capture, summary completion, worker-down handling.
  • Add integration tests using @vscode/test-electron to simulate chat turns and assert database side effects in a temporary claude-mem data directory.
  • Build mocks for worker endpoints to enable unit tests of tool invocation logic without hitting the real service.

9. Release Readiness

  • Document installation and usage in README.md, including architecture diagrams showing Copilot → tool → worker flow.
  • Update CHANGELOG and marketing copy to announce Copilot support and list prerequisites (worker running, settings file placement).
  • Prepare Marketplace assets (icon, gallery text) and extend existing publish scripts to package and ship the new extension.