@@ -18,6 +18,7 @@ import {
1818 type ModelAliasIndex ,
1919 type ModelDirectiveSelection ,
2020} from "./model-selection-directive.js" ;
21+ import type { ReplySessionEntryHandle } from "./session-entry-handle.js" ;
2122
2223/** Result of applying a reset-message model override. */
2324type ResetModelResult = {
@@ -109,12 +110,14 @@ function buildSelectionFromExplicit(params: {
109110function applySelectionToSession ( params : {
110111 selection : ModelDirectiveSelection ;
111112 sessionEntry ?: SessionEntry ;
113+ sessionEntryHandle ?: ReplySessionEntryHandle ;
112114 sessionStore ?: Record < string , SessionEntry > ;
113115 sessionKey ?: string ;
114116 storePath ?: string ;
115117} ) {
116- const { selection, sessionEntry, sessionStore, sessionKey, storePath } = params ;
117- if ( ! sessionEntry || ! sessionStore || ! sessionKey ) {
118+ const { selection, sessionEntryHandle, sessionStore, sessionKey, storePath } = params ;
119+ const sessionEntry = sessionEntryHandle ?. getCurrent ( ) ?? params . sessionEntry ;
120+ if ( ! sessionEntry || ! sessionKey ) {
118121 return ;
119122 }
120123 const { updated } = applyModelOverrideToSessionEntry ( {
@@ -124,7 +127,11 @@ function applySelectionToSession(params: {
124127 if ( ! updated ) {
125128 return ;
126129 }
127- sessionStore [ sessionKey ] = sessionEntry ;
130+ if ( sessionEntryHandle ) {
131+ sessionEntryHandle . replaceCurrent ( sessionEntry ) ;
132+ } else if ( sessionStore ) {
133+ sessionStore [ sessionKey ] = sessionEntry ;
134+ }
128135 if ( storePath ) {
129136 void import ( "../../config/sessions/session-accessor.js" )
130137 . then ( ( { replaceSessionEntry } ) =>
@@ -146,6 +153,7 @@ export async function applyResetModelOverride(params: {
146153 sessionCtx : TemplateContext ;
147154 ctx : MsgContext ;
148155 sessionEntry ?: SessionEntry ;
156+ sessionEntryHandle ?: ReplySessionEntryHandle ;
149157 sessionStore ?: Record < string , SessionEntry > ;
150158 sessionKey ?: string ;
151159 storePath ?: string ;
@@ -248,6 +256,7 @@ export async function applyResetModelOverride(params: {
248256 applySelectionToSession ( {
249257 selection,
250258 sessionEntry : params . sessionEntry ,
259+ sessionEntryHandle : params . sessionEntryHandle ,
251260 sessionStore : params . sessionStore ,
252261 sessionKey : params . sessionKey ,
253262 storePath : params . storePath ,
0 commit comments