@minhspark/codex-mcp-bridge 1.24.0 → 1.24.1
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.
- package/.codex-plugin/plugin.json +1 -1
- package/CHANGELOG.md +12 -0
- package/README.md +240 -13
- package/assets/README.md +2 -1
- package/assets/agent-pets.svg +47 -1
- package/package.json +2 -2
- package/plugin.json +1 -1
- package/scripts/install-native-relay.mjs +1 -1
- package/src/claude-bridge.mjs +6 -6
- package/src/codex-native-response.mjs +6 -2
- package/src/desktop-read-tools.mjs +3 -2
- package/src/index.mjs +5 -3
- package/src/native-relay-companion.mjs +1 -1
- package/src/peer-protocol.mjs +23 -5
- package/src/thread-delivery.mjs +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [SemVer](ht
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.24.1] - 2026-10-29
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Native Codex turns whose `root_turn_id` names a different causal root are no longer rejected as contradictory. Membership comes from explicit turn IDs, contradictory explicit IDs are still rejected, and a turn is never selected only because its causal root matches the requested turn (#169, #171 by @deinspanjer).
|
|
12
|
+
- An accepted Desktop send whose response cannot be verified now reports `status: observation_unavailable` with `nextAction: inspect_existing_task` and the original receipt, instead of `failed`. Desktop's own `failed` or `interrupted` status is still reported when it belongs to the exact observed turn. `wait_codex_reply` with `responsePreferences` returns the same next action plus `guidance` telling the caller not to resend the prompt.
|
|
13
|
+
- When a Claude reply observation is interrupted by a new input boundary after an asynchronous or timed-out `send_to_claude_session`, the bridge now publishes a correlated bridge-status notification to `read_claude_inbox` and to the originating Codex task. It is labelled as a bridge notification rather than a Claude reply, keeps the original account and project scope, reports outcome unknown, task not cancelled and retry unsafe, and survives reload without duplication. Asynchronous send guidance now points to `read_claude_delivery` (#170, #172 by @deinspanjer).
|
|
14
|
+
|
|
15
|
+
### Upgrade
|
|
16
|
+
|
|
17
|
+
- `npm install -g @minhspark/codex-mcp-bridge@latest`, then restart Claude Desktop and Codex Desktop (or reconnect their MCP servers) so running bridges load 1.24.1.
|
|
18
|
+
|
|
7
19
|
## [1.24.0] - 2026-10-28
|
|
8
20
|
|
|
9
21
|
### Added
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/agent-pets.svg" width="
|
|
2
|
+
<img src="assets/agent-pets.svg" width="240" height="220" alt="Claude, Codex, and Antigravity connected by curved two-way arrows" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<h1 align="center">codex-mcp-bridge</h1>
|
|
@@ -15,19 +15,33 @@
|
|
|
15
15
|
<a href="LICENSE"><img src="https://img.shields.io/npm/l/@minhspark/codex-mcp-bridge" height="20" alt="license" /></a>
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
Connect **Claude, Codex, and Antigravity** through MCP, keeping work in each agent's own app and preserving native identity and permission checks. Supports Windows, macOS, and Linux; native Desktop integration supports Windows and macOS.
|
|
19
19
|
|
|
20
|
-
The optional **Antigravity bridge**
|
|
20
|
+
The optional **Antigravity bridge** sends work both ways between existing Desktop conversations in the same project. Codex and Claude can also start and continue bridge-owned Antigravity CLI streaming sessions. Antigravity App replies remain in the App; outbound calls from Antigravity CLI are not supported. [Setup and current limits](#antigravity-app-and-cli).
|
|
21
21
|
|
|
22
22
|
https://github.com/user-attachments/assets/98b23989-826f-4d7d-9dcb-ad7dd2739095
|
|
23
23
|
|
|
24
24
|
## Installation
|
|
25
25
|
|
|
26
|
+
Install the bridge package first, then follow the setup for the apps you use. The optional [workflow skill](#workflow-skill--npx-skills) has its own install commands; installing it does not register or start an MCP server.
|
|
27
|
+
|
|
28
|
+
### Package — npm
|
|
29
|
+
|
|
30
|
+
**macOS / Linux / WSL**
|
|
31
|
+
|
|
26
32
|
```bash
|
|
27
33
|
npm install -g @minhspark/codex-mcp-bridge@latest
|
|
28
34
|
```
|
|
29
35
|
|
|
30
|
-
|
|
36
|
+
**Windows PowerShell**
|
|
37
|
+
|
|
38
|
+
```powershell
|
|
39
|
+
npm.cmd install -g @minhspark/codex-mcp-bridge@latest
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Requires **Node.js 22.13+**. Use `.cmd` for this package's commands in Windows PowerShell. Run the same package command to update; reconnect MCP servers if their settings or installation paths changed.
|
|
43
|
+
|
|
44
|
+
### Package — Homebrew
|
|
31
45
|
|
|
32
46
|
On macOS or Linux you can install with [Homebrew](https://github.com/buidangminh23/homebrew-tap) instead, which brings its own Node.js:
|
|
33
47
|
|
|
@@ -35,9 +49,26 @@ On macOS or Linux you can install with [Homebrew](https://github.com/buidangminh
|
|
|
35
49
|
brew install buidangminh23/tap/codex-mcp-bridge
|
|
36
50
|
```
|
|
37
51
|
|
|
38
|
-
|
|
52
|
+
**Homebrew — update**
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
brew upgrade codex-mcp-bridge
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The installers record Homebrew's stable `opt` paths, so registrations keep working after an upgrade and running bridges reload the new version. Keep one install channel: whichever of npm or Homebrew comes first on `PATH` provides the commands.
|
|
39
59
|
|
|
40
|
-
[Windows](#windows-powershell) · [macOS](#macos-terminal) · [Linux / WSL](#linux--wsl-bash) · [ChatGPT plugin](#chatgpt-plugin)
|
|
60
|
+
[Windows](#windows-powershell) · [macOS](#macos-terminal) · [Claude Code](#register-claude-code) · [Antigravity](#antigravity-app-and-cli) · [VS Code](#vs-code-extensions--windows-preview) · [Linux / WSL](#linux--wsl-bash) · [NPX Skills](#workflow-skill--npx-skills) · [ChatGPT plugin](#chatgpt-plugin)
|
|
61
|
+
|
|
62
|
+
| Integration | Setup |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
| Claude Desktop Code → Codex Desktop | Native relay plus user-level `claude mcp add` registration below |
|
|
65
|
+
| Claude Code CLI → local Codex app-server | CLI registration with Desktop mode disabled |
|
|
66
|
+
| Claude Desktop shared MCP → local Codex app-server | Optional legacy registration below |
|
|
67
|
+
| Codex → Claude Desktop Code | `claude-mcp-bridge-install` with `CODEX_BRIDGE_DESKTOP_TASKS=1` |
|
|
68
|
+
| Codex / Claude Desktop Code → Antigravity App or CLI | Antigravity `--codex` / `--claude` registrations |
|
|
69
|
+
| Antigravity App → Codex / Claude Desktop Code | Antigravity `--desktop` registration |
|
|
70
|
+
| Claude Code ↔ Codex inside VS Code | Separate Windows preview registrations below |
|
|
71
|
+
| ChatGPT → paired Codex Desktop | Hosted plugin plus `codex-sites-connector --pair` |
|
|
41
72
|
|
|
42
73
|
### Antigravity App and CLI
|
|
43
74
|
|
|
@@ -47,7 +78,39 @@ Install and sign in to the Antigravity App and/or `agy` CLI, then run:
|
|
|
47
78
|
antigravity-mcp-bridge-install --all
|
|
48
79
|
```
|
|
49
80
|
|
|
50
|
-
|
|
81
|
+
**Windows PowerShell — all components**
|
|
82
|
+
|
|
83
|
+
```powershell
|
|
84
|
+
antigravity-mcp-bridge-install.cmd --all
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Codex → Antigravity App / CLI**
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
antigravity-mcp-bridge-install --codex
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Claude Desktop Code → Antigravity App / CLI**
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
antigravity-mcp-bridge-install --claude
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Antigravity App sidecar and outbound bridge**
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
antigravity-mcp-bridge-install --desktop
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Preview the installation without changing configuration**
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
antigravity-mcp-bridge-install --all --dry-run
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Use `.cmd` for each command on Windows. `--all` includes all three components; the individual commands are alternatives when only some clients are needed. The installer preserves unrelated configuration and native permissions. Reload Codex/Claude to load the new MCP server. Antigravity launches its own sidecar from `~/.gemini/config/sidecars/codex-bridge/sidecar.json`; do not run that sidecar manually or copy authentication environment variables between processes.
|
|
112
|
+
|
|
113
|
+
The `agy` CLI must be installed and signed in separately. CLI sessions are started through the `start_antigravity_cli_session` MCP tool; there is no separate `--cli` installer flag. Set `ANTIGRAVITY_CLI_BIN` to the absolute `agy` executable path in the MCP server environment if automatic discovery cannot find it.
|
|
51
114
|
|
|
52
115
|
| Tool | Behavior |
|
|
53
116
|
| --- | --- |
|
|
@@ -77,7 +140,6 @@ If the Codex CLI is missing, run `winget install --id OpenAI.Codex --exact`, ope
|
|
|
77
140
|
```powershell
|
|
78
141
|
$env:CODEX_EXE = (Get-Command codex.exe).Source
|
|
79
142
|
codex-native-relay-install.cmd --desktop-tasks
|
|
80
|
-
codex-mcp-bridge-install.cmd --desktop-tasks
|
|
81
143
|
$env:CODEX_BRIDGE_DESKTOP_TASKS = "1"
|
|
82
144
|
claude-mcp-bridge-install.cmd
|
|
83
145
|
```
|
|
@@ -92,7 +154,6 @@ Install and sign in to Codex Desktop and Claude Desktop. Save the project in Cod
|
|
|
92
154
|
npm install -g @openai/codex@latest
|
|
93
155
|
codex login
|
|
94
156
|
codex-native-relay-install --desktop-tasks
|
|
95
|
-
codex-mcp-bridge-install --desktop-tasks
|
|
96
157
|
CODEX_BRIDGE_DESKTOP_TASKS=1 claude-mcp-bridge-install
|
|
97
158
|
```
|
|
98
159
|
|
|
@@ -102,6 +163,8 @@ Keep bootstrap enabled on the first relay install. Next: [register Claude Code](
|
|
|
102
163
|
|
|
103
164
|
Claude Desktop and Claude Code have separate MCP registrations. If `claude --version` is unavailable, [install Claude Code](https://code.claude.com/docs/en/setup) first. For a new registration, replace the example project path below with the actual directory. Preserve custom settings if `codex-bridge` is already registered.
|
|
104
165
|
|
|
166
|
+
Native Desktop handoffs require a verified Claude Desktop **Code** session. A shared Desktop chat MCP registration cannot establish that sender identity. If you also keep the optional legacy shared registration below, close Claude before editing its `claude_desktop_config.json` and rename that entry from `codex-bridge` to `codex-bridge-desktop`, keeping its contents. Otherwise the shared entry can shadow the user-level Code registration and hide the calling task. Later Desktop installer runs recognize the renamed entry.
|
|
167
|
+
|
|
105
168
|
<details>
|
|
106
169
|
<summary>Windows PowerShell</summary>
|
|
107
170
|
|
|
@@ -132,19 +195,65 @@ claude mcp add --scope user codex-bridge \
|
|
|
132
195
|
-- "$(command -v node)" "$bridge_root/src/mcp-supervisor.mjs" index.mjs
|
|
133
196
|
```
|
|
134
197
|
|
|
135
|
-
For a Homebrew install, use
|
|
198
|
+
For a Homebrew install, use this complete command with stable `opt` paths instead:
|
|
136
199
|
|
|
137
200
|
```bash
|
|
138
201
|
bridge_root="$(brew --prefix)/opt/codex-mcp-bridge/libexec/lib/node_modules/@minhspark/codex-mcp-bridge"
|
|
139
202
|
node_bin="$(brew --prefix)/opt/node/bin/node"
|
|
203
|
+
claude mcp add --scope user codex-bridge \
|
|
204
|
+
-e CODEX_BIN="$(command -v codex)" \
|
|
205
|
+
-e CODEX_BRIDGE_DESKTOP_TASKS=1 \
|
|
206
|
+
-e CODEX_BRIDGE_AUTOSTART=0 \
|
|
207
|
+
-e CODEX_BRIDGE_THREAD_POLICY=roots \
|
|
208
|
+
-e CODEX_BRIDGE_ALLOWED_ROOTS="$HOME/YourProject" \
|
|
209
|
+
-- "$node_bin" "$bridge_root/src/mcp-supervisor.mjs" index.mjs
|
|
140
210
|
```
|
|
141
211
|
|
|
142
|
-
and end the command with `-- "$node_bin" "$bridge_root/src/mcp-supervisor.mjs" index.mjs`.
|
|
143
|
-
|
|
144
212
|
</details>
|
|
145
213
|
|
|
146
214
|
Separate multiple allowed directories with `;` on Windows or `:` on macOS/Linux.
|
|
147
215
|
|
|
216
|
+
`codex-bridge-code-install` is for checking or migrating an existing supervised Code registration to a shared project policy; it does not replace the first-install commands above. See [project onboarding](docs/project-onboarding.md).
|
|
217
|
+
|
|
218
|
+
### Claude Desktop shared MCP — legacy option
|
|
219
|
+
|
|
220
|
+
This optional registration connects a shared Claude Desktop MCP server to local Codex app-server sessions. For verified handoffs into Codex Desktop conversations, use the Code-tab setup above. Install and sign in to the Codex CLI first.
|
|
221
|
+
|
|
222
|
+
**Windows PowerShell**
|
|
223
|
+
|
|
224
|
+
```powershell
|
|
225
|
+
$env:CODEX_EXE = (Get-Command codex.exe).Source
|
|
226
|
+
$env:CODEX_BRIDGE_DESKTOP_TASKS = "0"
|
|
227
|
+
$env:CODEX_BRIDGE_AUTOSTART = "1"
|
|
228
|
+
codex-mcp-bridge-install.cmd
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**macOS Terminal**
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
CODEX_BRIDGE_DESKTOP_TASKS=0 CODEX_BRIDGE_AUTOSTART=1 codex-mcp-bridge-install
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
The installer updates Claude Desktop's shared MCP configuration. Close and reopen Claude after configuration changes, and keep a distinct `codex-bridge-desktop` entry name if also using the user-level Code registration. `--desktop-tasks` configures the native destination mode but does not make a shared Desktop chat server a verified Code sender.
|
|
238
|
+
|
|
239
|
+
### VS Code extensions — Windows preview
|
|
240
|
+
|
|
241
|
+
For existing Claude Code and Codex extension conversations inside the same VS Code project, register the separate preview bridge in both clients. Install the npm package first and replace the example root with the real project directory. These registrations preserve extension sender checks and do not provide Desktop access.
|
|
242
|
+
|
|
243
|
+
```powershell
|
|
244
|
+
$bridgeRoot = Join-Path ((npm.cmd root -g).Trim()) '@minhspark/codex-mcp-bridge'
|
|
245
|
+
$nodeBin = (Get-Command node.exe).Source
|
|
246
|
+
$projectRoot = 'C:\Projects\YourProject'
|
|
247
|
+
claude mcp add --scope user codex-vscode-bridge `
|
|
248
|
+
-e "VSCODE_BRIDGE_ALLOWED_ROOTS=$projectRoot" `
|
|
249
|
+
-- $nodeBin (Join-Path $bridgeRoot 'src/vscode-bridge.mjs') claude
|
|
250
|
+
codex.exe mcp add claude-vscode-bridge `
|
|
251
|
+
--env "VSCODE_BRIDGE_ALLOWED_ROOTS=$projectRoot" `
|
|
252
|
+
-- $nodeBin (Join-Path $bridgeRoot 'src/vscode-bridge.mjs') codex
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Reload the VS Code window after registration. Separate multiple explicit project roots with `;`; drive roots are not accepted. See [preview behavior and limits](REFERENCE.md#vs-code-extension-bridge-windows-preview).
|
|
256
|
+
|
|
148
257
|
### Native relay pipe forwarding
|
|
149
258
|
|
|
150
259
|
On Windows and macOS, `codex-native-relay-install` adds this to the relay's entry in `~/.codex/config.toml` (or `$CODEX_HOME/config.toml`) and keeps its other settings:
|
|
@@ -158,7 +267,7 @@ If you register the relay by hand, add the same line and append the variable nam
|
|
|
158
267
|
|
|
159
268
|
### Linux / WSL (Bash)
|
|
160
269
|
|
|
161
|
-
Use Node.js 22+ and signed-in Codex and Claude Code CLIs under the same Linux user. This mode uses a local app-server; native Desktop integration requires Windows or macOS.
|
|
270
|
+
Use Node.js 22.13+ and signed-in Codex and Claude Code CLIs under the same Linux user. This mode uses a local app-server; native Desktop integration requires Windows or macOS.
|
|
162
271
|
|
|
163
272
|
<details>
|
|
164
273
|
<summary>CLI registration commands</summary>
|
|
@@ -181,6 +290,114 @@ Replace `$HOME/YourProject` with the actual project directory. WSL and Windows u
|
|
|
181
290
|
|
|
182
291
|
</details>
|
|
183
292
|
|
|
293
|
+
<details>
|
|
294
|
+
<summary>Linux Homebrew registration commands</summary>
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
npm install -g @openai/codex@latest
|
|
298
|
+
codex login
|
|
299
|
+
CODEX_BRIDGE_DESKTOP_TASKS=0 claude-mcp-bridge-install
|
|
300
|
+
bridge_root="$(brew --prefix)/opt/codex-mcp-bridge/libexec/lib/node_modules/@minhspark/codex-mcp-bridge"
|
|
301
|
+
node_bin="$(brew --prefix)/opt/node/bin/node"
|
|
302
|
+
claude mcp add --scope user codex-bridge \
|
|
303
|
+
-e CODEX_BIN="$(command -v codex)" \
|
|
304
|
+
-e CODEX_BRIDGE_DESKTOP_TASKS=0 \
|
|
305
|
+
-e CODEX_BRIDGE_AUTOSTART=1 \
|
|
306
|
+
-e CODEX_BRIDGE_THREAD_POLICY=roots \
|
|
307
|
+
-e CODEX_BRIDGE_ALLOWED_ROOTS="$HOME/YourProject" \
|
|
308
|
+
-- "$node_bin" "$bridge_root/src/mcp-supervisor.mjs" index.mjs
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
Replace `$HOME/YourProject` with the actual project directory. The bridge and Node paths remain stable across Homebrew upgrades.
|
|
312
|
+
|
|
313
|
+
</details>
|
|
314
|
+
|
|
315
|
+
### Workflow skill — NPX Skills
|
|
316
|
+
|
|
317
|
+
The repository includes one portable skill, `codex-bridge`, for the [hosted Codex Bridge workflow](#chatgpt-plugin). These commands install its Markdown instructions only. Using the workflow requires a client with the hosted plugin's MCP tools and a paired connector; copying the skill does not install the local bridges, configure authentication, or make a client a supported native sender.
|
|
318
|
+
|
|
319
|
+
Use a Node.js version supported by the current [Skills CLI](https://github.com/vercel-labs/skills). The examples target the current project; add `-g` for a user-wide install. In Windows PowerShell use `npx.cmd` instead of `npx`.
|
|
320
|
+
|
|
321
|
+
**NPX Skills — select the workflow skill**
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
npx skills add buidangminh23/codex-mcp-bridge --skill codex-bridge
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
**List available skills without installing**
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
npx skills add buidangminh23/codex-mcp-bridge --list
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**Claude Code**
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
npx skills add buidangminh23/codex-mcp-bridge --skill codex-bridge -a claude-code
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
**Codex**
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
npx skills add buidangminh23/codex-mcp-bridge --skill codex-bridge -a codex
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
**Cursor**
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
npx skills add buidangminh23/codex-mcp-bridge --skill codex-bridge -a cursor
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**Gemini CLI**
|
|
352
|
+
|
|
353
|
+
```bash
|
|
354
|
+
npx skills add buidangminh23/codex-mcp-bridge --skill codex-bridge -a gemini-cli
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
**Antigravity**
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
npx skills add buidangminh23/codex-mcp-bridge --skill codex-bridge -a antigravity
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**Antigravity CLI**
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
npx skills add buidangminh23/codex-mcp-bridge --skill codex-bridge -a antigravity-cli
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
**Cline**
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
npx skills add buidangminh23/codex-mcp-bridge --skill codex-bridge -a cline
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
**OpenCode**
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
npx skills add buidangminh23/codex-mcp-bridge --skill codex-bridge -a opencode
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
**All Skills CLI agents — user-wide, without prompts**
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
npx skills add buidangminh23/codex-mcp-bridge --all -g
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
`--all` installs every skill in the repository for every supported Skills CLI agent, not just detected apps. Choose an individual `-a` command above for a narrower install. Agent names and scope flags follow the [Skills CLI reference](https://github.com/vercel-labs/skills/blob/main/docs/commands.md).
|
|
388
|
+
|
|
389
|
+
**Legacy `add-skill` command**
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
npx add-skill buidangminh23/codex-mcp-bridge
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
`add-skill` is deprecated and forwards to `npx skills add`; use the current command above, especially on Windows where the legacy wrapper may fail to find `npx`.
|
|
396
|
+
|
|
397
|
+
**Marketplace and Gemini extension installs**
|
|
398
|
+
|
|
399
|
+
This repository ships a hosted ChatGPT plugin and the skill above. It does not currently publish a Claude/Codex marketplace catalog or a `gemini-extension.json` package. Consequently, `/plugin marketplace add`, `codex plugin marketplace add`, and `gemini extensions install` are not installation routes for this repository. Use the native bridge setup, NPX skill commands, or [hosted plugin setup](#chatgpt-plugin) as appropriate.
|
|
400
|
+
|
|
184
401
|
### Verify the installation
|
|
185
402
|
|
|
186
403
|
Reconnect the affected MCP servers in the actual client tasks; Claude Code provides `/mcp`. Run these **MCP tools** inside the apps:
|
|
@@ -190,6 +407,16 @@ Reconnect the affected MCP servers in the actual client tasks; Claude Code provi
|
|
|
190
407
|
| Claude Code | `codex_bridge_status` |
|
|
191
408
|
| Codex | `claude_bridge_status` |
|
|
192
409
|
| Codex Desktop | `native_relay_status` |
|
|
410
|
+
| Codex / Claude Desktop Code with Antigravity installed | `antigravity_bridge_status` |
|
|
411
|
+
|
|
412
|
+
To check CLI registrations without sending work:
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
codex mcp list
|
|
416
|
+
claude mcp list
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
On Windows use `codex.exe mcp list`. An installed skill is listed separately with `npx skills list` (add `-g` for user-wide skills); it is not an MCP registration.
|
|
193
420
|
|
|
194
421
|
Send a short message and confirm its reply **in both directions**. Registration alone does not prove delivery.
|
|
195
422
|
|
package/assets/README.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# Artwork sources
|
|
2
2
|
|
|
3
|
-
`agent-pets.svg`
|
|
3
|
+
`agent-pets.svg` places Claude Clawd, the original Codex companion, and the official Google Antigravity logo around a circle, connected by curved two-way arrows. The artwork preserves the original colors and proportions of all three marks.
|
|
4
4
|
|
|
5
5
|
- Claude Clawd: `ClaudeCode` vector from [LobeHub Icons](https://github.com/lobehub/lobe-icons), copied from the `icons-pro-max` asset catalog. Copyright (c) 2023 LobeHub; MIT license below.
|
|
6
6
|
- Codex companion: original idle frame from OpenAI's Codex desktop companion artwork (`codex-spritesheet-v6`, cell 0,0, 192 × 208 pixels). Copyright OpenAI. This third-party artwork and the represented trademarks are not covered by this repository's MIT license.
|
|
7
|
+
- Antigravity: original vector mark from the [official Google Antigravity favicon](https://www.antigravity.google/favicon.svg), retrieved October 28, 2026. The favicon background is omitted; the logo paths, colors, masks, and filters are preserved. Copyright Google. This third-party artwork and the represented trademarks are not covered by this repository's MIT license.
|
|
7
8
|
|
|
8
9
|
## LobeHub Icons license
|
|
9
10
|
|
package/assets/agent-pets.svg
CHANGED
|
@@ -1 +1,47 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="144" height="52" viewBox="0 0 144 52" role="img" aria-labelledby="title"><title id="title">Claude Clawd and Codex pets communicating in both directions</title><metadata>Claude Clawd vector: LobeHub Icons, MIT, copyright LobeHub. Codex companion: OpenAI Codex desktop, original idle sprite, copyright OpenAI. See assets/README.md.</metadata><svg x="0" y="2" width="48" height="48" viewBox="0 0 24 24"><path clip-rule="evenodd" d="M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z" fill="#D97757" fill-rule="evenodd"/></svg><g fill="none" stroke="#8b949e" stroke-width="2.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M61 16H81M75 10L81 16L75 22"/><path d="M81 36H61M67 30L61 36L67 42"/></g><image x="96" y="0" width="48" height="52" href="data:image/png;base64,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"/></svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="240" height="220" viewBox="0 0 240 220" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">Claude, Codex, and Antigravity connected in a circle</title>
|
|
3
|
+
<desc id="desc">The official Antigravity logo above Claude Clawd and the Codex companion, connected by curved two-way arrows.</desc>
|
|
4
|
+
<metadata>Claude Clawd: LobeHub Icons, MIT. Codex companion: OpenAI original idle sprite. Antigravity: Google official favicon artwork. See assets/README.md.</metadata>
|
|
5
|
+
<defs>
|
|
6
|
+
<marker id="arrow" viewBox="0 0 8 8" refX="6" refY="4" markerWidth="6" markerHeight="6" orient="auto-start-reverse" markerUnits="userSpaceOnUse">
|
|
7
|
+
<path d="M 1 1 L 6 4 L 1 7" fill="none" stroke="#8b949e" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
8
|
+
</marker>
|
|
9
|
+
</defs>
|
|
10
|
+
<g fill="none" stroke="#8b949e" stroke-width="2.2" stroke-linecap="round" marker-start="url(#arrow)" marker-end="url(#arrow)">
|
|
11
|
+
<path d="M 156.62 51.13 A 78 78 0 0 1 197.95 122.72"/>
|
|
12
|
+
<path d="M 159.00 187.55 A 78 78 0 0 1 81.00 187.55"/>
|
|
13
|
+
<path d="M 42.05 122.72 A 78 78 0 0 1 83.38 51.13"/>
|
|
14
|
+
</g>
|
|
15
|
+
<svg x="96" y="20" width="48" height="44" viewBox="24 27 88 80"><g transform="translate(12 10)">
|
|
16
|
+
<path d="M89.6992 93.695C94.3659 97.195 101.366 94.8617 94.9492 88.445C75.6992 69.7783 79.7825 18.445 55.8659 18.445C31.9492 18.445 36.0325 69.7783 16.7825 88.445C9.78251 95.445 17.3658 97.195 22.0325 93.695C40.1159 81.445 38.9492 59.8617 55.8659 59.8617C72.7825 59.8617 71.6159 81.445 89.6992 93.695Z" fill="#3186FF"/>
|
|
17
|
+
<mask id="ag_fav_m" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="13" y="18" width="85" height="78">
|
|
18
|
+
<path d="M89.6992 93.695C94.3659 97.195 101.366 94.8617 94.9492 88.445C75.6992 69.7783 79.7825 18.445 55.8659 18.445C31.9492 18.445 36.0325 69.7783 16.7825 88.445C9.78251 95.445 17.3658 97.195 22.0325 93.695C40.1159 81.445 38.9492 59.8617 55.8659 59.8617C72.7825 59.8617 71.6159 81.445 89.6992 93.695Z" fill="black"/>
|
|
19
|
+
</mask>
|
|
20
|
+
<g mask="url(#ag_fav_m)">
|
|
21
|
+
<g filter="url(#ag_fav_f0)"><ellipse cx="22.7873" cy="26.8098" rx="22.7873" ry="26.8098" transform="matrix(-0.112784 0.99362 -0.99362 -0.112781 66.2473 -15.5344)" fill="#FFE432"/></g>
|
|
22
|
+
<g filter="url(#ag_fav_f1)"><ellipse cx="96.491" cy="35.1231" rx="29.5007" ry="30.1492" transform="rotate(76.9243 96.491 35.1231)" fill="#FC413D"/></g>
|
|
23
|
+
<g filter="url(#ag_fav_f2)"><ellipse cx="9.02988" cy="41.6647" rx="30.832" ry="39.9417" transform="rotate(74.1257 9.02988 41.6647)" fill="#00B95C"/></g>
|
|
24
|
+
<g filter="url(#ag_fav_f3)"><ellipse cx="11.2212" cy="42.8915" rx="30.22" ry="33.2695" transform="rotate(45.6065 11.2212 42.8915)" fill="#00B95C"/></g>
|
|
25
|
+
<g filter="url(#ag_fav_f4)"><ellipse cx="75.7546" cy="104.822" rx="29.0177" ry="27.943" transform="rotate(76.9243 75.7546 104.822)" fill="#3186FF"/></g>
|
|
26
|
+
<g filter="url(#ag_fav_f5)"><ellipse cx="33.5661" cy="35.4043" rx="33.5661" ry="35.4043" transform="matrix(-0.409539 0.912293 -0.912294 -0.409537 101.25 -15.1674)" fill="#FBBC04"/></g>
|
|
27
|
+
<g filter="url(#ag_fav_f6)"><path d="M2.56802 149.695C-15.8116 142.48 15.5987 83.1163 23.4093 63.2203C31.22 43.3244 52.4514 33.0447 70.831 40.26C89.2107 47.4753 110.996 87.2162 103.185 107.112C95.3742 127.008 20.9477 156.91 2.56802 149.695Z" fill="#3186FF"/></g>
|
|
28
|
+
<g filter="url(#ag_fav_f7)"><path d="M113.934 75.8079C109.013 81.5509 96.1724 78.6224 85.253 69.2667C74.3335 59.911 69.4704 47.6711 74.391 41.928C79.3116 36.185 92.1525 39.1136 103.072 48.4692C113.991 57.8249 118.855 70.0648 113.934 75.8079Z" fill="#749BFF"/></g>
|
|
29
|
+
<g filter="url(#ag_fav_f8)"><ellipse cx="92.611" cy="23.7962" rx="44.2411" ry="27.5016" transform="rotate(34.0763 92.611 23.7962)" fill="#FC413D"/></g>
|
|
30
|
+
<g filter="url(#ag_fav_f9)"><ellipse cx="23.4949" cy="29.5887" rx="23.7071" ry="13.7869" transform="rotate(112.516 23.4949 29.5887)" fill="#FFEE48"/></g>
|
|
31
|
+
</g>
|
|
32
|
+
</g>
|
|
33
|
+
<defs>
|
|
34
|
+
<filter id="ag_fav_f0" x="2.49348" y="-26.5423" width="69.0899" height="61.2525" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="3.89034"/></filter>
|
|
35
|
+
<filter id="ag_fav_f1" x="28.7524" y="-32.0333" width="135.477" height="134.313" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="18.8078"/></filter>
|
|
36
|
+
<filter id="ag_fav_f2" x="-62.2884" y="-21.9253" width="142.637" height="127.18" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="15.9884"/></filter>
|
|
37
|
+
<filter id="ag_fav_f3" x="-52.5697" y="-20.8346" width="127.582" height="127.452" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="15.9884"/></filter>
|
|
38
|
+
<filter id="ag_fav_f4" x="17.3619" y="45.4646" width="116.786" height="118.715" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="15.1937"/></filter>
|
|
39
|
+
<filter id="ag_fav_f5" x="-7.44765" y="-60.4737" width="125.303" height="122.858" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="13.7698"/></filter>
|
|
40
|
+
<filter id="ag_fav_f6" x="-27.7086" y="13.3597" width="157.119" height="162.029" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="12.297"/></filter>
|
|
41
|
+
<filter id="ag_fav_f7" x="50.4638" y="16.981" width="87.3973" height="83.7738" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="11.0036"/></filter>
|
|
42
|
+
<filter id="ag_fav_f8" x="34.2604" y="-28.457" width="116.701" height="104.506" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="9.29385"/></filter>
|
|
43
|
+
<filter id="ag_fav_f9" x="-15.1522" y="-15.9493" width="77.2941" height="91.076" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="11.5027"/></filter>
|
|
44
|
+
</defs></svg>
|
|
45
|
+
<svg x="28.45" y="135" width="48" height="48" viewBox="0 0 24 24"><path clip-rule="evenodd" d="M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z" fill="#D97757" fill-rule="evenodd"/></svg>
|
|
46
|
+
<image x="163.55" y="133" width="48" height="52" href="data:image/png;base64,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"/>
|
|
47
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minhspark/codex-mcp-bridge",
|
|
3
|
-
"version": "1.24.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.24.1",
|
|
4
|
+
"description": "Connect Claude, Codex, and Antigravity through MCP, with native Desktop handoffs and bridge-owned Antigravity CLI sessions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
7
7
|
"codex",
|
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "codex-mcp-bridge",
|
|
4
|
-
"version": "1.24.
|
|
4
|
+
"version": "1.24.1",
|
|
5
5
|
"description": "Connect ChatGPT to your own Codex Desktop projects and conversations.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Bui Dang Minh",
|
|
@@ -25,7 +25,7 @@ import { removeRelayFile } from "../src/native-relay-files.mjs";
|
|
|
25
25
|
|
|
26
26
|
exitForVersionRequest(import.meta.url);
|
|
27
27
|
|
|
28
|
-
const VERSION = "1.24.
|
|
28
|
+
const VERSION = "1.24.1";
|
|
29
29
|
const root = stableInstallPath(path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."));
|
|
30
30
|
const entry = path.join(root, "src", "mcp-supervisor.mjs");
|
|
31
31
|
const entryArgs = ["native-relay-companion.mjs"];
|
package/src/claude-bridge.mjs
CHANGED
|
@@ -30,7 +30,7 @@ import { discoverClaudeProject } from "./claude-project-discovery.mjs";
|
|
|
30
30
|
|
|
31
31
|
exitForVersionRequest(import.meta.url);
|
|
32
32
|
|
|
33
|
-
const VERSION = "1.24.
|
|
33
|
+
const VERSION = "1.24.1";
|
|
34
34
|
void import("./telemetry.mjs").then(({ startUsageReporting }) => startUsageReporting({ version: VERSION })).catch(() => {});
|
|
35
35
|
const FORWARD_MIN_INTERVAL_MS = 5000;
|
|
36
36
|
const FORWARD_MAX_PER_SESSION = 50;
|
|
@@ -109,7 +109,7 @@ const replyForwarder = new ReplyForwarder({
|
|
|
109
109
|
if (desktopOnly) assertAccountIdentity(record.accountContext);
|
|
110
110
|
recheckScopeBindings(record.scopeBindings);
|
|
111
111
|
},
|
|
112
|
-
deliver: (threadId, record) => delivery.deliver(threadId, `[message from Claude session ${record.fromSocket ?? "?"}]\n${record.absorbed ? "[This reply is the closing text of a turn that absorbed the message while it was running; it may not address the message.]\n" : ""}\n${record.text}`,
|
|
112
|
+
deliver: (threadId, record) => delivery.deliver(threadId, `${record.kind === "delivery_status" ? "[Bridge notification about Claude reply observation; not a Claude reply]" : `[message from Claude session ${record.fromSocket ?? "?"}]`}\n${record.absorbed ? "[This reply is the closing text of a turn that absorbed the message while it was running; it may not address the message.]\n" : ""}\n${record.text}`,
|
|
113
113
|
desktopOnly ? { beforeSend: () => { assertAccountIdentity(record.accountContext); recheckScopeBindings(record.scopeBindings); }, accountContext: record.accountContext } : {}),
|
|
114
114
|
});
|
|
115
115
|
|
|
@@ -593,13 +593,13 @@ registerTool(
|
|
|
593
593
|
}
|
|
594
594
|
|
|
595
595
|
if (wait === 0) {
|
|
596
|
-
return result(`Sent to peer transport for ${targetLabel}.\nClaude receipt unconfirmed; not waiting for a reply.\nMessage id: ${msgId}
|
|
596
|
+
return result(`Sent to peer transport for ${targetLabel}.\nClaude receipt unconfirmed; not waiting for a reply.\nMessage id: ${msgId}\nCheck read_claude_delivery with this message ID for terminal status, and read_claude_inbox for late replies or bridge notifications. Do not resend automatically.`);
|
|
597
597
|
}
|
|
598
598
|
|
|
599
599
|
if (!reply) {
|
|
600
600
|
return result(
|
|
601
601
|
`Sent to peer transport for ${targetLabel}.\n\nNo reply within ${wait}s; Claude receipt and outcome remain unconfirmed. ` +
|
|
602
|
-
`Do not automatically retry: the message may still be processed. Check read_claude_inbox for a late reply.\nMessage id: ${msgId}`,
|
|
602
|
+
`Do not automatically retry: the message may still be processed. Check read_claude_delivery for terminal status and read_claude_inbox for a late reply or bridge notification.\nMessage id: ${msgId}`,
|
|
603
603
|
true,
|
|
604
604
|
);
|
|
605
605
|
}
|
|
@@ -633,7 +633,7 @@ registerTool(
|
|
|
633
633
|
title: "Read messages Claude sent to this bridge",
|
|
634
634
|
description:
|
|
635
635
|
"Read and consume the oldest requested page of Claude messages, preserving unread messages. " +
|
|
636
|
-
"Includes late replies and their Codex forwarding status.",
|
|
636
|
+
"Includes late replies, terminal bridge-status notifications (not assistant replies), and their Codex forwarding status.",
|
|
637
637
|
inputSchema: {
|
|
638
638
|
limit: z.number().int().min(1).max(100).optional().describe("How many messages to return (default 20)"),
|
|
639
639
|
},
|
|
@@ -655,7 +655,7 @@ registerTool(
|
|
|
655
655
|
.map((m) => {
|
|
656
656
|
const at = new Date(m.receivedAt).toISOString().replace("T", " ").slice(0, 19);
|
|
657
657
|
const state = replyForwarder.read(m.inReplyTo ?? m.msgId) ?? m.forwardingError;
|
|
658
|
-
return `[${at}] from ${m.fromSocket ?? "?"}${state ? `\nCodex forwarding: ${state.status}${state.reason ? ` (${state.reason})` : ""}` : ""}\n${m.text}`;
|
|
658
|
+
return `[${at}] ${m.kind === "delivery_status" ? "bridge status for" : "from"} ${m.fromSocket ?? "?"}${state ? `\nCodex forwarding: ${state.status}${state.reason ? ` (${state.reason})` : ""}` : ""}\n${m.text}`;
|
|
659
659
|
})
|
|
660
660
|
.join("\n\n"),
|
|
661
661
|
);
|
|
@@ -140,7 +140,7 @@ function scanSegment(file, maxBytes, { threadId, turnId, afterOffset, prefixSize
|
|
|
140
140
|
if (start >= dispatchAfterOffset && dispatchOutputs && record.type === "response_item" && record.payload.type === "function_call_output" &&
|
|
141
141
|
record.payload.namespace === "codex_app" && record.payload.name === "send_message_to_thread" && dispatchOutputs.includes(record.payload.output)) {
|
|
142
142
|
const metadata = record.payload.internal_chat_message_metadata_passthrough;
|
|
143
|
-
const selectedTurnId = record.payload.turn_id ?? record.payload.root_turn_id ?? metadata?.
|
|
143
|
+
const selectedTurnId = record.payload.turn_id ?? metadata?.turn_id ?? record.payload.root_turn_id ?? metadata?.root_turn_id;
|
|
144
144
|
if (!UUID.test(selectedTurnId) || !recordBelongsToTurn(entry, threadId, selectedTurnId)) throw new Error("The native dispatch has no consistent turn identity");
|
|
145
145
|
dispatches.push({ turnId: selectedTurnId, start });
|
|
146
146
|
if (dispatches.length > 1) throw new Error("Multiple post-send native dispatches match the reply receipt");
|
|
@@ -223,7 +223,11 @@ function replyHash(text) {
|
|
|
223
223
|
function recordBelongsToTurn(entry, threadId, turnId) {
|
|
224
224
|
const payload = entry.record.payload;
|
|
225
225
|
const metadata = object(payload.internal_chat_message_metadata_passthrough) ? payload.internal_chat_message_metadata_passthrough : {};
|
|
226
|
-
|
|
226
|
+
// root_turn_id describes causal ancestry and may belong to another thread.
|
|
227
|
+
// Only older records without explicit turn IDs use it as their identity.
|
|
228
|
+
const explicitTurns = [payload.turn_id, metadata.turn_id].filter((value) => value !== undefined);
|
|
229
|
+
const turnFields = explicitTurns.length ? explicitTurns
|
|
230
|
+
: [payload.root_turn_id, metadata.root_turn_id].filter((value) => value !== undefined);
|
|
227
231
|
if (!turnFields.includes(turnId)) return false;
|
|
228
232
|
if (turnFields.some((value) => value !== turnId)) throw validationError("The native response contains contradictory turn identity", "turn_identity", { recordByte: entry.start });
|
|
229
233
|
const threadFields = [payload.thread_id, metadata.thread_id].filter((value) => value !== undefined);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { DESKTOP_TOOL_BUDGET_MS } from "./thread-delivery.mjs";
|
|
3
|
+
import { DESKTOP_TOOL_BUDGET_MS, OBSERVATION_UNAVAILABLE_GUIDANCE } from "./thread-delivery.mjs";
|
|
4
4
|
import { captureProjectScope, recheckProjectScope } from "./project-scope.mjs";
|
|
5
5
|
import { ResponseSnapshots, responsePreferencesSchema, normalizeResponsePreferences, projectHistory, projectReply, assertResponseResultSize } from "./response-preferences.mjs";
|
|
6
6
|
|
|
@@ -102,7 +102,8 @@ export function registerDesktopReadTools(registerTool, {
|
|
|
102
102
|
metadata: { ...metadata, threadId: delivered.threadId, turnId: result.turnId ?? null,
|
|
103
103
|
turnStatus: ["completed", "interrupted", "failed"].includes(result.status) ? result.status : null, deliveryId,
|
|
104
104
|
deliveryStatus: ["completed", "completed_no_reply"].includes(result.responseStatus) ? "accepted" : delivered.deliveryStatus ?? "accepted",
|
|
105
|
-
nextAction: result.status === "timeout" ? "wait_codex_reply" : "none"
|
|
105
|
+
nextAction: result.status === "observation_unavailable" ? "inspect_existing_task" : result.status === "timeout" ? "wait_codex_reply" : "none",
|
|
106
|
+
...(result.status === "observation_unavailable" ? { guidance: OBSERVATION_UNAVAILABLE_GUIDANCE } : {}) },
|
|
106
107
|
items: projectReply(assistantItems ?? [], result.turnId) });
|
|
107
108
|
};
|
|
108
109
|
if (!delivered.threadId || Date.now() >= observationDeadline) return finish(timeout());
|
package/src/index.mjs
CHANGED
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
import { runTurn } from "./turn.mjs";
|
|
25
25
|
import { BridgeSecurityPolicy } from "./security-policy.mjs";
|
|
26
26
|
import { enableCodexFullAccess, fullAccessEnabled } from "./codex-full-access.mjs";
|
|
27
|
-
import { DesktopTaskDelivery, DESKTOP_TOOL_BUDGET_MS } from "./thread-delivery.mjs";
|
|
27
|
+
import { DesktopTaskDelivery, DESKTOP_TOOL_BUDGET_MS, OBSERVATION_UNAVAILABLE_GUIDANCE } from "./thread-delivery.mjs";
|
|
28
28
|
import { desktopTasksConfigured } from "./native-relay.mjs";
|
|
29
29
|
import { exitForVersionRequest } from "./cli-version.mjs";
|
|
30
30
|
import { createRuntimeState } from "./runtime-state.mjs";
|
|
@@ -41,7 +41,7 @@ import { createRelayWake, relayKeeperEnabled, relayWakeStateFile, startRelayKeep
|
|
|
41
41
|
|
|
42
42
|
exitForVersionRequest(import.meta.url);
|
|
43
43
|
|
|
44
|
-
const VERSION = "1.24.
|
|
44
|
+
const VERSION = "1.24.1";
|
|
45
45
|
void import("./telemetry.mjs").then(({ startUsageReporting }) => startUsageReporting({ version: VERSION })).catch(() => {});
|
|
46
46
|
const log = (msg) => process.stderr.write(`[codex-mcp-bridge] ${msg}\n`);
|
|
47
47
|
|
|
@@ -170,10 +170,12 @@ function replyResult(delivered, deliveryId, result, notes = []) {
|
|
|
170
170
|
result = { activity: [], errors: [], ...result };
|
|
171
171
|
const deliveryStatus = ["completed", "completed_no_reply"].includes(result.responseStatus) ? "accepted" : delivered.deliveryStatus ?? "accepted";
|
|
172
172
|
const pending = result.status === "timeout";
|
|
173
|
+
const observationUnavailable = result.status === "observation_unavailable";
|
|
174
|
+
if (observationUnavailable) notes = [...notes, OBSERVATION_UNAVAILABLE_GUIDANCE];
|
|
173
175
|
const continuation = deliveryId ? `deliveryId: ${deliveryId}\n${pending ? "Continue automatically with wait_codex_reply and this deliveryId; it only observes the original send. Do not resend the prompt." : "Keep this deliveryId to inspect the same send after reconnecting."}` : "";
|
|
174
176
|
return {
|
|
175
177
|
...textResult([...notes, `deliveryStatus: ${deliveryStatus}`, formatTurn(result, { desktop: true }), continuation].filter(Boolean).join("\n"), result.status === "failed" || result.status === "systemError"),
|
|
176
|
-
structuredContent: { ...result, threadId: delivered.threadId, deliveryStatus, ...(deliveryId ? { deliveryId } : {}), nextAction: pending && deliveryId ? "wait_codex_reply" : "none" },
|
|
178
|
+
structuredContent: { ...result, threadId: delivered.threadId, deliveryStatus, ...(deliveryId ? { deliveryId } : {}), nextAction: observationUnavailable ? "inspect_existing_task" : pending && deliveryId ? "wait_codex_reply" : "none" },
|
|
177
179
|
};
|
|
178
180
|
}
|
|
179
181
|
|
|
@@ -42,7 +42,7 @@ import { remoteCodexSocketPath, remoteNativeAdapter, remoteRequestResponse } fro
|
|
|
42
42
|
|
|
43
43
|
exitForVersionRequest(import.meta.url);
|
|
44
44
|
|
|
45
|
-
const VERSION = "1.24.
|
|
45
|
+
const VERSION = "1.24.1";
|
|
46
46
|
const log = (msg) => process.stderr.write(`[native-relay] ${msg}\n`);
|
|
47
47
|
|
|
48
48
|
function errorResponse(code, message, sent, details) {
|
package/src/peer-protocol.mjs
CHANGED
|
@@ -875,9 +875,7 @@ export class PeerEndpoint {
|
|
|
875
875
|
this.log(`ignored uncorrelated inbound peer message from ${message.fromSocket ?? "?"} in hardened mode`);
|
|
876
876
|
return;
|
|
877
877
|
}
|
|
878
|
-
|
|
879
|
-
const record = { ...message, receivedAt: Date.now(), sequence: ++this.messageSequence };
|
|
880
|
-
this.inbox.push(record);
|
|
878
|
+
const record = { ...message };
|
|
881
879
|
if (key && correlated && pending.targetSocket === record.fromSocket) {
|
|
882
880
|
const sent = this.sentMessages.get(key);
|
|
883
881
|
if (sent) {
|
|
@@ -891,6 +889,13 @@ export class PeerEndpoint {
|
|
|
891
889
|
}
|
|
892
890
|
this.#removePendingReply(record.fromSocket, key);
|
|
893
891
|
}
|
|
892
|
+
this.#publishMessage(record);
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
#publishMessage(record) {
|
|
896
|
+
this.activityRevision += 1;
|
|
897
|
+
Object.assign(record, { receivedAt: Date.now(), sequence: ++this.messageSequence });
|
|
898
|
+
this.inbox.push(record);
|
|
894
899
|
this.log(`inbox <- ${record.fromSocket ?? "?"}: ${record.text.length} characters`);
|
|
895
900
|
for (const listener of [...this.listeners]) {
|
|
896
901
|
try { listener(record); }
|
|
@@ -911,9 +916,22 @@ export class PeerEndpoint {
|
|
|
911
916
|
const outcome = readTranscriptOutcome(sessionId, cwd, msgId);
|
|
912
917
|
if (outcome?.reply) this.#receiveMessage({ ...outcome.reply, fromSocket: pending.targetSocket });
|
|
913
918
|
else if (outcome?.status === "interrupted") {
|
|
914
|
-
this.activityRevision += 1;
|
|
915
919
|
this.deliveryReceipts.set(msgId, { ...outcome, fromSocket: pending.targetSocket, observedAt: Date.now() });
|
|
916
920
|
this.#removePendingReply(pending.targetSocket, msgId);
|
|
921
|
+
const sent = this.sentMessages.get(msgId);
|
|
922
|
+
// A terminal observation is a bridge notification, never a Claude reply.
|
|
923
|
+
// Retain the send's original routing and scope for inbox filtering and
|
|
924
|
+
// forwarding; do not infer either from the currently active task.
|
|
925
|
+
this.#publishMessage({
|
|
926
|
+
kind: "delivery_status", source: "bridge", status: "interrupted",
|
|
927
|
+
msgId: `interrupted:${msgId}`, inReplyTo: msgId, fromSocket: pending.targetSocket,
|
|
928
|
+
replyThreadId: sent?.replyThreadId ?? null, accountContext: sent?.accountContext ?? null,
|
|
929
|
+
cwd: sent?.transcriptSession?.cwd ?? null, senderCwd: sent?.scopeBindings?.sender?.path ?? null,
|
|
930
|
+
scopeBindings: sent?.scopeBindings ?? null,
|
|
931
|
+
outcome: "unknown", waitEnded: true, taskCancelled: false, retrySafe: false,
|
|
932
|
+
reasonCode: outcome.reasonCode, interruptedBy: outcome.interruptedBy, backgroundTaskIds: outcome.backgroundTaskIds,
|
|
933
|
+
text: `[Bridge delivery status: ${outcome.reasonCode}]\nMessage id: ${msgId}\n${outcome.reason}`,
|
|
934
|
+
});
|
|
917
935
|
this.log(`reply observation interrupted for ${msgId}; task outcome remains unknown`);
|
|
918
936
|
}
|
|
919
937
|
}
|
|
@@ -1096,7 +1114,7 @@ export class PeerEndpoint {
|
|
|
1096
1114
|
*/
|
|
1097
1115
|
waitForReply(fromSocket, { timeoutMs = 120000, since = Date.now(), afterSequence = null, msgId } = {}) {
|
|
1098
1116
|
const expectsTranscript = Boolean(msgId && this.sentMessages.get(msgId)?.transcriptSession);
|
|
1099
|
-
const matches = (record) => record.fromSocket === fromSocket
|
|
1117
|
+
const matches = (record) => record.kind !== "delivery_status" && record.fromSocket === fromSocket
|
|
1100
1118
|
&& (!expectsTranscript || (record.source === "transcript" && record.inReplyTo === msgId))
|
|
1101
1119
|
&& (!record.inReplyTo || !msgId || record.inReplyTo === msgId)
|
|
1102
1120
|
&& (afterSequence === null ? record.receivedAt >= since : record.sequence > afterSequence);
|
package/src/thread-delivery.mjs
CHANGED
|
@@ -27,6 +27,7 @@ import { requireClaudeSenderContext } from "./claude-sender-context.mjs";
|
|
|
27
27
|
export const NATIVE_BACKEND = "codex-desktop-native";
|
|
28
28
|
export const APP_SERVER_BACKEND = "app-server";
|
|
29
29
|
export const DESKTOP_TOOL_BUDGET_MS = 40000;
|
|
30
|
+
export const OBSERVATION_UNAVAILABLE_GUIDANCE = "The response could not be verified; this does not establish that delivery or the task failed. Inspect the existing task and this receipt; do not resend the prompt.";
|
|
30
31
|
export const WORKSPACE_UNASSIGNED = "DESKTOP_WORKSPACE_UNASSIGNED";
|
|
31
32
|
export const UNASSIGNED_WORKSPACE_GRACE_MS = 120000;
|
|
32
33
|
const RELEASE_STATUSES = new Set(["completed", "interrupted", "failed"]);
|
|
@@ -644,8 +645,9 @@ export class DesktopTaskDelivery {
|
|
|
644
645
|
}
|
|
645
646
|
turnId = observed.turnId ?? null;
|
|
646
647
|
if (observed.status !== "pending") {
|
|
648
|
+
const nativeFailure = turnId && turn?.id === turnId && ["failed", "interrupted"].includes(turn.status) ? turn.status : null;
|
|
647
649
|
return {
|
|
648
|
-
threadId, turnId, status: observed.status === "unavailable" ? "
|
|
650
|
+
threadId, turnId, status: observed.status === "unavailable" ? nativeFailure ?? "observation_unavailable" : "completed",
|
|
649
651
|
responseStatus: observed.status, observationStatus: observed.status,
|
|
650
652
|
text: observed.status === "completed" ? observed.text : "",
|
|
651
653
|
...(observed.reason ? { observationReason: observed.reason } : {}),
|