返回 DeepSeek-Reasonix
session_artifact_removal.go
根目录 / desktop / session_artifact_removal.go
1 package main
2
3 import (
4 "fmt"
5 "os"
6 "path/filepath"
7 "strings"
8
9 "reasonix/internal/agent"
10 )
11
12 func removeDesktopSessionArtifactsWithGuard(path string, guard *agent.SessionRemovalGuard) error {
13 if strings.TrimSpace(path) == "" {
14 return nil
15 }
16 if guard == nil {
17 return fmt.Errorf("session removal guard is required")
18 }
19 defer guard.Release()
20 if err := invalidateTopicDirMarkers(filepath.Dir(path)); err != nil {
21 return err
22 }
23 defer invalidateTopicSessionIndexForPath(path)
24 for _, artifact := range sessionOwnedArtifactPaths(path) {
25 if strings.TrimSpace(artifact) == "" {
26 continue
27 }
28 if err := os.RemoveAll(artifact); err != nil && !os.IsNotExist(err) {
29 return err
30 }
31 }
32 if err := guard.RemoveSidecarsAndRelease(); err != nil {
33 return err
34 }
35 if err := removeSessionDisplay(filepath.Dir(path), path); err != nil {
36 return err
37 }
38 if err := removeSessionPlannerDisplay(filepath.Dir(path), path); err != nil {
39 return err
40 }
41 if err := agent.DeleteSubagentsByParent(filepath.Dir(path), agent.BranchID(path)); err != nil {
42 return err
43 }
44 return agent.ClearCleanupPending(path)
45 }
46
46 lines GO