761
? { ...storedInputState, selectedModel: historyDerivedModel }
762
: undefined;
763
>
// At cold restore the agent-host transferred draft can drop the user's per-session picker
chatServiceImpl.ts
764
>
// selections (model/mode); restore them from the session's own saved `storedInputState`
765
>
// (mode, via {@link backfillRestoredPickerState}) and from the history-derived model
766
>
// (via {@link backfillTransferredModel}). The persisted draft already contains
767
>
// `historyDerivedModel`, so only a transferred draft needs this backfill.
768
>
const transferredInputState = providedSession.transferredState?.inputState;
769
>
const stateToApply = transferredInputState
770
? backfillTransferredModel(transferredInputState, historyDerivedModel)
771
: restoredDraft;
772
>
const inputState = backfillRestoredPickerState(stateToApply, storedInputState, ChatMode.Agent.id);
chatServiceImpl.ts
773
>
const modelRef = this._sessionModels.acquireOrCreate({
774
>
initialData,
775
>
location,
776
>
sessionResource: sessionResource,
777
>
canUseTools: false,
778
>
transferEditingSession: providedSession.transferredState?.editingSession,
779
>
inputState,
780
>
isReadOnly: providedSession.isReadOnly,
781
>
}, debugOwner ?? 'ChatService#loadRemoteSession');
782
>
783
>
logChangesToStateModel(modelRef.object.inputModel, `loadRemoteSession inputState source: session=${sessionResource.toString()}, chatSessionType=${chatSessionType}, historyModelId=${modelId}, agentUri=${agentUri?.toString()}, historySelectedModel=${historySelectedModel}, transferredSelectedModel=${providedSession.transferredState?.inputState?.selectedModel?.identifier}, storedSelectedModel=${storedInputState?.selectedModel?.identifier}, finalSelectedModel=${modelRef.object.inputModel.state.get()?.selectedModel?.identifier}, hasTransferredInputState=${!!providedSession.transferredState?.inputState}, hasStoredInputState=${!!storedInputState}, hasInitialData=${!!initialData}`, modelRef.object.inputModel.state.get(), undefined, this.logService);
784
>
785
>
// Restore permission level from metadata even when initialData was not constructed
786
>
// and no inputState carried it through.
787
>
if (storedPermissionLevel && !initialData && !storedInputState) {
788
modelRef.object.inputModel.setState({ permissionLevel: storedPermissionLevel });
789
}