Repository navigation
Support Codex MCP forms and native input requests - #1371
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9ae985151a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const req = createRequire(path.join(__dirname, "../memory-server/package.json")); | ||
| const { AjvJsonSchemaValidator } = req("@modelcontextprotocol/sdk/validation/ajv"); | ||
| return new AjvJsonSchemaValidator().getValidator(schema); |
There was a problem hiding this comment.
Make the validator available in the documented dev install
In a fresh source checkout following the README's development setup (npm install at the root plus the separate core install), memory-server/node_modules does not exist because the root project is not a workspace and does not install that package's dependencies. This dynamic require therefore throws for every MCP form and native requestUserInput; handleCodexServerRequest catches it and rejects the request as an unsupported schema, so the newly added input UI does not work under the documented npm run dev workflow. Add the SDK to the root runtime dependencies, otherwise decouple validation from the optional nested install, or update the required setup so the dependency is reliably present.
Useful? React with 👍 / 👎.
Codex previously rejected MCP forms, URL elicitation and native
requestUserInputrequests as unsupported. These now display an input card on the existing permission queue and return the protocol's typed response only after the user submits it.The host validates flat MCP schemas and submitted values using the bundled MCP SDK/Ajv. Invalid values remain editable. Native answers use question IDs, secret inputs are masked, and submitted values are omitted from Solenta's permission transcript events. Decline, cancellation, Stop and remote
serverRequest/resolvedclear or answer requests without inventing input; stale replies are rejected.Development setup now explicitly installs the existing
memory-serverdependencies, which supply MCP tooling and input validation. Packaging and CI already install them.Validation: all six hosted test/smoke jobs pass on macOS, Ubuntu and Windows at
311e86a2593455e1d6ac26ac4abbaaf7c2bcc75c(run). Locally, 4,048 backend tests and 2,636 renderer tests passed; typecheck, preload synchronization check and production build passed. Process-level fixtures exercise both input formats through the runner and JSON-RPC transport.Real Codex CLI 0.144.1 with
gpt-5.6-solcompleted both protocol probes through the production parser, validator and JSON-RPC response code: a local MCP fixture received a typed enum/integer/boolean form response (includingfalse), and a nativerequest_user_inputquestion received its selected answer. Both emittedserverRequest/resolvedand the model continued. The native probe enabledfeatures.default_mode_request_user_inputonly for that process; no user configuration changed. These were synthetic protocol probes, not an end-to-end renderer test. Visual screenshot verification remains incomplete: the Browser pane was closed, and native Computer Use rejected input immediately after a state refresh.Partial delivery of #1190. Nested/custom form schemas, file-change cards and sandbox permission overlays remain unsupported and fail closed. No new dependency or permission-policy change.