MCPcopy Create free account
hub / github.com/GongShichen/LuminaCode / SaveStateWithRecovery

Method SaveStateWithRecovery

session/store.go:92–133  ·  view source on GitHub ↗
(sessionID string, state *agent.AgentState, recovery map[string]any, tasks []map[string]any)

Source from the content-addressed store, hash-verified

90 }
91 }
92 return messages
93}
94
95func (s *Store) SaveStateWithRecovery(sessionID string, state *agent.AgentState, recovery map[string]any, tasks []map[string]any) error {
96 if state == nil {
97 return nil
98 }
99 s.migrateLegacySession(sessionID)
100 generation := newGenerationID()
101 stateMap := orderedAgentStateSnapshot(state)
102 recoveryPayload := newOrderedJSONMap()
103 recoveryPayload.Set("version", 1)
104 recoveryPayload.Set("generation", generation)
105 recoveryPayload.Set("agent_scopes", map[string]any{})
106 setOrderedMapValues(recoveryPayload, recovery)
107 recoveryPayload.Set("generation", generation)
108
109 statePayload := newOrderedJSONMap()
110 statePayload.Set("generation", generation)
111 statePayload.Set("state", stateMap)
112 if err := atomicWriteJSON(s.statePath(sessionID), statePayload); err != nil {
113 return err
114 }
115 if err := atomicWriteJSON(s.skillRecoveryPath(sessionID), recoveryPayload); err != nil {
116 return err
117 }
118 if tasks == nil {
119 tasks = []map[string]any{}
120 }
121 taskPayload := newOrderedJSONMap()
122 taskPayload.Set("version", 1)
123 taskPayload.Set("generation", generation)
124 taskPayload.Set("tasks", tasks)
125 if err := atomicWriteJSON(s.taskRuntimePath(sessionID), taskPayload); err != nil {
126 return err
127 }
128 commitPayload := newOrderedJSONMap()
129 commitPayload.Set("generation", generation)
130 commitPayload.Set("version", 1)
131 if err := atomicWriteJSON(s.skillRecoveryCommitPath(sessionID), commitPayload); err != nil {
132 return err
133 }
134 _, err := s.upsertMeta(sessionID, len(state.Messages), state.TurnCount, nil)
135 return err
136}

Calls 12

migrateLegacySessionMethod · 0.95
statePathMethod · 0.95
skillRecoveryPathMethod · 0.95
taskRuntimePathMethod · 0.95
upsertMetaMethod · 0.95
newGenerationIDFunction · 0.85
setOrderedMapValuesFunction · 0.85
atomicWriteJSONFunction · 0.85
newOrderedJSONMapFunction · 0.70
SetMethod · 0.45