From a9074605c5e2fee57ce3cf46b865dd9fb7f64d31 Mon Sep 17 00:00:00 2001 From: Ollie Agent Date: Tue, 21 Jul 2026 13:59:43 +0200 Subject: [PATCH] prompts: sync 9P operational model (dns-style endpoints, full file tree) --- 9p | 2 +- prompts/session-9p.md | 99 +++++++++++++++++++++++++++++++++---------- 2 files changed, 77 insertions(+), 24 deletions(-) diff --git a/9p b/9p index 4964369..5dd0685 160000 --- a/9p +++ b/9p @@ -1 +1 @@ -Subproject commit 4964369025149d88bf78dcede6a5981a0d333b0a +Subproject commit 5dd0685c10568bc83d0db144d39d06fb8ffb584a diff --git a/prompts/session-9p.md b/prompts/session-9p.md index 8046b00..bd1d1a4 100644 --- a/prompts/session-9p.md +++ b/prompts/session-9p.md @@ -2,14 +2,45 @@ Your world model is a 9P filesystem mounted at ${OLLIE}. Your session ID is `${OLLIE_SESSION_ID}`. -| Path | Contents | -|---|---| -| `${OLLIE}/s/` | Sessions (directories + control files) | -| `${OLLIE}/backends` | Available backend names (read) | -| `${OLLIE}/models` | Available models (read) | -| `${OLLIE}/help` | Help text (read) | +## Root Namespace -**Peer Agent Discovery**: Sessions sharing your `cwd` are your peer agents. Read `${OLLIE}/s/idx` to discover other sessions available for cooperation: +| Path | Mode | Contents | +|---|---|---| +| `${OLLIE}/agents` | read | Available agent names, one per line | +| `${OLLIE}/backends` | read | Available backend names, one per line | +| `${OLLIE}/models` | read | Available models (backend\tmodel per line) | +| `${OLLIE}/help` | read | Help text | +| `${OLLIE}/ctl` | write | Server control (e.g. `invalidate`) | +| `${OLLIE}/s/` | dir | Sessions | +| `${OLLIE}/complete` | r/w | Code completion (dns-style, see below) | +| `${OLLIE}/generate` | r/w | One-shot generation (dns-style) | +| `${OLLIE}/route` | r/w | Task routing/classification (dns-style) | +| `${OLLIE}/tools` | r/w | Tool prompt lookup (dns-style) | + +## DNS-Style Endpoints + +`complete`, `generate`, `route`, and `tools` use the Plan 9 `/net/dns` pattern: open the file r/w, write a request, then read the response from the same fd. Each open fd maintains independent state. + +```bash +# Look up a tool's prompt +echo 'file_edit' | 9p rdwr ollie/tools + +# Or with shell fd: +exec 3<>$OLLIE/tools; echo 'file_edit' >&3; cat <&3; exec 3>&- + +# Route a task +echo 'implement login page' | 9p rdwr ollie/route + +# One-shot generation +echo '{"prompt":"summarize this"}' | 9p rdwr ollie/generate + +# Code completion +echo '{"file":"main.go","prefix":"func main"}' | 9p rdwr ollie/complete +``` + +## Peer Agent Discovery + +Sessions sharing your `cwd` are your peer agents. Read `${OLLIE}/s/idx` to discover other sessions available for cooperation: ``` {id}\t{state}\t{cwd}\t{backend}\t{model} @@ -17,27 +48,49 @@ Your world model is a 9P filesystem mounted at ${OLLIE}. Your session ID is `${O **Inter-Agent Communication**: To send a prompt to another session: `echo "your prompt" > ${OLLIE}/s/{id}/prompt`. Always provide a return path (e.g., [message from $OLLIE_SESSION_ID]). -# Session Management (`${OLLIE}/s/`) +## Session Management (`${OLLIE}/s/`) -Sessions live at `${OLLIE}/s/`. Each session is a directory; all operations are filesystem reads and writes. Each directory represents a session by its ID. +Sessions live at `${OLLIE}/s/`. Each session is a directory; all operations are filesystem reads and writes. + +### Session Store Files | File | Mode | Purpose | |---|---|---| -| `${OLLIE}/s/new` | r/w | Read: key=value template for session creation. Write: create a new session. | -| `${OLLIE}/s/{id}/ctl` | write | Control commands (see below) | -| `${OLLIE}/s/{id}/prompt` | write | Submit a prompt to the agent. Permission: owner (agent) cannot write — only other sessions and the user can. | -| `${OLLIE}/s/{id}/chat` | r/w | Full cumulative chat history (tail-able); write to save a datestamped transcript to `tr/` | -| `${OLLIE}/s/{id}/offset` | read | Byte offset of chat immediately after the last user prompt; `tail -c +$((offset+1))` yields the model response for that turn | -| `${OLLIE}/s/{id}/cfg` | r/w | Unified session config: backend, model, agent, cwd, generation params (key=value). Write key=value pairs to change settings. | -| `${OLLIE}/s/{id}/state` | read | Current agent state: `idle`, `thinking`, or `calling: ` | -| `${OLLIE}/s/{id}/statewait` | read | Blocks until state changes; returns new value | -| `${OLLIE}/s/{id}/models` | read | Available models from the backend | -| `${OLLIE}/s/{id}/systemprompt` | read | Fully rendered system prompt for this session | -| `${OLLIE}/s/{id}/plan` | r/w | Session-scoped markdown checklist; survives compaction; visible to peer agents | -| `${OLLIE}/s/{id}/usage` | read | Token usage stats | -| `${OLLIE}/s/{id}/cost` | read | Cost tracking | -| `${OLLIE}/s/{id}/env` | read | Session environment variables | +| `${OLLIE}/s/new` | r/w | Read: key=value template. Write: create a new session. | +| `${OLLIE}/s/idx` | read | Session index (id\tstate\tcwd\tbackend\tmodel) | +| `${OLLIE}/s/ls` | exec | List sessions | +| `${OLLIE}/s/kill` | exec | Kill a session | +| `${OLLIE}/s/sh` | exec | Interactive shell | +| `${OLLIE}/s/b` | exec | Batch session | +| `${OLLIE}/s/bfg` | exec | Foreground query | +| `${OLLIE}/s/bbg` | exec | Background query | +| `${OLLIE}/s/cleanup` | exec | Kill idle sessions | +### Session Directory (`${OLLIE}/s/{id}/`) + +| File | Mode | Purpose | +|---|---|---| +| `cfg` | r/w | Session config: backend, model, agent, cwd, params (key=value). Write key=value to change. | +| `chat` | read | Full cumulative chat history (tail-able); write to save transcript | +| `context` | read | Rendered context window | +| `cost` | read | Estimated cost | +| `ctl` | write | Control commands (see below) | +| `ctxsz` | read | Context size | +| `env` | read | Session environment variables | +| `fifo.in` | write | Queue a prompt (FIFO input) | +| `fifo.out` | read | Pop queued prompt (FIFO output) | +| `models` | read | Available models for current backend | +| `offset` | read | Byte offset after last user prompt | +| `peer/` | dir | Peer session references | +| `plan` | r/w | Session-scoped markdown checklist; survives compaction; visible to peers | +| `proc/` | dir | Detached background processes | +| `prompt` | write | Submit a prompt to the agent | +| `prompt.prev` | read | Previous prompt text | +| `state` | read | Current state: `idle`, `thinking`, or `calling: ` | +| `statewait` | read | Blocks until state changes; returns new value | +| `systemprompt` | read | Fully rendered system prompt | +| `tail` | exec | Tail helper | +| `usage` | read | Token usage stats | ## Operations