@trishchuk/codex-mcp-tool 1.2.0 → 1.4.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 (54) hide show
  1. package/README.md +84 -170
  2. package/dist/constants.d.ts +12 -0
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +14 -1
  5. package/dist/constants.js.map +1 -1
  6. package/dist/index.js +1 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/tools/ask-codex.tool.d.ts.map +1 -1
  9. package/dist/tools/ask-codex.tool.js +82 -54
  10. package/dist/tools/ask-codex.tool.js.map +1 -1
  11. package/dist/tools/batch-codex.tool.js +1 -1
  12. package/dist/tools/batch-codex.tool.js.map +1 -1
  13. package/dist/tools/health.tool.d.ts +3 -0
  14. package/dist/tools/health.tool.d.ts.map +1 -0
  15. package/dist/tools/health.tool.js +189 -0
  16. package/dist/tools/health.tool.js.map +1 -0
  17. package/dist/tools/index.d.ts.map +1 -1
  18. package/dist/tools/index.js +4 -4
  19. package/dist/tools/index.js.map +1 -1
  20. package/dist/tools/list-sessions.tool.d.ts +3 -0
  21. package/dist/tools/list-sessions.tool.d.ts.map +1 -0
  22. package/dist/tools/list-sessions.tool.js +71 -0
  23. package/dist/tools/list-sessions.tool.js.map +1 -0
  24. package/dist/utils/codexCommandBuilder.d.ts +87 -0
  25. package/dist/utils/codexCommandBuilder.d.ts.map +1 -0
  26. package/dist/utils/codexCommandBuilder.js +285 -0
  27. package/dist/utils/codexCommandBuilder.js.map +1 -0
  28. package/dist/utils/codexExecutor.d.ts +12 -1
  29. package/dist/utils/codexExecutor.d.ts.map +1 -1
  30. package/dist/utils/codexExecutor.js +18 -181
  31. package/dist/utils/codexExecutor.js.map +1 -1
  32. package/dist/utils/commandExecutor.js +3 -3
  33. package/dist/utils/commandExecutor.js.map +1 -1
  34. package/dist/utils/errorTypes.d.ts +74 -0
  35. package/dist/utils/errorTypes.d.ts.map +1 -0
  36. package/dist/utils/errorTypes.js +268 -0
  37. package/dist/utils/errorTypes.js.map +1 -0
  38. package/dist/utils/modelDetection.d.ts +45 -0
  39. package/dist/utils/modelDetection.d.ts.map +1 -0
  40. package/dist/utils/modelDetection.js +148 -0
  41. package/dist/utils/modelDetection.js.map +1 -0
  42. package/dist/utils/sessionStorage.d.ts +79 -0
  43. package/dist/utils/sessionStorage.d.ts.map +1 -0
  44. package/dist/utils/sessionStorage.js +276 -0
  45. package/dist/utils/sessionStorage.js.map +1 -0
  46. package/dist/utils/versionDetection.d.ts +123 -0
  47. package/dist/utils/versionDetection.d.ts.map +1 -0
  48. package/dist/utils/versionDetection.js +188 -0
  49. package/dist/utils/versionDetection.js.map +1 -0
  50. package/dist/utils/workingDirResolver.d.ts +13 -8
  51. package/dist/utils/workingDirResolver.d.ts.map +1 -1
  52. package/dist/utils/workingDirResolver.js +44 -26
  53. package/dist/utils/workingDirResolver.js.map +1 -1
  54. package/package.json +4 -2
package/README.md CHANGED
@@ -6,67 +6,32 @@
6
6
  [![npm version](https://img.shields.io/npm/v/@trishchuk/codex-mcp-tool)](https://www.npmjs.com/package/@trishchuk/codex-mcp-tool)
7
7
  [![npm downloads](https://img.shields.io/npm/dt/@trishchuk/codex-mcp-tool)](https://www.npmjs.com/package/@trishchuk/codex-mcp-tool)
8
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
9
- [![Open Source](https://img.shields.io/badge/Open%20Source-❤️-red.svg)](https://github.com/x51xxx/codex-mcp-tool)
10
9
 
11
10
  </div>
12
11
 
13
- Codex MCP Tool is an open‑source Model Context Protocol (MCP) server that connects your IDE or AI assistant (Claude, Cursor, etc.) to the Codex CLI. It enables non‑interactive automation with `codex exec`, safe sandboxed edits with approvals, and large‑scale code analysis via `@` file references. Built for reliability and speed, it streams progress updates, supports structured change mode (OLD/NEW patch output), and integrates cleanly with standard MCP clients for code review, refactoring, documentation, and CI automation.
12
+ MCP server connecting Claude/Cursor to Codex CLI. Enables code analysis via `@` file references, multi-turn conversations, sandboxed edits, and structured change mode.
14
13
 
15
- - Ask Codex questions from your MCP client, or brainstorm ideas programmatically.
14
+ ## Features
16
15
 
17
- <a href="https://glama.ai/mcp/servers/@trishchuk/codex-mcp-tool">
18
- <img width="380" height="200" src="https://glama.ai/mcp/servers/@trishchuk/codex-mcp-tool/badge" alt="Codex Tool MCP server" />
19
- </a>
16
+ - **File Analysis** — Reference files with `@src/`, `@package.json` syntax
17
+ - **Multi-Turn Sessions** Conversation continuity with workspace isolation
18
+ - **Native Resume** — Uses `codex resume` for context preservation (CLI v0.36.0+)
19
+ - **Web Search** — Research capabilities with `search: true`
20
+ - **Sandbox Mode** — Safe code execution with `--full-auto`
21
+ - **Change Mode** — Structured OLD/NEW patch output for refactoring
22
+ - **Brainstorming** — SCAMPER, design-thinking, lateral thinking frameworks
23
+ - **Health Diagnostics** — CLI version, features, and session monitoring
24
+ - **Cross-Platform** — Windows, macOS, Linux fully supported
20
25
 
21
- ## TLDR: [![Claude](https://img.shields.io/badge/Claude-D97757?logo=claude&logoColor=fff)](#) + Codex CLI
22
-
23
- Goal: Use Codex directly from your MCP-enabled editor to analyze and edit code efficiently.
24
-
25
- ## Prerequisites
26
-
27
- Before using this tool, ensure you have:
28
-
29
- 1. **[Node.js](https://nodejs.org/)** (v18.0.0 or higher)
30
- 2. **[Codex CLI](https://github.com/openai/codex)** installed and authenticated
31
-
32
- ### One-Line Setup
26
+ ## Quick Start
33
27
 
34
28
  ```bash
35
29
  claude mcp add codex-cli -- npx -y @trishchuk/codex-mcp-tool
36
30
  ```
37
31
 
38
- ### Verify Installation
39
-
40
- Type `/mcp` inside Claude Code to verify the Codex MCP is active.
41
-
42
- ---
43
-
44
- ### Alternative: Import from Claude Desktop
32
+ **Prerequisites:** Node.js 18+, [Codex CLI](https://github.com/openai/codex) installed and authenticated.
45
33
 
46
- If you already have it configured in Claude Desktop:
47
-
48
- 1. Add to your Claude Desktop config:
49
-
50
- ```json
51
- "codex-cli": {
52
- "command": "npx",
53
- "args": ["-y", "@trishchuk/codex-mcp-tool"]
54
- }
55
- ```
56
-
57
- 2. Import to Claude Code:
58
-
59
- ```bash
60
- claude mcp add-from-claude-desktop
61
- ```
62
-
63
- ## Configuration
64
-
65
- Register the MCP server with your MCP client:
66
-
67
- ### For NPX Usage (Recommended)
68
-
69
- Add this configuration to your Claude Desktop config file:
34
+ ### Configuration
70
35
 
71
36
  ```json
72
37
  {
@@ -79,158 +44,107 @@ Add this configuration to your Claude Desktop config file:
79
44
  }
80
45
  ```
81
46
 
82
- ### For Global Installation
83
-
84
- If you installed globally, use this configuration instead:
85
-
86
- ```json
87
- {
88
- "mcpServers": {
89
- "codex-cli": {
90
- "command": "codex-mcp"
91
- }
92
- }
93
- }
94
- ```
95
-
96
- **Configuration File Locations:**
97
-
98
- - **Claude Desktop**:
99
- - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
100
- - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
101
- - **Linux**: `~/.config/claude/claude_desktop_config.json`
102
-
103
- After updating the configuration, restart your terminal session.
104
-
105
- ## Example Workflow
106
-
107
- - Natural language: "use codex to explain index.html", "understand this repo with @src", "look for vulnerabilities and suggest fixes"
108
- - Claude Code: Type `/codex-cli` to access the MCP server tools.
47
+ **Config locations:** macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` | Windows: `%APPDATA%\Claude\claude_desktop_config.json`
109
48
 
110
49
  ## Usage Examples
111
50
 
112
- ### Model Selection
113
-
114
51
  ```javascript
115
- // Use the default gpt-5-codex model
116
- 'explain the architecture of @src/';
52
+ // File analysis
53
+ 'explain the architecture of @src/'
54
+ 'analyze @package.json and list dependencies'
117
55
 
118
- // Use gpt-5 for fast general purpose reasoning
119
- 'use codex with model gpt-5 to analyze @config.json';
56
+ // With specific model
57
+ 'use codex with model o3 to analyze @algorithm.py'
120
58
 
121
- // Use o3 for deep reasoning tasks
122
- 'use codex with model o3 to analyze complex algorithm in @algorithm.py';
59
+ // Multi-turn conversations (v1.4.0+)
60
+ 'ask codex sessionId:"my-project" prompt:"explain @src/"'
61
+ 'ask codex sessionId:"my-project" prompt:"now add error handling"'
123
62
 
124
- // Use o4-mini for quick tasks
125
- 'use codex with model o4-mini to add comments to @utils.js';
63
+ // Brainstorming
64
+ 'brainstorm ways to optimize CI/CD using SCAMPER method'
126
65
 
127
- // Use codex-1 for software engineering
128
- 'use codex with model codex-1 to refactor @legacy-code.js';
129
- ```
130
-
131
- ### With File References (using @ syntax)
66
+ // Sandbox mode
67
+ 'use codex sandbox:true to create and run a Python script'
132
68
 
133
- - `ask codex to analyze @src/main.ts and explain what it does`
134
- - `use codex to summarize @. the current directory`
135
- - `analyze @package.json and list dependencies`
69
+ // Web search
70
+ 'ask codex search:true prompt:"latest TypeScript 5.7 features"'
71
+ ```
136
72
 
137
- ### General Questions (without files)
73
+ ## Tools
138
74
 
139
- - `ask codex to explain div centering`
140
- - `ask codex about best practices for React development related to @src/components/Button.tsx`
75
+ | Tool | Description |
76
+ |------|-------------|
77
+ | `ask-codex` | Execute Codex CLI with file analysis, models, sessions |
78
+ | `brainstorm` | Generate ideas with SCAMPER, design-thinking, etc. |
79
+ | `list-sessions` | View/delete/clear conversation sessions |
80
+ | `health` | Diagnose CLI installation, version, features |
81
+ | `ping` / `help` | Test connection, show CLI help |
141
82
 
142
- ### Brainstorming & Ideation
83
+ ## Models
143
84
 
144
- - `brainstorm ways to optimize our CI/CD pipeline using SCAMPER method`
145
- - `use codex to brainstorm 10 innovative features for our app with feasibility analysis`
146
- - `ask codex to generate product ideas for the healthcare domain with design-thinking approach`
85
+ Default: `gpt-5.1-codex-max` with fallback `gpt-5-codex` `gpt-5`
147
86
 
148
- ### Codex Approvals & Sandbox
87
+ | Model | Use Case |
88
+ |-------|----------|
89
+ | `gpt-5.1-codex-max` | Complex multi-file edits (default) |
90
+ | `gpt-5.1-codex-mini` | Cost-efficient quick tasks |
91
+ | `o3` | Deep reasoning |
92
+ | `o4-mini` | Fast & efficient |
93
+ | `codex-1` | Software engineering |
149
94
 
150
- Codex supports approval/sandbox modes. This server uses `codex exec` and can opt into `--full-auto` when `sandbox=true`.
95
+ ## Key Features
151
96
 
152
- - `use codex to create and run a Python script that processes data`
153
- - `ask codex to safely test @script.py and explain what it does`
97
+ ### Session Management (v1.4.0+)
154
98
 
155
- ### Advanced Examples
99
+ Multi-turn conversations with workspace isolation:
156
100
 
157
101
  ```javascript
158
- // Using ask-codex with specific model
159
- 'ask codex using gpt-5 to refactor @utils/database.js for better performance';
160
-
161
- // Brainstorming with constraints
162
- "brainstorm solutions for reducing API latency with constraints: 'must use existing infrastructure, budget under $5k'";
163
-
164
- // Change mode for structured edits
165
- 'use codex in change mode to update all console.log to use winston logger in @src/';
102
+ { "prompt": "analyze code", "sessionId": "my-session" }
103
+ { "prompt": "continue from here", "sessionId": "my-session" }
104
+ { "prompt": "start fresh", "sessionId": "my-session", "resetSession": true }
166
105
  ```
167
106
 
168
- ### Tools (for the AI)
169
-
170
- These tools are designed to be used by the AI assistant.
171
-
172
- #### Core Tools
173
-
174
- - **`ask-codex`**: Sends a prompt to Codex via `codex exec`.
175
- - Supports `@` file references for including file content
176
- - Optional `model` parameter - available models:
177
- - `gpt-5-codex` (default, optimized for coding)
178
- - `gpt-5` (general purpose, fast reasoning)
179
- - `o3` (smartest, deep reasoning)
180
- - `o4-mini` (fast & efficient)
181
- - `codex-1` (o3-based for software engineering)
182
- - `codex-mini-latest` (low-latency code Q&A)
183
- - `gpt-4.1` (also available)
184
- - `sandbox=true` enables `--full-auto` mode
185
- - `changeMode=true` returns structured OLD/NEW edits
186
- - Supports approval policies and sandbox modes
187
-
188
- - **`brainstorm`**: Generate novel ideas with structured methodologies.
189
- - Multiple frameworks: divergent, convergent, SCAMPER, design-thinking, lateral
190
- - Domain-specific context (software, business, creative, research, product, marketing)
191
- - Supports same models as `ask-codex` (default: `gpt-5-codex`)
192
- - Configurable idea count and analysis depth
193
- - Includes feasibility, impact, and innovation scoring
194
- - Example: `brainstorm prompt:"ways to improve code review process" domain:"software" methodology:"scamper"`
195
-
196
- - **`ping`**: A simple test tool that echoes back a message.
197
- - Use to verify MCP connection is working
198
- - Example: `/codex-cli:ping (MCP) "Hello from Codex MCP!"`
107
+ **Environment:**
108
+ - `CODEX_SESSION_TTL_MS` - Session TTL (default: 24h)
109
+ - `CODEX_MAX_SESSIONS` - Max sessions (default: 50)
199
110
 
200
- - **`help`**: Shows the Codex CLI help text and available commands.
111
+ ### Advanced Options
201
112
 
202
- #### Advanced Tools
113
+ | Parameter | Description |
114
+ |-----------|-------------|
115
+ | `model` | Model selection |
116
+ | `sessionId` | Enable conversation continuity |
117
+ | `sandbox` | Enable `--full-auto` mode |
118
+ | `search` | Enable web search |
119
+ | `changeMode` | Structured OLD/NEW edits |
120
+ | `addDirs` | Additional writable directories |
121
+ | `toolOutputTokenLimit` | Cap response verbosity (100-10,000) |
203
122
 
204
- - **`fetch-chunk`**: Retrieves cached chunks from changeMode responses.
205
- - Used for paginating large structured edit responses
206
- - Requires `cacheKey` and `chunkIndex` parameters
123
+ ## CLI Compatibility
207
124
 
208
- - **`timeout-test`**: Test tool for timeout prevention.
209
- - Runs for a specified duration in milliseconds
210
- - Useful for testing long-running operations
125
+ | Version | Features |
126
+ |---------|----------|
127
+ | v0.59.0+ | `--add-dir`, token limits, full GPT-5.1 |
128
+ | v0.52.0+ | Native `--search` flag |
129
+ | v0.36.0+ | Native `codex resume` (sessions) |
211
130
 
212
- ### Slash Commands (for the User)
131
+ ## Troubleshooting
213
132
 
214
- You can use these commands directly in Claude Code's interface (compatibility with other clients has not been tested).
215
-
216
- - **/analyze**: Analyzes files or directories using Codex, or asks general questions.
217
- - **`prompt`** (required): The analysis prompt. Use `@` syntax to include files (e.g., `/analyze prompt:@src/ summarize this directory`) or ask general questions (e.g., `/analyze prompt:Please use a web search to find the latest news stories`).
218
- - **/sandbox**: Safely tests code or scripts with Codex approval modes.
219
- - **`prompt`** (required): Code testing request (e.g., `/sandbox prompt:Create and run a Python script that processes CSV data` or `/sandbox prompt:@script.py Test this script safely`).
220
- - **/help**: Displays the Codex CLI help information.
221
- - **/ping**: Tests the connection to the server.
222
- - **`message`** (optional): A message to echo back.
223
-
224
- ## Acknowledgments
133
+ ```bash
134
+ codex --version # Check CLI version
135
+ codex login # Authenticate
136
+ ```
225
137
 
226
- This project was inspired by the excellent work from [jamubc/gemini-mcp-tool](https://github.com/jamubc/gemini-mcp-tool). Special thanks to [@jamubc](https://github.com/jamubc) for the original MCP server architecture and implementation patterns.
138
+ Use `health` tool for diagnostics: `'use health verbose:true'`
227
139
 
228
- ## Contributing
140
+ ## Migration
229
141
 
230
- Contributions are welcome! Please submit pull requests or report issues through GitHub.
142
+ **v1.3.x v1.4.0:** New `sessionId` parameter, `list-sessions`/`health` tools, structured error handling. No breaking changes.
231
143
 
232
144
  ## License
233
145
 
234
- This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
146
+ MIT License. Not affiliated with OpenAI.
147
+
148
+ ---
235
149
 
236
- **Disclaimer:** This is an unofficial, third-party tool and is not affiliated with, endorsed, or sponsored by OpenAI.
150
+ [Documentation](https://x51xxx.github.io/codex-mcp-tool/) | [Issues](https://github.com/x51xxx/codex-mcp-tool/issues) | Inspired by [jamubc/gemini-mcp-tool](https://github.com/jamubc/gemini-mcp-tool)
@@ -17,6 +17,11 @@ export declare const STATUS_MESSAGES: {
17
17
  readonly PROCESSING_COMPLETE: "✅ Analysis completed successfully";
18
18
  };
19
19
  export declare const MODELS: {
20
+ readonly GPT5_1_CODEX_MAX: "gpt-5.1-codex-max";
21
+ readonly GPT5_1_CODEX_MINI: "gpt-5.1-codex-mini";
22
+ readonly GPT5_1: "gpt-5.1";
23
+ readonly GPT5_1_MINI: "gpt-5.1-mini";
24
+ readonly GPT5_1_NANO: "gpt-5.1-nano";
20
25
  readonly GPT5_CODEX: "gpt-5-codex";
21
26
  readonly GPT5: "gpt-5";
22
27
  readonly O3: "o3";
@@ -80,6 +85,9 @@ export declare const CLI: {
80
85
  readonly OSS: "--oss";
81
86
  readonly ENABLE: "--enable";
82
87
  readonly DISABLE: "--disable";
88
+ readonly SEARCH: "--search";
89
+ readonly ADD_DIR: "--add-dir";
90
+ readonly RESUME: "resume";
83
91
  };
84
92
  readonly DEFAULTS: {
85
93
  readonly MODEL: "default";
@@ -104,6 +112,8 @@ export interface ToolArguments {
104
112
  cd?: string;
105
113
  workingDir?: string;
106
114
  changeMode?: boolean | string;
115
+ sessionId?: string;
116
+ resetSession?: boolean;
107
117
  chunkIndex?: number | string;
108
118
  chunkCacheKey?: string;
109
119
  message?: string;
@@ -118,6 +128,8 @@ export interface ToolArguments {
118
128
  oss?: boolean;
119
129
  enableFeatures?: string[];
120
130
  disableFeatures?: string[];
131
+ addDirs?: string[];
132
+ toolOutputTokenLimit?: number;
121
133
  methodology?: string;
122
134
  domain?: string;
123
135
  constraints?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAGxC,eAAO,MAAM,cAAc;;;;;;;;CASjB,CAAC;AAGX,eAAO,MAAM,eAAe;;;;;;;CAQlB,CAAC;AAGX,eAAO,MAAM,MAAM;;;;;;;;CAQT,CAAC;AAGX,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAGX,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAGX,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;CAuBX,CAAC;AAGX,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCN,CAAC;AAGX,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B,cAAc,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;IACrE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;CACvF"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAGxC,eAAO,MAAM,cAAc;;;;;;;;CASjB,CAAC;AAGX,eAAO,MAAM,eAAe;;;;;;;CAQlB,CAAC;AAGX,eAAO,MAAM,MAAM;;;;;;;;;;;;;CAgBT,CAAC;AAGX,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAGX,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAGX,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;CAuBX,CAAC;AAGX,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CN,CAAC;AAGX,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B,cAAc,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;IACrE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;CACvF"}
package/dist/constants.js CHANGED
@@ -22,8 +22,16 @@ export const STATUS_MESSAGES = {
22
22
  };
23
23
  // Models
24
24
  export const MODELS = {
25
- GPT5_CODEX: 'gpt-5-codex',
25
+ // GPT-5.1 Series (Latest - 2025)
26
+ GPT5_1_CODEX_MAX: 'gpt-5.1-codex-max', // Default (v1.3.0+): Frontier agentic coding with highest reliability
27
+ GPT5_1_CODEX_MINI: 'gpt-5.1-codex-mini', // Cost-efficient compact model
28
+ GPT5_1: 'gpt-5.1', // General purpose GPT-5.1
29
+ GPT5_1_MINI: 'gpt-5.1-mini', // Balanced performance
30
+ GPT5_1_NANO: 'gpt-5.1-nano', // Fastest for simple queries
31
+ // GPT-5 Series (Legacy)
32
+ GPT5_CODEX: 'gpt-5-codex', // Previous default
26
33
  GPT5: 'gpt-5',
34
+ // Other Models
27
35
  O3: 'o3',
28
36
  O4_MINI: 'o4-mini',
29
37
  CODEX_1: 'codex-1',
@@ -96,6 +104,11 @@ export const CLI = {
96
104
  OSS: '--oss',
97
105
  ENABLE: '--enable',
98
106
  DISABLE: '--disable',
107
+ // New flags (v1.3.0+)
108
+ SEARCH: '--search', // Native web search flag (Codex CLI v0.52.0+)
109
+ ADD_DIR: '--add-dir', // Additional writable directories (Codex CLI v0.59.0+)
110
+ // Session/Resume flags (v1.4.0+)
111
+ RESUME: 'resume', // Resume command (replaces 'exec' when resuming)
99
112
  },
100
113
  // Default values
101
114
  DEFAULTS: {
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,12 +7,11 @@ import { PROTOCOL } from './constants.js';
7
7
  import { getToolDefinitions, getPromptDefinitions, executeTool, toolExists, getPromptMessage, } from './tools/index.js';
8
8
  const server = new Server({
9
9
  name: 'codex-cli-mcp',
10
- version: '1.2.0',
10
+ version: '1.4.0',
11
11
  }, {
12
12
  capabilities: {
13
13
  tools: {},
14
14
  prompts: {},
15
- notifications: {},
16
15
  logging: {},
17
16
  },
18
17
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ask-codex.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ask-codex.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAyF5C,eAAO,MAAM,YAAY,EAAE,WAgJ1B,CAAC"}
1
+ {"version":3,"file":"ask-codex.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ask-codex.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAyH5C,eAAO,MAAM,YAAY,EAAE,WAyJ1B,CAAC"}
@@ -3,6 +3,9 @@ import { executeCodex } from '../utils/codexExecutor.js';
3
3
  import { processChangeModeOutput } from '../utils/changeModeRunner.js';
4
4
  import { formatCodexResponseForMCP } from '../utils/outputParser.js';
5
5
  import { MODELS, APPROVAL_POLICIES, ERROR_MESSAGES } from '../constants.js';
6
+ import { createCodexError, formatErrorForUser } from '../utils/errorTypes.js';
7
+ import { getOrCreateSession, saveSession, getCodexConversationId, setCodexConversationId, parseConversationIdFromOutput, deleteSession, } from '../utils/sessionStorage.js';
8
+ import { resolveWorkingDirectory } from '../utils/workingDirResolver.js';
6
9
  const askCodexArgsSchema = z.object({
7
10
  prompt: z
8
11
  .string()
@@ -11,7 +14,7 @@ const askCodexArgsSchema = z.object({
11
14
  model: z
12
15
  .string()
13
16
  .optional()
14
- .describe(`Model: ${Object.values(MODELS).join(', ')}. Default: gpt-5-codex`),
17
+ .describe(`Model: ${Object.values(MODELS).join(', ')}. Default: gpt-5.1-codex-max`),
15
18
  sandbox: z
16
19
  .boolean()
17
20
  .default(false)
@@ -66,7 +69,7 @@ const askCodexArgsSchema = z.object({
66
69
  search: z
67
70
  .boolean()
68
71
  .optional()
69
- .describe('Enable web search by activating web_search_request feature flag. Requires network access - automatically sets sandbox to workspace-write if not specified.'),
72
+ .describe('Enable web search using native --search flag (v0.52.0+). Requires network access - automatically sets sandbox to workspace-write if not specified.'),
70
73
  oss: z
71
74
  .boolean()
72
75
  .optional()
@@ -79,6 +82,26 @@ const askCodexArgsSchema = z.object({
79
82
  .array(z.string())
80
83
  .optional()
81
84
  .describe('Disable feature flags (repeatable). Equivalent to -c features.<name>=false'),
85
+ // New parameters (v1.3.0+)
86
+ addDirs: z
87
+ .array(z.string())
88
+ .optional()
89
+ .describe('Additional writable directories beyond workspace (e.g., ["/tmp", "/var/log"]). Useful for monorepos and multi-directory projects.'),
90
+ toolOutputTokenLimit: z
91
+ .number()
92
+ .min(100)
93
+ .max(10000)
94
+ .optional()
95
+ .describe('Maximum tokens for tool outputs (100-10,000). Controls response verbosity.'),
96
+ // Session management (v1.4.0+)
97
+ sessionId: z
98
+ .string()
99
+ .optional()
100
+ .describe('Session ID for conversation continuity. Enables native Codex resume.'),
101
+ resetSession: z
102
+ .boolean()
103
+ .optional()
104
+ .describe('Clear session context before execution. Starts fresh conversation.'),
82
105
  });
83
106
  export const askCodexTool = {
84
107
  name: 'ask-codex',
@@ -89,7 +112,7 @@ export const askCodexTool = {
89
112
  },
90
113
  category: 'utility',
91
114
  execute: async (args, onProgress) => {
92
- const { prompt, model, sandbox, fullAuto, approvalPolicy, approval, sandboxMode, yolo, cd, workingDir, changeMode, chunkIndex, chunkCacheKey, image, config, profile, timeout, includeThinking, includeMetadata, search, oss, enableFeatures, disableFeatures, } = args;
115
+ const { prompt, model, sandbox, fullAuto, approvalPolicy, approval, sandboxMode, yolo, cd, workingDir, changeMode, chunkIndex, chunkCacheKey, image, config, profile, timeout, includeThinking, includeMetadata, search, oss, enableFeatures, disableFeatures, addDirs, toolOutputTokenLimit, sessionId, resetSession, } = args;
93
116
  if (!prompt?.trim()) {
94
117
  throw new Error(ERROR_MESSAGES.NO_PROMPT_PROVIDED);
95
118
  }
@@ -100,6 +123,33 @@ export const askCodexTool = {
100
123
  prompt: prompt,
101
124
  });
102
125
  }
126
+ // Session management (v1.4.0+)
127
+ let codexConversationId;
128
+ let activeSessionId;
129
+ if (sessionId) {
130
+ // Handle session reset
131
+ if (resetSession) {
132
+ deleteSession(sessionId);
133
+ }
134
+ else {
135
+ // Try to get existing Codex conversation ID for resume
136
+ codexConversationId = getCodexConversationId(sessionId);
137
+ }
138
+ activeSessionId = sessionId;
139
+ }
140
+ // Resolve working directory for session
141
+ const resolvedWorkingDir = resolveWorkingDirectory({
142
+ workingDir: (workingDir || cd),
143
+ prompt: prompt,
144
+ });
145
+ // Get or create session if sessionId provided
146
+ if (activeSessionId && resolvedWorkingDir) {
147
+ const session = getOrCreateSession(resolvedWorkingDir, activeSessionId);
148
+ activeSessionId = session.sessionId;
149
+ if (!codexConversationId) {
150
+ codexConversationId = session.codexConversationId;
151
+ }
152
+ }
103
153
  try {
104
154
  // Use enhanced executeCodex for better feature support
105
155
  const result = await executeCodex(prompt, {
@@ -119,66 +169,44 @@ export const askCodexTool = {
119
169
  oss: oss,
120
170
  enableFeatures: enableFeatures,
121
171
  disableFeatures: disableFeatures,
172
+ addDirs: addDirs,
173
+ toolOutputTokenLimit: toolOutputTokenLimit,
174
+ codexConversationId, // Pass conversation ID for resume
122
175
  }, onProgress);
176
+ // Parse and store conversation ID from response for future resume
177
+ // Conversation ID may be in stdout OR stderr - check both
178
+ if (activeSessionId) {
179
+ const combinedOutput = `${result.output}\n${result.stderr}`;
180
+ const newConversationId = parseConversationIdFromOutput(combinedOutput);
181
+ if (newConversationId) {
182
+ setCodexConversationId(activeSessionId, newConversationId);
183
+ }
184
+ // Update session with latest prompt/response
185
+ saveSession({
186
+ sessionId: activeSessionId,
187
+ lastPrompt: prompt,
188
+ lastResponse: result.output.substring(0, 1000), // Store truncated response
189
+ model: model,
190
+ workingDir: resolvedWorkingDir,
191
+ });
192
+ }
123
193
  if (changeMode) {
124
- return processChangeModeOutput(result, {
194
+ return processChangeModeOutput(result.output, {
125
195
  chunkIndex: args.chunkIndex,
126
196
  prompt: prompt,
127
197
  });
128
198
  }
129
199
  // Format response with enhanced output parsing
130
- return formatCodexResponseForMCP(result, includeThinking, includeMetadata);
200
+ return formatCodexResponseForMCP(result.output, includeThinking, includeMetadata);
131
201
  }
132
202
  catch (error) {
133
- const errorMessage = error instanceof Error ? error.message : String(error);
134
- // Enhanced error handling with helpful context
135
- if (errorMessage.includes('not found') || errorMessage.includes('command not found')) {
136
- return `❌ **Codex CLI Not Found**: ${ERROR_MESSAGES.CODEX_NOT_FOUND}
137
-
138
- **Quick Fix:**
139
- \`\`\`bash
140
- npm install -g @openai/codex
141
- \`\`\`
142
-
143
- **Verification:** Run \`codex --version\` to confirm installation.`;
144
- }
145
- if (errorMessage.includes('authentication') || errorMessage.includes('unauthorized')) {
146
- return `❌ **Authentication Failed**: ${ERROR_MESSAGES.AUTHENTICATION_FAILED}
147
-
148
- **Setup Options:**
149
- 1. **API Key:** \`export OPENAI_API_KEY=your-key\`
150
- 2. **Login:** \`codex login\` (requires ChatGPT subscription)
151
-
152
- **Troubleshooting:** Verify key has Codex access in OpenAI dashboard.`;
153
- }
154
- if (errorMessage.includes('quota') || errorMessage.includes('rate limit')) {
155
- return `❌ **Usage Limit Reached**: ${ERROR_MESSAGES.QUOTA_EXCEEDED}
156
-
157
- **Solutions:**
158
- 1. Wait and retry - rate limits reset periodically
159
- 2. Check quota in OpenAI dashboard`;
160
- }
161
- if (errorMessage.includes('timeout')) {
162
- return `❌ **Request Timeout**: Operation took longer than expected
163
-
164
- **Solutions:**
165
- 1. Increase timeout: Add \`timeout: 300000\` (5 minutes)
166
- 2. Simplify request: Break complex queries into smaller parts`;
167
- }
168
- if (errorMessage.includes('sandbox') || errorMessage.includes('permission')) {
169
- return `❌ **Permission Error**: ${ERROR_MESSAGES.SANDBOX_VIOLATION}
170
-
171
- **Solutions:**
172
- 1. Relax sandbox: Use \`sandboxMode: "workspace-write"\`
173
- 2. Adjust approval: Try \`approval: "on-request"\``;
174
- }
175
- // Generic error with context
176
- return `❌ **Codex Execution Error**: ${errorMessage}
177
-
178
- **Debug Steps:**
179
- 1. Verify Codex CLI: \`codex --version\`
180
- 2. Check authentication: \`codex login\`
181
- 3. Try simpler query first`;
203
+ // Use structured error handling
204
+ const codexError = createCodexError(error instanceof Error ? error : String(error), {
205
+ sessionId: activeSessionId,
206
+ model: model,
207
+ workingDir: resolvedWorkingDir,
208
+ });
209
+ return `❌ ${formatErrorForUser(codexError)}`;
182
210
  }
183
211
  },
184
212
  };