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
|
|
@ -5,8 +5,8 @@
|
|||
## Session: 2026-03-05
|
||||
|
||||
### Research Phase (complete)
|
||||
- [x] Analyzed current BTerminal v1 codebase (2092 lines Python, GTK3+VTE)
|
||||
- [x] Queried Memora — no existing BTerminal memories
|
||||
- [x] Analyzed current Agents Orchestrator v1 codebase (2092 lines Python, GTK3+VTE)
|
||||
- [x] Queried Memora — no existing Agents Orchestrator memories
|
||||
- [x] Researched Claude Agent SDK — found structured streaming, subagent tracking, hooks
|
||||
- [x] Researched Tauri + xterm.js ecosystem — found 4+ working projects
|
||||
- [x] Researched terminal latency benchmarks — xterm.js acceptable for AI output
|
||||
|
|
@ -114,7 +114,7 @@ Architecture decision: Initially used `claude` CLI with `--output-format stream-
|
|||
### Phase 6: Packaging + Distribution (2026-03-06)
|
||||
- [x] Created install-v2.sh — build-from-source installer with 6-step dependency check process
|
||||
- [x] Updated v2/src-tauri/tauri.conf.json: bundle targets ["deb", "appimage"]
|
||||
- [x] Regenerated all icons in v2/src-tauri/icons/ from bterminal.svg as RGBA PNGs
|
||||
- [x] Regenerated all icons in v2/src-tauri/icons/ from agor.svg as RGBA PNGs
|
||||
- [x] Created .github/workflows/release.yml — CI workflow triggered on v* tags
|
||||
- [x] Build verified: .deb (4.3 MB), AppImage (103 MB) both built successfully
|
||||
|
||||
|
|
@ -177,33 +177,33 @@ Architecture decision: Initially used `claude` CLI with `--output-format stream-
|
|||
- [x] getTotalCost() recursive helper, total cost shown in parent pane
|
||||
|
||||
#### TAURI_SIGNING_PRIVATE_KEY
|
||||
- [x] Set via `gh secret set` on DexterFromLab/BTerminal GitHub repo
|
||||
- [x] Set via `gh secret set` on DexterFromLab/Agents Orchestrator GitHub repo
|
||||
|
||||
### Session: 2026-03-06 (continued) — Multi-Machine Architecture Design
|
||||
|
||||
#### Multi-Machine Support Architecture
|
||||
- [x] Designed full multi-machine architecture in docs/multi-machine.md (303 lines)
|
||||
- [x] Three-layer model: BTerminal (controller) + bterminal-relay (remote binary) + unified frontend
|
||||
- [x] Three-layer model: Agents Orchestrator (controller) + agor-relay (remote binary) + unified frontend
|
||||
- [x] WebSocket NDJSON protocol: RelayCommand/RelayEvent envelope wrapping existing sidecar format
|
||||
- [x] Authentication: pre-shared token + TLS, rate limiting, lockout
|
||||
- [x] Autonomous relay model: agents keep running when controller disconnects
|
||||
- [x] Reconnection with exponential backoff (1s-30s), state_sync on reconnect
|
||||
- [x] 4-phase implementation plan: A (extract bterminal-core crate), B (relay binary), C (RemoteManager), D (frontend)
|
||||
- [x] 4-phase implementation plan: A (extract agor-core crate), B (relay binary), C (RemoteManager), D (frontend)
|
||||
- [x] Updated TODO.md and docs/task_plan.md to reference the design
|
||||
|
||||
### Session: 2026-03-06 (continued) — Multi-Machine Implementation (Phases A-D)
|
||||
|
||||
#### Phase A: bterminal-core crate extraction
|
||||
- [x] Created Cargo workspace at v2/ level (v2/Cargo.toml, workspace members: src-tauri, bterminal-core, bterminal-relay)
|
||||
- [x] Extracted PtyManager into v2/bterminal-core/src/pty.rs
|
||||
- [x] Extracted SidecarManager into v2/bterminal-core/src/sidecar.rs
|
||||
- [x] Created EventSink trait (v2/bterminal-core/src/event.rs) to abstract event emission
|
||||
#### Phase A: agor-core crate extraction
|
||||
- [x] Created Cargo workspace at v2/ level (v2/Cargo.toml, workspace members: src-tauri, agor-core, agor-relay)
|
||||
- [x] Extracted PtyManager into v2/agor-core/src/pty.rs
|
||||
- [x] Extracted SidecarManager into v2/agor-core/src/sidecar.rs
|
||||
- [x] Created EventSink trait (v2/agor-core/src/event.rs) to abstract event emission
|
||||
- [x] TauriEventSink (v2/src-tauri/src/event_sink.rs) implements EventSink for Tauri AppHandle
|
||||
- [x] src-tauri/src/pty.rs and sidecar.rs now thin re-export wrappers
|
||||
- [x] Cargo.lock moved from src-tauri/ to workspace root (v2/)
|
||||
|
||||
#### Phase B: bterminal-relay binary
|
||||
- [x] New Rust binary at v2/bterminal-relay/ with WebSocket server (tokio-tungstenite)
|
||||
#### Phase B: agor-relay binary
|
||||
- [x] New Rust binary at v2/agor-relay/ with WebSocket server (tokio-tungstenite)
|
||||
- [x] Token auth via Authorization: Bearer header on WebSocket upgrade
|
||||
- [x] CLI flags: --port (default 9750), --token (required), --insecure (allow ws://)
|
||||
- [x] Routes RelayCommand types (pty_create/write/resize/close, agent_query/stop, sidecar_restart, ping)
|
||||
|
|
@ -234,14 +234,14 @@ Architecture decision: Initially used `claude` CLI with `--output-format stream-
|
|||
- svelte-check: clean (0 errors)
|
||||
|
||||
#### New dependencies added
|
||||
- bterminal-core: serde, serde_json, log, portable-pty, uuid (extracted from src-tauri)
|
||||
- bterminal-relay: tokio, tokio-tungstenite, clap, env_logger, futures-util
|
||||
- agor-core: serde, serde_json, log, portable-pty, uuid (extracted from src-tauri)
|
||||
- agor-relay: tokio, tokio-tungstenite, clap, env_logger, futures-util
|
||||
- src-tauri: tokio-tungstenite, tokio, futures-util, uuid (added for RemoteManager)
|
||||
|
||||
### Session: 2026-03-06 (continued) — Relay Hardening & Reconnection
|
||||
|
||||
#### Relay Command Response Propagation
|
||||
- [x] Shared event channel between EventSink and command response sender (sink_tx clone in bterminal-relay)
|
||||
- [x] Shared event channel between EventSink and command response sender (sink_tx clone in agor-relay)
|
||||
- [x] send_error() helper function: all command failures now emit RelayEvent with commandId + error message instead of just logging
|
||||
- [x] ping command: now sends pong response via event channel (was a no-op)
|
||||
- [x] pty_create: returns pty_created event with session ID and commandId for correlation
|
||||
|
|
|
|||
|
|
@ -10,14 +10,14 @@
|
|||
- [x] Tool-aware output truncation (Bash 500, Read/Write 50, Glob/Grep 20, default 30 lines)
|
||||
- [x] Colors softened via `color-mix(in srgb, var(--ctp-*) 65%, var(--ctp-surface1) 35%)`
|
||||
- [x] MarkdownPane: container query wrapper, shared responsive padding variable
|
||||
- [x] catppuccin.css: `--bterminal-pane-padding-inline: clamp(0.75rem, 3.5cqi, 2rem)`
|
||||
- [x] catppuccin.css: `--agor-pane-padding-inline: clamp(0.75rem, 3.5cqi, 2rem)`
|
||||
- [x] 139/139 vitest passing, 0 new TypeScript errors
|
||||
- [ ] Visual verification in dev mode (pending)
|
||||
|
||||
### Session: 2026-03-06 (continued) — Sidecar Env Var Bug Fix
|
||||
|
||||
#### CLAUDE* Environment Variable Leak (critical fix)
|
||||
- [x] Diagnosed silent hang in agent sessions when BTerminal launched from Claude Code terminal
|
||||
- [x] Diagnosed silent hang in agent sessions when Agents Orchestrator launched from Claude Code terminal
|
||||
- [x] Root cause: Claude Code sets ~8 CLAUDE* env vars for nesting/sandbox detection
|
||||
- [x] Fixed both sidecar runners to filter out all keys starting with 'CLAUDE'
|
||||
|
||||
|
|
@ -154,7 +154,7 @@
|
|||
#### Phase 10: Dead Component Removal + Polish
|
||||
- [x] Deleted 7 dead v2 components (~1,836 lines): TilingGrid, PaneContainer, PaneHeader, SessionList, SshSessionList, SshDialog, SettingsDialog
|
||||
- [x] Removed empty directories: Layout/, Sidebar/, Settings/, SSH/
|
||||
- [x] Rewrote StatusBar for workspace store (group name, project count, "BTerminal v3")
|
||||
- [x] Rewrote StatusBar for workspace store (group name, project count, "Agents Orchestrator v3")
|
||||
- [x] Fixed subagent routing: project-scoped sessions skip layout pane (render in TeamAgentsPanel)
|
||||
- [x] Updated v3-task_plan.md to mark all 10 phases complete
|
||||
|
||||
|
|
@ -237,7 +237,7 @@
|
|||
- [x] App.svelte: restore on startup via getSetting()
|
||||
|
||||
#### Desktop Integration
|
||||
- [x] install-v2.sh: added `StartupWMClass=bterminal` to .desktop template
|
||||
- [x] install-v2.sh: added `StartupWMClass=agor` to .desktop template
|
||||
- [x] GNOME auto-move extension compatible
|
||||
|
||||
#### No-Implicit-Push Rule
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@
|
|||
- [x] Deleted `TilingGrid.svelte` (328 lines), `PaneContainer.svelte` (113 lines), `PaneHeader.svelte` (44 lines)
|
||||
- [x] Deleted `SessionList.svelte` (374 lines), `SshSessionList.svelte` (263 lines), `SshDialog.svelte` (281 lines), `SettingsDialog.svelte` (433 lines)
|
||||
- [x] Removed empty directories: Layout/, Sidebar/, Settings/, SSH/
|
||||
- [x] Rewrote StatusBar.svelte for workspace store (group name, project count, agent count, "BTerminal v3" label)
|
||||
- [x] Rewrote StatusBar.svelte for workspace store (group name, project count, agent count, "Agents Orchestrator v3" label)
|
||||
- [x] Fixed subagent routing in agent-dispatcher: project-scoped sessions skip layout pane creation (subagents render in TeamAgentsPanel instead)
|
||||
- [x] Updated v3-task_plan.md to mark all 10 phases complete
|
||||
|
||||
|
|
@ -389,7 +389,7 @@ All editor themes map to the same `--ctp-*` CSS custom property names (26 vars).
|
|||
|
||||
#### OTEL Telemetry Implementation
|
||||
- [x] Added 6 Rust deps: tracing, tracing-subscriber, opentelemetry 0.28, opentelemetry_sdk 0.28, opentelemetry-otlp 0.28, tracing-opentelemetry 0.29
|
||||
- [x] Created `v2/src-tauri/src/telemetry.rs` — TelemetryGuard, layer composition, OTLP export via BTERMINAL_OTLP_ENDPOINT env var
|
||||
- [x] Created `v2/src-tauri/src/telemetry.rs` — TelemetryGuard, layer composition, OTLP export via AGOR_OTLP_ENDPOINT env var
|
||||
- [x] Integrated into lib.rs: TelemetryGuard in AppState, init before Tauri builder
|
||||
- [x] Instrumented 10 Tauri commands with `#[tracing::instrument]`: pty_spawn, pty_kill, agent_query/stop/restart, remote_connect/disconnect/agent_query/agent_stop/pty_spawn
|
||||
- [x] Added `frontend_log` Tauri command for frontend→Rust tracing bridge
|
||||
|
|
@ -436,7 +436,7 @@ All editor themes map to the same `--ctp-*` CSS custom property names (26 vars).
|
|||
- [x] Removed tauri-plugin-log from Cargo.toml dependency
|
||||
|
||||
#### E2E Coverage Expansion (25 tests, single spec file)
|
||||
- [x] Consolidated 4 spec files into single bterminal.test.ts — Tauri creates one app session per spec file; after first spec completes, app closes and subsequent specs get "invalid session id"
|
||||
- [x] Consolidated 4 spec files into single agor.test.ts — Tauri creates one app session per spec file; after first spec completes, app closes and subsequent specs get "invalid session id"
|
||||
- [x] Added Workspace & Projects tests (8): project grid, project boxes, header with name, 3 project tabs, active highlight, tab switching, status bar counts
|
||||
- [x] Added Settings Panel tests (6): settings tab, sections, theme dropdown, dropdown open+options, group list, close button
|
||||
- [x] Added Keyboard Shortcuts tests (5): Ctrl+K command palette, Ctrl+, settings, Ctrl+B sidebar, Escape close, palette group list
|
||||
|
|
@ -810,7 +810,7 @@ Ran nemezis-audit on Rust backend. 0 verified exploitable findings, 10 recon tar
|
|||
- [x] Admin role (tier 0), channel messaging (create/list/send/history), mark-read, global feed
|
||||
|
||||
#### btmsg Rust Backend + Tauri Bridge
|
||||
- [x] Created btmsg.rs module — SQLite-backed messaging (shared DB: ~/.local/share/bterminal/btmsg.db)
|
||||
- [x] Created btmsg.rs module — SQLite-backed messaging (shared DB: ~/.local/share/agor/btmsg.db)
|
||||
- [x] 8+ Tauri commands: btmsg_inbox, btmsg_send, btmsg_read, btmsg_contacts, btmsg_feed, btmsg_channels, etc.
|
||||
- [x] CommsTab: sidebar chat interface with activity feed, DMs, channels (Ctrl+M)
|
||||
|
||||
|
|
@ -827,7 +827,7 @@ Ran nemezis-audit on Rust backend. 0 verified exploitable findings, 10 recon tar
|
|||
|
||||
#### BTMSG_AGENT_ID Environment Passthrough (5-layer chain)
|
||||
- [x] agent-bridge.ts: added extra_env?: Record<string,string> to AgentQueryOptions
|
||||
- [x] bterminal-core/sidecar.rs: added extra_env: HashMap<String,String> with #[serde(default)]
|
||||
- [x] agor-core/sidecar.rs: added extra_env: HashMap<String,String> with #[serde(default)]
|
||||
- [x] claude-runner.ts: extraEnv merged into cleanEnv after provider var stripping
|
||||
- [x] codex-runner.ts: same extraEnv pattern
|
||||
- [x] AgentSession injects { BTMSG_AGENT_ID: project.id } for agent projects
|
||||
|
|
@ -922,7 +922,7 @@ Reviewed and integrated Dexter's multi-agent orchestration branch (dexter_change
|
|||
#### Test Counts
|
||||
- Vitest: 327 passed (was 286, +41)
|
||||
- Cargo src-tauri: 64 passed (was 49, +15)
|
||||
- Cargo bterminal-core: 8 passed (was 0, +8)
|
||||
- Cargo agor-core: 8 passed (was 0, +8)
|
||||
|
||||
### E2E Testing Engine — Phase A (2026-03-12)
|
||||
|
||||
|
|
@ -945,8 +945,8 @@ Reviewed and integrated Dexter's multi-agent orchestration branch (dexter_change
|
|||
|
||||
#### WebDriverIO Config Improvements
|
||||
- [x] TCP readiness probe replaces blind 2s sleep for tauri-driver startup
|
||||
- [x] BTERMINAL_TEST=1 env var passed to Tauri app via capabilities
|
||||
- [x] Optional BTERMINAL_TEST_DATA_DIR / BTERMINAL_TEST_CONFIG_DIR passthrough
|
||||
- [x] AGOR_TEST=1 env var passed to Tauri app via capabilities
|
||||
- [x] Optional AGOR_TEST_DATA_DIR / AGOR_TEST_CONFIG_DIR passthrough
|
||||
|
||||
#### Test Infrastructure Files
|
||||
- [x] `v2/tests/e2e/fixtures.ts` — isolated test fixture generator (temp dirs, git repos, groups.json)
|
||||
|
|
@ -1014,7 +1014,7 @@ Reviewed and integrated Dexter's multi-agent orchestration branch (dexter_change
|
|||
Implemented ALL 13 features from tribunal assessment in 3 parallel waves (11 sub-agents total). 60+ files changed, 3861 insertions.
|
||||
|
||||
#### Wave 1: Core Infrastructure (3 agents)
|
||||
- [x] **Sidecar supervisor** — `bterminal-core/src/supervisor.rs`: SidecarSupervisor with exponential backoff (1s-30s, 5 retries), SidecarHealth enum, 5min stability window, 17 tests
|
||||
- [x] **Sidecar supervisor** — `agor-core/src/supervisor.rs`: SidecarSupervisor with exponential backoff (1s-30s, 5 retries), SidecarHealth enum, 5min stability window, 17 tests
|
||||
- [x] **FTS5 search** — rusqlite `bundled-full`, SearchDb with 3 FTS5 virtual tables, SearchOverlay.svelte (Ctrl+Shift+F), search-bridge.ts
|
||||
- [x] **Secrets management** — `keyring` crate (linux-native/libsecret), SecretsManager, secrets-bridge.ts, SettingsTab section
|
||||
|
||||
|
|
@ -1023,7 +1023,7 @@ Implemented ALL 13 features from tribunal assessment in 3 parallel waves (11 sub
|
|||
- [x] **Keyboard-first UX** — Alt+1-5 jump, Ctrl+H/L vi-nav, Ctrl+Shift+1-9 tabs, Ctrl+J terminal, CommandPalette rewrite (18+ cmds, 6 categories)
|
||||
- [x] **Agent health monitoring** — heartbeats + dead_letter_queue tables, 15s poll, ProjectHeader heart indicator, StatusBar badge
|
||||
- [x] **Plugin system** — plugins.rs discovery, plugin-host.ts sandboxed runtime, plugins.svelte.ts store, example plugin
|
||||
- [x] **Landlock sandbox** — bterminal-core/src/sandbox.rs, SandboxConfig, pre_exec() integration, per-project toggle
|
||||
- [x] **Landlock sandbox** — agor-core/src/sandbox.rs, SandboxConfig, pre_exec() integration, per-project toggle
|
||||
|
||||
#### Wave 3: Integration (3 agents)
|
||||
- [x] **Error classification** — error-classifier.ts (6 types, retry logic), 20 tests
|
||||
|
|
@ -1053,7 +1053,7 @@ Executed tribunal-recommended hybrid S-2/S-1 hardening sprint. Fixed 3 security/
|
|||
- [x] Added "Multi-Agent Delegation" section to Manager workflow in `agent-prompts.ts`
|
||||
- [x] Inject `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` env var for Manager agents in `AgentSession.svelte`
|
||||
|
||||
#### TLS for bterminal-relay
|
||||
#### TLS for agor-relay
|
||||
- [x] Added `--tls-cert` and `--tls-key` optional CLI args to relay binary
|
||||
- [x] `build_tls_acceptor()` using `native_tls::Identity::from_pkcs8`
|
||||
- [x] Refactored to generic `accept_ws_with_auth<S>` and `run_ws_session<S>` (avoids code duplication)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue