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:
parent
3720761555
commit
0cb6a4cff3
1 changed files with 27 additions and 87 deletions
114
CLAUDE.md
114
CLAUDE.md
|
|
@ -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`
|
||||
Loading…
Add table
Reference in a new issue