chore: 清空 v2 实现,重建新架构骨架(人格化通用 Agent 运行时)

This commit is contained in:
Aska committed 2026-09-05 23:09:26 +08:00
1 parent 9c8d5a9e8d
commit 4be3826af7
151 files changed
+3 -19760

No files matched your search

-27
View File
@@ -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' })
},
}))
-53
View File
@@ -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: [] }),
}))
-58
View File
@@ -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 })
}
})
}