MCPcopy
hub / github.com/Narcooo/inkos / pickModelSelection

Function pickModelSelection

packages/studio/src/pages/chat-page-state.ts:64–105  ·  view source on GitHub ↗
(
  groupedModels: ReadonlyArray<ChatPageModelGroup>,
  selectedModel: string | null,
  selectedService: string | null,
  preference?: ChatPageModelPreference | null,
)

Source from the content-addressed store, hash-verified

62}
63
64export function pickModelSelection(
65 groupedModels: ReadonlyArray<ChatPageModelGroup>,
66 selectedModel: string | null,
67 selectedService: string | null,
68 preference?: ChatPageModelPreference | null,
69): { model: string; service: string } | null {
70 const selectedStillAvailable = selectedModel && selectedService
71 ? groupedModels.some((group) =>
72 group.service === selectedService
73 && group.models.some((model) => model.id === selectedModel),
74 )
75 : false;
76 if (selectedStillAvailable) return null;
77
78 const preferredService = preference?.service?.trim();
79 const preferredModel = preference?.model?.trim();
80 if (preferredService) {
81 const preferredGroup = groupedModels.find((group) => group.service === preferredService);
82 const exactModel = preferredModel
83 ? preferredGroup?.models.find((model) => model.id === preferredModel)
84 : undefined;
85 if (preferredGroup && exactModel) {
86 return { model: exactModel.id, service: preferredGroup.service };
87 }
88 const firstPreferredModel = preferredGroup?.models[0];
89 if (preferredGroup && firstPreferredModel) {
90 return { model: firstPreferredModel.id, service: preferredGroup.service };
91 }
92 }
93
94 if (preferredModel) {
95 for (const group of groupedModels) {
96 const exactModel = group.models.find((model) => model.id === preferredModel);
97 if (exactModel) return { model: exactModel.id, service: group.service };
98 }
99 }
100
101 const firstGroup = groupedModels.find((group) => group.models.length > 0);
102 const firstModel = firstGroup?.models[0];
103 if (!firstGroup || !firstModel) return null;
104 return { model: firstModel.id, service: firstGroup.service };
105}
106
107export function pickProjectChatSessionId(
108 sessions: ReadonlyArray<ChatPageSessionSummary>,

Callers 2

ChatPageFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected