chore: 清空 v2 实现,重建新架构骨架(人格化通用 Agent 运行时)
This commit is contained in:
1 parent
9c8d5a9e8d
commit
4be3826af7
151 files changed
+3
-19760
No files matched your search
@@ -1,27 +0,0 @@
|
||||
import { create } from 'zustand'
|
||||
import { api, setToken, getToken } from '../api/client'
|
||||
|
||||
interface AuthState {
|
||||
isLoggedIn: boolean
|
||||
username: string
|
||||
role: string
|
||||
login: (username: string, password: string) => Promise<void>
|
||||
logout: () => void
|
||||
}
|
||||
|
||||
export const useAuthStore = create<AuthState>((set) => ({
|
||||
isLoggedIn: !!getToken(),
|
||||
username: '',
|
||||
role: 'user',
|
||||
|
||||
login: async (username: string, password: string) => {
|
||||
const { token } = await api.login(username, password)
|
||||
setToken(token)
|
||||
set({ isLoggedIn: true, username, role: 'admin' })
|
||||
},
|
||||
|
||||
logout: () => {
|
||||
setToken(null)
|
||||
set({ isLoggedIn: false, username: '', role: 'user' })
|
||||
},
|
||||
}))
|
||||
@@ -1,53 +0,0 @@
|
||||
import { create } from 'zustand'
|
||||
import type { Message, IotDevice } from '../types/chat'
|
||||
|
||||
interface MoodState {
|
||||
mood: string
|
||||
intensity: number
|
||||
affection: number
|
||||
}
|
||||
|
||||
interface ChatState {
|
||||
messages: Message[]
|
||||
isStreaming: boolean
|
||||
currentSessionId: string | null
|
||||
iotDevices: IotDevice[]
|
||||
inputText: string
|
||||
mood: MoodState | null
|
||||
|
||||
setInput: (text: string) => void
|
||||
setSessionId: (id: string) => void
|
||||
setMessages: (msgs: Message[]) => void
|
||||
setMood: (m: MoodState) => void
|
||||
addMessage: (msg: Message) => void
|
||||
appendToLast: (content: string) => void
|
||||
setStreaming: (v: boolean) => void
|
||||
setIotDevices: (d: IotDevice[]) => void
|
||||
clearMessages: () => void
|
||||
}
|
||||
|
||||
export const useChatStore = create<ChatState>((set, get) => ({
|
||||
messages: [],
|
||||
isStreaming: false,
|
||||
currentSessionId: null,
|
||||
iotDevices: [],
|
||||
inputText: '',
|
||||
mood: null,
|
||||
|
||||
setInput: (text) => set({ inputText: text }),
|
||||
setSessionId: (id) => set({ currentSessionId: id }),
|
||||
setMessages: (msgs) => set({ messages: msgs }),
|
||||
setMood: (m) => set({ mood: m }),
|
||||
setStreaming: (v) => set({ isStreaming: v }),
|
||||
setIotDevices: (d) => set({ iotDevices: d }),
|
||||
|
||||
addMessage: (msg) => set((s) => ({ messages: [...s.messages, msg] })),
|
||||
appendToLast: (content) => {
|
||||
const msgs = [...get().messages]
|
||||
if (msgs.length > 0) {
|
||||
msgs[msgs.length - 1] = { ...msgs[msgs.length - 1], content: msgs[msgs.length - 1].content + content }
|
||||
}
|
||||
set({ messages: msgs })
|
||||
},
|
||||
clearMessages: () => set({ messages: [] }),
|
||||
}))
|
||||
@@ -1,58 +0,0 @@
|
||||
import { create } from 'zustand'
|
||||
|
||||
type Theme = 'light' | 'dark'
|
||||
|
||||
function getSystemTheme(): Theme {
|
||||
if (typeof window === 'undefined') return 'light'
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
||||
}
|
||||
|
||||
function getStoredTheme(): Theme | null {
|
||||
try {
|
||||
const stored = localStorage.getItem('cyrene_theme')
|
||||
if (stored === 'light' || stored === 'dark') return stored
|
||||
} catch {}
|
||||
return null
|
||||
}
|
||||
|
||||
interface ThemeState {
|
||||
theme: Theme
|
||||
setTheme: (t: Theme) => void
|
||||
toggle: () => void
|
||||
}
|
||||
|
||||
export const useThemeStore = create<ThemeState>((set, get) => ({
|
||||
theme: getStoredTheme() || 'light',
|
||||
|
||||
setTheme: (t: Theme) => {
|
||||
document.documentElement.setAttribute('data-theme', t)
|
||||
localStorage.setItem('cyrene_theme', t)
|
||||
set({ theme: t })
|
||||
},
|
||||
|
||||
toggle: () => {
|
||||
const next = get().theme === 'dark' ? 'light' : 'dark'
|
||||
get().setTheme(next)
|
||||
},
|
||||
}))
|
||||
|
||||
// Initialize theme on app start
|
||||
if (typeof document !== 'undefined') {
|
||||
const stored = getStoredTheme()
|
||||
if (stored) {
|
||||
document.documentElement.setAttribute('data-theme', stored)
|
||||
} else {
|
||||
// Follow system preference
|
||||
const sys = getSystemTheme()
|
||||
document.documentElement.setAttribute('data-theme', sys)
|
||||
}
|
||||
|
||||
// Listen for system theme changes
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
|
||||
if (!getStoredTheme()) {
|
||||
const sys = e.matches ? 'dark' : 'light'
|
||||
document.documentElement.setAttribute('data-theme', sys)
|
||||
useThemeStore.setState({ theme: sys })
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user