diff --git a/doc/architecture.md b/doc/architecture.md index 6e22c9f..09a4544 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -21,9 +21,9 @@ ollie/ │ ├── toolsrv/ 9P tool execution server (separate process) │ │ └── internal/ fs/, exec/, registry/, sandbox/ │ ├── ollie-9p/ 9P client CLI -│ └── ollie-remote/ Remote execution server ├── toolsrv/ Client library (9P client for toolsrv) -├── fsedsl/ Filesystem declaration EDSL (generic, reusable) +├── virtfs/ Filesystem declaration EDSL (generic, reusable) +├── lib9p/ 9P protocol library + native client ├── env/ Environment variable loading ├── log/ Structured logging ├── paths/ XDG path resolution @@ -81,7 +81,7 @@ flowchart TB LOOP --> TRV LOOP <--> Backends TRV --> Tools["tool definitions\n(OLLIE_TOOLS_PATH)\n· shell, reasoning_think\n· file_read, file_write\n· lsp_*, memory_*\n· gui_*, subagent_*"] - TRV --> Remote["ollie-remote (SSH)\npure 9P RPC\nno embedded tools"] + TRV --> Remote["ollie-remote (toolsrv)\nSSH-tunneled 9P RPC\nremote tool execution"] ``` ## Core Library The core is a single Go module (`ollie`) with no binary. Binaries live in `cmd/`. @@ -99,7 +99,8 @@ The core is a single Go module (`ollie`) with no binary. Binaries live in `cmd/` | `cmd/toolsrv/internal/registry/` | Session-scoped tool registry | | `cmd/toolsrv/internal/sandbox/` | Landrun sandbox configuration and command wrapping | | `toolsrv/` | 9P client library for connecting to toolsrv | -| `fsedsl/` | Generic filesystem declaration EDSL (used by both servers) | +| `virtfs/` | Generic filesystem declaration EDSL (used by both servers) | +| `lib9p/` | 9P protocol library + native client | | `env/` | Session environment helpers | | `log/` | Structured logging (olliesrv) | | `paths/` | XDG path resolution | @@ -229,6 +230,7 @@ Agent configs declare prompts as a JSON array of shell commands. Each command is │ └── {aname}/ │ ├── prompt submit a prompt │ ├── fifo prompt queue (write=enqueue, read=dequeue) + │ ├── feed change-detecting input (write=store, read=block until changed) │ ├── chat streaming filtered text (no markers/fences) │ ├── chat.raw streaming full markup (block markers + fences) │ ├── log last 64KB of chat (non-blocking)