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:
parent
9b747e011b
commit
8b233c295e
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Reference in New Issue