MCPcopy Create free account
hub / github.com/Dimillian/CodexMonitor / useModels

Function useModels

src/features/models/hooks/useModels.ts:39–340  ·  view source on GitHub ↗
({
  activeWorkspace,
  onDebug,
  preferredModelId = null,
  preferredEffort = null,
  selectionKey = null,
}: UseModelsOptions)

Source from the content-addressed store, hash-verified

37 null;
38
39export function useModels({
40 activeWorkspace,
41 onDebug,
42 preferredModelId = null,
43 preferredEffort = null,
44 selectionKey = null,
45}: UseModelsOptions) {
46 const [models, setModels] = useState<ModelOption[]>([]);
47 const [configModel, setConfigModel] = useState<string | null>(null);
48 const [selectedModelId, setSelectedModelIdState] = useState<string | null>(null);
49 const [selectedEffort, setSelectedEffortState] = useState<string | null>(null);
50 const lastFetchedWorkspaceId = useRef<string | null>(null);
51 const inFlight = useRef(false);
52 const hasUserSelectedModel = useRef(false);
53 const hasUserSelectedEffort = useRef(false);
54 const lastWorkspaceId = useRef<string | null>(null);
55 const lastSelectionKey = useRef<string | null>(null);
56
57 const workspaceId = activeWorkspace?.id ?? null;
58 const isConnected = Boolean(activeWorkspace?.connected);
59
60 useEffect(() => {
61 if (selectionKey === lastSelectionKey.current) {
62 return;
63 }
64 lastSelectionKey.current = selectionKey;
65 hasUserSelectedModel.current = false;
66 hasUserSelectedEffort.current = false;
67 }, [selectionKey]);
68
69 useEffect(() => {
70 if (workspaceId === lastWorkspaceId.current) {
71 return;
72 }
73 hasUserSelectedModel.current = false;
74 hasUserSelectedEffort.current = false;
75 lastWorkspaceId.current = workspaceId;
76 setConfigModel(null);
77 }, [workspaceId]);
78
79 useEffect(() => {
80 if (selectedEffort === null) {
81 return;
82 }
83 if (selectedEffort.trim().length > 0) {
84 return;
85 }
86 hasUserSelectedEffort.current = false;
87 setSelectedEffortState(null);
88 }, [selectedEffort]);
89
90 const setSelectedModelId = useCallback((next: string | null) => {
91 hasUserSelectedModel.current = true;
92 setSelectedModelIdState(next);
93 }, []);
94
95 const setSelectedEffort = useCallback((next: string | null) => {
96 hasUserSelectedEffort.current = true;

Callers 2

MainAppFunction · 0.90
useModels.test.tsxFile · 0.90

Calls 6

normalizeEffortValueFunction · 0.90
getModelListFunction · 0.90
getConfigModelFunction · 0.90
parseModelListResponseFunction · 0.90
pickDefaultModelFunction · 0.85
findModelByIdOrModelFunction · 0.85

Tested by

no test coverage detected