feat(session,llm): restore session runtime on resume; align Responses API details
This commit is contained in:
@@ -68,11 +68,29 @@ func (m *Manager) Resume(id string) error {
|
||||
return err
|
||||
}
|
||||
m.currentSession = sess
|
||||
m.restoreRuntime(sess)
|
||||
m.agent.SetMessages(sess.Messages)
|
||||
m.agent.SetLastUsage(sess.LastUsage)
|
||||
return nil
|
||||
}
|
||||
|
||||
// restoreRuntime switches the manager and agent back to the provider, model,
|
||||
// and thinking level recorded on a resumed session. Values that are no longer
|
||||
// valid for the current config are skipped and the defaults remain active.
|
||||
func (m *Manager) restoreRuntime(sess *Session) {
|
||||
if sess.Provider != "" && sess.Provider != m.providerName {
|
||||
if _, ok := m.cfg.Providers[sess.Provider]; ok {
|
||||
_, _ = m.SetProvider(sess.Provider)
|
||||
}
|
||||
}
|
||||
if sess.Model != "" && sess.Model != m.provider.Model {
|
||||
_, _ = m.SetModel(sess.Model)
|
||||
}
|
||||
if sess.Thinking != "" && sess.Thinking != m.provider.Thinking {
|
||||
_, _ = m.SetThinking(sess.Thinking)
|
||||
}
|
||||
}
|
||||
|
||||
// Save persists the current session to disk.
|
||||
func (m *Manager) Save() error {
|
||||
if m.store == nil || m.currentSession == nil {
|
||||
@@ -82,6 +100,8 @@ func (m *Manager) Save() error {
|
||||
m.currentSession.LastUsage = m.agent.LastUsage()
|
||||
m.currentSession.Provider = m.providerName
|
||||
m.currentSession.Model = m.provider.Model
|
||||
m.currentSession.APIType = m.provider.APIType
|
||||
m.currentSession.Thinking = m.provider.Thinking
|
||||
// Auto-name if empty
|
||||
if m.currentSession.Name == "" {
|
||||
m.currentSession.Name = DefaultName(m.currentSession.Messages)
|
||||
@@ -150,6 +170,8 @@ func (m *Manager) NewSession() (string, error) {
|
||||
m.currentSession.Messages = msgs
|
||||
m.currentSession.Provider = m.providerName
|
||||
m.currentSession.Model = m.provider.Model
|
||||
m.currentSession.APIType = m.provider.APIType
|
||||
m.currentSession.Thinking = m.provider.Thinking
|
||||
if m.currentSession.Name == "" {
|
||||
m.currentSession.Name = DefaultName(msgs)
|
||||
}
|
||||
@@ -257,7 +279,7 @@ func (m *Manager) SetThinking(level string) (string, error) {
|
||||
m.provider.Thinking = level
|
||||
m.provider.ThinkingConfigured = true
|
||||
if m.provider.ThinkingParam == "" {
|
||||
m.provider.ThinkingParam = "thinking"
|
||||
m.provider.ThinkingParam = config.DefaultThinkingParam(m.provider.APIType)
|
||||
}
|
||||
m.cfg.Providers[m.providerName] = m.provider
|
||||
m.syncAgent(nil)
|
||||
|
||||
Reference in New Issue
Block a user