diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000000..7f2f4303320 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,123 @@ +name: release + +on: + workflow_dispatch: + push: + tags: + - "*" + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +permissions: + contents: write + packages: write + +jobs: + build: + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + target: linux-x64 + artifact: cyxwiz-linux-x64 + - os: ubuntu-latest + target: linux-arm64 + artifact: cyxwiz-linux-arm64 + - os: macos-14 + target: darwin-x64 + artifact: cyxwiz-darwin-x64 + - os: macos-latest + target: darwin-arm64 + artifact: cyxwiz-darwin-arm64 + - os: windows-latest + target: windows-x64 + artifact: cyxwiz-windows-x64 + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - run: git fetch --force --tags + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: 1.3.6 + + - name: Install dependencies + run: bun install + + - name: Build CLI + working-directory: packages/opencode + run: bun run build --single + env: + OPENCODE_VERSION: ${{ github.ref_name }} + + - name: Package Linux/macOS Binary + if: runner.os != 'Windows' + run: | + cd packages/opencode/dist + DIST_DIR=$(ls -d */ | head -1) + cd "$DIST_DIR/bin" + chmod +x opencode + mv opencode cyxwiz + tar -czvf ${{ matrix.artifact }}.tar.gz cyxwiz + mv ${{ matrix.artifact }}.tar.gz $GITHUB_WORKSPACE/ + + - name: Package Windows Binary + if: runner.os == 'Windows' + shell: pwsh + run: | + cd packages/opencode/dist + $distDir = Get-ChildItem -Directory | Select-Object -First 1 + cd "$($distDir.Name)/bin" + Rename-Item opencode.exe cyxwiz.exe + Compress-Archive -Path cyxwiz.exe -DestinationPath ${{ matrix.artifact }}.zip + Move-Item ${{ matrix.artifact }}.zip $env:GITHUB_WORKSPACE/ + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.artifact }} + path: | + ${{ matrix.artifact }}.tar.gz + ${{ matrix.artifact }}.zip + if-no-files-found: error + + release: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + + - name: Prepare release assets + run: | + mkdir -p release + find artifacts -type f \( -name "*.tar.gz" -o -name "*.zip" \) -exec mv {} release/ \; + ls -la release/ + + - name: Generate checksums + run: | + cd release + sha256sum * > checksums.sha256 + cat checksums.sha256 + + - name: Create Release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.ref_name }} + name: Release ${{ github.ref_name }} + draft: false + prerelease: false + generate_release_notes: true + files: release/* + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index d0ba487402f..7959c4f4671 100644 --- a/README.md +++ b/README.md @@ -1,113 +1,787 @@ -
-
-
-
The open source AI coding agent.
- +# Cyxwiz -[](https://opencode.ai) +> **Your AI Security Partner** - Just describe what you need. No commands to memorize. No syntax to learn. + +[](https://github.com/code3hr/opencode/releases/latest) +[](LICENSE) +[](https://www.linux.org/) +[](https://www.apple.com/macos/) +[](https://www.microsoft.com/windows) + +--- + +## Why Cyxwiz Exists + +Security testing shouldn't require memorizing hundreds of tool flags and command syntaxes. + +Think about it: **nmap** has 130+ options. **Nuclei** has dozens of flags. **SQLMap** has over 100 parameters. Now multiply that by the 30+ tools a typical assessment requires. That's not security work - that's a memorization exercise. + +**Cyxwiz takes a different approach.** Instead of learning tool syntax, you simply describe what you want to accomplish. The AI understands your intent and figures out which tools to use, how to chain them, and how to interpret the results. + +``` +You: "check if this server is vulnerable to log4j" + +Cyxwiz: Checking 192.168.1.10 for Log4Shell vulnerability... + [Running nuclei with CVE-2021-44228 templates] + + Found: CRITICAL - Log4Shell (CVE-2021-44228) confirmed + The server is vulnerable to remote code execution via JNDI injection. + + Recommendation: Upgrade log4j to 2.17.1+ or apply mitigations immediately. +``` + +No flags to remember. No syntax to look up. Just describe what you need. + +--- + +## What Cyxwiz Does + +Cyxwiz is an AI-powered security operations assistant. You talk to it in plain English, and it: + +1. **Understands your intent** - Whether you say "scan for open ports" or "what services are running" - same result +2. **Selects the right tools** - Picks nmap, nuclei, nikto, or whatever fits the task +3. **Chains operations intelligently** - Finds a web server? Automatically suggests vulnerability checks +4. **Explains results clearly** - No raw output dumps, just actionable insights +5. **Tracks everything** - Every finding, every command, ready for your report + +### Talk, Don't Type Commands + +Here's how a real conversation with Cyxwiz looks: + +``` +You: "I need to test this web application at https://target.com" + +Cyxwiz: I'll start with reconnaissance. Let me: + 1. Check what technologies it's running + 2. Look for common vulnerabilities + 3. Test the authentication mechanisms + + Starting now... + + [After scanning] + + Here's what I found: + - Running WordPress 5.8.1 (outdated - current is 6.4) + - 3 plugins with known vulnerabilities + - Admin login page exposed at /wp-admin + - No rate limiting on login attempts + + Want me to dig deeper into any of these? + +You: "yes, check those plugin vulnerabilities" + +Cyxwiz: Looking at the vulnerable plugins... + + CRITICAL: Contact Form 7 < 5.3.2 - Unrestricted file upload + HIGH: Elementor < 3.1.2 - Authenticated XSS + MEDIUM: WooCommerce < 5.2.0 - Information disclosure + + The file upload vulnerability is serious. With a valid form submission, + an attacker could upload malicious PHP files. + + Should I generate a detailed report with remediation steps? +``` + +### What You Can Ask + +Just describe what you need in your own words: + +- *"find all the web servers on this network"* +- *"is this site vulnerable to SQL injection?"* +- *"check the SSL configuration on our servers"* +- *"what users exist in this Active Directory domain?"* +- *"test if this API has authentication issues"* +- *"show me everything you've found so far"* +- *"write up a report for the client"* + +Cyxwiz understands context too. After scanning a network, you can say *"check that Apache server for vulnerabilities"* - it knows which one you mean. + +--- + +## Why Cyxwiz? Why Not Claude CLI or Other LLM Tools? + +Yes, Claude CLI, Cursor, and other LLM tools can run commands too. So what makes Cyxwiz different? + +### The Foundation: OpenCode Agent + +Cyxwiz is built on [OpenCode](https://github.com/sst/opencode), which provides a superior agent architecture compared to generic LLM CLIs: + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ Generic LLM CLI vs Cyxwiz (OpenCode-based) │ +├─────────────────────────────────┬───────────────────────────────────────────┤ +│ Generic LLM CLI │ Cyxwiz │ +├─────────────────────────────────┼───────────────────────────────────────────┤ +│ General-purpose agent │ Security-focused agent │ +│ Raw command output │ Parsed, structured findings │ +│ No domain knowledge │ Security tool expertise built-in │ +│ Basic bash execution │ Specialized tool integrations │ +│ Chat history only │ Findings database + audit trail │ +│ No scope awareness │ Governance & scope enforcement │ +│ Export chat transcript │ Professional pentest reports │ +└─────────────────────────────────┴───────────────────────────────────────────┘ +``` + +### What OpenCode Gives Us (That Others Don't) + +1. **Better Agent Control** - OpenCode's architecture gives finer control over LLM behavior, tool execution, and context management than Claude CLI's generic approach + +2. **Extensible Tool Framework** - Not just "run bash commands" but structured tool definitions with typed inputs/outputs + +3. **Session Persistence** - Real session management, not just chat history + +4. **Multi-LLM Support** - Claude, GPT-4, Gemini, local models - your choice + +### What Cyxwiz Adds on Top of OpenCode + +Cyxwiz extends OpenCode with a complete security operations layer: + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ Cyxwiz Security Layer │ +├─────────────────────────────────────────────────────────────────────────────┤ +│ │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ Security │ │ Output │ │ Findings │ │ Report │ │ +│ │ Tools │ │ Parsers │ │ Database │ │ Engine │ │ +│ │ │ │ │ │ │ │ │ │ +│ │ nmap, nikto │ │ Extract CVEs │ │ Severity │ │ Executive │ │ +│ │ nuclei, etc │ │ Parse JSON │ │ OWASP cats │ │ Technical │ │ +│ │ 30+ tools │ │ Structure │ │ Evidence │ │ HTML/PDF/MD │ │ +│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │ +│ │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ Governance │ │ Scope │ │ Audit │ │ +│ │ Engine │ │ Enforcement │ │ Trail │ │ +│ │ │ │ │ │ │ │ +│ │ Policy-based │ │ Authorized │ │ Compliance │ │ +│ │ approval │ │ targets only │ │ logging │ │ +│ └──────────────┘ └──────────────┘ └──────────────┘ │ +│ │ +└─────────────────────────────────────────────────────────────────────────────┘ +``` + +#### 1. Security Tool Integrations (30+ tools) + +| Category | Tools | What Cyxwiz Adds | +|----------|-------|---------------| +| **Network** | nmap, masscan | Service detection, port classification | +| **Web** | nikto, nuclei, gobuster, ffuf | Vuln detection, directory enumeration | +| **Exploitation** | searchsploit, msfconsole | Exploit matching, payload generation | +| **AD/LDAP** | ldapsearch, smbclient | User enum, share discovery | +| **API** | Custom scanners | OpenAPI parsing, JWT analysis | +| **Wireless** | aircrack-ng, reaver | WiFi assessment | +| **Cloud** | aws-cli, az, gcloud | Misconfig detection | + +#### 2. Intelligent Output Parsers + +OpenCode gives raw output. Cyxwiz parses it: + +``` +Raw nmap output: Cyxwiz parsed output: +─────────────────── ────────────────── +PORT STATE SERVICE { +80/tcp open http ──────► "port": 80, + "service": "http", + "product": "Apache", + "version": "2.4.41", + "cves": ["CVE-2021-41773"] + } +``` + +#### 3. Findings Database + +Not just command history - structured security findings: + +- **Severity Classification**: Critical, High, Medium, Low, Info +- **OWASP Categorization**: A01-A10 mapping +- **CVE Tracking**: Automatic CVE detection and linking +- **Evidence Storage**: Screenshots, request/response pairs +- **Remediation Tracking**: Fix status, verification + +#### 4. Governance Engine + +What OpenCode doesn't have: + +- **Scope Definition**: Define authorized targets (IPs, domains, ports) +- **Scope Enforcement**: Block scans against unauthorized targets +- **Policy Rules**: Require approval for destructive actions +- **Engagement Profiles**: Different rules for different assessments + +#### 5. Audit Trail + +Compliance-ready logging: + +``` +[2024-01-15 10:23:45] SCAN_START target=192.168.1.0/24 user=analyst1 +[2024-01-15 10:23:46] SCOPE_CHECK target=192.168.1.0/24 result=AUTHORIZED +[2024-01-15 10:23:47] TOOL_EXEC tool=nmap args="-sV -sC 192.168.1.0/24" +[2024-01-15 10:25:12] FINDING_NEW id=F001 severity=CRITICAL cve=CVE-2021-41773 +[2024-01-15 10:30:00] REPORT_GEN format=HTML findings=15 +``` + +#### 6. Report Generation + +Professional deliverables, not chat exports: + +| Report Type | Contents | Format | +|-------------|----------|--------| +| **Executive** | Risk summary, business impact | HTML, PDF | +| **Technical** | Full findings, evidence, remediation | Markdown, HTML | +| **Compliance** | Audit trail, scope verification | JSON, PDF | +| **Raw Data** | Machine-readable findings | JSON | + +#### 7. Continuous Monitoring + +Schedule recurring scans with diff detection: + +- Baseline establishment +- Change detection (new ports, services, vulns) +- Alert on critical changes +- Trend tracking over time + +#### 8. Web Dashboard + +Visual interface for findings management: + +- Real-time scan progress +- Interactive findings table +- Severity charts and statistics +- Report generation UI + +### Real Example: The Difference + +**Claude CLI:** +``` +You: "scan 192.168.1.10 for vulnerabilities" + +Claude: *runs nmap* + Here's the raw output: + PORT STATE SERVICE VERSION + 80/tcp open http Apache 2.4.41 + 443/tcp open ssl/http Apache 2.4.41 + ... + +You: "what vulnerabilities does it have?" + +Claude: *runs nikto* + Here's what nikto found: + + Server: Apache/2.4.41 + + /: The anti-clickjacking X-Frame-Options header is not present + ... + + [You manually track these, decide severity, write report] +``` + +**Cyxwiz:** +``` +You: "scan 192.168.1.10 for vulnerabilities" + +Cyxwiz: [Runs nmap → parses services] + [Runs nikto → extracts findings] + [Runs nuclei → matches CVEs] + [Classifies by severity] + [Stores in findings database] + + Scan complete. Found: + + CRITICAL (1): + - CVE-2021-41773: Apache path traversal → RCE possible + + HIGH (2): + - Missing security headers (X-Frame-Options, CSP) + - SSL certificate expires in 7 days + + MEDIUM (3): + - Directory listing enabled on /uploads + - Server version disclosed + - Outdated Apache version + + All 6 findings saved with evidence. + +You: "generate report" + +Cyxwiz: [Creates executive summary] + [Includes technical details] + [Adds remediation steps] + [Exports to HTML] + + Report ready: http://localhost:4096/reports/192.168.1.10-assessment.html +``` + +### Summary + +| Feature | Claude CLI | Cyxwiz | +|---------|------------|-----| +| **Agent Architecture** | Generic | OpenCode (superior control) | +| **Tool Integration** | Bash only | 30+ security tools with parsers | +| **Output Handling** | Raw text | Structured findings | +| **Severity Classification** | Manual | Automatic (Critical→Info) | +| **CVE Matching** | Manual lookup | Automatic detection | +| **Scope Control** | None | Governance engine | +| **Audit Trail** | Chat history | Compliance-ready logs | +| **Reports** | Copy-paste chat | Professional HTML/PDF | + +**Cyxwiz = OpenCode's superior agent + Security expertise + Findings management + Governance + Reporting** + +### Why Fork OpenCode? Why Not Build a Plugin? + +| As Plugin | As Fork (Platform) | +|-----------|-------------------| +| Limited by OpenCode's roadmap | Full control | +| Can't modify core UX | Customize everything | +| "Cyxwiz for OpenCode" | "Cyxwiz" | +| Tenant | Owner | +| Single product ceiling | Platform potential | + +**Key reasons we forked:** + +1. **Governance is core, not optional** - Cyxwiz needs scope enforcement and audit logging baked into every command execution. As a plugin, we'd be bolting security onto someone else's foundation. As a fork, governance IS the foundation. + +2. **We need to modify core UX** - Security workflows require approval prompts, findings panels, and audit trails integrated into the interface. Plugins can't touch core UI. + +3. **Platform potential** - Cyxwiz isn't just a pentest tool. It's designed to expand to SOC, DevOps, NetEng domains. A plugin would forever be "Cyxwiz for OpenCode." A fork becomes "Cyxwiz" - its own platform. + +4. **Independence** - OpenCode could change direction, deprecate plugin APIs, or make decisions that conflict with security use cases. Fork = we control our destiny. + +**What we inherited (for free):** CLI/TUI framework, Multi-LLM support (Claude, GPT, Gemini), Session management, Tool execution framework, Plugin system + +**What we added:** Governance engine, Scope enforcement, Audit logging, Security tool parsers (30+), Findings management, Report generation --- -### Installation +## What Cyxwiz Is NOT + +Let's be clear about boundaries: + +### Not a Replacement for Your Judgment + +Cyxwiz is a tool, not a security expert replacement. It doesn't: +- Make risk decisions for your organization +- Determine what's in scope for your engagement +- Replace the need to understand what you're doing +- Guarantee finding every vulnerability + +**You** are the security professional. Cyxwiz handles the tedious parts so you can focus on analysis and decisions. + +### Not for Malicious Use + +Cyxwiz is built for: +- Authorized penetration testing +- Security assessments with written permission +- CTF competitions and security research +- Learning and education + +It is NOT for: +- Unauthorized access to systems +- Attacking systems you don't own or have permission to test +- Any illegal activity + +**The tools Cyxwiz uses are powerful. Use them responsibly and legally.** + +### Not a Magic Button + +Cyxwiz won't: +- Automatically hack anything +- Replace proper methodology +- Skip the need for authorization +- Make you compliant just by running it + +It's an assistant that makes security work more efficient - not a shortcut around doing things properly. + +--- + +## Installation + +### Download Pre-built Binaries + +The easiest way to get started. Download for your platform: + +| Platform | Download | +|----------|----------| +| Linux (x64) | [cyxwiz-linux-x64.tar.gz](https://github.com/code3hr/opencode/releases/latest/download/cyxwiz-linux-x64.tar.gz) | +| Linux (ARM64) | [cyxwiz-linux-arm64.tar.gz](https://github.com/code3hr/opencode/releases/latest/download/cyxwiz-linux-arm64.tar.gz) | +| macOS (Intel) | [cyxwiz-darwin-x64.tar.gz](https://github.com/code3hr/opencode/releases/latest/download/cyxwiz-darwin-x64.tar.gz) | +| macOS (Apple Silicon) | [cyxwiz-darwin-arm64.tar.gz](https://github.com/code3hr/opencode/releases/latest/download/cyxwiz-darwin-arm64.tar.gz) | +| Windows (x64) | [cyxwiz-windows-x64.zip](https://github.com/code3hr/opencode/releases/latest/download/cyxwiz-windows-x64.zip) | ```bash -# YOLO -curl -fsSL https://opencode.ai/install | bash +# Linux/macOS +tar -xzf cyxwiz-*.tar.gz +chmod +x cyxwiz +./cyxwiz -# Package managers -npm i -g opencode-ai@latest # or bun/pnpm/yarn -scoop bucket add extras; scoop install extras/opencode # Windows -choco install opencode # Windows -brew install anomalyco/tap/opencode # macOS and Linux (recommended, always up to date) -brew install opencode # macOS and Linux (official brew formula, updated less) -paru -S opencode-bin # Arch Linux -mise use -g opencode # Any OS -nix run nixpkgs#opencode # or github:anomalyco/opencode for latest dev branch +# Windows +# Extract the zip and run cyxwiz.exe ``` -> [!TIP] -> Remove versions older than 0.1.x before installing. +### Build from Source -### Desktop App (BETA) +```bash +# Install Bun (JavaScript runtime) +curl -fsSL https://bun.sh/install | bash + +# Clone and build +git clone https://github.com/code3hr/opencode.git wiz +cd wiz +bun install +bun run --cwd packages/opencode src/index.ts +``` -OpenCode is also available as a desktop application. Download directly from the [releases page](https://github.com/anomalyco/opencode/releases) or [opencode.ai/download](https://opencode.ai/download). +### Required: API Key -| Platform | Download | -| --------------------- | ------------------------------------- | -| macOS (Apple Silicon) | `opencode-desktop-darwin-aarch64.dmg` | -| macOS (Intel) | `opencode-desktop-darwin-x64.dmg` | -| Windows | `opencode-desktop-windows-x64.exe` | -| Linux | `.deb`, `.rpm`, or AppImage | +Cyxwiz needs an AI provider to work. Set one of these: ```bash -# macOS (Homebrew) -brew install --cask opencode-desktop +export ANTHROPIC_API_KEY=sk-ant-... # Claude (recommended) +# or +export OPENAI_API_KEY=sk-... # GPT-4 ``` -#### Installation Directory +### Recommended: Security Tools -The install script respects the following priority order for the installation path: +For full functionality, have these tools installed (pre-installed on Kali/Parrot): -1. `$OPENCODE_INSTALL_DIR` - Custom installation directory -2. `$XDG_BIN_DIR` - XDG Base Directory Specification compliant path -3. `$HOME/bin` - Standard user binary directory (if exists or can be created) -4. `$HOME/.opencode/bin` - Default fallback +- **nmap** - Network scanning +- **nuclei** - Vulnerability scanning +- **nikto** - Web server scanning +- **gobuster** - Directory enumeration +- **sqlmap** - SQL injection testing + +Don't have them? Cyxwiz will tell you when it needs something. + +--- + +## Architecture + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ YOU (Security Professional) │ +│ │ +│ "scan this network" "check for vulnerabilities" "generate report" │ +└──────────────────────────────────┬───────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────────┐ +│ CYXWIZ │ +│ ┌─────────────────────────────────────────────────────────────────────┐ │ +│ │ AI Engine (Claude/GPT) │ │ +│ │ │ │ +│ │ • Understands natural language intent │ │ +│ │ • Plans tool sequences │ │ +│ │ • Interprets results │ │ +│ │ • Explains findings │ │ +│ └─────────────────────────────────────────────────────────────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────────────────────────────────────────────────┐ │ +│ │ Tool Orchestration │ │ +│ │ │ │ +│ │ Network Web API AD Reporting │ │ +│ │ Scanner Scanner Scanner Scanner Engine │ │ +│ └─────────────────────────────────────────────────────────────────────┘ │ +│ │ │ +└───────────────────────────────────┼──────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────────┐ +│ Security Tools (Kali/Parrot) │ +│ │ +│ nmap nuclei nikto gobuster sqlmap smbclient ldapsearch │ +│ │ +└─────────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────────┐ +│ TARGET SYSTEMS │ +│ (With your authorization) │ +└─────────────────────────────────────────────────────────────────────────────┘ +``` + +### Data Flow + +``` +┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ +│ Intent │ ──▶ │ Plan │ ──▶ │ Execute │ ──▶ │ Findings │ +│ │ │ │ │ │ │ │ +│ "scan │ │ 1. nmap │ │ Run each │ │ Store & │ +│ for web │ │ 2. nikto │ │ tool in │ │ classify │ +│ vulns" │ │ 3. nuclei│ │ sequence │ │ results │ +└──────────┘ └──────────┘ └──────────┘ └──────────┘ + │ + ▼ + ┌──────────┐ + │ Report │ + │ │ + │ Generate │ + │ HTML/PDF │ + └──────────┘ +``` + +--- + +## Running Modes + +Cyxwiz offers multiple interfaces to fit your workflow: + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ INTERFACES │ +├─────────────────┬───────────────────┬───────────────────────────┤ +│ Terminal │ Web Server │ Dashboard │ +│ (Default) │ (--server) │ (Development) │ +├─────────────────┼───────────────────┼───────────────────────────┤ +│ ./cyxwiz │ ./cyxwiz --server│ bun run dashboard │ +│ │ │ │ +│ Interactive │ http://localhost │ http://localhost:5173 │ +│ CLI prompt │ :4096 │ (proxies to :4096) │ +│ │ │ │ +│ Best for: │ Best for: │ Best for: │ +│ Quick tasks, │ Team access, │ Development, │ +│ scripting │ remote work │ customization │ +└─────────────────┴───────────────────┴───────────────────────────┘ +``` + +### Terminal (Default) + +```bash +./cyxwiz +``` + +Interactive command-line interface. Type naturally and see results directly. + +### Web Server (Port 4096) + +```bash +./cyxwiz --server +``` + +Opens a web interface at **http://localhost:4096**. Features: +- Same AI assistant in a browser +- Real-time scan progress +- Interactive findings table +- Report viewing and export + +### Dashboard (Port 5173 - Development) ```bash -# Examples -OPENCODE_INSTALL_DIR=/usr/local/bin curl -fsSL https://opencode.ai/install | bash -XDG_BIN_DIR=$HOME/.local/bin curl -fsSL https://opencode.ai/install | bash +cd packages/opencode/src/dashboard +bun run dev +``` + +Development dashboard at **http://localhost:5173**. For contributors extending Cyxwiz. + +### Web Reports + +Reports are served through the web interface: + +``` +You: "generate a report" + +Cyxwiz: Report generated! + View at: http://localhost:4096/reports/assessment-2024-01-15.html ``` -### Agents +Features: +- Interactive severity charts +- Sortable findings table +- Evidence screenshots +- Export to PDF/HTML/Markdown + +--- + +## How It Works -OpenCode includes two built-in agents you can switch between with the `Tab` key. +### 1. You Describe, Cyxwiz Executes -- **build** - Default, full access agent for development work -- **plan** - Read-only agent for analysis and code exploration - - Denies file edits by default - - Asks permission before running bash commands - - Ideal for exploring unfamiliar codebases or planning changes +``` +You: "find subdomains for example.com" + +Cyxwiz: I'll enumerate subdomains using multiple methods... -Also, included is a **general** subagent for complex searches and multistep tasks. -This is used internally and can be invoked using `@general` in messages. + Found 47 subdomains: + - api.example.com (192.168.1.10) + - mail.example.com (192.168.1.11) + - dev.example.com (192.168.1.12) + - staging.example.com (192.168.1.13) + [... and 43 more] + + Notable: dev and staging are exposed to the internet. + Want me to scan these for vulnerabilities? +``` -Learn more about [agents](https://opencode.ai/docs/agents). +### 2. Cyxwiz Remembers Context -### Documentation +``` +You: "scan the staging server" + +Cyxwiz: Scanning staging.example.com (192.168.1.13)... + + [Cyxwiz remembers this from the previous subdomain scan] +``` + +### 3. Findings Are Tracked + +``` +You: "what have we found so far?" -For more info on how to configure OpenCode [**head over to our docs**](https://opencode.ai/docs). +Cyxwiz: Current findings for example.com assessment: + + CRITICAL (2): + - SQL injection on api.example.com/users + - Exposed admin panel on staging.example.com + + HIGH (5): + - Outdated TLS on mail.example.com + - Missing security headers (4 instances) + + MEDIUM (8): + [...] + + Total: 2 critical, 5 high, 8 medium, 12 low findings +``` + +### 4. Reports When You're Ready + +``` +You: "generate a report for the client" + +Cyxwiz: Generating executive report... + + Created: example-com-assessment-2024-01-15.html + + Includes: + - Executive summary + - Risk ratings + - All findings with evidence + - Remediation recommendations + - Technical appendix +``` + +--- -### Contributing +## Capabilities -If you're interested in contributing to OpenCode, please read our [contributing docs](./CONTRIBUTING.md) before submitting a pull request. +### Network Security +- Port scanning and service detection +- Network mapping and host discovery +- Protocol-specific testing (SMB, SNMP, DNS, LDAP) +- Credential testing and password auditing -### Building on OpenCode +### Web Application Security +- Vulnerability scanning (OWASP Top 10) +- Directory and file enumeration +- SSL/TLS configuration analysis +- CMS vulnerability detection (WordPress, Drupal, etc.) -If you are working on a project that's related to OpenCode and is using "opencode" as a part of its name; for example, "opencode-dashboard" or "opencode-mobile", please add a note to your README to clarify that it is not built by the OpenCode team and is not affiliated with us in any way. +### API Security +- OpenAPI/Swagger discovery and parsing +- Authentication bypass testing +- Injection testing (SQL, NoSQL, Command) +- JWT analysis and manipulation -### FAQ +### Active Directory +- User and group enumeration +- Kerberoasting and AS-REP roasting +- Trust relationship mapping +- Privilege escalation path finding -#### How is this different from Claude Code? +### Reporting +- Executive summaries (HTML/PDF) +- Technical reports (Markdown) +- Raw data export (JSON) +- Evidence preservation + +--- + +## Platform Support + +| Distribution | Status | Notes | +|--------------|--------|-------| +| **Kali Linux** | Fully Supported | All tools pre-installed | +| **Parrot OS** | Fully Supported | All tools pre-installed | +| **Ubuntu/Debian** | Supported | Install tools via apt | +| **Arch Linux** | Supported | Install tools via pacman | +| **macOS** | Supported | Install tools via homebrew | +| **Windows** | Supported | Install tools via chocolatey/manual | + +--- + +## Project Status + +Cyxwiz is under active development. Current capabilities: + +| Module | Status | Description | +|--------|--------|-------------| +| Core Framework | Complete | AI interaction, session management | +| Network Scanning | Complete | Nmap integration, service detection | +| Web Scanning | Complete | Nikto, Nuclei, Gobuster, SQLMap | +| API Security | Complete | OpenAPI, GraphQL, JWT analysis | +| Active Directory | Complete | User enum, Kerberoasting | +| Reporting | Complete | Multiple formats, evidence | +| Cloud Security | In Progress | AWS, Azure, GCP scanning | +| CI/CD Security | In Progress | Pipeline security analysis | +| Container Security | Planned | Docker, Kubernetes | + +--- + +## Documentation + +### Core Docs +| Document | Description | +|----------|-------------| +| [PROJECT.md](docs/PROJECT.md) | Platform architecture and vision | +| [PENTEST.md](docs/PENTEST.md) | Pentest module overview | +| [GOVERNANCE.md](docs/GOVERNANCE.md) | Policy and scope enforcement | +| [TODO.md](docs/TODO.md) | Development roadmap | +| [COMPARISON.md](docs/COMPARISON.md) | How Cyxwiz compares to other tools | + +### Module Documentation (Phases) +| Phase | Module | Description | +|-------|--------|-------------| +| [03](docs/PHASE03-pentest-agent-mvp.md) | Pentest Agent MVP | Core scanning foundation | +| [04](docs/PHASE04-multi-tool-parsers.md) | Multi-Tool Parsers | Nikto, Nuclei, Gobuster parsers | +| [05](docs/PHASE05-report-generation.md) | Report Generation | HTML, PDF, Markdown reports | +| [06](docs/PHASE06-continuous-monitoring.md) | Continuous Monitoring | Scheduled scans, diff detection | +| [07](docs/PHASE07-exploit-framework.md) | Exploit Framework | Metasploit, Searchsploit integration | +| [08](docs/PHASE08-web-app-scanner.md) | Web App Scanner | OWASP Top 10, crawling | +| [09](docs/PHASE09-api-security-scanner.md) | API Security | OpenAPI, GraphQL, JWT testing | +| [10](docs/PHASE10-network-infrastructure.md) | Network Infrastructure | SMB, SNMP, DNS, LDAP | +| [11](docs/PHASE11-cloud-security.md) | Cloud Security | AWS, Azure, GCP scanning | +| [12](docs/PHASE12-container-security.md) | Container Security | Docker, Kubernetes, CVE lookup | +| [13](docs/PHASE13-mobile-app-scanner.md) | Mobile App Scanner | Android/iOS analysis | +| [14](docs/PHASE14-wireless-scanner.md) | Wireless Scanner | WiFi security testing | +| [15](docs/PHASE15-social-engineering.md) | Social Engineering | Phishing, pretexting toolkit | +| [16](docs/PHASE16-post-exploitation.md) | Post-Exploitation | Privilege escalation, persistence | +| [17](docs/PHASE17-reporting-dashboard.md) | Reporting Dashboard | Web UI for findings | +| [18](docs/PHASE18-cicd-security.md) | CI/CD Security | Pipeline security analysis | + +--- + +## Contributing + +Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md). + +--- + +## Security + +Found a security issue? See [SECURITY.md](SECURITY.md). + +--- + +## License + +MIT License - See [LICENSE](LICENSE) + +--- -It's very similar to Claude Code in terms of capability. Here are the key differences: +## Acknowledgments -- 100% open source -- Not coupled to any provider. Although we recommend the models we provide through [OpenCode Zen](https://opencode.ai/zen); OpenCode can be used with Claude, OpenAI, Google or even local models. As models evolve the gaps between them will close and pricing will drop so being provider-agnostic is important. -- Out of the box LSP support -- A focus on TUI. OpenCode is built by neovim users and the creators of [terminal.shop](https://terminal.shop); we are going to push the limits of what's possible in the terminal. -- A client/server architecture. This for example can allow OpenCode to run on your computer, while you can drive it remotely from a mobile app. Meaning that the TUI frontend is just one of the possible clients. +- [OpenCode](https://github.com/sst/opencode) - The foundation we built upon +- [Anthropic](https://anthropic.com) - Claude AI +- The security community for the amazing open-source tools --- -**Join our community** [Discord](https://discord.gg/opencode) | [X.com](https://x.com/opencode) +**Cyxwiz** - *Security testing should be about security, not syntax.* diff --git a/bun.lock b/bun.lock index 0c1a8bb0674..3272d61ab89 100644 --- a/bun.lock +++ b/bun.lock @@ -249,10 +249,10 @@ }, }, "packages/opencode": { - "name": "opencode", + "name": "cyxwiz", "version": "1.1.21", "bin": { - "opencode": "./bin/opencode", + "cyxwiz": "./bin/cyxwiz", }, "dependencies": { "@actions/core": "1.11.1", @@ -306,6 +306,7 @@ "decimal.js": "10.5.0", "diff": "catalog:", "fuzzysort": "3.1.0", + "glob": "10.4.5", "gray-matter": "4.0.3", "hono": "catalog:", "hono-openapi": "catalog:", @@ -324,6 +325,7 @@ "vscode-jsonrpc": "8.2.1", "web-tree-sitter": "0.25.10", "xdg-basedir": "5.1.0", + "yaml": "2.7.0", "yargs": "18.0.0", "zod": "catalog:", "zod-to-json-schema": "3.24.5", @@ -474,7 +476,7 @@ }, "devDependencies": { "@types/node": "catalog:", - "opencode": "workspace:*", + "cyxwiz": "workspace:*", "typescript": "catalog:", }, }, @@ -2225,6 +2227,8 @@ "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + "cyxwiz": ["cyxwiz@workspace:packages/opencode"], + "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], @@ -2541,7 +2545,7 @@ "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], - "glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="], + "glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], @@ -2797,7 +2801,7 @@ "iterate-value": ["iterate-value@1.0.2", "", { "dependencies": { "es-get-iterator": "^1.0.2", "iterate-iterator": "^1.0.1" } }, "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ=="], - "jackspeak": ["jackspeak@4.1.1", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="], + "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], "jimp": ["jimp@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/diff": "1.6.0", "@jimp/js-bmp": "1.6.0", "@jimp/js-gif": "1.6.0", "@jimp/js-jpeg": "1.6.0", "@jimp/js-png": "1.6.0", "@jimp/js-tiff": "1.6.0", "@jimp/plugin-blit": "1.6.0", "@jimp/plugin-blur": "1.6.0", "@jimp/plugin-circle": "1.6.0", "@jimp/plugin-color": "1.6.0", "@jimp/plugin-contain": "1.6.0", "@jimp/plugin-cover": "1.6.0", "@jimp/plugin-crop": "1.6.0", "@jimp/plugin-displace": "1.6.0", "@jimp/plugin-dither": "1.6.0", "@jimp/plugin-fisheye": "1.6.0", "@jimp/plugin-flip": "1.6.0", "@jimp/plugin-hash": "1.6.0", "@jimp/plugin-mask": "1.6.0", "@jimp/plugin-print": "1.6.0", "@jimp/plugin-quantize": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/plugin-rotate": "1.6.0", "@jimp/plugin-threshold": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0" } }, "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg=="], @@ -3183,8 +3187,6 @@ "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], - "opencode": ["opencode@workspace:packages/opencode"], - "opencontrol": ["opencontrol@0.0.6", "", { "dependencies": { "@modelcontextprotocol/sdk": "1.6.1", "@tsconfig/bun": "1.0.7", "hono": "4.7.4", "zod": "3.24.2", "zod-to-json-schema": "3.24.3" }, "bin": { "opencontrol": "bin/index.mjs" } }, "sha512-QeCrpOK5D15QV8kjnGVeD/BHFLwcVr+sn4T6KKmP0WAMs2pww56e4h+eOGHb5iPOufUQXbdbBKi6WV2kk7tefQ=="], "openid-client": ["openid-client@5.6.4", "", { "dependencies": { "jose": "^4.15.4", "lru-cache": "^6.0.0", "object-hash": "^2.2.0", "oidc-token-hash": "^5.0.3" } }, "sha512-T1h3B10BRPKfcObdBklX639tVz+xh34O7GjofqrqiAQdm7eHsQ00ih18x6wuJ/E6FxdtS2u3FmUGPDeEcMwzNA=="], @@ -3251,7 +3253,7 @@ "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - "path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], + "path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], "path-to-regexp": ["path-to-regexp@6.3.0", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="], @@ -3919,7 +3921,7 @@ "yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], - "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="], + "yaml": ["yaml@2.7.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA=="], "yargs": ["yargs@18.0.0", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="], @@ -4299,6 +4301,12 @@ "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + "cyxwiz/@ai-sdk/anthropic": ["@ai-sdk/anthropic@2.0.57", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-DREpYqW2pylgaj69gZ+K8u92bo9DaMgFdictYnY+IwYeY3bawQ4zI7l/o1VkDsBDljAx8iYz5lPURwVZNu+Xpg=="], + + "cyxwiz/@ai-sdk/openai": ["@ai-sdk/openai@2.0.89", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-4+qWkBCbL9HPKbgrUO/F2uXZ8GqrYxHa8SWEYIzxEJ9zvWw3ISr3t1/27O1i8MGSym+PzEyHBT48EV4LAwWaEw=="], + + "cyxwiz/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@1.0.30", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-thubwhRtv9uicAxSWwNpinM7hiL/0CkhL/ymPaHuKvI494J7HIzn8KQZQ2ymRz284WTIZnI7VMyyejxW4RMM6w=="], + "dot-prop/type-fest": ["type-fest@3.13.1", "", {}, "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g=="], "drizzle-kit/esbuild": ["esbuild@0.19.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.19.12", "@esbuild/android-arm": "0.19.12", "@esbuild/android-arm64": "0.19.12", "@esbuild/android-x64": "0.19.12", "@esbuild/darwin-arm64": "0.19.12", "@esbuild/darwin-x64": "0.19.12", "@esbuild/freebsd-arm64": "0.19.12", "@esbuild/freebsd-x64": "0.19.12", "@esbuild/linux-arm": "0.19.12", "@esbuild/linux-arm64": "0.19.12", "@esbuild/linux-ia32": "0.19.12", "@esbuild/linux-loong64": "0.19.12", "@esbuild/linux-mips64el": "0.19.12", "@esbuild/linux-ppc64": "0.19.12", "@esbuild/linux-riscv64": "0.19.12", "@esbuild/linux-s390x": "0.19.12", "@esbuild/linux-x64": "0.19.12", "@esbuild/netbsd-x64": "0.19.12", "@esbuild/openbsd-x64": "0.19.12", "@esbuild/sunos-x64": "0.19.12", "@esbuild/win32-arm64": "0.19.12", "@esbuild/win32-ia32": "0.19.12", "@esbuild/win32-x64": "0.19.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg=="], @@ -4333,7 +4341,7 @@ "gaxios/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], - "glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + "glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "globby/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], @@ -4373,12 +4381,6 @@ "nypm/tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], - "opencode/@ai-sdk/anthropic": ["@ai-sdk/anthropic@2.0.57", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-DREpYqW2pylgaj69gZ+K8u92bo9DaMgFdictYnY+IwYeY3bawQ4zI7l/o1VkDsBDljAx8iYz5lPURwVZNu+Xpg=="], - - "opencode/@ai-sdk/openai": ["@ai-sdk/openai@2.0.89", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-4+qWkBCbL9HPKbgrUO/F2uXZ8GqrYxHa8SWEYIzxEJ9zvWw3ISr3t1/27O1i8MGSym+PzEyHBT48EV4LAwWaEw=="], - - "opencode/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@1.0.30", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-thubwhRtv9uicAxSWwNpinM7hiL/0CkhL/ymPaHuKvI494J7HIzn8KQZQ2ymRz284WTIZnI7VMyyejxW4RMM6w=="], - "opencontrol/@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.6.1", "", { "dependencies": { "content-type": "^1.0.5", "cors": "^2.8.5", "eventsource": "^3.0.2", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^4.1.0", "raw-body": "^3.0.0", "zod": "^3.23.8", "zod-to-json-schema": "^3.24.1" } }, "sha512-oxzMzYCkZHMntzuyerehK3fV6A2Kwh5BD6CGEJSVDU2QNEhfLOptf2X7esQgaHZXHZY0oHmMsOtIDLP71UJXgA=="], "opencontrol/@tsconfig/bun": ["@tsconfig/bun@1.0.7", "", {}, "sha512-udGrGJBNQdXGVulehc1aWT73wkR9wdaGBtB6yL70RJsqwW/yJhIg6ZbRlPOfIUiFNrnBuYLBi9CSmMKfDC7dvA=="], @@ -4399,7 +4401,7 @@ "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], - "path-scurry/lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], + "path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], "pixelmatch/pngjs": ["pngjs@6.0.0", "", {}, "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg=="], @@ -4407,6 +4409,8 @@ "postcss-load-config/lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], + "postcss-load-config/yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="], + "prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], "raw-body/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], @@ -4469,6 +4473,8 @@ "utif2/pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], + "vite-plugin-icons-spritesheet/glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="], + "vitest/tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], "vitest/vite": ["vite@7.1.10", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA=="], @@ -4877,12 +4883,8 @@ "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "archiver-utils/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], - "archiver-utils/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "archiver-utils/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "astro/shiki/@shikijs/core": ["@shikijs/core@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg=="], "astro/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.3" } }, "sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg=="], @@ -4905,8 +4907,6 @@ "babel-plugin-module-resolver/glob/minipass": ["minipass@4.2.8", "", {}, "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ=="], - "babel-plugin-module-resolver/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "body-parser/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], @@ -4967,12 +4967,8 @@ "gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], - "js-beautify/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], - "js-beautify/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "js-beautify/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "jsonwebtoken/jws/jwa": ["jwa@1.4.2", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw=="], "lazystream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], @@ -4995,12 +4991,8 @@ "readable-stream/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - "rimraf/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], - "rimraf/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "rimraf/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], @@ -5017,6 +5009,12 @@ "type-is/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + "vite-plugin-icons-spritesheet/glob/jackspeak": ["jackspeak@4.1.1", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="], + + "vite-plugin-icons-spritesheet/glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + + "vite-plugin-icons-spritesheet/glob/path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], + "vitest/vite/esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], @@ -5137,20 +5135,12 @@ "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "archiver-utils/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "astro/unstorage/h3/cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="], "astro/unstorage/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], - "babel-plugin-module-resolver/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - - "babel-plugin-module-resolver/glob/path-scurry/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], - "esbuild-plugin-copy/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "js-beautify/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "opencontrol/@modelcontextprotocol/sdk/express/accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], "opencontrol/@modelcontextprotocol/sdk/express/body-parser": ["body-parser@2.2.0", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.0", "http-errors": "^2.0.0", "iconv-lite": "^0.6.3", "on-finished": "^2.4.1", "qs": "^6.14.0", "raw-body": "^3.0.0", "type-is": "^2.0.0" } }, "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg=="], @@ -5183,12 +5173,12 @@ "pkg-up/find-up/locate-path/path-exists": ["path-exists@3.0.0", "", {}, "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="], - "rimraf/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "tw-to-css/tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "tw-to-css/tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + "vite-plugin-icons-spritesheet/glob/path-scurry/lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], + "vitest/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], "vitest/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 00000000000..519ea325feb --- /dev/null +++ b/debian/changelog @@ -0,0 +1,19 @@ +cyxwiz (1.1.0-1) unstable; urgency=medium + + * Initial release + * AI-powered security operations platform + * Natural language tool orchestration + * Governance engine with policy-based approval + * Scope enforcement for authorized targets + * Comprehensive audit logging + * Structured findings management + * Professional report generation + * Integrated security tools: + - Network scanning (nmap, masscan) + - Web scanning (nikto, nuclei, gobuster, ffuf) + - Active Directory enumeration + - SMB/SNMP/DNS/LDAP testing + - API security testing + - Credential testing + + -- code3hr