| 1027 | } |
| 1028 | |
| 1029 | function restoreFromMessages(messages: readonly MessageInfo[]) { |
| 1030 | const user = messages.findLast( |
| 1031 | (message) => message.role === "user" && message.model?.providerID && message.model.modelID, |
| 1032 | ) |
| 1033 | if (user?.model?.providerID && user.model.modelID) { |
| 1034 | return { |
| 1035 | model: { providerID: user.model.providerID as ProviderV2.ID, modelID: user.model.modelID as ModelV2.ID }, |
| 1036 | variant: user.model.variant, |
| 1037 | modeId: user.agent, |
| 1038 | } |
| 1039 | } |
| 1040 | |
| 1041 | const assistant = messages.findLast((message) => message.providerID && message.modelID) |
| 1042 | if (assistant?.providerID && assistant.modelID) { |
| 1043 | return { |
| 1044 | model: { providerID: assistant.providerID as ProviderV2.ID, modelID: assistant.modelID as ModelV2.ID }, |
| 1045 | variant: assistant.variant, |
| 1046 | modeId: assistant.mode ?? assistant.agent, |
| 1047 | } |
| 1048 | } |
| 1049 | |
| 1050 | return {} |
| 1051 | } |
| 1052 | |
| 1053 | function isSdkResponse<T>(value: T | SdkResponse<T>): value is SdkResponse<T> { |
| 1054 | return typeof value === "object" && value !== null && ("data" in value || "error" in value) |