agent-gauntlet 0.15.3 → 0.15.4
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.
- package/dist/index.js +130 -84
- package/dist/index.js.map +9 -8
- package/package.json +1 -1
- package/skills/gauntlet-run/SKILL.md +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/scripts/status.ts", "../src/index.ts", "../src/commands/gate-command.ts", "../src/config/global.ts", "../src/config/loader.ts", "../src/built-in-reviews/index.ts", "../src/config/schema.ts", "../src/core/change-detector.ts", "../src/core/entry-point.ts", "../src/core/job.ts", "../src/gates/check.ts", "../src/constants.ts", "../src/gates/resolve-check-command.ts", "../src/cli-adapters/shared.ts", "../src/cli-adapters/claude.ts", "../src/commands/stop-hook.ts", "../src/hooks/adapters/claude-stop-hook.ts", "../src/hooks/adapters/cursor-stop-hook.ts", "../src/hooks/stop-hook-handler.ts", "../src/config/stop-hook-config.ts", "../src/output/app-logger.ts", "../src/output/sinks/console-sink.ts", "../src/hooks/stop-hook-state.ts", "../src/utils/execution-state.ts", "../src/utils/debug-log.ts", "../src/types/gauntlet-status.ts", "../src/cli-adapters/thinking-budget.ts", "../src/cli-adapters/codex.ts", "../src/cli-adapters/cursor.ts", "../src/cli-adapters/model-resolution.ts", "../src/cli-adapters/gemini.ts", "../src/cli-adapters/github-copilot.ts", "../src/cli-adapters/index.ts", "../src/gates/review-agg.ts", "../src/gates/review-diff.ts", "../src/utils/diff-parser.ts", "../src/gates/review-types.ts", "../src/gates/review-eval.ts", "../src/gates/review-helpers.ts", "../src/gates/review.ts", "../src/utils/sanitizer.ts", "../src/core/runner.ts", "../src/output/console.ts", "../src/utils/log-parser.ts", "../src/utils/log-parser-find-helpers.ts", "../src/utils/log-parser-helpers.ts", "../src/output/console-log.ts", "../src/output/logger.ts", "../src/utils/git.ts", "../src/commands/shared.ts", "../src/commands/check.ts", "../src/commands/ci/init.ts", "../src/config/ci-loader.ts", "../src/config/ci-schema.ts", "../src/commands/ci/list-jobs.ts", "../src/commands/ci/index.ts", "../src/commands/clean.ts", "../src/commands/detect.ts", "../src/commands/health.ts", "../src/config/validator.ts", "../src/config/validate-reviews.ts", "../src/commands/help.ts", "../src/commands/init.ts", "../src/commands/init-checksums.ts", "../src/commands/init-hooks.ts", "../src/commands/init-prompts.ts", "../src/commands/list.ts", "../src/commands/review.ts", "../src/core/diff-stats.ts", "../src/core/run-executor-lock.ts", "../src/core/run-executor-helpers.ts", "../src/core/run-executor.ts", "../src/commands/run.ts", "../src/commands/start-hook.ts", "../src/commands/status.ts", "../src/commands/validate.ts", "../src/commands/wait-ci.ts"],
|
|
3
|
+
"sources": ["../src/scripts/status.ts", "../src/index.ts", "../src/commands/gate-command.ts", "../src/config/global.ts", "../src/config/loader.ts", "../src/built-in-reviews/index.ts", "../src/config/schema.ts", "../src/core/change-detector.ts", "../src/core/entry-point.ts", "../src/core/job.ts", "../src/gates/check.ts", "../src/constants.ts", "../src/gates/resolve-check-command.ts", "../src/cli-adapters/shared.ts", "../src/cli-adapters/claude.ts", "../src/commands/stop-hook.ts", "../src/hooks/adapters/claude-stop-hook.ts", "../src/hooks/adapters/cursor-stop-hook.ts", "../src/hooks/stop-hook-handler.ts", "../src/config/stop-hook-config.ts", "../src/output/app-logger.ts", "../src/output/sinks/console-sink.ts", "../src/hooks/stop-hook-state.ts", "../src/utils/execution-state.ts", "../src/utils/debug-log.ts", "../src/types/gauntlet-status.ts", "../src/cli-adapters/thinking-budget.ts", "../src/cli-adapters/codex.ts", "../src/cli-adapters/cursor.ts", "../src/cli-adapters/model-resolution.ts", "../src/cli-adapters/gemini.ts", "../src/cli-adapters/github-copilot.ts", "../src/cli-adapters/index.ts", "../src/gates/review-agg.ts", "../src/gates/review-diff.ts", "../src/utils/diff-parser.ts", "../src/gates/review-types.ts", "../src/gates/review-prompt.ts", "../src/gates/review-eval.ts", "../src/gates/review-helpers.ts", "../src/gates/review.ts", "../src/utils/sanitizer.ts", "../src/core/runner.ts", "../src/output/console.ts", "../src/utils/log-parser.ts", "../src/utils/log-parser-find-helpers.ts", "../src/utils/log-parser-helpers.ts", "../src/output/console-log.ts", "../src/output/logger.ts", "../src/utils/git.ts", "../src/commands/shared.ts", "../src/commands/check.ts", "../src/commands/ci/init.ts", "../src/config/ci-loader.ts", "../src/config/ci-schema.ts", "../src/commands/ci/list-jobs.ts", "../src/commands/ci/index.ts", "../src/commands/clean.ts", "../src/commands/detect.ts", "../src/commands/health.ts", "../src/config/validator.ts", "../src/config/validate-reviews.ts", "../src/commands/help.ts", "../src/commands/init.ts", "../src/commands/init-checksums.ts", "../src/commands/init-hooks.ts", "../src/commands/init-prompts.ts", "../src/commands/list.ts", "../src/commands/review.ts", "../src/core/diff-stats.ts", "../src/core/run-executor-lock.ts", "../src/core/run-executor-helpers.ts", "../src/core/run-executor.ts", "../src/commands/run.ts", "../src/commands/start-hook.ts", "../src/commands/status.ts", "../src/commands/validate.ts", "../src/commands/wait-ci.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"#!/usr/bin/env node\n/**\n * Gauntlet Status Script\n *\n * Parses the configured log_dir (default: gauntlet_logs/) to produce a structured\n * summary of the most recent gauntlet session from the .debug.log, plus a file\n * inventory of all log/JSON files for further inspection.\n *\n * This script handles structured data only (debug log events). Detailed failure\n * analysis (reading individual check logs, review JSONs) is left to the caller\n * (the /gauntlet-status skill) since log formats vary by check type.\n */\n\nimport fs from 'node:fs';\nimport path from 'node:path';\n\n// --- Types ---\n\ninterface RunStart {\n timestamp: string;\n mode: string;\n baseRef?: string;\n filesChanged: number;\n linesAdded: number;\n linesRemoved: number;\n gates: number;\n}\n\ninterface GateResult {\n timestamp: string;\n gateId: string;\n cli?: string;\n status: string;\n duration: string;\n violations?: number;\n}\n\ninterface RunEnd {\n timestamp: string;\n status: string;\n fixed: number;\n skipped: number;\n failed: number;\n iterations: number;\n duration: string;\n}\n\ninterface StopHookEntry {\n timestamp: string;\n decision: string;\n reason: string;\n}\n\ninterface SessionRun {\n start: RunStart;\n gates: GateResult[];\n end?: RunEnd;\n stopHook?: StopHookEntry;\n}\n\n// --- Parsing helpers ---\n\nfunction parseKeyValue(text: string): Record<string, string> {\n const result: Record<string, string> = {};\n for (const match of text.matchAll(/(\\w+)=(\\S+)/g)) {\n const key = match[1];\n const value = match[2];\n if (key && value) result[key] = value;\n }\n return result;\n}\n\nfunction parseTimestamp(line: string): string {\n const m = line.match(/^\\[([^\\]]+)\\]/);\n return m?.[1] ?? '';\n}\n\nfunction parseEventType(line: string): string {\n const m = line.match(/^\\[[^\\]]+\\]\\s+(\\S+)/);\n return m?.[1] ?? '';\n}\n\nfunction parseEventBody(line: string): string {\n const m = line.match(/^\\[[^\\]]+\\]\\s+\\S+\\s*(.*)/);\n return m?.[1] ?? '';\n}\n\n// --- Debug log parsing ---\n\nfunction parseRunStart(ts: string, body: string): SessionRun {\n const kv = parseKeyValue(body);\n return {\n start: {\n timestamp: ts,\n mode: kv.mode ?? 'unknown',\n baseRef: kv.base_ref,\n filesChanged: Number(kv.files_changed ?? kv.changes ?? 0),\n linesAdded: Number(kv.lines_added ?? 0),\n linesRemoved: Number(kv.lines_removed ?? 0),\n gates: Number(kv.gates ?? 0),\n },\n gates: [],\n };\n}\n\nfunction parseGateResult(ts: string, body: string): GateResult {\n const gateIdMatch = body.match(/^(\\S+)/);\n const kv = parseKeyValue(body);\n return {\n timestamp: ts,\n gateId: gateIdMatch?.[1] ?? 'unknown',\n cli: kv.cli,\n status: kv.status ?? 'unknown',\n duration: kv.duration ?? '?',\n violations: kv.violations !== undefined ? Number(kv.violations) : undefined,\n };\n}\n\nfunction parseRunEnd(ts: string, body: string): RunEnd {\n const kv = parseKeyValue(body);\n return {\n timestamp: ts,\n status: kv.status ?? 'unknown',\n fixed: Number(kv.fixed ?? 0),\n skipped: Number(kv.skipped ?? 0),\n failed: Number(kv.failed ?? 0),\n iterations: Number(kv.iterations ?? 0),\n duration: kv.duration ?? '?',\n };\n}\n\nfunction parseStopHookEntry(ts: string, body: string): StopHookEntry {\n const kv = parseKeyValue(body);\n return {\n timestamp: ts,\n decision: kv.decision ?? 'unknown',\n reason: kv.reason ?? 'unknown',\n };\n}\n\nfunction isBeforeSession(\n ts: string,\n sessionStartTime: Date | undefined,\n): boolean {\n return sessionStartTime !== undefined && new Date(ts) < sessionStartTime;\n}\n\nfunction parseDebugLog(content: string, sessionStartTime?: Date): SessionRun[] {\n const lines = content.split('\\n').filter((l) => l.trim());\n const sessions: SessionRun[] = [];\n let current: SessionRun | null = null;\n\n for (const line of lines) {\n const event = parseEventType(line);\n const body = parseEventBody(line);\n const ts = parseTimestamp(line);\n\n switch (event) {\n case 'RUN_START':\n if (isBeforeSession(ts, sessionStartTime)) {\n current = null;\n } else {\n current = parseRunStart(ts, body);\n sessions.push(current);\n }\n break;\n case 'GATE_RESULT':\n if (current) current.gates.push(parseGateResult(ts, body));\n break;\n case 'RUN_END':\n if (current) current.end = parseRunEnd(ts, body);\n break;\n case 'STOP_HOOK':\n if (current) current.stopHook = parseStopHookEntry(ts, body);\n break;\n }\n }\n\n return sessions;\n}\n\n/**\n * Find the earliest mtime of non-hidden log files in the directory.\n * This marks the start of the current session.\n */\nfunction getSessionStartTime(logDir: string): Date | undefined {\n const entries = fs\n .readdirSync(logDir)\n .filter((f) => !f.startsWith('.') && f !== 'previous');\n let earliest: number | undefined;\n for (const entry of entries) {\n const mtime = fs.statSync(path.join(logDir, entry)).mtimeMs;\n if (earliest === undefined || mtime < earliest) {\n earliest = mtime;\n }\n }\n return earliest !== undefined ? new Date(earliest) : undefined;\n}\n\n// --- File inventory ---\n\nfunction formatFileInventory(logDir: string): string[] {\n const lines: string[] = [];\n const entries = fs\n .readdirSync(logDir)\n .filter((f) => !f.startsWith('.') && f !== 'previous');\n if (entries.length === 0) return lines;\n\n const checks: string[] = [];\n const reviews: string[] = [];\n const other: string[] = [];\n\n for (const entry of entries.sort()) {\n const fullPath = path.join(logDir, entry);\n const stat = fs.statSync(fullPath);\n const sizeKB = (stat.size / 1024).toFixed(1);\n const line = `- ${fullPath} (${sizeKB} KB)`;\n\n if (entry.startsWith('review_')) {\n reviews.push(line);\n } else if (entry.startsWith('check_')) {\n checks.push(line);\n } else {\n other.push(line);\n }\n }\n\n lines.push('### Log Files');\n lines.push('');\n if (checks.length > 0) {\n lines.push('**Check logs:**');\n lines.push(...checks);\n }\n if (reviews.length > 0) {\n lines.push('**Review logs/JSON:**');\n lines.push(...reviews);\n }\n if (other.length > 0) {\n lines.push('**Other:**');\n lines.push(...other);\n }\n lines.push('');\n\n return lines;\n}\n\n// --- Summary output ---\n\nfunction formatStatusLine(end: RunEnd): string {\n if (end.status === 'pass') return 'PASSED';\n if (end.status === 'fail') return 'FAILED';\n return end.status.toUpperCase();\n}\n\nfunction formatAllRuns(sessions: SessionRun[]): string[] {\n const lines: string[] = [];\n lines.push('### All Runs in Session');\n lines.push('');\n for (let i = 0; i < sessions.length; i++) {\n const s = sessions[i];\n if (!s) continue;\n const status = s.end ? s.end.status : 'in-progress';\n const duration = s.end ? s.end.duration : '?';\n lines.push(\n `${i + 1}. [${s.start.timestamp}] mode=${s.start.mode} status=${status} duration=${duration}`,\n );\n }\n lines.push('');\n return lines;\n}\n\nfunction formatSession(sessions: SessionRun[], logDir: string): string {\n if (sessions.length === 0) {\n return 'No gauntlet runs found in logs.';\n }\n\n const lastComplete = [...sessions].reverse().find((s) => s.end);\n const session = lastComplete ?? sessions[sessions.length - 1];\n if (!session) return 'No gauntlet runs found in logs.';\n\n const lines: string[] = [];\n\n // Header\n lines.push('## Gauntlet Session Summary');\n lines.push('');\n\n // Overall status\n if (session.end) {\n lines.push(`**Status:** ${formatStatusLine(session.end)}`);\n lines.push(`**Iterations:** ${session.end.iterations}`);\n lines.push(`**Duration:** ${session.end.duration}`);\n lines.push(\n `**Fixed:** ${session.end.fixed} | **Skipped:** ${session.end.skipped} | **Failed:** ${session.end.failed}`,\n );\n } else {\n lines.push('**Status:** In Progress (no RUN_END found)');\n }\n lines.push('');\n\n // Diff stats\n lines.push('### Diff Stats');\n lines.push(`- Mode: ${session.start.mode}`);\n if (session.start.baseRef) {\n lines.push(`- Base ref: ${session.start.baseRef}`);\n }\n lines.push(`- Files changed: ${session.start.filesChanged}`);\n lines.push(\n `- Lines: +${session.start.linesAdded} / -${session.start.linesRemoved}`,\n );\n lines.push(`- Gates: ${session.start.gates}`);\n lines.push('');\n\n // Gate results\n lines.push('### Gate Results');\n lines.push('');\n lines.push('| Gate | CLI | Status | Duration | Violations |');\n lines.push('|------|-----|--------|----------|------------|');\n for (const gate of session.gates) {\n const violations =\n gate.violations !== undefined ? String(gate.violations) : '-';\n const statusIcon = gate.status === 'pass' ? 'pass' : 'FAIL';\n lines.push(\n `| ${gate.gateId} | ${gate.cli ?? '-'} | ${statusIcon} | ${gate.duration} | ${violations} |`,\n );\n }\n lines.push('');\n\n // Stop hook\n if (session.stopHook) {\n lines.push('### Stop Hook');\n lines.push(`- Decision: ${session.stopHook.decision}`);\n lines.push(`- Reason: ${session.stopHook.reason}`);\n lines.push('');\n }\n\n // File inventory\n lines.push(...formatFileInventory(logDir));\n\n // All sessions summary (if multiple runs)\n if (sessions.length > 1) {\n lines.push(...formatAllRuns(sessions));\n }\n\n return lines.join('\\n');\n}\n\n// --- Main ---\n\n/**\n * Read the configured log_dir from .gauntlet/config.yml.\n * Falls back to \"gauntlet_logs\" if not found.\n */\nfunction getLogDir(cwd: string): string {\n const configPath = path.join(cwd, '.gauntlet', 'config.yml');\n try {\n const content = fs.readFileSync(configPath, 'utf-8');\n const match = content.match(/^log_dir:\\s*(.+)$/m);\n if (match?.[1]) return match[1].trim();\n } catch {\n // Config not found — use default\n }\n return 'gauntlet_logs';\n}\n\n/**\n * Resolve the log directory and debug log path.\n * Returns null if no logs are found (after printing a message).\n */\nfunction resolveLogPaths(\n activeDir: string,\n): { logDir: string; debugLogPath: string } | null {\n const previousDir = path.join(activeDir, 'previous');\n const debugLogPath = path.join(activeDir, '.debug.log');\n\n // Check active directory first for non-debug log files\n const activeHasLogs =\n fs.existsSync(activeDir) &&\n fs\n .readdirSync(activeDir)\n .some((f) => !f.startsWith('.') && f !== 'previous');\n\n if (activeHasLogs) {\n return { logDir: activeDir, debugLogPath };\n }\n\n if (!fs.existsSync(previousDir)) {\n console.log('No gauntlet_logs directory found.');\n return null;\n }\n\n // Fall back to previous directory — cleanLogs archives files directly here\n const logDir = resolvePreviousLogDir(previousDir);\n if (!logDir) return null;\n\n // Debug log stays in the main gauntlet_logs dir, not in previous/\n return { logDir, debugLogPath };\n}\n\nfunction resolvePreviousLogDir(previousDir: string): string | null {\n const prevEntries = fs.readdirSync(previousDir);\n const hasDirectFiles = prevEntries.some(\n (f) => f.endsWith('.log') || f.endsWith('.json'),\n );\n\n if (hasDirectFiles) return previousDir;\n\n // Legacy: check for timestamped subdirectories\n const prevDirs = prevEntries\n .map((d) => path.join(previousDir, d))\n .filter((d) => fs.statSync(d).isDirectory())\n .sort()\n .reverse();\n\n if (prevDirs.length === 0) {\n console.log('No gauntlet logs found.');\n return null;\n }\n\n return prevDirs[0] as string;\n}\n\nexport function main(): void {\n const cwd = process.cwd();\n const logDirName = getLogDir(cwd);\n const activeDir = path.join(cwd, logDirName);\n\n const paths = resolveLogPaths(activeDir);\n if (!paths) {\n process.exit(0);\n }\n\n // Parse debug log, filtering to current session based on log file timestamps\n let sessions: SessionRun[] = [];\n if (fs.existsSync(paths.debugLogPath)) {\n const debugContent = fs.readFileSync(paths.debugLogPath, 'utf-8');\n const sessionStart = getSessionStartTime(paths.logDir);\n sessions = parseDebugLog(debugContent, sessionStart);\n }\n\n // Format and output\n const output = formatSession(sessions, paths.logDir);\n console.log(output);\n}\n\n// Auto-execute when run directly (e.g., `bun src/scripts/status.ts`\n// or `node dist/scripts/status.js`). The filename check prevents\n// this from triggering when the module is bundled into dist/index.js.\nconst isDirectRun =\n (import.meta.url === `file://${process.argv[1]}` ||\n (typeof Bun !== 'undefined' && import.meta.url === `file://${Bun.main}`)) &&\n (process.argv[1]?.endsWith('status.ts') ||\n process.argv[1]?.endsWith('status.js'));\nif (isDirectRun) {\n main();\n}\n",
|
|
6
6
|
"#!/usr/bin/env node\nimport { Command } from 'commander';\nimport packageJson from '../package.json' with { type: 'json' };\nimport {\n registerCheckCommand,\n registerCICommand,\n registerCleanCommand,\n registerDetectCommand,\n registerHealthCommand,\n registerHelpCommand,\n registerInitCommand,\n registerListCommand,\n registerReviewCommand,\n registerRunCommand,\n registerStartHookCommand,\n registerStatusCommand,\n registerStopHookCommand,\n registerValidateCommand,\n registerWaitCICommand,\n} from './commands/index.js';\n\nconst program = new Command();\n\nprogram\n .name('agent-gauntlet')\n .description('AI-assisted quality gates')\n .version(packageJson.version);\n\n// Register all commands\nregisterRunCommand(program);\nregisterCheckCommand(program);\nregisterCICommand(program);\nregisterCleanCommand(program);\nregisterReviewCommand(program);\nregisterDetectCommand(program);\nregisterListCommand(program);\nregisterHealthCommand(program);\nregisterInitCommand(program);\nregisterValidateCommand(program);\nregisterStartHookCommand(program);\nregisterStatusCommand(program);\nregisterStopHookCommand(program);\nregisterWaitCICommand(program);\nregisterHelpCommand(program);\n\n// Default action: help\nif (process.argv.length < 3) {\n process.argv.push('help');\n}\n\nprogram.parse(process.argv);\n",
|
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
"import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport matter from 'gray-matter';\nimport YAML from 'yaml';\nimport {\n isBuiltInReview,\n loadBuiltInReview,\n} from '../built-in-reviews/index.js';\nimport {\n checkGateSchema,\n gauntletConfigSchema,\n reviewPromptFrontmatterSchema,\n reviewYamlSchema,\n} from './schema.js';\nimport type {\n CheckGateConfig,\n GauntletConfig,\n LoadedCheckGateConfig,\n LoadedConfig,\n LoadedReviewGateConfig,\n} from './types.js';\n\nconst GAUNTLET_DIR = '.gauntlet';\nconst CONFIG_FILE = 'config.yml';\nconst CHECKS_DIR = 'checks';\nconst REVIEWS_DIR = 'reviews';\n\nexport async function loadConfig(\n rootDir: string = process.cwd(),\n): Promise<LoadedConfig> {\n const gauntletPath = path.join(rootDir, GAUNTLET_DIR);\n const configPath = path.join(gauntletPath, CONFIG_FILE);\n\n // 1. Load project config\n if (!(await fileExists(configPath))) {\n throw new Error(`Configuration file not found at ${configPath}`);\n }\n\n const configContent = await fs.readFile(configPath, 'utf-8');\n const projectConfigRaw = YAML.parse(configContent);\n const projectConfig = gauntletConfigSchema.parse(projectConfigRaw);\n\n // 2. Load checks\n const checks = await loadCheckGates(gauntletPath);\n\n // 3. Load reviews\n const reviews = await loadReviewGates(gauntletPath);\n\n // 3b. Merge default CLI preference if not specified\n mergeCliPreferences(reviews, projectConfig);\n\n // 4. Validate entry point references\n validateLoadedEntryPoints(projectConfig, checks, reviews);\n\n return {\n project: projectConfig,\n checks,\n reviews,\n };\n}\n\nasync function loadCheckGates(\n gauntletPath: string,\n): Promise<Record<string, LoadedCheckGateConfig>> {\n const checksPath = path.join(gauntletPath, CHECKS_DIR);\n const checks: Record<string, LoadedCheckGateConfig> = {};\n\n if (!(await dirExists(checksPath))) {\n return checks;\n }\n\n const checkFiles = await fs.readdir(checksPath);\n for (const file of checkFiles) {\n if (!(file.endsWith('.yml') || file.endsWith('.yaml'))) {\n continue;\n }\n\n const filePath = path.join(checksPath, file);\n const content = await fs.readFile(filePath, 'utf-8');\n const raw = YAML.parse(content);\n const name = path.basename(file, path.extname(file));\n const parsed: CheckGateConfig = checkGateSchema.parse(raw);\n\n // Normalize deprecated alias in loader (not schema) for reliability\n const fixFile = parsed.fix_instructions_file || parsed.fix_instructions;\n\n const loadedCheck: LoadedCheckGateConfig = {\n ...parsed,\n name,\n };\n\n // Load fix instructions file if specified\n if (fixFile) {\n loadedCheck.fixInstructionsContent = await loadPromptFile(\n fixFile,\n gauntletPath,\n `check \"${name}\"`,\n );\n }\n\n // Store fix_with_skill if specified\n if (parsed.fix_with_skill) {\n loadedCheck.fixWithSkill = parsed.fix_with_skill;\n }\n\n checks[name] = loadedCheck;\n }\n\n return checks;\n}\n\nasync function loadReviewGates(\n gauntletPath: string,\n): Promise<Record<string, LoadedReviewGateConfig>> {\n const reviewsPath = path.join(gauntletPath, REVIEWS_DIR);\n const reviews: Record<string, LoadedReviewGateConfig> = {};\n\n if (!(await dirExists(reviewsPath))) {\n return reviews;\n }\n\n const reviewFiles = await fs.readdir(reviewsPath);\n detectDuplicateReviewNames(reviewFiles);\n\n for (const file of reviewFiles) {\n if (file.endsWith('.md')) {\n reviews[path.basename(file, '.md')] = await loadMarkdownReview(\n file,\n reviewsPath,\n gauntletPath,\n );\n } else if (file.endsWith('.yml') || file.endsWith('.yaml')) {\n reviews[path.basename(file, path.extname(file))] = await loadYamlReview(\n file,\n reviewsPath,\n gauntletPath,\n );\n }\n }\n\n return reviews;\n}\n\nfunction detectDuplicateReviewNames(reviewFiles: string[]): void {\n const reviewNameSources = new Map<string, string[]>();\n for (const file of reviewFiles) {\n if (\n !(file.endsWith('.md') || file.endsWith('.yml') || file.endsWith('.yaml'))\n ) {\n continue;\n }\n\n const name = path.basename(file, path.extname(file));\n\n // Reject user-defined review files with the reserved built-in: prefix\n if (isBuiltInReview(name)) {\n throw new Error(\n `Review file \"${file}\" uses the reserved \"built-in:\" prefix. Rename the file to avoid conflicts with built-in reviews.`,\n );\n }\n\n const sources = reviewNameSources.get(name) || [];\n sources.push(file);\n reviewNameSources.set(name, sources);\n }\n\n for (const [name, sources] of reviewNameSources) {\n if (sources.length > 1) {\n throw new Error(\n `Duplicate review name \"${name}\" found across files: ${sources.join(', ')}. Each review name must be unique.`,\n );\n }\n }\n}\n\nasync function loadMarkdownReview(\n file: string,\n reviewsPath: string,\n gauntletPath: string,\n): Promise<LoadedReviewGateConfig> {\n const filePath = path.join(reviewsPath, file);\n const content = await fs.readFile(filePath, 'utf-8');\n const { data: frontmatter, content: promptBody } = matter(content);\n\n const parsedFrontmatter = reviewPromptFrontmatterSchema.parse(frontmatter);\n const name = path.basename(file, '.md');\n\n const review: LoadedReviewGateConfig = {\n name,\n prompt: file,\n promptContent: promptBody,\n model: parsedFrontmatter.model,\n cli_preference: parsedFrontmatter.cli_preference,\n num_reviews: parsedFrontmatter.num_reviews,\n parallel: parsedFrontmatter.parallel,\n run_in_ci: parsedFrontmatter.run_in_ci,\n run_locally: parsedFrontmatter.run_locally,\n timeout: parsedFrontmatter.timeout,\n };\n\n // If prompt_file is specified, override the markdown body\n if (parsedFrontmatter.prompt_file) {\n review.promptContent = await loadPromptFile(\n parsedFrontmatter.prompt_file,\n gauntletPath,\n `review \"${name}\"`,\n );\n }\n\n // If skill_name is specified, ignore body and set skillName\n if (parsedFrontmatter.skill_name) {\n review.promptContent = undefined;\n review.skillName = parsedFrontmatter.skill_name;\n }\n\n return review;\n}\n\nasync function loadYamlReview(\n file: string,\n reviewsPath: string,\n gauntletPath: string,\n): Promise<LoadedReviewGateConfig> {\n const filePath = path.join(reviewsPath, file);\n const content = await fs.readFile(filePath, 'utf-8');\n const raw = YAML.parse(content);\n const parsed = reviewYamlSchema.parse(raw);\n const name = path.basename(file, path.extname(file));\n\n const review: LoadedReviewGateConfig = {\n name,\n prompt: file,\n model: parsed.model,\n cli_preference: parsed.cli_preference,\n num_reviews: parsed.num_reviews,\n parallel: parsed.parallel,\n run_in_ci: parsed.run_in_ci,\n run_locally: parsed.run_locally,\n timeout: parsed.timeout,\n };\n\n if (parsed.prompt_file) {\n review.promptContent = await loadPromptFile(\n parsed.prompt_file,\n gauntletPath,\n `review \"${name}\"`,\n );\n }\n\n if (parsed.skill_name) {\n review.skillName = parsed.skill_name;\n }\n\n if (parsed.builtin) {\n review.promptContent = loadBuiltInReview(parsed.builtin);\n }\n\n return review;\n}\n\nfunction mergeCliPreferences(\n reviews: Record<string, LoadedReviewGateConfig>,\n projectConfig: GauntletConfig,\n): void {\n for (const [name, review] of Object.entries(reviews)) {\n if (review.cli_preference) {\n const allowedTools = new Set(projectConfig.cli.default_preference);\n for (const tool of review.cli_preference) {\n if (!allowedTools.has(tool)) {\n throw new Error(\n `Review \"${name}\" uses CLI tool \"${tool}\" which is not in the project-level allowed list (cli.default_preference).`,\n );\n }\n }\n } else {\n review.cli_preference = projectConfig.cli.default_preference;\n }\n }\n}\n\nfunction validateLoadedEntryPoints(\n projectConfig: GauntletConfig,\n checks: Record<string, LoadedCheckGateConfig>,\n reviews: Record<string, LoadedReviewGateConfig>,\n): void {\n const checkNames = new Set(Object.keys(checks));\n const reviewNames = new Set(Object.keys(reviews));\n\n for (const entryPoint of projectConfig.entry_points) {\n validateGateReferences(\n entryPoint.path,\n 'check',\n entryPoint.checks,\n checkNames,\n );\n validateGateReferences(\n entryPoint.path,\n 'review',\n entryPoint.reviews,\n reviewNames,\n );\n }\n}\n\nfunction validateGateReferences(\n entryPointPath: string,\n gateKind: string,\n references: string[] | undefined,\n knownNames: Set<string>,\n): void {\n if (!references) {\n return;\n }\n for (const name of references) {\n if (!knownNames.has(name)) {\n throw new Error(\n `Entry point \"${entryPointPath}\" references non-existent ${gateKind} gate: \"${name}\"`,\n );\n }\n }\n}\n\nasync function loadPromptFile(\n filePath: string,\n gauntletPath: string,\n source: string,\n): Promise<string> {\n let resolvedPath: string;\n if (path.isAbsolute(filePath)) {\n console.warn(\n `Warning: ${source} uses absolute path \"${filePath}\". Prefer relative paths for portability.`,\n );\n resolvedPath = filePath;\n } else {\n resolvedPath = path.resolve(gauntletPath, filePath);\n }\n // Warn if resolved path escapes the .gauntlet/ directory (including via relative traversal)\n const normalizedGauntletPath = path.resolve(gauntletPath);\n const relativeToDotGauntlet = path.relative(\n normalizedGauntletPath,\n resolvedPath,\n );\n if (\n relativeToDotGauntlet.startsWith('..') ||\n path.isAbsolute(relativeToDotGauntlet)\n ) {\n console.warn(\n `Warning: ${source} references file outside .gauntlet/ directory: \"${filePath}\" (resolves to ${resolvedPath}). Review .gauntlet/ config changes carefully in PRs.`,\n );\n }\n if (!(await fileExists(resolvedPath))) {\n throw new Error(\n `File not found: ${resolvedPath} (referenced by ${source})`,\n );\n }\n return fs.readFile(resolvedPath, 'utf-8');\n}\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n const stat = await fs.stat(path);\n return stat.isFile();\n } catch {\n return false;\n }\n}\n\nasync function dirExists(path: string): Promise<boolean> {\n try {\n const stat = await fs.stat(path);\n return stat.isDirectory();\n } catch {\n return false;\n }\n}\n",
|
|
10
10
|
"// @ts-expect-error Bun text import\nimport codeQualityContent from './code-quality.md' with { type: 'text' };\n\nconst BUILT_IN_PREFIX = 'built-in:';\n\nconst builtInSources: Record<string, string> = {\n 'code-quality': codeQualityContent,\n};\n\n/**\n * Check if a review name uses the built-in prefix.\n */\nexport function isBuiltInReview(name: string): boolean {\n return name.startsWith(BUILT_IN_PREFIX);\n}\n\n/**\n * Load a built-in review prompt by name. Returns the raw markdown content.\n */\nexport function loadBuiltInReview(name: string): string {\n const source = builtInSources[name];\n\n if (!source) {\n throw new Error(`Unknown built-in review: \"${name}\"`);\n }\n\n return source;\n}\n",
|
|
11
11
|
"import { z } from 'zod';\n\nexport const adapterConfigSchema = z.object({\n allow_tool_use: z.boolean().default(true),\n thinking_budget: z.enum(['off', 'low', 'medium', 'high']).optional(),\n model: z.string().optional(),\n});\n\nexport const cliConfigSchema = z.object({\n default_preference: z.array(z.string().min(1)).min(1),\n adapters: z.record(z.string(), adapterConfigSchema).optional(),\n});\n\nexport const checkGateSchema = z\n .object({\n command: z.string().min(1),\n rerun_command: z.string().min(1).optional(),\n working_directory: z.string().optional(),\n parallel: z.boolean().default(false),\n run_in_ci: z.boolean().default(true),\n run_locally: z.boolean().default(true),\n timeout: z.number().optional(),\n fail_fast: z.boolean().optional(),\n fix_instructions: z.string().optional(), // Deprecated alias for fix_instructions_file\n fix_instructions_file: z.string().optional(),\n fix_with_skill: z.string().optional(),\n })\n .superRefine((data, ctx) => {\n // fail_fast can only be used when parallel is false\n if (data.fail_fast === true && data.parallel === true) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'fail_fast can only be used when parallel is false',\n });\n }\n // Cannot specify both deprecated fix_instructions and fix_instructions_file\n if (data.fix_instructions && data.fix_instructions_file) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"Cannot specify both 'fix_instructions' (deprecated) and 'fix_instructions_file'. Use only 'fix_instructions_file'.\",\n });\n }\n // fix_instructions_file (or its deprecated alias) and fix_with_skill are mutually exclusive\n const effectiveFixFile =\n data.fix_instructions_file || data.fix_instructions;\n if (effectiveFixFile && data.fix_with_skill) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"'fix_instructions_file' and 'fix_with_skill' are mutually exclusive. Specify only one.\",\n });\n }\n });\n\nexport const reviewGateSchema = z.object({\n name: z.string().min(1),\n prompt: z.string().min(1), // Path relative to .gauntlet/reviews/\n cli_preference: z.array(z.string().min(1)).optional(),\n num_reviews: z.number().default(1),\n parallel: z.boolean().default(true),\n run_in_ci: z.boolean().default(true),\n run_locally: z.boolean().default(true),\n timeout: z.number().optional(),\n});\n\nexport const reviewPromptFrontmatterSchema = z\n .object({\n model: z.string().optional(),\n cli_preference: z.array(z.string().min(1)).optional(),\n num_reviews: z.number().default(1),\n parallel: z.boolean().default(true),\n run_in_ci: z.boolean().default(true),\n run_locally: z.boolean().default(true),\n timeout: z.number().optional(),\n prompt_file: z.string().optional(),\n skill_name: z.string().optional(),\n })\n .refine((data) => !(data.prompt_file && data.skill_name), {\n message:\n \"'prompt_file' and 'skill_name' are mutually exclusive. Specify only one.\",\n });\n\nexport const reviewYamlSchema = z\n .object({\n model: z.string().optional(),\n cli_preference: z.array(z.string().min(1)).optional(),\n num_reviews: z.number().default(1),\n parallel: z.boolean().default(true),\n run_in_ci: z.boolean().default(true),\n run_locally: z.boolean().default(true),\n timeout: z.number().optional(),\n prompt_file: z.string().optional(),\n skill_name: z.string().optional(),\n builtin: z.string().optional(),\n })\n .superRefine((data, ctx) => {\n const sources = [data.prompt_file, data.skill_name, data.builtin].filter(\n Boolean,\n );\n if (sources.length > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"'prompt_file', 'skill_name', and 'builtin' are mutually exclusive. Specify only one.\",\n });\n }\n if (sources.length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"YAML review files must specify exactly one of 'prompt_file', 'skill_name', or 'builtin'.\",\n });\n }\n });\n\nexport const entryPointSchema = z.object({\n path: z.string().min(1),\n exclude: z.array(z.string().min(1)).optional(),\n checks: z.array(z.string().min(1)).optional(),\n reviews: z.array(z.string().min(1)).optional(),\n});\n\nexport const debugLogConfigSchema = z.object({\n enabled: z.boolean().default(false),\n max_size_mb: z.number().default(10),\n});\n\nexport const loggingConsoleConfigSchema = z.object({\n enabled: z.boolean().default(true),\n format: z.enum(['pretty', 'json']).default('pretty'),\n});\n\nexport const loggingFileConfigSchema = z.object({\n enabled: z.boolean().default(true),\n format: z.enum(['text', 'json']).default('text'),\n});\n\nexport const loggingConfigSchema = z.object({\n level: z.enum(['debug', 'info', 'warning', 'error']).default('debug'),\n console: loggingConsoleConfigSchema.optional(),\n file: loggingFileConfigSchema.optional(),\n});\n\nexport const stopHookConfigSchema = z.object({\n enabled: z.boolean().optional(),\n run_interval_minutes: z.number().int().min(0).optional(),\n auto_push_pr: z.boolean().optional(),\n auto_fix_pr: z.boolean().optional(),\n});\n\nexport const gauntletConfigSchema = z.object({\n base_branch: z.string().min(1).default('origin/main'),\n log_dir: z.string().min(1).default('gauntlet_logs'),\n allow_parallel: z.boolean().default(true),\n max_retries: z.number().default(3),\n max_previous_logs: z.number().int().min(0).default(3),\n rerun_new_issue_threshold: z\n .enum(['critical', 'high', 'medium', 'low'])\n .default('medium'),\n cli: cliConfigSchema,\n entry_points: z.array(entryPointSchema).min(1),\n debug_log: debugLogConfigSchema.optional(),\n logging: loggingConfigSchema.optional(),\n stop_hook: stopHookConfigSchema.optional(),\n});\n",
|
|
12
|
-
"import { exec } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execAsync = promisify(exec);\n\n/** Validate that a string is a safe git ref (hex SHA or branch-like name). */\nfunction isValidGitRef(ref: string): boolean {\n return /^[a-zA-Z0-9._\\-/]+$/.test(ref);\n}\n\nexport interface ChangeDetectorOptions {\n commit?: string; // If provided, get diff for this commit vs its parent\n uncommitted?: boolean; // If true, only get uncommitted changes (staged + unstaged)\n fixBase?: string; // If provided, get diff from this ref to current working tree\n}\n\nexport class ChangeDetector {\n constructor(\n private baseBranch: string = 'origin/main',\n private options: ChangeDetectorOptions = {},\n ) {}\n\n async getChangedFiles(): Promise<string[]> {\n // Validate base branch before any shell interpolation\n if (!isValidGitRef(this.baseBranch)) {\n throw new Error(`Invalid base branch ref: ${this.baseBranch}`);\n }\n\n // Priority 1: If commit option is provided, use that\n if (this.options.commit) {\n if (!isValidGitRef(this.options.commit)) {\n throw new Error(`Invalid commit ref: ${this.options.commit}`);\n }\n return this.getCommitChangedFiles(this.options.commit);\n }\n\n // Priority 2: If
|
|
12
|
+
"import { exec } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execAsync = promisify(exec);\n\n/** Validate that a string is a safe git ref (hex SHA or branch-like name). */\nfunction isValidGitRef(ref: string): boolean {\n return /^[a-zA-Z0-9._\\-/]+$/.test(ref);\n}\n\nexport interface ChangeDetectorOptions {\n commit?: string; // If provided, get diff for this commit vs its parent\n uncommitted?: boolean; // If true, only get uncommitted changes (staged + unstaged)\n fixBase?: string; // If provided, get diff from this ref to current working tree\n}\n\nexport class ChangeDetector {\n constructor(\n private baseBranch: string = 'origin/main',\n private options: ChangeDetectorOptions = {},\n ) {}\n\n async getChangedFiles(): Promise<string[]> {\n // Validate base branch before any shell interpolation\n if (!isValidGitRef(this.baseBranch)) {\n throw new Error(`Invalid base branch ref: ${this.baseBranch}`);\n }\n\n // Priority 1: If commit option is provided, use that\n if (this.options.commit) {\n if (!isValidGitRef(this.options.commit)) {\n throw new Error(`Invalid commit ref: ${this.options.commit}`);\n }\n return this.getCommitChangedFiles(this.options.commit);\n }\n\n // Priority 2: If fixBase is provided, diff against it\n if (this.options.fixBase) {\n if (!isValidGitRef(this.options.fixBase)) {\n throw new Error(`Invalid fixBase ref: ${this.options.fixBase}`);\n }\n return this.getFixBaseChangedFiles(this.options.fixBase);\n }\n\n // Priority 3: If uncommitted option is provided, only get uncommitted changes\n if (this.options.uncommitted) {\n return this.getUncommittedChangedFiles();\n }\n\n // Priority 4: CI detection / local base branch diff\n const isCI =\n process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';\n\n if (isCI) {\n return this.getCIChangedFiles();\n }\n return this.getLocalChangedFiles();\n }\n\n private async getCIChangedFiles(): Promise<string[]> {\n // In GitHub Actions, GITHUB_SHA is the commit being built\n // Base branch priority is already resolved by caller\n const baseRef = this.baseBranch;\n const headRef = process.env.GITHUB_SHA || 'HEAD';\n\n if (!isValidGitRef(baseRef)) {\n throw new Error(`Invalid base ref: ${baseRef}`);\n }\n if (!isValidGitRef(headRef)) {\n throw new Error(`Invalid head ref: ${headRef}`);\n }\n\n // We might need to fetch first in some shallow clones, but assuming strictly for now\n // git diff --name-only base...head\n try {\n const { stdout } = await execAsync(\n `git diff --name-only ${baseRef}...${headRef}`,\n );\n return this.parseOutput(stdout);\n } catch (error) {\n console.warn(\n 'Failed to detect changes via git diff in CI, falling back to HEAD^...HEAD',\n error,\n );\n // Fallback for push events where base ref might not be available\n const { stdout } = await execAsync('git diff --name-only HEAD^...HEAD');\n return this.parseOutput(stdout);\n }\n }\n\n /** Collect uncommitted (staged + unstaged) and untracked file paths. */\n private async getWorkingTreeFiles(): Promise<string[]> {\n const { stdout: staged } = await execAsync('git diff --name-only --cached');\n const { stdout: unstaged } = await execAsync('git diff --name-only');\n const { stdout: untracked } = await execAsync(\n 'git ls-files --others --exclude-standard',\n );\n return [\n ...this.parseOutput(staged),\n ...this.parseOutput(unstaged),\n ...this.parseOutput(untracked),\n ];\n }\n\n /** Combine committed diff (against a base ref) with working tree changes. */\n private async getDiffWithWorkingTree(baseRef: string): Promise<string[]> {\n const { stdout: committed } = await execAsync(\n `git diff --name-only ${baseRef}...HEAD`,\n );\n const files = new Set([\n ...this.parseOutput(committed),\n ...(await this.getWorkingTreeFiles()),\n ]);\n return Array.from(files);\n }\n\n private async getLocalChangedFiles(): Promise<string[]> {\n return this.getDiffWithWorkingTree(this.baseBranch);\n }\n\n private async getCommitChangedFiles(commit: string): Promise<string[]> {\n try {\n const { stdout } = await execAsync(\n `git diff --name-only ${commit}^..${commit}`,\n );\n return this.parseOutput(stdout);\n } catch (_error) {\n try {\n const { stdout } = await execAsync(\n `git diff --name-only --root ${commit}`,\n );\n return this.parseOutput(stdout);\n } catch {\n throw new Error(`Failed to get changes for commit ${commit}`);\n }\n }\n }\n\n private async getFixBaseChangedFiles(fixBase: string): Promise<string[]> {\n return this.getDiffWithWorkingTree(fixBase);\n }\n\n private async getUncommittedChangedFiles(): Promise<string[]> {\n const files = new Set(await this.getWorkingTreeFiles());\n return Array.from(files);\n }\n\n private parseOutput(stdout: string): string[] {\n return stdout\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n }\n}\n",
|
|
13
13
|
"import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport picomatch from 'picomatch';\nimport type { EntryPointConfig } from '../config/types.js';\n\nexport interface ExpandedEntryPoint {\n path: string; // The specific directory (e.g., \"engines/billing\")\n config: EntryPointConfig; // The config that generated this (e.g., \"engines/*\")\n}\n\nexport class EntryPointExpander {\n async expand(\n entryPoints: EntryPointConfig[],\n changedFiles: string[],\n ): Promise<ExpandedEntryPoint[]> {\n const results: ExpandedEntryPoint[] = [];\n\n this.expandRootEntryPoint(entryPoints, changedFiles, results);\n\n for (const ep of entryPoints) {\n if (ep.path === '.') continue;\n await this.expandNonRootEntry(ep, changedFiles, results);\n }\n\n return results;\n }\n\n private expandRootEntryPoint(\n entryPoints: EntryPointConfig[],\n changedFiles: string[],\n results: ExpandedEntryPoint[],\n ): void {\n if (changedFiles.length === 0) return;\n\n const rootConfig = entryPoints.find((ep) => ep.path === '.') ?? {\n path: '.',\n };\n const filteredRootChanges = this.filterExcludedFiles(\n changedFiles,\n rootConfig.exclude,\n );\n\n if (filteredRootChanges.length > 0) {\n results.push({ path: '.', config: rootConfig });\n }\n }\n\n private async expandNonRootEntry(\n ep: EntryPointConfig,\n changedFiles: string[],\n results: ExpandedEntryPoint[],\n ): Promise<void> {\n const filteredChanges = this.filterExcludedFiles(changedFiles, ep.exclude);\n if (filteredChanges.length === 0) return;\n\n if (ep.path.endsWith('*') && !ep.path.includes('**')) {\n const parentDir = ep.path.slice(0, -2);\n const expandedPaths = await this.expandWildcard(\n parentDir,\n filteredChanges,\n );\n for (const subDir of expandedPaths) {\n results.push({ path: subDir, config: ep });\n }\n } else if (this.isGlobPattern(ep.path)) {\n if (this.hasMatchingFiles(ep.path, filteredChanges)) {\n results.push({ path: ep.path, config: ep });\n }\n } else if (this.hasChangesInDir(ep.path, filteredChanges)) {\n results.push({ path: ep.path, config: ep });\n }\n }\n\n async expandAll(\n entryPoints: EntryPointConfig[],\n ): Promise<ExpandedEntryPoint[]> {\n const results: ExpandedEntryPoint[] = [];\n\n for (const ep of entryPoints) {\n if (ep.path === '.') {\n results.push({ path: '.', config: ep });\n continue;\n }\n\n if (ep.path.endsWith('*') && !ep.path.includes('**')) {\n // Single-level wildcard directory (e.g., \"engines/*\")\n const parentDir = ep.path.slice(0, -2);\n const subDirs = await this.listSubDirectories(parentDir);\n for (const subDir of subDirs) {\n results.push({ path: subDir, config: ep });\n }\n } else if (this.isGlobPattern(ep.path)) {\n // Glob pattern (e.g., \"openspec/changes/**/spec.md\")\n // Include as-is for expandAll since it's a virtual entry point\n results.push({ path: ep.path, config: ep });\n } else {\n results.push({ path: ep.path, config: ep });\n }\n }\n\n return results;\n }\n\n private filterExcludedFiles(files: string[], patterns?: string[]): string[] {\n if (!patterns || patterns.length === 0) {\n return files;\n }\n\n // Pre-compile matchers\n const matchers: picomatch.Matcher[] = [];\n const prefixes: string[] = [];\n\n for (const pattern of patterns) {\n if (pattern.match(/[*?[{]/)) {\n matchers.push(picomatch(pattern));\n } else {\n prefixes.push(pattern);\n }\n }\n\n return files.filter((file) => {\n // If matches ANY pattern, exclude it\n const isExcluded =\n prefixes.some((p) => file === p || file.startsWith(`${p}/`)) ||\n matchers.some((m) => m(file));\n\n return !isExcluded;\n });\n }\n\n private async expandWildcard(\n parentDir: string,\n changedFiles: string[],\n ): Promise<string[]> {\n const affectedSubDirs = new Set<string>();\n\n // Filter changes that are inside this parent directory\n const relevantChanges = changedFiles.filter((f) =>\n f.startsWith(`${parentDir}/`),\n );\n\n for (const file of relevantChanges) {\n // file: \"engines/billing/src/foo.ts\", parentDir: \"engines\"\n // relPath: \"billing/src/foo.ts\"\n const relPath = file.slice(parentDir.length + 1);\n const subDirName = relPath.split('/')[0];\n\n if (subDirName) {\n affectedSubDirs.add(path.join(parentDir, subDirName));\n }\n }\n\n return Array.from(affectedSubDirs);\n }\n\n private async listSubDirectories(parentDir: string): Promise<string[]> {\n try {\n const dirents = await fs.readdir(parentDir, { withFileTypes: true });\n return dirents\n .filter((d) => d.isDirectory())\n .map((d) => path.join(parentDir, d.name));\n } catch {\n return [];\n }\n }\n\n private hasChangesInDir(dirPath: string, changedFiles: string[]): boolean {\n // Check if any changed file starts with the dirPath\n // Need to ensure exact match or subdirectory (e.g. \"app\" should not match \"apple\")\n const dirPrefix = dirPath.endsWith('/') ? dirPath : `${dirPath}/`;\n return changedFiles.some((f) => f === dirPath || f.startsWith(dirPrefix));\n }\n\n private isGlobPattern(pattern: string): boolean {\n // Check if the pattern contains glob characters\n return /[*?[{]/.test(pattern);\n }\n\n private hasMatchingFiles(pattern: string, changedFiles: string[]): boolean {\n const matcher = picomatch(pattern);\n return changedFiles.some((file) => matcher(file));\n }\n}\n",
|
|
14
14
|
"import type {\n CheckGateConfig,\n LoadedConfig,\n LoadedReviewGateConfig,\n} from '../config/types.js';\nimport type { ExpandedEntryPoint } from './entry-point.js';\n\nexport type JobType = 'check' | 'review';\n\nexport interface Job {\n id: string; // unique id for logging/tracking\n type: JobType;\n name: string;\n entryPoint: string;\n gateConfig: CheckGateConfig | LoadedReviewGateConfig;\n workingDirectory: string;\n}\n\n/** Check if a gate should run in the current environment. */\nfunction shouldRunGate(\n gateConfig: { run_in_ci?: boolean; run_locally?: boolean },\n isCI: boolean,\n): boolean {\n if (isCI && !gateConfig.run_in_ci) return false;\n if (!(isCI || gateConfig.run_locally)) return false;\n return true;\n}\n\nexport class JobGenerator {\n constructor(private config: LoadedConfig) {}\n\n generateJobs(expandedEntryPoints: ExpandedEntryPoint[]): Job[] {\n const jobs: Job[] = [];\n const seenJobs = new Set<string>();\n const isCI =\n process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';\n\n for (const ep of expandedEntryPoints) {\n this.collectCheckJobs(ep, isCI, seenJobs, jobs);\n this.collectReviewJobs(ep, isCI, jobs);\n }\n\n return jobs;\n }\n\n private collectCheckJobs(\n ep: ExpandedEntryPoint,\n isCI: boolean,\n seenJobs: Set<string>,\n jobs: Job[],\n ): void {\n if (!ep.config.checks) return;\n\n for (const checkName of ep.config.checks) {\n const checkConfig = this.config.checks[checkName];\n if (!checkConfig) {\n console.warn(\n `Warning: Check gate '${checkName}' configured in entry point '${ep.path}' but not found in checks definitions.`,\n );\n continue;\n }\n\n if (!shouldRunGate(checkConfig, isCI)) continue;\n\n const workingDirectory =\n checkConfig.working_directory === 'entrypoint'\n ? ep.path\n : checkConfig.working_directory || ep.path;\n const jobKey = `check:${checkName}:${workingDirectory}`;\n\n if (seenJobs.has(jobKey)) continue;\n seenJobs.add(jobKey);\n\n jobs.push({\n id: `check:${workingDirectory}:${checkName}`,\n type: 'check',\n name: checkName,\n entryPoint: ep.path,\n gateConfig: checkConfig,\n workingDirectory,\n });\n }\n }\n\n private collectReviewJobs(\n ep: ExpandedEntryPoint,\n isCI: boolean,\n jobs: Job[],\n ): void {\n if (!ep.config.reviews) return;\n\n for (const reviewName of ep.config.reviews) {\n const reviewConfig = this.config.reviews[reviewName];\n if (!reviewConfig) {\n console.warn(\n `Warning: Review gate '${reviewName}' configured in entry point '${ep.path}' but not found in reviews definitions.`,\n );\n continue;\n }\n\n if (!shouldRunGate(reviewConfig, isCI)) continue;\n\n jobs.push({\n id: `review:${ep.path}:${reviewName}`,\n type: 'review',\n name: reviewName,\n entryPoint: ep.path,\n gateConfig: reviewConfig,\n workingDirectory: ep.path,\n });\n }\n }\n}\n",
|
|
15
15
|
"import { exec } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport type { LoadedCheckGateConfig } from '../config/types.js';\nimport { MAX_BUFFER_BYTES } from '../constants.js';\nimport { resolveCheckCommand } from './resolve-check-command.js';\nimport type { GateResult } from './result.js';\n\nconst execAsync = promisify(exec);\n\nexport class CheckGateExecutor {\n async execute(\n jobId: string,\n config: LoadedCheckGateConfig,\n workingDirectory: string,\n logger: (output: string) => Promise<void>,\n options?: { baseBranch?: string; isRerun?: boolean },\n ): Promise<GateResult> {\n const startTime = Date.now();\n\n const command = resolveCheckCommand(config, options);\n\n try {\n await logger(\n `[${new Date().toISOString()}] Starting check: ${config.name}\\n`,\n );\n await logger(`Executing command: ${command}\\n`);\n await logger(`Working directory: ${workingDirectory}\\n\\n`);\n\n const { stdout, stderr } = await execAsync(command, {\n cwd: workingDirectory,\n timeout: config.timeout ? config.timeout * 1000 : undefined,\n maxBuffer: MAX_BUFFER_BYTES,\n });\n\n if (stdout) await logger(stdout);\n if (stderr) await logger(`\\nSTDERR:\\n${stderr}`);\n\n const result: GateResult = {\n jobId,\n status: 'pass',\n duration: Date.now() - startTime,\n message: 'Command exited with code 0',\n };\n\n await logger(`Result: ${result.status} - ${result.message}\\n`);\n return result;\n } catch (error: unknown) {\n const err = error as {\n stdout?: string;\n stderr?: string;\n message?: string;\n signal?: string;\n code?: number;\n };\n if (err.stdout) await logger(err.stdout);\n if (err.stderr) await logger(`\\nSTDERR:\\n${err.stderr}`);\n\n await logger(`\\nCommand failed: ${err.message}`);\n\n // If it's a timeout\n if (err.signal === 'SIGTERM' && config.timeout) {\n const result: GateResult = {\n jobId,\n status: 'fail',\n duration: Date.now() - startTime,\n message: `Timed out after ${config.timeout}s`,\n fixInstructions: config.fixInstructionsContent,\n fixWithSkill: config.fixWithSkill,\n };\n await logger(`Result: ${result.status} - ${result.message}\\n`);\n await this.logFixInfo(config, logger);\n return result;\n }\n\n // If it's a non-zero exit code\n if (typeof err.code === 'number') {\n const result: GateResult = {\n jobId,\n status: 'fail',\n duration: Date.now() - startTime,\n message: `Exited with code ${err.code}`,\n fixInstructions: config.fixInstructionsContent,\n fixWithSkill: config.fixWithSkill,\n };\n await logger(`Result: ${result.status} - ${result.message}\\n`);\n await this.logFixInfo(config, logger);\n return result;\n }\n\n // Other errors\n const result: GateResult = {\n jobId,\n status: 'error',\n duration: Date.now() - startTime,\n message: err.message || 'Unknown error',\n fixInstructions: config.fixInstructionsContent,\n fixWithSkill: config.fixWithSkill,\n };\n await logger(`Result: ${result.status} - ${result.message}\\n`);\n await this.logFixInfo(config, logger);\n return result;\n }\n }\n\n private async logFixInfo(\n config: LoadedCheckGateConfig,\n logger: (output: string) => Promise<void>,\n ): Promise<void> {\n if (config.fixInstructionsContent) {\n await logger(\n `\\n--- Fix Instructions ---\\n${config.fixInstructionsContent}\\n`,\n );\n }\n if (config.fixWithSkill) {\n await logger(`\\n--- Fix Skill: ${config.fixWithSkill} ---\\n`);\n }\n }\n}\n",
|
|
16
16
|
"/** Maximum buffer size for child process output (10 MB). */\nexport const MAX_BUFFER_BYTES = 10 * 1024 * 1024;\n",
|
|
17
17
|
"import type { LoadedCheckGateConfig } from '../config/types.js';\n\n/**\n * Resolves which command to execute for a check gate, selecting rerun_command\n * when in rerun mode and performing variable substitution.\n */\nexport function resolveCheckCommand(\n config: Pick<LoadedCheckGateConfig, 'command' | 'rerun_command'>,\n options?: { baseBranch?: string; isRerun?: boolean },\n): string {\n const rawCommand =\n options?.isRerun && config.rerun_command\n ? config.rerun_command\n : config.command;\n let result = rawCommand;\n const baseBranch = options?.baseBranch;\n if (baseBranch) {\n result = result.replace(/\\$\\{BASE_BRANCH\\}/g, () => baseBranch);\n }\n return result;\n}\n",
|
|
18
18
|
"import { type ChildProcess, spawn } from 'node:child_process';\nimport type { FileHandle } from 'node:fs/promises';\nimport fs from 'node:fs/promises';\n\nexport interface CLIAdapterHealth {\n available: boolean;\n status: 'healthy' | 'missing' | 'unhealthy';\n message?: string;\n}\n\n/**\n * Collects stderr from a child process and returns a getter for the accumulated output.\n * Also forwards each chunk to the optional onOutput callback.\n */\nexport function collectStderr(\n child: ChildProcess,\n onOutput?: (text: string) => void,\n): () => string {\n const chunks: string[] = [];\n child.stderr?.on('data', (data: Buffer) => {\n const text = data.toString();\n chunks.push(text);\n onOutput?.(text);\n });\n return () => chunks.join('');\n}\n\n/**\n * Builds an Error for a non-zero process exit, including stdout and stderr if available.\n * Both stdout and stderr are included to ensure usage limit messages are captured\n * regardless of which stream the CLI writes them to.\n */\nexport function processExitError(\n code: number | null,\n getStderr: () => string,\n getStdout?: () => string,\n): Error {\n const stderr = getStderr();\n const stdout = getStdout?.() ?? '';\n const output = [stdout, stderr].filter(Boolean).join('\\n');\n return new Error(\n `Process exited with code ${code}${output ? `\\n${output}` : ''}`,\n );\n}\n\nexport async function runStreamingCommand(opts: {\n command: string;\n args: string[];\n tmpFile: string;\n timeoutMs?: number;\n onOutput?: (chunk: string) => void;\n cleanup: () => Promise<void>;\n env?: NodeJS.ProcessEnv;\n}): Promise<string> {\n return new Promise((resolve, reject) => {\n const chunks: string[] = [];\n const inputStream = fs.open(opts.tmpFile, 'r').then((handle) => {\n const stream = handle.createReadStream();\n return { stream, handle };\n });\n\n inputStream\n .then(({ stream, handle }) => {\n const child = spawn(opts.command, opts.args, {\n stdio: ['pipe', 'pipe', 'pipe'],\n env: opts.env,\n });\n\n stream.pipe(child.stdin);\n\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n if (opts.timeoutMs) {\n timeoutId = setTimeout(() => {\n child.kill('SIGTERM');\n reject(new Error('Command timed out'));\n }, opts.timeoutMs);\n }\n\n child.stdout.on('data', (data: Buffer) => {\n const chunk = data.toString();\n chunks.push(chunk);\n opts.onOutput?.(chunk);\n });\n\n const getStderr = collectStderr(child, opts.onOutput);\n\n child.on('close', (code) => {\n void finalizeProcessClose({\n code,\n timeoutId,\n handle,\n cleanup: opts.cleanup,\n chunks,\n getStderr,\n resolve,\n reject,\n });\n });\n\n child.on('error', async (err) => {\n if (timeoutId) clearTimeout(timeoutId);\n try {\n await handle.close();\n } catch {\n /* ignore */\n }\n try {\n await opts.cleanup();\n } catch {\n /* ignore */\n }\n reject(err);\n });\n })\n .catch(async (err) => {\n try {\n await opts.cleanup();\n } catch {\n /* ignore */\n }\n reject(err);\n });\n });\n}\n\nexport async function finalizeProcessClose(opts: {\n code: number | null;\n timeoutId?: ReturnType<typeof setTimeout>;\n handle: FileHandle;\n cleanup: () => Promise<void>;\n chunks: string[];\n getStderr: () => string;\n resolve: (value: string) => void;\n reject: (error: Error) => void;\n}): Promise<void> {\n if (opts.timeoutId) clearTimeout(opts.timeoutId);\n await opts.handle.close().catch(() => {});\n try {\n await opts.cleanup();\n } catch {\n /* ignore cleanup errors during finalization */\n }\n\n if (opts.code === 0 || opts.code === null) {\n opts.resolve(opts.chunks.join(''));\n } else {\n opts.reject(\n processExitError(opts.code, opts.getStderr, () => opts.chunks.join('')),\n );\n }\n}\n\nexport function isUsageLimit(output: string): boolean {\n const lower = output.toLowerCase();\n return (\n lower.includes('usage limit') ||\n lower.includes('quota exceeded') ||\n lower.includes('quota will reset') ||\n lower.includes('credit balance is too low') ||\n lower.includes('out of extra usage') ||\n lower.includes('out of usage')\n );\n}\n\nexport interface CLIAdapter {\n name: string;\n isAvailable(): Promise<boolean>;\n checkHealth(): Promise<CLIAdapterHealth>;\n execute(opts: {\n prompt: string;\n diff: string;\n model?: string;\n timeoutMs?: number;\n /** Optional callback for real-time output streaming */\n onOutput?: (chunk: string) => void;\n /** Whether to allow tool use for this adapter. Defaults to true. */\n allowToolUse?: boolean;\n /** Thinking budget level (off/low/medium/high). */\n thinkingBudget?: string;\n }): Promise<string>;\n /**\n * Returns the project-scoped command directory path (relative to project root).\n * Returns null if the CLI only supports user-level commands.\n */\n getProjectCommandDir(): string | null;\n /**\n * Returns the user-level command directory path (absolute path).\n * Returns null if the CLI doesn't support user-level commands.\n */\n getUserCommandDir(): string | null;\n /**\n * Returns the project-scoped skill directory path (relative to project root).\n * Returns null if the CLI doesn't support the skills model.\n */\n getProjectSkillDir(): string | null;\n /**\n * Returns the user-level skill directory path (absolute path).\n * Returns null if the CLI doesn't support the skills model.\n */\n getUserSkillDir(): string | null;\n /**\n * Returns the command file extension used by this CLI.\n */\n getCommandExtension(): string;\n /**\n * Returns true if this adapter can use symlinks (same format as source Markdown).\n */\n canUseSymlink(): boolean;\n /**\n * Transforms gauntlet command content to this CLI's format.\n * The source content is always Markdown with YAML frontmatter.\n */\n transformCommand(markdownContent: string): string;\n /**\n * Returns true if this CLI supports hooks (stop hook, start hook).\n */\n supportsHooks(): boolean;\n}\n",
|
|
19
|
-
"import { exec } from 'node:child_process';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { promisify } from 'node:util';\nimport { GAUNTLET_STOP_HOOK_ACTIVE_ENV } from '../commands/stop-hook.js';\nimport { MAX_BUFFER_BYTES } from '../constants.js';\nimport { getDebugLogger } from '../utils/debug-log.js';\nimport { type CLIAdapter, runStreamingCommand } from './shared.js';\nimport { CLAUDE_THINKING_TOKENS } from './thinking-budget.js';\n\nconst execAsync = promisify(exec);\n\n// ─── OTel Usage Types ────────────────────────────────────────────────────────\n\ninterface OtelUsage {\n cost?: number;\n input?: number;\n output?: number;\n cacheRead?: number;\n cacheCreation?: number;\n toolCalls?: number;\n toolContentBytes?: number;\n apiRequests?: number;\n}\n\n// ─── O(n) Line-Based OTel Block Scanner ──────────────────────────────────────\n// Replaces regex-based block detection to avoid catastrophic backtracking\n// on large outputs (~400KB+). Single-pass, string-aware brace tracking.\n\nexport interface ScanResult {\n metricBlocks: string[];\n logBlocks: string[];\n cleaned: string;\n}\n\n/** Strip backslash-escaped characters and quoted strings, then count net brace depth. */\nexport function countBraceChange(line: string): number {\n // Remove escaped characters, then quoted strings, leaving only structural chars\n const stripped = line\n .replace(/\\\\./g, '')\n .replace(/\"[^\"]*\"/g, '')\n .replace(/'[^']*'/g, '');\n let depth = 0;\n for (const ch of stripped) {\n if (ch === '{') depth++;\n else if (ch === '}') depth--;\n }\n return depth;\n}\n\n/** Classify a captured block as metric, log, or neither. */\nexport function classifyBlock(block: string): 'metric' | 'log' | 'other' {\n if (\n block.includes('descriptor:') &&\n block.includes('dataPointType:') &&\n block.includes('dataPoints:')\n ) {\n return 'metric';\n }\n if (block.includes('resource:') && /body:\\s*'claude_code\\.\\w+'/.test(block)) {\n return 'log';\n }\n return 'other';\n}\n\n/** Check if a line starts a brace block (standalone `{` or `[otel] {`). */\nfunction isBlockStart(line: string): boolean {\n const trimmed = line.trimStart();\n return (\n trimmed === '{' || (trimmed.startsWith('[otel]') && trimmed.includes('{'))\n );\n}\n\n/** Route a completed block into the correct bucket. */\nfunction routeBlock(\n blockLines: string[],\n metricBlocks: string[],\n logBlocks: string[],\n cleanedLines: string[],\n): void {\n const block = blockLines.join('\\n');\n const kind = classifyBlock(block);\n if (kind === 'metric') metricBlocks.push(block);\n else if (kind === 'log') logBlocks.push(block);\n else cleanedLines.push(...blockLines);\n}\n\n/**\n * Single-pass line scanner that extracts OTel metric and log blocks from raw output.\n * Returns classified blocks and cleaned output with OTel blocks removed.\n */\nexport function scanOtelBlocks(raw: string): ScanResult {\n const lines = raw.split('\\n');\n const metricBlocks: string[] = [];\n const logBlocks: string[] = [];\n const cleanedLines: string[] = [];\n\n let blockLines: string[] | null = null;\n let depth = 0;\n\n for (const line of lines) {\n if (blockLines === null) {\n if (!isBlockStart(line)) {\n cleanedLines.push(line);\n continue;\n }\n blockLines = [line];\n depth = countBraceChange(line);\n } else {\n blockLines.push(line);\n depth += countBraceChange(line);\n }\n\n if (depth <= 0) {\n routeBlock(blockLines, metricBlocks, logBlocks, cleanedLines);\n blockLines = null;\n depth = 0;\n }\n }\n\n // If block never closed, restore lines to avoid data loss\n if (blockLines !== null) {\n cleanedLines.push(...blockLines);\n }\n\n return { metricBlocks, logBlocks, cleaned: cleanedLines.join('\\n') };\n}\n\n// ─── Metric Parsing (unchanged) ─────────────────────────────────────────────\n\nconst TOKEN_TYPES = ['input', 'output', 'cacheRead', 'cacheCreation'] as const;\n\nfunction parseCostBlock(block: string): number | undefined {\n const match = block.match(/value:\\s*([\\d.]+)/);\n return match?.[1] ? Number.parseFloat(match[1]) : undefined;\n}\n\nfunction parseTokenBlock(block: string): Partial<OtelUsage> {\n const result: Partial<OtelUsage> = {};\n const re = /type:\\s*\"(\\w+)\"[\\s\\S]*?value:\\s*(\\d+)(?:,|\\s*\\})/g;\n for (const match of block.matchAll(re)) {\n const type = match[1] as (typeof TOKEN_TYPES)[number] | undefined;\n const value = match[2];\n if (!(type && value)) continue;\n if (TOKEN_TYPES.includes(type)) {\n result[type] = Number.parseInt(value, 10);\n }\n }\n return result;\n}\n\nfunction parseOtelMetrics(blocks: string[]): OtelUsage {\n const usage: OtelUsage = {};\n for (const block of blocks) {\n const nameMatch = block.match(/name:\\s*\"([^\"]+)\"/);\n if (!nameMatch) continue;\n\n if (nameMatch[1] === 'claude_code.cost.usage') {\n usage.cost = parseCostBlock(block);\n } else if (nameMatch[1] === 'claude_code.token.usage') {\n Object.assign(usage, parseTokenBlock(block));\n }\n }\n return usage;\n}\n\n// ─── Log Event Parsing ──────────────────────────────────────────────────────\n\n/** Pre-compiled regexes for extracting single-quoted attribute values from OTel log blocks. */\nconst OTEL_ATTR_RE = {\n body: /body:\\s*'([^']*)'/,\n tool_result_size_bytes: /tool_result_size_bytes:\\s*'([^']*)'/,\n input_tokens: /input_tokens:\\s*'([^']*)'/,\n output_tokens: /output_tokens:\\s*'([^']*)'/,\n cache_read_tokens: /cache_read_tokens:\\s*'([^']*)'/,\n cache_creation_tokens: /cache_creation_tokens:\\s*'([^']*)'/,\n cost_usd: /cost_usd:\\s*'([^']*)'/,\n} as const;\n\n/** Maps OTel api_request attribute regexes to OtelUsage fields. */\nconst API_REQUEST_FIELDS: Array<[RegExp, keyof OtelUsage]> = [\n [OTEL_ATTR_RE.input_tokens, 'input'],\n [OTEL_ATTR_RE.output_tokens, 'output'],\n [OTEL_ATTR_RE.cache_read_tokens, 'cacheRead'],\n [OTEL_ATTR_RE.cache_creation_tokens, 'cacheCreation'],\n [OTEL_ATTR_RE.cost_usd, 'cost'],\n];\n\n/** Accumulate a tool_result log block into usage. */\nfunction accumulateToolResult(block: string, usage: OtelUsage): void {\n usage.toolCalls = (usage.toolCalls || 0) + 1;\n const bytes = block.match(OTEL_ATTR_RE.tool_result_size_bytes)?.[1];\n if (bytes !== undefined) {\n usage.toolContentBytes = (usage.toolContentBytes || 0) + Number(bytes);\n }\n}\n\n/** Accumulate an api_request log block into usage. */\nfunction accumulateApiRequest(block: string, usage: OtelUsage): void {\n usage.apiRequests = (usage.apiRequests || 0) + 1;\n for (const [re, field] of API_REQUEST_FIELDS) {\n const val = block.match(re)?.[1];\n if (val !== undefined) {\n usage[field] = (usage[field] || 0) + Number(val);\n }\n }\n}\n\n// ─── OTel Summary Formatting ────────────────────────────────────────────────\n\nconst OTEL_SUMMARY_FIELDS: Array<[keyof OtelUsage, string]> = [\n ['input', 'in'],\n ['output', 'out'],\n ['cacheRead', 'cacheRead'],\n ['cacheCreation', 'cacheWrite'],\n ['toolCalls', 'tool_calls'],\n ['toolContentBytes', 'tool_content_bytes'],\n ['apiRequests', 'api_requests'],\n];\n\nfunction formatOtelSummary(usage: OtelUsage): string | null {\n if (usage.cost === undefined && usage.input === undefined) return null;\n\n const parts: string[] = [];\n if (usage.cost !== undefined) parts.push(`cost=$${usage.cost.toFixed(4)}`);\n for (const [key, label] of OTEL_SUMMARY_FIELDS) {\n if (usage[key] !== undefined) parts.push(`${label}=${usage[key]}`);\n }\n\n return `[otel] ${parts.join(' ')}`;\n}\n\n// ─── Main Extraction (uses scanner instead of regexes) ──────────────────────\n\nexport function extractOtelMetrics(\n raw: string,\n onLog?: (msg: string) => void,\n): string {\n const { metricBlocks, logBlocks, cleaned } = scanOtelBlocks(raw);\n\n const usage = metricBlocks.length > 0 ? parseOtelMetrics(metricBlocks) : {};\n\n // Process log blocks for tool call and API request counts\n for (const block of logBlocks) {\n const body = block.match(OTEL_ATTR_RE.body)?.[1];\n if (body === 'claude_code.tool_result') {\n accumulateToolResult(block, usage);\n } else if (body === 'claude_code.api_request') {\n accumulateApiRequest(block, usage);\n }\n }\n\n const summary = formatOtelSummary(usage);\n if (summary) {\n onLog?.(`\\n${summary}\\n`);\n process.stderr.write(`${summary}\\n`);\n getDebugLogger()?.logTelemetry({ adapter: 'claude', summary });\n }\n\n return cleaned.trimEnd();\n}\n\n/** Safety wrapper: catches exceptions and returns raw output with a warning. */\nfunction safeExtractOtelMetrics(\n raw: string,\n onLog?: (msg: string) => void,\n): string {\n try {\n return extractOtelMetrics(raw, onLog);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n process.stderr.write(`[gauntlet] OTel extraction failed: ${msg}\\n`);\n return raw;\n }\n}\n\n// ─── OTel Environment ───────────────────────────────────────────────────────\n\n/** Build OTel environment overrides for console export. */\nfunction buildOtelEnv(): Record<string, string> {\n const env: Record<string, string> = {};\n if (!process.env.CLAUDE_CODE_ENABLE_TELEMETRY) {\n env.CLAUDE_CODE_ENABLE_TELEMETRY = '1';\n }\n if (!process.env.OTEL_METRICS_EXPORTER) {\n env.OTEL_METRICS_EXPORTER = 'console';\n }\n if (!process.env.OTEL_LOGS_EXPORTER) {\n env.OTEL_LOGS_EXPORTER = 'console';\n }\n return env;\n}\n\n// ─── Adapter ────────────────────────────────────────────────────────────────\n\nconst POST_PROCESS_BUFFER_MS = 30_000;\n\nexport class ClaudeAdapter implements CLIAdapter {\n name = 'claude';\n\n async isAvailable(): Promise<boolean> {\n try {\n await execAsync('which claude');\n return true;\n } catch {\n return false;\n }\n }\n\n async checkHealth(): Promise<{\n available: boolean;\n status: 'healthy' | 'missing' | 'unhealthy';\n message?: string;\n }> {\n const available = await this.isAvailable();\n if (!available) {\n return {\n available: false,\n status: 'missing',\n message: 'Command not found',\n };\n }\n\n return { available: true, status: 'healthy', message: 'Ready' };\n }\n\n getProjectCommandDir(): string | null {\n return '.claude/commands';\n }\n\n getUserCommandDir(): string | null {\n return path.join(os.homedir(), '.claude', 'commands');\n }\n\n getProjectSkillDir(): string | null {\n return '.claude/skills';\n }\n\n getUserSkillDir(): string | null {\n return path.join(os.homedir(), '.claude', 'skills');\n }\n\n getCommandExtension(): string {\n return '.md';\n }\n\n canUseSymlink(): boolean {\n return true;\n }\n\n transformCommand(markdownContent: string): string {\n return markdownContent;\n }\n\n supportsHooks(): boolean {\n return true;\n }\n\n async execute(opts: {\n prompt: string;\n diff: string;\n model?: string;\n timeoutMs?: number;\n onOutput?: (chunk: string) => void;\n allowToolUse?: boolean;\n thinkingBudget?: string;\n }): Promise<string> {\n const totalTimeout = (opts.timeoutMs ?? 300_000) + POST_PROCESS_BUFFER_MS;\n let timer: ReturnType<typeof setTimeout>;\n return Promise.race([\n this.doExecute(opts).finally(() => clearTimeout(timer)),\n new Promise<never>((_, reject) => {\n timer = setTimeout(\n () =>\n reject(\n new Error(\n 'Adapter execution timed out (post-processing exceeded limit)',\n ),\n ),\n totalTimeout,\n );\n }),\n ]);\n }\n\n private async doExecute(opts: {\n prompt: string;\n diff: string;\n model?: string;\n timeoutMs?: number;\n onOutput?: (chunk: string) => void;\n allowToolUse?: boolean;\n thinkingBudget?: string;\n }): Promise<string> {\n const fullContent = `${opts.prompt}\\n\\n--- DIFF ---\\n${opts.diff}`;\n\n const tmpFile = path.join(\n os.tmpdir(),\n `gauntlet-claude-${process.pid}-${Date.now()}.txt`,\n );\n await fs.writeFile(tmpFile, fullContent);\n\n const args = ['-p'];\n // Task is always allowed so Claude can dispatch pr-review-toolkit\n // subagents. allow_tool_use only controls file-reading tools\n // (Read, Glob, Grep) which increase token usage without improving\n // review quality.\n if (opts.allowToolUse === false) {\n args.push('--allowedTools', 'Task');\n } else {\n args.push('--allowedTools', 'Read,Glob,Grep,Task');\n }\n args.push('--max-turns', '25');\n\n const otelEnv = buildOtelEnv();\n const thinkingEnv: Record<string, string> = {};\n if (opts.thinkingBudget && opts.thinkingBudget in CLAUDE_THINKING_TOKENS) {\n thinkingEnv.MAX_THINKING_TOKENS = String(\n CLAUDE_THINKING_TOKENS[opts.thinkingBudget],\n );\n }\n\n const cleanup = () => fs.unlink(tmpFile).catch(() => {});\n // Exclude CLAUDECODE so the child doesn't hit the nesting guard\n const { CLAUDECODE: _, ...parentEnv } = process.env;\n const execEnv = {\n ...parentEnv,\n [GAUNTLET_STOP_HOOK_ACTIVE_ENV]: '1',\n ...otelEnv,\n ...thinkingEnv,\n };\n\n if (opts.onOutput) {\n const raw = await runStreamingCommand({\n command: 'claude',\n args,\n tmpFile,\n timeoutMs: opts.timeoutMs,\n cleanup,\n env: execEnv,\n });\n const cleaned = safeExtractOtelMetrics(raw, opts.onOutput);\n opts.onOutput(cleaned);\n return cleaned;\n }\n\n try {\n const cmd = `cat \"${tmpFile}\" | claude ${args.map((a) => (a === '' ? '\"\"' : a)).join(' ')}`;\n const { stdout } = await execAsync(cmd, {\n timeout: opts.timeoutMs,\n maxBuffer: MAX_BUFFER_BYTES,\n env: execEnv,\n });\n return safeExtractOtelMetrics(stdout);\n } finally {\n await cleanup();\n }\n }\n}\n",
|
|
19
|
+
"import { exec } from 'node:child_process';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { promisify } from 'node:util';\nimport { GAUNTLET_STOP_HOOK_ACTIVE_ENV } from '../commands/stop-hook.js';\nimport { MAX_BUFFER_BYTES } from '../constants.js';\nimport { getDebugLogger } from '../utils/debug-log.js';\nimport { type CLIAdapter, runStreamingCommand } from './shared.js';\nimport { CLAUDE_THINKING_TOKENS } from './thinking-budget.js';\n\nconst execAsync = promisify(exec);\n\n// ─── OTel Usage Types ────────────────────────────────────────────────────────\n\ninterface OtelUsage {\n cost?: number;\n input?: number;\n output?: number;\n cacheRead?: number;\n cacheCreation?: number;\n toolCalls?: number;\n toolContentBytes?: number;\n apiRequests?: number;\n}\n\n// ─── O(n) Line-Based OTel Block Scanner ──────────────────────────────────────\n// Replaces regex-based block detection to avoid catastrophic backtracking\n// on large outputs (~400KB+). Single-pass, string-aware brace tracking.\n\nexport interface ScanResult {\n metricBlocks: string[];\n logBlocks: string[];\n cleaned: string;\n}\n\n/** Strip backslash-escaped characters and quoted strings, then count net brace depth. */\nexport function countBraceChange(line: string): number {\n // Remove escaped characters, then quoted strings, leaving only structural chars\n const stripped = line\n .replace(/\\\\./g, '')\n .replace(/\"[^\"]*\"/g, '')\n .replace(/'[^']*'/g, '');\n let depth = 0;\n for (const ch of stripped) {\n if (ch === '{') depth++;\n else if (ch === '}') depth--;\n }\n return depth;\n}\n\n/** Classify a captured block as metric, log, or neither. */\nexport function classifyBlock(block: string): 'metric' | 'log' | 'other' {\n if (\n block.includes('descriptor:') &&\n block.includes('dataPointType:') &&\n block.includes('dataPoints:')\n ) {\n return 'metric';\n }\n if (\n block.includes('resource:') &&\n /body:\\s*['\"]claude_code\\.\\w+['\"]/.test(block)\n ) {\n return 'log';\n }\n return 'other';\n}\n\n/** Check if a line starts a brace block (standalone `{` or `[otel] {`). */\nfunction isBlockStart(line: string): boolean {\n const trimmed = line.trimStart();\n return (\n trimmed === '{' || (trimmed.startsWith('[otel]') && trimmed.includes('{'))\n );\n}\n\n/** Route a completed block into the correct bucket. */\nfunction routeBlock(\n blockLines: string[],\n metricBlocks: string[],\n logBlocks: string[],\n cleanedLines: string[],\n): void {\n const block = blockLines.join('\\n');\n const kind = classifyBlock(block);\n if (kind === 'metric') metricBlocks.push(block);\n else if (kind === 'log') logBlocks.push(block);\n else cleanedLines.push(...blockLines);\n}\n\n/**\n * Single-pass line scanner that extracts OTel metric and log blocks from raw output.\n * Returns classified blocks and cleaned output with OTel blocks removed.\n */\nexport function scanOtelBlocks(raw: string): ScanResult {\n const lines = raw.split('\\n');\n const metricBlocks: string[] = [];\n const logBlocks: string[] = [];\n const cleanedLines: string[] = [];\n\n let blockLines: string[] | null = null;\n let depth = 0;\n\n for (const line of lines) {\n if (blockLines === null) {\n if (!isBlockStart(line)) {\n cleanedLines.push(line);\n continue;\n }\n blockLines = [line];\n depth = countBraceChange(line);\n } else {\n blockLines.push(line);\n depth += countBraceChange(line);\n }\n\n if (depth <= 0) {\n routeBlock(blockLines, metricBlocks, logBlocks, cleanedLines);\n blockLines = null;\n depth = 0;\n }\n }\n\n // If block never closed, restore lines to avoid data loss\n if (blockLines !== null) {\n cleanedLines.push(...blockLines);\n }\n\n return { metricBlocks, logBlocks, cleaned: cleanedLines.join('\\n') };\n}\n\n// ─── Metric Parsing (unchanged) ─────────────────────────────────────────────\n\nconst TOKEN_TYPES = ['input', 'output', 'cacheRead', 'cacheCreation'] as const;\n\nfunction parseCostBlock(block: string): number | undefined {\n const match = block.match(/value:\\s*([\\d.]+)/);\n return match?.[1] ? Number.parseFloat(match[1]) : undefined;\n}\n\nfunction parseTokenBlock(block: string): Partial<OtelUsage> {\n const result: Partial<OtelUsage> = {};\n const re = /type:\\s*\"(\\w+)\"[\\s\\S]*?value:\\s*(\\d+)(?:,|\\s*\\})/g;\n for (const match of block.matchAll(re)) {\n const type = match[1] as (typeof TOKEN_TYPES)[number] | undefined;\n const value = match[2];\n if (!(type && value)) continue;\n if (TOKEN_TYPES.includes(type)) {\n result[type] = Number.parseInt(value, 10);\n }\n }\n return result;\n}\n\nfunction parseOtelMetrics(blocks: string[]): OtelUsage {\n const usage: OtelUsage = {};\n for (const block of blocks) {\n const nameMatch = block.match(/name:\\s*\"([^\"]+)\"/);\n if (!nameMatch) continue;\n\n if (nameMatch[1] === 'claude_code.cost.usage') {\n usage.cost = parseCostBlock(block);\n } else if (nameMatch[1] === 'claude_code.token.usage') {\n Object.assign(usage, parseTokenBlock(block));\n }\n }\n return usage;\n}\n\n// ─── Log Event Parsing ──────────────────────────────────────────────────────\n\n/** Pre-compiled regexes for extracting quoted attribute values from OTel log blocks. */\nconst OTEL_ATTR_RE = {\n body: /body:\\s*['\"]([^'\"]*)['\"]/,\n tool_result_size_bytes: /tool_result_size_bytes:\\s*['\"]([^'\"]*)['\"]/,\n input_tokens: /input_tokens:\\s*['\"]([^'\"]*)['\"]/,\n output_tokens: /output_tokens:\\s*['\"]([^'\"]*)['\"]/,\n cache_read_tokens: /cache_read_tokens:\\s*['\"]([^'\"]*)['\"]/,\n cache_creation_tokens: /cache_creation_tokens:\\s*['\"]([^'\"]*)['\"]/,\n cost_usd: /cost_usd:\\s*['\"]([^'\"]*)['\"]/,\n} as const;\n\n/** Maps OTel api_request attribute regexes to OtelUsage fields. */\nconst API_REQUEST_FIELDS: Array<[RegExp, keyof OtelUsage]> = [\n [OTEL_ATTR_RE.input_tokens, 'input'],\n [OTEL_ATTR_RE.output_tokens, 'output'],\n [OTEL_ATTR_RE.cache_read_tokens, 'cacheRead'],\n [OTEL_ATTR_RE.cache_creation_tokens, 'cacheCreation'],\n [OTEL_ATTR_RE.cost_usd, 'cost'],\n];\n\n/** Accumulate a tool_result log block into usage. */\nfunction accumulateToolResult(block: string, usage: OtelUsage): void {\n usage.toolCalls = (usage.toolCalls || 0) + 1;\n const bytes = block.match(OTEL_ATTR_RE.tool_result_size_bytes)?.[1];\n if (bytes !== undefined) {\n usage.toolContentBytes = (usage.toolContentBytes || 0) + Number(bytes);\n }\n}\n\n/** Accumulate an api_request log block into usage. */\nfunction accumulateApiRequest(block: string, usage: OtelUsage): void {\n usage.apiRequests = (usage.apiRequests || 0) + 1;\n for (const [re, field] of API_REQUEST_FIELDS) {\n const val = block.match(re)?.[1];\n if (val !== undefined) {\n usage[field] = (usage[field] || 0) + Number(val);\n }\n }\n}\n\n// ─── OTel Summary Formatting ────────────────────────────────────────────────\n\nconst OTEL_SUMMARY_FIELDS: Array<[keyof OtelUsage, string]> = [\n ['input', 'in'],\n ['output', 'out'],\n ['cacheRead', 'cacheRead'],\n ['cacheCreation', 'cacheWrite'],\n ['toolCalls', 'tool_calls'],\n ['toolContentBytes', 'tool_content_bytes'],\n ['apiRequests', 'api_requests'],\n];\n\nfunction formatOtelSummary(usage: OtelUsage): string | null {\n if (usage.cost === undefined && usage.input === undefined) return null;\n\n const parts: string[] = [];\n if (usage.cost !== undefined) parts.push(`cost=$${usage.cost.toFixed(4)}`);\n for (const [key, label] of OTEL_SUMMARY_FIELDS) {\n if (usage[key] !== undefined) parts.push(`${label}=${usage[key]}`);\n }\n\n return `[otel] ${parts.join(' ')}`;\n}\n\n// ─── Main Extraction (uses scanner instead of regexes) ──────────────────────\n\nexport function extractOtelMetrics(\n raw: string,\n onLog?: (msg: string) => void,\n): string {\n const { metricBlocks, logBlocks, cleaned } = scanOtelBlocks(raw);\n\n const usage = metricBlocks.length > 0 ? parseOtelMetrics(metricBlocks) : {};\n\n // Process log blocks for tool call and API request counts\n for (const block of logBlocks) {\n const body = block.match(OTEL_ATTR_RE.body)?.[1];\n if (body === 'claude_code.tool_result') {\n accumulateToolResult(block, usage);\n } else if (body === 'claude_code.api_request') {\n accumulateApiRequest(block, usage);\n }\n }\n\n const summary = formatOtelSummary(usage);\n if (summary) {\n onLog?.(`\\n${summary}\\n`);\n process.stderr.write(`${summary}\\n`);\n getDebugLogger()?.logTelemetry({ adapter: 'claude', summary });\n }\n\n return cleaned.trimEnd();\n}\n\n/** Safety wrapper: catches exceptions and returns raw output with a warning. */\nfunction safeExtractOtelMetrics(\n raw: string,\n onLog?: (msg: string) => void,\n): string {\n try {\n return extractOtelMetrics(raw, onLog);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n process.stderr.write(`[gauntlet] OTel extraction failed: ${msg}\\n`);\n return raw;\n }\n}\n\n// ─── OTel Environment ───────────────────────────────────────────────────────\n\n/** Build OTel environment overrides for console export. */\nfunction buildOtelEnv(): Record<string, string> {\n const env: Record<string, string> = {};\n if (!process.env.CLAUDE_CODE_ENABLE_TELEMETRY) {\n env.CLAUDE_CODE_ENABLE_TELEMETRY = '1';\n }\n if (!process.env.OTEL_METRICS_EXPORTER) {\n env.OTEL_METRICS_EXPORTER = 'console';\n }\n if (!process.env.OTEL_LOGS_EXPORTER) {\n env.OTEL_LOGS_EXPORTER = 'console';\n }\n return env;\n}\n\n// ─── Adapter ────────────────────────────────────────────────────────────────\n\nconst POST_PROCESS_BUFFER_MS = 30_000;\n\nexport class ClaudeAdapter implements CLIAdapter {\n name = 'claude';\n\n async isAvailable(): Promise<boolean> {\n try {\n await execAsync('which claude');\n return true;\n } catch {\n return false;\n }\n }\n\n async checkHealth(): Promise<{\n available: boolean;\n status: 'healthy' | 'missing' | 'unhealthy';\n message?: string;\n }> {\n const available = await this.isAvailable();\n if (!available) {\n return {\n available: false,\n status: 'missing',\n message: 'Command not found',\n };\n }\n\n return { available: true, status: 'healthy', message: 'Ready' };\n }\n\n getProjectCommandDir(): string | null {\n return '.claude/commands';\n }\n\n getUserCommandDir(): string | null {\n return path.join(os.homedir(), '.claude', 'commands');\n }\n\n getProjectSkillDir(): string | null {\n return '.claude/skills';\n }\n\n getUserSkillDir(): string | null {\n return path.join(os.homedir(), '.claude', 'skills');\n }\n\n getCommandExtension(): string {\n return '.md';\n }\n\n canUseSymlink(): boolean {\n return true;\n }\n\n transformCommand(markdownContent: string): string {\n return markdownContent;\n }\n\n supportsHooks(): boolean {\n return true;\n }\n\n async execute(opts: {\n prompt: string;\n diff: string;\n model?: string;\n timeoutMs?: number;\n onOutput?: (chunk: string) => void;\n allowToolUse?: boolean;\n thinkingBudget?: string;\n }): Promise<string> {\n const totalTimeout = (opts.timeoutMs ?? 300_000) + POST_PROCESS_BUFFER_MS;\n let timer: ReturnType<typeof setTimeout>;\n return Promise.race([\n this.doExecute(opts).finally(() => clearTimeout(timer)),\n new Promise<never>((_, reject) => {\n timer = setTimeout(\n () =>\n reject(\n new Error(\n 'Adapter execution timed out (post-processing exceeded limit)',\n ),\n ),\n totalTimeout,\n );\n }),\n ]);\n }\n\n private async doExecute(opts: {\n prompt: string;\n diff: string;\n model?: string;\n timeoutMs?: number;\n onOutput?: (chunk: string) => void;\n allowToolUse?: boolean;\n thinkingBudget?: string;\n }): Promise<string> {\n const fullContent = `${opts.prompt}\\n\\n--- DIFF ---\\n${opts.diff}`;\n\n const tmpFile = path.join(\n os.tmpdir(),\n `gauntlet-claude-${process.pid}-${Date.now()}.txt`,\n );\n await fs.writeFile(tmpFile, fullContent);\n\n const args = ['-p'];\n // Task is always allowed so Claude can dispatch pr-review-toolkit\n // subagents. allow_tool_use only controls file-reading tools\n // (Read, Glob, Grep) which increase token usage without improving\n // review quality.\n if (opts.allowToolUse === false) {\n args.push('--allowedTools', 'Task');\n } else {\n args.push('--allowedTools', 'Read,Glob,Grep,Task');\n }\n args.push('--max-turns', '25');\n\n const otelEnv = buildOtelEnv();\n const thinkingEnv: Record<string, string> = {};\n if (opts.thinkingBudget && opts.thinkingBudget in CLAUDE_THINKING_TOKENS) {\n thinkingEnv.MAX_THINKING_TOKENS = String(\n CLAUDE_THINKING_TOKENS[opts.thinkingBudget],\n );\n }\n\n const cleanup = () => fs.unlink(tmpFile).catch(() => {});\n // Exclude CLAUDECODE so the child doesn't hit the nesting guard\n const { CLAUDECODE: _, ...parentEnv } = process.env;\n const execEnv = {\n ...parentEnv,\n [GAUNTLET_STOP_HOOK_ACTIVE_ENV]: '1',\n ...otelEnv,\n ...thinkingEnv,\n };\n\n if (opts.onOutput) {\n const raw = await runStreamingCommand({\n command: 'claude',\n args,\n tmpFile,\n timeoutMs: opts.timeoutMs,\n cleanup,\n env: execEnv,\n });\n const cleaned = safeExtractOtelMetrics(raw, opts.onOutput);\n opts.onOutput(cleaned);\n return cleaned;\n }\n\n try {\n const cmd = `cat \"${tmpFile}\" | claude ${args.map((a) => (a === '' ? '\"\"' : a)).join(' ')}`;\n const { stdout } = await execAsync(cmd, {\n timeout: opts.timeoutMs,\n maxBuffer: MAX_BUFFER_BYTES,\n env: execEnv,\n });\n return safeExtractOtelMetrics(stdout);\n } finally {\n await cleanup();\n }\n }\n}\n",
|
|
20
20
|
"import fsSync from 'node:fs';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport type { Command } from 'commander';\nimport { loadGlobalConfig } from '../config/global.js';\nimport { ClaudeStopHookAdapter } from '../hooks/adapters/claude-stop-hook.js';\nimport { CursorStopHookAdapter } from '../hooks/adapters/cursor-stop-hook.js';\nimport type {\n StopHookAdapter,\n StopHookResult,\n} from '../hooks/adapters/types.js';\nimport {\n getDebugLogConfig,\n getLogDir,\n getStatusMessage,\n StopHookHandler,\n} from '../hooks/stop-hook-handler.js';\nimport {\n LOOP_THRESHOLD,\n recordBlockTimestamp,\n resetBlockTimestamps,\n} from '../hooks/stop-hook-state.js';\nimport {\n getCategoryLogger,\n initLogger,\n resetLogger,\n} from '../output/app-logger.js';\nimport {\n type GauntletStatus,\n isBlockingStatus,\n} from '../types/gauntlet-status.js';\nimport { DebugLogger, mergeDebugLogConfig } from '../utils/debug-log.js';\n\nconst STDIN_TIMEOUT_MS = 5000;\nexport const GAUNTLET_STOP_HOOK_ACTIVE_ENV = 'GAUNTLET_STOP_HOOK_ACTIVE';\n\nconst STOP_HOOK_MARKER_FILE = '.stop-hook-active';\nconst STOP_HOOK_TIMEOUT_MS = 5 * 60 * 1000;\nconst STALE_MARKER_MS = 10 * 60 * 1000;\nconst adapters: StopHookAdapter[] = [\n new CursorStopHookAdapter(),\n new ClaudeStopHookAdapter(),\n];\n\nasync function readStdin(): Promise<string> {\n return new Promise((resolve) => {\n let data = '';\n let resolved = false;\n\n const onEnd = () => cleanup(data.trim());\n const onError = () => cleanup('');\n\n const cleanup = (result: string) => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeout);\n process.stdin.removeListener('data', onData);\n process.stdin.removeListener('end', onEnd);\n process.stdin.removeListener('error', onError);\n resolve(result);\n }\n };\n\n const timeout = setTimeout(() => {\n cleanup(data.trim());\n }, STDIN_TIMEOUT_MS);\n\n const onData = (chunk: Buffer) => {\n data += chunk.toString();\n if (data.includes('\\n')) {\n cleanup(data.trim());\n }\n };\n\n process.stdin.on('data', onData);\n process.stdin.on('end', onEnd);\n process.stdin.on('error', onError);\n\n if (process.stdin.readableEnded) {\n cleanup(data.trim());\n }\n });\n}\n\nasync function fileExists(filePath: string): Promise<boolean> {\n try {\n await fs.stat(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction getStopHookLogger() {\n return getCategoryLogger('stop-hook');\n}\n\nfunction outputResult(adapter: StopHookAdapter, result: StopHookResult): void {\n console.log(adapter.formatOutput(result));\n}\n\nfunction createEarlyExitResult(\n status: GauntletStatus,\n options?: { intervalMinutes?: number; errorMessage?: string },\n): StopHookResult {\n return {\n status,\n shouldBlock: false,\n message: getStatusMessage(status, options),\n intervalMinutes: options?.intervalMinutes,\n };\n}\n\nasync function applyLoopDetection(\n result: StopHookResult,\n logDir: string,\n log: ReturnType<typeof getStopHookLogger>,\n debugLogger: DebugLogger | null,\n): Promise<StopHookResult> {\n if (!result.shouldBlock) {\n resetBlockTimestamps(logDir).catch(() => {});\n return result;\n }\n try {\n const timestamps = await recordBlockTimestamp(logDir);\n if (timestamps.length >= LOOP_THRESHOLD) {\n log.info(\n `Loop detected: ${timestamps.length} blocks within window — overriding to allow`,\n );\n await debugLogger?.logStopHook('allow', 'loop_detected');\n return {\n status: 'loop_detected',\n shouldBlock: false,\n message: getStatusMessage('loop_detected'),\n };\n }\n } catch (loopErr: unknown) {\n const errMsg = (loopErr as { message?: string }).message ?? 'unknown';\n log.warn(\n `Loop detection error: ${errMsg} — proceeding with original result`,\n );\n }\n return result;\n}\n\nexport function outputHookResponse(\n status: GauntletStatus,\n options?: {\n reason?: string;\n intervalMinutes?: number;\n errorMessage?: string;\n },\n): void {\n const claudeAdapter = new ClaudeStopHookAdapter();\n const shouldBlock = isBlockingStatus(status);\n const message = getStatusMessage(status, {\n intervalMinutes: options?.intervalMinutes,\n errorMessage: options?.errorMessage,\n });\n\n const result: StopHookResult = {\n status,\n shouldBlock,\n message,\n reason: options?.reason,\n intervalMinutes: options?.intervalMinutes,\n };\n\n console.log(claudeAdapter.formatOutput(result));\n}\n\nexport { getStatusMessage };\nexport type {\n GauntletStatus as StopHookStatus,\n StopHookResult as HookResponse,\n};\n\ninterface StopHookContext {\n adapter: StopHookAdapter;\n debugLogger: DebugLogger | null;\n loggerInitialized: boolean;\n markerFilePath: string | null;\n log: ReturnType<typeof getStopHookLogger>;\n}\n\nasync function initDebugLogger(\n logDir: string,\n projectCwd: string,\n log: ReturnType<typeof getStopHookLogger>,\n): Promise<DebugLogger | null> {\n try {\n const globalConfig = await loadGlobalConfig();\n const projectDebugLogConfig = await getDebugLogConfig(projectCwd);\n const debugLogConfig = mergeDebugLogConfig(\n projectDebugLogConfig,\n globalConfig.debug_log,\n );\n return new DebugLogger(logDir, debugLogConfig);\n } catch (initErr: unknown) {\n log.warn(\n `Debug logger init failed: ${(initErr as { message?: string }).message ?? 'unknown'}`,\n );\n return null;\n }\n}\n\nasync function checkMarkerFile(\n markerPath: string,\n debugLogger: DebugLogger | null,\n): Promise<StopHookResult | null> {\n if (!(await fileExists(markerPath))) return null;\n\n try {\n const stat = await fs.stat(markerPath);\n const ageMs = Date.now() - stat.mtimeMs;\n if (ageMs > STALE_MARKER_MS) {\n await debugLogger?.logStopHookEarlyExit(\n 'marker_stale',\n 'proceeding',\n `age=${Math.round(ageMs / 1000)}s threshold=${Math.round(STALE_MARKER_MS / 1000)}s`,\n );\n await fs.rm(markerPath, { force: true });\n return null;\n }\n await debugLogger?.logStopHookEarlyExit(\n 'marker_fresh',\n 'stop_hook_active',\n `age=${Math.round(ageMs / 1000)}s`,\n );\n return createEarlyExitResult('stop_hook_active');\n } catch (markerErr: unknown) {\n const errMsg = (markerErr as { message?: string }).message ?? 'unknown';\n await debugLogger?.logStopHookEarlyExit(\n 'marker_stat_error',\n 'stop_hook_active',\n `error=${errMsg}`,\n );\n return createEarlyExitResult('stop_hook_active');\n }\n}\n\n/** Diagnostic info captured early for later logging. */\ninterface StopHookDiagnostics {\n pid: number;\n ppid: number;\n envVarSet: boolean;\n processCwd: string;\n rawStdin: string;\n stdinSessionId: string | undefined;\n stdinStopHookActive: boolean | undefined;\n stdinCwd: string | undefined;\n stdinHookEventName: string | undefined;\n}\n\n/** Parse stdin input and populate diagnostics. Returns null on parse failure. */\nasync function parseStdinInput(\n ctx: StopHookContext,\n diagnostics: StopHookDiagnostics,\n): Promise<Record<string, unknown> | null> {\n const input = await readStdin();\n diagnostics.rawStdin = input;\n\n try {\n if (!input.trim()) return {};\n const parsed = JSON.parse(input) as Record<string, unknown>;\n diagnostics.stdinSessionId = parsed.session_id as string | undefined;\n diagnostics.stdinStopHookActive = parsed.stop_hook_active as\n | boolean\n | undefined;\n diagnostics.stdinCwd = parsed.cwd as string | undefined;\n diagnostics.stdinHookEventName = parsed.hook_event_name as\n | string\n | undefined;\n return parsed;\n } catch (parseErr: unknown) {\n const errMsg = (parseErr as { message?: string }).message ?? 'unknown';\n ctx.log.info(`Invalid hook input (${errMsg}), allowing stop`);\n await ctx.debugLogger?.logStopHookEarlyExit(\n 'stdin_parse_error',\n 'invalid_input',\n `error=${errMsg}`,\n );\n outputResult(ctx.adapter, createEarlyExitResult('invalid_input'));\n return null;\n }\n}\n\n/** Execute the gauntlet and produce a result. */\nasync function executeGauntlet(\n ctx: StopHookContext,\n projectCwd: string,\n logDir: string,\n diagnostics: StopHookDiagnostics,\n parsedInput: Record<string, unknown>,\n): Promise<void> {\n // biome-ignore lint/style/noNonNullAssertion: adapters array always has index 1\n ctx.adapter = adapters.find((a) => a.detect(parsedInput)) ?? adapters[1]!;\n const adapterCtx = ctx.adapter.parseInput(parsedInput);\n const skipResult = ctx.adapter.shouldSkipExecution(adapterCtx);\n if (skipResult) {\n await ctx.debugLogger?.logStopHookEarlyExit(\n 'adapter_skip',\n skipResult.status,\n `adapter=${ctx.adapter.name}`,\n );\n outputResult(ctx.adapter, skipResult);\n return;\n }\n\n ctx.log.info('Starting gauntlet validation...');\n if (adapterCtx.cwd !== process.cwd()) {\n const configPath = path.join(projectCwd, '.gauntlet', 'config.yml');\n if (!(await fileExists(configPath))) {\n ctx.log.info('No gauntlet config found at hook cwd, allowing stop');\n await ctx.debugLogger?.logStopHookEarlyExit(\n 'no_config_at_cwd',\n 'no_config',\n `cwd=${projectCwd}`,\n );\n outputResult(ctx.adapter, createEarlyExitResult('no_config'));\n return;\n }\n }\n\n await initLogger({ mode: 'stop-hook', logDir });\n ctx.loggerInitialized = true;\n const earlyLogDir = path.join(process.cwd(), await getLogDir(process.cwd()));\n if (logDir !== earlyLogDir) {\n ctx.debugLogger =\n (await initDebugLogger(logDir, projectCwd, ctx.log)) ?? ctx.debugLogger;\n }\n\n await ctx.debugLogger?.logStopHookDiagnostics(diagnostics);\n ctx.markerFilePath = path.join(logDir, STOP_HOOK_MARKER_FILE);\n try {\n await fs.writeFile(ctx.markerFilePath, `${process.pid}`, 'utf-8');\n } catch (mkErr: unknown) {\n const errMsg = (mkErr as { message?: string }).message ?? 'unknown';\n ctx.log.warn(`Failed to create marker file: ${errMsg}`);\n ctx.markerFilePath = null;\n }\n\n ctx.log.info('Running gauntlet gates...');\n const handler = new StopHookHandler(ctx.debugLogger ?? undefined);\n handler.setLogDir(logDir);\n let result: StopHookResult;\n try {\n result = await handler.execute(adapterCtx);\n } finally {\n await removeMarkerFile(ctx);\n }\n\n result = await applyLoopDetection(result, logDir, ctx.log, ctx.debugLogger);\n outputResult(ctx.adapter, result);\n await safeResetLogger(ctx);\n}\n\n/** Remove marker file if it exists. */\nasync function removeMarkerFile(ctx: StopHookContext): Promise<void> {\n if (!ctx.markerFilePath) return;\n try {\n await fs.rm(ctx.markerFilePath, { force: true });\n } catch (rmErr: unknown) {\n const errMsg = (rmErr as { message?: string }).message ?? 'unknown';\n ctx.log.warn(`Failed to remove marker file: ${errMsg}`);\n }\n ctx.markerFilePath = null;\n}\n\nasync function safeResetLogger(ctx: StopHookContext): Promise<void> {\n if (!ctx.loggerInitialized) return;\n try {\n await resetLogger();\n } catch (resetErr: unknown) {\n const resetMsg = (resetErr as { message?: string }).message ?? 'unknown';\n ctx.log.warn(`Logger reset failed: ${resetMsg}`);\n }\n}\n\n/** Handle errors in the stop hook action. */\nasync function handleStopHookError(\n ctx: StopHookContext,\n error: unknown,\n): Promise<void> {\n const err = error as { message?: string };\n const errorMessage = err.message || 'unknown error';\n ctx.log.error(`Stop hook error: ${errorMessage}`);\n await ctx.debugLogger?.logStopHook('allow', `error: ${errorMessage}`);\n outputResult(ctx.adapter, createEarlyExitResult('error', { errorMessage }));\n await removeMarkerFile(ctx);\n\n if (ctx.loggerInitialized) {\n try {\n await resetLogger();\n } catch (resetErr: unknown) {\n const resetMsg = (resetErr as { message?: string }).message ?? 'unknown';\n process.stderr.write(`stop-hook: logger reset failed: ${resetMsg}\\n`);\n }\n }\n}\n\nexport function registerStopHookCommand(program: Command): void {\n program\n .command('stop-hook')\n .description('Claude Code stop hook - validates gauntlet completion')\n .action(async () => {\n const ctx: StopHookContext = {\n adapter: adapters[1] as StopHookAdapter,\n debugLogger: null,\n loggerInitialized: false,\n markerFilePath: null,\n log: getStopHookLogger(),\n };\n\n const selfTimeout = setTimeout(() => {\n if (ctx.markerFilePath) {\n try {\n fsSync.rmSync(ctx.markerFilePath, { force: true });\n } catch {\n // Best-effort cleanup\n }\n }\n outputResult(\n ctx.adapter,\n createEarlyExitResult('error', {\n errorMessage: 'stop hook timed out',\n }),\n );\n process.exit(0);\n }, STOP_HOOK_TIMEOUT_MS);\n selfTimeout.unref();\n\n try {\n await handleStopHookAction(ctx);\n } catch (error: unknown) {\n await handleStopHookError(ctx, error);\n } finally {\n clearTimeout(selfTimeout);\n }\n });\n}\n\n/** Main stop-hook action logic, broken into phases. */\nasync function handleStopHookAction(ctx: StopHookContext): Promise<void> {\n // Phase 1: Fast exit checks\n if (process.env[GAUNTLET_STOP_HOOK_ACTIVE_ENV]) {\n outputResult(ctx.adapter, createEarlyExitResult('stop_hook_active'));\n return;\n }\n\n const quickConfigCheck = path.join(process.cwd(), '.gauntlet', 'config.yml');\n if (!(await fileExists(quickConfigCheck))) {\n outputResult(ctx.adapter, createEarlyExitResult('no_config'));\n return;\n }\n\n // Phase 2: Initialize debug logger\n const earlyLogDir = path.join(process.cwd(), await getLogDir(process.cwd()));\n ctx.debugLogger = await initDebugLogger(earlyLogDir, process.cwd(), ctx.log);\n await ctx.debugLogger?.logCommand('stop-hook', []);\n\n // Phase 3: Check marker file\n const markerLogDir = await getLogDir(process.cwd());\n const markerPath = path.join(\n process.cwd(),\n markerLogDir,\n STOP_HOOK_MARKER_FILE,\n );\n const markerResult = await checkMarkerFile(markerPath, ctx.debugLogger);\n if (markerResult) {\n outputResult(ctx.adapter, markerResult);\n return;\n }\n\n // Phase 4: Parse stdin\n const diagnostics: StopHookDiagnostics = {\n pid: process.pid,\n ppid: process.ppid,\n envVarSet: !!process.env[GAUNTLET_STOP_HOOK_ACTIVE_ENV],\n processCwd: process.cwd(),\n rawStdin: '',\n stdinSessionId: undefined,\n stdinStopHookActive: undefined,\n stdinCwd: undefined,\n stdinHookEventName: undefined,\n };\n\n const parsed = await parseStdinInput(ctx, diagnostics);\n if (parsed === null) return;\n const projectCwd = (parsed.cwd as string) || process.cwd();\n const logDir = path.join(projectCwd, await getLogDir(projectCwd));\n await executeGauntlet(ctx, projectCwd, logDir, diagnostics, parsed);\n}\n",
|
|
21
21
|
"import type {\n StopHookAdapter,\n StopHookContext,\n StopHookResult,\n} from './types.js';\n\n/**\n * Claude Code hook response format.\n */\ninterface ClaudeHookResponse {\n decision: 'block' | 'approve';\n reason?: string;\n stopReason?: string;\n systemMessage?: string;\n status: string;\n message?: string;\n}\n\n/**\n * Adapter for Claude Code stop hook protocol.\n *\n * Claude Code protocol:\n * - Input: { cwd, stop_hook_active, session_id, transcript_path, hook_event_name, permission_mode }\n * - Output: { decision: \"block\"|\"approve\", reason?, stopReason, systemMessage?, status, message }\n * - Block mechanism: decision: \"block\" with reason (fed back to Claude as prompt)\n * - Allow mechanism: decision: \"approve\"\n */\nexport class ClaudeStopHookAdapter implements StopHookAdapter {\n name = 'claude';\n\n /**\n * Detect if this adapter should handle the given input.\n * Claude Code doesn't send cursor_version, so we detect by absence.\n */\n detect(raw: Record<string, unknown>): boolean {\n // Claude Code doesn't send cursor_version\n return !('cursor_version' in raw);\n }\n\n /**\n * Parse Claude Code input into normalized context.\n */\n parseInput(raw: Record<string, unknown>): StopHookContext {\n return {\n cwd: (raw.cwd as string) ?? process.cwd(),\n isNestedHook: raw.stop_hook_active === true,\n sessionId: raw.session_id as string | undefined,\n rawInput: raw,\n };\n }\n\n /**\n * Get the block reason for a given result based on status.\n */\n private getBlockReason(result: StopHookResult): string | undefined {\n return result.reason;\n }\n\n /**\n * Format handler result into Claude Code protocol output.\n */\n formatOutput(result: StopHookResult): string {\n const blockReason = this.getBlockReason(result);\n const stopReason =\n result.shouldBlock && blockReason ? blockReason : result.message;\n\n const response: ClaudeHookResponse = {\n decision: result.shouldBlock ? 'block' : 'approve',\n status: result.status,\n };\n\n if (stopReason) response.stopReason = stopReason;\n if (result.message) {\n response.systemMessage = result.message;\n response.message = result.message;\n }\n if (result.shouldBlock && blockReason) {\n response.reason = blockReason;\n }\n\n return JSON.stringify(response);\n }\n\n /**\n * Check if execution should be skipped based on Claude-specific conditions.\n * Note: stop_hook_active from stdin is currently disabled in the main entry point\n * because Claude Code sends it after blocking twice, but we need to re-run.\n */\n shouldSkipExecution(_ctx: StopHookContext): StopHookResult | null {\n // The isNestedHook check is handled at the entry point level\n // via the marker file mechanism, not here.\n // This method is available for future protocol-specific skip conditions.\n return null;\n }\n}\n",
|
|
22
22
|
"import type {\n StopHookAdapter,\n StopHookContext,\n StopHookResult,\n} from './types.js';\n\n/**\n * Cursor hook response format.\n * - Empty object {} = allow stop (no feedback)\n * - { systemMessage: \"...\" } = allow stop with user-visible message\n * - { followup_message: \"...\" } = block stop and continue with message\n */\ninterface CursorHookResponse {\n followup_message?: string;\n systemMessage?: string;\n}\n\n/**\n * Default maximum loop count before allowing stop.\n * Cursor has built-in loop_limit (default 5, configurable in hooks.json),\n * but we provide defense-in-depth with our own check.\n */\nconst DEFAULT_MAX_LOOPS = 10;\n\n/**\n * Adapter for Cursor IDE stop hook protocol.\n *\n * Cursor protocol:\n * - Input: { status, loop_count, cursor_version, workspace_roots, conversation_id, ... }\n * - Output: { followup_message?: \"...\" } or {}\n * - Block mechanism: { followup_message: \"instructions\" } - continues agent with message\n * - Allow mechanism: {} (empty object) - allows stop\n * - Loop prevention: loop_count field (Cursor has built-in loop_limit)\n */\nexport class CursorStopHookAdapter implements StopHookAdapter {\n name = 'cursor';\n\n /**\n * Maximum loop count before forcing stop.\n * Can be configured via hooks.json loop_limit.\n */\n private maxLoops: number;\n\n constructor(maxLoops: number = DEFAULT_MAX_LOOPS) {\n this.maxLoops = maxLoops;\n }\n\n /**\n * Detect if this adapter should handle the given input.\n * Cursor sends cursor_version in hook input.\n */\n detect(raw: Record<string, unknown>): boolean {\n return 'cursor_version' in raw;\n }\n\n /**\n * Parse Cursor input into normalized context.\n */\n parseInput(raw: Record<string, unknown>): StopHookContext {\n const workspaceRoots = raw.workspace_roots;\n const loopCount = raw.loop_count as number | undefined;\n\n return {\n cwd:\n (Array.isArray(workspaceRoots) ? workspaceRoots[0] : null) ??\n process.cwd(),\n isNestedHook: false, // Cursor uses loop_count instead of nested hook flag\n loopCount,\n sessionId: raw.conversation_id as string | undefined,\n rawInput: raw,\n };\n }\n\n /**\n * Get the block message for a given result based on status.\n */\n private getBlockMessage(result: StopHookResult): string {\n return result.reason || result.message;\n }\n\n /**\n * Format handler result into Cursor protocol output.\n */\n formatOutput(result: StopHookResult): string {\n if (result.shouldBlock) {\n const response: CursorHookResponse = {\n followup_message: this.getBlockMessage(result),\n };\n return JSON.stringify(response);\n }\n\n // Include systemMessage for user feedback even when not blocking\n const response: CursorHookResponse = {\n ...(result.message ? { systemMessage: result.message } : {}),\n };\n return JSON.stringify(response);\n }\n\n /**\n * Check if execution should be skipped based on Cursor-specific conditions.\n * Returns early if loop_count exceeds threshold.\n */\n shouldSkipExecution(ctx: StopHookContext): StopHookResult | null {\n // Cursor has built-in loop_limit (default 5), but we can check here too\n // for defense-in-depth\n if (ctx.loopCount !== undefined && ctx.loopCount >= this.maxLoops) {\n return {\n status: 'retry_limit_exceeded',\n shouldBlock: false,\n message:\n 'Loop limit reached — run `agent-gauntlet clean` to archive and continue.',\n };\n }\n return null;\n }\n}\n",
|
|
@@ -39,12 +39,13 @@
|
|
|
39
39
|
"import { exec } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport { getCategoryLogger } from '../output/app-logger.js';\n\nconst log = getCategoryLogger('gate', 'review');\n\nconst execAsync = promisify(exec);\n\nimport { MAX_BUFFER_BYTES } from '../constants.js';\n\n// ── Diff Utilities ──────────────────────────────────────────────────\n\nexport function parseLines(stdout: string): string[] {\n return stdout\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n}\n\nexport function pathArg(entryPointPath: string): string {\n return ` -- ${quoteArg(entryPointPath)}`;\n}\n\nexport function quoteArg(value: string): string {\n return `\"${value.replace(/([\"\\\\$`])/g, '\\\\$1')}\"`;\n}\n\nexport async function execDiff(command: string): Promise<string> {\n try {\n const { stdout } = await execAsync(command, {\n maxBuffer: MAX_BUFFER_BYTES,\n });\n return stdout;\n } catch (error: unknown) {\n const err = error as { code?: number; stdout?: string };\n if (typeof err.code === 'number' && err.stdout) {\n return err.stdout;\n }\n throw error;\n }\n}\n\nexport async function untrackedDiff(entryPointPath: string): Promise<string> {\n const pArg = pathArg(entryPointPath);\n const { stdout } = await execAsync(\n `git ls-files --others --exclude-standard${pArg}`,\n { maxBuffer: MAX_BUFFER_BYTES },\n );\n const files = parseLines(stdout);\n const diffs: string[] = [];\n\n for (const file of files) {\n try {\n const diff = await execDiff(\n `git diff --no-index -- /dev/null ${quoteArg(file)}`,\n );\n if (diff.trim()) diffs.push(diff);\n } catch (error: unknown) {\n const err = error as { message?: string; stderr?: string };\n const msg = [err.message, err.stderr].filter(Boolean).join('\\n');\n if (\n msg.includes('Could not access') ||\n msg.includes('ENOENT') ||\n msg.includes('No such file')\n ) {\n continue;\n }\n throw error;\n }\n }\n\n return diffs.join('\\n');\n}\n\n// ── Top-level getDiff ───────────────────────────────────────────────\n\nexport async function getDiff(\n entryPointPath: string,\n baseBranch: string,\n options?: { commit?: string; uncommitted?: boolean; fixBase?: string },\n): Promise<string> {\n log.debug(\n `getDiff: entryPoint=${entryPointPath}, fixBase=${options?.fixBase ?? 'none'}, uncommitted=${options?.uncommitted ?? false}, commit=${options?.commit ?? 'none'}`,\n );\n\n if (options?.fixBase) {\n const result = await getFixBaseDiff(entryPointPath, options.fixBase);\n if (result !== null) return result;\n }\n\n if (options?.uncommitted) {\n return getUncommittedDiff(entryPointPath);\n }\n\n if (options?.commit) {\n return getCommitDiff(entryPointPath, options.commit);\n }\n\n const isCI =\n process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';\n return isCI\n ? getCIDiff(entryPointPath, baseBranch)\n : getLocalDiff(entryPointPath, baseBranch);\n}\n\n// ── Fix-base diff ───────────────────────────────────────────────────\n\nasync function getFixBaseDiff(\n entryPointPath: string,\n fixBase: string,\n): Promise<string | null> {\n if (!/^[a-f0-9]+$/.test(fixBase)) {\n throw new Error(`Invalid session ref: ${fixBase}`);\n }\n\n const pArg = pathArg(entryPointPath);\n try {\n const diff = await execDiff(`git diff ${fixBase}${pArg}`);\n\n const { stdout: untrackedStdout } = await execAsync(\n `git ls-files --others --exclude-standard${pArg}`,\n { maxBuffer: MAX_BUFFER_BYTES },\n );\n const currentUntracked = new Set(parseLines(untrackedStdout));\n\n const { stdout: snapshotFilesStdout } = await execAsync(\n `git ls-tree -r --name-only ${fixBase}${pArg}`,\n { maxBuffer: MAX_BUFFER_BYTES },\n );\n const snapshotFiles = new Set(parseLines(snapshotFilesStdout));\n\n const newUntracked = [...currentUntracked].filter(\n (f) => !snapshotFiles.has(f),\n );\n const newUntrackedDiffs = await collectUntrackedDiffs(newUntracked);\n\n const scopedDiff = [diff, ...newUntrackedDiffs].filter(Boolean).join('\\n');\n log.debug(\n `Scoped diff via fixBase: ${scopedDiff.split('\\n').length} lines`,\n );\n return scopedDiff;\n } catch (error) {\n log.warn(\n `Failed to compute diff against fixBase ${fixBase}, falling back to full uncommitted diff. ${error instanceof Error ? error.message : error}`,\n );\n return null;\n }\n}\n\nasync function collectUntrackedDiffs(files: string[]): Promise<string[]> {\n const diffs: string[] = [];\n for (const file of files) {\n try {\n const d = await execDiff(\n `git diff --no-index -- /dev/null ${quoteArg(file)}`,\n );\n if (d.trim()) diffs.push(d);\n } catch (error: unknown) {\n const err = error as { message?: string; stderr?: string };\n const msg = [err.message, err.stderr].filter(Boolean).join('\\n');\n if (\n !(\n msg.includes('Could not access') ||\n msg.includes('ENOENT') ||\n msg.includes('No such file')\n )\n ) {\n throw error;\n }\n }\n }\n return diffs;\n}\n\n// ── Uncommitted / commit / CI / local diff modes ────────────────────\n\nasync function getUncommittedDiff(entryPointPath: string): Promise<string> {\n log.debug(`Using full uncommitted diff (no fixBase)`);\n const pArg = pathArg(entryPointPath);\n const staged = await execDiff(`git diff --cached${pArg}`);\n const unstaged = await execDiff(`git diff${pArg}`);\n const untracked = await untrackedDiff(entryPointPath);\n return [staged, unstaged, untracked].filter(Boolean).join('\\n');\n}\n\nasync function getCommitDiff(\n entryPointPath: string,\n commit: string,\n): Promise<string> {\n if (!/^[a-f0-9]+$/i.test(commit)) {\n throw new Error(`Invalid commit ref: ${commit}`);\n }\n const pArg = pathArg(entryPointPath);\n try {\n return await execDiff(`git diff ${commit}^..${commit}${pArg}`);\n } catch (error: unknown) {\n const err = error as { message?: string; stderr?: string };\n if (\n err.message?.includes('unknown revision') ||\n err.stderr?.includes('unknown revision')\n ) {\n return await execDiff(`git diff --root ${commit}${pArg}`);\n }\n throw error;\n }\n}\n\nexport async function getCIDiff(\n entryPointPath: string,\n baseBranch: string,\n): Promise<string> {\n const baseRef = quoteArg(baseBranch);\n const headRef = process.env.GITHUB_SHA || 'HEAD';\n const pArg = pathArg(entryPointPath);\n\n try {\n return await execDiff(`git diff ${baseRef}...${quoteArg(headRef)}${pArg}`);\n } catch (_error) {\n return await execDiff(`git diff HEAD^...HEAD${pArg}`);\n }\n}\n\nexport async function getLocalDiff(\n entryPointPath: string,\n baseBranch: string,\n): Promise<string> {\n const pArg = pathArg(entryPointPath);\n const committed = await execDiff(\n `git diff ${quoteArg(baseBranch)}...HEAD${pArg}`,\n );\n const uncommitted = await execDiff(`git diff HEAD${pArg}`);\n const untracked = await untrackedDiff(entryPointPath);\n\n return [committed, uncommitted, untracked].filter(Boolean).join('\\n');\n}\n",
|
|
40
40
|
"export type DiffFileRange = Set<number>;\n\n/**\n * Parses a unified diff string into a map of filenames to sets of valid line numbers.\n * Valid line numbers are those that appear in the diff as added or modified lines.\n */\nexport function parseDiff(diff: string): Map<string, DiffFileRange> {\n return new DiffParser().parse(diff);\n}\n\nclass DiffParser {\n private fileRanges = new Map<string, DiffFileRange>();\n private currentFile: string | null = null;\n private currentRanges: DiffFileRange | null = null;\n private currentLineNumber = 0;\n\n parse(diff: string): Map<string, DiffFileRange> {\n const lines = diff.split('\\n');\n for (const line of lines) {\n this.processLine(line);\n }\n return this.fileRanges;\n }\n\n private processLine(line: string): void {\n if (this.tryParseFileHeader(line)) return;\n if (!(this.currentFile && this.currentRanges)) return;\n if (this.tryParseHunkHeader(line)) return;\n this.processContentLine(line);\n }\n\n private tryParseFileHeader(line: string): boolean {\n if (!line.startsWith('diff --git')) return false;\n\n const result = parseFileHeader(line);\n if (result) {\n this.currentFile = result;\n this.currentRanges = new Set<number>();\n this.fileRanges.set(this.currentFile, this.currentRanges);\n } else {\n this.currentFile = null;\n this.currentRanges = null;\n }\n return true;\n }\n\n private tryParseHunkHeader(line: string): boolean {\n if (!line.startsWith('@@')) return false;\n\n const newLine = parseHunkHeader(line);\n if (newLine !== null) {\n this.currentLineNumber = newLine;\n }\n return true;\n }\n\n private processContentLine(line: string): void {\n if (!this.currentRanges) return;\n\n if (line.startsWith('+')) {\n if (line.startsWith('+++ ') || line.startsWith('+++\\t')) return;\n this.currentRanges.add(this.currentLineNumber);\n this.currentLineNumber++;\n } else if (line.startsWith(' ')) {\n this.currentLineNumber++;\n }\n }\n}\n\nfunction parseFileHeader(line: string): string | null {\n const match = line.match(/^diff --git a\\/.+ b\\/(.+)$/);\n if (!match?.[1]) return null;\n const file = match[1];\n return file.startsWith('.git/') ? null : file;\n}\n\nfunction parseHunkHeader(line: string): number | null {\n const match = line.match(/@@ -\\d+(?:,\\d+)? \\+(\\d+)(?:,\\d+)? @@/);\n return match?.[1] ? parseInt(match[1], 10) : null;\n}\n\n/**\n * Checks if a violation is valid based on the parsed diff ranges.\n */\nexport function isValidViolationLocation(\n file: string,\n line: number | undefined,\n diffRanges: Map<string, DiffFileRange> | undefined,\n): boolean {\n // If no diff ranges provided (e.g. full file review), assume valid\n if (!diffRanges) return true;\n\n // Line is required for diff-scoped reviews\n if (line === undefined) return false;\n\n const validLines = diffRanges.get(file);\n if (!validLines) {\n // File not in diff\n return false;\n }\n\n return validLines.has(line);\n}\n",
|
|
41
41
|
"import type { LoadedReviewGateConfig } from '../config/types.js';\n\nexport { MAX_BUFFER_BYTES } from '../constants.js';\nexport const MAX_LOG_BUFFER_SIZE = 10000;\nexport const REVIEW_ADAPTER_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes\n\n/** Chars-per-token approximation for rough token estimates. */\nexport const CHARS_PER_TOKEN = 4;\n\nexport const JSON_SYSTEM_INSTRUCTION = `\nYou are in a read-only mode. You may read files in the repository to gather context.\nDo NOT attempt to modify files or run shell commands that change system state.\nDo NOT access files outside the repository root.\nDo NOT access the .git/ directory or read git history/commit information.\nUse your available file-reading and search tools to find information.\nIf the diff is insufficient or ambiguous, use your tools to read the full file content or related files.\n\nCRITICAL SCOPE RESTRICTIONS:\n- ONLY review the code changes shown in the diff below\n- DO NOT review commit history or existing code outside the diff\n- All violations MUST reference file paths and line numbers that appear IN THE DIFF\n- The \"file\" field must match a file from the diff\n- The \"line\" field must be within a changed region (lines starting with + in the diff)\n\nIMPORTANT: You must output ONLY a valid JSON object. Do not output any markdown text, explanations, or code blocks outside of the JSON.\nEach violation MUST include a \"priority\" field with one of: \"critical\", \"high\", \"medium\", \"low\".\nEach violation MUST include a \"status\" field set to \"new\".\n\nIf violations are found:\n{\n \"status\": \"fail\",\n \"violations\": [\n {\n \"file\": \"path/to/file.rb\",\n \"line\": 10,\n \"issue\": \"Description of the violation\",\n \"fix\": \"Suggestion on how to fix it\",\n \"priority\": \"high\",\n \"status\": \"new\"\n }\n ]\n}\n\nIf NO violations are found:\n{\n \"status\": \"pass\",\n \"message\": \"No problems found\"\n}\n`;\n\nexport type ReviewConfig = LoadedReviewGateConfig;\n\nexport interface ReviewJsonOutput {\n status: 'pass' | 'fail';\n message?: string;\n violations?: Array<{\n file: string;\n line: number | string;\n issue: string;\n fix?: string;\n priority: 'critical' | 'high' | 'medium' | 'low';\n status: 'new' | 'fixed' | 'skipped';\n result?: string | null;\n }>;\n}\n\nexport interface ReviewOutputEntry {\n adapter: string;\n reviewIndex: number;\n duration?: number;\n status: 'pass' | 'fail' | 'error';\n message: string;\n json?: ReviewJsonOutput;\n skipped?: Array<{\n file: string;\n line: number | string;\n issue: string;\n result?: string | null;\n }>;\n}\n\nexport interface SkippedSlotOutput {\n adapter: string;\n reviewIndex: number;\n status: 'skipped_prior_pass';\n message: string;\n passIteration: number;\n}\n\nexport interface ReviewAssignment {\n adapter: string;\n reviewIndex: number;\n skip?: boolean;\n skipReason?: string;\n passIteration?: number;\n}\n\nexport interface EvaluationResult {\n status: 'pass' | 'fail' | 'error';\n message: string;\n json?: ReviewJsonOutput;\n filteredCount?: number;\n}\n\nexport interface SingleReviewResult {\n adapter: string;\n reviewIndex: number;\n duration: number;\n evaluation: {\n status: 'pass' | 'fail' | 'error';\n message: string;\n json?: ReviewJsonOutput;\n skipped?: Array<{\n file: string;\n line: number | string;\n issue: string;\n result?: string | null;\n }>;\n };\n}\n",
|
|
42
|
-
"import { getCategoryLogger } from '../output/app-logger.js';\nimport {\n type DiffFileRange,\n isValidViolationLocation,\n parseDiff,\n} from '../utils/diff-parser.js';\nimport { markAdapterUnhealthy } from '../utils/execution-state.js';\nimport type { PreviousViolation } from './result.js';\nimport { writeJsonResult } from './review-agg.js';\nimport type {\n EvaluationResult,\n ReviewConfig,\n ReviewJsonOutput,\n} from './review-types.js';\nimport { CHARS_PER_TOKEN, JSON_SYSTEM_INSTRUCTION } from './review-types.js';\n\nconst log = getCategoryLogger('gate', 'review');\n\n// ── Stats Logging ───────────────────────────────────────────────────\n\nexport function logDiffStats(\n diff: string,\n mainLogger: (msg: string) => Promise<void>,\n): void {\n const diffLines = diff.split('\\n').length;\n const diffChars = diff.length;\n const diffEstTokens = Math.ceil(diffChars / CHARS_PER_TOKEN);\n const diffFileRanges = parseDiff(diff);\n const diffFiles = diffFileRanges.size;\n const msg = `[diff-stats] files=${diffFiles} lines=${diffLines} chars=${diffChars} est_tokens=${diffEstTokens}`;\n log.debug(msg);\n mainLogger(`${msg}\\n`);\n}\n\nexport function logInputStats(\n prompt: string,\n diff: string,\n adapterLogger: (msg: string) => Promise<void>,\n): void {\n const promptChars = prompt.length;\n const diffChars = diff.length;\n const totalInputChars = promptChars + diffChars;\n const promptEstTokens = Math.ceil(promptChars / CHARS_PER_TOKEN);\n const diffEstTokens = Math.ceil(diffChars / CHARS_PER_TOKEN);\n const totalEstTokens = promptEstTokens + diffEstTokens;\n const msg = `[input-stats] prompt_chars=${promptChars} diff_chars=${diffChars} total_chars=${totalInputChars} prompt_est_tokens=${promptEstTokens} diff_est_tokens=${diffEstTokens} total_est_tokens=${totalEstTokens}`;\n adapterLogger(`${msg}\\n`);\n}\n\n// ── Prompt Building ─────────────────────────────────────────────────\n\nexport function buildReviewPrompt(\n config: ReviewConfig,\n previousViolations: PreviousViolation[] = [],\n): string {\n const baseContent = config.promptContent || '';\n\n if (previousViolations.length > 0) {\n return (\n baseContent +\n '\\n\\n' +\n buildPreviousFailuresSection(previousViolations) +\n '\\n' +\n JSON_SYSTEM_INSTRUCTION\n );\n }\n\n return `${baseContent}\\n${JSON_SYSTEM_INSTRUCTION}`;\n}\n\nexport function buildPreviousFailuresSection(\n violations: PreviousViolation[],\n): string {\n const toVerify = violations.filter((v) => v.status === 'fixed');\n const unaddressed = violations.filter((v) => v.status === 'new' || !v.status);\n const affectedFiles = [...new Set(violations.map((v) => v.file))];\n const lines: string[] = [];\n\n lines.push(buildRerunHeader());\n\n if (toVerify.length === 0) {\n lines.push('(No violations were marked as FIXED for verification)\\n');\n } else {\n for (const [i, v] of toVerify.entries()) {\n lines.push(`${i + 1}. ${v.file}:${v.line} - ${v.issue}`);\n if (v.fix) lines.push(` Suggested fix: ${v.fix}`);\n if (v.result) lines.push(` Agent result: ${v.result}`);\n lines.push('');\n }\n }\n\n if (unaddressed.length > 0) {\n lines.push(buildUnaddressedHeader());\n for (const [i, v] of unaddressed.entries()) {\n lines.push(`${i + 1}. ${v.file}:${v.line} - ${v.issue}`);\n }\n lines.push('');\n }\n\n lines.push(buildRerunInstructions(affectedFiles));\n return lines.join('\\n');\n}\n\nfunction buildRerunHeader(): string {\n return `\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\nRERUN MODE: VERIFY PREVIOUS FIXES ONLY\n\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\n\nThis is a RERUN review. The agent attempted to fix some of the violations listed below.\nYour task is STRICTLY LIMITED to verifying the fixes for violations marked as FIXED.\n\nPREVIOUS VIOLATIONS TO VERIFY:\n`;\n}\n\nfunction buildUnaddressedHeader(): string {\n return `UNADDRESSED VIOLATIONS (STILL FAILING):\nThe following violations were NOT marked as fixed or skipped and are still active failures:\n`;\n}\n\nfunction buildRerunInstructions(affectedFiles: string[]): string {\n return `STRICT INSTRUCTIONS FOR RERUN MODE:\n\n1. VERIFY FIXES: Check if each violation marked as FIXED above has been addressed\n - For violations that are fixed, confirm they no longer appear\n - For violations that remain unfixed, include them in your violations array (status: \"new\")\n\n2. UNADDRESSED VIOLATIONS: You MUST include all UNADDRESSED violations listed above in your output array if they still exist.\n\n3. CHECK FOR REGRESSIONS ONLY: You may ONLY report NEW violations if they:\n - Are in FILES that were modified to fix the above violations: ${affectedFiles.join(', ')}\n - Are DIRECTLY caused by the fix changes (e.g., a fix introduced a new bug)\n - Are in the same function/region that was modified to address a previous violation\n\n4. Return status \"pass\" ONLY if ALL previous violations (including unaddressed ones) are now fixed AND no regressions were introduced.\n Otherwise, return status \"fail\" and list all remaining violations.\n\n\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501`;\n}\n\n// ── Output Evaluation ───────────────────────────────────────────────\n\nexport function evaluateOutput(\n output: string,\n diff?: string,\n): EvaluationResult {\n const diffRanges = diff ? parseDiff(diff) : undefined;\n\n try {\n const fromBlock = tryParseJsonBlock(output);\n if (fromBlock) return validateAndReturn(fromBlock, diffRanges);\n\n const fromLast = tryParseLastJson(output);\n if (fromLast) return validateAndReturn(fromLast, diffRanges);\n\n const fromFirst = tryParseFirstJson(output);\n if (fromFirst) return validateAndReturn(fromFirst, diffRanges);\n\n return {\n status: 'error',\n message: 'No valid JSON object found in output',\n };\n } catch (error: unknown) {\n const err = error as { message?: string };\n return {\n status: 'error',\n message: `Failed to parse JSON output: ${err.message}`,\n };\n }\n}\n\nfunction tryParseJsonBlock(output: string): ReviewJsonOutput | null {\n const match = output.match(/```json\\s*([\\s\\S]*?)\\s*```/);\n if (!match?.[1]) return null;\n try {\n return JSON.parse(match[1]);\n } catch {\n return null;\n }\n}\n\nfunction tryParseLastJson(output: string): ReviewJsonOutput | null {\n const end = output.lastIndexOf('}');\n if (end === -1) return null;\n\n let start = output.lastIndexOf('{', end);\n while (start !== -1) {\n try {\n const json = JSON.parse(output.substring(start, end + 1));\n if (json.status) return json;\n } catch {\n // Not valid JSON, keep searching\n }\n start = output.lastIndexOf('{', start - 1);\n }\n return null;\n}\n\nfunction tryParseFirstJson(output: string): ReviewJsonOutput | null {\n const firstStart = output.indexOf('{');\n const end = output.lastIndexOf('}');\n if (firstStart === -1 || end === -1 || end <= firstStart) return null;\n\n try {\n return JSON.parse(output.substring(firstStart, end + 1));\n } catch {\n return null;\n }\n}\n\nexport function validateAndReturn(\n json: ReviewJsonOutput,\n diffRanges?: Map<string, DiffFileRange>,\n): EvaluationResult {\n if (!json.status || (json.status !== 'pass' && json.status !== 'fail')) {\n return {\n status: 'error',\n message: 'Invalid JSON: missing or invalid \"status\" field',\n json,\n };\n }\n\n if (json.status === 'pass') {\n return { status: 'pass', message: json.message || 'Passed', json };\n }\n\n const filterResult = filterViolationsByDiff(json, diffRanges);\n if (filterResult) return filterResult;\n\n const violationCount = Array.isArray(json.violations)\n ? json.violations.length\n : 'some';\n return {\n status: 'fail',\n message: `Found ${violationCount} violations`,\n json,\n filteredCount: 0,\n };\n}\n\nfunction filterViolationsByDiff(\n json: ReviewJsonOutput,\n diffRanges?: Map<string, DiffFileRange>,\n): EvaluationResult | null {\n if (!(Array.isArray(json.violations) && diffRanges && diffRanges.size > 0)) {\n return null;\n }\n\n const originalCount = json.violations.length;\n\n json.violations = json.violations.filter(\n (v: { file: string; line: number | string }) => {\n const lineNum = coerceLineNumber(v.line);\n return isValidViolationLocation(v.file, lineNum, diffRanges);\n },\n );\n\n const filteredCount = originalCount - json.violations.length;\n\n if (json.violations.length === 0) {\n return {\n status: 'pass',\n message: `Passed (${filteredCount} out-of-scope violations filtered)`,\n json: { status: 'pass' },\n filteredCount,\n };\n }\n\n const violationCount = json.violations.length;\n return {\n status: 'fail',\n message: `Found ${violationCount} violations`,\n json,\n filteredCount,\n };\n}\n\nfunction coerceLineNumber(line: number | string): number | undefined {\n if (typeof line === 'number') return line;\n const trimmed = typeof line === 'string' ? line.trim() : undefined;\n if (trimmed && /^\\d+$/.test(trimmed)) return Number(trimmed);\n return undefined;\n}\n\n// ── Rerun Filtering ─────────────────────────────────────────────────\n\nexport async function applyRerunFiltering(\n evaluation: EvaluationResult,\n adapterPreviousViolations: PreviousViolation[],\n rerunThreshold: 'critical' | 'high' | 'medium' | 'low',\n adapterLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n if (\n !(\n adapterPreviousViolations.length > 0 &&\n evaluation.json?.violations &&\n evaluation.status === 'fail'\n )\n ) {\n return;\n }\n\n const priorities = ['critical', 'high', 'medium', 'low'];\n const thresholdIndex = priorities.indexOf(rerunThreshold);\n const originalCount = evaluation.json.violations.length;\n\n evaluation.json.violations = evaluation.json.violations.filter((v) => {\n const priority = v.priority || 'low';\n const priorityIndex = priorities.indexOf(priority);\n if (priorityIndex === -1) return true;\n return priorityIndex <= thresholdIndex;\n });\n\n const filteredByThreshold = originalCount - evaluation.json.violations.length;\n\n if (filteredByThreshold > 0) {\n await adapterLogger(\n `Note: ${filteredByThreshold} new violations filtered due to rerun threshold (${rerunThreshold})\\n`,\n );\n evaluation.filteredCount =\n (evaluation.filteredCount || 0) + filteredByThreshold;\n\n if (evaluation.json.violations.length === 0) {\n evaluation.status = 'pass';\n evaluation.message = `Passed (${filteredByThreshold} below-threshold violations filtered)`;\n evaluation.json.status = 'pass';\n }\n }\n}\n\n// ── Review Output Handling ──────────────────────────────────────────\n\nexport async function handleReviewOutput(\n evaluation: EvaluationResult,\n adapter: { name: string },\n reviewIndex: number,\n output: string,\n logPath: string,\n adapterLogger: (msg: string) => Promise<void>,\n mainLogger: (msg: string) => Promise<void>,\n _logDir: string | undefined,\n): Promise<\n Array<{\n file: string;\n line: number | string;\n issue: string;\n result?: string | null;\n }>\n> {\n await logErrorAndFilterInfo(evaluation, adapter, adapterLogger, mainLogger);\n\n let skipped: Array<{\n file: string;\n line: number | string;\n issue: string;\n result?: string | null;\n }> = [];\n\n if (evaluation.json) {\n skipped = await logParsedResult(\n evaluation,\n adapter,\n output,\n logPath,\n adapterLogger,\n );\n }\n\n const resultMsg = `Review result (${adapter.name}@${reviewIndex}): ${evaluation.status} - ${evaluation.message}`;\n await adapterLogger(`${resultMsg}\\n`);\n\n return skipped;\n}\n\nasync function logErrorAndFilterInfo(\n evaluation: EvaluationResult,\n adapter: { name: string },\n adapterLogger: (msg: string) => Promise<void>,\n mainLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n if (evaluation.status === 'error') {\n await adapterLogger(`Error: ${evaluation.message}\\n`);\n await mainLogger(\n `Error parsing review from ${adapter.name}: ${evaluation.message}\\n`,\n );\n }\n\n if (evaluation.filteredCount && evaluation.filteredCount > 0) {\n await adapterLogger(\n `Note: ${evaluation.filteredCount} out-of-scope violations filtered\\n`,\n );\n }\n}\n\nasync function logParsedResult(\n evaluation: EvaluationResult,\n adapter: { name: string },\n output: string,\n logPath: string,\n adapterLogger: (msg: string) => Promise<void>,\n): Promise<\n Array<{\n file: string;\n line: number | string;\n issue: string;\n result?: string | null;\n }>\n> {\n if (!evaluation.json) return [];\n\n await logViolationWarnings(evaluation.json, adapterLogger);\n\n const jsonPath = await writeJsonResult(\n logPath,\n adapter.name,\n evaluation.status,\n output,\n evaluation.json,\n );\n\n const skipped = (evaluation.json.violations || [])\n .filter((v) => v.status === 'skipped')\n .map((v) => ({\n file: v.file,\n line: v.line,\n issue: v.issue,\n result: v.result,\n }));\n\n await adapterLogger(`\\n--- Parsed Result (${adapter.name}) ---\\n`);\n await logStatusDetails(evaluation, jsonPath, adapterLogger);\n await adapterLogger(`---------------------\\n`);\n\n return skipped;\n}\n\nasync function logViolationWarnings(\n json: ReviewJsonOutput,\n adapterLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n if (json.status !== 'fail') return;\n if (!Array.isArray(json.violations)) {\n await adapterLogger(\n \"Warning: Missing 'violations' array in failure response\\n\",\n );\n return;\n }\n for (const v of json.violations) {\n if (\n !v.file ||\n v.line === undefined ||\n v.line === null ||\n !v.issue ||\n !v.priority ||\n !v.status\n ) {\n await adapterLogger(\n `Warning: Violation missing required fields: ${JSON.stringify(v)}\\n`,\n );\n }\n }\n}\n\nasync function logStatusDetails(\n evaluation: EvaluationResult,\n jsonPath: string,\n adapterLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n if (!evaluation.json) return;\n\n if (\n evaluation.json.status === 'fail' &&\n Array.isArray(evaluation.json.violations)\n ) {\n await adapterLogger(`Status: FAIL\\n`);\n await adapterLogger(`Review: ${jsonPath}\\n`);\n await adapterLogger(`Violations:\\n`);\n for (const [i, v] of evaluation.json.violations.entries()) {\n await adapterLogger(\n `${i + 1}. ${v.file}:${v.line || '?'} - ${v.issue}\\n`,\n );\n if (v.fix) await adapterLogger(` Fix: ${v.fix}\\n`);\n }\n } else if (evaluation.json.status === 'pass') {\n await adapterLogger(`Status: PASS\\n`);\n if (evaluation.json.message) {\n await adapterLogger(`Message: ${evaluation.json.message}\\n`);\n }\n } else {\n await adapterLogger(`Status: ${evaluation.json.status}\\n`);\n await adapterLogger(`Raw: ${JSON.stringify(evaluation.json, null, 2)}\\n`);\n }\n}\n\n// ── Usage Limit Handling ────────────────────────────────────────────\n\nexport async function handleUsageLimit(\n adapter: { name: string },\n logDir: string | undefined,\n mainLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n const reason = 'Usage limit exceeded';\n if (logDir) {\n await markAdapterUnhealthy(logDir, adapter.name, reason);\n log.debug(`Adapter ${adapter.name} marked unhealthy for 1 hour: ${reason}`);\n await mainLogger(\n `${adapter.name} marked unhealthy for 1 hour: ${reason}\\n`,\n );\n }\n}\n",
|
|
42
|
+
"import type { PreviousViolation } from './result.js';\nimport type { ReviewConfig } from './review-types.js';\nimport { JSON_SYSTEM_INSTRUCTION } from './review-types.js';\n\n// ── Prompt Building ─────────────────────────────────────────────────\n\nexport function buildReviewPrompt(\n config: ReviewConfig,\n previousViolations: PreviousViolation[] = [],\n): string {\n const baseContent = config.promptContent || '';\n\n if (previousViolations.length > 0) {\n return (\n baseContent +\n '\\n\\n' +\n buildPreviousFailuresSection(previousViolations) +\n '\\n' +\n JSON_SYSTEM_INSTRUCTION\n );\n }\n\n return `${baseContent}\\n${JSON_SYSTEM_INSTRUCTION}`;\n}\n\nexport function buildPreviousFailuresSection(\n violations: PreviousViolation[],\n): string {\n const toVerify = violations.filter((v) => v.status === 'fixed');\n const unaddressed = violations.filter((v) => v.status === 'new' || !v.status);\n const affectedFiles = [...new Set(violations.map((v) => v.file))];\n const lines: string[] = [];\n\n lines.push(buildRerunHeader());\n lines.push(...formatVerifySection(toVerify));\n lines.push(...formatUnaddressedSection(unaddressed));\n lines.push(buildRerunInstructions(affectedFiles));\n return lines.join('\\n');\n}\n\nfunction formatVerifySection(toVerify: PreviousViolation[]): string[] {\n if (toVerify.length === 0) {\n return ['(No violations were marked as FIXED for verification)\\n'];\n }\n const lines: string[] = [];\n for (const [i, v] of toVerify.entries()) {\n lines.push(`${i + 1}. ${v.file}:${v.line} - ${v.issue}`);\n if (v.fix) lines.push(` Suggested fix: ${v.fix}`);\n if (v.result) lines.push(` Agent result: ${v.result}`);\n lines.push('');\n }\n return lines;\n}\n\nfunction formatUnaddressedSection(unaddressed: PreviousViolation[]): string[] {\n if (unaddressed.length === 0) return [];\n const lines: string[] = [buildUnaddressedHeader()];\n for (const [i, v] of unaddressed.entries()) {\n lines.push(`${i + 1}. ${v.file}:${v.line} - ${v.issue}`);\n }\n lines.push('');\n return lines;\n}\n\nconst RERUN_SEPARATOR = '\\u2501'.repeat(46);\n\nfunction buildRerunHeader(): string {\n return `${RERUN_SEPARATOR}\\nRERUN MODE: VERIFY PREVIOUS FIXES ONLY\\n${RERUN_SEPARATOR}\\n\\nThis is a RERUN review. The agent attempted to fix some of the violations listed below.\\nYour task is STRICTLY LIMITED to verifying the fixes for violations marked as FIXED.\\n\\nPREVIOUS VIOLATIONS TO VERIFY:\\n`;\n}\n\nfunction buildUnaddressedHeader(): string {\n return 'UNADDRESSED VIOLATIONS (STILL FAILING):\\nThe following violations were NOT marked as fixed or skipped and are still active failures:\\n';\n}\n\nfunction buildRerunInstructions(affectedFiles: string[]): string {\n const files = affectedFiles.join(', ');\n return [\n 'STRICT INSTRUCTIONS FOR RERUN MODE:',\n '',\n '1. VERIFY FIXES: Check if each violation marked as FIXED above has been addressed',\n ' - For violations that are fixed, confirm they no longer appear',\n ' - For violations that remain unfixed, include them in your violations array (status: \"new\")',\n '',\n '2. UNADDRESSED VIOLATIONS: You MUST include all UNADDRESSED violations listed above in your output array if they still exist.',\n '',\n '3. CHECK FOR REGRESSIONS ONLY: You may ONLY report NEW violations if they:',\n ` - Are in FILES that were modified to fix the above violations: ${files}`,\n ' - Are DIRECTLY caused by the fix changes (e.g., a fix introduced a new bug)',\n ' - Are in the same function/region that was modified to address a previous violation',\n '',\n '4. Return status \"pass\" ONLY if ALL previous violations (including unaddressed ones) are now fixed AND no regressions were introduced.',\n ' Otherwise, return status \"fail\" and list all remaining violations.',\n '',\n RERUN_SEPARATOR,\n ].join('\\n');\n}\n",
|
|
43
|
+
"import { getCategoryLogger } from '../output/app-logger.js';\nimport {\n type DiffFileRange,\n isValidViolationLocation,\n parseDiff,\n} from '../utils/diff-parser.js';\nimport { markAdapterUnhealthy } from '../utils/execution-state.js';\nimport type { PreviousViolation } from './result.js';\nimport { writeJsonResult } from './review-agg.js';\n\nexport {\n buildPreviousFailuresSection,\n buildReviewPrompt,\n} from './review-prompt.js';\n\nimport type { EvaluationResult, ReviewJsonOutput } from './review-types.js';\nimport { CHARS_PER_TOKEN } from './review-types.js';\n\nconst log = getCategoryLogger('gate', 'review');\n\n// ── Stats Logging ───────────────────────────────────────────────────\n\nexport function logDiffStats(\n diff: string,\n mainLogger: (msg: string) => Promise<void>,\n): void {\n const diffLines = diff.split('\\n').length;\n const diffChars = diff.length;\n const diffEstTokens = Math.ceil(diffChars / CHARS_PER_TOKEN);\n const diffFileRanges = parseDiff(diff);\n const diffFiles = diffFileRanges.size;\n const msg = `[diff-stats] files=${diffFiles} lines=${diffLines} chars=${diffChars} est_tokens=${diffEstTokens}`;\n log.debug(msg);\n mainLogger(`${msg}\\n`);\n}\n\nexport function logInputStats(\n prompt: string,\n diff: string,\n adapterLogger: (msg: string) => Promise<void>,\n): void {\n const promptChars = prompt.length;\n const diffChars = diff.length;\n const totalInputChars = promptChars + diffChars;\n const promptEstTokens = Math.ceil(promptChars / CHARS_PER_TOKEN);\n const diffEstTokens = Math.ceil(diffChars / CHARS_PER_TOKEN);\n const totalEstTokens = promptEstTokens + diffEstTokens;\n const msg = `[input-stats] prompt_chars=${promptChars} diff_chars=${diffChars} total_chars=${totalInputChars} prompt_est_tokens=${promptEstTokens} diff_est_tokens=${diffEstTokens} total_est_tokens=${totalEstTokens}`;\n adapterLogger(`${msg}\\n`);\n}\n\n// ── Output Evaluation ───────────────────────────────────────────────\n\n/** Max size for heuristic JSON probing — larger outputs skip tryParseLastJson/First. */\nconst MAX_OUTPUT_SIZE_FOR_JSON_PROBE = 100_000;\n\nexport function evaluateOutput(\n output: string,\n diff?: string,\n): EvaluationResult {\n const diffRanges = diff ? parseDiff(diff) : undefined;\n\n try {\n const fromBlock = tryParseJsonBlock(output);\n if (fromBlock) return validateAndReturn(fromBlock, diffRanges);\n\n const fromDirect = tryParseWholeOutput(output);\n if (fromDirect) return validateAndReturn(fromDirect, diffRanges);\n\n if (output.length <= MAX_OUTPUT_SIZE_FOR_JSON_PROBE) {\n const fromLast = tryParseLastJson(output);\n if (fromLast) return validateAndReturn(fromLast, diffRanges);\n\n const fromFirst = tryParseFirstJson(output);\n if (fromFirst) return validateAndReturn(fromFirst, diffRanges);\n }\n\n return {\n status: 'error',\n message:\n output.length > MAX_OUTPUT_SIZE_FOR_JSON_PROBE\n ? `Output too large (${output.length} bytes) and no JSON found`\n : 'No valid JSON object found in output',\n };\n } catch (error: unknown) {\n const err = error as { message?: string };\n return {\n status: 'error',\n message: `Failed to parse JSON output: ${err.message}`,\n };\n }\n}\n\nfunction tryParseJsonBlock(output: string): ReviewJsonOutput | null {\n const match = output.match(/```json\\s*([\\s\\S]*?)\\s*```/);\n if (!match?.[1]) return null;\n try {\n return JSON.parse(match[1]);\n } catch {\n return null;\n }\n}\n\nfunction tryParseWholeOutput(output: string): ReviewJsonOutput | null {\n const trimmed = output.trim();\n if (!(trimmed.startsWith('{') && trimmed.endsWith('}'))) return null;\n try {\n const json = JSON.parse(trimmed);\n if (json.status) return json;\n } catch {}\n return null;\n}\n\n/** Max `{` positions to probe before giving up (prevents event-loop blocking). */\nconst MAX_JSON_PROBE_ITERATIONS = 50;\n\nfunction tryParseLastJson(output: string): ReviewJsonOutput | null {\n const end = output.lastIndexOf('}');\n if (end === -1) return null;\n\n let start = output.lastIndexOf('{', end);\n let iterations = 0;\n while (start !== -1 && iterations < MAX_JSON_PROBE_ITERATIONS) {\n iterations++;\n try {\n const json = JSON.parse(output.substring(start, end + 1));\n if (json.status) return json;\n } catch {\n // Not valid JSON, keep searching\n }\n start = output.lastIndexOf('{', start - 1);\n }\n return null;\n}\n\nfunction tryParseFirstJson(output: string): ReviewJsonOutput | null {\n const firstStart = output.indexOf('{');\n const end = output.lastIndexOf('}');\n if (firstStart === -1 || end === -1 || end <= firstStart) return null;\n\n try {\n return JSON.parse(output.substring(firstStart, end + 1));\n } catch {\n return null;\n }\n}\n\nexport function validateAndReturn(\n json: ReviewJsonOutput,\n diffRanges?: Map<string, DiffFileRange>,\n): EvaluationResult {\n if (!json.status || (json.status !== 'pass' && json.status !== 'fail')) {\n return {\n status: 'error',\n message: 'Invalid JSON: missing or invalid \"status\" field',\n json,\n };\n }\n\n if (json.status === 'pass') {\n return { status: 'pass', message: json.message || 'Passed', json };\n }\n\n const filterResult = filterViolationsByDiff(json, diffRanges);\n if (filterResult) return filterResult;\n\n const violationCount = Array.isArray(json.violations)\n ? json.violations.length\n : 'some';\n return {\n status: 'fail',\n message: `Found ${violationCount} violations`,\n json,\n filteredCount: 0,\n };\n}\n\nfunction filterViolationsByDiff(\n json: ReviewJsonOutput,\n diffRanges?: Map<string, DiffFileRange>,\n): EvaluationResult | null {\n if (!(Array.isArray(json.violations) && diffRanges && diffRanges.size > 0)) {\n return null;\n }\n\n const originalCount = json.violations.length;\n\n json.violations = json.violations.filter(\n (v: { file: string; line: number | string }) => {\n const lineNum = coerceLineNumber(v.line);\n return isValidViolationLocation(v.file, lineNum, diffRanges);\n },\n );\n\n const filteredCount = originalCount - json.violations.length;\n\n if (json.violations.length === 0) {\n return {\n status: 'pass',\n message: `Passed (${filteredCount} out-of-scope violations filtered)`,\n json: { status: 'pass' },\n filteredCount,\n };\n }\n\n const violationCount = json.violations.length;\n return {\n status: 'fail',\n message: `Found ${violationCount} violations`,\n json,\n filteredCount,\n };\n}\n\nfunction coerceLineNumber(line: number | string): number | undefined {\n if (typeof line === 'number') return line;\n const trimmed = typeof line === 'string' ? line.trim() : undefined;\n if (trimmed && /^\\d+$/.test(trimmed)) return Number(trimmed);\n return undefined;\n}\n\n// ── Rerun Filtering ─────────────────────────────────────────────────\n\nexport async function applyRerunFiltering(\n evaluation: EvaluationResult,\n adapterPreviousViolations: PreviousViolation[],\n rerunThreshold: 'critical' | 'high' | 'medium' | 'low',\n adapterLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n if (\n !(\n adapterPreviousViolations.length > 0 &&\n evaluation.json?.violations &&\n evaluation.status === 'fail'\n )\n ) {\n return;\n }\n\n const priorities = ['critical', 'high', 'medium', 'low'];\n const thresholdIndex = priorities.indexOf(rerunThreshold);\n const originalCount = evaluation.json.violations.length;\n\n evaluation.json.violations = evaluation.json.violations.filter((v) => {\n const priority = v.priority || 'low';\n const priorityIndex = priorities.indexOf(priority);\n if (priorityIndex === -1) return true;\n return priorityIndex <= thresholdIndex;\n });\n\n const filteredByThreshold = originalCount - evaluation.json.violations.length;\n\n if (filteredByThreshold > 0) {\n await adapterLogger(\n `Note: ${filteredByThreshold} new violations filtered due to rerun threshold (${rerunThreshold})\\n`,\n );\n evaluation.filteredCount =\n (evaluation.filteredCount || 0) + filteredByThreshold;\n\n if (evaluation.json.violations.length === 0) {\n evaluation.status = 'pass';\n evaluation.message = `Passed (${filteredByThreshold} below-threshold violations filtered)`;\n evaluation.json.status = 'pass';\n }\n }\n}\n\n// ── Review Output Handling ──────────────────────────────────────────\n\nexport async function handleReviewOutput(\n evaluation: EvaluationResult,\n adapter: { name: string },\n reviewIndex: number,\n output: string,\n logPath: string,\n adapterLogger: (msg: string) => Promise<void>,\n mainLogger: (msg: string) => Promise<void>,\n _logDir: string | undefined,\n): Promise<\n Array<{\n file: string;\n line: number | string;\n issue: string;\n result?: string | null;\n }>\n> {\n await logErrorAndFilterInfo(evaluation, adapter, adapterLogger, mainLogger);\n\n let skipped: Array<{\n file: string;\n line: number | string;\n issue: string;\n result?: string | null;\n }> = [];\n\n if (evaluation.json) {\n skipped = await logParsedResult(\n evaluation,\n adapter,\n output,\n logPath,\n adapterLogger,\n );\n }\n\n const resultMsg = `Review result (${adapter.name}@${reviewIndex}): ${evaluation.status} - ${evaluation.message}`;\n await adapterLogger(`${resultMsg}\\n`);\n\n return skipped;\n}\n\nasync function logErrorAndFilterInfo(\n evaluation: EvaluationResult,\n adapter: { name: string },\n adapterLogger: (msg: string) => Promise<void>,\n mainLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n if (evaluation.status === 'error') {\n await adapterLogger(`Error: ${evaluation.message}\\n`);\n await mainLogger(\n `Error parsing review from ${adapter.name}: ${evaluation.message}\\n`,\n );\n }\n\n if (evaluation.filteredCount && evaluation.filteredCount > 0) {\n await adapterLogger(\n `Note: ${evaluation.filteredCount} out-of-scope violations filtered\\n`,\n );\n }\n}\n\nasync function logParsedResult(\n evaluation: EvaluationResult,\n adapter: { name: string },\n output: string,\n logPath: string,\n adapterLogger: (msg: string) => Promise<void>,\n): Promise<\n Array<{\n file: string;\n line: number | string;\n issue: string;\n result?: string | null;\n }>\n> {\n if (!evaluation.json) return [];\n\n await logViolationWarnings(evaluation.json, adapterLogger);\n\n const jsonPath = await writeJsonResult(\n logPath,\n adapter.name,\n evaluation.status,\n output,\n evaluation.json,\n );\n\n const skipped = (evaluation.json.violations || [])\n .filter((v) => v.status === 'skipped')\n .map((v) => ({\n file: v.file,\n line: v.line,\n issue: v.issue,\n result: v.result,\n }));\n\n await adapterLogger(`\\n--- Parsed Result (${adapter.name}) ---\\n`);\n await logStatusDetails(evaluation, jsonPath, adapterLogger);\n await adapterLogger(`---------------------\\n`);\n\n return skipped;\n}\n\nasync function logViolationWarnings(\n json: ReviewJsonOutput,\n adapterLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n if (json.status !== 'fail') return;\n if (!Array.isArray(json.violations)) {\n await adapterLogger(\n \"Warning: Missing 'violations' array in failure response\\n\",\n );\n return;\n }\n for (const v of json.violations) {\n if (\n !v.file ||\n v.line === undefined ||\n v.line === null ||\n !v.issue ||\n !v.priority ||\n !v.status\n ) {\n await adapterLogger(\n `Warning: Violation missing required fields: ${JSON.stringify(v)}\\n`,\n );\n }\n }\n}\n\nasync function logStatusDetails(\n evaluation: EvaluationResult,\n jsonPath: string,\n adapterLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n if (!evaluation.json) return;\n\n if (\n evaluation.json.status === 'fail' &&\n Array.isArray(evaluation.json.violations)\n ) {\n await adapterLogger(`Status: FAIL\\n`);\n await adapterLogger(`Review: ${jsonPath}\\n`);\n await adapterLogger(`Violations:\\n`);\n for (const [i, v] of evaluation.json.violations.entries()) {\n await adapterLogger(\n `${i + 1}. ${v.file}:${v.line || '?'} - ${v.issue}\\n`,\n );\n if (v.fix) await adapterLogger(` Fix: ${v.fix}\\n`);\n }\n } else if (evaluation.json.status === 'pass') {\n await adapterLogger(`Status: PASS\\n`);\n if (evaluation.json.message) {\n await adapterLogger(`Message: ${evaluation.json.message}\\n`);\n }\n } else {\n await adapterLogger(`Status: ${evaluation.json.status}\\n`);\n await adapterLogger(`Raw: ${JSON.stringify(evaluation.json, null, 2)}\\n`);\n }\n}\n\n// ── Usage Limit Handling ────────────────────────────────────────────\n\nexport async function handleUsageLimit(\n adapter: { name: string },\n logDir: string | undefined,\n mainLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n const reason = 'Usage limit exceeded';\n if (logDir) {\n await markAdapterUnhealthy(logDir, adapter.name, reason);\n log.debug(`Adapter ${adapter.name} marked unhealthy for 1 hour: ${reason}`);\n await mainLogger(\n `${adapter.name} marked unhealthy for 1 hour: ${reason}\\n`,\n );\n }\n}\n",
|
|
43
44
|
"import fs from 'node:fs/promises';\nimport { getAdapter, isUsageLimit } from '../cli-adapters/index.js';\nimport { getCategoryLogger } from '../output/app-logger.js';\nimport {\n getUnhealthyAdapters,\n isAdapterCoolingDown,\n markAdapterHealthy,\n type UnhealthyAdapter,\n} from '../utils/execution-state.js';\nimport type { ReviewFullJsonOutput } from './result.js';\nimport { handleUsageLimit } from './review-eval.js';\nimport type {\n ReviewAssignment,\n ReviewOutputEntry,\n SingleReviewResult,\n SkippedSlotOutput,\n} from './review-types.js';\n\nimport { MAX_LOG_BUFFER_SIZE } from './review-types.js';\n\n// Re-export all types and constants from review-types for consumers\nexport type {\n EvaluationResult,\n ReviewAssignment,\n ReviewConfig,\n ReviewJsonOutput,\n ReviewOutputEntry,\n SingleReviewResult,\n SkippedSlotOutput,\n} from './review-types.js';\nexport {\n CHARS_PER_TOKEN,\n JSON_SYSTEM_INSTRUCTION,\n MAX_BUFFER_BYTES,\n MAX_LOG_BUFFER_SIZE,\n REVIEW_ADAPTER_TIMEOUT_MS,\n} from './review-types.js';\n\nconst log = getCategoryLogger('gate', 'review');\n\n// ── Adapter Health ──────────────────────────────────────────────────\n\nexport async function collectHealthyAdapters(\n preferences: string[],\n mainLogger: (msg: string) => Promise<void>,\n logDir?: string,\n): Promise<string[]> {\n const healthyAdapters: string[] = [];\n const unhealthyMap = logDir ? await getUnhealthyAdapters(logDir) : {};\n\n for (const toolName of preferences) {\n const adapter = getAdapter(toolName);\n if (!adapter) {\n log.debug(`Adapter ${toolName}: not found`);\n continue;\n }\n\n const healthy = await checkAdapterHealth(\n toolName,\n adapter,\n unhealthyMap,\n mainLogger,\n logDir,\n );\n if (healthy) {\n healthyAdapters.push(toolName);\n }\n }\n return healthyAdapters;\n}\n\nasync function checkAdapterHealth(\n toolName: string,\n adapter: { checkHealth: () => Promise<{ status: string; message?: string }> },\n unhealthyMap: Record<string, UnhealthyAdapter>,\n mainLogger: (msg: string) => Promise<void>,\n logDir?: string,\n): Promise<boolean> {\n const unhealthyEntry = unhealthyMap[toolName];\n if (unhealthyEntry) {\n return handleUnhealthyAdapter(\n toolName,\n adapter,\n unhealthyEntry,\n mainLogger,\n logDir,\n );\n }\n\n const health = await adapter.checkHealth();\n if (health.status !== 'healthy') {\n log.debug(\n `Adapter ${toolName}: ${health.status}${health.message ? ` - ${health.message}` : ''}`,\n );\n await mainLogger(\n `Skipping ${toolName}: ${health.message || 'Unhealthy'}\\n`,\n );\n return false;\n }\n return true;\n}\n\nasync function handleUnhealthyAdapter(\n toolName: string,\n adapter: { checkHealth: () => Promise<{ status: string; message?: string }> },\n unhealthyEntry: UnhealthyAdapter,\n mainLogger: (msg: string) => Promise<void>,\n logDir?: string,\n): Promise<boolean> {\n if (isAdapterCoolingDown(unhealthyEntry)) {\n log.debug(`Adapter ${toolName}: cooling down`);\n await mainLogger(\n `Skipping ${toolName}: cooling down (${unhealthyEntry.reason})\\n`,\n );\n return false;\n }\n\n const health = await adapter.checkHealth();\n if (health.status === 'healthy') {\n log.debug(\n `Adapter ${toolName}: cooldown expired, binary available, clearing unhealthy flag`,\n );\n if (logDir) {\n await markAdapterHealthy(logDir, toolName);\n }\n return true;\n }\n\n log.debug(`Adapter ${toolName}: cooldown expired but binary missing`);\n await mainLogger(`Skipping ${toolName}: ${health.message || 'Missing'}\\n`);\n return false;\n}\n\n// ── Assignment Generation ───────────────────────────────────────────\n\nexport function generateReviewAssignments(\n required: number,\n healthyAdapters: string[],\n): ReviewAssignment[] {\n const assignments: ReviewAssignment[] = [];\n for (let i = 0; i < required; i++) {\n const adapter = healthyAdapters[i % healthyAdapters.length];\n if (!adapter) continue;\n assignments.push({ adapter, reviewIndex: i + 1 });\n }\n return assignments;\n}\n\nexport async function applyPassedSlotSkips(\n assignments: ReviewAssignment[],\n required: number,\n passedSlots:\n | Map<number, { adapter: string; passIteration: number }>\n | undefined,\n mainLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n if (!(required > 1 && passedSlots && passedSlots.size > 0)) return;\n\n const failedIndexes: number[] = [];\n for (const assignment of assignments) {\n const passed = passedSlots.get(assignment.reviewIndex);\n if (passed && passed.adapter === assignment.adapter) {\n assignment.passIteration = passed.passIteration;\n } else {\n failedIndexes.push(assignment.reviewIndex);\n }\n }\n\n if (failedIndexes.length > 0) {\n markPassedSlotsAsSkipped(assignments);\n } else if (assignments.every((a) => a.passIteration !== undefined)) {\n await applySafetyLatch(assignments, mainLogger);\n }\n}\n\nfunction markPassedSlotsAsSkipped(assignments: ReviewAssignment[]): void {\n for (const assignment of assignments) {\n if (assignment.passIteration !== undefined) {\n assignment.skip = true;\n assignment.skipReason = `previously passed in iteration ${assignment.passIteration} (num_reviews > 1)`;\n }\n }\n}\n\nasync function applySafetyLatch(\n assignments: ReviewAssignment[],\n mainLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n for (const assignment of assignments) {\n if (assignment.reviewIndex === 1) {\n assignment.skip = false;\n await mainLogger(\n `Running @1: safety latch (all slots previously passed)\\n`,\n );\n } else {\n assignment.skip = true;\n assignment.skipReason = `previously passed in iteration ${assignment.passIteration} (num_reviews > 1)`;\n }\n }\n}\n\n// ── Skipped Slot Handling ───────────────────────────────────────────\n\nexport async function handleSkippedSlots(\n skippedAssignments: ReviewAssignment[],\n loggerFactory: (\n adapterName?: string,\n reviewIndex?: number,\n ) => Promise<{ logger: (output: string) => Promise<void>; logPath: string }>,\n logPathsSet: Set<string>,\n logPaths: string[],\n): Promise<SkippedSlotOutput[]> {\n const outputs: SkippedSlotOutput[] = [];\n for (const assignment of skippedAssignments) {\n const result = await writeSkippedSlotLog(\n assignment,\n loggerFactory,\n logPathsSet,\n logPaths,\n );\n outputs.push(result);\n }\n return outputs;\n}\n\nasync function writeSkippedSlotLog(\n assignment: ReviewAssignment,\n loggerFactory: (\n adapterName?: string,\n reviewIndex?: number,\n ) => Promise<{ logger: (output: string) => Promise<void>; logPath: string }>,\n logPathsSet: Set<string>,\n logPaths: string[],\n): Promise<SkippedSlotOutput> {\n const { logger, logPath } = await loggerFactory(\n assignment.adapter,\n assignment.reviewIndex,\n );\n\n const skipMessage = `[${new Date().toISOString()}] Review skipped: previously passed in iteration ${assignment.passIteration}\\n`;\n await logger(skipMessage);\n await logger(`Adapter: ${assignment.adapter}\\n`);\n await logger(`Review index: @${assignment.reviewIndex}\\n`);\n await logger(`Status: skipped_prior_pass\\n`);\n\n const jsonPath = logPath.replace(/\\.log$/, '.json');\n const skippedOutput: ReviewFullJsonOutput = {\n adapter: assignment.adapter,\n timestamp: new Date().toISOString(),\n status: 'skipped_prior_pass',\n rawOutput: '',\n violations: [],\n passIteration: assignment.passIteration,\n };\n await fs.writeFile(jsonPath, JSON.stringify(skippedOutput, null, 2));\n\n if (!logPathsSet.has(logPath)) {\n logPathsSet.add(logPath);\n logPaths.push(logPath);\n }\n\n return {\n adapter: assignment.adapter,\n reviewIndex: assignment.reviewIndex,\n status: 'skipped_prior_pass',\n message: `Skipped: previously passed in iteration ${assignment.passIteration}`,\n passIteration: assignment.passIteration ?? 0,\n };\n}\n\n// ── Review Dispatch ─────────────────────────────────────────────────\n\nexport async function dispatchReviews(\n runningAssignments: ReviewAssignment[],\n parallel: boolean,\n runSingle: (\n adapter: string,\n reviewIndex: number,\n ) => Promise<SingleReviewResult | null>,\n): Promise<ReviewOutputEntry[]> {\n const outputs: ReviewOutputEntry[] = [];\n\n if (parallel && runningAssignments.length > 1) {\n const results = await Promise.all(\n runningAssignments.map((a) => runSingle(a.adapter, a.reviewIndex)),\n );\n for (const res of results) {\n if (res) outputs.push(toOutputEntry(res));\n }\n } else {\n for (const assignment of runningAssignments) {\n const res = await runSingle(assignment.adapter, assignment.reviewIndex);\n if (res) outputs.push(toOutputEntry(res));\n }\n }\n return outputs;\n}\n\nfunction toOutputEntry(res: SingleReviewResult): ReviewOutputEntry {\n return {\n adapter: res.adapter,\n reviewIndex: res.reviewIndex,\n duration: res.duration,\n ...res.evaluation,\n };\n}\n\n// ── Logger Factory ──────────────────────────────────────────────────\n\nexport type LoggerFactory = (\n adapterName?: string,\n reviewIndex?: number,\n) => Promise<{\n logger: (output: string) => Promise<void>;\n logPath: string;\n}>;\n\nexport interface LoggerBundle {\n mainLogger: (output: string) => Promise<void>;\n getAdapterLogger: (\n adapterName: string,\n reviewIndex: number,\n ) => Promise<(output: string) => Promise<void>>;\n logPaths: string[];\n logPathsSet: Set<string>;\n}\n\nexport function createLoggers(loggerFactory: LoggerFactory): LoggerBundle {\n const logBuffer: string[] = [];\n let logSequence = 0;\n const activeLoggers: Array<(output: string, index: number) => Promise<void>> =\n [];\n const logPaths: string[] = [];\n const logPathsSet = new Set<string>();\n\n const mainLogger = async (output: string) => {\n const seq = logSequence++;\n if (logBuffer.length < MAX_LOG_BUFFER_SIZE) {\n logBuffer.push(output);\n }\n await Promise.allSettled(activeLoggers.map((l) => l(output, seq)));\n };\n\n const getAdapterLogger = async (adapterName: string, reviewIndex: number) => {\n const { logger, logPath } = await loggerFactory(adapterName, reviewIndex);\n if (!logPathsSet.has(logPath)) {\n logPathsSet.add(logPath);\n logPaths.push(logPath);\n }\n\n const seenIndices = new Set<number>();\n const safeLogger = async (msg: string, index: number) => {\n if (seenIndices.has(index)) return;\n seenIndices.add(index);\n await logger(msg);\n };\n activeLoggers.push(safeLogger);\n\n const snapshot = [...logBuffer];\n await Promise.all(snapshot.map((msg, i) => safeLogger(msg, i)));\n return logger;\n };\n\n return { mainLogger, getAdapterLogger, logPaths, logPathsSet };\n}\n\n// ── Skip / Error Handling ───────────────────────────────────────────\n\nexport async function logSkipMessages(\n assignments: ReviewAssignment[],\n mainLogger: (msg: string) => Promise<void>,\n): Promise<void> {\n for (const assignment of assignments) {\n if (assignment.skip && assignment.skipReason) {\n await mainLogger(\n `Skipping @${assignment.reviewIndex}: ${assignment.skipReason}\\n`,\n );\n }\n }\n}\n\nexport async function handleReviewError(\n error: unknown,\n adapter: { name: string },\n reviewIndex: number,\n reviewStartTime: number,\n adapterLogger: (msg: string) => Promise<void>,\n mainLogger: (msg: string) => Promise<void>,\n logDir?: string,\n): Promise<SingleReviewResult | null> {\n const err = error as { message?: string };\n const errorMsg = `Error running ${adapter.name}@${reviewIndex}: ${err.message}`;\n log.error(errorMsg);\n await adapterLogger(`${errorMsg}\\n`);\n await mainLogger(`${errorMsg}\\n`);\n if (err.message && isUsageLimit(err.message)) {\n await handleUsageLimit(adapter, logDir, mainLogger);\n return {\n adapter: adapter.name,\n reviewIndex,\n duration: Date.now() - reviewStartTime,\n evaluation: { status: 'error', message: 'Usage limit exceeded' },\n };\n }\n return null;\n}\n",
|
|
44
45
|
"import {\n type CLIAdapter,\n getAdapter,\n isUsageLimit,\n} from '../cli-adapters/index.js';\nimport type { AdapterConfig } from '../config/types.js';\nimport { getCategoryLogger } from '../output/app-logger.js';\nimport type { GateResult, PreviousViolation } from './result.js';\nimport {\n buildFinalResult,\n emptyDiffResult,\n handleCriticalError,\n incompleteResult,\n noAdaptersResult,\n} from './review-agg.js';\nimport { getDiff } from './review-diff.js';\nimport {\n applyRerunFiltering,\n buildReviewPrompt,\n evaluateOutput,\n handleReviewOutput,\n handleUsageLimit,\n logDiffStats,\n logInputStats,\n} from './review-eval.js';\nimport {\n applyPassedSlotSkips,\n collectHealthyAdapters,\n createLoggers,\n dispatchReviews,\n generateReviewAssignments,\n handleReviewError,\n handleSkippedSlots,\n type LoggerBundle,\n type LoggerFactory,\n logSkipMessages,\n} from './review-helpers.js';\nimport type {\n EvaluationResult,\n ReviewConfig,\n SingleReviewResult,\n} from './review-types.js';\nimport { REVIEW_ADAPTER_TIMEOUT_MS } from './review-types.js';\n\nexport { JSON_SYSTEM_INSTRUCTION } from './review-types.js';\n\nconst log = getCategoryLogger('gate', 'review');\n\nexport class ReviewGateExecutor {\n async execute(\n jobId: string,\n config: ReviewConfig,\n entryPointPath: string,\n loggerFactory: LoggerFactory,\n baseBranch: string,\n previousFailures?: Map<string, PreviousViolation[]>,\n changeOptions?: {\n commit?: string;\n uncommitted?: boolean;\n fixBase?: string;\n },\n rerunThreshold: 'critical' | 'high' | 'medium' | 'low' = 'high',\n passedSlots?: Map<number, { adapter: string; passIteration: number }>,\n logDir?: string,\n adapterConfigs?: Record<string, AdapterConfig>,\n ): Promise<GateResult> {\n const startTime = Date.now();\n const { mainLogger, getAdapterLogger, logPaths, logPathsSet } =\n createLoggers(loggerFactory);\n try {\n return await this.executeInner(\n jobId,\n config,\n entryPointPath,\n baseBranch,\n mainLogger,\n getAdapterLogger,\n loggerFactory,\n logPaths,\n logPathsSet,\n startTime,\n previousFailures,\n changeOptions,\n rerunThreshold,\n passedSlots,\n logDir,\n adapterConfigs,\n );\n } catch (error: unknown) {\n return handleCriticalError(error, jobId, startTime, logPaths, mainLogger);\n }\n }\n\n private async executeInner(\n jobId: string,\n config: ReviewConfig,\n entryPointPath: string,\n baseBranch: string,\n mainLogger: (output: string) => Promise<void>,\n getAdapterLogger: LoggerBundle['getAdapterLogger'],\n loggerFactory: LoggerFactory,\n logPaths: string[],\n logPathsSet: Set<string>,\n startTime: number,\n previousFailures?: Map<string, PreviousViolation[]>,\n changeOptions?: {\n commit?: string;\n uncommitted?: boolean;\n fixBase?: string;\n },\n rerunThreshold: 'critical' | 'high' | 'medium' | 'low' = 'high',\n passedSlots?: Map<number, { adapter: string; passIteration: number }>,\n logDir?: string,\n adapterConfigs?: Record<string, AdapterConfig>,\n ): Promise<GateResult> {\n log.debug(`Starting review: ${config.name} | entry=${entryPointPath}`);\n await mainLogger(`Starting review: ${config.name}\\n`);\n await mainLogger(`Entry point: ${entryPointPath}\\n`);\n await mainLogger(`Base branch: ${baseBranch}\\n`);\n\n const diff = await this.getDiff(entryPointPath, baseBranch, changeOptions);\n logDiffStats(diff, mainLogger);\n if (!diff.trim()) {\n return emptyDiffResult(jobId, startTime, logPaths, mainLogger);\n }\n\n const preferences = config.cli_preference || [];\n const required = config.num_reviews ?? 1;\n const parallel = config.parallel ?? false;\n const healthyAdapters = await collectHealthyAdapters(\n preferences,\n mainLogger,\n logDir,\n );\n if (healthyAdapters.length === 0) {\n return noAdaptersResult(jobId, startTime, logPaths, mainLogger);\n }\n log.debug(`Healthy adapters: ${healthyAdapters.join(', ')}`);\n\n const assignments = generateReviewAssignments(required, healthyAdapters);\n await applyPassedSlotSkips(assignments, required, passedSlots, mainLogger);\n await logSkipMessages(assignments, mainLogger);\n\n return this.dispatchAndCollect(\n jobId,\n config,\n diff,\n assignments,\n required,\n parallel,\n mainLogger,\n getAdapterLogger,\n loggerFactory,\n logPaths,\n logPathsSet,\n startTime,\n previousFailures,\n rerunThreshold,\n logDir,\n adapterConfigs,\n );\n }\n\n private async dispatchAndCollect(\n jobId: string,\n config: ReviewConfig,\n diff: string,\n assignments: Array<{\n adapter: string;\n reviewIndex: number;\n skip?: boolean;\n skipReason?: string;\n }>,\n required: number,\n parallel: boolean,\n mainLogger: (output: string) => Promise<void>,\n getAdapterLogger: LoggerBundle['getAdapterLogger'],\n loggerFactory: LoggerFactory,\n logPaths: string[],\n logPathsSet: Set<string>,\n startTime: number,\n previousFailures?: Map<string, PreviousViolation[]>,\n rerunThreshold: 'critical' | 'high' | 'medium' | 'low' = 'high',\n logDir?: string,\n adapterConfigs?: Record<string, AdapterConfig>,\n ): Promise<GateResult> {\n const dispatchMsg = `Dispatching ${required} review(s) via round-robin: ${assignments.map((a) => `${a.adapter}@${a.reviewIndex}`).join(', ')}`;\n log.debug(dispatchMsg);\n await mainLogger(`${dispatchMsg}\\n`);\n\n const runningAssignments = assignments.filter((a) => !a.skip);\n const skippedAssignments = assignments.filter((a) => a.skip);\n log.debug(\n `Running: ${runningAssignments.length}, Skipped: ${skippedAssignments.length}`,\n );\n\n const skippedSlotOutputs = await handleSkippedSlots(\n skippedAssignments,\n loggerFactory,\n logPathsSet,\n logPaths,\n );\n\n const runSingle = (adapter: string, reviewIndex: number) =>\n this.runSingleReview(\n adapter,\n reviewIndex,\n config,\n diff,\n getAdapterLogger,\n mainLogger,\n loggerFactory,\n previousFailures,\n rerunThreshold,\n logDir,\n adapterConfigs,\n );\n\n const outputs = await dispatchReviews(\n runningAssignments,\n parallel,\n runSingle,\n );\n if (outputs.length < runningAssignments.length) {\n return incompleteResult(\n jobId,\n startTime,\n logPaths,\n mainLogger,\n runningAssignments.length,\n outputs.length,\n );\n }\n return buildFinalResult(\n jobId,\n startTime,\n logPaths,\n outputs,\n skippedSlotOutputs,\n mainLogger,\n );\n }\n\n private async runSingleReview(\n toolName: string,\n reviewIndex: number,\n config: ReviewConfig,\n diff: string,\n getAdapterLogger: LoggerBundle['getAdapterLogger'],\n mainLogger: (output: string) => Promise<void>,\n loggerFactory: LoggerFactory,\n previousFailures?: Map<string, PreviousViolation[]>,\n rerunThreshold: 'critical' | 'high' | 'medium' | 'low' = 'high',\n logDir?: string,\n adapterConfigs?: Record<string, AdapterConfig>,\n ): Promise<SingleReviewResult | null> {\n const reviewStartTime = Date.now();\n const adapter = getAdapter(toolName);\n if (!adapter) return null;\n if (!adapter.name || typeof adapter.name !== 'string') {\n await mainLogger(\n `Error: Invalid adapter name: ${JSON.stringify(adapter.name)}\\n`,\n );\n return null;\n }\n const adapterLogger = await getAdapterLogger(adapter.name, reviewIndex);\n const { logPath } = await loggerFactory(adapter.name, reviewIndex);\n try {\n return await this.executeReview(\n adapter,\n reviewIndex,\n config,\n diff,\n adapterLogger,\n mainLogger,\n logPath,\n previousFailures,\n rerunThreshold,\n logDir,\n adapterConfigs,\n toolName,\n reviewStartTime,\n );\n } catch (error: unknown) {\n return handleReviewError(\n error,\n adapter,\n reviewIndex,\n reviewStartTime,\n adapterLogger,\n mainLogger,\n logDir,\n );\n }\n }\n\n private async executeReview(\n adapter: CLIAdapter,\n reviewIndex: number,\n config: ReviewConfig,\n diff: string,\n adapterLogger: (msg: string) => Promise<void>,\n mainLogger: (msg: string) => Promise<void>,\n logPath: string,\n previousFailures: Map<string, PreviousViolation[]> | undefined,\n rerunThreshold: 'critical' | 'high' | 'medium' | 'low',\n logDir: string | undefined,\n adapterConfigs: Record<string, AdapterConfig> | undefined,\n toolName: string,\n reviewStartTime: number,\n ): Promise<SingleReviewResult | null> {\n await adapterLogger(\n `[START] review:.:${config.name} (${adapter.name}@${reviewIndex})\\n`,\n );\n\n const indexKey = String(reviewIndex);\n const adapterPreviousViolations =\n previousFailures?.get(indexKey) ??\n previousFailures?.get(adapter.name) ??\n [];\n const finalPrompt = buildReviewPrompt(config, adapterPreviousViolations);\n logInputStats(finalPrompt, diff, adapterLogger);\n await adapterLogger(`[diff]\\n${diff}\\n`);\n\n const output = await invokeAdapter(\n adapter,\n finalPrompt,\n diff,\n config,\n adapterConfigs?.[toolName],\n adapterLogger,\n );\n await adapterLogger(\n `\\n--- Review Output (${adapter.name}) ---\\n${output}\\n`,\n );\n\n const evaluation = evaluateOutput(output, diff);\n if (evaluation.status === 'error' && isUsageLimit(output)) {\n await handleUsageLimit(adapter, logDir, mainLogger);\n return {\n adapter: adapter.name,\n reviewIndex,\n duration: Date.now() - reviewStartTime,\n evaluation: { status: 'error', message: 'Usage limit exceeded' },\n };\n }\n\n await applyRerunFiltering(\n evaluation,\n adapterPreviousViolations,\n rerunThreshold,\n adapterLogger,\n );\n const skipped = await handleReviewOutput(\n evaluation,\n adapter,\n reviewIndex,\n output,\n logPath,\n adapterLogger,\n mainLogger,\n logDir,\n );\n return {\n adapter: adapter.name,\n reviewIndex,\n duration: Date.now() - reviewStartTime,\n evaluation: {\n status: evaluation.status,\n message: evaluation.message,\n json: evaluation.json,\n skipped,\n },\n };\n }\n\n public evaluateOutput(output: string, diff?: string): EvaluationResult {\n return evaluateOutput(output, diff);\n }\n\n private async getDiff(\n entryPointPath: string,\n baseBranch: string,\n options?: { commit?: string; uncommitted?: boolean; fixBase?: string },\n ): Promise<string> {\n return getDiff(entryPointPath, baseBranch, options);\n }\n}\n\nasync function invokeAdapter(\n adapter: CLIAdapter,\n prompt: string,\n diff: string,\n config: ReviewConfig,\n adapterCfg: AdapterConfig | undefined,\n adapterLogger: (msg: string) => Promise<void>,\n): Promise<string> {\n return adapter.execute({\n prompt,\n diff,\n model: adapterCfg?.model ?? config.model,\n timeoutMs: config.timeout\n ? config.timeout * 1000\n : REVIEW_ADAPTER_TIMEOUT_MS,\n onOutput: (chunk: string) => {\n adapterLogger(chunk);\n },\n allowToolUse: adapterCfg?.allow_tool_use,\n thinkingBudget: adapterCfg?.thinking_budget,\n });\n}\n",
|
|
45
46
|
"export function sanitizeJobId(jobId: string): string {\n return jobId.replace(/[^a-zA-Z0-9._-]/g, '_');\n}\n",
|
|
46
47
|
"import type {\n LoadedCheckGateConfig,\n LoadedConfig,\n LoadedReviewGateConfig,\n} from '../config/types.js';\nimport { CheckGateExecutor } from '../gates/check.js';\nimport type { GateResult } from '../gates/result.js';\nimport { ReviewGateExecutor } from '../gates/review.js';\nimport type { ConsoleReporter } from '../output/console.js';\nimport type { Logger } from '../output/logger.js';\nimport type { DebugLogger } from '../utils/debug-log.js';\nimport type { PreviousViolation } from '../utils/log-parser.js';\nimport { sanitizeJobId } from '../utils/sanitizer.js';\nimport type { Job } from './job.js';\n\n/**\n * Iteration statistics for RUN_END logging.\n */\nexport interface IterationStats {\n /** Number of violations marked as fixed */\n fixed: number;\n /** Number of violations marked as skipped */\n skipped: number;\n /** Number of remaining active violations (failures) */\n failed: number;\n}\n\n/**\n * Structured result from Runner.run() for proper status mapping.\n */\nexport interface RunnerOutcome {\n /** Whether all gates passed */\n allPassed: boolean;\n /** Whether any violations were skipped (for passed_with_warnings) */\n anySkipped: boolean;\n /** Whether retry limit was exceeded */\n retryLimitExceeded: boolean;\n /** Whether any gates had errors */\n anyErrors: boolean;\n /** Iteration statistics for debug logging */\n stats: IterationStats;\n /** Individual gate results */\n gateResults: GateResult[];\n}\n\n/** Count stats from a single gate result entry (top-level or sub-result). */\nfunction accumulateResultStats(\n r: Pick<GateResult, 'fixedCount' | 'skipped' | 'errorCount' | 'status'>,\n stats: IterationStats,\n): void {\n if (r.fixedCount) stats.fixed += r.fixedCount;\n if (r.skipped) stats.skipped += r.skipped.length;\n\n if (r.errorCount) {\n stats.failed += r.errorCount;\n } else if (r.status === 'fail' || r.status === 'error') {\n stats.failed += 1;\n }\n}\n\n/**\n * Calculate iteration statistics from gate results.\n * Aggregates fixed, skipped, and failed counts from all results and subResults.\n */\nfunction calculateStats(results: GateResult[]): IterationStats {\n const stats: IterationStats = { fixed: 0, skipped: 0, failed: 0 };\n\n for (const result of results) {\n if (result.subResults && result.subResults.length > 0) {\n for (const sub of result.subResults) {\n accumulateResultStats(sub, stats);\n }\n } else {\n accumulateResultStats(result, stats);\n }\n }\n\n return stats;\n}\n\nexport class Runner {\n private checkExecutor = new CheckGateExecutor();\n private reviewExecutor = new ReviewGateExecutor();\n private results: GateResult[] = [];\n private shouldStop = false;\n\n constructor(\n private config: LoadedConfig,\n private logger: Logger,\n private reporter: ConsoleReporter,\n private previousFailuresMap?: Map<string, Map<string, PreviousViolation[]>>,\n private changeOptions?: { commit?: string; uncommitted?: boolean },\n private baseBranchOverride?: string,\n private passedSlotsMap?: Map<\n string,\n Map<number, { adapter: string; passIteration: number }>\n >,\n private debugLogger?: DebugLogger,\n private isRerun?: boolean,\n ) {}\n\n async run(jobs: Job[]): Promise<RunnerOutcome> {\n // Note: logger.init() is called by the caller (run-executor, check, review)\n // before startConsoleLog to ensure unified numbering\n\n // Enforce retry limit before executing gates\n const maxRetries = this.config.project.max_retries ?? 3;\n const currentRunNumber = this.logger.getRunNumber();\n const maxAllowedRuns = maxRetries + 1;\n\n if (currentRunNumber > maxAllowedRuns) {\n console.error(\n `Retry limit exceeded: run ${currentRunNumber} exceeds max allowed ${maxAllowedRuns} (max_retries: ${maxRetries}). Human input required on what to do next.`,\n );\n process.exitCode = 1;\n return {\n allPassed: false,\n anySkipped: false,\n retryLimitExceeded: true,\n anyErrors: false,\n stats: { fixed: 0, skipped: 0, failed: 0 },\n gateResults: [],\n };\n }\n\n const parallelEnabled = this.config.project.allow_parallel;\n const parallelJobs = parallelEnabled\n ? jobs.filter((j) => j.gateConfig.parallel)\n : [];\n const sequentialJobs = parallelEnabled\n ? jobs.filter((j) => !j.gateConfig.parallel)\n : jobs;\n\n // Start parallel jobs\n const parallelPromises = parallelJobs.map((job) => this.executeJob(job));\n\n // Start sequential jobs\n const sequentialPromise = (async () => {\n for (const job of sequentialJobs) {\n if (this.shouldStop) break;\n await this.executeJob(job);\n }\n })();\n\n await Promise.all([...parallelPromises, sequentialPromise]);\n\n const allPassed = this.results.every((r) => r.status === 'pass');\n const anySkipped = this.results.some(\n (r) => r.skipped && r.skipped.length > 0,\n );\n const anyErrors = this.results.some((r) => r.status === 'error');\n const retryLimitExceeded =\n !allPassed && currentRunNumber === maxAllowedRuns;\n\n // Calculate statistics from results\n const stats = calculateStats(this.results);\n\n // If on the final allowed run and gates failed, report \"Retry limit exceeded\"\n if (retryLimitExceeded) {\n await this.reporter.printSummary(\n this.results,\n this.config.project.log_dir,\n 'Retry limit exceeded',\n );\n return {\n allPassed: false,\n anySkipped,\n retryLimitExceeded: true,\n anyErrors,\n stats,\n gateResults: this.results,\n };\n }\n\n await this.reporter.printSummary(this.results, this.config.project.log_dir);\n\n return {\n allPassed,\n anySkipped,\n retryLimitExceeded: false,\n anyErrors,\n stats,\n gateResults: this.results,\n };\n }\n\n private async executeJob(job: Job): Promise<void> {\n if (this.shouldStop) return;\n\n this.reporter.onJobStart(job);\n\n let result: GateResult;\n\n const effectiveBaseBranch =\n this.baseBranchOverride || this.config.project.base_branch;\n\n try {\n if (job.type === 'check') {\n const logPath = await this.logger.getLogPath(job.id);\n const jobLogger = await this.logger.createJobLogger(job.id);\n result = await this.checkExecutor.execute(\n job.id,\n job.gateConfig as LoadedCheckGateConfig,\n job.workingDirectory,\n jobLogger,\n { baseBranch: effectiveBaseBranch, isRerun: this.isRerun },\n );\n result.logPath = logPath;\n } else {\n // Use sanitized Job ID for lookup because that's what log-parser uses (based on filenames)\n const safeJobId = sanitizeJobId(job.id);\n result = await this.reviewExecutor.execute(\n job.id,\n job.gateConfig as LoadedReviewGateConfig,\n job.entryPoint,\n this.logger.createLoggerFactory(job.id),\n effectiveBaseBranch,\n this.previousFailuresMap?.get(safeJobId),\n this.changeOptions,\n this.config.project.rerun_new_issue_threshold,\n this.passedSlotsMap?.get(safeJobId),\n this.config.project.log_dir,\n this.config.project.cli?.adapters,\n );\n }\n } catch (err) {\n console.error('[ERROR] Execution failed for', job.id, ':', err);\n result = {\n jobId: job.id,\n status: 'error',\n duration: 0,\n message: err instanceof Error ? err.message : String(err),\n };\n }\n\n this.results.push(result);\n this.reporter.onJobComplete(job, result);\n await this.logGateResults(job.id, result);\n\n this.checkFailFast(job, result);\n }\n\n private checkFailFast(job: Job, result: GateResult): void {\n if (result.status === 'pass') return;\n if (job.type !== 'check') return;\n\n // We know it's a check gate, so cast to check config to access fail_fast safely\n const config = job.gateConfig as LoadedCheckGateConfig;\n if (config.fail_fast) {\n this.shouldStop = true;\n }\n }\n\n /**\n * Log gate results to the debug log.\n * For review gates with subResults, logs one entry per reviewer.\n * For check gates, logs a single entry.\n */\n private async logGateResults(\n jobId: string,\n result: GateResult,\n ): Promise<void> {\n if (!this.debugLogger) return;\n\n if (result.subResults && result.subResults.length > 0) {\n for (const sub of result.subResults) {\n const cli = sub.nameSuffix.match(/\\((.+?)@\\d+\\)/)?.[1];\n await this.debugLogger.logGateResult(\n jobId,\n sub.status,\n sub.duration ?? result.duration,\n { violations: sub.errorCount, cli },\n );\n }\n } else {\n await this.debugLogger.logGateResult(\n jobId,\n result.status,\n result.duration,\n { violations: result.errorCount },\n );\n }\n }\n}\n",
|
|
47
|
-
"import fs from 'node:fs/promises';\nimport chalk from 'chalk';\nimport type { Job } from '../core/job.js';\nimport type { GateResult } from '../gates/result.js';\nimport { reconstructHistory } from '../utils/log-parser.js';\n\n/** Map a gate status to its chalk color and label */\nfunction statusStyle(status: string): {\n color: typeof chalk.green;\n label: string;\n} {\n if (status === 'pass') return { color: chalk.green, label: 'PASS' };\n if (status === 'fail') return { color: chalk.red, label: 'FAIL' };\n return { color: chalk.magenta, label: 'ERROR' };\n}\n\n/** Build the \"Log: path\" suffix shown for non-pass results */\nfunction logSuffix(logPath: string | undefined): string {\n if (!logPath) return '';\n const prefix = logPath.endsWith('.json') ? 'Review:' : 'Log:';\n return `\\n ${prefix} ${logPath}`;\n}\n\n/** Format and print one sub-result line */\nfunction printSubResult(\n jobId: string,\n sub: NonNullable<GateResult['subResults']>[number],\n duration: string,\n): void {\n const { color, label } = statusStyle(sub.status);\n const logInfo = sub.status !== 'pass' ? logSuffix(sub.logPath) : '';\n console.error(\n color(\n `[${label}] ${jobId} ${chalk.dim(sub.nameSuffix)} (${duration}) - ${sub.message}${logInfo}`,\n ),\n );\n}\n\n/** Format and print a single (non-split) result line */\nfunction printSingleResult(\n jobId: string,\n result: GateResult,\n duration: string,\n): void {\n const { color, label } = statusStyle(result.status);\n const message = result.message ?? '';\n\n let logInfo = '';\n if (result.status !== 'pass') {\n const logPath = result.logPath || result.logPaths?.[0];\n if (logPath) {\n logInfo = `\\n Log: ${logPath}`;\n }\n }\n\n if (result.status === 'pass') {\n console.error(color(`[${label}] ${jobId} (${duration})`));\n } else {\n console.error(\n color(`[${label}] ${jobId} (${duration}) - ${message}${logInfo}`),\n );\n }\n}\n\nconst SEPARATOR = '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━';\n\n/** Print iteration history (fixed / skipped items) from log directory */\nasync function printIterationHistory(\n logDir: string,\n results: GateResult[],\n): Promise<void> {\n try {\n const history = await reconstructHistory(logDir);\n printFixedAndSkipped(history);\n\n const totalFixed = history.reduce(\n (sum, iter) => sum + iter.fixed.length,\n 0,\n );\n const totalSkipped = history.reduce(\n (sum, iter) => sum + iter.skipped.length,\n 0,\n );\n const totalFailed = countTotalFailed(results);\n\n console.error(`\\n${chalk.bold(SEPARATOR)}`);\n const iterationsText =\n history.length > 1 ? ` after ${history.length} iterations` : '';\n console.error(\n `Total: ${totalFixed} fixed, ${totalSkipped} skipped, ${totalFailed} failed${iterationsText}`,\n );\n } catch (err) {\n console.warn(\n chalk.yellow(`Warning: Failed to reconstruct history: ${err}`),\n );\n }\n}\n\n/** Format a label with optional adapter suffix */\nfunction formatJobLabel(jobId: string, adapter?: string): string {\n return adapter ? `${jobId} (${adapter})` : jobId;\n}\n\n/** Print each iteration's fixed and skipped entries */\nfunction printFixedAndSkipped(\n history: Awaited<ReturnType<typeof reconstructHistory>>,\n): void {\n for (const iter of history) {\n if (iter.fixed.length === 0 && iter.skipped.length === 0) continue;\n\n console.error(`\\nIteration ${iter.iteration}:`);\n for (const f of iter.fixed) {\n console.error(\n chalk.green(\n ` ✓ Fixed: ${formatJobLabel(f.jobId, f.adapter)} - ${f.details}`,\n ),\n );\n }\n printSkippedItems(iter.skipped);\n }\n}\n\n/** Print skipped items for a single iteration */\nfunction printSkippedItems(\n skipped: Awaited<ReturnType<typeof reconstructHistory>>[number]['skipped'],\n): void {\n for (const s of skipped) {\n console.error(\n chalk.yellow(\n ` ⊘ Skipped: ${formatJobLabel(s.jobId, s.adapter)} - ${s.file}:${s.line} ${s.issue}`,\n ),\n );\n if (s.result) {\n console.error(chalk.dim(` Reason: ${s.result}`));\n }\n }\n}\n\n/** Check if a status represents a failure */\nfunction isFailureStatus(status: string): boolean {\n return status === 'fail' || status === 'error';\n}\n\n/** Count failures for a single result (either from subResults or the result itself) */\nfunction countResultFailures(res: GateResult): number {\n if (res.subResults && res.subResults.length > 0) {\n return res.subResults\n .filter((sub) => isFailureStatus(sub.status))\n .reduce((sum, sub) => sum + (sub.errorCount ?? 1), 0);\n }\n return isFailureStatus(res.status) ? (res.errorCount ?? 1) : 0;\n}\n\n/** Count total failed items across results, accounting for subResults */\nfunction countTotalFailed(results: GateResult[]): number {\n return results.reduce((total, res) => total + countResultFailures(res), 0);\n}\n\n/** Determine the overall status string and color for the summary */\nfunction computeOverallStatus(\n results: GateResult[],\n statusOverride?: string,\n): { overallStatus: string; statusColor: typeof chalk.green } {\n if (statusOverride) {\n return { overallStatus: statusOverride, statusColor: chalk.red };\n }\n\n const hasError = results.some((r) => r.status === 'error');\n if (hasError) {\n return { overallStatus: 'Error', statusColor: chalk.magenta };\n }\n\n const hasFail = results.some((r) => r.status === 'fail');\n if (hasFail) {\n return { overallStatus: 'Failed', statusColor: chalk.red };\n }\n\n const anySkipped = results.some((r) => r.skipped && r.skipped.length > 0);\n if (anySkipped) {\n return {\n overallStatus: 'Passed with warnings',\n statusColor: chalk.yellow,\n };\n }\n\n return { overallStatus: 'Passed', statusColor: chalk.green };\n}\n\n// ── Review log parsers ───────────────────────────────────────────────\n\n/** Parse \"--- Parsed Result ---\" violations from review logs */\nfunction parseReviewParsedViolations(logContent: string): string[] {\n const details: string[] = [];\n const parsedResultRegex = /---\\s*Parsed Result(?:\\s+\\(([^)]+)\\))?\\s*---/;\n const match = logContent.match(parsedResultRegex);\n if (!match || match.index === undefined) return details;\n\n const violationsSection = logContent.substring(match.index);\n const sectionLines = violationsSection.split('\\n');\n\n for (let i = 0; i < sectionLines.length; i++) {\n // biome-ignore lint/style/noNonNullAssertion: index within bounds\n const line = sectionLines[i]!;\n const violationMatch = line.match(/^\\d+\\.\\s+(.+?):(\\d+|\\?)\\s+-\\s+(.+)$/);\n if (!violationMatch) continue;\n\n const file = violationMatch[1];\n const lineNum = violationMatch[2];\n const issue = violationMatch[3];\n details.push(` ${chalk.cyan(file)}:${chalk.yellow(lineNum)} - ${issue}`);\n\n if (i + 1 < sectionLines.length) {\n // biome-ignore lint/style/noNonNullAssertion: bounds checked above\n const nextLine = sectionLines[i + 1]!.trim();\n if (nextLine.startsWith('Fix:')) {\n details.push(\n ` ${chalk.dim('Fix:')} ${nextLine.substring(4).trim()}`,\n );\n i++; // Skip the fix line\n }\n }\n }\n\n return details;\n}\n\n/** Parse JSON violation blocks from review logs */\nfunction parseReviewJsonViolations(logContent: string): string[] {\n const details: string[] = [];\n const jsonStart = logContent.indexOf('{');\n const jsonEnd = logContent.lastIndexOf('}');\n if (jsonStart === -1 || jsonEnd === -1 || jsonEnd <= jsonStart) {\n return details;\n }\n\n try {\n const jsonStr = logContent.substring(jsonStart, jsonEnd + 1);\n const json = JSON.parse(jsonStr);\n if (\n json.status !== 'fail' ||\n !json.violations ||\n !Array.isArray(json.violations)\n ) {\n return details;\n }\n\n for (const v of json.violations as Array<{\n file?: string;\n line?: number | string;\n issue?: string;\n fix?: string;\n }>) {\n const file = v.file || 'unknown';\n const line = v.line || '?';\n const issue = v.issue || 'Unknown issue';\n details.push(` ${chalk.cyan(file)}:${chalk.yellow(line)} - ${issue}`);\n if (v.fix) {\n details.push(` ${chalk.dim('Fix:')} ${v.fix}`);\n }\n }\n } catch {\n // JSON parse failed, fall through\n }\n\n return details;\n}\n\n/** Extract error messages from review logs as a last resort */\nfunction parseReviewErrorFallback(logContent: string): string[] {\n const details: string[] = [];\n\n const errorIndex = logContent.indexOf('Error:');\n if (errorIndex !== -1) {\n const afterError = logContent.substring(errorIndex + 6).trim();\n // biome-ignore lint/style/noNonNullAssertion: split always has at least one element\n const firstErrorLine = afterError.split('\\n')[0]!.trim();\n if (\n firstErrorLine &&\n !firstErrorLine.startsWith('Usage:') &&\n !firstErrorLine.startsWith('Commands:')\n ) {\n details.push(` ${firstErrorLine}`);\n }\n }\n\n if (details.length === 0) {\n const resultMatch = logContent.match(\n /Result:\\s*error(?:\\s*-\\s*(.+?))?(?:\\n|$)/,\n );\n if (resultMatch?.[1]) {\n details.push(` ${resultMatch[1]}`);\n }\n }\n\n return details;\n}\n\n// ── Check log parsers ────────────────────────────────────────────────\n\n/** Parse STDERR section from check logs */\nfunction parseCheckStderr(logContent: string): string[] {\n const details: string[] = [];\n const stderrStart = logContent.indexOf('STDERR:');\n if (stderrStart === -1) return details;\n\n const stderrSection = logContent.substring(stderrStart + 7).trim();\n const stderrLines = stderrSection.split('\\n').filter((line) => {\n return (\n line.trim() &&\n !line.includes('STDOUT:') &&\n !line.includes('Command failed:') &&\n !line.includes('Result:')\n );\n });\n if (stderrLines.length > 0) {\n details.push(...stderrLines.slice(0, 10).map((line) => ` ${line.trim()}`));\n }\n return details;\n}\n\n/** Parse error messages from check logs as a fallback */\nfunction parseCheckErrorFallback(logContent: string): string[] {\n const details: string[] = [];\n const errorMatch = logContent.match(/Command failed:\\s*(.+?)(?:\\n|$)/);\n if (errorMatch) {\n details.push(` ${errorMatch[1]}`);\n } else {\n const resultMatch = logContent.match(\n /Result:\\s*(fail|error)\\s*-\\s*(.+?)(?:\\n|$)/,\n );\n if (resultMatch) {\n details.push(` ${resultMatch[2]}`);\n }\n }\n return details;\n}\n\n// ── Main class ───────────────────────────────────────────────────────\n\nexport class ConsoleReporter {\n onJobStart(job: Job) {\n console.error(chalk.blue(`[START] ${job.id}`));\n }\n\n onJobComplete(job: Job, result: GateResult) {\n const duration = `${(result.duration / 1000).toFixed(2)}s`;\n\n if (result.subResults && result.subResults.length > 0) {\n for (const sub of result.subResults) {\n printSubResult(job.id, sub, duration);\n }\n } else {\n printSingleResult(job.id, result, duration);\n }\n }\n\n async printSummary(\n results: GateResult[],\n logDir?: string,\n statusOverride?: string,\n ) {\n console.error(`\\n${chalk.bold(SEPARATOR)}`);\n console.error(chalk.bold('RESULTS SUMMARY'));\n console.error(chalk.bold(SEPARATOR));\n\n if (logDir) {\n await printIterationHistory(logDir, results);\n }\n\n const { overallStatus, statusColor } = computeOverallStatus(\n results,\n statusOverride,\n );\n console.error(statusColor(`Status: ${overallStatus}`));\n console.error(chalk.bold(`${SEPARATOR}\\n`));\n }\n\n /** @internal Public for testing */\n async extractFailureDetails(result: GateResult): Promise<string[]> {\n const logPaths =\n result.logPaths || (result.logPath ? [result.logPath] : []);\n\n if (logPaths.length === 0) {\n return [result.message ?? 'Unknown error'];\n }\n\n const allDetails: string[] = [];\n for (const logPath of logPaths) {\n try {\n const logContent = await fs.readFile(logPath, 'utf-8');\n const details = this.parseLogContent(logContent, result.jobId);\n allDetails.push(...details);\n } catch (_error: unknown) {\n allDetails.push(`(Could not read log file: ${logPath})`);\n }\n }\n\n return allDetails.length > 0\n ? allDetails\n : [result.message ?? 'Unknown error'];\n }\n\n private parseLogContent(logContent: string, jobId: string): string[] {\n if (jobId.startsWith('review:')) {\n return this.parseReviewLog(logContent);\n }\n return this.parseCheckLog(logContent);\n }\n\n private parseReviewLog(logContent: string): string[] {\n const parsed = parseReviewParsedViolations(logContent);\n if (parsed.length > 0) return parsed;\n\n const json = parseReviewJsonViolations(logContent);\n if (json.length > 0) return json;\n\n const errors = parseReviewErrorFallback(logContent);\n if (errors.length > 0) return errors;\n\n return [' (See log file for details)'];\n }\n\n private parseCheckLog(logContent: string): string[] {\n const stderr = parseCheckStderr(logContent);\n if (stderr.length > 0) return stderr;\n\n const errors = parseCheckErrorFallback(logContent);\n if (errors.length > 0) return errors;\n\n return [' (See log file for details)'];\n }\n}\n",
|
|
48
|
+
"import fs from 'node:fs/promises';\nimport chalk from 'chalk';\nimport type { Job } from '../core/job.js';\nimport type { GateResult } from '../gates/result.js';\nimport { reconstructHistory } from '../utils/log-parser.js';\n\n/** Map a gate status to its chalk color and label */\nfunction statusStyle(status: string): {\n color: typeof chalk.green;\n label: string;\n} {\n if (status === 'pass') return { color: chalk.green, label: 'PASS' };\n if (status === 'fail') return { color: chalk.red, label: 'FAIL' };\n return { color: chalk.magenta, label: 'ERROR' };\n}\n\n/** Build the \"Log: path\" suffix shown for non-pass results */\nfunction logSuffix(logPath: string | undefined): string {\n if (!logPath) return '';\n const prefix = logPath.endsWith('.json') ? 'Review:' : 'Log:';\n return `\\n ${prefix} ${logPath}`;\n}\n\n/** Format and print one sub-result line */\nfunction printSubResult(\n jobId: string,\n sub: NonNullable<GateResult['subResults']>[number],\n duration: string,\n): void {\n const { color, label } = statusStyle(sub.status);\n const logInfo = sub.status !== 'pass' ? logSuffix(sub.logPath) : '';\n console.error(\n color(\n `[${label}] ${jobId} ${chalk.dim(sub.nameSuffix)} (${duration}) - ${sub.message}${logInfo}`,\n ),\n );\n}\n\n/** Format and print a single (non-split) result line */\nfunction printSingleResult(\n jobId: string,\n result: GateResult,\n duration: string,\n): void {\n const { color, label } = statusStyle(result.status);\n const message = result.message ?? '';\n\n let logInfo = '';\n if (result.status !== 'pass') {\n const logPath = result.logPath || result.logPaths?.[0];\n if (logPath) {\n logInfo = `\\n Log: ${logPath}`;\n }\n }\n\n if (result.status === 'pass') {\n console.error(color(`[${label}] ${jobId} (${duration})`));\n } else {\n console.error(\n color(`[${label}] ${jobId} (${duration}) - ${message}${logInfo}`),\n );\n }\n}\n\nconst SEPARATOR = '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━';\n\n/** Print iteration history (fixed / skipped items) from log directory */\nasync function printIterationHistory(\n logDir: string,\n results: GateResult[],\n): Promise<void> {\n try {\n const history = await reconstructHistory(logDir);\n printFixedAndSkipped(history);\n\n const totalFixed = history.reduce(\n (sum, iter) => sum + iter.fixed.length,\n 0,\n );\n const totalSkipped = history.reduce(\n (sum, iter) => sum + iter.skipped.length,\n 0,\n );\n const totalFailed = countTotalFailed(results);\n\n console.error(`\\n${chalk.bold(SEPARATOR)}`);\n const iterationsText =\n history.length > 1 ? ` after ${history.length} iterations` : '';\n console.error(\n `Total: ${totalFixed} fixed, ${totalSkipped} skipped, ${totalFailed} failed${iterationsText}`,\n );\n } catch (err) {\n console.warn(\n chalk.yellow(`Warning: Failed to reconstruct history: ${err}`),\n );\n }\n}\n\n/** Format a label with optional adapter suffix */\nfunction formatJobLabel(jobId: string, adapter?: string): string {\n return adapter ? `${jobId} (${adapter})` : jobId;\n}\n\n/** Print each iteration's fixed and skipped entries */\nfunction printFixedAndSkipped(\n history: Awaited<ReturnType<typeof reconstructHistory>>,\n): void {\n for (const iter of history) {\n if (iter.fixed.length === 0 && iter.skipped.length === 0) continue;\n\n console.error(`\\nIteration ${iter.iteration}:`);\n for (const f of iter.fixed) {\n console.error(\n chalk.green(\n ` ✓ Fixed: ${formatJobLabel(f.jobId, f.adapter)} - ${f.details}`,\n ),\n );\n }\n printSkippedItems(iter.skipped);\n }\n}\n\n/** Print skipped items for a single iteration */\nfunction printSkippedItems(\n skipped: Awaited<ReturnType<typeof reconstructHistory>>[number]['skipped'],\n): void {\n for (const s of skipped) {\n console.error(\n chalk.yellow(\n ` ⊘ Skipped: ${formatJobLabel(s.jobId, s.adapter)} - ${s.file}:${s.line} ${s.issue}`,\n ),\n );\n if (s.result) {\n console.error(chalk.dim(` Reason: ${s.result}`));\n }\n }\n}\n\n/** Check if a status represents a failure */\nfunction isFailureStatus(status: string): boolean {\n return status === 'fail' || status === 'error';\n}\n\n/** Count failures for a single result (either from subResults or the result itself) */\nfunction countResultFailures(res: GateResult): number {\n if (res.subResults && res.subResults.length > 0) {\n return res.subResults\n .filter((sub) => isFailureStatus(sub.status))\n .reduce((sum, sub) => sum + (sub.errorCount ?? 1), 0);\n }\n return isFailureStatus(res.status) ? (res.errorCount ?? 1) : 0;\n}\n\n/** Count total failed items across results, accounting for subResults */\nfunction countTotalFailed(results: GateResult[]): number {\n return results.reduce((total, res) => total + countResultFailures(res), 0);\n}\n\n/** Determine the overall status string and color for the summary */\nfunction computeOverallStatus(\n results: GateResult[],\n statusOverride?: string,\n): { overallStatus: string; statusColor: typeof chalk.green } {\n if (statusOverride) {\n return { overallStatus: statusOverride, statusColor: chalk.red };\n }\n\n const hasError = results.some((r) => r.status === 'error');\n if (hasError) {\n return { overallStatus: 'Error', statusColor: chalk.magenta };\n }\n\n const hasFail = results.some((r) => r.status === 'fail');\n if (hasFail) {\n return { overallStatus: 'Failed', statusColor: chalk.red };\n }\n\n const anySkipped = results.some((r) => r.skipped && r.skipped.length > 0);\n if (anySkipped) {\n return {\n overallStatus: 'Passed with warnings',\n statusColor: chalk.yellow,\n };\n }\n\n return { overallStatus: 'Passed', statusColor: chalk.green };\n}\n\n// ── Review log parsers ───────────────────────────────────────────────\n\n/** Parse \"--- Parsed Result ---\" violations from review logs */\nfunction parseReviewParsedViolations(logContent: string): string[] {\n const details: string[] = [];\n const parsedResultRegex = /---\\s*Parsed Result(?:\\s+\\(([^)]+)\\))?\\s*---/;\n const match = logContent.match(parsedResultRegex);\n if (!match || match.index === undefined) return details;\n\n const violationsSection = logContent.substring(match.index);\n const sectionLines = violationsSection.split('\\n');\n\n for (let i = 0; i < sectionLines.length; i++) {\n // biome-ignore lint/style/noNonNullAssertion: index within bounds\n const line = sectionLines[i]!;\n const violationMatch = line.match(/^\\d+\\.\\s+(.+?):(\\d+|\\?)\\s+-\\s+(.+)$/);\n if (!violationMatch) continue;\n\n const file = violationMatch[1];\n const lineNum = violationMatch[2];\n const issue = violationMatch[3];\n details.push(` ${chalk.cyan(file)}:${chalk.yellow(lineNum)} - ${issue}`);\n\n if (i + 1 < sectionLines.length) {\n // biome-ignore lint/style/noNonNullAssertion: bounds checked above\n const nextLine = sectionLines[i + 1]!.trim();\n if (nextLine.startsWith('Fix:')) {\n details.push(\n ` ${chalk.dim('Fix:')} ${nextLine.substring(4).trim()}`,\n );\n i++; // Skip the fix line\n }\n }\n }\n\n return details;\n}\n\n/** Parse JSON violation blocks from review logs */\nfunction parseReviewJsonViolations(logContent: string): string[] {\n const details: string[] = [];\n const jsonStart = logContent.indexOf('{');\n const jsonEnd = logContent.lastIndexOf('}');\n if (jsonStart === -1 || jsonEnd === -1 || jsonEnd <= jsonStart) {\n return details;\n }\n\n try {\n const jsonStr = logContent.substring(jsonStart, jsonEnd + 1);\n const json = JSON.parse(jsonStr);\n if (\n json.status !== 'fail' ||\n !json.violations ||\n !Array.isArray(json.violations)\n ) {\n return details;\n }\n\n for (const v of json.violations as Array<{\n file?: string;\n line?: number | string;\n issue?: string;\n fix?: string;\n }>) {\n const file = v.file || 'unknown';\n const line = v.line || '?';\n const issue = v.issue || 'Unknown issue';\n details.push(` ${chalk.cyan(file)}:${chalk.yellow(line)} - ${issue}`);\n if (v.fix) {\n details.push(` ${chalk.dim('Fix:')} ${v.fix}`);\n }\n }\n } catch {\n // JSON parse failed, fall through\n }\n\n return details;\n}\n\n/** Extract error messages from review logs as a last resort */\nfunction parseReviewErrorFallback(logContent: string): string[] {\n const details: string[] = [];\n\n const errorIndex = logContent.indexOf('Error:');\n if (errorIndex !== -1) {\n const afterError = logContent.substring(errorIndex + 6).trim();\n // biome-ignore lint/style/noNonNullAssertion: split always has at least one element\n const firstErrorLine = afterError.split('\\n')[0]!.trim();\n if (\n firstErrorLine &&\n !firstErrorLine.startsWith('Usage:') &&\n !firstErrorLine.startsWith('Commands:')\n ) {\n details.push(` ${firstErrorLine}`);\n }\n }\n\n if (details.length === 0) {\n const resultMatch = logContent.match(\n /Result:\\s*error(?:\\s*-\\s*(.+?))?(?:\\n|$)/,\n );\n if (resultMatch?.[1]) {\n details.push(` ${resultMatch[1]}`);\n }\n }\n\n return details;\n}\n\n// ── Check log parsers ────────────────────────────────────────────────\n\n/** Parse STDERR section from check logs */\nfunction parseCheckStderr(logContent: string): string[] {\n const details: string[] = [];\n const stderrStart = logContent.indexOf('STDERR:');\n if (stderrStart === -1) return details;\n\n const stderrSection = logContent.substring(stderrStart + 7).trim();\n const stderrLines = stderrSection.split('\\n').filter((line) => {\n return (\n line.trim() &&\n !line.includes('STDOUT:') &&\n !line.includes('Command failed:') &&\n !line.includes('Result:')\n );\n });\n if (stderrLines.length > 0) {\n details.push(...stderrLines.slice(0, 10).map((line) => ` ${line.trim()}`));\n }\n return details;\n}\n\n/** Parse error messages from check logs as a fallback */\nfunction parseCheckErrorFallback(logContent: string): string[] {\n const details: string[] = [];\n const errorMatch = logContent.match(/Command failed:\\s*(.+?)(?:\\n|$)/);\n if (errorMatch) {\n details.push(` ${errorMatch[1]}`);\n } else {\n const resultMatch = logContent.match(\n /Result:\\s*(fail|error)\\s*-\\s*(.+?)(?:\\n|$)/,\n );\n if (resultMatch) {\n details.push(` ${resultMatch[2]}`);\n }\n }\n return details;\n}\n\n// ── Main class ───────────────────────────────────────────────────────\n\nexport class ConsoleReporter {\n onJobStart(job: Job) {\n console.error(chalk.blue(`[START] ${job.id}`));\n }\n\n onJobComplete(job: Job, result: GateResult) {\n const duration = `${(result.duration / 1000).toFixed(2)}s`;\n\n if (result.subResults && result.subResults.length > 0) {\n for (const sub of result.subResults) {\n printSubResult(job.id, sub, duration);\n }\n } else {\n printSingleResult(job.id, result, duration);\n }\n }\n\n async printSummary(\n results: GateResult[],\n logDir?: string,\n statusOverride?: string,\n ) {\n console.error(`\\n${chalk.bold(SEPARATOR)}`);\n console.error(chalk.bold('RESULTS SUMMARY'));\n console.error(chalk.bold(SEPARATOR));\n\n if (logDir) {\n await printIterationHistory(logDir, results);\n }\n\n const { overallStatus, statusColor } = computeOverallStatus(\n results,\n statusOverride,\n );\n console.error(statusColor(`Status: ${overallStatus}`));\n console.log(`Status: ${overallStatus}`);\n console.error(chalk.bold(`${SEPARATOR}\\n`));\n }\n\n /** @internal Public for testing */\n async extractFailureDetails(result: GateResult): Promise<string[]> {\n const logPaths =\n result.logPaths || (result.logPath ? [result.logPath] : []);\n\n if (logPaths.length === 0) {\n return [result.message ?? 'Unknown error'];\n }\n\n const allDetails: string[] = [];\n for (const logPath of logPaths) {\n try {\n const logContent = await fs.readFile(logPath, 'utf-8');\n const details = this.parseLogContent(logContent, result.jobId);\n allDetails.push(...details);\n } catch (_error: unknown) {\n allDetails.push(`(Could not read log file: ${logPath})`);\n }\n }\n\n return allDetails.length > 0\n ? allDetails\n : [result.message ?? 'Unknown error'];\n }\n\n private parseLogContent(logContent: string, jobId: string): string[] {\n if (jobId.startsWith('review:')) {\n return this.parseReviewLog(logContent);\n }\n return this.parseCheckLog(logContent);\n }\n\n private parseReviewLog(logContent: string): string[] {\n const parsed = parseReviewParsedViolations(logContent);\n if (parsed.length > 0) return parsed;\n\n const json = parseReviewJsonViolations(logContent);\n if (json.length > 0) return json;\n\n const errors = parseReviewErrorFallback(logContent);\n if (errors.length > 0) return errors;\n\n return [' (See log file for details)'];\n }\n\n private parseCheckLog(logContent: string): string[] {\n const stderr = parseCheckStderr(logContent);\n if (stderr.length > 0) return stderr;\n\n const errors = parseCheckErrorFallback(logContent);\n if (errors.length > 0) return errors;\n\n return [' (See log file for details)'];\n }\n}\n",
|
|
48
49
|
"import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport type {\n PreviousViolation,\n ReviewFullJsonOutput,\n} from '../gates/result.js';\nimport { getCategoryLogger } from '../output/app-logger.js';\nimport {\n categorizeFiles,\n processCheckFiles,\n processReviewSlots,\n} from './log-parser-find-helpers.js';\nimport {\n collectIterationFailures,\n collectRunNumbers,\n computeFixedViolations,\n parseCheckLog,\n parseReviewLog,\n} from './log-parser-helpers.js';\n\nexport type { PreviousViolation } from '../gates/result.js';\nexport type {\n AdapterFailure,\n GateFailures,\n PassedSlot,\n PreviousFailuresResult,\n RunIteration,\n} from './log-parser-helpers.js';\nexport {\n extractPrefix,\n parseReviewFilename,\n} from './log-parser-helpers.js';\n\nimport type {\n GateFailures,\n PreviousFailuresResult,\n RunIteration,\n} from './log-parser-helpers.js';\nimport { extractPrefix, parseReviewFilename } from './log-parser-helpers.js';\n\nconst log = getCategoryLogger('log-parser');\n\n/**\n * Parses a JSON review file.\n */\nexport async function parseJsonReviewFile(\n jsonPath: string,\n): Promise<GateFailures | null> {\n try {\n const content = await fs.readFile(jsonPath, 'utf-8');\n const data: ReviewFullJsonOutput = JSON.parse(content);\n const filename = path.basename(jsonPath);\n\n const parsed = parseReviewFilename(filename);\n const jobId = parsed ? parsed.jobId : filename.replace(/\\.\\d+\\.json$/, '');\n\n if (data.status === 'pass' || data.status === 'skipped_prior_pass') {\n return null;\n }\n\n const violations = (data.violations || []).map((v) => ({\n ...v,\n status: v.status || 'new',\n }));\n\n if (violations.length === 0 && data.status === 'fail') {\n violations.push({\n file: 'unknown',\n line: '?',\n issue: 'Previous run failed but no violations found in JSON',\n status: 'new',\n });\n }\n\n if (violations.length === 0) return null;\n\n return {\n jobId,\n gateName: '',\n entryPoint: '',\n adapterFailures: [\n {\n adapterName: data.adapter,\n reviewIndex: parsed?.reviewIndex,\n violations,\n },\n ],\n logPath: jsonPath.replace(/\\.json$/, '.log'),\n };\n } catch (error) {\n log.warn(`Failed to parse JSON review file: ${jsonPath} - ${error}`);\n return null;\n }\n}\n\n/**\n * Parses a single log file to extract failures per adapter.\n * Processes both review and check gates.\n */\nexport async function parseLogFile(\n logPath: string,\n): Promise<GateFailures | null> {\n try {\n const content = await fs.readFile(logPath, 'utf-8');\n const filename = path.basename(logPath);\n\n const parsed = parseReviewFilename(filename);\n const jobId = parsed ? parsed.jobId : extractPrefix(filename);\n\n if (content.includes('--- Review Output')) {\n return parseReviewLog(content, jobId, logPath, parsed);\n }\n return parseCheckLog(content, jobId, logPath);\n } catch (_error) {\n return null;\n }\n}\n\n/**\n * Reconstructs the history of fixes and skips after all iterations.\n */\nexport async function reconstructHistory(\n logDir: string,\n): Promise<RunIteration[]> {\n try {\n const files = await fs.readdir(logDir);\n const sortedRuns = collectRunNumbers(files);\n const iterations: RunIteration[] = [];\n let previousFailuresByJob = new Map<string, PreviousViolation[]>();\n\n for (const runNum of sortedRuns) {\n const { currentFailuresByJob, skipped } = await collectIterationFailures(\n logDir,\n files,\n runNum,\n parseJsonReviewFile,\n parseLogFile,\n );\n\n const fixed = computeFixedViolations(\n previousFailuresByJob,\n currentFailuresByJob,\n );\n\n iterations.push({ iteration: runNum, fixed, skipped });\n previousFailuresByJob = currentFailuresByJob;\n }\n\n return iterations;\n } catch (_e) {\n return [];\n }\n}\n\n/**\n * Finds all previous failures and passed slots from the log directory.\n */\nexport async function findPreviousFailures(\n logDir: string,\n gateFilter?: string,\n): Promise<GateFailures[]>;\nexport async function findPreviousFailures(\n logDir: string,\n gateFilter: string | undefined,\n includePassedSlots: true,\n): Promise<PreviousFailuresResult>;\nexport async function findPreviousFailures(\n logDir: string,\n gateFilter?: string,\n includePassedSlots?: boolean,\n): Promise<GateFailures[] | PreviousFailuresResult> {\n try {\n const files = await fs.readdir(logDir);\n const { reviewSlotMap, checkPrefixMap } = categorizeFiles(\n files,\n gateFilter,\n );\n\n const { jobReviewFailures, passedSlots } = await processReviewSlots(\n logDir,\n reviewSlotMap,\n includePassedSlots,\n parseJsonReviewFile,\n parseLogFile,\n );\n\n const gateFailures: GateFailures[] = [];\n for (const [jobId, adapterFailures] of jobReviewFailures.entries()) {\n gateFailures.push({\n jobId,\n gateName: '',\n entryPoint: '',\n adapterFailures,\n logPath: path.join(logDir, `${jobId}.log`),\n });\n }\n\n const checkFailures = await processCheckFiles(\n logDir,\n checkPrefixMap,\n parseJsonReviewFile,\n parseLogFile,\n );\n gateFailures.push(...checkFailures);\n\n if (includePassedSlots) {\n return { failures: gateFailures, passedSlots };\n }\n return gateFailures;\n } catch (error: unknown) {\n if (\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n (error as { code: string }).code === 'ENOENT'\n ) {\n return includePassedSlots ? { failures: [], passedSlots: new Map() } : [];\n }\n return includePassedSlots ? { failures: [], passedSlots: new Map() } : [];\n }\n}\n\n/**\n * Check if any review JSON files in the log directory contain violations\n * with status \"skipped\".\n */\nexport async function hasSkippedViolationsInLogs(opts: {\n logDir: string;\n}): Promise<boolean> {\n const { logDir } = opts;\n try {\n const files = await fs.readdir(logDir);\n for (const file of files) {\n if (!file.endsWith('.json')) continue;\n try {\n const content = await fs.readFile(path.join(logDir, file), 'utf-8');\n const data = JSON.parse(content) as {\n violations?: { status?: string }[];\n };\n if (data.violations?.some((v) => v.status === 'skipped')) {\n return true;\n }\n } catch {\n // Skip unparseable files and continue to next\n }\n }\n return false;\n } catch {\n return false;\n }\n}\n",
|
|
49
50
|
"import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport type {\n PreviousViolation,\n ReviewFullJsonOutput,\n} from '../gates/result.js';\nimport { getCategoryLogger } from '../output/app-logger.js';\nimport type {\n AdapterFailure,\n GateFailures,\n ParseFileFn,\n PassedSlot,\n} from './log-parser-helpers.js';\nimport { parseReviewFilename } from './log-parser-helpers.js';\n\nconst log = getCategoryLogger('log-parser');\n\n// ---- findPreviousFailures helpers ----\n\ninterface ReviewSlotInfo {\n filename: string;\n runNumber: number;\n ext: string;\n}\n\n/**\n * Categorizes files into review slots (with @index pattern) and check prefix maps.\n */\nexport function categorizeFiles(\n files: string[],\n gateFilter?: string,\n): {\n reviewSlotMap: Map<string, ReviewSlotInfo>;\n checkPrefixMap: Map<string, Map<number, Set<string>>>;\n} {\n const reviewSlotMap = new Map<string, ReviewSlotInfo>();\n const checkPrefixMap = new Map<string, Map<number, Set<string>>>();\n\n for (const file of files) {\n const isLog = file.endsWith('.log');\n const isJson = file.endsWith('.json');\n if (!(isLog || isJson)) continue;\n if (gateFilter && !file.includes(gateFilter)) continue;\n\n const parsed = parseReviewFilename(file);\n if (parsed) {\n updateReviewSlot(reviewSlotMap, file, parsed);\n } else {\n addCheckFile(checkPrefixMap, file);\n }\n }\n\n return { reviewSlotMap, checkPrefixMap };\n}\n\nfunction updateReviewSlot(\n reviewSlotMap: Map<string, ReviewSlotInfo>,\n file: string,\n parsed: {\n jobId: string;\n reviewIndex: number;\n runNumber: number;\n ext: string;\n },\n): void {\n const slotKey = `${parsed.jobId}:${parsed.reviewIndex}`;\n const existing = reviewSlotMap.get(slotKey);\n const shouldUpdate =\n !existing ||\n parsed.runNumber > existing.runNumber ||\n (parsed.runNumber === existing.runNumber &&\n parsed.ext === 'json' &&\n existing.ext === 'log');\n if (shouldUpdate) {\n reviewSlotMap.set(slotKey, {\n filename: file,\n runNumber: parsed.runNumber,\n ext: parsed.ext,\n });\n }\n}\n\nfunction addCheckFile(\n checkPrefixMap: Map<string, Map<number, Set<string>>>,\n file: string,\n): void {\n const m = file.match(/^(.+)\\.(\\d+)\\.(log|json)$/);\n if (!(m?.[1] && m[2] && m[3])) return;\n\n const prefix = m[1];\n const runNum = parseInt(m[2], 10);\n const ext = m[3];\n\n let runMap = checkPrefixMap.get(prefix);\n if (!runMap) {\n runMap = new Map();\n checkPrefixMap.set(prefix, runMap);\n }\n\n let exts = runMap.get(runNum);\n if (!exts) {\n exts = new Set();\n runMap.set(runNum, exts);\n }\n exts.add(ext);\n}\n\n/**\n * Checks if a JSON review file has status \"pass\" or \"skipped_prior_pass\".\n */\nexport async function isJsonReviewPassing(jsonPath: string): Promise<boolean> {\n try {\n const content = await fs.readFile(jsonPath, 'utf-8');\n const data: ReviewFullJsonOutput = JSON.parse(content);\n return data.status === 'pass' || data.status === 'skipped_prior_pass';\n } catch {\n return false;\n }\n}\n\n/**\n * Checks if a log file represents a passing review.\n */\nexport async function isLogReviewPassing(logPath: string): Promise<boolean> {\n try {\n const content = await fs.readFile(logPath, 'utf-8');\n if (content.includes('Status: skipped_prior_pass')) return true;\n if (content.includes('--- Review Output')) {\n return content.includes('Status: PASS');\n }\n return content.includes('Result: pass');\n } catch {\n return false;\n }\n}\n\n/**\n * Filters violations by status, removing skipped and warning on unexpected statuses.\n */\nexport function filterViolationsByStatus(\n violations: PreviousViolation[],\n jobId: string,\n): PreviousViolation[] {\n const filtered: PreviousViolation[] = [];\n for (const v of violations) {\n const status = v.status || 'new';\n if (status === 'skipped') continue;\n if (status !== 'new' && status !== 'fixed' && status !== 'skipped') {\n log.warn(\n `Unexpected status \"${status}\" for violation in ${jobId}. Treating as \"new\".`,\n );\n v.status = 'new';\n }\n filtered.push(v);\n }\n return filtered;\n}\n\nfunction recordPassedSlot(\n passedSlots: Map<string, Map<number, PassedSlot>>,\n jobId: string,\n reviewIndex: number,\n runNumber: number,\n adapter: string,\n): void {\n let jobSlots = passedSlots.get(jobId);\n if (!jobSlots) {\n jobSlots = new Map();\n passedSlots.set(jobId, jobSlots);\n }\n jobSlots.set(reviewIndex, { reviewIndex, passIteration: runNumber, adapter });\n}\n\nfunction accumulateReviewFailures(\n jobReviewFailures: Map<string, AdapterFailure[]>,\n failure: GateFailures,\n reviewIndex: number,\n jobId: string,\n): void {\n for (const af of failure.adapterFailures) {\n af.reviewIndex = reviewIndex;\n af.violations = filterViolationsByStatus(af.violations, jobId);\n\n if (af.violations.length > 0) {\n let failures = jobReviewFailures.get(jobId);\n if (!failures) {\n failures = [];\n jobReviewFailures.set(jobId, failures);\n }\n failures.push(af);\n }\n }\n}\n\n/**\n * Processes review slots and returns adapter failures grouped by jobId, plus passed slots.\n */\nexport async function processReviewSlots(\n logDir: string,\n reviewSlotMap: Map<string, ReviewSlotInfo>,\n includePassedSlots: boolean | undefined,\n parseJsonFn: ParseFileFn,\n parseLogFn: ParseFileFn,\n): Promise<{\n jobReviewFailures: Map<string, AdapterFailure[]>;\n passedSlots: Map<string, Map<number, PassedSlot>>;\n}> {\n const jobReviewFailures = new Map<string, AdapterFailure[]>();\n const passedSlots = new Map<string, Map<number, PassedSlot>>();\n\n for (const [slotKey, fileInfo] of reviewSlotMap.entries()) {\n const sepIdx = slotKey.lastIndexOf(':');\n const jobId = slotKey.substring(0, sepIdx);\n const reviewIndex = parseInt(slotKey.substring(sepIdx + 1), 10);\n\n const parsed = parseReviewFilename(fileInfo.filename);\n const adapter = parsed?.adapter || 'unknown';\n\n const filePath = path.join(logDir, fileInfo.filename);\n const isPassing =\n fileInfo.ext === 'json'\n ? await isJsonReviewPassing(filePath)\n : await isLogReviewPassing(filePath);\n\n if (isPassing && includePassedSlots) {\n recordPassedSlot(\n passedSlots,\n jobId,\n reviewIndex,\n fileInfo.runNumber,\n adapter,\n );\n continue;\n }\n\n const failure =\n fileInfo.ext === 'json'\n ? await parseJsonFn(filePath)\n : await parseLogFn(filePath);\n\n if (failure) {\n accumulateReviewFailures(jobReviewFailures, failure, reviewIndex, jobId);\n }\n }\n\n return { jobReviewFailures, passedSlots };\n}\n\n/**\n * Processes check (non-review) files and returns failures.\n */\nexport async function processCheckFiles(\n logDir: string,\n checkPrefixMap: Map<string, Map<number, Set<string>>>,\n parseJsonFn: ParseFileFn,\n parseLogFn: ParseFileFn,\n): Promise<GateFailures[]> {\n const failures: GateFailures[] = [];\n\n for (const [prefix, runMap] of checkPrefixMap.entries()) {\n const latestRun = Math.max(...runMap.keys());\n const exts = runMap.get(latestRun);\n if (!exts) continue;\n\n let failure: GateFailures | null = null;\n if (exts.has('json')) {\n failure = await parseJsonFn(\n path.join(logDir, `${prefix}.${latestRun}.json`),\n );\n } else if (exts.has('log')) {\n failure = await parseLogFn(\n path.join(logDir, `${prefix}.${latestRun}.log`),\n );\n }\n\n if (!failure) continue;\n\n for (const af of failure.adapterFailures) {\n af.violations = filterViolationsByStatus(af.violations, failure.jobId);\n }\n\n const totalViolations = failure.adapterFailures.reduce(\n (sum, af) => sum + af.violations.length,\n 0,\n );\n if (totalViolations > 0) {\n failures.push(failure);\n }\n }\n\n return failures;\n}\n",
|
|
50
51
|
"import path from 'node:path';\nimport type { PreviousViolation } from '../gates/result.js';\n\n// ---- Types ----\n\nexport interface AdapterFailure {\n adapterName: string;\n reviewIndex?: number;\n violations: PreviousViolation[];\n}\n\nexport interface PassedSlot {\n reviewIndex: number;\n passIteration: number;\n adapter: string;\n}\n\nexport interface PreviousFailuresResult {\n failures: GateFailures[];\n passedSlots: Map<string, Map<number, PassedSlot>>;\n}\n\nexport interface GateFailures {\n jobId: string;\n gateName: string;\n entryPoint: string;\n adapterFailures: AdapterFailure[];\n logPath: string;\n}\n\nexport interface RunIteration {\n iteration: number;\n fixed: Array<{\n jobId: string;\n adapter?: string;\n details: string;\n }>;\n skipped: Array<{\n jobId: string;\n adapter?: string;\n file: string;\n line: number | string;\n issue: string;\n result?: string | null;\n }>;\n}\n\n// ---- Shared type for parser function references ----\n\nexport type ParseFileFn = (filePath: string) => Promise<GateFailures | null>;\n\n// ---- Low-level parsing functions ----\n\n/**\n * Parse a review filename to extract the job ID, adapter, review index, and run number.\n */\nexport function parseReviewFilename(filename: string): {\n jobId: string;\n adapter: string;\n reviewIndex: number;\n runNumber: number;\n ext: string;\n} | null {\n const m = filename.match(/^(.+)_([^@]+)@(\\d+)\\.(\\d+)\\.(log|json)$/);\n if (!m) return null;\n const [, jobId, adapter, indexStr, runStr, ext] = m;\n if (!(jobId && adapter && indexStr && runStr && ext)) return null;\n return {\n jobId,\n adapter,\n reviewIndex: parseInt(indexStr, 10),\n runNumber: parseInt(runStr, 10),\n ext,\n };\n}\n\n/**\n * Extract the log prefix (job ID) from a numbered log filename.\n */\nexport function extractPrefix(filename: string): string {\n const m = filename.match(/^(.+)\\.\\d+\\.(log|json)$/);\n if (m?.[1]) return m[1];\n return filename.replace(/\\.(log|json)$/, '');\n}\n\n// ---- parseLogFile helpers ----\n\ninterface LogSection {\n adapter: string;\n startIndex: number;\n}\n\n/**\n * Extracts review sections from log content by matching section headers.\n */\nfunction extractReviewSections(content: string): LogSection[] {\n const sectionRegex = /--- Review Output \\(([^)]+)\\) ---/g;\n const sections: LogSection[] = [];\n let match: RegExpExecArray | null;\n for (;;) {\n match = sectionRegex.exec(content);\n if (!match?.[1]) break;\n sections.push({ adapter: match[1], startIndex: match.index });\n }\n return sections;\n}\n\n/**\n * Extracts a \"Fix:\" annotation from the remainder text after a violation.\n */\nfunction extractFixFromRemainder(remainder: string): string | undefined {\n const fixMatch = remainder.match(/^\\s+Fix:\\s+(.+)$/m);\n const nextViolationIndex = remainder.search(/^\\d+\\./m);\n if (\n fixMatch?.index !== undefined &&\n fixMatch[1] &&\n (nextViolationIndex === -1 || fixMatch.index < nextViolationIndex)\n ) {\n return fixMatch[1].trim();\n }\n return undefined;\n}\n\n/**\n * Parses violations from the \"Parsed Result\" block within a review section.\n */\nfunction parseViolationsFromParsedResult(\n parsedContent: string,\n): PreviousViolation[] {\n const violations: PreviousViolation[] = [];\n const violationRegex = /^\\d+\\.\\s+(.+?):(\\d+|NaN|\\?)\\s+-\\s+(.+)$/gm;\n let vMatch: RegExpExecArray | null;\n for (;;) {\n vMatch = violationRegex.exec(parsedContent);\n if (!(vMatch?.[1] && vMatch[2] && vMatch[3])) break;\n const file = vMatch[1].trim();\n let line: number | string = vMatch[2];\n if (line !== 'NaN' && line !== '?') line = parseInt(line as string, 10);\n const issue = vMatch[3].trim();\n const fix = extractFixFromRemainder(\n parsedContent.substring(vMatch.index + vMatch[0].length),\n );\n violations.push({ file, line, issue, fix });\n }\n return violations;\n}\n\n/**\n * Extracts violations from a section by trying JSON fallback parsing.\n */\nfunction parseViolationsFromJson(sectionContent: string): PreviousViolation[] {\n const violations: PreviousViolation[] = [];\n const firstBrace = sectionContent.indexOf('{');\n const lastBrace = sectionContent.lastIndexOf('}');\n if (firstBrace === -1 || lastBrace === -1 || lastBrace <= firstBrace) {\n return violations;\n }\n try {\n const jsonStr = sectionContent.substring(firstBrace, lastBrace + 1);\n const json = JSON.parse(jsonStr);\n if (json.violations && Array.isArray(json.violations)) {\n for (const v of json.violations) {\n if (v.file && v.issue) {\n violations.push({\n file: v.file,\n line: v.line || 0,\n issue: v.issue,\n fix: v.fix,\n status: v.status,\n result: v.result,\n });\n }\n }\n }\n } catch (_e) {}\n return violations;\n}\n\n/**\n * Processes a single review section and returns an AdapterFailure if violations found.\n */\nfunction processReviewSection(\n content: string,\n sections: LogSection[],\n sectionIndex: number,\n parsed: { reviewIndex: number } | null,\n): AdapterFailure | null {\n const currentSection = sections[sectionIndex];\n if (!currentSection) return null;\n\n const nextSection = sections[sectionIndex + 1];\n const endIndex = nextSection ? nextSection.startIndex : content.length;\n const sectionContent = content.substring(currentSection.startIndex, endIndex);\n\n const parsedResultMatch = sectionContent.match(\n /---\\s*Parsed Result(?:\\s+\\(([^)]+)\\))?\\s*---([\\s\\S]*?)(?:$|---)/,\n );\n\n let violations: PreviousViolation[];\n if (parsedResultMatch?.[2]) {\n const parsedContent = parsedResultMatch[2];\n if (parsedContent.includes('Status: PASS')) return null;\n violations = parseViolationsFromParsedResult(parsedContent);\n } else {\n violations = parseViolationsFromJson(sectionContent);\n }\n\n if (violations.length > 0) {\n return {\n adapterName: currentSection.adapter,\n reviewIndex: parsed?.reviewIndex,\n violations,\n };\n }\n if (parsedResultMatch?.[2]?.includes('Status: FAIL')) {\n return {\n adapterName: currentSection.adapter,\n reviewIndex: parsed?.reviewIndex,\n violations: [\n {\n file: 'unknown',\n line: '?',\n issue:\n 'Previous run failed but specific violations could not be parsed',\n },\n ],\n };\n }\n return null;\n}\n\n/**\n * Parses a review-type log into adapter failures.\n */\nexport function parseReviewLog(\n content: string,\n jobId: string,\n logPath: string,\n parsed: { reviewIndex: number } | null,\n): GateFailures | null {\n const sections = extractReviewSections(content);\n if (sections.length === 0) return null;\n\n const adapterFailures: AdapterFailure[] = [];\n for (let i = 0; i < sections.length; i++) {\n const af = processReviewSection(content, sections, i, parsed);\n if (af) adapterFailures.push(af);\n }\n\n if (adapterFailures.length === 0) return null;\n return { jobId, gateName: '', entryPoint: '', adapterFailures, logPath };\n}\n\n/**\n * Parses a check-type log for pass/fail status.\n */\nexport function parseCheckLog(\n content: string,\n jobId: string,\n logPath: string,\n): GateFailures | null {\n if (content.includes('Result: pass')) return null;\n\n const hasFailure =\n content.includes('Result: fail') ||\n content.includes('Result: error') ||\n content.includes('Command failed:');\n\n if (!hasFailure) return null;\n\n return {\n jobId,\n gateName: '',\n entryPoint: '',\n adapterFailures: [\n {\n adapterName: 'check',\n violations: [{ file: 'check', line: 0, issue: 'Check failed' }],\n },\n ],\n logPath,\n };\n}\n\n// ---- reconstructHistory helpers ----\n\n/**\n * Collects unique run numbers from log/json filenames.\n */\nexport function collectRunNumbers(files: string[]): number[] {\n const runNumbers = new Set<number>();\n for (const file of files) {\n const m = file.match(/\\.(\\d+)\\.(log|json)$/);\n if (m?.[1]) runNumbers.add(parseInt(m[1], 10));\n }\n return Array.from(runNumbers).sort((a, b) => a - b);\n}\n\n/**\n * Parses failures for a single prefix within a run.\n */\nasync function parseRunFile(\n logDir: string,\n runFiles: string[],\n prefix: string,\n runNum: number,\n parseJsonFn: ParseFileFn,\n parseLogFn: ParseFileFn,\n): Promise<GateFailures | null> {\n const jsonFile = runFiles.find(\n (f) => f.startsWith(`${prefix}.${runNum}.`) && f.endsWith('.json'),\n );\n const logFile = runFiles.find(\n (f) => f.startsWith(`${prefix}.${runNum}.`) && f.endsWith('.log'),\n );\n\n if (jsonFile) return parseJsonFn(path.join(logDir, jsonFile));\n if (logFile) return parseLogFn(path.join(logDir, logFile));\n return null;\n}\n\n/**\n * Collects current failures and skipped violations for a single iteration.\n */\nexport async function collectIterationFailures(\n logDir: string,\n files: string[],\n runNum: number,\n parseJsonFn: ParseFileFn,\n parseLogFn: ParseFileFn,\n): Promise<{\n currentFailuresByJob: Map<string, PreviousViolation[]>;\n skipped: RunIteration['skipped'];\n}> {\n const currentFailuresByJob = new Map<string, PreviousViolation[]>();\n const skipped: RunIteration['skipped'] = [];\n\n const runFiles = files.filter((f) => f.includes(`.${runNum}.`));\n const prefixes = new Set(runFiles.map((f) => extractPrefix(f)));\n\n for (const prefix of prefixes) {\n const failure = await parseRunFile(\n logDir,\n runFiles,\n prefix,\n runNum,\n parseJsonFn,\n parseLogFn,\n );\n if (!failure) continue;\n\n for (const af of failure.adapterFailures) {\n const key = af.reviewIndex\n ? `${failure.jobId}:${af.reviewIndex}`\n : `${failure.jobId}:${af.adapterName}`;\n currentFailuresByJob.set(key, af.violations);\n\n for (const v of af.violations) {\n if (v.status === 'skipped') {\n skipped.push({\n jobId: failure.jobId,\n adapter: af.adapterName,\n file: v.file,\n line: v.line,\n issue: v.issue,\n result: v.result,\n });\n }\n }\n }\n }\n\n return { currentFailuresByJob, skipped };\n}\n\n/**\n * Computes which violations from the previous iteration were truly fixed.\n */\nexport function computeFixedViolations(\n previousFailuresByJob: Map<string, PreviousViolation[]>,\n currentFailuresByJob: Map<string, PreviousViolation[]>,\n): RunIteration['fixed'] {\n const fixed: RunIteration['fixed'] = [];\n\n for (const [key, prevViolations] of previousFailuresByJob.entries()) {\n const current = currentFailuresByJob.get(key);\n const sep = key.lastIndexOf(':');\n const jobId = key.substring(0, sep);\n const adapter = key.substring(sep + 1);\n\n const trulyFixed = prevViolations.filter((pv) => {\n if (pv.status === 'skipped') return false;\n return !current?.some(\n (cv) =>\n cv.file === pv.file && cv.line === pv.line && cv.issue === pv.issue,\n );\n });\n\n if (trulyFixed.length === 0) continue;\n\n if (jobId.startsWith('check_')) {\n fixed.push({\n jobId,\n details: `${trulyFixed.length} violations resolved`,\n });\n } else {\n for (const f of trulyFixed) {\n fixed.push({\n jobId,\n adapter,\n details: `${f.file}:${f.line} ${f.issue}`,\n });\n }\n }\n }\n\n return fixed;\n}\n",
|
|
@@ -72,7 +73,7 @@
|
|
|
72
73
|
"import type { Command } from 'commander';\nimport { executeGateCommand } from './gate-command.js';\n\nexport function registerReviewCommand(program: Command): void {\n program\n .command('review')\n .description('Run only applicable reviews for detected changes')\n .option(\n '-b, --base-branch <branch>',\n 'Override base branch for change detection',\n )\n .option('-g, --gate <name>', 'Run specific review gate only')\n .option('-c, --commit <sha>', 'Use diff for a specific commit')\n .option(\n '-u, --uncommitted',\n 'Use diff for current uncommitted changes (staged and unstaged)',\n )\n .action((options) => executeGateCommand('review', options));\n}\n",
|
|
73
74
|
"import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsyncOriginal = promisify(execFile);\nexport let execFileAsync = execFileAsyncOriginal;\n\nexport function setExecFileAsync(fn: typeof execFileAsyncOriginal) {\n execFileAsync = fn;\n}\n\n/**\n * Run a git command safely using execFile (no shell interpolation).\n */\nasync function gitExec(args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args);\n return stdout;\n}\n\nexport interface DiffStats {\n baseRef: string; // e.g., \"origin/main\", \"abc123\", \"uncommitted\"\n total: number; // Total files changed\n newFiles: number; // Files added\n modifiedFiles: number; // Files modified\n deletedFiles: number; // Files deleted\n linesAdded: number; // Total lines added\n linesRemoved: number; // Total lines removed\n}\n\nexport interface DiffStatsOptions {\n commit?: string; // If provided, get diff for this commit vs its parent\n uncommitted?: boolean; // If true, only get uncommitted changes\n fixBase?: string; // If provided, get diff from this ref to current working tree\n}\n\n/**\n * Compute diff statistics for changed files.\n */\nexport async function computeDiffStats(\n baseBranch: string,\n options: DiffStatsOptions = {},\n): Promise<DiffStats> {\n // Determine what we're diffing\n if (options.commit) {\n return computeCommitDiffStats(options.commit);\n }\n\n // If fixBase is provided, compute diff from that ref to current working tree\n // This is used in verification mode to show only NEW changes since the snapshot\n if (options.fixBase) {\n return computeFixBaseDiffStats(options.fixBase);\n }\n\n if (options.uncommitted) {\n return computeUncommittedDiffStats();\n }\n\n const isCI =\n process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';\n\n if (isCI) {\n return computeCIDiffStats(baseBranch);\n }\n\n return computeLocalDiffStats(baseBranch);\n}\n\n/**\n * Compute diff stats for a specific commit vs its parent.\n */\nasync function computeCommitDiffStats(commit: string): Promise<DiffStats> {\n try {\n // Get numstat for line counts\n const numstat = await gitExec([\n 'diff',\n '--numstat',\n `${commit}^..${commit}`,\n ]);\n const lineStats = parseNumstat(numstat);\n\n // Get name-status for file categorization\n const nameStatus = await gitExec([\n 'diff',\n '--name-status',\n `${commit}^..${commit}`,\n ]);\n const fileStats = parseNameStatus(nameStatus);\n\n return {\n baseRef: `${commit}^`,\n ...fileStats,\n ...lineStats,\n };\n } catch {\n // If commit has no parent (initial commit), try --root\n try {\n const numstat = await gitExec(['diff', '--numstat', '--root', commit]);\n const lineStats = parseNumstat(numstat);\n\n const nameStatus = await gitExec([\n 'diff',\n '--name-status',\n '--root',\n commit,\n ]);\n const fileStats = parseNameStatus(nameStatus);\n\n return {\n baseRef: 'root',\n ...fileStats,\n ...lineStats,\n };\n } catch {\n return emptyDiffStats(commit);\n }\n }\n}\n\n/**\n * Compute diff stats for uncommitted changes (staged + unstaged + untracked).\n */\nasync function computeUncommittedDiffStats(): Promise<DiffStats> {\n // Get stats for staged changes\n const stagedNumstat = await gitExec(['diff', '--numstat', '--cached']);\n const stagedLines = parseNumstat(stagedNumstat);\n\n const stagedStatus = await gitExec(['diff', '--name-status', '--cached']);\n const stagedFiles = parseNameStatus(stagedStatus);\n\n // Get stats for unstaged changes\n const unstagedNumstat = await gitExec(['diff', '--numstat']);\n const unstagedLines = parseNumstat(unstagedNumstat);\n\n const unstagedStatus = await gitExec(['diff', '--name-status']);\n const unstagedFiles = parseNameStatus(unstagedStatus);\n\n // Get untracked files (all count as new, lines unknown)\n const untrackedList = await gitExec([\n 'ls-files',\n '--others',\n '--exclude-standard',\n ]);\n const untrackedFiles = untrackedList\n .split('\\n')\n .filter((f) => f.trim().length > 0);\n\n return {\n baseRef: 'uncommitted',\n total:\n stagedFiles.total +\n unstagedFiles.total +\n untrackedFiles.length -\n countOverlap(stagedStatus, unstagedStatus),\n newFiles:\n stagedFiles.newFiles + unstagedFiles.newFiles + untrackedFiles.length,\n modifiedFiles: stagedFiles.modifiedFiles + unstagedFiles.modifiedFiles,\n deletedFiles: stagedFiles.deletedFiles + unstagedFiles.deletedFiles,\n linesAdded: stagedLines.linesAdded + unstagedLines.linesAdded,\n linesRemoved: stagedLines.linesRemoved + unstagedLines.linesRemoved,\n };\n}\n\n/**\n * Compute diff stats from a fixBase ref (stash or commit) to current working tree.\n * Used in verification mode to show only NEW changes since the snapshot.\n * This includes staged changes, unstaged changes, and new untracked files.\n */\nasync function computeFixBaseDiffStats(fixBase: string): Promise<DiffStats> {\n try {\n // Get line stats for tracked file changes since fixBase\n // We need to diff against working tree (staged + unstaged changes)\n const numstat = await gitExec(['diff', '--numstat', fixBase]);\n const lineStats = parseNumstat(numstat);\n\n // Get file categorization for tracked file changes\n const nameStatus = await gitExec(['diff', '--name-status', fixBase]);\n const fileStats = parseNameStatus(nameStatus);\n\n // Handle untracked files: only count NEW untracked files that weren't in fixBase\n // Current untracked files\n const currentUntracked = (\n await gitExec(['ls-files', '--others', '--exclude-standard'])\n )\n .split('\\n')\n .filter((f) => f.trim().length > 0);\n\n // Files that existed in fixBase\n let fixBaseFiles: Set<string>;\n try {\n const treeFiles = await gitExec([\n 'ls-tree',\n '-r',\n '--name-only',\n fixBase,\n ]);\n fixBaseFiles = new Set(\n treeFiles.split('\\n').filter((f) => f.trim().length > 0),\n );\n } catch {\n // If fixBase is invalid or has no tree, assume empty\n fixBaseFiles = new Set();\n }\n\n // New untracked files = current untracked - files that existed in fixBase\n const newUntrackedFiles = currentUntracked.filter(\n (f) => !fixBaseFiles.has(f),\n );\n\n return {\n baseRef: fixBase,\n total: fileStats.total + newUntrackedFiles.length,\n newFiles: fileStats.newFiles + newUntrackedFiles.length,\n modifiedFiles: fileStats.modifiedFiles,\n deletedFiles: fileStats.deletedFiles,\n linesAdded: lineStats.linesAdded,\n linesRemoved: lineStats.linesRemoved,\n };\n } catch {\n return emptyDiffStats(fixBase);\n }\n}\n\n/**\n * Compute diff stats in CI environment.\n */\nasync function computeCIDiffStats(baseBranch: string): Promise<DiffStats> {\n const headRef = process.env.GITHUB_SHA || 'HEAD';\n\n try {\n const numstat = await gitExec([\n 'diff',\n '--numstat',\n `${baseBranch}...${headRef}`,\n ]);\n const lineStats = parseNumstat(numstat);\n\n const nameStatus = await gitExec([\n 'diff',\n '--name-status',\n `${baseBranch}...${headRef}`,\n ]);\n const fileStats = parseNameStatus(nameStatus);\n\n return {\n baseRef: baseBranch,\n ...fileStats,\n ...lineStats,\n };\n } catch {\n // Fallback for push events\n try {\n const numstat = await gitExec(['diff', '--numstat', 'HEAD^...HEAD']);\n const lineStats = parseNumstat(numstat);\n\n const nameStatus = await gitExec([\n 'diff',\n '--name-status',\n 'HEAD^...HEAD',\n ]);\n const fileStats = parseNameStatus(nameStatus);\n\n return {\n baseRef: 'HEAD^',\n ...fileStats,\n ...lineStats,\n };\n } catch {\n return emptyDiffStats(baseBranch);\n }\n }\n}\n\n/**\n * Compute diff stats for local development.\n */\nasync function computeLocalDiffStats(baseBranch: string): Promise<DiffStats> {\n // 1. Committed changes relative to base branch\n const committedNumstat = await gitExec([\n 'diff',\n '--numstat',\n `${baseBranch}...HEAD`,\n ]);\n const committedLines = parseNumstat(committedNumstat);\n\n const committedStatus = await gitExec([\n 'diff',\n '--name-status',\n `${baseBranch}...HEAD`,\n ]);\n const committedFiles = parseNameStatus(committedStatus);\n\n // 2. Uncommitted changes (staged and unstaged)\n const uncommittedNumstat = await gitExec(['diff', '--numstat', 'HEAD']);\n const uncommittedLines = parseNumstat(uncommittedNumstat);\n\n const uncommittedStatus = await gitExec(['diff', '--name-status', 'HEAD']);\n const uncommittedFiles = parseNameStatus(uncommittedStatus);\n\n // 3. Untracked files\n const untrackedList = await gitExec([\n 'ls-files',\n '--others',\n '--exclude-standard',\n ]);\n const untrackedFiles = untrackedList\n .split('\\n')\n .filter((f) => f.trim().length > 0);\n\n // Combine counts (with overlap detection)\n const totalNew =\n committedFiles.newFiles + uncommittedFiles.newFiles + untrackedFiles.length;\n const totalModified =\n committedFiles.modifiedFiles + uncommittedFiles.modifiedFiles;\n const totalDeleted =\n committedFiles.deletedFiles + uncommittedFiles.deletedFiles;\n\n return {\n baseRef: baseBranch,\n total: totalNew + totalModified + totalDeleted,\n newFiles: totalNew,\n modifiedFiles: totalModified,\n deletedFiles: totalDeleted,\n linesAdded: committedLines.linesAdded + uncommittedLines.linesAdded,\n linesRemoved: committedLines.linesRemoved + uncommittedLines.linesRemoved,\n };\n}\n\n/**\n * Parse git diff --numstat output for line counts.\n * Format: <added>\\t<removed>\\t<file>\n * Binary files show as \"-\\t-\\t<file>\"\n */\nfunction parseNumstat(output: string): {\n linesAdded: number;\n linesRemoved: number;\n} {\n let linesAdded = 0;\n let linesRemoved = 0;\n\n for (const line of output.split('\\n')) {\n if (!line.trim()) continue;\n const parts = line.split('\\t');\n if (parts.length < 3) continue;\n\n const added = parts[0];\n const removed = parts[1];\n // Binary files show as \"-\"\n if (added && added !== '-') {\n linesAdded += parseInt(added, 10) || 0;\n }\n if (removed && removed !== '-') {\n linesRemoved += parseInt(removed, 10) || 0;\n }\n }\n\n return { linesAdded, linesRemoved };\n}\n\n/**\n * Parse git diff --name-status output for file categorization.\n * Format: <status>\\t<file> (and optionally \\t<new-file> for renames)\n * Status codes: A=added, M=modified, D=deleted, R=renamed, C=copied, T=type-change\n */\nfunction parseNameStatus(output: string): {\n total: number;\n newFiles: number;\n modifiedFiles: number;\n deletedFiles: number;\n} {\n let newFiles = 0;\n let modifiedFiles = 0;\n let deletedFiles = 0;\n\n for (const line of output.split('\\n')) {\n if (!line.trim()) continue;\n const status = line[0];\n\n switch (status) {\n case 'A':\n newFiles++;\n break;\n case 'M':\n case 'R':\n case 'C':\n case 'T':\n modifiedFiles++;\n break;\n case 'D':\n deletedFiles++;\n break;\n }\n }\n\n return {\n total: newFiles + modifiedFiles + deletedFiles,\n newFiles,\n modifiedFiles,\n deletedFiles,\n };\n}\n\n/**\n * Count overlapping files between two name-status outputs.\n * Used to avoid double-counting files that appear in both staged and unstaged.\n */\nfunction countOverlap(status1: string, status2: string): number {\n const files1 = new Set<string>();\n for (const line of status1.split('\\n')) {\n if (!line.trim()) continue;\n const parts = line.split('\\t');\n const file = parts[1];\n if (parts.length >= 2 && file) {\n files1.add(file);\n }\n }\n\n let overlap = 0;\n for (const line of status2.split('\\n')) {\n if (!line.trim()) continue;\n const parts = line.split('\\t');\n const file = parts[1];\n if (parts.length >= 2 && file && files1.has(file)) {\n overlap++;\n }\n }\n\n return overlap;\n}\n\n/**\n * Return empty diff stats with the given base ref.\n */\nfunction emptyDiffStats(baseRef: string): DiffStats {\n return {\n baseRef,\n total: 0,\n newFiles: 0,\n modifiedFiles: 0,\n deletedFiles: 0,\n linesAdded: 0,\n linesRemoved: 0,\n };\n}\n",
|
|
74
75
|
"import fs from 'node:fs/promises';\nimport path from 'node:path';\n\nconst LOCK_FILENAME = '.gauntlet-run.lock';\nconst STALE_LOCK_MS = 10 * 60 * 1000;\n\nfunction isProcessAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (err: unknown) {\n if (\n typeof err === 'object' &&\n err !== null &&\n 'code' in err &&\n (err as { code: string }).code === 'EPERM'\n ) {\n return true;\n }\n return false;\n }\n}\n\nasync function isLockStale(lockPath: string): Promise<boolean> {\n try {\n const lockContent = await fs.readFile(lockPath, 'utf-8');\n const lockPid = Number.parseInt(lockContent.trim(), 10);\n const lockStat = await fs.stat(lockPath);\n const lockAgeMs = Date.now() - lockStat.mtimeMs;\n\n const pidValid = !Number.isNaN(lockPid);\n if (pidValid && !isProcessAlive(lockPid)) {\n return true;\n }\n if (!pidValid && lockAgeMs > STALE_LOCK_MS) {\n return true;\n }\n return false;\n } catch {\n return false;\n }\n}\n\n/** Acquire the lock file. Returns true if successful, false if lock exists. */\nexport async function tryAcquireLock(logDir: string): Promise<boolean> {\n await fs.mkdir(logDir, { recursive: true });\n const lockPath = path.resolve(logDir, LOCK_FILENAME);\n try {\n await fs.writeFile(lockPath, String(process.pid), { flag: 'wx' });\n return true;\n } catch (err: unknown) {\n const isExist =\n typeof err === 'object' &&\n err !== null &&\n 'code' in err &&\n (err as { code: string }).code === 'EEXIST';\n\n if (!isExist) {\n throw err;\n }\n\n const stale = await isLockStale(lockPath);\n if (!stale) {\n return false;\n }\n\n await fs.rm(lockPath, { force: true });\n try {\n await fs.writeFile(lockPath, String(process.pid), { flag: 'wx' });\n return true;\n } catch {\n return false;\n }\n }\n}\n\n/** Find the latest console.N.log file in the log directory. */\nexport async function findLatestConsoleLog(\n logDir: string,\n): Promise<string | null> {\n try {\n const files = await fs.readdir(logDir);\n let maxNum = -1;\n let latestFile: string | null = null;\n\n for (const file of files) {\n if (!(file.startsWith('console.') && file.endsWith('.log'))) {\n continue;\n }\n const middle = file.slice('console.'.length, file.length - '.log'.length);\n if (/^\\d+$/.test(middle)) {\n const n = Number.parseInt(middle, 10);\n if (n > maxNum) {\n maxNum = n;\n latestFile = file;\n }\n }\n }\n\n return latestFile ? path.join(logDir, latestFile) : null;\n } catch {\n return null;\n }\n}\n",
|
|
75
|
-
"import { cleanLogs, hasExistingLogs } from '../commands/shared.js';\nimport { loadGlobalConfig } from '../config/global.js';\nimport type { loadConfig } from '../config/loader.js';\nimport { resolveStopHookConfig } from '../config/stop-hook-config.js';\nimport { getCategoryLogger, resetLogger } from '../output/app-logger.js';\nimport { ConsoleReporter } from '../output/console.js';\nimport type { ConsoleLogHandle } from '../output/console-log.js';\nimport type { Logger } from '../output/logger.js';\nimport type { GauntletStatus, RunResult } from '../types/gauntlet-status.js';\nimport { getDebugLogger } from '../utils/debug-log.js';\nimport {\n readExecutionState,\n resolveFixBase,\n writeExecutionState,\n} from '../utils/execution-state.js';\nimport {\n findPreviousFailures,\n hasSkippedViolationsInLogs,\n type PassedSlot,\n type PreviousViolation,\n} from '../utils/log-parser.js';\nimport { ChangeDetector } from './change-detector.js';\nimport { computeDiffStats } from './diff-stats.js';\nimport { EntryPointExpander } from './entry-point.js';\nimport { JobGenerator } from './job.js';\nimport { findLatestConsoleLog, tryAcquireLock } from './run-executor-lock.js';\nimport { Runner } from './runner.js';\n\n// Re-export lock helpers so existing imports from run-executor-helpers still work\nexport { findLatestConsoleLog, tryAcquireLock };\n\nexport type ChangeOptions = {\n commit?: string;\n uncommitted?: boolean;\n fixBase?: string;\n};\n\nexport type LoadedConfig = Awaited<ReturnType<typeof loadConfig>>;\n\nexport interface RunContext {\n options: {\n baseBranch?: string;\n gate?: string;\n commit?: string;\n uncommitted?: boolean;\n cwd?: string;\n checkInterval?: boolean;\n };\n config: LoadedConfig;\n loggerInitializedHere: boolean;\n effectiveBaseBranch: string;\n}\n\nconst statusMessages: Record<GauntletStatus, string> = {\n passed: 'All gates passed.',\n passed_with_warnings: 'Passed with warnings -- some issues were skipped.',\n no_applicable_gates: 'No applicable gates for these changes.',\n no_changes: 'No changes detected.',\n failed: 'Gates failed -- issues must be fixed.',\n retry_limit_exceeded:\n 'Retry limit exceeded -- logs have been automatically archived.',\n lock_conflict: 'Another gauntlet run is already in progress.',\n error: 'Unexpected error occurred.',\n no_config: 'No .gauntlet/config.yml found.',\n stop_hook_active: 'Stop hook already active.',\n loop_detected: 'Loop detected -- rapid blocks overridden.',\n interval_not_elapsed: 'Run interval not elapsed.',\n invalid_input: 'Invalid input.',\n stop_hook_disabled: '',\n pr_push_required: 'Gates passed -- PR needs to be created/updated.',\n ci_pending: 'CI checks still running.',\n ci_failed: 'CI checks failed or review changes requested.',\n ci_passed: 'CI checks passed, no blocking reviews.',\n validation_required:\n 'Changes need validation or previous run has unresolved failures.',\n};\n\nexport function getStatusMessage(status: GauntletStatus): string {\n return statusMessages[status] || 'Unknown status';\n}\n\nfunction getRunLogger() {\n return getCategoryLogger('run');\n}\n\nexport async function finalizeAndReturn(\n loggerInitializedHere: boolean,\n result: RunResult,\n consoleLogHandle?: ConsoleLogHandle,\n): Promise<RunResult> {\n consoleLogHandle?.restore();\n if (loggerInitializedHere) {\n await resetLogger();\n }\n return result;\n}\n\nexport async function shouldRunBasedOnInterval(\n logDir: string,\n intervalMinutes: number,\n): Promise<boolean> {\n const state = await readExecutionState(logDir);\n if (!state) {\n return true;\n }\n\n const lastRun = new Date(state.last_run_completed_at);\n if (Number.isNaN(lastRun.getTime())) {\n return true;\n }\n\n const now = new Date();\n const elapsedMinutes = (now.getTime() - lastRun.getTime()) / (1000 * 60);\n return elapsedMinutes >= intervalMinutes;\n}\n\nexport async function checkRunInterval(\n ctx: RunContext,\n): Promise<RunResult | null> {\n if (!ctx.options.checkInterval) {\n return null;\n }\n\n const globalConfig = await loadGlobalConfig();\n const stopHookConfig = resolveStopHookConfig(\n ctx.config.project.stop_hook,\n globalConfig,\n );\n\n const log = getRunLogger();\n\n if (!stopHookConfig.enabled) {\n log.debug('Stop hook is disabled via configuration, skipping');\n return {\n status: 'stop_hook_disabled',\n message: getStatusMessage('stop_hook_disabled'),\n };\n }\n\n const logsExist = await hasExistingLogs(ctx.config.project.log_dir);\n if (!logsExist && stopHookConfig.run_interval_minutes > 0) {\n const intervalMinutes = stopHookConfig.run_interval_minutes;\n const shouldRun = await shouldRunBasedOnInterval(\n ctx.config.project.log_dir,\n intervalMinutes,\n );\n if (!shouldRun) {\n log.debug(`Run interval (${intervalMinutes} min) not elapsed, skipping`);\n return {\n status: 'interval_not_elapsed',\n message: `Run interval (${intervalMinutes} min) not elapsed.`,\n intervalMinutes,\n };\n }\n }\n\n return null;\n}\n\nfunction buildFailuresMap(\n previousFailures: Awaited<\n ReturnType<typeof findPreviousFailures>\n >['failures'],\n): Map<string, Map<string, PreviousViolation[]>> {\n const failuresMap = new Map<string, Map<string, PreviousViolation[]>>();\n for (const gateFailure of previousFailures) {\n const adapterMap = new Map<string, PreviousViolation[]>();\n for (const af of gateFailure.adapterFailures) {\n const key = af.reviewIndex ? String(af.reviewIndex) : af.adapterName;\n adapterMap.set(key, af.violations);\n }\n failuresMap.set(gateFailure.jobId, adapterMap);\n }\n return failuresMap;\n}\n\nasync function handleRerunMode(ctx: RunContext): Promise<{\n failuresMap: Map<string, Map<string, PreviousViolation[]>>;\n passedSlotsMap: Map<string, Map<number, PassedSlot>> | undefined;\n changeOptions: ChangeOptions;\n}> {\n const log = getRunLogger();\n log.debug('Existing logs detected -- running in verification mode...');\n\n const { failures: previousFailures, passedSlots } =\n await findPreviousFailures(\n ctx.config.project.log_dir,\n ctx.options.gate,\n true,\n );\n\n const failuresMap = buildFailuresMap(previousFailures);\n\n if (previousFailures.length > 0) {\n const totalViolations = previousFailures.reduce(\n (sum, gf) =>\n sum + gf.adapterFailures.reduce((s, af) => s + af.violations.length, 0),\n 0,\n );\n log.warn(\n `Found ${previousFailures.length} gate(s) with ${totalViolations} previous violation(s)`,\n );\n }\n\n const changeOptions: ChangeOptions = { uncommitted: true };\n const executionState = await readExecutionState(ctx.config.project.log_dir);\n if (executionState?.working_tree_ref) {\n changeOptions.fixBase = executionState.working_tree_ref;\n }\n\n return { failuresMap, passedSlotsMap: passedSlots, changeOptions };\n}\n\nasync function handleFreshRunMode(\n ctx: RunContext,\n): Promise<ChangeOptions | undefined> {\n const log = getRunLogger();\n const executionState = await readExecutionState(ctx.config.project.log_dir);\n if (!executionState) {\n return undefined;\n }\n\n const resolved = await resolveFixBase(\n executionState,\n ctx.effectiveBaseBranch,\n );\n if (resolved.warning) {\n log.warn(`Warning: ${resolved.warning}`);\n }\n return resolved.fixBase ? { fixBase: resolved.fixBase } : undefined;\n}\n\nexport async function processRerunMode(\n ctx: RunContext,\n isRerun: boolean,\n logsExist: boolean,\n): Promise<{\n failuresMap: Map<string, Map<string, PreviousViolation[]>> | undefined;\n passedSlotsMap: Map<string, Map<number, PassedSlot>> | undefined;\n changeOptions: ChangeOptions | undefined;\n}> {\n let failuresMap: Map<string, Map<string, PreviousViolation[]>> | undefined;\n let passedSlotsMap: Map<string, Map<number, PassedSlot>> | undefined;\n let changeOptions: ChangeOptions | undefined;\n\n if (isRerun) {\n const rerunResult = await handleRerunMode(ctx);\n failuresMap = rerunResult.failuresMap;\n passedSlotsMap = rerunResult.passedSlotsMap;\n changeOptions = rerunResult.changeOptions;\n } else if (!logsExist) {\n changeOptions = await handleFreshRunMode(ctx);\n }\n\n if (ctx.options.commit || ctx.options.uncommitted) {\n changeOptions = {\n commit: ctx.options.commit,\n uncommitted: ctx.options.uncommitted,\n fixBase: changeOptions?.fixBase,\n };\n }\n\n return { failuresMap, passedSlotsMap, changeOptions };\n}\n\nasync function handleNoChanges(\n ctx: RunContext,\n failuresMap: Map<string, Map<string, PreviousViolation[]>> | undefined,\n): Promise<RunResult> {\n const log = getRunLogger();\n const debugLogger = getDebugLogger();\n\n if (failuresMap && failuresMap.size === 0) {\n const hasSkipped = await hasSkippedViolationsInLogs({\n logDir: ctx.config.project.log_dir,\n });\n const status: GauntletStatus = hasSkipped\n ? 'passed_with_warnings'\n : 'passed';\n\n if (status === 'passed') {\n await debugLogger?.logClean('auto', 'all_passed');\n await cleanLogs(\n ctx.config.project.log_dir,\n ctx.config.project.max_previous_logs,\n );\n }\n\n log.info(getStatusMessage(status));\n return { status, message: getStatusMessage(status), gatesRun: 0 };\n }\n\n log.info('No changes detected.');\n return {\n status: 'no_changes',\n message: getStatusMessage('no_changes'),\n gatesRun: 0,\n };\n}\n\nexport async function detectAndPrepareChanges(\n ctx: RunContext,\n isRerun: boolean,\n failuresMap: Map<string, Map<string, PreviousViolation[]>> | undefined,\n changeOptions: ChangeOptions | undefined,\n): Promise<\n | { earlyResult: RunResult }\n | {\n jobs: ReturnType<JobGenerator['generateJobs']>;\n changeOpts: ChangeOptions;\n }\n> {\n const log = getRunLogger();\n const effectiveChangeOptions = changeOptions || {\n commit: ctx.options.commit,\n uncommitted: ctx.options.uncommitted,\n };\n\n const changeDetector = new ChangeDetector(\n ctx.effectiveBaseBranch,\n effectiveChangeOptions,\n );\n const expander = new EntryPointExpander();\n const jobGen = new JobGenerator(ctx.config);\n\n log.debug('Detecting changes...');\n const changes = await changeDetector.getChangedFiles();\n\n if (changes.length === 0 && isRerun) {\n return { earlyResult: await handleNoChanges(ctx, failuresMap) };\n }\n if (changes.length === 0) {\n return { earlyResult: await handleNoChanges(ctx, undefined) };\n }\n\n log.debug(`Found ${changes.length} changed files.`);\n\n const entryPoints = await expander.expand(\n ctx.config.project.entry_points,\n changes,\n );\n let jobs = jobGen.generateJobs(entryPoints);\n\n if (ctx.options.gate) {\n jobs = jobs.filter((j) => j.name === ctx.options.gate);\n }\n\n if (jobs.length === 0) {\n log.warn('No applicable gates for these changes.');\n return {\n earlyResult: {\n status: 'no_applicable_gates',\n message: getStatusMessage('no_applicable_gates'),\n gatesRun: 0,\n },\n };\n }\n\n return { jobs, changeOpts: effectiveChangeOptions };\n}\n\nfunction determineStatus(outcome: {\n allPassed: boolean;\n anySkipped: boolean;\n retryLimitExceeded: boolean;\n}): GauntletStatus {\n if (outcome.retryLimitExceeded) {\n return 'retry_limit_exceeded';\n }\n if (outcome.allPassed && outcome.anySkipped) {\n return 'passed_with_warnings';\n }\n if (outcome.allPassed) {\n return 'passed';\n }\n return 'failed';\n}\n\n/** Build the result object from runner outcome. */\nasync function buildRunResult(\n ctx: RunContext,\n outcome: Awaited<ReturnType<Runner['run']>>,\n jobs: ReturnType<JobGenerator['generateJobs']>,\n): Promise<RunResult> {\n const consoleLogPath = await findLatestConsoleLog(ctx.config.project.log_dir);\n const status = determineStatus(outcome);\n\n if (status === 'passed' || status === 'retry_limit_exceeded') {\n const reason = status === 'passed' ? 'all_passed' : 'retry_limit_exceeded';\n const debugLogger = getDebugLogger();\n await debugLogger?.logClean('auto', reason);\n await cleanLogs(\n ctx.config.project.log_dir,\n ctx.config.project.max_previous_logs,\n );\n }\n\n return {\n status,\n message: getStatusMessage(status),\n gatesRun: jobs.length,\n gatesFailed: outcome.allPassed ? 0 : jobs.length,\n consoleLogPath: consoleLogPath ?? undefined,\n gateResults: outcome.gateResults,\n };\n}\n\nexport async function executeAndReport(\n ctx: RunContext,\n logger: Logger,\n isRerun: boolean,\n failuresMap: Map<string, Map<string, PreviousViolation[]>> | undefined,\n passedSlotsMap: Map<string, Map<number, PassedSlot>> | undefined,\n changeOptions: ChangeOptions | undefined,\n jobs: ReturnType<JobGenerator['generateJobs']>,\n): Promise<RunResult> {\n const debugLogger = getDebugLogger();\n\n const runMode = isRerun ? 'verification' : 'full';\n const effectiveChangeOptions = changeOptions || {\n commit: ctx.options.commit,\n uncommitted: ctx.options.uncommitted,\n };\n const diffStats = await computeDiffStats(\n ctx.effectiveBaseBranch,\n effectiveChangeOptions,\n );\n await debugLogger?.logRunStartWithDiff(runMode, diffStats, jobs.length);\n\n getRunLogger().debug(`Running ${jobs.length} gates...`);\n\n const reporter = new ConsoleReporter();\n const runner = new Runner(\n ctx.config,\n logger,\n reporter,\n failuresMap,\n changeOptions,\n ctx.effectiveBaseBranch,\n passedSlotsMap,\n debugLogger ?? undefined,\n isRerun,\n );\n\n const outcome = await runner.run(jobs);\n\n await debugLogger?.logRunEnd(\n outcome.allPassed ? 'pass' : 'fail',\n outcome.stats.fixed,\n outcome.stats.skipped,\n outcome.stats.failed,\n logger.getRunNumber(),\n );\n\n await writeExecutionState(ctx.config.project.log_dir);\n\n return buildRunResult(ctx, outcome, jobs);\n}\n",
|
|
76
|
+
"import { cleanLogs, hasExistingLogs } from '../commands/shared.js';\nimport { loadGlobalConfig } from '../config/global.js';\nimport type { loadConfig } from '../config/loader.js';\nimport { resolveStopHookConfig } from '../config/stop-hook-config.js';\nimport { getCategoryLogger, resetLogger } from '../output/app-logger.js';\nimport { ConsoleReporter } from '../output/console.js';\nimport type { ConsoleLogHandle } from '../output/console-log.js';\nimport type { Logger } from '../output/logger.js';\nimport type { GauntletStatus, RunResult } from '../types/gauntlet-status.js';\nimport { getDebugLogger } from '../utils/debug-log.js';\nimport {\n readExecutionState,\n resolveFixBase,\n writeExecutionState,\n} from '../utils/execution-state.js';\nimport {\n findPreviousFailures,\n hasSkippedViolationsInLogs,\n type PassedSlot,\n type PreviousViolation,\n} from '../utils/log-parser.js';\nimport { ChangeDetector } from './change-detector.js';\nimport { computeDiffStats } from './diff-stats.js';\nimport { EntryPointExpander } from './entry-point.js';\nimport { JobGenerator } from './job.js';\nimport { findLatestConsoleLog, tryAcquireLock } from './run-executor-lock.js';\nimport { Runner } from './runner.js';\n\n// Re-export lock helpers so existing imports from run-executor-helpers still work\nexport { findLatestConsoleLog, tryAcquireLock };\n\nexport type ChangeOptions = {\n commit?: string;\n uncommitted?: boolean;\n fixBase?: string;\n};\n\nexport type LoadedConfig = Awaited<ReturnType<typeof loadConfig>>;\n\nexport interface RunContext {\n options: {\n baseBranch?: string;\n gate?: string;\n commit?: string;\n uncommitted?: boolean;\n cwd?: string;\n checkInterval?: boolean;\n };\n config: LoadedConfig;\n loggerInitializedHere: boolean;\n effectiveBaseBranch: string;\n}\n\nconst statusMessages: Record<GauntletStatus, string> = {\n passed: 'All gates passed.',\n passed_with_warnings: 'Passed with warnings -- some issues were skipped.',\n no_applicable_gates: 'No applicable gates for these changes.',\n no_changes: 'No changes detected.',\n failed: 'Gates failed -- issues must be fixed.',\n retry_limit_exceeded:\n 'Retry limit exceeded -- logs have been automatically archived.',\n lock_conflict: 'Another gauntlet run is already in progress.',\n error: 'Unexpected error occurred.',\n no_config: 'No .gauntlet/config.yml found.',\n stop_hook_active: 'Stop hook already active.',\n loop_detected: 'Loop detected -- rapid blocks overridden.',\n interval_not_elapsed: 'Run interval not elapsed.',\n invalid_input: 'Invalid input.',\n stop_hook_disabled: '',\n pr_push_required: 'Gates passed -- PR needs to be created/updated.',\n ci_pending: 'CI checks still running.',\n ci_failed: 'CI checks failed or review changes requested.',\n ci_passed: 'CI checks passed, no blocking reviews.',\n validation_required:\n 'Changes need validation or previous run has unresolved failures.',\n};\n\nexport function getStatusMessage(status: GauntletStatus): string {\n return statusMessages[status] || 'Unknown status';\n}\n\nfunction getRunLogger() {\n return getCategoryLogger('run');\n}\n\nexport async function finalizeAndReturn(\n loggerInitializedHere: boolean,\n result: RunResult,\n consoleLogHandle?: ConsoleLogHandle,\n): Promise<RunResult> {\n consoleLogHandle?.restore();\n if (loggerInitializedHere) {\n await resetLogger();\n }\n return result;\n}\n\nexport async function shouldRunBasedOnInterval(\n logDir: string,\n intervalMinutes: number,\n): Promise<boolean> {\n const state = await readExecutionState(logDir);\n if (!state) {\n return true;\n }\n\n const lastRun = new Date(state.last_run_completed_at);\n if (Number.isNaN(lastRun.getTime())) {\n return true;\n }\n\n const now = new Date();\n const elapsedMinutes = (now.getTime() - lastRun.getTime()) / (1000 * 60);\n return elapsedMinutes >= intervalMinutes;\n}\n\nexport async function checkRunInterval(\n ctx: RunContext,\n): Promise<RunResult | null> {\n if (!ctx.options.checkInterval) {\n return null;\n }\n\n const globalConfig = await loadGlobalConfig();\n const stopHookConfig = resolveStopHookConfig(\n ctx.config.project.stop_hook,\n globalConfig,\n );\n\n const log = getRunLogger();\n\n if (!stopHookConfig.enabled) {\n log.debug('Stop hook is disabled via configuration, skipping');\n return {\n status: 'stop_hook_disabled',\n message: getStatusMessage('stop_hook_disabled'),\n };\n }\n\n const logsExist = await hasExistingLogs(ctx.config.project.log_dir);\n if (!logsExist && stopHookConfig.run_interval_minutes > 0) {\n const intervalMinutes = stopHookConfig.run_interval_minutes;\n const shouldRun = await shouldRunBasedOnInterval(\n ctx.config.project.log_dir,\n intervalMinutes,\n );\n if (!shouldRun) {\n log.debug(`Run interval (${intervalMinutes} min) not elapsed, skipping`);\n return {\n status: 'interval_not_elapsed',\n message: `Run interval (${intervalMinutes} min) not elapsed.`,\n intervalMinutes,\n };\n }\n }\n\n return null;\n}\n\nfunction buildFailuresMap(\n previousFailures: Awaited<\n ReturnType<typeof findPreviousFailures>\n >['failures'],\n): Map<string, Map<string, PreviousViolation[]>> {\n const failuresMap = new Map<string, Map<string, PreviousViolation[]>>();\n for (const gateFailure of previousFailures) {\n const adapterMap = new Map<string, PreviousViolation[]>();\n for (const af of gateFailure.adapterFailures) {\n const key = af.reviewIndex ? String(af.reviewIndex) : af.adapterName;\n adapterMap.set(key, af.violations);\n }\n failuresMap.set(gateFailure.jobId, adapterMap);\n }\n return failuresMap;\n}\n\nasync function handleRerunMode(ctx: RunContext): Promise<{\n failuresMap: Map<string, Map<string, PreviousViolation[]>>;\n passedSlotsMap: Map<string, Map<number, PassedSlot>> | undefined;\n changeOptions: ChangeOptions;\n}> {\n const log = getRunLogger();\n log.debug('Existing logs detected -- running in verification mode...');\n\n const { failures: previousFailures, passedSlots } =\n await findPreviousFailures(\n ctx.config.project.log_dir,\n ctx.options.gate,\n true,\n );\n\n const failuresMap = buildFailuresMap(previousFailures);\n\n if (previousFailures.length > 0) {\n const totalViolations = previousFailures.reduce(\n (sum, gf) =>\n sum + gf.adapterFailures.reduce((s, af) => s + af.violations.length, 0),\n 0,\n );\n log.warn(\n `Found ${previousFailures.length} gate(s) with ${totalViolations} previous violation(s)`,\n );\n }\n\n const changeOptions: ChangeOptions = { uncommitted: true };\n const executionState = await readExecutionState(ctx.config.project.log_dir);\n if (executionState?.working_tree_ref) {\n changeOptions.fixBase = executionState.working_tree_ref;\n }\n\n return { failuresMap, passedSlotsMap: passedSlots, changeOptions };\n}\n\nasync function handleFreshRunMode(\n ctx: RunContext,\n): Promise<ChangeOptions | undefined> {\n const log = getRunLogger();\n const executionState = await readExecutionState(ctx.config.project.log_dir);\n if (!executionState) {\n return undefined;\n }\n\n const resolved = await resolveFixBase(\n executionState,\n ctx.effectiveBaseBranch,\n );\n if (resolved.warning) {\n log.warn(`Warning: ${resolved.warning}`);\n }\n return resolved.fixBase ? { fixBase: resolved.fixBase } : undefined;\n}\n\nexport async function processRerunMode(\n ctx: RunContext,\n isRerun: boolean,\n logsExist: boolean,\n): Promise<{\n failuresMap: Map<string, Map<string, PreviousViolation[]>> | undefined;\n passedSlotsMap: Map<string, Map<number, PassedSlot>> | undefined;\n changeOptions: ChangeOptions | undefined;\n}> {\n let failuresMap: Map<string, Map<string, PreviousViolation[]>> | undefined;\n let passedSlotsMap: Map<string, Map<number, PassedSlot>> | undefined;\n let changeOptions: ChangeOptions | undefined;\n\n if (isRerun) {\n const rerunResult = await handleRerunMode(ctx);\n failuresMap = rerunResult.failuresMap;\n passedSlotsMap = rerunResult.passedSlotsMap;\n changeOptions = rerunResult.changeOptions;\n } else if (!logsExist) {\n changeOptions = await handleFreshRunMode(ctx);\n }\n\n if (ctx.options.commit || ctx.options.uncommitted) {\n changeOptions = {\n commit: ctx.options.commit,\n uncommitted: ctx.options.uncommitted,\n fixBase: changeOptions?.fixBase,\n };\n }\n\n return { failuresMap, passedSlotsMap, changeOptions };\n}\n\nexport async function handleNoChanges(\n ctx: RunContext,\n failuresMap: Map<string, Map<string, PreviousViolation[]>> | undefined,\n): Promise<RunResult> {\n const log = getRunLogger();\n const debugLogger = getDebugLogger();\n\n if (failuresMap && failuresMap.size === 0) {\n const hasSkipped = await hasSkippedViolationsInLogs({\n logDir: ctx.config.project.log_dir,\n });\n const status: GauntletStatus = hasSkipped\n ? 'passed_with_warnings'\n : 'passed';\n\n if (status === 'passed') {\n await debugLogger?.logClean('auto', 'all_passed');\n await cleanLogs(\n ctx.config.project.log_dir,\n ctx.config.project.max_previous_logs,\n );\n }\n\n log.info(getStatusMessage(status));\n return { status, message: getStatusMessage(status), gatesRun: 0 };\n }\n\n if (failuresMap && failuresMap.size > 0) {\n let totalViolations = 0;\n for (const adapterMap of failuresMap.values()) {\n for (const violations of adapterMap.values()) {\n totalViolations += violations.length;\n }\n }\n const message = `No changes detected — ${totalViolations} violation(s) still outstanding.`;\n log.warn(message);\n return { status: 'failed', message, gatesRun: 0 };\n }\n\n log.info('No changes detected.');\n return {\n status: 'no_changes',\n message: getStatusMessage('no_changes'),\n gatesRun: 0,\n };\n}\n\nexport async function detectAndPrepareChanges(\n ctx: RunContext,\n isRerun: boolean,\n failuresMap: Map<string, Map<string, PreviousViolation[]>> | undefined,\n changeOptions: ChangeOptions | undefined,\n): Promise<\n | { earlyResult: RunResult }\n | {\n jobs: ReturnType<JobGenerator['generateJobs']>;\n changeOpts: ChangeOptions;\n }\n> {\n const log = getRunLogger();\n const effectiveChangeOptions = changeOptions || {\n commit: ctx.options.commit,\n uncommitted: ctx.options.uncommitted,\n };\n\n const changeDetector = new ChangeDetector(\n ctx.effectiveBaseBranch,\n effectiveChangeOptions,\n );\n const expander = new EntryPointExpander();\n const jobGen = new JobGenerator(ctx.config);\n\n log.debug('Detecting changes...');\n const changes = await changeDetector.getChangedFiles();\n\n if (changes.length === 0 && isRerun) {\n return { earlyResult: await handleNoChanges(ctx, failuresMap) };\n }\n if (changes.length === 0) {\n return { earlyResult: await handleNoChanges(ctx, undefined) };\n }\n\n log.debug(`Found ${changes.length} changed files.`);\n\n const entryPoints = await expander.expand(\n ctx.config.project.entry_points,\n changes,\n );\n let jobs = jobGen.generateJobs(entryPoints);\n\n if (ctx.options.gate) {\n jobs = jobs.filter((j) => j.name === ctx.options.gate);\n }\n\n if (jobs.length === 0) {\n log.warn('No applicable gates for these changes.');\n return {\n earlyResult: {\n status: 'no_applicable_gates',\n message: getStatusMessage('no_applicable_gates'),\n gatesRun: 0,\n },\n };\n }\n\n return { jobs, changeOpts: effectiveChangeOptions };\n}\n\nfunction determineStatus(outcome: {\n allPassed: boolean;\n anySkipped: boolean;\n retryLimitExceeded: boolean;\n}): GauntletStatus {\n if (outcome.retryLimitExceeded) {\n return 'retry_limit_exceeded';\n }\n if (outcome.allPassed && outcome.anySkipped) {\n return 'passed_with_warnings';\n }\n if (outcome.allPassed) {\n return 'passed';\n }\n return 'failed';\n}\n\n/** Build the result object from runner outcome. */\nasync function buildRunResult(\n ctx: RunContext,\n outcome: Awaited<ReturnType<Runner['run']>>,\n jobs: ReturnType<JobGenerator['generateJobs']>,\n): Promise<RunResult> {\n const consoleLogPath = await findLatestConsoleLog(ctx.config.project.log_dir);\n const status = determineStatus(outcome);\n\n if (status === 'passed' || status === 'retry_limit_exceeded') {\n const reason = status === 'passed' ? 'all_passed' : 'retry_limit_exceeded';\n const debugLogger = getDebugLogger();\n await debugLogger?.logClean('auto', reason);\n await cleanLogs(\n ctx.config.project.log_dir,\n ctx.config.project.max_previous_logs,\n );\n }\n\n return {\n status,\n message: getStatusMessage(status),\n gatesRun: jobs.length,\n gatesFailed: outcome.allPassed ? 0 : jobs.length,\n consoleLogPath: consoleLogPath ?? undefined,\n gateResults: outcome.gateResults,\n };\n}\n\nexport async function executeAndReport(\n ctx: RunContext,\n logger: Logger,\n isRerun: boolean,\n failuresMap: Map<string, Map<string, PreviousViolation[]>> | undefined,\n passedSlotsMap: Map<string, Map<number, PassedSlot>> | undefined,\n changeOptions: ChangeOptions | undefined,\n jobs: ReturnType<JobGenerator['generateJobs']>,\n): Promise<RunResult> {\n const debugLogger = getDebugLogger();\n\n const runMode = isRerun ? 'verification' : 'full';\n const effectiveChangeOptions = changeOptions || {\n commit: ctx.options.commit,\n uncommitted: ctx.options.uncommitted,\n };\n const diffStats = await computeDiffStats(\n ctx.effectiveBaseBranch,\n effectiveChangeOptions,\n );\n await debugLogger?.logRunStartWithDiff(runMode, diffStats, jobs.length);\n\n getRunLogger().debug(`Running ${jobs.length} gates...`);\n\n const reporter = new ConsoleReporter();\n const runner = new Runner(\n ctx.config,\n logger,\n reporter,\n failuresMap,\n changeOptions,\n ctx.effectiveBaseBranch,\n passedSlotsMap,\n debugLogger ?? undefined,\n isRerun,\n );\n\n const outcome = await runner.run(jobs);\n\n await debugLogger?.logRunEnd(\n outcome.allPassed ? 'pass' : 'fail',\n outcome.stats.fixed,\n outcome.stats.skipped,\n outcome.stats.failed,\n logger.getRunNumber(),\n );\n\n await writeExecutionState(ctx.config.project.log_dir);\n\n return buildRunResult(ctx, outcome, jobs);\n}\n",
|
|
76
77
|
"import {\n hasExistingLogs,\n performAutoClean,\n releaseLock,\n shouldAutoClean,\n} from '../commands/shared.js';\nimport { loadGlobalConfig } from '../config/global.js';\nimport { loadConfig } from '../config/loader.js';\nimport {\n getCategoryLogger,\n initLogger,\n isLoggerConfigured,\n resetLogger,\n} from '../output/app-logger.js';\nimport { startConsoleLog } from '../output/console-log.js';\nimport { Logger } from '../output/logger.js';\nimport type { RunResult } from '../types/gauntlet-status.js';\nimport {\n getDebugLogger,\n initDebugLogger,\n mergeDebugLogConfig,\n} from '../utils/debug-log.js';\nimport { resolveBaseBranch } from '../utils/git.js';\nimport {\n checkRunInterval,\n detectAndPrepareChanges,\n executeAndReport,\n finalizeAndReturn,\n getStatusMessage,\n processRerunMode,\n type RunContext,\n tryAcquireLock,\n} from './run-executor-helpers.js';\n\nexport interface ExecuteRunOptions {\n baseBranch?: string;\n gate?: string;\n commit?: string;\n uncommitted?: boolean;\n /** Working directory for config loading (defaults to process.cwd()) */\n cwd?: string;\n /**\n * When true, check if run interval has elapsed before proceeding.\n * Only stop-hook uses this; CLI commands (run, check, review) always run immediately.\n * If interval hasn't elapsed, returns { status: \"interval_not_elapsed\", ... }.\n */\n checkInterval?: boolean;\n}\n\n/** Initialize app logger and debug logger, returning a RunContext. */\nasync function initRunContext(\n options: ExecuteRunOptions,\n config: Awaited<ReturnType<typeof loadConfig>>,\n): Promise<{ ctx: RunContext; loggerInitializedHere: boolean }> {\n let loggerInitializedHere = false;\n\n if (!isLoggerConfigured()) {\n await initLogger({\n mode: 'interactive',\n logDir: config.project.log_dir,\n });\n loggerInitializedHere = true;\n }\n\n const globalConfig = await loadGlobalConfig();\n const debugLogConfig = mergeDebugLogConfig(\n config.project.debug_log,\n globalConfig.debug_log,\n );\n initDebugLogger(config.project.log_dir, debugLogConfig);\n\n await logCommandInvocation(options);\n\n const effectiveBaseBranch = resolveBaseBranch(options, config);\n\n const ctx: RunContext = {\n options,\n config,\n loggerInitializedHere,\n effectiveBaseBranch,\n };\n\n return { ctx, loggerInitializedHere };\n}\n\n/** Log the command invocation to debug logger. */\nasync function logCommandInvocation(options: ExecuteRunOptions): Promise<void> {\n const debugLogger = getDebugLogger();\n const args = [\n options.baseBranch ? `-b ${options.baseBranch}` : '',\n options.gate ? `-g ${options.gate}` : '',\n options.commit ? `-c ${options.commit}` : '',\n options.uncommitted ? '-u' : '',\n options.checkInterval ? '--check-interval' : '',\n ].filter(Boolean);\n await debugLogger?.logCommand('run', args);\n}\n\n/** Handle auto-cleaning of logs on context change. */\nasync function handleAutoClean(ctx: RunContext): Promise<void> {\n const autoCleanResult = await shouldAutoClean(\n ctx.config.project.log_dir,\n ctx.effectiveBaseBranch,\n );\n if (autoCleanResult.clean) {\n getCategoryLogger('run').debug(\n `Auto-cleaning logs (${autoCleanResult.reason})...`,\n );\n const debugLogger = getDebugLogger();\n await debugLogger?.logClean('auto', autoCleanResult.reason || 'unknown');\n await performAutoClean(\n ctx.config.project.log_dir,\n autoCleanResult,\n ctx.config.project.max_previous_logs,\n );\n }\n}\n\n/** The inner run logic executed while holding the lock. */\nasync function runWithLock(\n ctx: RunContext,\n isRerun: boolean,\n logsExist: boolean,\n): Promise<RunResult> {\n const logger = new Logger(ctx.config.project.log_dir);\n await logger.init();\n const runNumber = logger.getRunNumber();\n\n const consoleLogHandle = await startConsoleLog(\n ctx.config.project.log_dir,\n runNumber,\n );\n\n const { failuresMap, passedSlotsMap, changeOptions } = await processRerunMode(\n ctx,\n isRerun,\n logsExist,\n );\n\n const prepared = await detectAndPrepareChanges(\n ctx,\n isRerun,\n failuresMap,\n changeOptions,\n );\n\n if ('earlyResult' in prepared) {\n return finalizeAndReturn(\n ctx.loggerInitializedHere,\n prepared.earlyResult,\n consoleLogHandle,\n );\n }\n\n const result = await executeAndReport(\n ctx,\n logger,\n isRerun,\n failuresMap,\n passedSlotsMap,\n changeOptions,\n prepared.jobs,\n );\n\n consoleLogHandle?.restore();\n if (ctx.loggerInitializedHere) {\n await resetLogger();\n }\n return result;\n}\n\n/**\n * Execute the gauntlet run logic. Returns a structured RunResult.\n * This function never calls process.exit() - the caller is responsible for that.\n */\nexport async function executeRun(\n options: ExecuteRunOptions = {},\n): Promise<RunResult> {\n let loggerInitializedHere = false;\n\n try {\n const config = await loadConfig(options.cwd);\n const { ctx, loggerInitializedHere: lih } = await initRunContext(\n options,\n config,\n );\n loggerInitializedHere = lih;\n\n const intervalResult = await checkRunInterval(ctx);\n if (intervalResult) {\n return finalizeAndReturn(loggerInitializedHere, intervalResult);\n }\n\n await handleAutoClean(ctx);\n\n const logsExist = await hasExistingLogs(config.project.log_dir);\n const isRerun = logsExist && !options.commit;\n\n const lockAcquired = await tryAcquireLock(config.project.log_dir);\n if (!lockAcquired) {\n return finalizeAndReturn(loggerInitializedHere, {\n status: 'lock_conflict',\n message: getStatusMessage('lock_conflict'),\n });\n }\n\n try {\n return await runWithLock(ctx, isRerun, logsExist);\n } finally {\n await releaseLock(config.project.log_dir);\n }\n } catch (error: unknown) {\n if (loggerInitializedHere) {\n try {\n await resetLogger();\n } catch {\n // Ignore errors resetting logger during error handling\n }\n }\n const err = error as { message?: string };\n return {\n status: 'error',\n message: getStatusMessage('error'),\n errorMessage: err.message || 'unknown error',\n };\n }\n}\n",
|
|
77
78
|
"import type { Command } from 'commander';\nimport { executeRun } from '../core/run-executor.js';\nimport { isSuccessStatus } from '../types/gauntlet-status.js';\n\nexport function registerRunCommand(program: Command): void {\n program\n .command('run')\n .description('Run gates for detected changes')\n .option(\n '-b, --base-branch <branch>',\n 'Override base branch for change detection',\n )\n .option('-g, --gate <name>', 'Run specific gate only')\n .option('-c, --commit <sha>', 'Use diff for a specific commit')\n .option(\n '-u, --uncommitted',\n 'Use diff for current uncommitted changes (staged and unstaged)',\n )\n .action(async (options) => {\n const result = await executeRun({\n baseBranch: options.baseBranch,\n gate: options.gate,\n commit: options.commit,\n uncommitted: options.uncommitted,\n });\n\n process.exit(isSuccessStatus(result.status) ? 0 : 1);\n });\n}\n",
|
|
78
79
|
"import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport type { Command } from 'commander';\nimport YAML from 'yaml';\nimport { loadGlobalConfig } from '../config/global.js';\nimport { getDebugLogConfig, getLogDir } from '../hooks/stop-hook-handler.js';\nimport { DebugLogger, mergeDebugLogConfig } from '../utils/debug-log.js';\n\nconst START_HOOK_MESSAGE = `<IMPORTANT>\nThis project uses Agent Gauntlet for automated quality verification.\n\nBEFORE reporting any coding task as complete, you MUST run /gauntlet-run\nto verify your changes pass all quality gates.\n\nRun /gauntlet-run when ALL of these are true:\n 1. You completed a coding task (implemented a feature, fixed a bug,\n refactored code, or made other substantive code changes)\n 2. You are about to report the work as done, complete, or fixed\n\nDo NOT run /gauntlet-run when:\n - You only answered questions, explored code, or ran read-only commands\n - You are in the middle of a multi-step task (run it at the end, not\n after every individual change)\n - The user explicitly asked to skip verification\n\nIf you are unsure whether to run it, run it. False positives (running\nunnecessarily) are far less costly than false negatives (skipping\nverification on code that needed it).\n</IMPORTANT>`;\n\nfunction formatClaudeOutput(message: string): string {\n return JSON.stringify({\n hookSpecificOutput: {\n hookEventName: 'SessionStart',\n additionalContext: message,\n },\n });\n}\n\nfunction formatCursorOutput(message: string): string {\n return message;\n}\n\n/**\n * Validate that the config file contains parseable YAML with at least some content.\n * Returns true if valid, false if empty or invalid.\n */\nfunction isValidConfig(content: string): boolean {\n const trimmed = content.trim();\n if (!trimmed) {\n return false;\n }\n try {\n const parsed = YAML.parse(trimmed);\n // YAML.parse returns null for empty documents, undefined for some edge cases\n return parsed != null && typeof parsed === 'object';\n } catch {\n return false;\n }\n}\n\nexport function registerStartHookCommand(program: Command): void {\n program\n .command('start-hook')\n .description(\n 'Session start hook - primes agent with gauntlet verification instructions',\n )\n .option('--adapter <adapter>', 'Output format: claude or cursor', 'claude')\n .action(async (options: { adapter: string }) => {\n // Fast exit if not a gauntlet project\n const configPath = path.join(process.cwd(), '.gauntlet', 'config.yml');\n try {\n const content = await fs.readFile(configPath, 'utf-8');\n if (!isValidConfig(content)) {\n return;\n }\n } catch {\n // No config file — silent exit\n return;\n }\n\n const adapter = options.adapter;\n\n // Log to .debug.log\n try {\n const cwd = process.cwd();\n const logDir = path.join(cwd, await getLogDir(cwd));\n const globalConfig = await loadGlobalConfig();\n const projectDebugLogConfig = await getDebugLogConfig(cwd);\n const debugLogConfig = mergeDebugLogConfig(\n projectDebugLogConfig,\n globalConfig.debug_log,\n );\n const debugLogger = new DebugLogger(logDir, debugLogConfig);\n await debugLogger.logStartHook(adapter);\n } catch {\n // Debug logging should never break the hook\n }\n\n const output =\n adapter === 'cursor'\n ? formatCursorOutput(START_HOOK_MESSAGE)\n : formatClaudeOutput(START_HOOK_MESSAGE);\n\n console.log(output);\n });\n}\n",
|
|
@@ -80,7 +81,7 @@
|
|
|
80
81
|
"import chalk from 'chalk';\nimport type { Command } from 'commander';\nimport { loadConfig } from '../config/loader.js';\n\nexport function registerValidateCommand(program: Command): void {\n program\n .command('validate')\n .description('Validate .gauntlet/ config files against schemas')\n .action(async () => {\n try {\n await loadConfig();\n console.log(chalk.green('All config files are valid.'));\n process.exitCode = 0;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(chalk.red('Validation failed:'), message);\n process.exitCode = 1;\n }\n });\n}\n",
|
|
81
82
|
"import { spawn } from 'node:child_process';\nimport type { Command } from 'commander';\n\n/**\n * Output structure from wait-ci command.\n */\nexport interface WaitCIResult {\n ci_status: 'passed' | 'failed' | 'pending' | 'error';\n pr_number?: number;\n pr_url?: string;\n failed_checks: Array<{\n name: string;\n conclusion: string;\n details_url: string;\n /** Actual error output from GitHub Actions logs (if available) */\n log_output?: string;\n }>;\n review_comments: Array<{\n author: string;\n body: string;\n path?: string;\n line?: number;\n }>;\n elapsed_seconds: number;\n error_message?: string;\n}\n\n/**\n * Check if gh CLI is available.\n */\nasync function isGhAvailable(): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn('gh', ['--version'], { stdio: 'pipe' });\n proc.on('close', (code) => resolve(code === 0));\n proc.on('error', () => resolve(false));\n });\n}\n\n/**\n * Run a gh command and return the output.\n */\nasync function runGh(\n args: string[],\n cwd?: string,\n): Promise<{ code: number; stdout: string; stderr: string }> {\n return new Promise((resolve) => {\n const proc = spawn('gh', args, { stdio: 'pipe', cwd });\n let stdout = '';\n let stderr = '';\n\n proc.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n proc.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n\n proc.on('close', (code) => {\n resolve({ code: code ?? 1, stdout, stderr });\n });\n proc.on('error', (err) => {\n resolve({ code: 1, stdout: '', stderr: err.message });\n });\n });\n}\n\n/**\n * Get PR info for the current branch.\n * Returns null if no PR found or on error.\n */\nasync function getPRInfo(\n cwd?: string,\n): Promise<{ number: number; url: string; headRefName: string } | null> {\n const result = await runGh(\n ['pr', 'view', '--json', 'number,url,headRefName'],\n cwd,\n );\n if (result.code !== 0) {\n return null;\n }\n try {\n return JSON.parse(result.stdout.trim());\n } catch {\n return null;\n }\n}\n\n/**\n * Get CI check statuses for a PR.\n * Returns null on error, empty array if no checks.\n * Note: gh pr checks uses 'state' (FAILURE/SUCCESS/PENDING) and 'link' (not conclusion/detailsUrl)\n */\nasync function getChecks(cwd?: string): Promise<Array<{\n name: string;\n state: string;\n link: string;\n}> | null> {\n const result = await runGh(\n ['pr', 'checks', '--json', 'name,state,link'],\n cwd,\n );\n const output = result.stdout.trim();\n if (!output) {\n return result.code === 0 ? [] : null;\n }\n try {\n return JSON.parse(output) || [];\n } catch {\n return result.code === 0 ? [] : null;\n }\n}\n\n/**\n * Get reviews for a PR.\n * Returns null on error, empty array if no reviews.\n */\nasync function getReviews(\n prNumber: number,\n cwd?: string,\n): Promise<Array<{\n author: { login: string };\n state: string;\n body: string;\n}> | null> {\n // Get owner/repo from gh\n const repoResult = await runGh(['repo', 'view', '--json', 'owner,name'], cwd);\n if (repoResult.code !== 0) {\n return null;\n }\n let owner: string;\n let repo: string;\n try {\n const repoInfo = JSON.parse(repoResult.stdout.trim());\n owner = repoInfo.owner.login;\n repo = repoInfo.name;\n } catch {\n return null;\n }\n\n const result = await runGh(\n [\n 'api',\n '--paginate',\n `repos/${owner}/${repo}/pulls/${prNumber}/reviews?per_page=100`,\n ],\n cwd,\n );\n if (result.code !== 0) {\n return null;\n }\n try {\n // GitHub API returns 'user' not 'author', so we transform the response\n const rawReviews = JSON.parse(result.stdout.trim()) || [];\n return rawReviews\n .filter(\n (r: { user?: { login: string }; state: string; body: string }) =>\n r.user?.login,\n )\n .map((r: { user: { login: string }; state: string; body: string }) => ({\n author: { login: r.user.login },\n state: r.state,\n body: r.body || '',\n }));\n } catch {\n return null;\n }\n}\n\n/**\n * Get the latest review state per author.\n * GitHub API returns all historical reviews, so we need to deduplicate\n * to find each reviewer's current state.\n */\nfunction getLatestReviewsByAuthor(\n reviews: Array<{ author: { login: string }; state: string; body: string }>,\n): Array<{ author: { login: string }; state: string; body: string }> {\n const latestByAuthor = new Map<\n string,\n { author: { login: string }; state: string; body: string }\n >();\n // Process in order - later reviews override earlier ones\n for (const review of reviews) {\n latestByAuthor.set(review.author.login, review);\n }\n return Array.from(latestByAuthor.values());\n}\n\n/**\n * Sleep for a given number of milliseconds.\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Extract GitHub Actions run ID from a check link.\n * Links look like: https://github.com/owner/repo/actions/runs/RUN_ID/job/JOB_ID\n * Returns null if the link is not a GitHub Actions link.\n */\nfunction extractRunId(link: string): string | null {\n const match = link.match(/\\/actions\\/runs\\/(\\d+)/);\n return match?.[1] ?? null;\n}\n\n/**\n * Fetch failed job logs for a GitHub Actions run.\n * Uses `gh run view <run-id> --log-failed` to get actual error output.\n * Returns null if logs can't be fetched.\n */\nasync function getFailedRunLogs(\n runId: string,\n cwd?: string,\n): Promise<string | null> {\n const result = await runGh(['run', 'view', runId, '--log-failed'], cwd);\n if (result.code !== 0 || !result.stdout.trim()) {\n return null;\n }\n // Limit output to avoid huge payloads (keep last ~100 lines)\n const lines = result.stdout.trim().split('\\n');\n const maxLines = 100;\n if (lines.length > maxLines) {\n return `... (${lines.length - maxLines} lines truncated)\\n${lines.slice(-maxLines).join('\\n')}`;\n }\n return result.stdout.trim();\n}\n\n/** Group checks by run ID, separating GitHub Actions from external checks */\nfunction groupChecksByRunId(\n failedChecks: Array<{ name: string; state: string; link: string }>,\n): Map<string, Array<{ name: string; state: string; link: string }>> {\n const runIdToChecks = new Map<\n string,\n Array<{ name: string; state: string; link: string }>\n >();\n\n for (const check of failedChecks) {\n const runId = extractRunId(check.link);\n // Use empty string for external checks (no run ID)\n const key = runId ?? '';\n const existing = runIdToChecks.get(key) ?? [];\n existing.push(check);\n runIdToChecks.set(key, existing);\n }\n\n return runIdToChecks;\n}\n\n/**\n * Fetch failure logs for failed checks.\n * Only works for GitHub Actions checks; external checks return null.\n * Fetches logs in parallel for better performance.\n */\nasync function enrichFailedChecksWithLogs(\n failedChecks: Array<{ name: string; state: string; link: string }>,\n cwd?: string,\n): Promise<\n Array<{ name: string; state: string; link: string; log_output?: string }>\n> {\n const runIdToChecks = groupChecksByRunId(failedChecks);\n\n // Fetch logs in parallel for all unique run IDs\n const entries = Array.from(runIdToChecks.entries());\n const logResults = await Promise.all(\n entries.map(([runId]) =>\n runId ? getFailedRunLogs(runId, cwd) : Promise.resolve(null),\n ),\n );\n\n // Build results with fetched logs\n const results: Array<{\n name: string;\n state: string;\n link: string;\n log_output?: string;\n }> = [];\n\n for (let i = 0; i < entries.length; i++) {\n // biome-ignore lint/style/noNonNullAssertion: index within bounds\n const [, checks] = entries[i]!;\n const logs = logResults[i];\n for (const check of checks) {\n results.push({ ...check, log_output: logs ?? undefined });\n }\n }\n\n return results;\n}\n\n/** Options for creating a WaitCIResult */\ninterface ResultOptions {\n status: WaitCIResult['ci_status'];\n startTime: number;\n prInfo?: { number: number; url: string };\n errorMessage?: string;\n failedChecks?: Array<{\n name: string;\n state: string;\n link: string;\n log_output?: string;\n }>;\n reviewComments?: Array<{ author: string; body: string }>;\n}\n\n/** Create a WaitCIResult with the given options */\nfunction createResult(opts: ResultOptions): WaitCIResult {\n const elapsed = Math.round((Date.now() - opts.startTime) / 1000);\n return {\n ci_status: opts.status,\n pr_number: opts.prInfo?.number,\n pr_url: opts.prInfo?.url,\n failed_checks:\n opts.failedChecks?.map((c) => ({\n name: c.name,\n conclusion: c.state.toLowerCase(),\n details_url: c.link,\n log_output: c.log_output,\n })) || [],\n review_comments: opts.reviewComments || [],\n elapsed_seconds: elapsed,\n error_message: opts.errorMessage,\n };\n}\n\n/** Poll outcome from a single CI status check */\ninterface PollOutcome {\n error?: string;\n noChecksYet?: boolean;\n noChecksConfigured?: boolean;\n shouldFail?: boolean;\n shouldPass?: boolean;\n failedChecks?: Array<{\n name: string;\n state: string;\n link: string;\n log_output?: string;\n }>;\n reviewComments?: Array<{ author: string; body: string }>;\n}\n\n/** Poll CI status and reviews once, returning the outcome */\nasync function pollCIStatus(\n cwd: string | undefined,\n prNumber: number,\n isFirstPoll: boolean,\n): Promise<PollOutcome> {\n const checks = await getChecks(cwd);\n const reviews = await getReviews(prNumber, cwd);\n\n if (checks === null || reviews === null) {\n return { error: 'Failed to fetch CI status or reviews from GitHub' };\n }\n\n // Handle zero checks case\n if (checks.length === 0) {\n return isFirstPoll ? { noChecksYet: true } : { noChecksConfigured: true };\n }\n\n // Process checks and reviews\n const latestReviews = getLatestReviewsByAuthor(reviews);\n const failedChecks = checks.filter((c) => c.state === 'FAILURE');\n const blockingReviews = latestReviews.filter(\n (r) => r.state === 'CHANGES_REQUESTED',\n );\n const reviewComments = blockingReviews.map((r) => ({\n author: r.author.login,\n body: r.body || '',\n }));\n const pendingChecks = checks.filter(\n (c) =>\n c.state === 'PENDING' ||\n c.state === 'QUEUED' ||\n c.state === 'IN_PROGRESS',\n );\n\n const shouldFail = failedChecks.length > 0 || blockingReviews.length > 0;\n const shouldPass = pendingChecks.length === 0;\n\n return { shouldFail, shouldPass, failedChecks, reviewComments };\n}\n\n/**\n * Wait for CI to complete and check for blocking reviews.\n * @param timeoutSeconds Maximum time to wait for CI\n * @param pollIntervalSeconds Time between polls\n * @param cwd Working directory for gh commands (defaults to process.cwd())\n */\nexport async function waitForCI(\n timeoutSeconds: number,\n pollIntervalSeconds: number,\n cwd?: string,\n): Promise<WaitCIResult> {\n const startTime = Date.now();\n let isFirstPoll = true;\n\n if (!(await isGhAvailable())) {\n return createResult({\n status: 'error',\n startTime,\n errorMessage: 'gh CLI is not installed or not authenticated',\n });\n }\n\n const prInfo = await getPRInfo(cwd);\n if (!prInfo) {\n return createResult({\n status: 'error',\n startTime,\n errorMessage: 'No PR found for current branch',\n });\n }\n\n const timeoutMs = timeoutSeconds * 1000;\n\n while (Date.now() - startTime < timeoutMs) {\n const pollOutcome = await pollCIStatus(cwd, prInfo.number, isFirstPoll);\n isFirstPoll = false;\n\n if (pollOutcome.error) {\n return createResult({\n status: 'error',\n startTime,\n prInfo,\n errorMessage: pollOutcome.error,\n });\n }\n\n if (pollOutcome.noChecksYet) {\n await sleep(pollIntervalSeconds * 1000);\n continue;\n }\n\n if (pollOutcome.noChecksConfigured) {\n return createResult({ status: 'passed', startTime, prInfo });\n }\n\n if (pollOutcome.shouldFail && pollOutcome.failedChecks) {\n // Enrich failed checks with actual log output from GitHub Actions\n const enrichedChecks = await enrichFailedChecksWithLogs(\n pollOutcome.failedChecks,\n cwd,\n );\n return createResult({\n status: 'failed',\n startTime,\n prInfo,\n failedChecks: enrichedChecks,\n reviewComments: pollOutcome.reviewComments,\n });\n }\n\n if (pollOutcome.shouldPass) {\n return createResult({ status: 'passed', startTime, prInfo });\n }\n\n await sleep(pollIntervalSeconds * 1000);\n }\n\n return createResult({ status: 'pending', startTime, prInfo });\n}\n\nexport function registerWaitCICommand(program: Command): void {\n program\n .command('wait-ci')\n .description(\n 'Wait for CI checks to complete and check for blocking reviews',\n )\n .option(\n '--timeout <seconds>',\n 'Maximum time to wait for CI (default: 270)',\n '270',\n )\n .option(\n '--poll-interval <seconds>',\n 'Time between CI status checks (default: 15)',\n '15',\n )\n .action(async (options) => {\n const timeout = Number.parseInt(options.timeout, 10);\n const pollInterval = Number.parseInt(options.pollInterval, 10);\n\n if (Number.isNaN(timeout) || timeout <= 0) {\n console.log(\n JSON.stringify({\n ci_status: 'error',\n failed_checks: [],\n review_comments: [],\n elapsed_seconds: 0,\n error_message: 'Invalid timeout value',\n }),\n );\n process.exit(1);\n }\n\n if (Number.isNaN(pollInterval) || pollInterval <= 0) {\n console.log(\n JSON.stringify({\n ci_status: 'error',\n failed_checks: [],\n review_comments: [],\n elapsed_seconds: 0,\n error_message: 'Invalid poll-interval value',\n }),\n );\n process.exit(1);\n }\n\n const result = await waitForCI(timeout, pollInterval);\n console.log(JSON.stringify(result));\n\n // Exit codes: 0=passed, 1=failed/error, 2=pending (timeout)\n if (result.ci_status === 'passed') {\n process.exit(0);\n } else if (result.ci_status === 'pending') {\n process.exit(2);\n } else {\n process.exit(1);\n }\n });\n}\n"
|
|
82
83
|
],
|
|
83
|
-
"mappings": "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",
|
|
84
|
-
"debugId": "
|
|
84
|
+
"mappings": "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",
|
|
85
|
+
"debugId": "5FCEF2943643F3B864756E2164756E21",
|
|
85
86
|
"names": []
|
|
86
87
|
}
|