| # CLI Batch Processing Implementation Summary |
|
|
| ## Overview |
|
|
| Implemented a complete CLI batch processing mode for AI Agent Guards that shares code with the UI. This allows scanning multiple session files in batch, generating markdown reports, and integrating with CI/CD pipelines. |
|
|
| **Date:** 2026-01-29 |
|
|
| --- |
|
|
| ## β
What Was Implemented |
|
|
| ### 1. Core Shared Logic (`multi_agent_demo/core/`) |
|
|
| **NEW FILES:** |
| - `__init__.py` - Module exports |
| - `scanner_runner.py` - Shared scanner execution logic |
|
|
| **Purpose:** Extract scanner execution into reusable functions that both UI and CLI can use. |
|
|
| **Key Functions:** |
| - `run_scanners_on_session()` - Run scanners on single session |
| - `aggregate_results()` - Aggregate statistics across multiple sessions |
|
|
| ### 2. Report Generation (`multi_agent_demo/reports/`) |
|
|
| **NEW FILES:** |
| - `__init__.py` - Module exports |
| - `markdown_generator.py` - Markdown report formatting |
|
|
| **Purpose:** Generate copyable markdown reports for CLI output. |
|
|
| **Features:** |
| - Overall statistics (total, safe, unsafe) |
| - Per-scanner breakdown (blocks, warnings, safe) |
| - Detailed results for sessions with issues |
| - Smart filtering (only shows problematic sessions) |
|
|
| ### 3. CLI Entry Point (`multi_agent_demo/cli.py`) |
|
|
| **NEW FILE:** `cli.py` |
|
|
| **Purpose:** Command-line interface for batch processing. |
|
|
| **Features:** |
| - Argument parsing (`-d` directory, `-s` scanners, `-o` output, `--show-safe`) |
| - Progress bar with color-coded status |
| - Batch session processing with error handling |
| - Console and file output |
| - ANSI color support for terminal |
|
|
| **Usage:** |
| ```bash |
| python -m multi_agent_demo.cli -d ./sessions |
| python -m multi_agent_demo.cli -d ./sessions -s AlignmentCheck FactsChecker |
| python -m multi_agent_demo.cli -d ./sessions -o report.md |
| ``` |
|
|
| ### 4. Testing Scripts |
|
|
| **NEW FILES:** |
| - `test_batch_cli.py` - Manual test (creates sample sessions) |
| - `test_batch_cli_automated.py` - Automated CI/CD test |
|
|
| **Purpose:** Verify CLI works correctly. |
|
|
| ### 5. Documentation |
|
|
| **NEW FILES:** |
| - `BATCH_CLI_GUIDE.md` - Comprehensive usage guide |
|
|
| **UPDATED FILES:** |
| - `README.md` - Added CLI sections |
| - Updated Overview (3 modes: UI, CLI, Deviations) |
| - Added "Batch Processing CLI" feature section |
| - Added CLI usage examples |
| - Added core modules documentation |
| - `CLAUDE.md` - Added CLI commands |
| - Updated running commands |
| - Updated module structure |
|
|
| --- |
|
|
| ## π Architecture |
|
|
| ### Code Sharing Between UI and CLI |
|
|
| ``` |
| βββββββββββββββββββββββββββββββββββββββββββββββ |
| β User Interfaces β |
| ββββββββββββββββββββ¬βββββββββββββββββββββββββββ€ |
| β app.py (UI) β cli.py (CLI) β |
| ββββββββββ¬ββββββββββ΄βββββββββββ¬ββββββββββββββββ |
| β β |
| β βββββββββββββββββββ΄ββββββββββββ |
| β β core/scanner_runner.py β |
| β β - run_scanners_on_session()β |
| ββββ€ - aggregate_results() β |
| βββββββββββββββ¬ββββββββββββββββ |
| β |
| βββββββββββββββ΄ββββββββββββββββ |
| β firewall.py β |
| β - run_scanner_tests() β |
| βββββββββββββββ¬ββββββββββββββββ |
| β |
| βββββββββββββββ΄ββββββββββββββββ |
| β scanners/ β |
| β - PromptGuard β |
| β - AlignmentCheck β |
| β - FactsChecker β |
| β - DataDisclosureGuard β |
| βββββββββββββββββββββββββββββββ |
| ``` |
|
|
| **Benefits:** |
| - Single source of truth for scanner logic |
| - Changes automatically apply to both UI and CLI |
| - Consistent results across modes |
| - Easier maintenance |
|
|
| --- |
|
|
| ## π― Use Cases |
|
|
| ### 1. CI/CD Integration |
| ```bash |
| # In GitHub Actions |
| python -m multi_agent_demo.cli -d ./test_sessions -o scan_report.md |
| ``` |
|
|
| ### 2. Regression Testing |
| ```bash |
| # Before deployment |
| python -m multi_agent_demo.cli -d ./baseline_sessions -o before.md |
| # After changes |
| python -m multi_agent_demo.cli -d ./baseline_sessions -o after.md |
| diff before.md after.md |
| ``` |
|
|
| ### 3. Large-Scale Analysis |
| ```bash |
| # Process production logs |
| python -m multi_agent_demo.cli -d ./prod_sessions -o analysis.md |
| ``` |
|
|
| ### 4. Compliance Reporting |
| ```bash |
| # Generate monthly report |
| python -m multi_agent_demo.cli -d ./sessions/2026-01 -o report.md --show-safe |
| ``` |
|
|
| --- |
|
|
| ## π File Changes Summary |
|
|
| ### Created Files (9 new files) |
|
|
| ``` |
| multi_agent_demo/ |
| βββ core/ |
| β βββ __init__.py # NEW |
| β βββ scanner_runner.py # NEW |
| βββ reports/ |
| β βββ __init__.py # NEW |
| β βββ markdown_generator.py # NEW |
| βββ cli.py # NEW |
| |
| # Root directory |
| βββ test_batch_cli.py # NEW |
| βββ test_batch_cli_automated.py # NEW |
| βββ BATCH_CLI_GUIDE.md # NEW |
| βββ BATCH_CLI_IMPLEMENTATION.md # NEW (this file) |
| ``` |
|
|
| ### Updated Files (2 files) |
|
|
| ``` |
| βββ README.md # UPDATED |
| β - Added CLI overview |
| β - Added batch processing features |
| β - Added CLI usage examples |
| β - Added core modules documentation |
| β |
| βββ CLAUDE.md # UPDATED |
| - Added CLI commands |
| - Updated module structure |
| ``` |
|
|
| --- |
|
|
| ## π§ͺ Testing |
|
|
| ### Manual Test |
|
|
| ```bash |
| # Create test sessions |
| python test_batch_cli.py |
| |
| # Run CLI on test sessions |
| python -m multi_agent_demo.cli -d /tmp/cli_test_sessions_XXXXX |
| ``` |
|
|
| ### Automated Test |
|
|
| ```bash |
| # Run automated test |
| python test_batch_cli_automated.py |
| |
| # Expected: β
ALL CHECKS PASSED |
| ``` |
|
|
| ### CI/CD Integration |
|
|
| Add to `.github/workflows/test.yml`: |
| ```yaml |
| - name: Test CLI batch processing |
| run: python test_batch_cli_automated.py |
| ``` |
|
|
| --- |
|
|
| ## π Example Output |
|
|
| ### Console |
|
|
| ``` |
| ================================================================================ |
| π‘οΈ AI AGENT GUARDS - BATCH SCANNER |
| ================================================================================ |
|
|
| π Scanning directory: ./sessions |
| β
Found 51 session file(s) |
|
|
| π Enabled scanners: PromptGuard, AlignmentCheck, FactsChecker |
|
|
| βοΈ Processing sessions... |
|
|
| [ββββββββββββββββββββββββββββββββββββββββ] 100% | 51/51 | π’ session_051.json |
| |
| β
Processing complete! |
| |
| ================================================================================ |
| π SUMMARY |
| ================================================================================ |
| |
| Total Sessions: 51 |
| Safe Sessions: 35 β
|
| Sessions with Issues: 16 β οΈ |
| |
| Total Blocks: 6 π« |
| Total Warnings: 43 β οΈ |
| Total Safe: 198 β
|
| ``` |
| |
| ### Markdown Report |
| |
| ````markdown |
| # π‘οΈ AI Agent Guards - Batch Scan Report |
| |
| ## π Overall Statistics |
| |
| - **Total Sessions Scanned:** 51 |
| - **Safe Sessions:** 35 β
|
| - **Sessions with Issues:** 16 β οΈ |
| |
| **Accumulated Counts:** |
| - π« **Blocks:** 6 |
| - β οΈ **Warnings:** 43 |
| - β
**Safe:** 198 |
| |
| ## π Results by Scanner |
| |
| ### AlignmentCheck |
| |
| | Metric | Count | |
| |--------|-------| |
| | π« Blocks | 3 | |
| | β οΈ Warnings | 0 | |
| | β
Safe | 48 | |
| |
| ## π Detailed Results per Session |
| |
| _Only showing sessions with issues._ |
|
|
| ### Session 5: `session_005.json` |
| |
| **Overall Decision:** π΄ BLOCK |
| |
| **Scanner Results:** |
| |
| - **AlignmentCheck:** π΄ BLOCK |
| - Total: 4 | Safe: 2 | Warnings: 0 | Blocks: 2 |
| ```` |
| |
| --- |
| |
| ## π§ Configuration |
| |
| ### Session JSON Format |
| |
| ```json |
| { |
| "session_id": "session_001", |
| "purpose": "Banking assistant", |
| "messages": [ |
| {"type": "user", "content": "What's my balance?"}, |
| {"type": "assistant", "content": "Your balance is $1,250."} |
| ] |
| } |
| ``` |
| |
| ### CLI Arguments |
| |
| | Argument | Required | Description | Example | |
| |----------|----------|-------------|---------| |
| | `-d, --directory` | Yes | Directory with JSON files | `-d ./sessions` | |
| | `-s, --scanners` | No | Scanners to run (default: all) | `-s AlignmentCheck FactsChecker` | |
| | `-o, --output` | No | Output file (default: console) | `-o report.md` | |
| | `--show-safe` | No | Show safe session details | `--show-safe` | |
| |
| ### Available Scanners |
| |
| - `PromptGuard` - Malicious prompts/injections (BLOCK/WARNING/SAFE) |
| - `AlignmentCheck` - Goal hijacking/drift (BLOCK/SAFE) |
| - `FactsChecker` - Contradictions/ungrounded (BLOCK/WARNING/SAFE) |
| - `DataDisclosureGuard` - PII disclosure (BLOCK/WARNING/SAFE) |
| |
| --- |
| |
| ## π Next Steps |
| |
| ### For Users |
| |
| 1. **Try the CLI:** |
| ```bash |
| python test_batch_cli.py # Create samples |
| python -m multi_agent_demo.cli -d /tmp/cli_test_sessions_XXXXX |
| ``` |
| |
| 2. **Read the guide:** |
| See [BATCH_CLI_GUIDE.md](./BATCH_CLI_GUIDE.md) |
| |
| 3. **Integrate with CI/CD:** |
| Add to your pipeline for automated scanning |
| |
| ### For Developers |
| |
| 1. **Test the implementation:** |
| ```bash |
| python test_batch_cli_automated.py |
| ``` |
| |
| 2. **Extend functionality:** |
| - Add new scanners β automatically available in CLI |
| - Modify report format β edit `markdown_generator.py` |
| - Add custom aggregations β edit `scanner_runner.py` |
|
|
| 3. **Update CI/CD:** |
| - Add `test_batch_cli_automated.py` to GitHub Actions |
|
|
| --- |
|
|
| ## β¨ Key Features |
|
|
| 1. **Shared Code:** UI and CLI use same scanner logic |
| 2. **Smart Filtering:** Only shows sessions with issues |
| 3. **Progress Display:** Real-time colored progress bar |
| 4. **Markdown Reports:** Copyable format for documentation |
| 5. **Flexible Scanner Selection:** Choose which scanners to run |
| 6. **Batch Processing:** Process hundreds of sessions at once |
| 7. **CI/CD Ready:** Exit codes and file output for automation |
| 8. **Detailed Statistics:** Per-scanner and per-session breakdowns |
|
|
| --- |
|
|
| ## π Documentation |
|
|
| - **[BATCH_CLI_GUIDE.md](./BATCH_CLI_GUIDE.md)** - Complete usage guide |
| - **[README.md](./README.md)** - Main documentation |
| - **[CLAUDE.md](./CLAUDE.md)** - Development guide |
|
|
| --- |
|
|
| ## π Summary |
|
|
| **What was requested:** |
| - CLI batch processing for multiple session files |
| - Shared code between UI and CLI |
| - Progress display |
| - Markdown reports with statistics |
| - CI/CD testing |
| - README updates |
|
|
| **What was delivered:** |
| - β
Complete CLI implementation with all requested features |
| - β
Shared core logic (`scanner_runner.py`) |
| - β
Markdown report generator |
| - β
Progress bar with color-coded status |
| - β
Manual and automated tests |
| - β
Comprehensive documentation (README, CLAUDE.md, BATCH_CLI_GUIDE.md) |
| - β
Smart filtering (only shows sessions with issues) |
| - β
Flexible scanner selection |
| - β
File and console output |
|
|
| **Bonus features:** |
| - ANSI color support for better terminal UX |
| - Recursive directory scanning |
| - Error handling and graceful failures |
| - Example use cases and integration patterns |
| - Programmatic usage examples |
|
|