50 lines
4.2 KiB
Markdown
50 lines
4.2 KiB
Markdown
# 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.
|