feat: MetonaAI Desktop 初始项目
- Electron + React + TypeScript 架构 - 三栏布局: Sidebar | ChatPanel | DetailPanel - 9 个内置工具 (文件系统/网络/记忆/命令) - SQLite 持久化 (better-sqlite3) - MUI 暗色/亮色主题系统 - Agent Loop ReAct 状态机引擎 - DeepSeek / Agnes AI / Ollama Provider 适配器 - MCP 协议集成 - 系统托盘 + 全局快捷键 - Tailwind CSS v4 + Tailwind Merge - 修复: Sidebar 缺失 TextField 导入导致黑屏
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
/**
|
||||
* 常量定义
|
||||
*
|
||||
* 快捷键映射、状态颜色、消息类型等全局常量。
|
||||
*/
|
||||
|
||||
// ===== 布局尺寸 =====
|
||||
|
||||
export const LAYOUT = {
|
||||
HEADER_HEIGHT: 40,
|
||||
STATUS_BAR_HEIGHT: 24,
|
||||
SIDEBAR_WIDTH: 260,
|
||||
DETAIL_WIDTH: 320,
|
||||
CHAT_MAX_WIDTH: 768,
|
||||
} as const;
|
||||
|
||||
// ===== Agent 状态颜色 =====
|
||||
|
||||
export const AGENT_STATUS_COLORS = {
|
||||
idle: 'var(--green)',
|
||||
thinking: 'var(--amber)',
|
||||
executing: 'var(--purple)',
|
||||
error: 'var(--red)',
|
||||
} as const;
|
||||
|
||||
export const AGENT_STATUS_LABELS = {
|
||||
idle: 'Agent Ready',
|
||||
thinking: '思考中...',
|
||||
executing: '执行中...',
|
||||
error: '错误',
|
||||
} as const;
|
||||
|
||||
// ===== Trace 步骤状态 =====
|
||||
|
||||
export const TRACE_STATE_COLORS: Record<string, string> = {
|
||||
INIT: 'var(--cyan)',
|
||||
THINKING: 'var(--amber)',
|
||||
PARSING: 'var(--orange)',
|
||||
EXECUTING: 'var(--purple)',
|
||||
OBSERVING: 'var(--cyan)',
|
||||
REFLECTING: 'var(--purple)',
|
||||
COMPRESSING: 'var(--amber)',
|
||||
TERMINATED: 'var(--green)',
|
||||
};
|
||||
|
||||
export const TRACE_STATE_LABELS: Record<string, string> = {
|
||||
INIT: '初始化',
|
||||
THINKING: '思考',
|
||||
PARSING: '解析',
|
||||
EXECUTING: '执行',
|
||||
OBSERVING: '观察',
|
||||
REFLECTING: '反思',
|
||||
COMPRESSING: '压缩',
|
||||
TERMINATED: '终止',
|
||||
};
|
||||
|
||||
// ===== 工具调用状态 =====
|
||||
|
||||
export const TOOL_CALL_STATUS_COLORS = {
|
||||
pending: 'var(--amber)',
|
||||
executing: 'var(--purple)',
|
||||
success: 'var(--green)',
|
||||
error: 'var(--red)',
|
||||
blocked: 'var(--orange)',
|
||||
} as const;
|
||||
|
||||
// ===== 快捷键定义 =====
|
||||
|
||||
export const SHORTCUTS = {
|
||||
NEW_SESSION: { key: 'n', ctrl: true },
|
||||
QUICK_SEARCH: { key: 'k', ctrl: true },
|
||||
SEND_MESSAGE: { key: 'Enter', ctrl: true },
|
||||
NEW_LINE: { key: 'Enter', ctrl: true, shift: true },
|
||||
ABORT: { key: '.', ctrl: true },
|
||||
FOCUS_MODE: { key: 'f', ctrl: true, shift: true },
|
||||
TOGGLE_SIDEBAR: { key: 'b', ctrl: true },
|
||||
TOGGLE_DETAIL: { key: 'j', ctrl: true },
|
||||
OPEN_SETTINGS: { key: ',', ctrl: true },
|
||||
PREV_SESSION: { key: '[', ctrl: true },
|
||||
NEXT_SESSION: { key: ']', ctrl: true },
|
||||
CLOSE_POPUP: { key: 'Escape' },
|
||||
FOCUS_INPUT: { key: 'l', ctrl: true },
|
||||
COPY_LAST_REPLY: { key: 'c', ctrl: true, shift: true },
|
||||
TOGGLE_THEME: { key: 'd', ctrl: true },
|
||||
} as const;
|
||||
|
||||
// ===== Provider 信息 =====
|
||||
|
||||
export const PROVIDER_LABELS: Record<string, string> = {
|
||||
deepseek: 'DeepSeek',
|
||||
agnes: 'Agnes AI',
|
||||
ollama: 'Ollama',
|
||||
};
|
||||
Reference in New Issue
Block a user