diff --git a/session/session.go b/session/session.go index 423a0c9..e51d9ff 100644 --- a/session/session.go +++ b/session/session.go @@ -846,7 +846,35 @@ func (s *Manager) restoreSession(ps *agent.PersistedSession) error { env := []string{"OLLIE_SESSION_ID=" + sessID, "OLLIE_UNAME=" + uname, "OLLIE=" + MountPathFor(uname)} env = append(env, promptEnv...) - rt := agent.BuildRuntime(cfg, newDisp(), cwd, env) + + // Compute base layers (same as new-session path). + var spOverride string + if cfg != nil { + spOverride = cfg.SystemPrompt + } + sysPrompt := prompts.ResolveSystemPrompt(spOverride) + envMap := make(map[string]string) + for _, e := range env { + if k, v, ok := strings.Cut(e, "="); ok { + envMap[k] = v + } + } + opModel := prompts.OperationalModel(s.cfg.Enable9P, s.cfg.EnableDBus, envMap) + platform := "linux" + isGitRepo := false + for _, e := range promptEnv { + if k, v, ok := strings.Cut(e, "="); ok { + switch k { + case "PRIME_PLATFORM": + platform = v + case "PRIME_IS_GIT_REPO": + isGitRepo = v == "true" + } + } + } + envBlock := prompts.Environment(cwd, platform, isGitRepo, "") + + rt := agent.BuildRuntime(cfg, newDisp(), cwd, env, sysPrompt, opModel, envBlock) restoredSession := agent.RestoreSession(ps.Messages) if ps.TaskState != nil { @@ -867,6 +895,7 @@ func (s *Manager) restoreSession(ps *agent.PersistedSession) error { Runtime: rt, NewDispatcher: newDisp, PromptEnvExtra: promptEnv, + BaseLayers: []string{sysPrompt, opModel, envBlock}, Log: s.cfg.Sink.NewLogger("core"), ReadPlanStep: func() string { if sessPtr == nil { @@ -1168,6 +1197,7 @@ func (s *Manager) CreateSession(args []string) (string, error) { Runtime: rt, NewDispatcher: newDisp, PromptEnvExtra: promptEnv, + BaseLayers: []string{sysPrompt, opModel, envBlock}, Log: s.cfg.Sink.NewLogger("core"), ReadPlanStep: func() string { if sessPtr == nil {