diff --git a/internal/p9/batchstore.go b/internal/p9/batchstore.go index 247477b..aca1baf 100644 --- a/internal/p9/batchstore.go +++ b/internal/p9/batchstore.go @@ -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, diff --git a/internal/p9/server.go b/internal/p9/server.go index 62da3cd..7ce2d2e 100644 --- a/internal/p9/server.go +++ b/internal/p9/server.go @@ -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.)", 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, diff --git a/internal/p9/sessionfilestore.go b/internal/p9/sessionfilestore.go index 7377e42..de57789 100644 --- a/internal/p9/sessionfilestore.go +++ b/internal/p9/sessionfilestore.go @@ -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 } diff --git a/internal/p9/sessionstore.go b/internal/p9/sessionstore.go index 4de988d..6233fc8 100644 --- a/internal/p9/sessionstore.go +++ b/internal/p9/sessionstore.go @@ -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: