Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions ui/goose2/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,8 @@ ThemeProvider manages three axes:
## Backend Architecture

All AI communication goes through **ACP (Agent Client Protocol)**:
- The Rust backend spawns ACP agent binaries as child processes and communicates via **stdin/stdout JSON-RPC**.
- Responses stream back to the frontend through **Tauri events** (`acp:text`, `acp:tool_call`, `acp:tool_result`, `acp:done`, etc.).
- The frontend listens to these events via `@tauri-apps/api/event` (see `useAcpStream` hook).
- The Tauri app starts a long-lived `goose serve` process and exposes its WebSocket URL.
- The frontend connects directly to `goose serve` over WebSocket and handles ACP notifications in TypeScript.

For non AI communication, such as configuration:
- Use **Tauri commands** (`invoke()` from `@tauri-apps/api/core`) for request/response operations (sessions, personas, skills, projects, etc.).
Expand Down
25 changes: 0 additions & 25 deletions ui/goose2/scripts/check-file-sizes.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,6 @@ const EXCEPTIONS = {
justification:
"Shell still coordinates ACP session loading, project reassignment, and app-level chat routing.",
},
"src/features/chat/hooks/useAcpStream.ts": {
limit: 580,
justification:
"ACP replay, streaming, session binding, model-state event handling, and replay timeout are still centralized here.",
},
"src/features/chat/hooks/__tests__/useAcpStream.test.ts": {
limit: 570,
justification:
"Covers replay buffering, timeout error state, streaming edge cases, and provider identity persistence in one cohesive suite.",
},
"src/features/chat/stores/__tests__/chatSessionStore.test.ts": {
limit: 540,
justification:
Expand All @@ -55,21 +45,6 @@ const EXCEPTIONS = {
justification:
"Project CRUD plus reorder_projects command for sidebar drag-and-drop ordering.",
},
"src-tauri/src/services/acp/manager/dispatcher.rs": {
limit: 540,
justification:
"ACP replay and live-stream event fan-out share one dispatcher with replay event counting for drain stabilisation.",
},
"src-tauri/src/services/acp/manager.rs": {
limit: 630,
justification:
"ACP manager command dispatch loop — export/import/fork session ext_method dispatch adds boilerplate.",
},
"src-tauri/src/services/acp/manager/session_ops.rs": {
limit: 620,
justification:
"Session prepare/load/list logic, working-dir updates, wait_for_replay_drain helper with iteration cap, and composite prepared-session reuse remain colocated while ACP session ownership stabilizes.",
},
"src-tauri/src/commands/system.rs": {
limit: 640,
justification:
Expand Down
124 changes: 2 additions & 122 deletions ui/goose2/src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 0 additions & 4 deletions ui/goose2/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,7 @@ chrono = { version = "0.4", features = ["serde"] }
serde_yaml = "0.9"
etcetera = "0.8"
futures = "0.3"
tokio-util = { version = "0.7", features = ["compat", "rt"] }
async-trait = "0.1"
agent-client-protocol = { version = "0.10.4", features = ["unstable_session_fork"] }
tokio-tungstenite = "0.21.0"
acp-client = { git = "https://github.com/block/builderbot", rev = "db184d20cb48e0c90bbd3fea4a4a871fc9d8a6ad" }
doctor = { git = "https://github.com/block/builderbot", rev = "8e1c3ec145edc0df5f04b4427cfd758378036862" }
ignore = "0.4.25"
base64 = "0.22"
Expand Down
Loading
Loading