-
Notifications
You must be signed in to change notification settings - Fork 0
Open
0 / 70 of 7 issues completedOpen
0 / 70 of 7 issues completed
Copy link
Description
This issue tracks the systemic improvements and critical bug fixes identified during a comprehensive code review by Claude. The goal is to move from a functional prototype to a production-quality CLI tool.
🔴 Critical Issues (Must Fix First)
- Security: Symlink bypass in
secure_resolve_path(utils.py)os.path.abspathdoes not resolve symlinks. Useos.path.realpathto prevent directory traversal via malicious symlinks.
- Concurrency: Thread-safety in parallel tasks (
handlers.py)- Parallel tasks in
@sequencetargeting the same engine concurrently mutateengine.history. Implement per-enginethreading.Lock.
- Parallel tasks in
- Architecture: Conflicting
initialize_engines()(config.pyvsengines.py)- Remove duplicate logic in
config.pyand unify the signature to avoid runtime crashes.
- Remove duplicate logic in
- Functional: Gemini system prompt implementation (
engines.py)- Use the native
system_instructionparameter instead of injecting it as a "model" role message.
- Use the native
- Reliability: Code fence parser logic (
utils.py)- Replace line-by-line parsing with a robust regex to handle nested fences and language identifiers correctly.
🟠 High & Medium Priority
- UX: Implement CLI Arguments & History (
main.py)- Add argparse for
--config,--no-log, and--version. - Add
readlinesupport for command history navigation.
- Add argparse for
- Refactoring: Eliminate Duplicated Splitters (
parsers.py)- Extract _smart_split logic to handle both
->and||delimiters.
- Extract _smart_split logic to handle both
- Refactoring: Dynamic Engine Registry (
parsers.py)- Derive
VALID_COMMANDSfrom the active engine registry instead of hardcoding.
- Derive
- UX: Handle Ctrl+C and Ctrl+D gracefully (
main.py)- Implement double Ctrl+C to exit and handle EOFError.
🟡 Systemic Cleanups
- Reduce Comment Noise
- Remove redundant "restating" comments across all modules (~20% line count reduction).
- Standardize Data Classes (
parsers.py)- Use
field(default_factory=list)instead of__post_init__for mutable defaults.
- Use
- Unify Stream Output (
handlers.py)- Create a helper for truncated stdout/stderr display.
📂 Module-Specific Notes
- config.py: Fix
setup_loggerignoringno_log. Validate INI file existence. - engines.py: Add timeouts to all API calls. Wrap Gemini errors in
AIError. - parsers.py: Consolidate
indices_to_skipandbare_tokenspatterns. - utils.py: Use ANSI escape codes for clearing the thinking line.
Generated by Claude Review Pipeline
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels