MCPcopy Create free account
hub / github.com/diillson/chatcli / LoadSessionV2

Method LoadSessionV2

cli/session_manager.go:164–195  ·  view source on GitHub ↗

LoadSessionV2 carrega uma sessão completa com suporte a formato v2 e legacy.

(name string)

Source from the content-addressed store, hash-verified

162
163// LoadSessionV2 carrega uma sessão completa com suporte a formato v2 e legacy.
164func (sm *SessionManager) LoadSessionV2(name string) (*SessionData, error) {
165 filePath := sm.getSessionPath(name)
166 if _, err := os.Stat(filePath); os.IsNotExist(err) {
167 return nil, fmt.Errorf("sessão '%s' não encontrada", name)
168 }
169
170 data, err := os.ReadFile(filePath) //#nosec G304 -- path supplied by user/agent through validated tool surface (boundary check upstream)
171 if err != nil {
172 sm.logger.Error("Erro ao ler o arquivo da sessão", zap.String("path", filePath), zap.Error(err))
173 return nil, fmt.Errorf("erro ao ler o arquivo da sessão: %w", err)
174 }
175
176 // Try v2 format first
177 var sd SessionData
178 if err := json.Unmarshal(data, &sd); err == nil && sd.Version >= 2 {
179 sm.logger.Info("Sessão v2 carregada com sucesso", zap.String("session", name))
180 return &sd, nil
181 }
182
183 // Fallback: legacy format (plain []models.Message)
184 var legacy []models.Message
185 if err := json.Unmarshal(data, &legacy); err != nil {
186 sm.logger.Error("Erro ao desserializar a sessão", zap.String("session", name), zap.Error(err))
187 return nil, fmt.Errorf("arquivo de sessão corrompido: %w", err)
188 }
189
190 sm.logger.Info("Sessão legacy carregada com sucesso (migrada para v2)", zap.String("session", name))
191 return &SessionData{
192 Version: 2,
193 ChatHistory: legacy,
194 }, nil
195}
196
197// ListSessions lista todas as sessões salvas.
198func (sm *SessionManager) ListSessions() ([]string, error) {

Callers 3

LoadSessionMethod · 0.95
SearchSessionsMethod · 0.95
ForkSessionMethod · 0.95

Calls 5

getSessionPathMethod · 0.95
ErrorfMethod · 0.80
ErrorMethod · 0.65
InfoMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected