feat: Implement core chat functionality with LM Studio integration and theme management.
This commit is contained in:
1 parent
93df87d7e9
commit
0297db110a
13 files changed
+670
-451
No files matched your search
+15
-8
@@ -1,4 +1,5 @@
|
||||
import { useCallback, useRef } from 'react';
|
||||
import { SYSTEM_PROMPT } from '../constants/SystemPrompt';
|
||||
import * as api from '../services/lmStudioApi';
|
||||
import { ChatMessage as ApiMessage } from '../services/types';
|
||||
import { useAppStore } from '../store/useAppStore';
|
||||
@@ -48,10 +49,13 @@ export function useLMStudio() {
|
||||
addMessage({ role: 'user', content: text });
|
||||
|
||||
const currentMessages = useAppStore.getState().messages;
|
||||
const apiMessages: ApiMessage[] = currentMessages.map((m) => ({
|
||||
role: m.role,
|
||||
content: m.content,
|
||||
}));
|
||||
const apiMessages: ApiMessage[] = [
|
||||
{ role: 'system', content: SYSTEM_PROMPT },
|
||||
...currentMessages.map((m) => ({
|
||||
role: m.role,
|
||||
content: m.content,
|
||||
}))
|
||||
];
|
||||
|
||||
const modelId = useAppStore.getState().activeModelId;
|
||||
if (!modelId) {
|
||||
@@ -112,10 +116,13 @@ export function useLMStudio() {
|
||||
|
||||
// Build API messages from remaining
|
||||
const remaining = useAppStore.getState().messages;
|
||||
const apiMessages: ApiMessage[] = remaining.map((m) => ({
|
||||
role: m.role,
|
||||
content: m.content,
|
||||
}));
|
||||
const apiMessages: ApiMessage[] = [
|
||||
{ role: 'system', content: SYSTEM_PROMPT },
|
||||
...remaining.map((m) => ({
|
||||
role: m.role,
|
||||
content: m.content,
|
||||
}))
|
||||
];
|
||||
|
||||
const modelId = useAppStore.getState().activeModelId;
|
||||
if (!modelId) return;
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
import { Colors } from '@/constants/Colors';
|
||||
import { useColorScheme } from '@/hooks/useColorScheme';
|
||||
import { useAppStore } from '@/store/useAppStore';
|
||||
|
||||
type ThemeType = 'light' | 'dark';
|
||||
type ColorObj = typeof Colors.light & typeof Colors.dark;
|
||||
|
||||
// Overloads para resolver o erro TSC
|
||||
export function useThemeColor(props: { light?: string; dark?: string }, colorName: keyof ColorObj): string;
|
||||
export function useThemeColor(): ColorObj;
|
||||
export function useThemeColor(
|
||||
props?: { light?: string; dark?: string },
|
||||
colorName?: keyof ColorObj
|
||||
): string | ColorObj {
|
||||
const themePreference = useAppStore((state) => state.theme);
|
||||
const systemColorScheme = useColorScheme() ?? 'light';
|
||||
|
||||
const theme: ThemeType = themePreference === 'system'
|
||||
? systemColorScheme
|
||||
: (themePreference as ThemeType);
|
||||
|
||||
if (props && props[theme]) {
|
||||
return props[theme] as string;
|
||||
}
|
||||
|
||||
if (colorName) {
|
||||
return Colors[theme][colorName];
|
||||
}
|
||||
|
||||
return Colors[theme];
|
||||
}
|
||||
Reference in new issue
Block a user