MCPcopy Create free account
hub / github.com/tiann/hapi / mergeAgentState

Method mergeAgentState

hub/src/sync/sessionCache.ts:891–912  ·  view source on GitHub ↗
(oldState: unknown | null, newState: unknown | null)

Source from the content-addressed store, hash-verified

889 }
890
891 private mergeAgentState(oldState: unknown | null, newState: unknown | null): unknown | null {
892 if (oldState === null) return newState
893 if (newState === null) return oldState
894
895 const oldObj = oldState as Record<string, unknown>
896 const newObj = newState as Record<string, unknown>
897
898 const completedRequests = {
899 ...((oldObj.completedRequests as Record<string, unknown> | undefined) ?? {}),
900 ...((newObj.completedRequests as Record<string, unknown> | undefined) ?? {})
901 }
902 // Filter out requests that are already completed to avoid resurrecting them as pending
903 const completedIds = new Set(Object.keys(completedRequests))
904 const requests = Object.fromEntries(
905 Object.entries({
906 ...((oldObj.requests as Record<string, unknown> | undefined) ?? {}),
907 ...((newObj.requests as Record<string, unknown> | undefined) ?? {})
908 }).filter(([id]) => !completedIds.has(id))
909 )
910
911 return { ...oldObj, ...newObj, requests, completedRequests }
912 }
913
914 private extractAgentSessionId(
915 metadata: NonNullable<Session['metadata']>

Callers 1

mergeSessionDataMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected