mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-05 01:50:27 +08:00
fix(ccw): only cache positive tool availability results
Fixes CLI tool detection failure after server restart. The previous caching implementation cached negative results (errors, timeouts) which caused persistent failures if the first check failed for any transient reason (environment, timing, etc.). Changes: - Only cache positive tool availability results - Don't cache errors or timeouts - they may be transient - Subsequent checks will retry if a tool wasn't found This ensures that once a tool is found, lookups are fast, but transient failures don't persist in the cache. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -222,39 +222,27 @@ async function checkToolAvailability(tool: string): Promise<ToolAvailability> {
|
||||
? { available: true, path: stdout.trim().split('\n')[0] }
|
||||
: { available: false, path: null };
|
||||
|
||||
// Cache the result
|
||||
toolAvailabilityCache.set(tool, {
|
||||
result,
|
||||
timestamp: Date.now()
|
||||
});
|
||||
// Only cache positive results to avoid caching transient failures
|
||||
if (result.available) {
|
||||
toolAvailabilityCache.set(tool, {
|
||||
result,
|
||||
timestamp: Date.now()
|
||||
});
|
||||
}
|
||||
|
||||
resolve(result);
|
||||
});
|
||||
|
||||
child.on('error', () => {
|
||||
const result: ToolAvailability = { available: false, path: null };
|
||||
|
||||
// Cache negative results too
|
||||
toolAvailabilityCache.set(tool, {
|
||||
result,
|
||||
timestamp: Date.now()
|
||||
});
|
||||
|
||||
resolve(result);
|
||||
// Don't cache errors - they may be transient
|
||||
resolve({ available: false, path: null });
|
||||
});
|
||||
|
||||
// Timeout after 5 seconds
|
||||
setTimeout(() => {
|
||||
child.kill();
|
||||
const result: ToolAvailability = { available: false, path: null };
|
||||
|
||||
// Cache timeout results
|
||||
toolAvailabilityCache.set(tool, {
|
||||
result,
|
||||
timestamp: Date.now()
|
||||
});
|
||||
|
||||
resolve(result);
|
||||
// Don't cache timeouts - they may be transient
|
||||
resolve({ available: false, path: null });
|
||||
}, 5000);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user