p9: wire elevation.Detect() into execute server; remove session env injection

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Levi Neely 2026-04-18 20:06:48 +02:00
parent 9b747e011b
commit 8b233c295e
4 changed files with 9 additions and 26 deletions

View File

@ -269,9 +269,9 @@ func (s *BatchStore) executeJob(ctx context.Context, job *batchJob) (string, err
cfg, _ := config.Load(cfgPath)
newDisp := tools.NewDispatcherFunc(map[string]func() tools.Server{
"execute": execute.Decl(cwd),
"execute": execute.Decl(cwd, nil),
})
env := agent.BuildAgentEnv(cfg, newDisp(), cwd, nil)
env := agent.BuildAgentEnv(cfg, newDisp(), cwd)
core := agent.NewAgentCore(agent.AgentCoreConfig{
Backend: be,

View File

@ -47,6 +47,7 @@ import (
"ollie/pkg/agent"
"ollie/pkg/backend"
"ollie/pkg/config"
"ollie/pkg/elevation"
olog "ollie/pkg/log"
"ollie/pkg/paths"
"ollie/pkg/tools"
@ -101,6 +102,7 @@ type connState struct {
// Server is the 9P server for ollie sessions.
type Server struct {
elevator elevation.Elevator
mu sync.RWMutex
sessions map[string]*session
conns []*connState
@ -129,6 +131,7 @@ func New() *Server {
os.MkdirAll(tmpDir, 0755) //nolint:errcheck
agentsDir := agent.DefaultAgentsDir()
s := &Server{
elevator: elevation.Detect(),
sessions: make(map[string]*session),
agentsDir: agentsDir,
sessionsDir: agent.DefaultSessionsDir(),
@ -1106,8 +1109,6 @@ func (s *Server) createSession(args []string) error {
modelOverride := ""
agentName := "default"
cwd := ""
sessionEnv := map[string]string{}
for _, arg := range args {
k, v, ok := strings.Cut(arg, "=")
if !ok {
@ -1116,10 +1117,6 @@ func (s *Server) createSession(args []string) error {
if v == "" {
continue
}
if envName, isEnv := strings.CutPrefix(k, "env."); isEnv {
sessionEnv[envName] = v
continue
}
switch k {
case "name":
name = v
@ -1132,7 +1129,7 @@ func (s *Server) createSession(args []string) error {
case "cwd":
cwd = v
default:
return fmt.Errorf("unknown option %q (valid: name, backend, model, agent, cwd, env.<NAME>)", k)
return fmt.Errorf("unknown option %q (valid: name, backend, model, agent, cwd)", k)
}
}
@ -1168,7 +1165,7 @@ func (s *Server) createSession(args []string) error {
cfg, _ := config.Load(cfgPath) // nil cfg is handled by BuildAgentEnv
newDisp := tools.NewDispatcherFunc(map[string]func() tools.Server{
"execute": execute.Decl(cwd),
"execute": execute.Decl(cwd, s.elevator),
})
sessID := name
@ -1183,7 +1180,7 @@ func (s *Server) createSession(args []string) error {
return fmt.Errorf("session already exists: %s", sessID)
}
env := agent.BuildAgentEnv(cfg, newDisp(), cwd, sessionEnv)
env := agent.BuildAgentEnv(cfg, newDisp(), cwd)
ctx, cancel := context.WithCancel(context.Background())
core := agent.NewAgentCore(agent.AgentCoreConfig{
@ -1196,10 +1193,6 @@ func (s *Server) createSession(args []string) error {
Env: env,
NewDispatcher: newDisp,
})
for k, v := range sessionEnv {
core.SetEnv(k, v)
}
sess := &session{
id: sessID,
core: core,

View File

@ -33,7 +33,6 @@ var sessionFileList = []struct {
{"mcp", 0444},
{"systemprompt", 0444},
{"params", 0666},
{"env", 0200},
}
// SessionFileStore implements ReadWriteStore for the files within a single
@ -153,15 +152,6 @@ func (s *SessionFileStore) Put(name string, data []byte) error {
}
return s.sess.core.SetGenerationParams(params)
case "env":
for _, line := range strings.Split(string(data), "\n") {
k, v, ok := strings.Cut(strings.TrimSpace(line), "=")
if !ok || k == "" {
continue
}
s.sess.core.SetEnv(k, v)
}
}
return nil
}

View File

@ -58,7 +58,7 @@ func (s *SessionStore) Stat(name string) (os.FileInfo, error) {
func (s *SessionStore) Get(name string) ([]byte, error) {
switch name {
case "new":
return []byte("name=\ncwd=\nbackend=\nmodel=\nagent=\nenv.NAME=\n"), nil
return []byte("name=\ncwd=\nbackend=\nmodel=\nagent=\n"), nil
case "idx":
return s.index(), nil
default: