From d3359ebef010e030a4dd1d1d32cb8a7a11aa707c Mon Sep 17 00:00:00 2001 From: GamerDubz Date: Mon, 12 Oct 2026 05:50:28 +0200 Subject: [PATCH] fix(plugin): give the Codex plugin server REA's 30-second startup timeout The Codex manifest left startup_timeout_sec at the client default, unlike the registration rea setup writes, so a cold npx start could be cut off before tools appeared. Carry the owned timeout in the Codex server entry and assert it against MCP_STARTUP_POLICY. Co-Authored-By: Claude Opus 5.5 --- .codex-plugin/plugin.json | 3 ++- tests/conformance/releaseConfiguration.test.ts | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 976a93750..9a8da7339 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -19,7 +19,8 @@ "mcpServers": { "rea": { "command": "npx", - "args": ["-y", "rea-agents@latest", "mcp"] + "args": ["-y", "rea-agents@latest", "mcp"], + "startup_timeout_sec": 30 } }, "interface": { diff --git a/tests/conformance/releaseConfiguration.test.ts b/tests/conformance/releaseConfiguration.test.ts index 621c4e4a2..2b7a1ee80 100644 --- a/tests/conformance/releaseConfiguration.test.ts +++ b/tests/conformance/releaseConfiguration.test.ts @@ -3,6 +3,7 @@ import { readFile } from "node:fs/promises"; import { describe, expect, it } from "vitest"; import { SUPPORTED_NODE_VERSION_RANGE } from "../../src/domain/runtimeVersion.js"; +import { MCP_STARTUP_POLICY } from "../../src/mcpStartupPolicy.js"; const readJson = async (path: string): Promise => JSON.parse(await readFile(path, "utf8")) as unknown; @@ -122,6 +123,16 @@ describe("release configuration", () => { ); }); + it("carries the owned Codex startup timeout in the Codex plugin server entry", async () => { + expect(await readJson(".codex-plugin/plugin.json")).toMatchObject({ + mcpServers: { + rea: { + startup_timeout_sec: MCP_STARTUP_POLICY.codexStartupTimeoutSeconds, + }, + }, + }); + }); + it("keeps the npm package and MCP Registry metadata aligned", async () => { const packageJson = (await readJson("package.json")) as { name: string;