9p: use tools.Server directly, eliminate Dispatcher indirection
NewDispatcher factories replaced with direct server factories. Tests use nil server (no tools needed).
This commit is contained in:
parent
e88e0a6f4c
commit
72747b887d
14
main_test.go
14
main_test.go
|
|
@ -35,7 +35,7 @@ func newNoopCore(id string) *session.Session {
|
|||
NewBackend: func(name string) (backend.Backend, error) {
|
||||
return backend.NewNoop(name, "default"), nil
|
||||
},
|
||||
NewDispatcher: func() tools.Dispatcher { return tools.NewDispatcher() },
|
||||
NewToolServer: func() tools.Server { return nil },
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ func newBlockingCore(id string) *session.Session {
|
|||
NewBackend: func(name string) (backend.Backend, error) {
|
||||
return backend.NewNoop(name, "default"), nil
|
||||
},
|
||||
NewDispatcher: func() tools.Dispatcher { return tools.NewDispatcher() },
|
||||
NewToolServer: func() tools.Server { return nil },
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ func newContentCore(id, content string) *session.Session {
|
|||
NewBackend: func(name string) (backend.Backend, error) {
|
||||
return backend.NewNoop(name, "default"), nil
|
||||
},
|
||||
NewDispatcher: func() tools.Dispatcher { return tools.NewDispatcher() },
|
||||
NewToolServer: func() tools.Server { return nil },
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -128,7 +128,7 @@ func newTestSessionManagerWithCore(t *testing.T) *mgr.Manager {
|
|||
NewBackend: func(name string) (backend.Backend, error) {
|
||||
return backend.NewNoop(name, "default"), nil
|
||||
},
|
||||
NewDispatcher: func() tools.Dispatcher { return tools.NewDispatcher() },
|
||||
NewToolServer: func() tools.Server { return nil },
|
||||
}), nil
|
||||
},
|
||||
})
|
||||
|
|
@ -864,7 +864,7 @@ func TestSessionFileStoreMakePublishMultipleEvents(t *testing.T) {
|
|||
AgentName: "default",
|
||||
CWD: "/tmp",
|
||||
SessionID: "s1",
|
||||
NewDispatcher: func() tools.Dispatcher { return tools.NewDispatcher() },
|
||||
NewToolServer: func() tools.Server { return nil },
|
||||
})
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
|
@ -1160,7 +1160,7 @@ func TestSessionManagerCreateSessionEnvExpansion(t *testing.T) {
|
|||
AgentName: agentName,
|
||||
CWD: cwd,
|
||||
SessionID: sessionID,
|
||||
NewDispatcher: func() tools.Dispatcher { return tools.NewDispatcher() },
|
||||
NewToolServer: func() tools.Server { return nil },
|
||||
}), nil
|
||||
},
|
||||
})
|
||||
|
|
@ -1185,7 +1185,7 @@ func TestSessionManagerCreateSessionTildeExpansion(t *testing.T) {
|
|||
AgentName: agentName,
|
||||
CWD: cwd,
|
||||
SessionID: sessionID,
|
||||
NewDispatcher: func() tools.Dispatcher { return tools.NewDispatcher() },
|
||||
NewToolServer: func() tools.Server { return nil },
|
||||
}), nil
|
||||
},
|
||||
})
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ func (s *Manager) CreateSession(args []string) (string, error) {
|
|||
if s.cfg.SkillsRegistry != nil {
|
||||
execOpts = append(execOpts, execute.WithSkillsRegistry(s.cfg.SkillsRegistry))
|
||||
}
|
||||
var newDisp func() tools.Dispatcher
|
||||
var newToolServer func() tools.Server
|
||||
var remoteEnv []string // extra env vars from remote host info
|
||||
if remoteTarget != "" {
|
||||
// Dial eagerly so we get HostInfo for prompt resolution.
|
||||
|
|
@ -144,18 +144,14 @@ func (s *Manager) CreateSession(args []string) (string, error) {
|
|||
if dialErr != nil {
|
||||
return "", fmt.Errorf("remote dial: %w", dialErr)
|
||||
}
|
||||
newDisp = tools.NewDispatcherFunc(map[string]func() tools.Server{
|
||||
"execute": func() tools.Server { return rsrv },
|
||||
})
|
||||
newToolServer = func() tools.Server { return rsrv }
|
||||
remoteEnv = []string{
|
||||
"PRIME_CWD=" + cwd,
|
||||
"PRIME_PLATFORM=" + rsrv.Info.Platform,
|
||||
"PRIME_IS_GIT_REPO=" + fmt.Sprintf("%v", rsrv.Info.IsGitRepo),
|
||||
}
|
||||
} else {
|
||||
newDisp = tools.NewDispatcherFunc(map[string]func() tools.Server{
|
||||
"execute": execute.Decl(cwd, execOpts...),
|
||||
})
|
||||
newToolServer = execute.Decl(cwd, execOpts...)
|
||||
}
|
||||
|
||||
var promptEnv []string
|
||||
|
|
@ -197,8 +193,8 @@ func (s *Manager) CreateSession(args []string) (string, error) {
|
|||
}
|
||||
envBlock := prompts.Environment(cwd, platform, isGitRepo, "")
|
||||
|
||||
disp := newDisp()
|
||||
rt := agent.BuildRuntime(cfg, disp, cwd, env, sysPrompt, opModel, envBlock)
|
||||
toolSrv := newToolServer()
|
||||
rt := agent.BuildRuntime(cfg, toolSrv, cwd, env, sysPrompt, opModel, envBlock)
|
||||
|
||||
// sessPtr is set after NewSession; the ReadPlanStep closure captures it.
|
||||
core = session.New(session.Config{
|
||||
|
|
@ -211,7 +207,7 @@ func (s *Manager) CreateSession(args []string) (string, error) {
|
|||
CWD: cwd,
|
||||
Remote: remoteTarget,
|
||||
Runtime: rt,
|
||||
NewDispatcher: newDisp,
|
||||
NewToolServer: newToolServer,
|
||||
PromptEnvExtra: promptEnv,
|
||||
BaseLayers: []string{sysPrompt, opModel, envBlock},
|
||||
Log: s.cfg.Sink.NewLogger("core"),
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ func (s *Manager) restoreSession(ps *agent.PersistedAgent) error {
|
|||
}
|
||||
|
||||
uname := s.nextUname()
|
||||
var newDisp func() tools.Dispatcher
|
||||
var newToolServer func() tools.Server
|
||||
var promptEnv []string
|
||||
remoteTarget := ps.Remote
|
||||
|
||||
|
|
@ -144,9 +144,7 @@ func (s *Manager) restoreSession(ps *agent.PersistedAgent) error {
|
|||
if dialErr != nil {
|
||||
return fmt.Errorf("remote dial: %w", dialErr)
|
||||
}
|
||||
newDisp = tools.NewDispatcherFunc(map[string]func() tools.Server{
|
||||
"execute": func() tools.Server { return rsrv },
|
||||
})
|
||||
newToolServer = func() tools.Server { return rsrv }
|
||||
promptEnv = []string{
|
||||
"PRIME_CWD=" + cwd,
|
||||
"PRIME_PLATFORM=" + rsrv.Info.Platform,
|
||||
|
|
@ -168,9 +166,7 @@ func (s *Manager) restoreSession(ps *agent.PersistedAgent) error {
|
|||
if s.cfg.SkillsRegistry != nil {
|
||||
execOpts = append(execOpts, execute.WithSkillsRegistry(s.cfg.SkillsRegistry))
|
||||
}
|
||||
newDisp = tools.NewDispatcherFunc(map[string]func() tools.Server{
|
||||
"execute": execute.Decl(cwd, execOpts...),
|
||||
})
|
||||
newToolServer = execute.Decl(cwd, execOpts...)
|
||||
promptEnv = agent.PromptEnv(cwd)
|
||||
}
|
||||
|
||||
|
|
@ -204,8 +200,8 @@ func (s *Manager) restoreSession(ps *agent.PersistedAgent) error {
|
|||
}
|
||||
envBlock := prompts.Environment(cwd, platform, isGitRepo, "")
|
||||
|
||||
disp := newDisp()
|
||||
rt := agent.BuildRuntime(cfg, disp, cwd, env, sysPrompt, opModel, envBlock)
|
||||
toolSrv := newToolServer()
|
||||
rt := agent.BuildRuntime(cfg, toolSrv, cwd, env, sysPrompt, opModel, envBlock)
|
||||
|
||||
restoredSession := agent.RestoreHistory(ps)
|
||||
|
||||
|
|
@ -221,7 +217,7 @@ func (s *Manager) restoreSession(ps *agent.PersistedAgent) error {
|
|||
Remote: remoteTarget,
|
||||
History: restoredSession,
|
||||
Runtime: rt,
|
||||
NewDispatcher: newDisp,
|
||||
NewToolServer: newToolServer,
|
||||
PromptEnvExtra: promptEnv,
|
||||
BaseLayers: []string{sysPrompt, opModel, envBlock},
|
||||
Log: s.cfg.Sink.NewLogger("core"),
|
||||
|
|
|
|||
Reference in New Issue