(directory, client, sessionID)
| 864 | const info = message?.info || message; |
| 865 | const model = normalizedModelRef(info?.model) || normalizedModelRef(info); |
| 866 | if (!model) |
| 867 | continue; |
| 868 | const previous = getSessionExecutionContext(sessionID) || {}; |
| 869 | setSessionExecutionContext(sessionID, { ...previous, model }); |
| 870 | return model; |
| 871 | } |
| 872 | return; |
| 873 | } |
| 874 | async function compactSession(directory, client, sessionID, preferredModel) { |
| 875 | for (const command of ["session.compact", "session_compact"]) { |
| 876 | try { |
| 877 | await executeTuiCommand(client, command); |
| 878 | return true; |
| 879 | } catch (error) { |
| 880 | await log(client, "warn", `tui ${command} failed`, { error: sdkErrorMessage(error) }); |
| 881 | } |
| 882 | } |
| 883 | try { |
| 884 | if (!client?.session?.summarize) |
| 885 | throw new Error("client.session.summarize is not available"); |
| 886 | const model = await resolveCompactionModel(directory, client, sessionID, preferredModel); |
| 887 | if (!model) |
| 888 | throw new Error("could not resolve a provider/model for session.summarize"); |
| 889 | const body = { providerID: model.providerID, modelID: model.modelID, auto: false }; |
| 890 | await sdkCall(client.session.summarize.bind(client.session), { path: { id: sessionID }, body }, { path: { sessionID }, body }, { sessionID, ...body }); |
| 891 | return true; |
| 892 | } catch (error) { |
| 893 | await log(client, "warn", "session.summarize fallback failed", { error: sdkErrorMessage(error) }); |
no test coverage detected