9p: make /p createable, fix /p dir mode to 0755, update README

- Add /p to create handler (same pattern as /t and /sk)
- Use 0755 for /p directory (prompts aren't executable)
- Update README: sk/ is now r/w
This commit is contained in:
Levi Neely 2026-04-13 10:28:45 +02:00
parent 7b3e159ac0
commit 0586e94672
2 changed files with 11 additions and 4 deletions

View File

@ -24,8 +24,8 @@ ollie/
agent r/w: active agent name
model r/w: active model name
workdir r/w: working directory for tool execution and system prompt
sk/ dir: skills (r/o, from OLLIE_SKILLS_PATH or ~/.config/ollie/skills/)
<name>.md read: skill SKILL.md content
sk/ dir: skills (r/w, from OLLIE_SKILLS_PATH or ~/.config/ollie/skills/)
<name>.md r/w: skill SKILL.md content
t/ dir: tool scripts (r/w, backed by ~/.config/ollie/tools/)
<script> r/w: tool script content
```

View File

@ -337,7 +337,7 @@ func (s *Server) create(cs *connState, fc *plan9.Fcall) *plan9.Fcall {
if !ok {
return errFcall(fc, "bad fid")
}
if f.path != "/sk" && f.path != "/t" {
if f.path != "/p" && f.path != "/sk" && f.path != "/t" {
return errFcall(fc, "create not supported")
}
@ -346,6 +346,11 @@ func (s *Server) create(cs *connState, fc *plan9.Fcall) *plan9.Fcall {
// Actually create the file on disk so that even a no-write create
// (e.g. touch) produces a real file.
switch f.path {
case "/p":
os.MkdirAll(s.promptsDir, 0755) //nolint:errcheck
if err := os.WriteFile(s.promptsDir+"/"+fc.Name, nil, 0644); err != nil {
return errFcall(fc, err.Error())
}
case "/t":
dir := execute.ToolsPath()
os.MkdirAll(dir, 0755) //nolint:errcheck
@ -943,7 +948,7 @@ func (s *Server) readDir(path string, offset uint64, count uint32) []byte {
if path == "/" {
dirs = append(dirs, makeDir("ctl", "/ctl", false, 0200))
dirs = append(dirs, makeDir("p", "/p", true, plan9.DMDIR|0555))
dirs = append(dirs, makeDir("p", "/p", true, plan9.DMDIR|0755))
dirs = append(dirs, makeDir("s", "/s", true, plan9.DMDIR|0555))
dirs = append(dirs, makeDir("sk", "/sk", true, plan9.DMDIR|0555))
dirs = append(dirs, makeDir("t", "/t", true, plan9.DMDIR|0777))
@ -1049,6 +1054,8 @@ func (s *Server) makeStat(path string) plan9.Dir {
qid.Type = QTDir
if path == "/t" {
mode = plan9.DMDIR | 0777
} else if path == "/p" {
mode = plan9.DMDIR | 0755
} else {
mode = plan9.DMDIR | 0555
}