Commit Graph

33 Commits

Author SHA1 Message Date
Levi Neely 68d6d284f4 p9: add mcp endpoint to session directory
Exposes ollie/s/{sid}/mcp as a read-only file that returns all registered
tool servers and their tools, grouped by server name. Backed by the new
Core.ListServers() method.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 11:31:46 +02:00
Levi Neely 75fc1566c0 p9: split prompt.fifo into enqueue (write) and dequeue (read)
Replaces the r/w prompt.fifo with two separate endpoints: enqueue
(write-only, queues a prompt) and dequeue (read-only, pops the next
queued prompt). Also fixes a bug where cat's trailing EOF read at
non-zero offset would silently consume and discard the next queued item.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 10:03:46 +02:00
Levi Neely f22c00c276 p9: add usage and models endpoints to session directory 2026-04-10 20:37:30 +02:00
Levi Neely 0e434750d0 p9: prompt interrupts if busy; add prompt.fifo for queue 2026-04-10 20:11:26 +02:00
Levi Neely 6cec2de2d9 README: update filesystem layout with p/, sk/, t/ directories 2026-04-10 19:17:51 +02:00
Levi Neely 1d5ad91bf0 p9: rename prompts/ to p/ in filesystem 2026-04-10 19:17:00 +02:00
Levi Neely 8bc8977fbf p9: expose tools as /t/ directory (r/w from ToolsPath)
Same pattern as prompts — reads and writes go directly to disk.
Files are 0755 on write since they're executable scripts.
2026-04-10 19:16:36 +02:00
Levi Neely d674f4b6c2 p9: rename skills/ to sk/ in filesystem and tool scripts 2026-04-10 19:14:59 +02:00
Levi Neely 9122f7477e p9: expose skills/ directory and add skill tool scripts
Serve /skills/<name>.md via pkg/skills (read-only, refreshes from disk
on each read). Add discover_skill.sh and load_skill.sh tool scripts
that read from the 9P mount.
2026-04-10 19:10:53 +02:00
Levi Neely 944445fd4d p9: expose prompts/ directory for runtime prompt editing
Add /prompts/ to the 9P filesystem, backed by DefaultPromptsDir().
Reads serve file contents from disk; writes persist back to disk.
Edits take effect on the next agent session without restart.
2026-04-10 18:45:06 +02:00
Levi Neely 6d79ec978a README: make workdir required in all session creation examples
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 09:28:56 +02:00
Levi Neely 9e817d3914 README: document workdir option and filesystem entry
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 09:06:46 +02:00
Levi Neely f100e5d689 p9: add workdir support to sessions
Sessions now accept workdir= at creation time:
  echo "new workdir=/home/lkn/src/myproject" > ctl

workdir is exposed as a r/w file in each session directory. Writing
to it updates the stored value (takes effect on next /agent switch,
since the execute server is constructed with the workdir at creation).

execute.Decl(workdir) and BuildAgentEnv(..., workdir) are wired
through so the sandbox and system prompt both use the correct path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 09:04:32 +02:00
Levi Neely e392531986 README: cd into session dir in example shell session
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 08:52:59 +02:00
Levi Neely d9a4ec3255 p9: introduce s/ session directory; use nanosecond session IDs
Sessions are now nested under s/ instead of the root, making it
straightforward to count active sessions and find newly created ones
by offset:

  n=$(ls s/ | wc -l)
  echo "new agent=foo" > ctl
  sid=$(ls s/ | sort | sed -n "$((n+1))p")

Session IDs are now Unix nanosecond timestamps (from ollie's updated
NewSessionID), so ls s/ | sort gives strict creation order. The s/
directory is a stable listing surface; ctl remains at the root for
control operations.

All path parsing updated throughout: pathType, readDir, makeStat,
handleWrite, readChat, readReply, readFile. README updated to match.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 08:51:07 +02:00
Levi Neely f97b9d355c Use ollie agent helpers and tool Decls; drop local duplicates
Replace local agentConfigPath, newSessionID, home paths with
agent.AgentConfigPath, agent.NewSessionID, agent.DefaultAgentsDir,
agent.DefaultSessionsDir. Replace dispatcher wiring with
tools.NewDispatcherFunc using execute.Decl and file.Decl.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 08:28:07 +02:00
Levi Neely 1158efffe3 update readme 2026-04-10 03:16:45 +02:00
Levi Neely c00129a488 Add spawn_subagents.py tool example to README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 03:12:59 +02:00
Levi Neely 5eb93f181b Add concurrent Go sub-agent example to README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 03:07:37 +02:00
Levi Neely 272e095bc5 Add Sub-Agents section to Multi-Agent Workflows
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 02:59:45 +02:00
Levi Neely a42a7b7624 Add Persistent Memory section referencing 9beads
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 02:40:58 +02:00
Levi Neely 6db891bbb1 Rename to Ideas; add self-generating workflows section
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 02:34:13 +02:00
Levi Neely a713760f27 Drop "orchestrator" — it's just a shell script
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 02:31:18 +02:00
Levi Neely 714975c4b2 Add design philosophy to README opening
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 02:28:56 +02:00
Levi Neely 87201b01b3 Reorganize Possible Applications into subheadings
Groups: Automation & Scripting, Tooling & Integration,
Network & Remote Access, Multi-Agent Workflows.
Folds Inter-Agent Communication into Multi-Agent Workflows.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 02:18:13 +02:00
Levi Neely 2c41e68696 Add reply file for agent chaining
reply holds only the clean assistant text from the most recently
completed turn. It is written atomically when Submit returns and cleared
(as a documented side-effect) when a new prompt is submitted. Stat
reports the real byte length and bumps Qid.Vers on each change, so
polling via stat size > 0 is the intended signal that a reply is ready.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 02:10:36 +02:00
Levi Neely c3bddf5942 Tighten Possible Applications wording
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 02:02:10 +02:00
Levi Neely 68f32d1e53 Fix inotify claim in README
inotifywait doesn't work through 9pfuse; replace with polling approach.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 01:56:34 +02:00
Levi Neely 67b67b040c Add Possible Applications section to README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 01:56:05 +02:00
Levi Neely 34e3119533 Switch new command to key=value options; add model option
"new" in root ctl now accepts optional key=value pairs in any order:
backend=<name>, model=<name>, agent=<name>. All are optional; omitting
any uses the default. Replaces the old positional backend/agent args.
Unknown keys and malformed entries are rejected with a clear error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 01:52:15 +02:00
Levi Neely 2d120f9bdf Update README with model endpoint
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 01:50:04 +02:00
Levi Neely 19fac99a3d Add model r/w endpoint to session
Exposes the active model name as a readable/writable file. Initialized
from be.Model() at session creation. Writes submit "/model <name>" via
the agent core and update modelName optimistically, rolling back on an
error event.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 01:49:20 +02:00
Levi Neely 194957daa2 Initial commit: olliesrv 9P server for ollie agent sessions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 01:46:48 +02:00