tianxincode 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/filesystem.routes.js +13 -4
- package/dist/api/filesystem.routes.js.map +1 -1
- package/dist/components/App.backup.d.ts +34 -0
- package/dist/components/App.backup.d.ts.map +1 -0
- package/dist/components/App.backup.js +692 -0
- package/dist/components/App.backup.js.map +1 -0
- package/dist/components/App.d.ts +33 -24
- package/dist/components/App.d.ts.map +1 -1
- package/dist/components/App.js +182 -718
- package/dist/components/App.js.map +1 -1
- package/dist/components/FileSelector.d.ts +47 -0
- package/dist/components/FileSelector.d.ts.map +1 -0
- package/dist/components/FileSelector.js +40 -0
- package/dist/components/FileSelector.js.map +1 -0
- package/dist/components/Header.d.ts +3 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +17 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/InputArea.d.ts +50 -0
- package/dist/components/InputArea.d.ts.map +1 -0
- package/dist/components/InputArea.js +52 -0
- package/dist/components/InputArea.js.map +1 -0
- package/dist/components/MainContent.d.ts +11 -0
- package/dist/components/MainContent.d.ts.map +1 -0
- package/dist/components/MainContent.js +118 -0
- package/dist/components/MainContent.js.map +1 -0
- package/dist/components/MessageList.d.ts +11 -0
- package/dist/components/MessageList.d.ts.map +1 -0
- package/dist/components/MessageList.js +129 -0
- package/dist/components/MessageList.js.map +1 -0
- package/dist/components/ModelSelector.d.ts +42 -0
- package/dist/components/ModelSelector.d.ts.map +1 -0
- package/dist/components/ModelSelector.js +36 -0
- package/dist/components/ModelSelector.js.map +1 -0
- package/dist/components/StatusBar.d.ts +14 -0
- package/dist/components/StatusBar.d.ts.map +1 -0
- package/dist/components/StatusBar.js +21 -0
- package/dist/components/StatusBar.js.map +1 -0
- package/dist/components/hooks/useChat.d.ts +69 -0
- package/dist/components/hooks/useChat.d.ts.map +1 -0
- package/dist/components/hooks/useChat.js +270 -0
- package/dist/components/hooks/useChat.js.map +1 -0
- package/dist/components/hooks/useFileSelect.d.ts +58 -0
- package/dist/components/hooks/useFileSelect.d.ts.map +1 -0
- package/dist/components/hooks/useFileSelect.js +182 -0
- package/dist/components/hooks/useFileSelect.js.map +1 -0
- package/dist/components/hooks/useModelSelect.d.ts +54 -0
- package/dist/components/hooks/useModelSelect.d.ts.map +1 -0
- package/dist/components/hooks/useModelSelect.js +137 -0
- package/dist/components/hooks/useModelSelect.js.map +1 -0
- package/dist/components/useInputHandler.d.ts +33 -0
- package/dist/components/useInputHandler.d.ts.map +1 -0
- package/dist/components/useInputHandler.js +130 -0
- package/dist/components/useInputHandler.js.map +1 -0
- package/dist/hooks/useAlternateBuffer.d.ts +14 -0
- package/dist/hooks/useAlternateBuffer.d.ts.map +1 -0
- package/dist/hooks/useAlternateBuffer.js +20 -0
- package/dist/hooks/useAlternateBuffer.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
- package/scripts/ink-scroll-demo.tsx +147 -0
- package/web/dist/assets/{AiLogsView-D_SQ6qo4.js → AiLogsView-3J-YAusV.js} +1 -1
- package/web/dist/assets/{DevWorkflowView-C5VnPngb.css → DevWorkflowView-BRvigFN5.css} +1 -1
- package/web/dist/assets/{DevWorkflowView-iHAv9LC0.js → DevWorkflowView-DMCpylwg.js} +5 -5
- package/web/dist/assets/{Layout-CQhbIJxB.js → Layout-B905ASbH.js} +1 -1
- package/web/dist/assets/{TasksView-B9B2H3-S.js → TasksView-CCzwoCHn.js} +1 -1
- package/web/dist/assets/{TerminalView-BKhdi5UF.js → TerminalView-CxtZwfd-.js} +1 -1
- package/web/dist/assets/{cssMode-C_gwipb0.js → cssMode-tUnhOlEq.js} +1 -1
- package/web/dist/assets/{freemarker2-WCA_pR0J.js → freemarker2-BkGxlHtf.js} +1 -1
- package/web/dist/assets/{handlebars-fzVGzXHj.js → handlebars-BCSYP3By.js} +1 -1
- package/web/dist/assets/{html-C4Rga6DD.js → html-D_GMhfaP.js} +1 -1
- package/web/dist/assets/{htmlMode-BvrJ57rW.js → htmlMode-DDgBAK4r.js} +1 -1
- package/web/dist/assets/{index-9RP8PAfk.js → index-CUPB0bCv.js} +13 -13
- package/web/dist/assets/{javascript-cXKyuP98.js → javascript-CGc1uqdW.js} +1 -1
- package/web/dist/assets/{jsonMode-Q4CMzwiX.js → jsonMode-Ce0FYmxJ.js} +1 -1
- package/web/dist/assets/{liquid-CrbU0gmK.js → liquid-BwNgZkfv.js} +1 -1
- package/web/dist/assets/{mdx-D72Dcs66.js → mdx-CF1JkZ9f.js} +1 -1
- package/web/dist/assets/{python-DPqkZ_Xm.js → python-CXnk0DYj.js} +1 -1
- package/web/dist/assets/{razor-DknXaqXN.js → razor-CWGzlt3Z.js} +1 -1
- package/web/dist/assets/{tsMode-DZAV3Wgo.js → tsMode-CXhn7HXH.js} +1 -1
- package/web/dist/assets/{typescript-DenKTmW3.js → typescript-DF01mLhp.js} +1 -1
- package/web/dist/assets/{xml-C_uqJta0.js → xml-ZLfViiJc.js} +1 -1
- package/web/dist/assets/{yaml-vwb3U7d7.js → yaml-CV_nX5Yg.js} +1 -1
- package/web/dist/index.html +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tianxincode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AI Coding Assistant",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"build": "tsc && npm run copy-txt",
|
|
13
13
|
"copy-txt": "node -e \"const fs=require('fs');const path=require('path');const providerSrc='src/modules/tools/provider';const providerDst='dist/modules/tools/provider';fs.readdirSync(providerSrc).filter(f=>f.endsWith('.txt')).forEach(f=>{fs.mkdirSync(providerDst,{recursive:true});fs.copyFileSync(path.join(providerSrc,f),path.join(providerDst,f))});const skillSrc='src/modules/skill';const skillDst='dist/modules/skill';fs.mkdirSync(skillDst,{recursive:true});fs.copyFileSync(path.join(skillSrc,'skill.txt'),path.join(skillDst,'skill.txt'));const providerPromptSrc='src/modules/ai/provider/openai/prompt';const providerPromptDst='dist/modules/ai/provider/openai/prompt';fs.mkdirSync(providerPromptDst,{recursive:true});fs.copyFileSync(path.join(providerPromptSrc,'role.txt'),path.join(providerPromptDst,'role.txt'));const agents=['code','chat','task'];agents.forEach(agent=>{const src='src/modules/ai/agents/'+agent+'/prompts';const dst='dist/modules/ai/agents/'+agent+'/prompts';fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(path.join(src,'role.txt'),path.join(dst,'role.txt'))});console.log('Copied .txt files to dist')\"",
|
|
14
14
|
"dev": "tsx src/index.ts",
|
|
15
|
+
"demo:ink-scroll": "tsx scripts/ink-scroll-demo.tsx",
|
|
15
16
|
"start": "node dist/index.js",
|
|
16
17
|
"start:web": "node dist/index.js web",
|
|
17
18
|
"web:dev": "cd web && npm run dev",
|
|
@@ -31,13 +32,14 @@
|
|
|
31
32
|
"cors": "^2.8.6",
|
|
32
33
|
"dingtalk-stream-sdk-nodejs": "^2.0.4",
|
|
33
34
|
"express": "^5.2.1",
|
|
34
|
-
"ink": "^
|
|
35
|
+
"ink": "^6.8.0",
|
|
35
36
|
"js-yaml": "^4.1.1",
|
|
36
37
|
"node-cron": "^4.2.1",
|
|
37
38
|
"node-pty": "^1.0.0",
|
|
38
39
|
"nodemailer": "^8.0.4",
|
|
39
40
|
"openai": "^5.5.1",
|
|
40
|
-
"react": "^
|
|
41
|
+
"react": "^19.2.4",
|
|
42
|
+
"react-dom": "^19.2.4",
|
|
41
43
|
"sql.js": "^1.12.0",
|
|
42
44
|
"uuid": "^9.0.1",
|
|
43
45
|
"which": "^6.0.1",
|
|
@@ -52,8 +54,8 @@
|
|
|
52
54
|
"@types/js-yaml": "^4.0.9",
|
|
53
55
|
"@types/node": "^25.5.0",
|
|
54
56
|
"@types/node-cron": "^3.0.11",
|
|
55
|
-
"@types/react": "^
|
|
56
|
-
"@types/react-dom": "^
|
|
57
|
+
"@types/react": "^19.2.14",
|
|
58
|
+
"@types/react-dom": "^19.2.3",
|
|
57
59
|
"@types/sql.js": "^1.4.9",
|
|
58
60
|
"@types/uuid": "^10.0.0",
|
|
59
61
|
"@types/which": "^3.0.4",
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Ink Static 模式 demo:上 Logo / 中历史消息(Static) / 下输入框
|
|
4
|
+
*
|
|
5
|
+
* - 历史消息使用 Ink 的 Static 渲染。
|
|
6
|
+
* - 回车:输入追加到历史区(Static 仅新增这一条)。
|
|
7
|
+
* - q / Esc:退出
|
|
8
|
+
*
|
|
9
|
+
* 运行:npm run demo:ink-scroll
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import React, { useEffect, useState } from 'react';
|
|
13
|
+
import { Box, Static, Text, render, useApp, useInput, useStdout } from 'ink';
|
|
14
|
+
|
|
15
|
+
const LOGO_LINES = 6;
|
|
16
|
+
const FOOTER_LINES = 3;
|
|
17
|
+
|
|
18
|
+
interface HistoryItem {
|
|
19
|
+
id: string;
|
|
20
|
+
text: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function InkScrollDemoApp() {
|
|
24
|
+
const { exit } = useApp();
|
|
25
|
+
const { stdout } = useStdout();
|
|
26
|
+
|
|
27
|
+
const [terminalSize, setTerminalSize] = useState(() => ({
|
|
28
|
+
rows: stdout.rows || 24,
|
|
29
|
+
cols: stdout.columns || 80,
|
|
30
|
+
}));
|
|
31
|
+
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
const onResize = () => {
|
|
34
|
+
setTerminalSize({
|
|
35
|
+
rows: stdout.rows || 24,
|
|
36
|
+
cols: stdout.columns || 80,
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
stdout.on('resize', onResize);
|
|
40
|
+
return () => {
|
|
41
|
+
stdout.off('resize', onResize);
|
|
42
|
+
};
|
|
43
|
+
}, [stdout]);
|
|
44
|
+
|
|
45
|
+
const terminalRows = terminalSize.rows;
|
|
46
|
+
const terminalCols = terminalSize.cols;
|
|
47
|
+
const historyViewportLines = 30;
|
|
48
|
+
|
|
49
|
+
const [history, setHistory] = useState<HistoryItem[]>(() => [
|
|
50
|
+
{ id: 'boot-1', text: '欢迎使用 Static demo:回车会把输入追加到历史。' },
|
|
51
|
+
{ id: 'boot-2', text: '你可以持续输入,观察输入框更新时历史不重绘。' },
|
|
52
|
+
]);
|
|
53
|
+
const logoStaticItems: HistoryItem[] = [
|
|
54
|
+
{ id: 'logo-1', text: '╔══════════════════════════════════╗' },
|
|
55
|
+
{ id: 'logo-2', text: '║ INK LAYOUT DEMO ║' },
|
|
56
|
+
{ id: 'logo-3', text: '║ Logo / History / Input ║' },
|
|
57
|
+
{ id: 'logo-4', text: '╚══════════════════════════════════╝' },
|
|
58
|
+
];
|
|
59
|
+
const [input, setInput] = useState('');
|
|
60
|
+
const [cursorPosition, setCursorPosition] = useState(0);
|
|
61
|
+
|
|
62
|
+
useInput((chunk, key) => {
|
|
63
|
+
const text = typeof chunk === 'string' ? chunk : '';
|
|
64
|
+
const keyAny = key as { leftArrow?: boolean; rightArrow?: boolean };
|
|
65
|
+
|
|
66
|
+
if (key.escape || (text === 'q' && !key.ctrl && !key.meta)) {
|
|
67
|
+
exit();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (key.return) {
|
|
72
|
+
const line = input.trim();
|
|
73
|
+
if (line) {
|
|
74
|
+
const id = `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
75
|
+
setHistory(prev => [...prev, { id, text: line }]);
|
|
76
|
+
}
|
|
77
|
+
setInput('');
|
|
78
|
+
setCursorPosition(0);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (key.backspace || key.delete) {
|
|
83
|
+
if (cursorPosition > 0) {
|
|
84
|
+
const next = input.slice(0, cursorPosition - 1) + input.slice(cursorPosition);
|
|
85
|
+
setInput(next);
|
|
86
|
+
setCursorPosition(c => c - 1);
|
|
87
|
+
}
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (keyAny.leftArrow) {
|
|
92
|
+
setCursorPosition(c => Math.max(0, c - 1));
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (keyAny.rightArrow) {
|
|
96
|
+
setCursorPosition(c => Math.min(input.length, c + 1));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (text && !key.ctrl && !key.meta) {
|
|
101
|
+
const next = input.slice(0, cursorPosition) + text + input.slice(cursorPosition);
|
|
102
|
+
setInput(next);
|
|
103
|
+
setCursorPosition(cursorPosition + text.length);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
return (
|
|
108
|
+
<Box flexDirection="column" width={terminalCols} height={5}>
|
|
109
|
+
{/* 顶部 Logo */}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
{/* 中间历史(Static) */}
|
|
113
|
+
<Box flexDirection="column" flexGrow={1} minHeight={0}>
|
|
114
|
+
<Static items={logoStaticItems}>
|
|
115
|
+
{item => (
|
|
116
|
+
<Text key={item.id} bold color="cyan">
|
|
117
|
+
{item.text}
|
|
118
|
+
</Text>
|
|
119
|
+
)}
|
|
120
|
+
</Static>
|
|
121
|
+
<Static items={history}>
|
|
122
|
+
{(item, index) => (
|
|
123
|
+
<Text key={item.id}>
|
|
124
|
+
<Text dimColor>{String(index + 1).padStart(3, ' ')}. </Text>
|
|
125
|
+
<Text>{item.text}</Text>
|
|
126
|
+
</Text>
|
|
127
|
+
)}
|
|
128
|
+
</Static>
|
|
129
|
+
</Box>
|
|
130
|
+
|
|
131
|
+
{/* 底部输入框 */}
|
|
132
|
+
<Box flexDirection="column" flexShrink={0} marginTop={0}>
|
|
133
|
+
<Box borderStyle="single" borderColor="gray" paddingX={1}>
|
|
134
|
+
<Text dimColor>{'> '}</Text>
|
|
135
|
+
<Text>{input.slice(0, cursorPosition)}</Text>
|
|
136
|
+
<Text color="cyan">▋</Text>
|
|
137
|
+
<Text>{input.slice(cursorPosition)}</Text>
|
|
138
|
+
</Box>
|
|
139
|
+
<Text dimColor>
|
|
140
|
+
Static 历史模式 | 回车追加历史 | q / Esc 退出
|
|
141
|
+
</Text>
|
|
142
|
+
</Box>
|
|
143
|
+
</Box>
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
render(<InkScrollDemoApp />);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as x,a as n}from"./index-
|
|
1
|
+
import{n as x,a as n}from"./index-CUPB0bCv.js";const c=[{key:"ai_call_logs",name:"AI 日志",icon:"fa-solid fa-robot text-xs"}],p={name:"AiLogsView",data(){return{logTypes:c,selectedLogType:c[0],logs:[],page:1,pageSize:20,total:0,totalPages:1,sessions:[],loading:!1,filters:{callType:"",sessionId:"",startTime:"",endTime:""}}},async created(){await this.loadSessions(),await this.loadLogs()},methods:{async loadSessions(){try{const s=await n.getSessions(100,0);this.sessions=s.data||[]}catch(s){console.error("Load sessions failed:",s)}},selectLogType(s){this.selectedLogType=s,this.resetFilters()},async loadLogs(){this.loading=!0;try{const s=await n.getAiCallLogs(this.page,this.pageSize);let t=s.data.rows||[];if(this.filters.callType&&(t=t.filter(e=>e.call_type===this.filters.callType)),this.filters.sessionId&&(t=t.filter(e=>e.session_id&&e.session_id.includes(this.filters.sessionId))),this.filters.startTime){const e=new Date(this.filters.startTime).getTime();t=t.filter(l=>new Date(l.request_time).getTime()>=e)}if(this.filters.endTime){const e=new Date(this.filters.endTime).getTime();t=t.filter(l=>new Date(l.request_time).getTime()<=e)}this.logs=t,this.total=s.data.total,this.totalPages=s.data.totalPages}catch(s){console.error("Load logs failed:",s),this.logs=[]}finally{this.loading=!1}},resetFilters(){this.filters.callType="",this.filters.sessionId="",this.filters.startTime="",this.filters.endTime="",this.page=1,this.loadLogs()},async prevPage(){this.page>1&&(this.page--,await this.loadLogs())},async nextPage(){this.page<this.totalPages&&(this.page++,await this.loadLogs())},formatTime(s){return s?new Date(s).toLocaleString("zh-CN"):"-"},getSessionTitle(s){if(!s)return"-";const t=this.sessions.find(e=>e.id===s);return t?t.title:s.substring(0,8)},formatDuration(s){return s?s<1e3?`${s}ms`:`${(s/1e3).toFixed(2)}s`:"0ms"}}};var b=function(){var l,d;var t=this,e=t._self._c;return e("div",{staticClass:"flex-1 flex overflow-hidden"},[e("aside",{staticClass:"w-[260px] bg-sidebar border-r border-border flex flex-col shrink-0"},[t._m(0),e("div",{staticClass:"flex-1 overflow-y-auto py-1"},t._l(t.logTypes,function(a){var i;return e("div",{key:a.key,staticClass:"flex items-center gap-2 px-3 py-1.5 cursor-pointer text-sm",class:((i=t.selectedLogType)==null?void 0:i.key)===a.key?"bg-active text-white border-l-2 border-accent":"text-textMuted hover:text-white hover:bg-white/5 border-l-2 border-transparent",on:{click:function(r){return t.selectLogType(a)}}},[e("i",{class:a.icon}),e("span",{staticClass:"truncate"},[t._v(t._s(a.name))])])}),0)]),e("main",{staticClass:"flex-1 flex flex-col min-w-0 bg-[#1e1e1e]"},[e("div",{staticClass:"px-4 py-3 border-b border-border bg-sidebar"},[e("div",{staticClass:"flex items-center gap-4 mb-3"},[e("div",{staticClass:"flex items-center gap-2"},[e("i",{class:(l=t.selectedLogType)==null?void 0:l.icon}),e("span",{staticClass:"text-white font-medium"},[t._v(t._s((d=t.selectedLogType)==null?void 0:d.name))])]),e("span",{staticClass:"text-xs text-textMuted"},[t._v(t._s(t.total)+" 条记录")])]),e("div",{staticClass:"flex items-center gap-4 flex-wrap"},[e("div",{staticClass:"flex items-center gap-2"},[e("label",{staticClass:"text-xs text-textMuted"},[t._v("调用类型:")]),e("select",{directives:[{name:"model",rawName:"v-model",value:t.filters.callType,expression:"filters.callType"}],staticClass:"bg-black/20 border border-white/10 text-white text-xs px-2 py-1 rounded",on:{change:[function(a){var i=Array.prototype.filter.call(a.target.options,function(r){return r.selected}).map(function(r){var o="_value"in r?r._value:r.value;return o});t.$set(t.filters,"callType",a.target.multiple?i:i[0])},t.loadLogs]}},[e("option",{attrs:{value:""}},[t._v("全部")]),e("option",{attrs:{value:"tool_call"}},[t._v("工具调用")]),e("option",{attrs:{value:"normal"}},[t._v("普通对话")])])]),e("div",{staticClass:"flex items-center gap-2"},[e("label",{staticClass:"text-xs text-textMuted"},[t._v("会话:")]),e("select",{directives:[{name:"model",rawName:"v-model",value:t.filters.sessionId,expression:"filters.sessionId"}],staticClass:"bg-black/20 border border-white/10 text-white text-xs px-2 py-1 rounded",on:{change:[function(a){var i=Array.prototype.filter.call(a.target.options,function(r){return r.selected}).map(function(r){var o="_value"in r?r._value:r.value;return o});t.$set(t.filters,"sessionId",a.target.multiple?i:i[0])},t.loadLogs]}},[e("option",{attrs:{value:""}},[t._v("全部会话")]),t._l(t.sessions,function(a){return e("option",{key:a.id,domProps:{value:a.id}},[t._v(t._s(a.title))])})],2)]),e("div",{staticClass:"flex items-center gap-2"},[e("label",{staticClass:"text-xs text-textMuted"},[t._v("开始时间:")]),e("input",{directives:[{name:"model",rawName:"v-model",value:t.filters.startTime,expression:"filters.startTime"}],staticClass:"bg-black/20 border border-white/10 text-white text-xs px-2 py-1 rounded",attrs:{type:"datetime-local"},domProps:{value:t.filters.startTime},on:{change:t.loadLogs,input:function(a){a.target.composing||t.$set(t.filters,"startTime",a.target.value)}}})]),e("div",{staticClass:"flex items-center gap-2"},[e("label",{staticClass:"text-xs text-textMuted"},[t._v("结束时间:")]),e("input",{directives:[{name:"model",rawName:"v-model",value:t.filters.endTime,expression:"filters.endTime"}],staticClass:"bg-black/20 border border-white/10 text-white text-xs px-2 py-1 rounded",attrs:{type:"datetime-local"},domProps:{value:t.filters.endTime},on:{change:t.loadLogs,input:function(a){a.target.composing||t.$set(t.filters,"endTime",a.target.value)}}})]),e("button",{staticClass:"px-3 py-1 bg-accent text-white text-xs rounded hover:bg-accent/80",on:{click:t.loadLogs}},[t._v(" 查询 ")]),e("button",{staticClass:"px-3 py-1 text-textMuted text-xs rounded hover:bg-white/10",on:{click:t.resetFilters}},[t._v(" 重置 ")])])]),e("div",{staticClass:"flex-1 overflow-auto p-4"},[e("table",{staticClass:"w-full text-sm"},[t._m(1),e("tbody",[t._l(t.logs,function(a){return e("tr",{key:a.id,staticClass:"hover:bg-white/5"},[e("td",{staticClass:"px-3 py-2 text-gray-300 border-b border-border/30"},[t._v(t._s(a.id))]),e("td",{staticClass:"px-3 py-2 text-gray-300 border-b border-border/30"},[t._v(t._s(t.formatTime(a.request_time)))]),e("td",{staticClass:"px-3 py-2 border-b border-border/30"},[e("span",{staticClass:"text-xs px-2 py-0.5 rounded",class:a.call_type==="tool_call"?"bg-blue-500/20 text-blue-400":"bg-green-500/20 text-green-400"},[t._v(" "+t._s(a.call_type==="tool_call"?"工具调用":"普通对话")+" ")])]),e("td",{staticClass:"px-3 py-2 text-gray-300 border-b border-border/30"},[t._v(t._s(a.model_name))]),e("td",{staticClass:"px-3 py-2 text-gray-300 border-b border-border/30"},[t._v(t._s(t.formatDuration(a.duration_ms)))]),e("td",{staticClass:"px-3 py-2 text-gray-300 border-b border-border/30"},[t._v(t._s(a.input_tokens||0))]),e("td",{staticClass:"px-3 py-2 text-gray-300 border-b border-border/30"},[t._v(t._s(a.output_tokens||0))]),e("td",{staticClass:"px-3 py-2 text-gray-300 border-b border-border/30"},[t._v("$"+t._s((a.cost||0).toFixed(4)))]),e("td",{staticClass:"px-3 py-2 text-gray-300 border-b border-border/30 truncate max-w-[150px]",attrs:{title:a.session_id}},[t._v(t._s(t.getSessionTitle(a.session_id)))])])}),t.logs.length===0?e("tr",[e("td",{staticClass:"px-3 py-8 text-center text-textMuted",attrs:{colspan:"9"}},[t._v("暂无数据")])]):t._e()],2)])]),e("div",{staticClass:"flex items-center justify-between px-4 py-2 border-t border-border bg-sidebar"},[e("span",{staticClass:"text-xs text-textMuted"},[t._v("共 "+t._s(t.total)+" 条")]),e("div",{staticClass:"flex items-center gap-2"},[e("button",{staticClass:"px-2 py-1 text-xs text-textMuted hover:text-white disabled:opacity-30 disabled:cursor-not-allowed",attrs:{disabled:t.page<=1},on:{click:t.prevPage}},[e("i",{staticClass:"fa-solid fa-chevron-left"}),t._v(" 上一页 ")]),e("span",{staticClass:"text-xs text-textMuted"},[t._v(t._s(t.page)+" / "+t._s(t.totalPages||1))]),e("button",{staticClass:"px-2 py-1 text-xs text-textMuted hover:text-white disabled:opacity-30 disabled:cursor-not-allowed",attrs:{disabled:t.page>=t.totalPages},on:{click:t.nextPage}},[t._v(" 下一页 "),e("i",{staticClass:"fa-solid fa-chevron-right"})])])])])])},f=[function(){var s=this,t=s._self._c;return t("div",{staticClass:"flex border-b border-border text-xs uppercase font-bold text-textMuted"},[t("div",{staticClass:"px-4 py-2 border-b-2 border-accent text-white flex items-center gap-2"},[t("i",{staticClass:"fa-solid fa-list"}),s._v(" 日志 ")])])},function(){var s=this,t=s._self._c;return t("thead",{staticClass:"bg-sidebar sticky top-0"},[t("tr",[t("th",{staticClass:"px-3 py-2 text-left text-xs font-bold text-textMuted uppercase border-b border-border"},[s._v("ID")]),t("th",{staticClass:"px-3 py-2 text-left text-xs font-bold text-textMuted uppercase border-b border-border"},[s._v("时间")]),t("th",{staticClass:"px-3 py-2 text-left text-xs font-bold text-textMuted uppercase border-b border-border"},[s._v("类型")]),t("th",{staticClass:"px-3 py-2 text-left text-xs font-bold text-textMuted uppercase border-b border-border"},[s._v("模型")]),t("th",{staticClass:"px-3 py-2 text-left text-xs font-bold text-textMuted uppercase border-b border-border"},[s._v("耗时")]),t("th",{staticClass:"px-3 py-2 text-left text-xs font-bold text-textMuted uppercase border-b border-border"},[s._v("输入Token")]),t("th",{staticClass:"px-3 py-2 text-left text-xs font-bold text-textMuted uppercase border-b border-border"},[s._v("输出Token")]),t("th",{staticClass:"px-3 py-2 text-left text-xs font-bold text-textMuted uppercase border-b border-border"},[s._v("费用")]),t("th",{staticClass:"px-3 py-2 text-left text-xs font-bold text-textMuted uppercase border-b border-border"},[s._v("会话ID")])])])}],u=x(p,b,f,!1,null,null);const _=u.exports;export{_ as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.workflow-sidebar[data-v-8e3cf2bb]{width:280px;background:#2d2d2d;border-right:1px solid #1e1e1e;display:flex;flex-direction:column;flex-shrink:0}.sidebar-header[data-v-8e3cf2bb]{padding:16px;border-bottom:1px solid #1e1e1e}.sidebar-header h3[data-v-8e3cf2bb]{font-size:14px;color:#84848a;margin-bottom:12px}.sidebar-header .el-select[data-v-8e3cf2bb]{width:100%;margin-bottom:8px}.project-display-row[data-v-8e3cf2bb]{display:flex;justify-content:space-between;gap:8px;margin-bottom:8px;padding:8px 10px;background:#ffffff0a;border:1px solid #3f3f46;border-radius:6px}.project-display-row .label[data-v-8e3cf2bb]{color:#84848a;font-size:12px}.project-display-row .value[data-v-8e3cf2bb]{color:#d4d4d8;font-size:12px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.step-list[data-v-8e3cf2bb]{flex:1;overflow-y:auto;padding:16px}.step-item[data-v-8e3cf2bb]{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:8px;margin-bottom:8px;cursor:pointer;transition:all .2s;border:1px solid transparent}.step-item[data-v-8e3cf2bb]:hover{background:#ffffff0d}.step-item.active[data-v-8e3cf2bb]{background:#409eff26;border-color:#409eff}.step-item.completed .step-icon[data-v-8e3cf2bb]{background:#22c55e}.step-item.active .step-icon[data-v-8e3cf2bb]{background:#409eff}.step-icon[data-v-8e3cf2bb]{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;flex-shrink:0}.step-info[data-v-8e3cf2bb]{flex:1}.step-title[data-v-8e3cf2bb]{font-size:14px;font-weight:500;margin-bottom:2px;color:#f4f4f5}.step-desc[data-v-8e3cf2bb]{font-size:12px;color:#84848a}.step-status[data-v-8e3cf2bb]{font-size:14px}.step1-container[data-v-59997ee1]{height:100%;padding:24px;overflow:hidden}.step1-main[data-v-59997ee1]{max-width:600px;margin:0 auto}.panel-section[data-v-59997ee1]{background:#121212;border:1px solid #1e1e1e;border-radius:8px;overflow:hidden}.panel-section-header[data-v-59997ee1]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 16px;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:space-between;color:#f4f4f5}.panel-section-header .el-button[data-v-59997ee1]{padding:4px 8px;font-size:12px}.panel-section-body[data-v-59997ee1]{padding:24px}.form-hint[data-v-59997ee1]{font-size:12px;color:#84848a;margin-top:8px}.form-hint code[data-v-59997ee1]{background:#18191b;padding:2px 6px;border-radius:4px;font-family:ui-monospace,monospace;color:#409eff}.flex[data-v-59997ee1]{display:flex}.gap-2[data-v-59997ee1]{gap:8px}.step2-container[data-v-24f603b8]{height:100%;display:flex;flex-direction:column}.step2-main[data-v-24f603b8]{display:flex;flex:1;gap:16px;overflow:hidden;padding:16px}.editor-panel[data-v-24f603b8]{flex:1;min-width:300px;background:#121212;border:1px solid #1e1e1e;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.editor-header[data-v-24f603b8]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 16px;font-size:13px;color:#84848a;display:flex;align-items:center;gap:8px}.editor-container[data-v-24f603b8]{flex:1;min-height:0}.chat-panel[data-v-24f603b8]{width:480px;background:#121212;border:1px solid #1e1e1e;border-radius:8px;overflow:hidden;display:flex;flex-direction:column;flex-shrink:0}.panel-header[data-v-24f603b8]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 16px;font-size:14px;font-weight:500;color:#f4f4f5;flex-shrink:0}.chat-messages[data-v-24f603b8]{flex:1;overflow-y:auto;padding:0 16px 16px;font-size:14px;line-height:1.6}.empty-state[data-v-24f603b8]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#84848a}.empty-state i[data-v-24f603b8]{font-size:48px;margin-bottom:16px;opacity:.5}.todos-list[data-v-24f603b8]{margin-bottom:16px;color:#d4d4d8}.todo-item[data-v-24f603b8]{display:flex;align-items:center;gap:8px;padding:2px 0}.todo-status[data-v-24f603b8],.todo-name[data-v-24f603b8]{font-size:14px}.user-question[data-v-24f603b8]{color:#60a5fa;font-weight:700;margin-bottom:16px}.user-question[data-v-24f603b8] p{color:#d4d4d8;font-weight:400;margin:0 0 8px;font-size:14px;line-height:1.6}.user-question[data-v-24f603b8] strong{color:#fff}.user-question[data-v-24f603b8] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.user-question[data-v-24f603b8] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0;font-size:13px}.user-question[data-v-24f603b8] ul,.user-question[data-v-24f603b8] ol{margin:8px 0;padding-left:20px;color:#d4d4d8}.user-question[data-v-24f603b8] li{margin:4px 0;color:#d4d4d8}.user-question[data-v-24f603b8] h1,.user-question[data-v-24f603b8] h2,.user-question[data-v-24f603b8] h3{color:#fff;margin:12px 0 8px}.user-question[data-v-24f603b8] h1{font-size:20px}.user-question[data-v-24f603b8] h2{font-size:18px}.user-question[data-v-24f603b8] h3{font-size:16px}.user-question[data-v-24f603b8] table{border-collapse:collapse;margin:8px 0;width:100%}.user-question[data-v-24f603b8] th,.user-question[data-v-24f603b8] td{border:1px solid #3f3f46;padding:6px 10px;color:#d4d4d8}.user-question[data-v-24f603b8] th{background:#1e1e1e;color:#fff}.user-question[data-v-24f603b8] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.user-question[data-v-24f603b8] hr{border:none;border-top:1px solid #3f3f46;margin:12px 0}.ai-thought[data-v-24f603b8]{color:#d4d4d8;margin-bottom:16px;font-size:14px;line-height:1.6}.ai-thought[data-v-24f603b8] p{margin:0 0 8px}.ai-thought[data-v-24f603b8] strong{color:#fff}.ai-thought[data-v-24f603b8] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.ai-thought[data-v-24f603b8] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0}.ai-thought[data-v-24f603b8] ul,.ai-thought[data-v-24f603b8] ol{margin:8px 0;padding-left:20px}.ai-thought[data-v-24f603b8] li{margin:4px 0}.ai-thought[data-v-24f603b8] h1,.ai-thought[data-v-24f603b8] h2,.ai-thought[data-v-24f603b8] h3{color:#fff;margin:12px 0 8px}.ai-thought[data-v-24f603b8] table{border-collapse:collapse;margin:8px 0;width:100%}.ai-thought[data-v-24f603b8] th,.ai-thought[data-v-24f603b8] td{border:1px solid #3f3f46;padding:6px 10px}.ai-thought[data-v-24f603b8] th{background:#1e1e1e}.ai-thought[data-v-24f603b8] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.log-mute[data-v-24f603b8]{color:#84848a;margin-bottom:16px;white-space:pre}.tool-success[data-v-24f603b8]{color:#22c55e}.tool-fail[data-v-24f603b8]{color:#ef4444}.tool-input[data-v-24f603b8]{color:#60a5fa;margin-left:8px}.build-info[data-v-24f603b8]{color:#84848a;display:flex;align-items:center;gap:8px;margin-bottom:16px}.build-info .icon[data-v-24f603b8]{color:#60a5fa;font-size:12px}.chat-input-area[data-v-24f603b8]{border-top:1px solid #1e1e1e;padding:12px 16px;background:#121212;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.input-area[data-v-24f603b8]{width:100%}.input-actions[data-v-24f603b8]{display:flex;justify-content:flex-end;gap:8px}.send-btn[data-v-24f603b8],.stop-btn[data-v-24f603b8]{height:auto}.status-bar[data-v-24f603b8]{display:flex;gap:8px;align-items:center;padding:6px 16px;font-size:12px;color:#84848a;border-top:1px solid #1e1e1e;flex-shrink:0;flex-wrap:wrap;background:#0a0a09}.status-bar .separator[data-v-24f603b8]{color:#3f3f46}.status-ready[data-v-24f603b8]{color:#22c55e}.status-thinking[data-v-24f603b8]{color:#60a5fa}.token-warning[data-v-24f603b8]{color:#ef4444}.compaction-info[data-v-24f603b8]{color:#22c55e;margin-left:8px}.model-selector[data-v-24f603b8]{cursor:pointer}.model-selector[data-v-24f603b8]:hover{color:#60a5fa}.status-action[data-v-24f603b8]{cursor:pointer}.status-action[data-v-24f603b8]:hover{color:#60a5fa}.system-message[data-v-24f603b8]{color:#a78bfa;font-size:13px;margin-bottom:16px;padding:8px 12px;background:#1e1e1e;border-radius:6px}.step3-container[data-v-a1097356]{height:100%;display:flex;flex-direction:column}.step3-main[data-v-a1097356]{flex:1;overflow:hidden;padding:16px}.code-chat-panel[data-v-a1097356]{height:100%;background:#121212;border:1px solid #1e1e1e;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.panel-header[data-v-a1097356]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 16px;font-size:14px;font-weight:500;color:#f4f4f5;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.chat-messages[data-v-a1097356]{flex:1;overflow-y:auto;padding:0 16px 16px;font-size:14px;line-height:1.6}.empty-state[data-v-a1097356]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#84848a}.empty-state i[data-v-a1097356]{font-size:48px;margin-bottom:16px;opacity:.5}.todos-list[data-v-a1097356]{margin-bottom:16px;color:#d4d4d8}.todo-item[data-v-a1097356]{display:flex;align-items:center;gap:8px;padding:2px 0}.todo-status[data-v-a1097356],.todo-name[data-v-a1097356]{font-size:14px}.user-question[data-v-a1097356]{color:#60a5fa;font-weight:700;margin-bottom:16px}.user-question[data-v-a1097356] p{color:#d4d4d8;font-weight:400;margin:0 0 8px;font-size:14px;line-height:1.6}.user-question[data-v-a1097356] strong{color:#fff}.user-question[data-v-a1097356] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.user-question[data-v-a1097356] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0;font-size:13px}.user-question[data-v-a1097356] ul,.user-question[data-v-a1097356] ol{margin:8px 0;padding-left:20px;color:#d4d4d8}.user-question[data-v-a1097356] li{margin:4px 0;color:#d4d4d8}.user-question[data-v-a1097356] h1,.user-question[data-v-a1097356] h2,.user-question[data-v-a1097356] h3{color:#fff;margin:12px 0 8px}.user-question[data-v-a1097356] h1{font-size:20px}.user-question[data-v-a1097356] h2{font-size:18px}.user-question[data-v-a1097356] h3{font-size:16px}.user-question[data-v-a1097356] table{border-collapse:collapse;margin:8px 0;width:100%}.user-question[data-v-a1097356] th,.user-question[data-v-a1097356] td{border:1px solid #3f3f46;padding:6px 10px;color:#d4d4d8}.user-question[data-v-a1097356] th{background:#1e1e1e;color:#fff}.user-question[data-v-a1097356] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.user-question[data-v-a1097356] hr{border:none;border-top:1px solid #3f3f46;margin:12px 0}.ai-thought[data-v-a1097356]{color:#d4d4d8;margin-bottom:16px;font-size:14px;line-height:1.6}.ai-thought[data-v-a1097356] p{margin:0 0 8px}.ai-thought[data-v-a1097356] strong{color:#fff}.ai-thought[data-v-a1097356] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.ai-thought[data-v-a1097356] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0}.ai-thought[data-v-a1097356] ul,.ai-thought[data-v-a1097356] ol{margin:8px 0;padding-left:20px}.ai-thought[data-v-a1097356] li{margin:4px 0}.ai-thought[data-v-a1097356] h1,.ai-thought[data-v-a1097356] h2,.ai-thought[data-v-a1097356] h3{color:#fff;margin:12px 0 8px}.ai-thought[data-v-a1097356] table{border-collapse:collapse;margin:8px 0;width:100%}.ai-thought[data-v-a1097356] th,.ai-thought[data-v-a1097356] td{border:1px solid #3f3f46;padding:6px 10px}.ai-thought[data-v-a1097356] th{background:#1e1e1e}.ai-thought[data-v-a1097356] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.log-mute[data-v-a1097356]{color:#84848a;margin-bottom:16px;white-space:pre}.tool-success[data-v-a1097356]{color:#22c55e}.tool-fail[data-v-a1097356]{color:#ef4444}.tool-input[data-v-a1097356]{color:#60a5fa;margin-left:8px}.build-info[data-v-a1097356]{color:#84848a;display:flex;align-items:center;gap:8px;margin-bottom:16px}.build-info .icon[data-v-a1097356]{color:#60a5fa;font-size:12px}.chat-input-area[data-v-a1097356]{border-top:1px solid #1e1e1e;padding:12px 16px;background:#121212;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.input-area[data-v-a1097356]{width:100%}.input-actions[data-v-a1097356]{display:flex;justify-content:flex-end;gap:8px}.send-btn[data-v-a1097356],.stop-btn[data-v-a1097356]{height:auto}.status-bar[data-v-a1097356]{display:flex;gap:8px;align-items:center;padding:6px 16px;font-size:12px;color:#84848a;border-top:1px solid #1e1e1e;flex-shrink:0;flex-wrap:wrap;background:#0a0a09}.status-bar .separator[data-v-a1097356]{color:#3f3f46}.status-ready[data-v-a1097356]{color:#22c55e}.status-thinking[data-v-a1097356]{color:#60a5fa}.token-warning[data-v-a1097356]{color:#ef4444}.compaction-info[data-v-a1097356]{color:#22c55e;margin-left:8px}.model-selector[data-v-a1097356]{cursor:pointer}.model-selector[data-v-a1097356]:hover{color:#60a5fa}.status-action[data-v-a1097356]{cursor:pointer}.status-action[data-v-a1097356]:hover{color:#60a5fa}.system-message[data-v-a1097356]{color:#a78bfa;font-size:13px;margin-bottom:16px;padding:8px 12px;background:#1e1e1e;border-radius:6px}.step4-container[data-v-407d40b9]{height:100%;display:flex;flex-direction:column}.step4-main[data-v-407d40b9]{flex:1;overflow:hidden;padding:16px}.code-chat-panel[data-v-407d40b9]{height:100%;background:#121212;border:1px solid #1e1e1e;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.panel-header[data-v-407d40b9]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 16px;font-size:14px;font-weight:500;color:#f4f4f5;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.chat-messages[data-v-407d40b9]{flex:1;overflow-y:auto;padding:0 16px 16px;font-size:14px;line-height:1.6}.empty-state[data-v-407d40b9]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#84848a}.empty-state i[data-v-407d40b9]{font-size:48px;margin-bottom:16px;opacity:.5}.todos-list[data-v-407d40b9]{margin-bottom:16px;color:#d4d4d8}.todo-item[data-v-407d40b9]{display:flex;align-items:center;gap:8px;padding:2px 0}.todo-status[data-v-407d40b9],.todo-name[data-v-407d40b9]{font-size:14px}.user-question[data-v-407d40b9]{color:#60a5fa;font-weight:700;margin-bottom:16px}.user-question[data-v-407d40b9] p{color:#d4d4d8;font-weight:400;margin:0 0 8px;font-size:14px;line-height:1.6}.user-question[data-v-407d40b9] strong{color:#fff}.user-question[data-v-407d40b9] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.user-question[data-v-407d40b9] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0;font-size:13px}.user-question[data-v-407d40b9] ul,.user-question[data-v-407d40b9] ol{margin:8px 0;padding-left:20px;color:#d4d4d8}.user-question[data-v-407d40b9] li{margin:4px 0;color:#d4d4d8}.user-question[data-v-407d40b9] h1,.user-question[data-v-407d40b9] h2,.user-question[data-v-407d40b9] h3{color:#fff;margin:12px 0 8px}.user-question[data-v-407d40b9] h1{font-size:20px}.user-question[data-v-407d40b9] h2{font-size:18px}.user-question[data-v-407d40b9] h3{font-size:16px}.user-question[data-v-407d40b9] table{border-collapse:collapse;margin:8px 0;width:100%}.user-question[data-v-407d40b9] th,.user-question[data-v-407d40b9] td{border:1px solid #3f3f46;padding:6px 10px;color:#d4d4d8}.user-question[data-v-407d40b9] th{background:#1e1e1e;color:#fff}.user-question[data-v-407d40b9] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.user-question[data-v-407d40b9] hr{border:none;border-top:1px solid #3f3f46;margin:12px 0}.ai-thought[data-v-407d40b9]{color:#d4d4d8;margin-bottom:16px;font-size:14px;line-height:1.6}.ai-thought[data-v-407d40b9] p{margin:0 0 8px}.ai-thought[data-v-407d40b9] strong{color:#fff}.ai-thought[data-v-407d40b9] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.ai-thought[data-v-407d40b9] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0}.ai-thought[data-v-407d40b9] ul,.ai-thought[data-v-407d40b9] ol{margin:8px 0;padding-left:20px}.ai-thought[data-v-407d40b9] li{margin:4px 0}.ai-thought[data-v-407d40b9] h1,.ai-thought[data-v-407d40b9] h2,.ai-thought[data-v-407d40b9] h3{color:#fff;margin:12px 0 8px}.ai-thought[data-v-407d40b9] table{border-collapse:collapse;margin:8px 0;width:100%}.ai-thought[data-v-407d40b9] th,.ai-thought[data-v-407d40b9] td{border:1px solid #3f3f46;padding:6px 10px}.ai-thought[data-v-407d40b9] th{background:#1e1e1e}.ai-thought[data-v-407d40b9] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.log-mute[data-v-407d40b9]{color:#84848a;margin-bottom:16px;white-space:pre}.tool-success[data-v-407d40b9]{color:#22c55e}.tool-fail[data-v-407d40b9]{color:#ef4444}.tool-input[data-v-407d40b9]{color:#60a5fa;margin-left:8px}.build-info[data-v-407d40b9]{color:#84848a;display:flex;align-items:center;gap:8px;margin-bottom:16px}.build-info .icon[data-v-407d40b9]{color:#60a5fa;font-size:12px}.chat-input-area[data-v-407d40b9]{border-top:1px solid #1e1e1e;padding:12px 16px;background:#121212;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.input-area[data-v-407d40b9]{width:100%}.input-actions[data-v-407d40b9]{display:flex;justify-content:flex-end;gap:8px}.send-btn[data-v-407d40b9],.stop-btn[data-v-407d40b9]{height:auto}.status-bar[data-v-407d40b9]{display:flex;gap:8px;align-items:center;padding:6px 16px;font-size:12px;color:#84848a;border-top:1px solid #1e1e1e;flex-shrink:0;flex-wrap:wrap;background:#0a0a09}.status-bar .separator[data-v-407d40b9]{color:#3f3f46}.status-ready[data-v-407d40b9]{color:#22c55e}.status-thinking[data-v-407d40b9]{color:#60a5fa}.token-warning[data-v-407d40b9]{color:#ef4444}.compaction-info[data-v-407d40b9]{color:#22c55e;margin-left:8px}.model-selector[data-v-407d40b9]{cursor:pointer}.model-selector[data-v-407d40b9]:hover{color:#60a5fa}.status-action[data-v-407d40b9]{cursor:pointer}.status-action[data-v-407d40b9]:hover{color:#60a5fa}.system-message[data-v-407d40b9]{color:#a78bfa;font-size:13px;margin-bottom:16px;padding:8px 12px;background:#1e1e1e;border-radius:6px}.dev-workflow-view[data-v-fb0d8a90]{display:flex;height:100%;overflow:hidden;background:#0a0a09}.main-content[data-v-fb0d8a90]{flex:1;display:flex;flex-direction:column;overflow:hidden}.panel-header[data-v-fb0d8a90]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 24px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.panel-title[data-v-fb0d8a90]{font-size:16px;font-weight:500;color:#f4f4f5}.panel-actions[data-v-fb0d8a90]{display:flex;gap:12px}.step-content[data-v-fb0d8a90]{flex:1;overflow:hidden}.status-bar[data-v-fb0d8a90]{background:#121212;border-top:1px solid #1e1e1e;padding:8px 24px;font-size:12px;color:#84848a;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
|
|
1
|
+
.workflow-sidebar[data-v-8e3cf2bb]{width:280px;background:#2d2d2d;border-right:1px solid #1e1e1e;display:flex;flex-direction:column;flex-shrink:0}.sidebar-header[data-v-8e3cf2bb]{padding:16px;border-bottom:1px solid #1e1e1e}.sidebar-header h3[data-v-8e3cf2bb]{font-size:14px;color:#84848a;margin-bottom:12px}.sidebar-header .el-select[data-v-8e3cf2bb]{width:100%;margin-bottom:8px}.project-display-row[data-v-8e3cf2bb]{display:flex;justify-content:space-between;gap:8px;margin-bottom:8px;padding:8px 10px;background:#ffffff0a;border:1px solid #3f3f46;border-radius:6px}.project-display-row .label[data-v-8e3cf2bb]{color:#84848a;font-size:12px}.project-display-row .value[data-v-8e3cf2bb]{color:#d4d4d8;font-size:12px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.step-list[data-v-8e3cf2bb]{flex:1;overflow-y:auto;padding:16px}.step-item[data-v-8e3cf2bb]{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:8px;margin-bottom:8px;cursor:pointer;transition:all .2s;border:1px solid transparent}.step-item[data-v-8e3cf2bb]:hover{background:#ffffff0d}.step-item.active[data-v-8e3cf2bb]{background:#409eff26;border-color:#409eff}.step-item.completed .step-icon[data-v-8e3cf2bb]{background:#22c55e}.step-item.active .step-icon[data-v-8e3cf2bb]{background:#409eff}.step-icon[data-v-8e3cf2bb]{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;flex-shrink:0}.step-info[data-v-8e3cf2bb]{flex:1}.step-title[data-v-8e3cf2bb]{font-size:14px;font-weight:500;margin-bottom:2px;color:#f4f4f5}.step-desc[data-v-8e3cf2bb]{font-size:12px;color:#84848a}.step-status[data-v-8e3cf2bb]{font-size:14px}.step1-container[data-v-bf976168]{height:100%;padding:24px;overflow:hidden}.step1-main[data-v-bf976168]{max-width:600px;margin:0 auto}.panel-section[data-v-bf976168]{background:#121212;border:1px solid #1e1e1e;border-radius:8px;overflow:hidden}.panel-section-header[data-v-bf976168]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 16px;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:space-between;color:#f4f4f5}.panel-section-header .el-button[data-v-bf976168]{padding:4px 8px;font-size:12px}.panel-section-body[data-v-bf976168]{padding:24px}.form-hint[data-v-bf976168]{font-size:12px;color:#84848a;margin-top:8px}.form-hint code[data-v-bf976168]{background:#18191b;padding:2px 6px;border-radius:4px;font-family:ui-monospace,monospace;color:#409eff}.flex[data-v-bf976168]{display:flex}.gap-2[data-v-bf976168]{gap:8px}.step2-container[data-v-24f603b8]{height:100%;display:flex;flex-direction:column}.step2-main[data-v-24f603b8]{display:flex;flex:1;gap:16px;overflow:hidden;padding:16px}.editor-panel[data-v-24f603b8]{flex:1;min-width:300px;background:#121212;border:1px solid #1e1e1e;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.editor-header[data-v-24f603b8]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 16px;font-size:13px;color:#84848a;display:flex;align-items:center;gap:8px}.editor-container[data-v-24f603b8]{flex:1;min-height:0}.chat-panel[data-v-24f603b8]{width:480px;background:#121212;border:1px solid #1e1e1e;border-radius:8px;overflow:hidden;display:flex;flex-direction:column;flex-shrink:0}.panel-header[data-v-24f603b8]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 16px;font-size:14px;font-weight:500;color:#f4f4f5;flex-shrink:0}.chat-messages[data-v-24f603b8]{flex:1;overflow-y:auto;padding:0 16px 16px;font-size:14px;line-height:1.6}.empty-state[data-v-24f603b8]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#84848a}.empty-state i[data-v-24f603b8]{font-size:48px;margin-bottom:16px;opacity:.5}.todos-list[data-v-24f603b8]{margin-bottom:16px;color:#d4d4d8}.todo-item[data-v-24f603b8]{display:flex;align-items:center;gap:8px;padding:2px 0}.todo-status[data-v-24f603b8],.todo-name[data-v-24f603b8]{font-size:14px}.user-question[data-v-24f603b8]{color:#60a5fa;font-weight:700;margin-bottom:16px}.user-question[data-v-24f603b8] p{color:#d4d4d8;font-weight:400;margin:0 0 8px;font-size:14px;line-height:1.6}.user-question[data-v-24f603b8] strong{color:#fff}.user-question[data-v-24f603b8] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.user-question[data-v-24f603b8] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0;font-size:13px}.user-question[data-v-24f603b8] ul,.user-question[data-v-24f603b8] ol{margin:8px 0;padding-left:20px;color:#d4d4d8}.user-question[data-v-24f603b8] li{margin:4px 0;color:#d4d4d8}.user-question[data-v-24f603b8] h1,.user-question[data-v-24f603b8] h2,.user-question[data-v-24f603b8] h3{color:#fff;margin:12px 0 8px}.user-question[data-v-24f603b8] h1{font-size:20px}.user-question[data-v-24f603b8] h2{font-size:18px}.user-question[data-v-24f603b8] h3{font-size:16px}.user-question[data-v-24f603b8] table{border-collapse:collapse;margin:8px 0;width:100%}.user-question[data-v-24f603b8] th,.user-question[data-v-24f603b8] td{border:1px solid #3f3f46;padding:6px 10px;color:#d4d4d8}.user-question[data-v-24f603b8] th{background:#1e1e1e;color:#fff}.user-question[data-v-24f603b8] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.user-question[data-v-24f603b8] hr{border:none;border-top:1px solid #3f3f46;margin:12px 0}.ai-thought[data-v-24f603b8]{color:#d4d4d8;margin-bottom:16px;font-size:14px;line-height:1.6}.ai-thought[data-v-24f603b8] p{margin:0 0 8px}.ai-thought[data-v-24f603b8] strong{color:#fff}.ai-thought[data-v-24f603b8] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.ai-thought[data-v-24f603b8] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0}.ai-thought[data-v-24f603b8] ul,.ai-thought[data-v-24f603b8] ol{margin:8px 0;padding-left:20px}.ai-thought[data-v-24f603b8] li{margin:4px 0}.ai-thought[data-v-24f603b8] h1,.ai-thought[data-v-24f603b8] h2,.ai-thought[data-v-24f603b8] h3{color:#fff;margin:12px 0 8px}.ai-thought[data-v-24f603b8] table{border-collapse:collapse;margin:8px 0;width:100%}.ai-thought[data-v-24f603b8] th,.ai-thought[data-v-24f603b8] td{border:1px solid #3f3f46;padding:6px 10px}.ai-thought[data-v-24f603b8] th{background:#1e1e1e}.ai-thought[data-v-24f603b8] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.log-mute[data-v-24f603b8]{color:#84848a;margin-bottom:16px;white-space:pre}.tool-success[data-v-24f603b8]{color:#22c55e}.tool-fail[data-v-24f603b8]{color:#ef4444}.tool-input[data-v-24f603b8]{color:#60a5fa;margin-left:8px}.build-info[data-v-24f603b8]{color:#84848a;display:flex;align-items:center;gap:8px;margin-bottom:16px}.build-info .icon[data-v-24f603b8]{color:#60a5fa;font-size:12px}.chat-input-area[data-v-24f603b8]{border-top:1px solid #1e1e1e;padding:12px 16px;background:#121212;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.input-area[data-v-24f603b8]{width:100%}.input-actions[data-v-24f603b8]{display:flex;justify-content:flex-end;gap:8px}.send-btn[data-v-24f603b8],.stop-btn[data-v-24f603b8]{height:auto}.status-bar[data-v-24f603b8]{display:flex;gap:8px;align-items:center;padding:6px 16px;font-size:12px;color:#84848a;border-top:1px solid #1e1e1e;flex-shrink:0;flex-wrap:wrap;background:#0a0a09}.status-bar .separator[data-v-24f603b8]{color:#3f3f46}.status-ready[data-v-24f603b8]{color:#22c55e}.status-thinking[data-v-24f603b8]{color:#60a5fa}.token-warning[data-v-24f603b8]{color:#ef4444}.compaction-info[data-v-24f603b8]{color:#22c55e;margin-left:8px}.model-selector[data-v-24f603b8]{cursor:pointer}.model-selector[data-v-24f603b8]:hover{color:#60a5fa}.status-action[data-v-24f603b8]{cursor:pointer}.status-action[data-v-24f603b8]:hover{color:#60a5fa}.system-message[data-v-24f603b8]{color:#a78bfa;font-size:13px;margin-bottom:16px;padding:8px 12px;background:#1e1e1e;border-radius:6px}.step3-container[data-v-a1097356]{height:100%;display:flex;flex-direction:column}.step3-main[data-v-a1097356]{flex:1;overflow:hidden;padding:16px}.code-chat-panel[data-v-a1097356]{height:100%;background:#121212;border:1px solid #1e1e1e;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.panel-header[data-v-a1097356]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 16px;font-size:14px;font-weight:500;color:#f4f4f5;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.chat-messages[data-v-a1097356]{flex:1;overflow-y:auto;padding:0 16px 16px;font-size:14px;line-height:1.6}.empty-state[data-v-a1097356]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#84848a}.empty-state i[data-v-a1097356]{font-size:48px;margin-bottom:16px;opacity:.5}.todos-list[data-v-a1097356]{margin-bottom:16px;color:#d4d4d8}.todo-item[data-v-a1097356]{display:flex;align-items:center;gap:8px;padding:2px 0}.todo-status[data-v-a1097356],.todo-name[data-v-a1097356]{font-size:14px}.user-question[data-v-a1097356]{color:#60a5fa;font-weight:700;margin-bottom:16px}.user-question[data-v-a1097356] p{color:#d4d4d8;font-weight:400;margin:0 0 8px;font-size:14px;line-height:1.6}.user-question[data-v-a1097356] strong{color:#fff}.user-question[data-v-a1097356] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.user-question[data-v-a1097356] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0;font-size:13px}.user-question[data-v-a1097356] ul,.user-question[data-v-a1097356] ol{margin:8px 0;padding-left:20px;color:#d4d4d8}.user-question[data-v-a1097356] li{margin:4px 0;color:#d4d4d8}.user-question[data-v-a1097356] h1,.user-question[data-v-a1097356] h2,.user-question[data-v-a1097356] h3{color:#fff;margin:12px 0 8px}.user-question[data-v-a1097356] h1{font-size:20px}.user-question[data-v-a1097356] h2{font-size:18px}.user-question[data-v-a1097356] h3{font-size:16px}.user-question[data-v-a1097356] table{border-collapse:collapse;margin:8px 0;width:100%}.user-question[data-v-a1097356] th,.user-question[data-v-a1097356] td{border:1px solid #3f3f46;padding:6px 10px;color:#d4d4d8}.user-question[data-v-a1097356] th{background:#1e1e1e;color:#fff}.user-question[data-v-a1097356] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.user-question[data-v-a1097356] hr{border:none;border-top:1px solid #3f3f46;margin:12px 0}.ai-thought[data-v-a1097356]{color:#d4d4d8;margin-bottom:16px;font-size:14px;line-height:1.6}.ai-thought[data-v-a1097356] p{margin:0 0 8px}.ai-thought[data-v-a1097356] strong{color:#fff}.ai-thought[data-v-a1097356] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.ai-thought[data-v-a1097356] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0}.ai-thought[data-v-a1097356] ul,.ai-thought[data-v-a1097356] ol{margin:8px 0;padding-left:20px}.ai-thought[data-v-a1097356] li{margin:4px 0}.ai-thought[data-v-a1097356] h1,.ai-thought[data-v-a1097356] h2,.ai-thought[data-v-a1097356] h3{color:#fff;margin:12px 0 8px}.ai-thought[data-v-a1097356] table{border-collapse:collapse;margin:8px 0;width:100%}.ai-thought[data-v-a1097356] th,.ai-thought[data-v-a1097356] td{border:1px solid #3f3f46;padding:6px 10px}.ai-thought[data-v-a1097356] th{background:#1e1e1e}.ai-thought[data-v-a1097356] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.log-mute[data-v-a1097356]{color:#84848a;margin-bottom:16px;white-space:pre}.tool-success[data-v-a1097356]{color:#22c55e}.tool-fail[data-v-a1097356]{color:#ef4444}.tool-input[data-v-a1097356]{color:#60a5fa;margin-left:8px}.build-info[data-v-a1097356]{color:#84848a;display:flex;align-items:center;gap:8px;margin-bottom:16px}.build-info .icon[data-v-a1097356]{color:#60a5fa;font-size:12px}.chat-input-area[data-v-a1097356]{border-top:1px solid #1e1e1e;padding:12px 16px;background:#121212;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.input-area[data-v-a1097356]{width:100%}.input-actions[data-v-a1097356]{display:flex;justify-content:flex-end;gap:8px}.send-btn[data-v-a1097356],.stop-btn[data-v-a1097356]{height:auto}.status-bar[data-v-a1097356]{display:flex;gap:8px;align-items:center;padding:6px 16px;font-size:12px;color:#84848a;border-top:1px solid #1e1e1e;flex-shrink:0;flex-wrap:wrap;background:#0a0a09}.status-bar .separator[data-v-a1097356]{color:#3f3f46}.status-ready[data-v-a1097356]{color:#22c55e}.status-thinking[data-v-a1097356]{color:#60a5fa}.token-warning[data-v-a1097356]{color:#ef4444}.compaction-info[data-v-a1097356]{color:#22c55e;margin-left:8px}.model-selector[data-v-a1097356]{cursor:pointer}.model-selector[data-v-a1097356]:hover{color:#60a5fa}.status-action[data-v-a1097356]{cursor:pointer}.status-action[data-v-a1097356]:hover{color:#60a5fa}.system-message[data-v-a1097356]{color:#a78bfa;font-size:13px;margin-bottom:16px;padding:8px 12px;background:#1e1e1e;border-radius:6px}.step4-container[data-v-407d40b9]{height:100%;display:flex;flex-direction:column}.step4-main[data-v-407d40b9]{flex:1;overflow:hidden;padding:16px}.code-chat-panel[data-v-407d40b9]{height:100%;background:#121212;border:1px solid #1e1e1e;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.panel-header[data-v-407d40b9]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 16px;font-size:14px;font-weight:500;color:#f4f4f5;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.chat-messages[data-v-407d40b9]{flex:1;overflow-y:auto;padding:0 16px 16px;font-size:14px;line-height:1.6}.empty-state[data-v-407d40b9]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#84848a}.empty-state i[data-v-407d40b9]{font-size:48px;margin-bottom:16px;opacity:.5}.todos-list[data-v-407d40b9]{margin-bottom:16px;color:#d4d4d8}.todo-item[data-v-407d40b9]{display:flex;align-items:center;gap:8px;padding:2px 0}.todo-status[data-v-407d40b9],.todo-name[data-v-407d40b9]{font-size:14px}.user-question[data-v-407d40b9]{color:#60a5fa;font-weight:700;margin-bottom:16px}.user-question[data-v-407d40b9] p{color:#d4d4d8;font-weight:400;margin:0 0 8px;font-size:14px;line-height:1.6}.user-question[data-v-407d40b9] strong{color:#fff}.user-question[data-v-407d40b9] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.user-question[data-v-407d40b9] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0;font-size:13px}.user-question[data-v-407d40b9] ul,.user-question[data-v-407d40b9] ol{margin:8px 0;padding-left:20px;color:#d4d4d8}.user-question[data-v-407d40b9] li{margin:4px 0;color:#d4d4d8}.user-question[data-v-407d40b9] h1,.user-question[data-v-407d40b9] h2,.user-question[data-v-407d40b9] h3{color:#fff;margin:12px 0 8px}.user-question[data-v-407d40b9] h1{font-size:20px}.user-question[data-v-407d40b9] h2{font-size:18px}.user-question[data-v-407d40b9] h3{font-size:16px}.user-question[data-v-407d40b9] table{border-collapse:collapse;margin:8px 0;width:100%}.user-question[data-v-407d40b9] th,.user-question[data-v-407d40b9] td{border:1px solid #3f3f46;padding:6px 10px;color:#d4d4d8}.user-question[data-v-407d40b9] th{background:#1e1e1e;color:#fff}.user-question[data-v-407d40b9] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.user-question[data-v-407d40b9] hr{border:none;border-top:1px solid #3f3f46;margin:12px 0}.ai-thought[data-v-407d40b9]{color:#d4d4d8;margin-bottom:16px;font-size:14px;line-height:1.6}.ai-thought[data-v-407d40b9] p{margin:0 0 8px}.ai-thought[data-v-407d40b9] strong{color:#fff}.ai-thought[data-v-407d40b9] code{background:#27272a;padding:2px 6px;border-radius:4px;color:#60a5fa;font-size:13px}.ai-thought[data-v-407d40b9] pre{background:#1e1e1e;padding:12px;border-radius:6px;overflow-x:auto;margin:8px 0}.ai-thought[data-v-407d40b9] ul,.ai-thought[data-v-407d40b9] ol{margin:8px 0;padding-left:20px}.ai-thought[data-v-407d40b9] li{margin:4px 0}.ai-thought[data-v-407d40b9] h1,.ai-thought[data-v-407d40b9] h2,.ai-thought[data-v-407d40b9] h3{color:#fff;margin:12px 0 8px}.ai-thought[data-v-407d40b9] table{border-collapse:collapse;margin:8px 0;width:100%}.ai-thought[data-v-407d40b9] th,.ai-thought[data-v-407d40b9] td{border:1px solid #3f3f46;padding:6px 10px}.ai-thought[data-v-407d40b9] th{background:#1e1e1e}.ai-thought[data-v-407d40b9] blockquote{border-left:3px solid #409EFF;padding-left:12px;margin:8px 0;color:#a1a1aa}.log-mute[data-v-407d40b9]{color:#84848a;margin-bottom:16px;white-space:pre}.tool-success[data-v-407d40b9]{color:#22c55e}.tool-fail[data-v-407d40b9]{color:#ef4444}.tool-input[data-v-407d40b9]{color:#60a5fa;margin-left:8px}.build-info[data-v-407d40b9]{color:#84848a;display:flex;align-items:center;gap:8px;margin-bottom:16px}.build-info .icon[data-v-407d40b9]{color:#60a5fa;font-size:12px}.chat-input-area[data-v-407d40b9]{border-top:1px solid #1e1e1e;padding:12px 16px;background:#121212;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.input-area[data-v-407d40b9]{width:100%}.input-actions[data-v-407d40b9]{display:flex;justify-content:flex-end;gap:8px}.send-btn[data-v-407d40b9],.stop-btn[data-v-407d40b9]{height:auto}.status-bar[data-v-407d40b9]{display:flex;gap:8px;align-items:center;padding:6px 16px;font-size:12px;color:#84848a;border-top:1px solid #1e1e1e;flex-shrink:0;flex-wrap:wrap;background:#0a0a09}.status-bar .separator[data-v-407d40b9]{color:#3f3f46}.status-ready[data-v-407d40b9]{color:#22c55e}.status-thinking[data-v-407d40b9]{color:#60a5fa}.token-warning[data-v-407d40b9]{color:#ef4444}.compaction-info[data-v-407d40b9]{color:#22c55e;margin-left:8px}.model-selector[data-v-407d40b9]{cursor:pointer}.model-selector[data-v-407d40b9]:hover{color:#60a5fa}.status-action[data-v-407d40b9]{cursor:pointer}.status-action[data-v-407d40b9]:hover{color:#60a5fa}.system-message[data-v-407d40b9]{color:#a78bfa;font-size:13px;margin-bottom:16px;padding:8px 12px;background:#1e1e1e;border-radius:6px}.dev-workflow-view[data-v-3052e4a8]{display:flex;height:100%;overflow:hidden;background:#0a0a09}.main-content[data-v-3052e4a8]{flex:1;display:flex;flex-direction:column;overflow:hidden}.panel-header[data-v-3052e4a8]{background:#121212;border-bottom:1px solid #1e1e1e;padding:12px 24px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.panel-title[data-v-3052e4a8]{font-size:16px;font-weight:500;color:#f4f4f5}.panel-actions[data-v-3052e4a8]{display:flex;gap:12px}.step-content[data-v-3052e4a8]{flex:1;overflow:hidden}.status-bar[data-v-3052e4a8]{background:#121212;border-top:1px solid #1e1e1e;padding:8px 24px;font-size:12px;color:#84848a;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
|