(
sessionID: string,
messages: WithParts[],
config: PluginConfig,
)
| 34 | } |
| 35 | |
| 36 | export 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 | |
| 66 | export async function loadSessionData(api: TuiApi, config: PluginConfig) { |
| 67 | const sessionID = activeSessionID(api) |
no test coverage detected