返回 DeepSeek-Reasonix
session_service.go
根目录 / internal / cli / session_service.go
1 package cli
2
3 import (
4 "sync"
5
6 "reasonix/internal/session"
7 )
8
9 // cliSessionServices is the process host registry shared by chat, run, serve,
10 // and ACP. Boot receives an existing service and never opens a second writer
11 // registry for the same root.
12 var cliSessionServices = struct {
13 sync.Mutex
14 byRoot map[string]*session.Service
15 }{byRoot: map[string]*session.Service{}}
16
17 func cliSessionService(sessionDir string) *session.Service {
18 root := session.RootForLegacyDir(sessionDir)
19 if root == "" {
20 return nil
21 }
22 cliSessionServices.Lock()
23 defer cliSessionServices.Unlock()
24 if service := cliSessionServices.byRoot[root]; service != nil {
25 return service
26 }
27 service, err := session.NewService("local", session.NewFilesystemPersistence(root))
28 if err != nil {
29 return nil
30 }
31 cliSessionServices.byRoot[root] = service
32 return service
33 }
34
34 lines GO