cli/cmd/bugseti/README.md
Vi 4debdc1449 feat: BugSETI app, WebSocket hub, browser automation, and MCP tools (#336)
* feat: add security logging and fix framework regressions

This commit implements comprehensive security event logging and resolves critical regressions in the core framework.

Security Logging:
- Enhanced `pkg/log` with a `Security` level and helper.
- Added `log.Username()` to consistently identify the executing user.
- Instrumented GitHub CLI auth, Agentic configuration, filesystem sandbox, MCP handlers, and MCP TCP transport with security logs.
- Added `SecurityStyle` to the CLI for consistent visual representation of security events.

UniFi Security (CodeQL):
- Refactored `pkg/unifi` to remove hardcoded `InsecureSkipVerify`, resolving a high-severity alert.
- Added a `--verify-tls` flag and configuration option to control TLS verification.
- Updated command handlers to support the new verification parameter.

Framework Fixes:
- Restored original signatures for `MustServiceFor`, `Config()`, and `Display()` in `pkg/framework/core`, which had been corrupted during a merge.
- Fixed `pkg/framework/framework.go` and `pkg/framework/core/runtime_pkg.go` to match the restored signatures.
- These fixes resolve project-wide compilation errors caused by the signature mismatches.

I encountered significant blockers due to a corrupted state of the `dev` branch after a merge, which introduced breaking changes in the core framework's DI system. I had to manually reconcile these signatures with the expected usage across the codebase to restore build stability.

* feat(mcp): add RAG tools (query, ingest, collections)

Add vector database tools to the MCP server for RAG operations:
- rag_query: Search for relevant documentation using semantic similarity
- rag_ingest: Ingest files or directories into the vector database
- rag_collections: List available collections

Uses existing internal/cmd/rag exports (QueryDocs, IngestDirectory, IngestFile)
and pkg/rag for Qdrant client access. Default collection is "hostuk-docs"
with topK=5 for queries.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(mcp): add metrics tools (record, query)

Add MCP tools for recording and querying AI/security metrics events.
The metrics_record tool writes events to daily JSONL files, and the
metrics_query tool provides aggregated statistics by type, repo, and agent.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: add 'core mcp serve' command

Add CLI command to start the MCP server for AI tool integration.

- Create internal/cmd/mcpcmd package with serve subcommand
- Support --workspace flag for directory restriction
- Handle SIGINT/SIGTERM for clean shutdown
- Register in full.go build variant

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(ws): add WebSocket hub package for real-time streaming

Add pkg/ws package implementing a hub pattern for WebSocket connections:
- Hub manages client connections, broadcasts, and channel subscriptions
- Client struct represents connected WebSocket clients
- Message types: process_output, process_status, event, error, ping/pong
- Channel-based subscription system (subscribe/unsubscribe)
- SendProcessOutput and SendProcessStatus for process streaming integration
- Full test coverage including concurrency tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(mcp): add process management and WebSocket MCP tools

Add MCP tools for process management:
- process_start: Start a new external process
- process_stop: Gracefully stop a running process
- process_kill: Force kill a process
- process_list: List all managed processes
- process_output: Get captured process output
- process_input: Send input to process stdin

Add MCP tools for WebSocket:
- ws_start: Start WebSocket server for real-time streaming
- ws_info: Get hub statistics (clients, channels)

Update Service struct with optional process.Service and ws.Hub fields,
new WithProcessService and WithWSHub options, getter methods, and
Shutdown method for cleanup.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(webview): add browser automation package via Chrome DevTools Protocol

Add pkg/webview package for browser automation:
- webview.go: Main interface with Connect, Navigate, Click, Type, QuerySelector, Screenshot, Evaluate
- cdp.go: Chrome DevTools Protocol WebSocket client implementation
- actions.go: DOM action types (Click, Type, Hover, Scroll, etc.) and ActionSequence builder
- console.go: Console message capture and filtering with ConsoleWatcher and ExceptionWatcher
- angular.go: Angular-specific helpers for router navigation, component access, and Zone.js stability

Add MCP tools for webview:
- webview_connect/disconnect: Connection management
- webview_navigate: Page navigation
- webview_click/type/query/wait: DOM interaction
- webview_console: Console output capture
- webview_eval: JavaScript execution
- webview_screenshot: Screenshot capture

Add documentation:
- docs/mcp/angular-testing.md: Guide for Angular application testing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs: document new packages and BugSETI application

- Update CLAUDE.md with documentation for:
  - pkg/ws (WebSocket hub for real-time streaming)
  - pkg/webview (Browser automation via CDP)
  - pkg/mcp (MCP server tools: process, ws, webview)
  - BugSETI application overview
- Add comprehensive README for BugSETI with:
  - Installation and configuration guide
  - Usage workflow documentation
  - Architecture overview
  - Contributing guidelines

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(bugseti): add BugSETI system tray app with auto-update

BugSETI - Distributed Bug Fixing like SETI@home but for code

Features:
- System tray app with Wails v3
- GitHub issue fetching with label filters
- Issue queue with priority management
- AI context seeding via seed-agent-developer skill
- Automated PR submission flow
- Stats tracking and leaderboard
- Cross-platform notifications
- Self-updating with stable/beta/nightly channels

Includes:
- cmd/bugseti: Main application with Angular frontend
- internal/bugseti: Core services (fetcher, queue, seeder, submit, config, stats, notify)
- internal/bugseti/updater: Auto-update system (checker, downloader, installer)
- .github/workflows/bugseti-release.yml: CI/CD for all platforms

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: resolve import cycle and code duplication

- Remove pkg/log import from pkg/io/local to break import cycle
  (pkg/log/rotation.go imports pkg/io, creating circular dependency)
- Use stderr logging for security events in sandbox escape detection
- Remove unused sync/atomic import from core.go
- Fix duplicate LogSecurity function declarations in cli/log.go
- Update workspace/service.go Crypt() call to match interface

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: update tests for new function signatures and format code

- Update core_test.go: Config(), Display() now panic instead of returning error
- Update runtime_pkg_test.go: sr.Config() now panics instead of returning error
- Update MustServiceFor tests to use assert.Panics
- Format BugSETI, MCP tools, and webview packages with gofmt

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Snider <631881+Snider@users.noreply.github.com>
Co-authored-by: Claude <developers@lethean.io>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 17:22:05 +00:00

4.5 KiB

BugSETI

Distributed Bug Fixing - like SETI@home but for code

BugSETI is a system tray application that helps developers contribute to open source by fixing bugs in their spare CPU cycles. It fetches issues from GitHub repositories, prepares context using AI, and guides you through the fix-and-submit workflow.

Features

  • System Tray Integration: Runs quietly in the background, ready when you are
  • Issue Queue: Automatically fetches and queues issues from configured repositories
  • AI Context Seeding: Prepares relevant code context for each issue using pattern matching
  • Workbench UI: Full-featured interface for reviewing issues and submitting fixes
  • Automated PR Submission: Streamlined workflow from fix to pull request
  • Stats & Leaderboard: Track your contributions and compete with the community

Installation

From Source

# Clone the repository
git clone https://github.com/host-uk/core.git
cd core

# Build BugSETI
task bugseti:build

# The binary will be in build/bin/bugseti

Prerequisites

  • Go 1.25 or later
  • Node.js 18+ and npm (for frontend)
  • GitHub CLI (gh) authenticated
  • Chrome/Chromium (optional, for webview features)

Configuration

On first launch, BugSETI will show an onboarding wizard to configure:

  1. GitHub Token: For fetching issues and submitting PRs
  2. Repositories: Which repos to fetch issues from
  3. Filters: Issue labels, difficulty levels, languages
  4. Notifications: How to alert you about new issues

Configuration File

Settings are stored in ~/.config/bugseti/config.json:

{
  "github_token": "ghp_...",
  "repositories": [
    "host-uk/core",
    "example/repo"
  ],
  "filters": {
    "labels": ["good first issue", "help wanted", "bug"],
    "languages": ["go", "typescript"],
    "max_age_days": 30
  },
  "notifications": {
    "enabled": true,
    "sound": true
  },
  "fetch_interval_minutes": 30
}

Usage

Starting BugSETI

# Run the application
./bugseti

# Or use task runner
task bugseti:run

The app will appear in your system tray. Click the icon to see the quick menu or open the workbench.

Workflow

  1. Browse Issues: Click the tray icon to see available issues
  2. Select an Issue: Choose one to work on from the queue
  3. Review Context: BugSETI shows relevant files and patterns
  4. Fix the Bug: Make your changes in your preferred editor
  5. Submit PR: Use the workbench to create and submit your pull request

Keyboard Shortcuts

Shortcut Action
Ctrl+Shift+B Open workbench
Ctrl+Shift+N Next issue
Ctrl+Shift+S Submit PR

Architecture

cmd/bugseti/
  main.go          # Application entry point
  tray.go          # System tray service
  icons/           # Tray icons (light/dark/template)
  frontend/        # Angular frontend
    src/
      app/
        tray/      # Tray panel component
        workbench/ # Main workbench
        settings/  # Settings panel
        onboarding/ # First-run wizard

internal/bugseti/
  config.go        # Configuration service
  fetcher.go       # GitHub issue fetcher
  queue.go         # Issue queue management
  seeder.go        # Context seeding via AI
  submit.go        # PR submission
  notify.go        # Notification service
  stats.go         # Statistics tracking

Contributing

We welcome contributions! Here's how to get involved:

Development Setup

# Install dependencies
cd cmd/bugseti/frontend
npm install

# Run in development mode
task bugseti:dev

Running Tests

# Go tests
go test ./cmd/bugseti/... ./internal/bugseti/...

# Frontend tests
cd cmd/bugseti/frontend
npm test

Submitting Changes

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/my-feature
  3. Make your changes and add tests
  4. Run the test suite: task test
  5. Submit a pull request

Code Style

  • Go: Follow standard Go conventions, run go fmt
  • TypeScript/Angular: Follow Angular style guide
  • Commits: Use conventional commit messages

Roadmap

  • Auto-update mechanism
  • Team/organization support
  • Integration with more issue trackers (GitLab, Jira)
  • AI-assisted code review
  • Mobile companion app

License

MIT License - see LICENSE for details.

Acknowledgments

  • Inspired by SETI@home and distributed computing projects
  • Built with Wails v3 for native desktop integration
  • Uses Angular for the frontend

Happy Bug Hunting!