claude-ide-bridge 2.4.10 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +251 -23
  2. package/dist/activityLog.d.ts +10 -23
  3. package/dist/activityLog.js +22 -12
  4. package/dist/activityLog.js.map +1 -1
  5. package/dist/activityTypes.d.ts +31 -0
  6. package/dist/activityTypes.js +9 -0
  7. package/dist/activityTypes.js.map +1 -0
  8. package/dist/bridge.js +43 -5
  9. package/dist/bridge.js.map +1 -1
  10. package/dist/config.d.ts +10 -0
  11. package/dist/config.js +75 -6
  12. package/dist/config.js.map +1 -1
  13. package/dist/index.js +95 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/oauth.d.ts +1 -1
  16. package/dist/oauth.js +9 -6
  17. package/dist/oauth.js.map +1 -1
  18. package/dist/prompts.js +642 -0
  19. package/dist/prompts.js.map +1 -1
  20. package/dist/server.d.ts +32 -2
  21. package/dist/server.js +103 -13
  22. package/dist/server.js.map +1 -1
  23. package/dist/streamableHttp.js +12 -6
  24. package/dist/streamableHttp.js.map +1 -1
  25. package/dist/teammateTokens.d.ts +61 -0
  26. package/dist/teammateTokens.js +202 -0
  27. package/dist/teammateTokens.js.map +1 -0
  28. package/dist/tools/httpClient.d.ts +3 -1
  29. package/dist/tools/httpClient.js +7 -6
  30. package/dist/tools/httpClient.js.map +1 -1
  31. package/dist/tools/index.d.ts +21 -0
  32. package/dist/tools/index.js +3 -1
  33. package/dist/tools/index.js.map +1 -1
  34. package/dist/tools/lsp.js +6 -1
  35. package/dist/tools/lsp.js.map +1 -1
  36. package/dist/tools/replaceBlock.js +2 -2
  37. package/dist/tools/replaceBlock.js.map +1 -1
  38. package/dist/tools/runCommand.js +17 -5
  39. package/dist/tools/runCommand.js.map +1 -1
  40. package/dist/tools/terminal.js +15 -5
  41. package/dist/tools/terminal.js.map +1 -1
  42. package/dist/transport.d.ts +2 -0
  43. package/dist/transport.js +32 -2
  44. package/dist/transport.js.map +1 -1
  45. package/package.json +9 -3
  46. package/templates/CLAUDE.bridge.md +23 -0
  47. package/templates/dispatch-context.md +29 -0
  48. package/templates/scheduled-tasks/dependency-audit/SKILL.md +52 -0
  49. package/templates/scheduled-tasks/health-check/SKILL.md +54 -0
  50. package/templates/scheduled-tasks/nightly-review/SKILL.md +45 -0
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![CI](https://github.com/Oolab-labs/claude-ide-bridge/actions/workflows/ci.yml/badge.svg)](https://github.com/Oolab-labs/claude-ide-bridge/actions/workflows/ci.yml)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
6
 
7
- A standalone MCP bridge that gives [Claude Code](https://claude.ai/code) full IDE integration — **138+ tools** for LSP, debugging, terminals, Git, GitHub, diagnostics, code analysis, screen capture, and more. Works with any VS Code-compatible editor (VS Code, Windsurf, Cursor) and pairs with a companion extension for real-time editor state.
7
+ A standalone MCP bridge that gives [Claude Code](https://claude.ai/code) full IDE integration — **124+ tools** for LSP, debugging, terminals, Git, GitHub, diagnostics, code analysis, screen capture, and more. Works with any VS Code-compatible editor (VS Code, Windsurf, Cursor) and pairs with a companion extension for real-time editor state.
8
8
 
9
9
  ## How It Works
10
10
 
@@ -102,6 +102,30 @@ claude-ide-bridge start-all --workspace /your/project
102
102
 
103
103
  Launches four tmux panes: health monitor, bridge, Claude Code, and remote control — with automatic restart on failure. Requires `tmux`.
104
104
 
105
+ ## Documentation
106
+
107
+ > **These guides are essential for setup and deployment** — not optional reading. Each covers a specific scenario you'll encounter when running the bridge beyond localhost.
108
+
109
+ | Guide | What it covers |
110
+ |-------|----------------|
111
+ | **[Remote Access](docs/remote-access.md)** | Production reverse proxy setup (Caddy/nginx), TLS, Streamable HTTP transport |
112
+ | **[SSH Resilience](docs/ssh-resilience.md)** | Surviving SSH drops, tmux strategies, phone-to-VPS workflows |
113
+ | **[IP Allowlist](docs/ip-allowlist.md)** | Firewall rules, network access control for remote bridge instances |
114
+ | **[Worktree Isolation](docs/worktree-isolation.md)** | How git worktrees interact with the bridge, safe concurrent editing |
115
+ | **[Privacy Policy](docs/privacy-policy.md)** | What data the bridge handles, stores, and never transmits |
116
+ | **[Demo Setup](docs/demo-setup.md)** | Standing up a persistent demo instance for review/testing |
117
+ | **[Architecture Decisions](docs/adr/)** | ADRs for version numbers, reconnect guards, lock files, error model, session eviction |
118
+
119
+ **Reference docs** (in [`documents/`](documents/)):
120
+
121
+ | Doc | What it covers |
122
+ |-----|----------------|
123
+ | **[Platform Docs](documents/platform-docs.md)** | Complete tool reference (124+ tools), parameters, examples |
124
+ | **[Data Reference](documents/data-reference.md)** | Data flows, state management, protocol details |
125
+ | **[Plugin Authoring](documents/plugin-authoring.md)** | Writing custom plugins — manifest schema, entrypoint API |
126
+ | **[Use Cases](documents/use-cases.md)** | Real-world workflows and scenarios |
127
+ | **[Roadmap](documents/roadmap.md)** | Planned features and development direction |
128
+
105
129
  ## Full Orchestrator
106
130
 
107
131
  The `start-all` command launches everything in a tmux session: bridge + Claude Code + remote control, with automatic health monitoring and process restart.
@@ -164,11 +188,15 @@ claude --plugin-dir ./claude-ide-bridge-plugin
164
188
 
165
189
  | Event | What it does |
166
190
  |-------|-------------|
191
+ | `PreToolUse` on Edit/Write | Resolves relative path args to absolute before bridge tools execute |
167
192
  | `PostToolUse` on Edit/Write | Reminds Claude to check diagnostics after file edits |
168
193
  | `SessionStart` | Reports bridge status, connection, and tool count |
194
+ | `InstructionsLoaded` | Injects live bridge status each time CLAUDE.md loads |
195
+ | `Elicitation` | Pre-fills file/path/uri fields using the active editor |
196
+ | `WorktreeCreate` | Reports bridge ↔ worktree relationship; warns about LSP limitations |
169
197
  | `SubagentStart` | Verifies bridge is alive before IDE subagents run |
170
198
 
171
- ## 138+ MCP Tools
199
+ ## 124+ MCP Tools
172
200
 
173
201
  ### File Operations (8)
174
202
  `openFile` · `openDiff` · `saveDocument` · `closeTab` · `closeAllDiffTabs` · `checkDocumentDirty` · `getOpenEditors` · `searchWorkspace`
@@ -194,8 +222,8 @@ claude --plugin-dir ./claude-ide-bridge-plugin
194
222
  ### Code Quality (3)
195
223
  `fixAllLintErrors` · `formatDocument` · `organizeImports`
196
224
 
197
- ### Snapshots & Plans (10)
198
- `createSnapshot` · `restoreSnapshot` · `diffSnapshot` · `listSnapshots` · `deleteSnapshot` · `createPlan` · `updatePlan` · `getPlan` · `listPlans` · `deletePlan`
225
+ ### Snapshots & Plans (5)
226
+ `createPlan` · `updatePlan` · `getPlan` · `listPlans` · `deletePlan`
199
227
 
200
228
  ### Editor State (6)
201
229
  `getCurrentSelection` · `getLatestSelection` · `getOpenEditors` · `getBufferContent` · `setEditorDecorations` · `clearEditorDecorations`
@@ -230,16 +258,16 @@ Text editing · Workspace settings · File watchers · Decorations · `executeVS
230
258
  | Debug | 5 | Yes |
231
259
  | Decorations | 2 | Yes |
232
260
  | Screen Capture | 1 | Yes |
233
- | Snapshots & Plans | 10 | No |
261
+ | Snapshots & Plans | 5 | No |
234
262
  | Bridge & Session | 3 | No |
235
263
  | Clipboard | 2 | Mixed |
236
264
  | HTTP | 2 | No |
237
265
  | VS Code Integration | 10 | Yes |
238
- | **Total** | **~138** | |
266
+ | **Total** | **~124** | |
239
267
 
240
268
  ## MCP Prompts (Slash Commands)
241
269
 
242
- The bridge exposes 7 built-in slash commands via the MCP `prompts/list` + `prompts/get` protocol. These appear as `/mcp__bridge__<name>` in any MCP client that supports prompts.
270
+ The bridge exposes 15 built-in slash commands via the MCP `prompts/list` + `prompts/get` protocol. These appear as `/mcp__bridge__<name>` in any MCP client that supports prompts.
243
271
 
244
272
  | Prompt | Argument | Description |
245
273
  |--------|----------|-------------|
@@ -250,6 +278,13 @@ The bridge exposes 7 built-in slash commands via the MCP `prompts/list` + `promp
250
278
  | `/mcp__bridge__git-review` | `base` (optional, default: `main`) | Review all changes since a git base branch |
251
279
  | `/mcp__bridge__cowork` | `task` (optional) | Gather full IDE context and propose a Cowork action plan — run this **before** opening a Cowork session |
252
280
  | `/mcp__bridge__set-effort` | `level` (optional: `low`/`medium`/`high`, default: `medium`) | Prepend an effort-level instruction to tune Claude's thoroughness for the next task |
281
+ | `/mcp__bridge__project-status` | _(none)_ | Quick project health: git status + diagnostics + test summary (Dispatch) |
282
+ | `/mcp__bridge__quick-tests` | `filter` (optional) | Run tests and return concise pass/fail summary (Dispatch) |
283
+ | `/mcp__bridge__quick-review` | _(none)_ | Review uncommitted changes with diff summary and diagnostics (Dispatch) |
284
+ | `/mcp__bridge__build-check` | _(none)_ | Check if the project builds successfully (Dispatch) |
285
+ | `/mcp__bridge__recent-activity` | `count` (optional, default: `10`) | Recent git log and uncommitted changes (Dispatch) |
286
+ | `/mcp__bridge__team-status` | _(none)_ | Workspace state, active tasks, and recent activity for team leads (Agent Teams) |
287
+ | `/mcp__bridge__health-check` | _(none)_ | Comprehensive project health: tests, diagnostics, security (Scheduled Tasks) |
253
288
 
254
289
  > **Cowork sessions and MCP tools:** MCP tools (including all bridge tools) are **not available inside a Cowork session**. Use a two-step workflow: run `/mcp__bridge__cowork` in a regular Claude Code chat first — it gathers full IDE context and produces an action plan — then open a Cowork session armed with that context.
255
290
 
@@ -571,6 +606,176 @@ Config location:
571
606
  - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
572
607
  - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
573
608
 
609
+ ## Dispatch (Mobile Remote Control)
610
+
611
+ [Dispatch](https://docs.anthropic.com) is a Claude Desktop feature that lets you send instructions from your phone to your desktop Claude session. Combined with the bridge, you can check on your project, run tests, and review changes — all from a phone message.
612
+
613
+ ### How it works
614
+
615
+ ```
616
+ Your Phone (Claude App)
617
+
618
+ ▼ terse instruction
619
+ Claude Desktop (main conversation)
620
+
621
+ ▼ MCP tool calls
622
+ Bridge Server ──► IDE Extension ──► Your Code
623
+
624
+ ▼ results
625
+ Claude Desktop
626
+
627
+ ▼ concise summary
628
+ Your Phone
629
+ ```
630
+
631
+ Dispatch messages land in Claude Desktop's **main conversation**, which has full MCP bridge access. Claude calls the bridge tools, gathers results, and sends a summary back to your phone.
632
+
633
+ > **Not Cowork:** Dispatch routes through the main conversation, not a Cowork session. All 124+ bridge tools are available. The Cowork tool-access limitation does not apply here.
634
+
635
+ ### Setup
636
+
637
+ 1. **Bridge running** — `claude-ide-bridge --watch` in your project directory
638
+ 2. **Claude Desktop connected** — stdio shim configured (see [Use with Claude Desktop](#use-with-claude-desktop))
639
+ 3. **Dispatch paired** — open Claude Desktop → Cowork → Dispatch → scan QR code with Claude mobile app
640
+ 4. **Computer awake** — your desktop must be powered on and not sleeping
641
+
642
+ ### Phone-friendly prompts
643
+
644
+ The bridge includes 5 Dispatch-optimized prompts designed for terse phone triggers. Each instructs Claude to call specific bridge tools and return concise, phone-screen-friendly output:
645
+
646
+ | Prompt | Phone message | What it does |
647
+ |--------|--------------|--------------|
648
+ | `project-status` | "How's the build?" | Git status + diagnostics + test summary |
649
+ | `quick-tests` | "Run the tests" | Pass/fail summary with failure details |
650
+ | `quick-review` | "Review my changes" | Diff summary + diagnostics for changed files |
651
+ | `build-check` | "Does it build?" | Build/compile check with error summary |
652
+ | `recent-activity` | "What changed?" | Recent git log + uncommitted changes |
653
+
654
+ You can also type any natural-language instruction — the prompts above are shortcuts that produce consistently formatted output.
655
+
656
+ ### Example Dispatch session
657
+
658
+ From your phone:
659
+ > "How's the build?"
660
+
661
+ Claude checks git status, diagnostics, and tests, then responds:
662
+ ```
663
+ Branch: feature/oauth (3 uncommitted)
664
+ Diagnostics: 0 errors, 2 warnings
665
+ Tests: 142 passed, 0 failed (12s)
666
+ ```
667
+
668
+ From your phone:
669
+ > "Review my changes"
670
+
671
+ Claude diffs your uncommitted work and responds with a file-by-file summary and an overall assessment.
672
+
673
+ ### Cowork context template
674
+
675
+ For better Dispatch results, copy `templates/dispatch-context.md` into your Cowork context folder. It maps terse phone commands to bridge tools and sets response formatting guidelines for mobile output.
676
+
677
+ ### Limitations
678
+
679
+ - **One conversation thread** — Dispatch uses a single persistent thread
680
+ - **Computer must be awake** — if your desktop sleeps, Dispatch goes dark
681
+ - **No push notifications** — check the phone app manually for responses
682
+ - **Best for reads, not writes** — information retrieval (status, tests, review) is highly reliable; multi-file edits from phone messages are not recommended
683
+
684
+ ---
685
+
686
+ ## Agent Teams (Parallel Multi-Agent)
687
+
688
+ [Agent Teams](https://code.claude.com/docs/en/agent-teams) let multiple Claude Code instances work in parallel on the same project. A team lead assigns tasks, teammates execute them independently, and results are synthesized.
689
+
690
+ ### How it works with the bridge
691
+
692
+ Each teammate is an independent Claude Code session that connects to the bridge via its own WebSocket/MCP session. The bridge already supports multiple concurrent sessions (`MAX_SESSIONS = 5`), so **agent teams work out of the box** — no additional configuration needed.
693
+
694
+ ```
695
+ Team Lead (Claude Code)
696
+ ├── Teammate A ──► Bridge Session 1 ──► IDE
697
+ ├── Teammate B ──► Bridge Session 2 ──► IDE
698
+ └── Teammate C ──► Bridge Session 3 ──► IDE
699
+ ```
700
+
701
+ All teammates share the same IDE and workspace. Each gets full access to all 124+ bridge tools.
702
+
703
+ ### Setup
704
+
705
+ 1. Enable agent teams: set `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` in your environment
706
+ 2. Bridge running: `claude-ide-bridge --watch`
707
+ 3. Ask Claude to create a team: *"Create an agent team to review and fix all TypeScript errors"*
708
+
709
+ ### Bridge prompts for team leads
710
+
711
+ | Prompt | What it does |
712
+ |--------|-------------|
713
+ | `/mcp__bridge__team-status` | Workspace state, active tasks, recent activity across sessions |
714
+ | `/mcp__bridge__health-check` | Full project health: tests, diagnostics, security |
715
+
716
+ ### Best practices
717
+
718
+ - **Pre-approve tools** — teammates block on permission prompts. Use `--dangerously-skip-permissions` in sandboxed environments or pre-approve common tools.
719
+ - **Avoid file conflicts** — assign teammates to different files/modules. The bridge doesn't lock files across sessions.
720
+ - **Use the team-status prompt** — the lead can call `/mcp__bridge__team-status` to see workspace state and recent activity across all sessions.
721
+
722
+ ---
723
+
724
+ ## Scheduled Tasks (Recurring Workflows)
725
+
726
+ Claude Desktop's [Scheduled Tasks](https://code.claude.com/docs/en/scheduled-tasks) run recurring autonomous workflows on a cron schedule. Each run fires a fresh Claude session with full MCP access — including all bridge tools.
727
+
728
+ ### How it works with the bridge
729
+
730
+ When a scheduled task fires, Claude Desktop loads your MCP servers from config. If the bridge's stdio shim is configured (see [Use with Claude Desktop](#use-with-claude-desktop)), the task gets full access to all bridge tools.
731
+
732
+ ```
733
+ Cron trigger (e.g., daily 9am)
734
+
735
+
736
+ Claude Desktop (fresh session)
737
+
738
+ ▼ loads MCP servers
739
+ Bridge Server ──► IDE Extension ──► Your Code
740
+
741
+ ▼ structured report
742
+ Task history (viewable in Desktop sidebar)
743
+ ```
744
+
745
+ ### Ready-made task templates
746
+
747
+ Copy any of these into `~/.claude/scheduled-tasks/` to set up a recurring workflow:
748
+
749
+ | Template | Schedule | What it does |
750
+ |----------|----------|-------------|
751
+ | `nightly-review` | Daily | Review uncommitted changes, diagnostics, test status |
752
+ | `health-check` | Hourly/Daily | Full project health: tests, diagnostics, security advisories |
753
+ | `dependency-audit` | Weekly | Scan dependencies for CVEs and outdated packages |
754
+
755
+ ```bash
756
+ # Install a scheduled task template
757
+ cp -r templates/scheduled-tasks/health-check ~/.claude/scheduled-tasks/
758
+ ```
759
+
760
+ Then open Claude Desktop → Schedule → configure the frequency and permissions for the task.
761
+
762
+ ### Bridge prompts for scheduled contexts
763
+
764
+ The `health-check` MCP prompt (`/mcp__bridge__health-check`) produces the same structured report as the scheduled task template — useful for ad-hoc runs from any MCP client.
765
+
766
+ ### Bridge automation vs. Desktop scheduled tasks
767
+
768
+ The bridge has its own event-driven automation system (`--automation --automation-policy`). Here's when to use which:
769
+
770
+ | Feature | Trigger | Persistence | Best for |
771
+ |---------|---------|-------------|----------|
772
+ | **Desktop Scheduled Tasks** | Time-based (cron) | Survives restarts | Nightly reviews, weekly audits, periodic checks |
773
+ | **Bridge Automation Hooks** | Event-driven (file save, diagnostic error) | Requires bridge running | Immediate reactions: auto-fix on error, lint on save |
774
+
775
+ They're complementary — use scheduled tasks for periodic health checks and bridge automation for real-time reactions.
776
+
777
+ ---
778
+
574
779
  ## Use with Claude.ai Web
575
780
 
576
781
  Connect the bridge to [claude.ai](https://claude.ai) via a **Custom Connector** — chat with your IDE from the browser without installing anything extra.
@@ -612,36 +817,45 @@ The bridge is now permanently reachable at `https://bridge.yourdomain.com`. The
612
817
 
613
818
  > **Auto-start:** Run `cloudflared service install` to register the tunnel as a systemd service so it starts on boot alongside the bridge.
614
819
 
615
- ### Step 2 — Start the bridge with a fixed token
820
+ ### Step 2 — Start the bridge with OAuth enabled
616
821
 
617
822
  ```bash
618
- # Generate a token once and keep it store it somewhere safe
823
+ # Generate a token once keep it safe, you'll need it to approve connections
619
824
  TOKEN=$(uuidgen)
620
825
 
621
- claude-ide-bridge --bind 0.0.0.0 --workspace /path/to/project --fixed-token $TOKEN
826
+ claude-ide-bridge \
827
+ --bind 0.0.0.0 \
828
+ --workspace /path/to/project \
829
+ --fixed-token $TOKEN \
830
+ --issuer-url https://bridge.yourdomain.com \
831
+ --cors-origin https://claude.ai
622
832
  ```
623
833
 
624
- `--fixed-token` ensures the token never rotates across restarts, so your connector URL stays valid permanently.
834
+ - `--fixed-token` token never rotates across restarts
835
+ - `--issuer-url` — your public HTTPS URL; activates OAuth 2.0 so claude.ai can authenticate
836
+ - `--cors-origin https://claude.ai` — allows claude.ai's browser requests to reach the bridge
625
837
 
626
838
  ### Step 3 — Add the Custom Connector on claude.ai
627
839
 
628
840
  1. Go to **claude.ai → Settings → Integrations → Add custom connector**
629
- 2. Enter the connector URL:
841
+ 2. Enter the MCP endpoint URL (no token in the URL — OAuth handles auth):
630
842
  ```
631
- https://bridge.yourdomain.com/mcp?token=<your-token>
843
+ https://bridge.yourdomain.com/mcp
632
844
  ```
633
- 3. Save — claude.ai verifies the connection and lists all available tools
845
+ 3. Click **Connect** — claude.ai redirects you to the bridge's authorization page
846
+ 4. Enter your bridge token (`$TOKEN` from Step 2) and click **Authorize**
847
+ 5. claude.ai completes the OAuth exchange and lists all available tools
634
848
 
635
- The `?token=` query param is supported alongside `Authorization: Bearer` headers, since the claude.ai connector UI cannot set custom request headers.
849
+ > The bridge token is entered once during authorization. After that, claude.ai holds a short-lived OAuth access token that it refreshes automatically — you don't need to update the connector URL when the bridge restarts.
636
850
 
637
- > **Tool availability:** All 138+ tools are available. VS Code extension-dependent tools (LSP, debugger, editor state) require the extension to be connected on the remote machine. Without the extension, ~80 CLI tools still work (file ops, git, terminal, search, HTTP client).
851
+ > **Tool availability:** All 124+ tools are available. VS Code extension-dependent tools (LSP, debugger, editor state) require the extension to be connected on the remote machine. Without the extension, ~74 CLI tools still work (file ops, git, terminal, search, HTTP client).
638
852
 
639
853
  ### Alternatives
640
854
 
641
855
  <details>
642
856
  <summary>Reverse proxy with nginx or Caddy (if you already have a domain + TLS setup)</summary>
643
857
 
644
- Put nginx or Caddy in front of the bridge with TLS. See [docs/remote-access.md](docs/remote-access.md) for a ready-made config.
858
+ Put nginx or Caddy in front of the bridge with TLS — proxy **all paths** (not just `/mcp`) so the OAuth discovery and authorization endpoints are reachable. See [docs/remote-access.md](docs/remote-access.md) for a ready-made config.
645
859
 
646
860
  </details>
647
861
 
@@ -705,17 +919,24 @@ claude-ide-bridge gen-claude-md [--write] [--workspace <path>]
705
919
  ### Bridge options (default mode)
706
920
 
707
921
  ```
922
+ --bind <addr> Bind address (default: 127.0.0.1)
923
+ --fixed-token <uuid> Stable auth token across restarts (default: random UUID)
924
+ --issuer-url <url> Public HTTPS URL — activates OAuth 2.0 for remote clients
925
+ --cors-origin <url> Allow cross-origin requests from this origin (repeatable)
708
926
  --workspace <path> Workspace folder (default: cwd)
709
927
  --ide-name <name> IDE name shown to Claude (default: auto-detect)
710
928
  --editor <cmd> Editor CLI command (default: auto-detect)
711
929
  --port <number> Force specific port (default: random)
712
930
  --linter <name> Enable specific linter (repeatable; default: auto-detect)
931
+ --grace-period <ms> Reconnect grace period in ms (default: 30000, max: 600000)
713
932
  --allow-command <cmd> Add command to execution allowlist (repeatable)
714
933
  --timeout <ms> Command timeout in ms (default: 30000, max: 120000)
715
934
  --max-result-size <KB> Max output size in KB (default: 512, max: 4096)
935
+ --vps VPS/headless mode: adds curl, systemctl, nginx, pm2, docker to allowlist
716
936
  --watch Supervisor mode: auto-restart on crash (exponential backoff, max 30s)
717
937
  --auto-tmux Re-exec inside a tmux session automatically
718
938
  --tool-rate-limit <n> Max tool calls per minute per session (default: 60)
939
+ --audit-log <path> Append all tool calls to a JSONL file (persistent audit trail)
719
940
  --claude-driver <mode> Claude subprocess driver: subprocess | api | none (default: none)
720
941
  --claude-binary <path> Path to claude binary (default: claude)
721
942
  --automation Enable event-driven automation
@@ -761,7 +982,7 @@ claude-ide-bridge/
761
982
 
762
983
  - **`getHandoffNote`** / **`setHandoffNote`** — a persistent scratchpad (10KB, shared across all MCP sessions) stored at `~/.claude/ide/handoff-note.json`. Use it to pass context between a Claude Code CLI session and Claude Desktop, or between sessions on different machines. Ask Claude to write a summary note before closing a session, then read it in the next.
763
984
 
764
- - **`createGithubIssueFromAIComment`** — Claude can scan your code for `// AI:` comments (e.g. `// AI: this function needs error handling`) and file them as GitHub issues automatically. Run `getAIComments` first to populate the cache, then `createGithubIssueFromAIComment` to file them.
985
+ - **`createGithubIssueFromAIComment`** — Claude can scan your code for `// AI:` comments (e.g. `// AI: this function needs error handling`) and file them as GitHub issues automatically. The extension pushes AI comment cache in real time — call `createGithubIssueFromAIComment` directly to file the detected comments as issues.
765
986
 
766
987
  - **`executeVSCodeCommand`** — run any VS Code command by ID with optional arguments. Requires the command to be on the allowlist (`--vscode-allow-command <id>`). Use `listVSCodeCommands` to discover available command IDs.
767
988
 
@@ -800,7 +1021,7 @@ The bridge saves a checkpoint every 30 seconds to `~/.claude/ide/checkpoint-<por
800
1021
 
801
1022
  ### Reduce duplicate git instructions
802
1023
 
803
- Claude Code ships with its own built-in commit/PR guidance. When using the bridge's dedicated git tools (`gitCommit`, `gitPush`, `gitCreatePR`, etc.), you can suppress the duplicate Claude Code instructions by adding to `~/.claude/settings.json`:
1024
+ Claude Code ships with its own built-in commit/PR guidance. When using the bridge's dedicated git tools (`gitCommit`, `gitPush`, `githubCreatePR`, etc.), you can suppress the duplicate Claude Code instructions by adding to `~/.claude/settings.json`:
804
1025
 
805
1026
  ```json
806
1027
  {
@@ -820,7 +1041,7 @@ Production-grade reliability:
820
1041
  - Circuit breaker with exponential backoff for timeout cascades
821
1042
  - Generation counter preventing stale handler responses
822
1043
  - Extension-required tool filtering when extension disconnects
823
- - 1237 tests (bridge) + 362 extension tests; full WebSocket round-trip integration coverage
1044
+ - 1265+ tests (bridge) + 394 extension tests; full WebSocket round-trip integration coverage
824
1045
  - MCP elicitation support (`elicitation: {}` capability) — bridge can send `elicitation/create` mid-task to request structured user input via Claude Code's interactive dialog (Claude Code 2.1.76+)
825
1046
 
826
1047
  ## Building
@@ -829,20 +1050,20 @@ Production-grade reliability:
829
1050
  # Bridge
830
1051
  npm run build # TypeScript compilation
831
1052
  npm run dev # Development with tsx
832
- npm test # Run 1237 bridge tests
1053
+ npm test # Run 1265+ bridge tests
833
1054
 
834
1055
  # Extension
835
1056
  cd vscode-extension
836
1057
  npm run build # esbuild bundle
837
1058
  npm run package # Create .vsix
838
- npm test # Run 362 extension tests
1059
+ npm test # Run 394 extension tests
839
1060
  ```
840
1061
 
841
1062
  ## Troubleshooting
842
1063
 
843
1064
  ### Claude says a tool doesn't exist or tool count seems low
844
1065
 
845
- When the VS Code extension is disconnected, tools that require extension access are automatically hidden from Claude's tool list. About 50 tools become unavailable (terminal, LSP, debug, editor state, etc.). Check the "Claude IDE Bridge" output channel in VS Code — if you see a disconnection event, use `Claude IDE Bridge: Reconnect` from the command palette, or reload the window.
1066
+ When the VS Code extension is disconnected, tools that require extension access are automatically hidden from Claude's tool list. About 50 tools become unavailable (terminal, LSP, debug, editor state, etc.) — leaving ~74 tools accessible via CLI fallbacks. Check the "Claude IDE Bridge" output channel in VS Code — if you see a disconnection event, use `Claude IDE Bridge: Reconnect` from the command palette, or reload the window.
846
1067
 
847
1068
  ### Bridge and extension version mismatch
848
1069
 
@@ -891,6 +1112,13 @@ tmux kill-server
891
1112
  env -u CLAUDECODE claude-ide-bridge start-all --workspace /your/project
892
1113
  ```
893
1114
 
1115
+ ## Developer Documentation
1116
+
1117
+ See [Documentation](#documentation) above for all guides, ADRs, and reference docs. AI-specific project instructions:
1118
+
1119
+ - **[CLAUDE.md](CLAUDE.md)** — Project instructions for AI assistants (Claude Code, Cursor). Covers architecture rules, plugin system, OAuth, remote deployment, security model.
1120
+ - **[.cursorrules](.cursorrules)** — Imperative rules for Cursor IDE AI. Condensed mirror of CLAUDE.md.
1121
+
894
1122
  ## Contributing
895
1123
 
896
1124
  See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, code style, and how to add new tools.
@@ -1,23 +1,5 @@
1
- export interface ActivityEntry {
2
- id: number;
3
- timestamp: string;
4
- tool: string;
5
- durationMs: number;
6
- status: "success" | "error";
7
- errorMessage?: string;
8
- }
9
- export interface LifecycleEntry {
10
- id: number;
11
- timestamp: string;
12
- event: string;
13
- metadata?: Record<string, unknown>;
14
- }
15
- export type TimelineEntry = ({
16
- kind: "tool";
17
- } & ActivityEntry) | ({
18
- kind: "lifecycle";
19
- } & LifecycleEntry);
20
- type ActivityListener = (kind: string, entry: ActivityEntry | LifecycleEntry) => void;
1
+ export type { ActivityEntry, ActivityListener, LifecycleEntry, TimelineEntry, } from "./activityTypes.js";
2
+ import type { ActivityEntry, ActivityListener, TimelineEntry } from "./activityTypes.js";
21
3
  export declare class ActivityLog {
22
4
  private entries;
23
5
  private lifecycleEntries;
@@ -35,8 +17,14 @@ export declare class ActivityLog {
35
17
  private _loadFromDisk;
36
18
  private _appendToDisk;
37
19
  private _rotateDisk;
38
- record(tool: string, durationMs: number, status: "success" | "error", errorMessage?: string): void;
39
- recordEvent(event: string, metadata?: Record<string, unknown>): void;
20
+ record(tool: string, durationMs: number, status: "success" | "error", errorMessage?: string, context?: {
21
+ sessionId?: string;
22
+ teammateName?: string;
23
+ }): void;
24
+ recordEvent(event: string, metadata?: Record<string, unknown>, context?: {
25
+ sessionId?: string;
26
+ teammateName?: string;
27
+ }): void;
40
28
  queryTimeline(opts?: {
41
29
  last?: number;
42
30
  }): TimelineEntry[];
@@ -52,4 +40,3 @@ export declare class ActivityLog {
52
40
  errors: number;
53
41
  }>;
54
42
  }
55
- export {};
@@ -59,13 +59,16 @@ export class ActivityLog {
59
59
  }
60
60
  }
61
61
  }
62
- catch {
63
- // skip malformed lines
62
+ catch (err) {
63
+ process.stderr.write(`[activityLog] Skipping malformed JSON line: ${err instanceof Error ? err.message : String(err)}\n`);
64
64
  }
65
65
  }
66
66
  }
67
- catch {
68
- // file doesn't exist yet, that's fine
67
+ catch (err) {
68
+ const code = err.code;
69
+ if (code !== "ENOENT") {
70
+ process.stderr.write(`[activityLog] Failed to load persist file: ${err instanceof Error ? err.message : String(err)}\n`);
71
+ }
69
72
  }
70
73
  }
71
74
  _appendToDisk(kind, entry) {
@@ -86,13 +89,16 @@ export class ActivityLog {
86
89
  this._rotateDisk();
87
90
  }
88
91
  }
89
- catch {
90
- // file doesn't exist yet — nothing to rotate
92
+ catch (err) {
93
+ const code = err.code;
94
+ if (code !== "ENOENT") {
95
+ process.stderr.write(`[activityLog] Failed to stat persist file for rotation: ${err instanceof Error ? err.message : String(err)}\n`);
96
+ }
91
97
  }
92
98
  await fs.promises.appendFile(persistPath, line);
93
99
  }
94
- catch {
95
- // Disk persistence is best-effort never block tool execution
100
+ catch (err) {
101
+ process.stderr.write(`[activityLog] Disk persistence failed (best-effort): ${err instanceof Error ? err.message : String(err)}\n`);
96
102
  }
97
103
  })();
98
104
  }
@@ -115,11 +121,11 @@ export class ActivityLog {
115
121
  }
116
122
  fs.writeFileSync(this.persistPath, `${lines.join("\n")}\n`);
117
123
  }
118
- catch {
119
- // ignore rotation errors
124
+ catch (err) {
125
+ process.stderr.write(`[activityLog] Rotation failed: ${err instanceof Error ? err.message : String(err)}\n`);
120
126
  }
121
127
  }
122
- record(tool, durationMs, status, errorMessage) {
128
+ record(tool, durationMs, status, errorMessage, context) {
123
129
  const entry = {
124
130
  id: this.nextId++,
125
131
  timestamp: new Date().toISOString(),
@@ -127,6 +133,8 @@ export class ActivityLog {
127
133
  durationMs,
128
134
  status,
129
135
  errorMessage,
136
+ sessionId: context?.sessionId,
137
+ teammateName: context?.teammateName,
130
138
  };
131
139
  this.entries.push(entry);
132
140
  this._appendToDisk("tool", entry);
@@ -143,12 +151,14 @@ export class ActivityLog {
143
151
  this.entries = this.entries.slice(-this.maxEntries);
144
152
  }
145
153
  }
146
- recordEvent(event, metadata) {
154
+ recordEvent(event, metadata, context) {
147
155
  const entry = {
148
156
  id: this.nextId++,
149
157
  timestamp: new Date().toISOString(),
150
158
  event,
151
159
  metadata,
160
+ sessionId: context?.sessionId,
161
+ teammateName: context?.teammateName,
152
162
  };
153
163
  this.lifecycleEntries.push(entry);
154
164
  this._appendToDisk("lifecycle", entry);
@@ -1 +1 @@
1
- {"version":3,"file":"activityLog.js","sourceRoot":"","sources":["../src/activityLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activityLog.js","sourceRoot":"","sources":["../src/activityLog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Shared type definitions for the activity log.
3
+ *
4
+ * Extracted into a standalone file (no imports) to break the circular
5
+ * dependency that would arise if server.ts imported from activityLog.ts
6
+ * directly. Both server.ts and activityLog.ts import from here instead.
7
+ */
8
+ export interface ActivityEntry {
9
+ id: number;
10
+ timestamp: string;
11
+ tool: string;
12
+ durationMs: number;
13
+ status: "success" | "error";
14
+ errorMessage?: string;
15
+ sessionId?: string;
16
+ teammateName?: string;
17
+ }
18
+ export interface LifecycleEntry {
19
+ id: number;
20
+ timestamp: string;
21
+ event: string;
22
+ metadata?: Record<string, unknown>;
23
+ sessionId?: string;
24
+ teammateName?: string;
25
+ }
26
+ export type TimelineEntry = ({
27
+ kind: "tool";
28
+ } & ActivityEntry) | ({
29
+ kind: "lifecycle";
30
+ } & LifecycleEntry);
31
+ export type ActivityListener = (kind: string, entry: ActivityEntry | LifecycleEntry) => void;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared type definitions for the activity log.
3
+ *
4
+ * Extracted into a standalone file (no imports) to break the circular
5
+ * dependency that would arise if server.ts imported from activityLog.ts
6
+ * directly. Both server.ts and activityLog.ts import from here instead.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=activityTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activityTypes.js","sourceRoot":"","sources":["../src/activityTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}