cc-reviewer 5.1.0 → 5.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.
@@ -49,9 +49,9 @@ Call `codex_review` with:
49
49
  ```
50
50
 
51
51
  ### Service Tier (from $ARGUMENTS)
52
- - If user says "fast mode", "fast", or "priority" → set `serviceTier: "fast"` (priority processing, ~2x cost)
53
52
  - If user says "flex", "cheap", or "budget" → set `serviceTier: "flex"` (50% cheaper, slower)
54
- - Otherwiseomit `serviceTier` (uses default tier)
53
+ - If user says "default tier" or "standard tier" set `serviceTier: "default"` (API default)
54
+ - Otherwise → omit `serviceTier` (defaults to `"fast"` — priority processing, ~2x cost)
55
55
 
56
56
  ### Structure your ccOutput:
57
57
 
@@ -18,7 +18,7 @@ Use the `codex_review` MCP tool with `reasoningEffort: "xhigh"` for deeper analy
18
18
  - `workingDir`: current working directory
19
19
  - `ccOutput`: brief summary of recent changes or context
20
20
  - `reasoningEffort`: "xhigh" (this is the key difference from /codex-review)
21
- - `serviceTier`: if user says "fast mode"/"fast"/"priority" → "fast"; if "flex"/"cheap"/"budget" → "flex"; otherwise omit
21
+ - `serviceTier`: if user says "flex"/"cheap"/"budget" → "flex"; if "default tier"/"standard tier" → "default"; otherwise omit (defaults to "fast" — priority processing, ~2x cost)
22
22
  - `focusAreas`: extracted from $ARGUMENTS if it's a known focus area
23
23
  - `customPrompt`: $ARGUMENTS if it's custom text
24
24
 
@@ -58,9 +58,9 @@ Call `multi_review` with:
58
58
  ```
59
59
 
60
60
  ### Service Tier (from $ARGUMENTS, applies to Codex only)
61
- - If user says "fast mode", "fast", or "priority" → set `serviceTier: "fast"`
62
61
  - If user says "flex", "cheap", or "budget" → set `serviceTier: "flex"`
63
- - Otherwiseomit `serviceTier`
62
+ - If user says "default tier" or "standard tier" set `serviceTier: "default"`
63
+ - Otherwise → omit `serviceTier` (defaults to `"fast"` — priority processing, ~2x cost)
64
64
 
65
65
  ### Structure your ccOutput:
66
66
 
@@ -39,7 +39,7 @@ export interface ReviewRequest {
39
39
  customPrompt?: string;
40
40
  /** Reasoning effort level (for models that support it) */
41
41
  reasoningEffort?: ReasoningEffort;
42
- /** Service tier (for models that support it: priority = fast, flex = cheap) */
42
+ /** Service tier (Codex). Omit for the review chain's default 'fast' (priority). Pass 'flex' for cheap/slow or 'default' for the Codex API default tier. */
43
43
  serviceTier?: ServiceTier;
44
44
  /** Review mode: standard finds bugs, adversarial challenges assumptions */
45
45
  reviewMode?: 'standard' | 'adversarial';
@@ -89,7 +89,7 @@ export class ClaudeAdapter {
89
89
  const args = [
90
90
  '-p', // Non-interactive, print and exit
91
91
  '--model', 'opus', // Use Opus
92
- '--bare', // Skip hooks, plugins, CLAUDE.md, auto-memory
92
+ '--setting-sources', '', // Skip hooks, plugins, CLAUDE.md (preserves OAuth auth; --bare kills keychain)
93
93
  '--permission-mode', 'plan', // Read-only enforcement (layer 1)
94
94
  '--verbose', // Required for stream-json
95
95
  '--output-format', 'stream-json', // Structured streaming events
@@ -164,7 +164,7 @@ export class ClaudeAdapter {
164
164
  if (lower.includes('rate limit') || lower.includes('rate_limit') || lower.includes('quota')) {
165
165
  return { type: 'rate_limit', message: `Claude rate limit: ${stderr.slice(0, 500)}` };
166
166
  }
167
- if (lower.includes('unauthorized') || lower.includes('authentication') || lower.includes('api key') || stderr.includes('401') || stderr.includes('403')) {
167
+ if (lower.includes('unauthorized') || lower.includes('authentication') || lower.includes('not logged in') || lower.includes('api key') || stderr.includes('401') || stderr.includes('403')) {
168
168
  return { type: 'auth_error', message: `Authentication failed: ${stderr.slice(0, 500)}`, details: { stderr } };
169
169
  }
170
170
  return { type: 'cli_error', message: stderr.slice(0, 500) || 'Unknown error' };
@@ -94,12 +94,15 @@ export class CodexAdapter {
94
94
  '-C', workingDir,
95
95
  '-', // Read prompt from stdin
96
96
  ];
97
- if (serviceTier && serviceTier !== 'default') {
98
- args.push('-c', `service_tier=${serviceTier}`);
97
+ // Default to 'fast' tier when caller omits serviceTier.
98
+ // Explicit 'default' is a user opt-out and emits no flag (uses Codex API default).
99
+ const effectiveTier = serviceTier === undefined ? 'fast' : serviceTier;
100
+ if (effectiveTier !== 'default') {
101
+ args.push('-c', `service_tier=${effectiveTier}`);
99
102
  }
100
103
  const decoder = new CodexEventDecoder();
101
104
  const cliStartTime = Date.now();
102
- const tierLabel = serviceTier && serviceTier !== 'default' ? ` [${serviceTier}]` : '';
105
+ const tierLabel = effectiveTier !== 'default' ? ` [${effectiveTier}]` : '';
103
106
  console.error(`[codex] Running with ${reasoningEffort} reasoning${tierLabel}...`);
104
107
  decoder.onProgress = (eventType, detail) => {
105
108
  const elapsed = Math.round((Date.now() - cliStartTime) / 1000);
@@ -20,7 +20,7 @@ export const ReviewInputSchema = z.object({
20
20
  ])).optional().describe('Areas to focus the review on'),
21
21
  customPrompt: z.string().optional().describe('Custom instructions for the reviewer'),
22
22
  reasoningEffort: z.enum(['high', 'xhigh']).optional().describe('Codex reasoning effort level (default: high, use xhigh for deeper analysis)'),
23
- serviceTier: z.enum(['default', 'fast', 'flex']).optional().describe('Codex service tier (default: default, fast = priority processing, flex = cheaper/slower)')
23
+ serviceTier: z.enum(['default', 'fast', 'flex']).optional().describe('Codex service tier (default when omitted: fast = priority processing, ~2x cost; flex = 50% cheaper/slower; default = API default tier)')
24
24
  });
25
25
  // =============================================================================
26
26
  // HELPERS
@@ -143,7 +143,7 @@ export const TOOL_DEFINITIONS = {
143
143
  focusAreas: { type: 'array', items: { type: 'string', enum: ['security', 'performance', 'architecture', 'correctness', 'maintainability', 'scalability', 'testing', 'documentation'] }, description: 'Areas to focus the review on' },
144
144
  customPrompt: { type: 'string', description: 'Custom instructions for the reviewer' },
145
145
  reasoningEffort: { type: 'string', enum: ['high', 'xhigh'], description: 'Codex reasoning effort (default: high, use xhigh for deeper analysis)' },
146
- serviceTier: { type: 'string', enum: ['default', 'fast', 'flex'], description: 'Codex service tier (fast = priority processing, flex = cheaper/slower)' }
146
+ serviceTier: { type: 'string', enum: ['default', 'fast', 'flex'], description: 'Codex service tier (omit for fast default; fast = priority ~2x cost, flex = 50% cheaper/slower, default = API default tier)' }
147
147
  },
148
148
  required: ['workingDir', 'ccOutput', 'outputType']
149
149
  }
@@ -192,7 +192,7 @@ export const TOOL_DEFINITIONS = {
192
192
  analyzedFiles: { type: 'array', items: { type: 'string' }, description: 'File paths that CC analyzed' },
193
193
  focusAreas: { type: 'array', items: { type: 'string', enum: ['security', 'performance', 'architecture', 'correctness', 'maintainability', 'scalability', 'testing', 'documentation'] }, description: 'Areas to focus the review on' },
194
194
  customPrompt: { type: 'string', description: 'Custom instructions for standard review + adversarial focus steering' },
195
- serviceTier: { type: 'string', enum: ['default', 'fast', 'flex'], description: 'Codex service tier (fast = priority processing, flex = cheaper/slower). Only applies to Codex.' }
195
+ serviceTier: { type: 'string', enum: ['default', 'fast', 'flex'], description: 'Codex service tier — only applies to Codex. Omit for fast default; fast = priority ~2x cost, flex = 50% cheaper/slower, default = API default tier.' }
196
196
  },
197
197
  required: ['workingDir', 'ccOutput', 'outputType']
198
198
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-reviewer",
3
- "version": "5.1.0",
3
+ "version": "5.2.0",
4
4
  "description": "MCP server for Claude Code - Get second-opinion feedback from Codex/Gemini CLIs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",