docs: update CLAUDE.md to reflect pure DI framework

Remove stale references to extracted packages (pkg/ws, pkg/webview,
pkg/mcp, cmd/bugseti, cmd/core-gui). Replace Taskfile commands with
`core go` equivalents. Describe current pkg/core + pkg/log scope.

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Snider 2026-03-06 14:48:02 +00:00
parent 3720761555
commit 0cb6a4cff3

114
CLAUDE.md
View file

@ -4,38 +4,41 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Project Overview
Core is a Web3 Framework written in Go using Wails v3 to replace Electron for desktop applications. It provides a dependency injection framework for managing services with lifecycle support.
Core (`forge.lthn.ai/core/go`) is a **dependency injection and service lifecycle framework** for Go. It provides a typed service registry, lifecycle hooks, and a message-passing bus for decoupled communication between services.
This is the foundation layer — it has no CLI, no GUI, and minimal dependencies (`go-io`, `go-log`, `testify`).
## Build & Development Commands
This project uses [Task](https://taskfile.dev/) for automation. Key commands:
This project uses `core go` commands (no Taskfile). Build configuration lives in `.core/build.yaml`.
```bash
# Run all tests
task test
core go test
# Generate test coverage
task cov
task cov-view # Opens coverage HTML report
core go cov
core go cov --open # Opens coverage HTML report
# GUI application (Wails)
task gui:dev # Development mode with hot-reload
task gui:build # Production build
# Format, lint, vet
core go fmt
core go lint
core go vet
# CLI application
task cli:build # Build CLI
task cli:run # Build and run CLI
# Quality assurance
core go qa # fmt + vet + lint + test
core go qa full # + race, vuln, security
# Code review
task review # Submit for CodeRabbit review
task check # Run mod tidy + tests + review
# Build
core build # Auto-detects project type
core build --ci # All targets, JSON output
```
Run a single test: `go test -run TestName ./...`
Run a single test: `core go test --run TestName`
## Architecture
### Core Framework (`core.go`, `interfaces.go`)
### Core Framework (`pkg/core/`)
The `Core` struct is the central application container managing:
- **Services**: Named service registry with type-safe retrieval via `ServiceFor[T]()`
@ -65,10 +68,6 @@ core.New(core.WithService(NewMyService))
- `WithService`: Auto-discovers service name from package path, registers IPC handler if service has `HandleIPCEvents` method
- `WithName`: Explicitly names a service
### Runtime (`runtime_pkg.go`)
`Runtime` is the Wails service wrapper that bootstraps the Core and its services. Use `NewWithFactories()` for custom service registration or `NewRuntime()` for basic setup.
### ServiceRuntime Generic Helper (`runtime.go`)
Embed `ServiceRuntime[T]` in services to get access to Core and typed options:
@ -92,74 +91,15 @@ Tests use `_Good`, `_Bad`, `_Ugly` suffix pattern:
- `_Bad`: Expected error conditions
- `_Ugly`: Panic/edge cases
## Packages
| Package | Description |
|---------|-------------|
| `pkg/core` | DI container, service registry, lifecycle, query/task bus |
| `pkg/log` | Structured logger service with Core integration |
## Go Workspace
Uses Go 1.25 workspaces. The workspace includes:
- Root module (Core framework)
- `cmd/core-gui` (Wails GUI application)
- `cmd/bugseti` (BugSETI system tray app - distributed bug fixing)
- `cmd/examples/*` (Example applications)
Uses Go 1.25 workspaces. This module is part of the workspace at `~/Code/go.work`.
After adding modules: `go work sync`
## Additional Packages
### pkg/ws (WebSocket Hub)
Real-time streaming via WebSocket connections. Implements a hub pattern for managing connections and channel-based subscriptions.
```go
hub := ws.NewHub()
go hub.Run(ctx)
// Register HTTP handler
http.HandleFunc("/ws", hub.Handler())
// Send process output to subscribers
hub.SendProcessOutput(processID, "output line")
```
Message types: `process_output`, `process_status`, `event`, `error`, `ping/pong`, `subscribe/unsubscribe`
### pkg/webview (Browser Automation)
Chrome DevTools Protocol (CDP) client for browser automation, testing, and scraping.
```go
wv, err := webview.New(webview.WithDebugURL("http://localhost:9222"))
defer wv.Close()
wv.Navigate("https://example.com")
wv.Click("#submit-button")
wv.Type("#input", "text")
screenshot, _ := wv.Screenshot()
```
Features: Navigation, DOM queries, console capture, screenshots, JavaScript evaluation, Angular helpers
### pkg/mcp (MCP Server)
Model Context Protocol server with tools for:
- **File operations**: file_read, file_write, file_edit, file_delete, file_rename, file_exists, dir_list, dir_create
- **RAG**: rag_query, rag_ingest, rag_collections (Qdrant + Ollama)
- **Metrics**: metrics_record, metrics_query (JSONL storage)
- **Language detection**: lang_detect, lang_list
- **Process management**: process_start, process_stop, process_kill, process_list, process_output, process_input
- **WebSocket**: ws_start, ws_info
- **Webview/CDP**: webview_connect, webview_navigate, webview_click, webview_type, webview_query, webview_console, webview_eval, webview_screenshot, webview_wait, webview_disconnect
Run server: `core mcp serve` (stdio) or `MCP_ADDR=:9000 core mcp serve` (TCP)
## BugSETI Application
System tray application for distributed bug fixing - "like SETI@home but for code".
Features:
- Fetches OSS issues from GitHub
- AI-powered context preparation via seeder
- Issue queue management
- Automated PR submission
- Stats tracking and leaderboard
Build: `task bugseti:build`
Run: `task bugseti:dev`