MCPcopy Index your code
hub / github.com/Opencode-DCP/opencode-dynamic-context-pruning / buildSessionState

Function buildSessionState

lib/tui/data.ts:36–64  ·  view source on GitHub ↗
(
    sessionID: string,
    messages: WithParts[],
    config: PluginConfig,
)

Source from the content-addressed store, hash-verified

34}
35
36export async function buildSessionState(
37 sessionID: string,
38 messages: WithParts[],
39 config: PluginConfig,
40): Promise<SessionState> {
41 const state = createSessionState()
42 state.sessionId = sessionID
43 state.manualMode = config.manualMode.enabled ? "active" : false
44 state.lastCompaction = findLastCompactionTimestamp(messages)
45
46 const persisted = await loadSessionState(sessionID, logger)
47 if (persisted) {
48 if (typeof persisted.manualMode === "boolean") {
49 state.manualMode = persisted.manualMode ? "active" : false
50 }
51
52 state.prune.tools = loadPruneMap(persisted.prune.tools)
53 state.prune.messages = loadPruneMessagesState(persisted.prune.messages)
54 state.nudges.contextLimitAnchors = new Set(persisted.nudges.contextLimitAnchors || [])
55 state.nudges.turnNudgeAnchors = new Set(persisted.nudges.turnNudgeAnchors || [])
56 state.nudges.iterationNudgeAnchors = new Set(persisted.nudges.iterationNudgeAnchors || [])
57 state.stats = {
58 pruneTokenCounter: persisted.stats?.pruneTokenCounter || 0,
59 totalPruneTokens: persisted.stats?.totalPruneTokens || 0,
60 }
61 }
62
63 return state
64}
65
66export async function loadSessionData(api: TuiApi, config: PluginConfig) {
67 const sessionID = activeSessionID(api)

Callers 1

loadSessionDataFunction · 0.85

Calls 5

createSessionStateFunction · 0.90
loadSessionStateFunction · 0.90
loadPruneMapFunction · 0.90
loadPruneMessagesStateFunction · 0.90

Tested by

no test coverage detected