codex-review-mcp 2.3.7 → 2.3.9

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.
@@ -86,10 +86,11 @@ server.registerTool('perform_code_review', {
86
86
  maxTokens: input.maxTokens,
87
87
  };
88
88
  const onProgress = async (message, progress, total) => {
89
- // Only send progress notifications if we have a valid progress token
90
- const progressToken = extra?._meta?.progressToken ?? extra?.requestId;
89
+ // Only send progress notifications if we have an explicit progress token
90
+ // Note: Do NOT fall back to requestId - it's a different thing in MCP protocol
91
+ const progressToken = extra?._meta?.progressToken;
91
92
  if (progressToken === undefined || progressToken === null) {
92
- // Skip progress notifications if no token available
93
+ // Skip progress notifications if no explicit token provided
93
94
  return;
94
95
  }
95
96
  await server.server.notification({
@@ -50,10 +50,11 @@ describe('MCP Server Integration Tests', () => {
50
50
  },
51
51
  }, async (input, extra) => {
52
52
  const onProgress = async (message, progress, total) => {
53
- // Only send progress notifications if we have a valid progress token
54
- const progressToken = extra?._meta?.progressToken ?? extra?.requestId;
53
+ // Only send progress notifications if we have an explicit progress token
54
+ // Note: Do NOT fall back to requestId - it's a different thing in MCP protocol
55
+ const progressToken = extra?._meta?.progressToken;
55
56
  if (progressToken === undefined || progressToken === null) {
56
- // Skip progress notifications if no token available
57
+ // Skip progress notifications if no explicit token provided
57
58
  return;
58
59
  }
59
60
  await server.server.notification({
@@ -37,16 +37,20 @@ export async function performCodeReview(input, onProgress) {
37
37
  : shouldSkip
38
38
  ? ''
39
39
  : await gatherContext(input.workspaceDir);
40
- // Debug: Log what context was gathered (to stderr for MCP logs)
41
- console.error(`[codex-review-mcp] Context gathered: ${context.length} chars`);
40
+ // Log context gathering results (informational, not errors!)
42
41
  const hasCursorRules = context.includes('.cursor/rules');
43
- console.error(`[codex-review-mcp] Contains .cursor/rules: ${hasCursorRules}`);
44
42
  if (hasCursorRules) {
45
43
  const cursorFiles = (context.match(/<!-- \.cursor\/rules\/[^>]+ -->/g) || []);
46
- console.error(`[codex-review-mcp] Cursor rules files: ${cursorFiles.join(', ')}`);
44
+ console.error(`[codex-review-mcp] Context: ${context.length} chars with .cursor/rules ${cursorFiles.map(f => f.replace('<!-- ', '').replace(' -->', '')).join(', ')}`);
45
+ }
46
+ else if (context.length > 0) {
47
+ console.error(`[codex-review-mcp] Context: ${context.length} chars from package.json, tsconfig.json, etc. (no .cursor/rules in repo)`);
48
+ }
49
+ else {
50
+ console.error(`[codex-review-mcp] No project context found (generic review mode)`);
47
51
  }
48
52
  // Also use debugLog for persistent logging
49
- await debugLog(`Context gathered: ${context.length} chars, .cursor/rules: ${hasCursorRules}`);
53
+ await debugLog(`Context: ${context.length} chars, .cursor/rules: ${hasCursorRules}`);
50
54
  // Build expert prompt
51
55
  await onProgress?.('Building expert prompt…', 50, 100);
52
56
  const isStaticReview = input.contentType === 'code';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-review-mcp",
3
- "version": "2.3.7",
3
+ "version": "2.3.9",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "build": "tsc",