docs: update all documentation for agor rebrand and dual-repo structure
This commit is contained in:
parent
5fadd1c022
commit
421c38cd8c
21 changed files with 225 additions and 207 deletions
46
CLAUDE.md
46
CLAUDE.md
|
|
@ -1,10 +1,10 @@
|
|||
# BTerminal — Project Guide for Claude
|
||||
# Agents Orchestrator — Project Guide for Claude
|
||||
|
||||
## Project Overview
|
||||
|
||||
Terminal emulator with SSH and Claude Code session management. v1 (GTK3+VTE Python) is production-stable. v2 redesign (Tauri 2.x + Svelte 5 + Claude Agent SDK) Phases 1-7 + multi-machine (A-D) + profiles/skills complete. Packaging: .deb + AppImage via GitHub Actions CI. v3 Mission Control (All Phases 1-10 Complete + Production Readiness): multi-project dashboard with project groups, per-project Claude sessions with session continuity, team agents panel, terminal tabs, VSCode-style left sidebar, multi-agent orchestration (Tier 1 management agents: Manager/Architect/Tester/Reviewer with role-specific tabs, btmsg inter-agent messaging, bttask kanban task board with optimistic locking). Production features: sidecar crash recovery/supervision, FTS5 full-text search, plugin system (Web Worker sandbox, 26 tests), Landlock sandboxing, secrets management (system keyring), OS + in-app notifications, keyboard-first UX (18+ palette commands), agent health monitoring + dead letter queue, audit logging, error classification. Hardening: TLS relay support, SPKI certificate pinning (TOFU), WAL checkpoint (5min), subagent delegation fix, SidecarManager actor pattern (mpsc), per-message btmsg acknowledgment (seen_messages), Aider autonomous mode toggle.
|
||||
|
||||
- **Repository:** github.com/DexterFromLab/BTerminal
|
||||
- **Repository:** github.com/DexterFromLab/Agents Orchestrator
|
||||
- **License:** MIT
|
||||
- **Primary target:** Linux x86_64
|
||||
|
||||
|
|
@ -16,7 +16,7 @@ Terminal emulator with SSH and Claude Code session management. v1 (GTK3+VTE Pyth
|
|||
|
||||
| Path | Description |
|
||||
|------|-------------|
|
||||
| `bterminal.py` | v1 main application (2092 lines, GTK3+VTE) |
|
||||
| `agor.py` | v1 main application (2092 lines, GTK3+VTE) |
|
||||
| `ctx` | Context manager CLI tool (SQLite-based) |
|
||||
| `install.sh` | v1 system installer |
|
||||
| `install-v2.sh` | v2 build-from-source installer (Node.js 20+, Rust 1.77+, system libs) |
|
||||
|
|
@ -29,11 +29,11 @@ Terminal emulator with SSH and Claude Code session management. v1 (GTK3+VTE Pyth
|
|||
| `docs/multi-machine.md` | Multi-machine architecture (implemented, Phases A-D) |
|
||||
| `docs/release-notes.md` | v3.0 release notes |
|
||||
| `docs/e2e-testing.md` | E2E testing facility: fixtures, test mode, LLM judge, spec phases, CI |
|
||||
| `Cargo.toml` | Cargo workspace root (members: src-tauri, bterminal-core, bterminal-relay) |
|
||||
| `bterminal-core/` | Shared crate: EventSink trait, PtyManager, SidecarManager |
|
||||
| `bterminal-relay/` | Standalone relay binary (WebSocket server, token auth, CLI) |
|
||||
| `src-tauri/src/pty.rs` | PTY backend (thin re-export from bterminal-core) |
|
||||
| `src-tauri/src/groups.rs` | Groups config (load/save ~/.config/bterminal/groups.json) |
|
||||
| `Cargo.toml` | Cargo workspace root (members: src-tauri, agor-core, agor-relay) |
|
||||
| `agor-core/` | Shared crate: EventSink trait, PtyManager, SidecarManager |
|
||||
| `agor-relay/` | Standalone relay binary (WebSocket server, token auth, CLI) |
|
||||
| `src-tauri/src/pty.rs` | PTY backend (thin re-export from agor-core) |
|
||||
| `src-tauri/src/groups.rs` | Groups config (load/save ~/.config/agor/groups.json) |
|
||||
| `src-tauri/src/fs_watcher.rs` | ProjectFsWatcher (inotify per-project recursive file change detection, S-1 Phase 2) |
|
||||
| `src-tauri/src/lib.rs` | AppState + setup + handler registration (~170 lines) |
|
||||
| `src-tauri/src/commands/` | 16 domain command modules (pty, agent, watcher, session, persistence, knowledge, claude, groups, files, remote, misc, bttask, notifications, plugins, search, secrets) |
|
||||
|
|
@ -43,16 +43,16 @@ Terminal emulator with SSH and Claude Code session management. v1 (GTK3+VTE Pyth
|
|||
| `src-tauri/src/secrets.rs` | SecretsManager (keyring crate, linux-native/libsecret, store/get/delete/list with metadata tracking) |
|
||||
| `src-tauri/src/plugins.rs` | Plugin discovery (scan config dir for plugin.json, path-traversal-safe file reading, permission validation) |
|
||||
| `src-tauri/src/notifications.rs` | Desktop notifications (notify-rust, graceful fallback if daemon unavailable) |
|
||||
| `bterminal-core/src/supervisor.rs` | SidecarSupervisor (auto-restart, exponential backoff 1s-30s, 5 retries, SidecarHealth enum, 17 tests) |
|
||||
| `bterminal-core/src/sandbox.rs` | Landlock sandbox (SandboxConfig RW/RO paths, pre_exec() integration, kernel 6.2+ graceful fallback) |
|
||||
| `src-tauri/src/sidecar.rs` | SidecarManager (thin re-export from bterminal-core) |
|
||||
| `agor-core/src/supervisor.rs` | SidecarSupervisor (auto-restart, exponential backoff 1s-30s, 5 retries, SidecarHealth enum, 17 tests) |
|
||||
| `agor-core/src/sandbox.rs` | Landlock sandbox (SandboxConfig RW/RO paths, pre_exec() integration, kernel 6.2+ graceful fallback) |
|
||||
| `src-tauri/src/sidecar.rs` | SidecarManager (thin re-export from agor-core) |
|
||||
| `src-tauri/src/event_sink.rs` | TauriEventSink (implements EventSink for AppHandle) |
|
||||
| `src-tauri/src/remote.rs` | RemoteManager (WebSocket client connections to relays) |
|
||||
| `src-tauri/src/session/` | SessionDb module: mod.rs (struct + migrate), sessions.rs, layout.rs, settings.rs, ssh.rs, agents.rs, metrics.rs, anchors.rs |
|
||||
| `src-tauri/src/watcher.rs` | FileWatcherManager (notify crate, file change events) |
|
||||
| `src-tauri/src/ctx.rs` | CtxDb (read-only access to ~/.claude-context/context.db) |
|
||||
| `src-tauri/src/memora.rs` | MemoraDb (read-only access to ~/.local/share/memora/memories.db, FTS5 search) |
|
||||
| `src-tauri/src/telemetry.rs` | OTEL telemetry (TelemetryGuard, tracing + OTLP export, BTERMINAL_OTLP_ENDPOINT) |
|
||||
| `src-tauri/src/telemetry.rs` | OTEL telemetry (TelemetryGuard, tracing + OTLP export, AGOR_OTLP_ENDPOINT) |
|
||||
| `src/lib/stores/workspace.svelte.ts` | v3 workspace store (project groups, tabs, focus, replaces layout store) |
|
||||
| `src/lib/stores/layout.svelte.ts` | v2 layout store (panes, presets, groups, persistence, Svelte 5 runes) |
|
||||
| `src/lib/stores/agents.svelte.ts` | Agent session store (messages, cost, parent/child hierarchy) |
|
||||
|
|
@ -96,7 +96,7 @@ Terminal emulator with SSH and Claude Code session management. v1 (GTK3+VTE Pyth
|
|||
| `tests/e2e/wdio.conf.js` | WebDriverIO config (tauri-driver lifecycle, TCP probe, test env vars) |
|
||||
| `tests/e2e/fixtures.ts` | E2E test fixture generator (isolated temp dirs, git repos, groups.json) |
|
||||
| `tests/e2e/results-db.ts` | JSON test results store (run/step tracking, no native deps) |
|
||||
| `tests/e2e/specs/bterminal.test.ts` | E2E smoke tests (CSS class selectors, 50+ tests) |
|
||||
| `tests/e2e/specs/agor.test.ts` | E2E smoke tests (CSS class selectors, 50+ tests) |
|
||||
| `tests/e2e/specs/agent-scenarios.test.ts` | Phase A E2E scenarios (data-testid selectors, 7 scenarios, 22 tests) |
|
||||
| `tests/e2e/specs/phase-b.test.ts` | Phase B E2E scenarios (multi-project, LLM-judged assertions, 6 scenarios) |
|
||||
| `tests/e2e/llm-judge.ts` | LLM judge helper (Claude API assertions, confidence thresholds) |
|
||||
|
|
@ -170,25 +170,25 @@ Terminal emulator with SSH and Claude Code session management. v1 (GTK3+VTE Pyth
|
|||
## v1 Stack
|
||||
|
||||
- Python 3, GTK3 (PyGObject), VTE 2.91
|
||||
- Config: `~/.config/bterminal/` (sessions.json, claude_sessions.json)
|
||||
- Config: `~/.config/agor/` (sessions.json, claude_sessions.json)
|
||||
- Context DB: `~/.claude-context/context.db`
|
||||
- Theme: Catppuccin Mocha
|
||||
|
||||
## v2/v3 Stack (v2 complete, v3 All Phases 1-10 complete, branch: v2-mission-control)
|
||||
|
||||
- Tauri 2.x (Rust backend) + Svelte 5 (frontend)
|
||||
- Cargo workspace: bterminal-core (shared), bterminal-relay (remote binary), src-tauri (Tauri app)
|
||||
- Cargo workspace: agor-core (shared), agor-relay (remote binary), src-tauri (Tauri app)
|
||||
- xterm.js with Canvas addon (no WebGL on WebKit2GTK)
|
||||
- Agent sessions via `@anthropic-ai/claude-agent-sdk` query() function (migrated from raw CLI spawning)
|
||||
- Sidecar uses SDK internally (single .mjs bundle, Deno-first + Node.js fallback, stdio NDJSON to Rust, auto-detects Claude CLI path via findClaudeCli(), supports CLAUDE_CONFIG_DIR override for multi-account)
|
||||
- portable-pty for terminal management (in bterminal-core)
|
||||
- Multi-machine: bterminal-relay WebSocket server + RemoteManager WebSocket client
|
||||
- portable-pty for terminal management (in agor-core)
|
||||
- Multi-machine: agor-relay WebSocket server + RemoteManager WebSocket client
|
||||
- SQLite session persistence (rusqlite, WAL mode) + layout restore on startup
|
||||
- File watcher (notify crate) for live markdown viewer
|
||||
- OpenTelemetry: tracing + tracing-subscriber + opentelemetry 0.28 + tracing-opentelemetry 0.29, OTLP/HTTP to Tempo, BTERMINAL_OTLP_ENDPOINT env var
|
||||
- Rust deps (src-tauri): tauri, bterminal-core (path), rusqlite (bundled-full, FTS5), dirs, notify, serde, tokio, tokio-tungstenite, futures-util, tracing, tracing-subscriber, opentelemetry, opentelemetry_sdk, opentelemetry-otlp, tracing-opentelemetry, tauri-plugin-updater, tauri-plugin-dialog, notify-rust, keyring (linux-native)
|
||||
- Rust deps (bterminal-core): portable-pty, uuid, serde, serde_json, log, landlock
|
||||
- Rust deps (bterminal-relay): bterminal-core, tokio, tokio-tungstenite, clap, env_logger, futures-util
|
||||
- OpenTelemetry: tracing + tracing-subscriber + opentelemetry 0.28 + tracing-opentelemetry 0.29, OTLP/HTTP to Tempo, AGOR_OTLP_ENDPOINT env var
|
||||
- Rust deps (src-tauri): tauri, agor-core (path), rusqlite (bundled-full, FTS5), dirs, notify, serde, tokio, tokio-tungstenite, futures-util, tracing, tracing-subscriber, opentelemetry, opentelemetry_sdk, opentelemetry-otlp, tracing-opentelemetry, tauri-plugin-updater, tauri-plugin-dialog, notify-rust, keyring (linux-native)
|
||||
- Rust deps (agor-core): portable-pty, uuid, serde, serde_json, log, landlock
|
||||
- Rust deps (agor-relay): agor-core, tokio, tokio-tungstenite, clap, env_logger, futures-util
|
||||
- npm deps: @anthropic-ai/claude-agent-sdk, @xterm/xterm, @xterm/addon-canvas, @xterm/addon-fit, @tauri-apps/api, @tauri-apps/plugin-updater, @tauri-apps/plugin-dialog, marked, shiki, pdfjs-dist, vitest (dev)
|
||||
- Source: `` directory
|
||||
|
||||
|
|
@ -197,7 +197,7 @@ Terminal emulator with SSH and Claude Code session management. v1 (GTK3+VTE Pyth
|
|||
```bash
|
||||
# v1 (current production)
|
||||
./install.sh # Install system-wide
|
||||
bterminal # Run
|
||||
agor # Run
|
||||
|
||||
# v1 Dependencies (Debian/Ubuntu)
|
||||
sudo apt install python3-gi gir1.2-gtk-3.0 gir1.2-vte-2.91
|
||||
|
|
@ -215,7 +215,7 @@ npm run test:e2e # E2E only (WebDriverIO)
|
|||
|
||||
# Telemetry stack (Tempo + Grafana)
|
||||
cd docker/tempo && docker compose up -d # Grafana at http://localhost:9715
|
||||
BTERMINAL_OTLP_ENDPOINT=http://localhost:4318 npm run tauri dev # Enable OTLP export
|
||||
AGOR_OTLP_ENDPOINT=http://localhost:4318 npm run tauri dev # Enable OTLP export
|
||||
```
|
||||
|
||||
## Conventions
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue