@trishchuk/codex-mcp-tool 1.0.5 → 1.2.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 (94) hide show
  1. package/README.md +10 -11
  2. package/dist/constants.d.ts +55 -2
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +74 -31
  5. package/dist/constants.js.map +1 -1
  6. package/dist/index.js +28 -26
  7. package/dist/index.js.map +1 -1
  8. package/dist/tools/apply-diff.tool.d.ts +3 -0
  9. package/dist/tools/apply-diff.tool.d.ts.map +1 -0
  10. package/dist/tools/apply-diff.tool.js +52 -0
  11. package/dist/tools/apply-diff.tool.js.map +1 -0
  12. package/dist/tools/ask-codex.tool.d.ts.map +1 -1
  13. package/dist/tools/ask-codex.tool.js +158 -33
  14. package/dist/tools/ask-codex.tool.js.map +1 -1
  15. package/dist/tools/batch-codex.tool.d.ts +3 -0
  16. package/dist/tools/batch-codex.tool.d.ts.map +1 -0
  17. package/dist/tools/batch-codex.tool.js +134 -0
  18. package/dist/tools/batch-codex.tool.js.map +1 -0
  19. package/dist/tools/brainstorm.tool.d.ts.map +1 -1
  20. package/dist/tools/brainstorm.tool.js +62 -29
  21. package/dist/tools/brainstorm.tool.js.map +1 -1
  22. package/dist/tools/exec-codex.tool.d.ts +3 -0
  23. package/dist/tools/exec-codex.tool.d.ts.map +1 -0
  24. package/dist/tools/exec-codex.tool.js +46 -0
  25. package/dist/tools/exec-codex.tool.js.map +1 -0
  26. package/dist/tools/fetch-chunk.tool.d.ts.map +1 -1
  27. package/dist/tools/fetch-chunk.tool.js +12 -8
  28. package/dist/tools/fetch-chunk.tool.js.map +1 -1
  29. package/dist/tools/index.d.ts.map +1 -1
  30. package/dist/tools/index.js +6 -2
  31. package/dist/tools/index.js.map +1 -1
  32. package/dist/tools/registry.d.ts +3 -3
  33. package/dist/tools/registry.d.ts.map +1 -1
  34. package/dist/tools/registry.js +9 -5
  35. package/dist/tools/registry.js.map +1 -1
  36. package/dist/tools/review-codex.tool.d.ts +3 -0
  37. package/dist/tools/review-codex.tool.d.ts.map +1 -0
  38. package/dist/tools/review-codex.tool.js +91 -0
  39. package/dist/tools/review-codex.tool.js.map +1 -0
  40. package/dist/tools/simple-tools.d.ts +1 -0
  41. package/dist/tools/simple-tools.d.ts.map +1 -1
  42. package/dist/tools/simple-tools.js +42 -11
  43. package/dist/tools/simple-tools.js.map +1 -1
  44. package/dist/tools/test-tool.example.d.ts.map +1 -1
  45. package/dist/tools/test-tool.example.js +12 -10
  46. package/dist/tools/test-tool.example.js.map +1 -1
  47. package/dist/tools/timeout-test.tool.js +5 -5
  48. package/dist/tools/timeout-test.tool.js.map +1 -1
  49. package/dist/utils/changeModeChunker.d.ts.map +1 -1
  50. package/dist/utils/changeModeChunker.js +10 -6
  51. package/dist/utils/changeModeChunker.js.map +1 -1
  52. package/dist/utils/changeModeParser.d.ts.map +1 -1
  53. package/dist/utils/changeModeParser.js.map +1 -1
  54. package/dist/utils/changeModeRunner.d.ts.map +1 -1
  55. package/dist/utils/changeModeRunner.js +17 -11
  56. package/dist/utils/changeModeRunner.js.map +1 -1
  57. package/dist/utils/changeModeTranslator.d.ts.map +1 -1
  58. package/dist/utils/changeModeTranslator.js +5 -2
  59. package/dist/utils/changeModeTranslator.js.map +1 -1
  60. package/dist/utils/chunkCache.d.ts.map +1 -1
  61. package/dist/utils/chunkCache.js +6 -4
  62. package/dist/utils/chunkCache.js.map +1 -1
  63. package/dist/utils/codexExecutor.d.ts +17 -0
  64. package/dist/utils/codexExecutor.d.ts.map +1 -1
  65. package/dist/utils/codexExecutor.js +163 -4
  66. package/dist/utils/codexExecutor.js.map +1 -1
  67. package/dist/utils/commandExecutor.d.ts.map +1 -1
  68. package/dist/utils/commandExecutor.js +25 -17
  69. package/dist/utils/commandExecutor.js.map +1 -1
  70. package/dist/utils/fibonacci.d.ts +2 -0
  71. package/dist/utils/fibonacci.d.ts.map +1 -0
  72. package/dist/utils/fibonacci.js +17 -0
  73. package/dist/utils/fibonacci.js.map +1 -0
  74. package/dist/utils/gitHelper.d.ts +20 -0
  75. package/dist/utils/gitHelper.d.ts.map +1 -0
  76. package/dist/utils/gitHelper.js +66 -0
  77. package/dist/utils/gitHelper.js.map +1 -0
  78. package/dist/utils/logger.d.ts +2 -1
  79. package/dist/utils/logger.d.ts.map +1 -1
  80. package/dist/utils/logger.js +21 -15
  81. package/dist/utils/logger.js.map +1 -1
  82. package/dist/utils/outputParser.d.ts +26 -0
  83. package/dist/utils/outputParser.d.ts.map +1 -0
  84. package/dist/utils/outputParser.js +174 -0
  85. package/dist/utils/outputParser.js.map +1 -0
  86. package/dist/utils/reviewParser.d.ts +28 -0
  87. package/dist/utils/reviewParser.d.ts.map +1 -0
  88. package/dist/utils/reviewParser.js +87 -0
  89. package/dist/utils/reviewParser.js.map +1 -0
  90. package/dist/utils/workingDirResolver.d.ts +47 -0
  91. package/dist/utils/workingDirResolver.d.ts.map +1 -0
  92. package/dist/utils/workingDirResolver.js +199 -0
  93. package/dist/utils/workingDirResolver.js.map +1 -0
  94. package/package.json +6 -3
@@ -1,18 +1,43 @@
1
1
  import { z } from 'zod';
2
- import { executeCodexCLI } from '../utils/codexExecutor.js';
2
+ import { executeCodex } from '../utils/codexExecutor.js';
3
3
  import { processChangeModeOutput } from '../utils/changeModeRunner.js';
4
- import { STATUS_MESSAGES } from '../constants.js';
4
+ import { formatCodexResponseForMCP } from '../utils/outputParser.js';
5
+ import { MODELS, APPROVAL_POLICIES, ERROR_MESSAGES } from '../constants.js';
5
6
  const askCodexArgsSchema = z.object({
6
- prompt: z.string().min(1).describe("Task/question. Use @ for files (e.g., '@file.ts explain')"),
7
- model: z.string().optional().describe("Model: gpt-5-codex (default), gpt-5, o3, o4-mini, codex-1, codex-mini-latest, gpt-4.1"),
8
- sandbox: z.boolean().default(false).describe("Quick automation (alias for fullAuto)"),
9
- fullAuto: z.boolean().optional().describe("Full automation mode"),
10
- approvalPolicy: z.enum(['never', 'on-request', 'on-failure', 'untrusted']).optional().describe("Approval: never, on-request, on-failure, untrusted"),
11
- sandboxMode: z.enum(['read-only', 'workspace-write', 'danger-full-access']).optional().describe("Access: read-only, workspace-write, danger-full-access"),
12
- yolo: z.boolean().optional().describe("⚠️ Bypass all safety (dangerous)"),
13
- cd: z.string().optional().describe("Working directory"),
14
- changeMode: z.boolean().default(false).describe("Return structured OLD/NEW edits for refactoring"),
15
- chunkIndex: z.preprocess((val) => {
7
+ prompt: z
8
+ .string()
9
+ .min(1)
10
+ .describe("Task or question. Use @ to include files (e.g., '@largefile.ts explain')."),
11
+ model: z
12
+ .string()
13
+ .optional()
14
+ .describe(`Model: ${Object.values(MODELS).join(', ')}. Default: gpt-5-codex`),
15
+ sandbox: z
16
+ .boolean()
17
+ .default(false)
18
+ .describe('Quick automation mode: enables workspace-write + on-failure approval. Alias for fullAuto.'),
19
+ fullAuto: z.boolean().optional().describe('Full automation mode'),
20
+ approvalPolicy: z
21
+ .enum(['never', 'on-request', 'on-failure', 'untrusted'])
22
+ .optional()
23
+ .describe('Approval: never, on-request, on-failure, untrusted'),
24
+ approval: z
25
+ .string()
26
+ .optional()
27
+ .describe(`Approval policy: ${Object.values(APPROVAL_POLICIES).join(', ')}`),
28
+ sandboxMode: z
29
+ .enum(['read-only', 'workspace-write', 'danger-full-access'])
30
+ .optional()
31
+ .describe('Access: read-only, workspace-write, danger-full-access'),
32
+ yolo: z.boolean().optional().describe('⚠️ Bypass all safety (dangerous)'),
33
+ cd: z.string().optional().describe('Working directory'),
34
+ workingDir: z.string().optional().describe('Working directory for execution'),
35
+ changeMode: z
36
+ .boolean()
37
+ .default(false)
38
+ .describe('Return structured OLD/NEW edits for refactoring'),
39
+ chunkIndex: z
40
+ .preprocess(val => {
16
41
  if (typeof val === 'number')
17
42
  return val;
18
43
  if (typeof val === 'string') {
@@ -20,41 +45,141 @@ const askCodexArgsSchema = z.object({
20
45
  return isNaN(parsed) ? undefined : parsed;
21
46
  }
22
47
  return undefined;
23
- }, z.number().min(1).optional()).describe("Chunk index (1-based)"),
24
- chunkCacheKey: z.string().optional().describe("Cache key for continuation"),
48
+ }, z.number().min(1).optional())
49
+ .describe('Chunk index (1-based)'),
50
+ chunkCacheKey: z.string().optional().describe('Cache key for continuation'),
51
+ image: z
52
+ .union([z.string(), z.array(z.string())])
53
+ .optional()
54
+ .describe('Optional image file path(s) to include with the prompt'),
55
+ config: z
56
+ .union([z.string(), z.record(z.any())])
57
+ .optional()
58
+ .describe("Configuration overrides as 'key=value' string or object"),
59
+ profile: z.string().optional().describe('Configuration profile to use from ~/.codex/config.toml'),
60
+ timeout: z.number().optional().describe('Maximum execution time in milliseconds (optional)'),
61
+ includeThinking: z
62
+ .boolean()
63
+ .default(true)
64
+ .describe('Include reasoning/thinking section in response'),
65
+ includeMetadata: z.boolean().default(true).describe('Include configuration metadata in response'),
66
+ search: z
67
+ .boolean()
68
+ .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.'),
70
+ oss: z
71
+ .boolean()
72
+ .optional()
73
+ .describe('Use local Ollama server (convenience for -c model_provider=oss). Requires Ollama running locally. Automatically sets sandbox to workspace-write if not specified.'),
74
+ enableFeatures: z
75
+ .array(z.string())
76
+ .optional()
77
+ .describe('Enable feature flags (repeatable). Equivalent to -c features.<name>=true'),
78
+ disableFeatures: z
79
+ .array(z.string())
80
+ .optional()
81
+ .describe('Disable feature flags (repeatable). Equivalent to -c features.<name>=false'),
25
82
  });
26
83
  export const askCodexTool = {
27
84
  name: 'ask-codex',
28
- description: "Execute Codex CLI with file analysis (@syntax), model selection, and safety controls. Supports changeMode.",
85
+ description: 'Execute Codex CLI with file analysis (@syntax), model selection, and safety controls. Supports changeMode.',
29
86
  zodSchema: askCodexArgsSchema,
30
87
  prompt: {
31
- description: "Execute Codex CLI with optional changeMode",
88
+ description: 'Execute Codex CLI with optional changeMode',
32
89
  },
33
90
  category: 'utility',
34
91
  execute: async (args, onProgress) => {
35
- const { prompt, model, sandbox, fullAuto, approvalPolicy, sandboxMode, yolo, cd, changeMode, chunkIndex, chunkCacheKey } = args;
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;
93
+ if (!prompt?.trim()) {
94
+ throw new Error(ERROR_MESSAGES.NO_PROMPT_PROVIDED);
95
+ }
36
96
  if (changeMode && chunkIndex && chunkCacheKey) {
37
97
  return processChangeModeOutput('', {
38
98
  chunkIndex: chunkIndex,
39
99
  cacheKey: chunkCacheKey,
40
- prompt: prompt
100
+ prompt: prompt,
41
101
  });
42
102
  }
43
- const result = await executeCodexCLI(prompt, {
44
- model: model,
45
- fullAuto: Boolean(fullAuto ?? sandbox),
46
- approvalPolicy: approvalPolicy,
47
- sandboxMode: sandboxMode,
48
- yolo: Boolean(yolo),
49
- cd: cd,
50
- }, onProgress);
51
- if (changeMode) {
52
- return processChangeModeOutput(result, {
53
- chunkIndex: args.chunkIndex,
54
- prompt: prompt
55
- });
103
+ try {
104
+ // Use enhanced executeCodex for better feature support
105
+ const result = await executeCodex(prompt, {
106
+ model: model,
107
+ fullAuto: Boolean(fullAuto ?? sandbox),
108
+ approvalPolicy: approvalPolicy,
109
+ approval: approval,
110
+ sandboxMode: sandboxMode,
111
+ yolo: Boolean(yolo),
112
+ cd: cd,
113
+ workingDir: workingDir,
114
+ image,
115
+ config,
116
+ profile: profile,
117
+ timeout: timeout,
118
+ search: search,
119
+ oss: oss,
120
+ enableFeatures: enableFeatures,
121
+ disableFeatures: disableFeatures,
122
+ }, onProgress);
123
+ if (changeMode) {
124
+ return processChangeModeOutput(result, {
125
+ chunkIndex: args.chunkIndex,
126
+ prompt: prompt,
127
+ });
128
+ }
129
+ // Format response with enhanced output parsing
130
+ return formatCodexResponseForMCP(result, includeThinking, includeMetadata);
56
131
  }
57
- return `${STATUS_MESSAGES.CODEX_RESPONSE}\n${result}`;
58
- }
132
+ 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`;
182
+ }
183
+ },
59
184
  };
60
185
  //# sourceMappingURL=ask-codex.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-codex.tool.js","sourceRoot":"","sources":["../../src/tools/ask-codex.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask-codex.tool.js","sourceRoot":"","sources":["../../src/tools/ask-codex.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { UnifiedTool } from './registry.js';
2
+ export declare const batchCodexTool: UnifiedTool;
3
+ //# sourceMappingURL=batch-codex.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-codex.tool.d.ts","sourceRoot":"","sources":["../../src/tools/batch-codex.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAkC5C,eAAO,MAAM,cAAc,EAAE,WA6I5B,CAAC"}
@@ -0,0 +1,134 @@
1
+ import { z } from 'zod';
2
+ import { executeCodex } from '../utils/codexExecutor.js';
3
+ import { MODELS, SANDBOX_MODES } from '../constants.js';
4
+ // Define task type for batch operations
5
+ const batchTaskSchema = z.object({
6
+ task: z.string().describe('Atomic task description'),
7
+ target: z.string().optional().describe('Target files/directories (use @ syntax)'),
8
+ priority: z.enum(['high', 'normal', 'low']).default('normal').describe('Task priority'),
9
+ });
10
+ const batchCodexArgsSchema = z.object({
11
+ tasks: z.array(batchTaskSchema).min(1).describe('Array of atomic tasks to delegate to Codex'),
12
+ model: z
13
+ .string()
14
+ .optional()
15
+ .describe(`Model to use: ${Object.values(MODELS).join(', ')}`),
16
+ sandbox: z
17
+ .string()
18
+ .default(SANDBOX_MODES.WORKSPACE_WRITE)
19
+ .describe(`Sandbox mode: ${Object.values(SANDBOX_MODES).join(', ')}`),
20
+ parallel: z.boolean().default(false).describe('Execute tasks in parallel (experimental)'),
21
+ stopOnError: z.boolean().default(true).describe('Stop execution if any task fails'),
22
+ timeout: z.number().optional().describe('Maximum execution time per task in milliseconds'),
23
+ workingDir: z.string().optional().describe('Working directory for execution'),
24
+ search: z
25
+ .boolean()
26
+ .optional()
27
+ .describe('Enable web search for all tasks (activates web_search_request feature)'),
28
+ oss: z.boolean().optional().describe('Use local Ollama server'),
29
+ enableFeatures: z.array(z.string()).optional().describe('Enable feature flags'),
30
+ disableFeatures: z.array(z.string()).optional().describe('Disable feature flags'),
31
+ });
32
+ export const batchCodexTool = {
33
+ name: 'batch-codex',
34
+ description: 'Delegate multiple atomic tasks to Codex for batch processing. Ideal for repetitive operations, mass refactoring, and automated code transformations',
35
+ zodSchema: batchCodexArgsSchema,
36
+ prompt: {
37
+ description: 'Execute multiple atomic Codex tasks in batch mode for efficient automation',
38
+ },
39
+ category: 'codex',
40
+ execute: async (args, onProgress) => {
41
+ const { tasks, model, sandbox, parallel, stopOnError, timeout, workingDir, search, oss, enableFeatures, disableFeatures, } = args;
42
+ const taskList = tasks;
43
+ if (!taskList || taskList.length === 0) {
44
+ throw new Error('No tasks provided for batch execution');
45
+ }
46
+ const results = [];
47
+ let failedCount = 0;
48
+ let successCount = 0;
49
+ // Sort tasks by priority
50
+ const sortedTasks = [...taskList].sort((a, b) => {
51
+ const priorityOrder = { high: 0, normal: 1, low: 2 };
52
+ return (priorityOrder[a.priority] -
53
+ priorityOrder[b.priority]);
54
+ });
55
+ if (onProgress) {
56
+ onProgress(`🚀 Starting batch execution of ${sortedTasks.length} tasks...`);
57
+ }
58
+ // Execute tasks sequentially
59
+ // TODO: Implement parallel execution when parallel flag is true
60
+ for (let i = 0; i < sortedTasks.length; i++) {
61
+ const task = sortedTasks[i];
62
+ const taskPrompt = task.target ? `${task.task} in ${task.target}` : task.task;
63
+ if (onProgress) {
64
+ onProgress(`\n[${i + 1}/${sortedTasks.length}] Executing: ${taskPrompt}`);
65
+ }
66
+ // Skip remaining tasks if stopOnError is true and we have failures
67
+ if (stopOnError && failedCount > 0) {
68
+ results.push({
69
+ task: taskPrompt,
70
+ status: 'skipped',
71
+ error: 'Skipped due to previous failure',
72
+ });
73
+ continue;
74
+ }
75
+ try {
76
+ const result = await executeCodex(taskPrompt, {
77
+ model: model,
78
+ sandboxMode: sandbox,
79
+ timeout: timeout,
80
+ workingDir: workingDir,
81
+ search: search,
82
+ oss: oss,
83
+ enableFeatures: enableFeatures,
84
+ disableFeatures: disableFeatures,
85
+ }, undefined // No progress for individual tasks to keep output clean
86
+ );
87
+ results.push({
88
+ task: taskPrompt,
89
+ status: 'success',
90
+ output: result.substring(0, 500), // Truncate for summary
91
+ });
92
+ successCount++;
93
+ if (onProgress) {
94
+ onProgress(`✅ Completed: ${task.task}`);
95
+ }
96
+ }
97
+ catch (error) {
98
+ const errorMessage = error instanceof Error ? error.message : String(error);
99
+ results.push({
100
+ task: taskPrompt,
101
+ status: 'failed',
102
+ error: errorMessage,
103
+ });
104
+ failedCount++;
105
+ if (onProgress) {
106
+ onProgress(`❌ Failed: ${task.task} - ${errorMessage}`);
107
+ }
108
+ }
109
+ }
110
+ // Generate summary report
111
+ let report = `\n📊 **Batch Execution Summary**\n`;
112
+ report += `\n- Total tasks: ${sortedTasks.length}`;
113
+ report += `\n- Successful: ${successCount} ✅`;
114
+ report += `\n- Failed: ${failedCount} ❌`;
115
+ report += `\n- Skipped: ${sortedTasks.length - successCount - failedCount} ⏭️`;
116
+ report += `\n\n**Task Results:**\n`;
117
+ for (const result of results) {
118
+ const icon = result.status === 'success' ? '✅' : result.status === 'failed' ? '❌' : '⏭️';
119
+ report += `\n${icon} **${result.task}**`;
120
+ if (result.status === 'success' && result.output) {
121
+ report += `\n Output: ${result.output.substring(0, 100)}...`;
122
+ }
123
+ else if (result.error) {
124
+ report += `\n Error: ${result.error}`;
125
+ }
126
+ }
127
+ // If all tasks failed, throw an error
128
+ if (failedCount === sortedTasks.length) {
129
+ throw new Error(`All ${failedCount} tasks failed. See report above for details.`);
130
+ }
131
+ return report;
132
+ },
133
+ };
134
+ //# sourceMappingURL=batch-codex.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-codex.tool.js","sourceRoot":"","sources":["../../src/tools/batch-codex.tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"brainstorm.tool.d.ts","sourceRoot":"","sources":["../../src/tools/brainstorm.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAkH5C,eAAO,MAAM,cAAc,EAAE,WA0D5B,CAAC"}
1
+ {"version":3,"file":"brainstorm.tool.d.ts","sourceRoot":"","sources":["../../src/tools/brainstorm.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAsJ5C,eAAO,MAAM,cAAc,EAAE,WAqE5B,CAAC"}
@@ -20,8 +20,10 @@ ${existingContext ? `Background: ${existingContext}` : ''}
20
20
  ## Requirements
21
21
  Generate ${ideaCount} actionable ideas. Keep descriptions concise (2-3 sentences max).
22
22
 
23
- ${includeAnalysis ? `## Analysis
24
- Rate each: Feasibility (1-5), Impact (1-5), Innovation (1-5)` : ''}
23
+ ${includeAnalysis
24
+ ? `## Analysis
25
+ Rate each: Feasibility (1-5), Impact (1-5), Innovation (1-5)`
26
+ : ''}
25
27
 
26
28
  ## Format
27
29
  ### Idea [N]: [Name]
@@ -36,19 +38,19 @@ Begin:`;
36
38
  */
37
39
  function getMethodologyInstructions(methodology, domain) {
38
40
  const methodologies = {
39
- 'divergent': `**Divergent Thinking Approach:**
41
+ divergent: `**Divergent Thinking Approach:**
40
42
  - Generate maximum quantity of ideas without self-censoring
41
43
  - Build on wild or seemingly impractical ideas
42
44
  - Combine unrelated concepts for unexpected solutions
43
45
  - Use "Yes, and..." thinking to expand each concept
44
46
  - Postpone evaluation until all ideas are generated`,
45
- 'convergent': `**Convergent Thinking Approach:**
47
+ convergent: `**Convergent Thinking Approach:**
46
48
  - Focus on refining and improving existing concepts
47
49
  - Synthesize related ideas into stronger solutions
48
50
  - Apply critical evaluation criteria
49
51
  - Prioritize based on feasibility and impact
50
52
  - Develop implementation pathways for top ideas`,
51
- 'scamper': `**SCAMPER Creative Triggers:**
53
+ scamper: `**SCAMPER Creative Triggers:**
52
54
  - **Substitute:** What can be substituted or replaced?
53
55
  - **Combine:** What can be combined or merged?
54
56
  - **Adapt:** What can be adapted from other domains?
@@ -62,47 +64,74 @@ function getMethodologyInstructions(methodology, domain) {
62
64
  - **Ideate:** Generate user-focused solutions
63
65
  - **Consider Journey:** Think through complete user experience
64
66
  - **Prototype Mindset:** Focus on testable, iterative concepts`,
65
- 'lateral': `**Lateral Thinking Approach:**
67
+ lateral: `**Lateral Thinking Approach:**
66
68
  - Make unexpected connections between unrelated fields
67
69
  - Challenge fundamental assumptions
68
70
  - Use random word association to trigger new directions
69
71
  - Apply metaphors and analogies from other domains
70
72
  - Reverse conventional thinking patterns`,
71
- 'auto': `**AI-Optimized Approach:**
72
- ${domain ? `Given the ${domain} domain, I'll apply the most effective combination of:` : 'I\'ll intelligently combine multiple methodologies:'}
73
+ auto: `**AI-Optimized Approach:**
74
+ ${domain ? `Given the ${domain} domain, I'll apply the most effective combination of:` : "I'll intelligently combine multiple methodologies:"}
73
75
  - Divergent exploration with domain-specific knowledge
74
76
  - SCAMPER triggers and lateral thinking
75
- - Human-centered perspective for practical value`
77
+ - Human-centered perspective for practical value`,
76
78
  };
77
79
  return methodologies[methodology] || methodologies['auto'];
78
80
  }
79
81
  const brainstormArgsSchema = z.object({
80
- prompt: z.string().min(1).describe("Brainstorming challenge or question"),
81
- model: z.string().optional().describe("Model: gpt-5-codex (default), gpt-5, o3, o4-mini, codex-1, codex-mini-latest, gpt-4.1"),
82
- approvalPolicy: z.enum(['never', 'on-request', 'on-failure', 'untrusted']).optional().describe("Approval: never, on-request, on-failure, untrusted"),
83
- sandboxMode: z.enum(['read-only', 'workspace-write', 'danger-full-access']).optional().describe("Access: read-only, workspace-write, danger-full-access"),
84
- fullAuto: z.boolean().optional().describe("Full automation mode"),
85
- yolo: z.boolean().optional().describe("⚠️ Bypass all safety (dangerous)"),
86
- cd: z.string().optional().describe("Working directory"),
87
- methodology: z.enum(['divergent', 'convergent', 'scamper', 'design-thinking', 'lateral', 'auto']).default('auto').describe("Framework: divergent, convergent, scamper, design-thinking, lateral, auto (default)"),
88
- domain: z.string().optional().describe("Domain: software, business, creative, research, product, marketing, etc."),
89
- constraints: z.string().optional().describe("Limitations: budget, time, technical, legal, etc."),
90
- existingContext: z.string().optional().describe("Background info or previous attempts"),
91
- ideaCount: z.number().int().positive().default(12).describe("Number of ideas (default: 12, range: 5-30)"),
92
- includeAnalysis: z.boolean().default(true).describe("Include feasibility/impact analysis"),
82
+ prompt: z.string().min(1).describe('Brainstorming challenge or question'),
83
+ model: z
84
+ .string()
85
+ .optional()
86
+ .describe('Model: gpt-5-codex (default), gpt-5, o3, o4-mini, codex-1, codex-mini-latest, gpt-4.1'),
87
+ approvalPolicy: z
88
+ .enum(['never', 'on-request', 'on-failure', 'untrusted'])
89
+ .optional()
90
+ .describe('Approval: never, on-request, on-failure, untrusted'),
91
+ sandboxMode: z
92
+ .enum(['read-only', 'workspace-write', 'danger-full-access'])
93
+ .optional()
94
+ .describe('Access: read-only, workspace-write, danger-full-access'),
95
+ fullAuto: z.boolean().optional().describe('Full automation mode'),
96
+ yolo: z.boolean().optional().describe('⚠️ Bypass all safety (dangerous)'),
97
+ cd: z.string().optional().describe('Working directory'),
98
+ methodology: z
99
+ .enum(['divergent', 'convergent', 'scamper', 'design-thinking', 'lateral', 'auto'])
100
+ .default('auto')
101
+ .describe('Framework: divergent, convergent, scamper, design-thinking, lateral, auto (default)'),
102
+ domain: z
103
+ .string()
104
+ .optional()
105
+ .describe('Domain: software, business, creative, research, product, marketing, etc.'),
106
+ constraints: z.string().optional().describe('Limitations: budget, time, technical, legal, etc.'),
107
+ existingContext: z.string().optional().describe('Background info or previous attempts'),
108
+ ideaCount: z
109
+ .number()
110
+ .int()
111
+ .positive()
112
+ .default(12)
113
+ .describe('Number of ideas (default: 12, range: 5-30)'),
114
+ includeAnalysis: z.boolean().default(true).describe('Include feasibility/impact analysis'),
115
+ search: z
116
+ .boolean()
117
+ .optional()
118
+ .describe('Enable web search for research (activates web_search_request feature)'),
119
+ oss: z.boolean().optional().describe('Use local Ollama server'),
120
+ enableFeatures: z.array(z.string()).optional().describe('Enable feature flags'),
121
+ disableFeatures: z.array(z.string()).optional().describe('Disable feature flags'),
93
122
  });
94
123
  export const brainstormTool = {
95
- name: "brainstorm",
96
- description: "Generate creative ideas using structured frameworks with domain context and feasibility analysis.",
124
+ name: 'brainstorm',
125
+ description: 'Generate creative ideas using structured frameworks with domain context and feasibility analysis.',
97
126
  zodSchema: brainstormArgsSchema,
98
127
  prompt: {
99
- description: "Create structured brainstorming with chosen methodology and analysis",
128
+ description: 'Create structured brainstorming with chosen methodology and analysis',
100
129
  },
101
130
  category: 'utility',
102
131
  execute: async (args, onProgress) => {
103
- const { prompt, model, approvalPolicy, sandboxMode, fullAuto, yolo, cd, methodology = 'auto', domain, constraints, existingContext, ideaCount = 12, includeAnalysis = true } = args;
132
+ const { prompt, model, approvalPolicy, sandboxMode, fullAuto, yolo, cd, methodology = 'auto', domain, constraints, existingContext, ideaCount = 12, includeAnalysis = true, search, oss, enableFeatures, disableFeatures, } = args;
104
133
  if (!prompt?.trim()) {
105
- throw new Error("You must provide a valid brainstorming challenge or question to explore");
134
+ throw new Error('You must provide a valid brainstorming challenge or question to explore');
106
135
  }
107
136
  let enhancedPrompt = buildBrainstormPrompt({
108
137
  prompt: prompt.trim(),
@@ -111,7 +140,7 @@ export const brainstormTool = {
111
140
  constraints: constraints,
112
141
  existingContext: existingContext,
113
142
  ideaCount: ideaCount,
114
- includeAnalysis: includeAnalysis
143
+ includeAnalysis: includeAnalysis,
115
144
  });
116
145
  Logger.debug(`Brainstorm: Using methodology '${methodology}' for domain '${domain || 'general'}'`);
117
146
  // Report progress to user
@@ -124,7 +153,11 @@ export const brainstormTool = {
124
153
  sandboxMode: sandboxMode,
125
154
  yolo: Boolean(yolo),
126
155
  cd: cd,
156
+ search: search,
157
+ oss: oss,
158
+ enableFeatures: enableFeatures,
159
+ disableFeatures: disableFeatures,
127
160
  }, onProgress);
128
- }
161
+ },
129
162
  };
130
163
  //# sourceMappingURL=brainstorm.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"brainstorm.tool.js","sourceRoot":"","sources":["../../src/tools/brainstorm.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brainstorm.tool.js","sourceRoot":"","sources":["../../src/tools/brainstorm.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { UnifiedTool } from './registry.js';
2
+ export declare const execCodexTool: UnifiedTool;
3
+ //# sourceMappingURL=exec-codex.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec-codex.tool.d.ts","sourceRoot":"","sources":["../../src/tools/exec-codex.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAkB5C,eAAO,MAAM,aAAa,EAAE,WAwC3B,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ import { executeCodex } from '../utils/codexExecutor.js';
3
+ import { formatCodexResponseForMCP } from '../utils/outputParser.js';
4
+ import { ERROR_MESSAGES, STATUS_MESSAGES, MODELS, SANDBOX_MODES } from '../constants.js';
5
+ const execCodexArgsSchema = z.object({
6
+ prompt: z.string().min(1).describe("Command or instruction for non-interactive Codex execution"),
7
+ model: z.string().optional().describe(`Model to use: ${Object.values(MODELS).join(', ')}`),
8
+ sandbox: z.string().optional().describe(`Sandbox mode: ${Object.values(SANDBOX_MODES).join(', ')}`),
9
+ timeout: z.number().optional().describe("Maximum execution time in milliseconds (optional)"),
10
+ workingDir: z.string().optional().describe("Working directory for execution"),
11
+ });
12
+ export const execCodexTool = {
13
+ name: "exec-codex",
14
+ description: "Non-interactive Codex execution for automation and scripting",
15
+ zodSchema: execCodexArgsSchema,
16
+ prompt: {
17
+ description: "Execute Codex commands non-interactively for automation workflows",
18
+ },
19
+ category: 'codex',
20
+ execute: async (args, onProgress) => {
21
+ const { prompt, model, sandbox, timeout, workingDir } = args;
22
+ if (!prompt?.trim()) {
23
+ throw new Error(ERROR_MESSAGES.NO_PROMPT_PROVIDED);
24
+ }
25
+ try {
26
+ if (onProgress) {
27
+ onProgress(`${STATUS_MESSAGES.PROCESSING_START} (non-interactive mode)`);
28
+ }
29
+ const result = await executeCodex(prompt, {
30
+ model: model,
31
+ sandboxMode: sandbox, // Allow string to SandboxMode conversion
32
+ timeout: timeout,
33
+ workingDir: workingDir,
34
+ cd: workingDir,
35
+ useExec: true
36
+ }, onProgress);
37
+ // Format for non-interactive use (more concise)
38
+ return formatCodexResponseForMCP(result, false, false);
39
+ }
40
+ catch (error) {
41
+ const errorMessage = error instanceof Error ? error.message : String(error);
42
+ throw new Error(`Exec-Codex failed: ${errorMessage}`);
43
+ }
44
+ }
45
+ };
46
+ //# sourceMappingURL=exec-codex.tool.js.map