@minhspark/codex-mcp-bridge 1.26.2 → 1.26.3

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-mcp-bridge",
3
- "version": "1.26.2",
3
+ "version": "1.26.3",
4
4
  "description": "Connect ChatGPT to your own Codex Desktop projects and conversations.",
5
5
  "author": {
6
6
  "name": "Bui Dang Minh"
package/CHANGELOG.md CHANGED
@@ -4,6 +4,21 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [SemVer](ht
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.26.3] - 2026-11-01
8
+
9
+ ### Fixed
10
+
11
+ - `antigravity_bridge_status` and `agent_bridge_status` now return their full status (version, caller, Desktop sidecar availability, CLI and outbound routes) as structured content. Previously the supervisor attached only its `autoReload` block as structured content, so clients that render structured content showed the reload state and hid whether the Antigravity sidecar was reachable.
12
+ - The supervisor no longer creates structured content for a status result that has none; it adds `autoReload` only to an existing structured object and always appends the reload summary to the text content.
13
+
14
+ ### Upgrade
15
+
16
+ ```sh
17
+ npm exec --yes --ignore-scripts --package=@minhspark/codex-mcp-bridge@latest -- codex-bridge-update
18
+ ```
19
+
20
+ Reconnect the `antigravity-bridge` MCP server in each open client after updating; the running supervisor keeps its old code until it restarts.
21
+
7
22
  ## [1.26.2] - 2026-11-01
8
23
 
9
24
  ### Upgrade
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minhspark/codex-mcp-bridge",
3
- "version": "1.26.2",
3
+ "version": "1.26.3",
4
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",
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.26.2",
4
+ "version": "1.26.3",
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.26.2";
28
+ const VERSION = "1.26.3";
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"];
@@ -27,7 +27,7 @@ const sessions = new Map();
27
27
  let startingSessions = 0;
28
28
  const caller = process.env.ANTIGRAVITY_BRIDGE_CALLER;
29
29
  const senderRelay = new NativeDesktopRelay({ socketPath: desktopTaskSocketPath(), accountSocketPath: accountRelaySocketPath() });
30
- const result = (value) => ({ content: [{ type: "text", text: JSON.stringify(value, null, 2) }] });
30
+ const result = (value) => ({ content: [{ type: "text", text: JSON.stringify(value, null, 2) }], ...(value && typeof value === "object" && !Array.isArray(value) ? { structuredContent: value } : {}) });
31
31
  const schema = { requestId: z.string().uuid(), cwd: z.string().min(1), prompt: z.string().min(1).max(65536) };
32
32
  const reloadReason = () => startingSessions ? "Antigravity CLI sessions are still starting"
33
33
  : deliveries.active.size ? "Antigravity deliveries are still active"
@@ -18,7 +18,7 @@ import { bridgeDiagnostic, withBridgeDiagnostic, preflightFailure } from "./reci
18
18
  import { createReloadControl, exitWhenClientCloses } from "./reload-control.mjs";
19
19
 
20
20
  const { version } = JSON.parse(fs.readFileSync(new URL("../package.json", import.meta.url), "utf8"));
21
- const result = (value) => ({ content: [{ type: "text", text: JSON.stringify(value, null, 2) }] });
21
+ const result = (value) => ({ content: [{ type: "text", text: JSON.stringify(value, null, 2) }], ...(value && typeof value === "object" && !Array.isArray(value) ? { structuredContent: value } : {}) });
22
22
  const targetSchema = { target: z.enum(["codex", "claude"]) };
23
23
  const taskSchema = { ...targetSchema, conversationId: z.string().uuid(), taskId: z.string().min(1).max(256).optional() };
24
24
 
@@ -31,7 +31,7 @@ import { BACKGROUND_WORKER_GUIDANCE, registerBackgroundTools } from "./backgroun
31
31
 
32
32
  exitForVersionRequest(import.meta.url);
33
33
 
34
- const VERSION = "1.26.2";
34
+ const VERSION = "1.26.3";
35
35
  void import("./telemetry.mjs").then(({ startUsageReporting }) => startUsageReporting({ version: VERSION })).catch(() => {});
36
36
  const FORWARD_MIN_INTERVAL_MS = 5000;
37
37
  const FORWARD_MAX_PER_SESSION = 50;
package/src/index.mjs CHANGED
@@ -44,7 +44,7 @@ import { BACKGROUND_WORKER_GUIDANCE, registerBackgroundTools } from "./backgroun
44
44
 
45
45
  exitForVersionRequest(import.meta.url);
46
46
 
47
- const VERSION = "1.26.2";
47
+ const VERSION = "1.26.3";
48
48
  void import("./telemetry.mjs").then(({ startUsageReporting }) => startUsageReporting({ version: VERSION })).catch(() => {});
49
49
  const log = (msg) => process.stderr.write(`[codex-mcp-bridge] ${msg}\n`);
50
50
 
@@ -236,7 +236,8 @@ export async function runSupervisor(entry, options = {}) {
236
236
  ready = true;
237
237
  }
238
238
  if (message.result && ["codex_bridge_status", "claude_bridge_status", "native_relay_status", "antigravity_bridge_status", "agent_bridge_status"].includes(pending.tool)) {
239
- message.result.structuredContent = { ...message.result.structuredContent, autoReload: diagnostics() };
239
+ const structured = message.result.structuredContent;
240
+ if (structured && typeof structured === "object" && !Array.isArray(structured)) message.result.structuredContent = { ...structured, autoReload: diagnostics() };
240
241
  message.result.content = [...(message.result.content ?? []), { type: "text", text: `automatic reload: ${diagnostics().state}\nsupervisor pid: ${process.pid}\nworker pid: ${worker.process.pid}\nreload count: ${reloads}\nrecovery count: ${recoveries}${reason ? `\nreload detail: ${reason}` : ""}` }];
241
242
  }
242
243
  output({ ...message, id: pending.id });
@@ -43,7 +43,7 @@ import { remoteCodexSocketPath, remoteNativeAdapter, remoteRequestResponse } fro
43
43
 
44
44
  exitForVersionRequest(import.meta.url);
45
45
 
46
- const VERSION = "1.26.2";
46
+ const VERSION = "1.26.3";
47
47
  const log = (msg) => process.stderr.write(`[native-relay] ${msg}\n`);
48
48
 
49
49
  function errorResponse(code, message, sent, details) {