Files
automaker/apps/ui/src/hooks/use-cursor-status-init.ts
Kacper 39f2c8c9ff feat(ui): Enhance AI model handling with Cursor support
- Refactor model handling to support both Claude and Cursor models across various components.
- Introduce `stripProviderPrefix` utility for consistent model ID processing.
- Update `CursorProvider` to utilize `isCursorModel` for model validation.
- Implement model override functionality in GitHub issue validation and enhancement routes.
- Add `useCursorStatusInit` hook to initialize Cursor CLI status on app startup.
- Update UI components to reflect changes in model selection and validation processes.

This update improves the flexibility of AI model usage and enhances user experience by allowing quick model overrides.
2025-12-30 04:01:56 +01:00

47 lines
1.4 KiB
TypeScript

import { useEffect, useRef } from 'react';
import { useSetupStore } from '@/store/setup-store';
import { getHttpApiClient } from '@/lib/http-api-client';
/**
* Hook to initialize Cursor CLI status on app startup.
* This ensures the cursorCliStatus is available in the setup store
* before the user opens feature dialogs.
*/
export function useCursorStatusInit() {
const { setCursorCliStatus, cursorCliStatus } = useSetupStore();
const initialized = useRef(false);
useEffect(() => {
// Only initialize once per session
if (initialized.current || cursorCliStatus !== null) {
return;
}
initialized.current = true;
const initCursorStatus = async () => {
try {
const api = getHttpApiClient();
const statusResult = await api.setup.getCursorStatus();
if (statusResult.success) {
setCursorCliStatus({
installed: statusResult.installed ?? false,
version: statusResult.version ?? undefined,
auth: statusResult.auth?.authenticated
? {
authenticated: true,
method: statusResult.auth.method || 'unknown',
}
: undefined,
});
}
} catch (error) {
// Silently fail - cursor is optional
console.debug('[CursorStatusInit] Failed to check cursor status:', error);
}
};
initCursorStatus();
}, [setCursorCliStatus, cursorCliStatus]);
}