Release v1.1.0: Major CLI Refactor and Feature Enhancements#7
Open
Release v1.1.0: Major CLI Refactor and Feature Enhancements#7
Conversation
This major refactor simplifies the user experience into four distinct workflows: Setup, Intelligence, Investigation, and Management. Key Changes: - CLI: Replace `summary`/`ask`/`oneshot` with `init`, `analyze`, `chat`, `snapshot`. - Storage: Deprecate ZIP archives in favor of side-by-side `<binary>.snapshot` directories. - Analysis: Unify prompts into a single `ANALYZE_SYSTEM_PROMPT` for consistent reporting. - Config: Replace shell scripts with a cross-platform Python `init` wizard. - Docker: Update wrapper script to allow read-write config mounting for `init` persistence. - Cleanup: Remove obsolete shell scripts (`kernagent-config`, `kernagent-update`, `kernagent-uninstall`). BREAKING CHANGE: All previous CLI arguments have changed. Existing .zip snapshots are no longer supported.
- Dockerfile: Added the `-u` flag to the ENTRYPOINT for unbuffered output, enhancing compatibility with Docker's streaming. - cli.py: Modified output handling in `run_analyze` to use `sys.stdout.write` for consistent flushing, ensuring reliable streaming. - Updated package version from 1.0.0 to 1.0.3 in uv.lock.
- Introduced a persistent message history in the ReverseEngineeringAgent to maintain context across iterations. - Updated the run method to utilize the new message history for improved interaction with the LLM. - Ensured that only user questions and final answers are stored in the message history for clarity and efficiency. - Added verbose logging for LLM responses to aid in debugging.
- Updated Dockerfile to include `context.py` for improved context management. - Enhanced `cli.py` to support a new `--full` flag in the `analyze` command, allowing for the generation of a comprehensive multi-agent context. - Refactored `run_analyze` to utilize the new context management features, ensuring that context is included in analysis outputs. - Introduced a new method in `SnapshotTools` to retrieve the persisted `BINARY_CONTEXT.md` content. - Updated prompts to reflect the integration of pre-analysis context in the analysis workflow.
…ence - Updated Dockerfile to include new files for enhanced CLI functionality. - Modified ENTRYPOINT to allow direct execution of the kernagent module. - Added `typer` dependency for improved command-line interface management. - Refactored CLI to utilize rich console features for better user interaction and feedback. - Introduced event handling in the agent for real-time updates during processing.
…gement - Revised README.md to improve clarity and structure, including updates to the Quick Start and Features sections. - Added tests to ensure the ReverseEngineeringAgent preserves conversation history across interactions and excludes tool calls from history. - Enhanced CLI command tests to validate context handling and output formatting in analysis commands.
…with parallel decompilation and caching mechanisms - Bump version in uv.lock to 1.1.0. - Introduce threading for parallel decompilation of functions, improving performance. - Implement caching for cross-reference maps and BasicBlockModel to optimize repeated analyses. - Add methods for adaptive timeout calculation and thread-local decompiler management. - Enhance function data extraction to include metrics and instruction details without decompilation.
- Removed final markdown render in run_analyze for cleaner output. - Updated run_chat to display assistant responses using rich Markdown for improved formatting.
…and function processing - Renamed _ThreadLocalDecompiler to _ThreadLocalEnvironment to better reflect its purpose. - Enhanced thread-local storage to include monitor and BasicBlockModel instances. - Updated function processing to utilize thread-local environment for decompilation and analysis. - Improved error handling and logging during function data extraction and decompilation. - Streamlined the extraction process to support parallel function processing with adaptive timeout handling.
- Replaced individual file copies with a single command to copy the entire kernagent package, ensuring new modules are automatically included. - Maintained existing environment variable settings for Python version.
- Introduced a conditional log statement to output the detected binary and its mount point when verbose mode is enabled, enhancing debugging capabilities during container runs.
- Fix all ruff linting errors (unused imports, bare except statements, undefined variables) - Apply ruff formatting to ensure consistent code style - Remove unreachable code in oneshot/pruner.py - Replace bare except clauses with specific Exception handling - Remove unused variable assignments in tests - All tests passing (188/188) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add type: ignore comments for Ghidra/Java imports (unavailable outside Ghidra environment) - Fix type errors in capa_runner.py (layout assignment) - Fix type errors in config.py (load_dotenv shadowing) - Fix type errors in oneshot/pruner.py: * Ensure string types in _resolve_function_refs * Fix file_info["size"] type conversion * Fix _dedup_preserve calls with proper None filtering - Fix type errors in snapshot/extractor.py (Ghidra API calls) - Fix type errors in snapshot/tools.py (dict operations) - Update tests to use Counter instead of dict for string_kind_counts - All 188 tests passing - All ty type checks passing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Bump versions of `flare-capa` to 9.3.1, `openai` to 2.9.0, and `pytest` to 9.0.2 in `pyproject.toml`. - Add `ruff` as a new dependency for linting. - Update `uv.lock` with new package versions and URLs for `anyio`, `certifi`, `click`, and others. - Enhance CI workflow by adding `ruff` format check and linting steps to ensure code quality. - Adjust Docker build conditions to include all branches and PRs for better testing coverage.
- Modified the CI configuration to run on all branches instead of just main and develop, enhancing testing coverage across the repository.
- Split long list comprehensions into multiple lines for better readability in build_oneshot_summary function. - No functional changes made, focusing on code clarity.
- Restrict CI triggers to main and develop branches to focus on critical development paths. - Implement concurrency to cancel previous runs on the same branch/PR, optimizing resource usage. - Set permissions for read-only access by default, with escalated permissions for specific jobs. - Remove redundant Python syntax check step to streamline the workflow. - Adjust GitHub Release job permissions to allow necessary write access for creating releases.
- Added manual trigger option for CI with input to test multi-platform builds (amd64 + arm64). - Adjusted Docker build conditions to accommodate multi-platform testing based on the manual trigger input. - Streamlined job steps to conditionally skip certain actions when multi-platform testing is enabled.
- Added a conditional check to log detailed warnings only when verbose mode is enabled, enhancing the clarity of error reporting during capa analysis failures.
- Removed outdated workflow sections from README for clarity. - Updated `init` command description to specify LLM provider setup. - Enhanced `analyze` and `chat` command descriptions with additional context and images. - Improved agent's response handling by prompting for analysis if initial content is empty after tool calls. - Deleted deprecated prompts from `prompts.py` to streamline codebase.
- Updated the formatting of user message appends for clarity and consistency in the ReverseEngineeringAgent class. - Ensured that the prompt for analysis is consistently structured across multiple instances in the code.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This release introduces a major architectural overhaul of the CLI, significant CI/CD improvements, and comprehensive documentation updates. The project now follows an opinionated 4-command workflow for better UX and introduces modern Python tooling standards.
🎯 Major Changes
CLI Architecture Refactor
init,snapshot,analyze,chatsummary,ask,oneshot) with more intuitive workflowVersion 1.1.0 Features
CI/CD Enhancements
ruff formatandruff checkCode Quality
📝 Documentation
🐛 Bug Fixes
🧪 Testing
🔧 Infrastructure
Breaking Changes
summary→analyzeask→chatoneshot→analyze --jsoninitcommand for initial configurationsnapshotcommand for managing extraction artifactsMigration Guide
For users upgrading from v1.0.x:
Test Plan
🤖 Generated with Claude Code