page-agent-sdk 1.0.1 → 1.1.0
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/LICENSE +1 -1
- package/README.md +259 -148
- package/README.zh-CN.md +341 -0
- package/dist/{chat-sdk.iife.js → page-agent-sdk.iife.js} +15 -15
- package/dist/{chat-sdk.js → page-agent-sdk.js} +1508 -1451
- package/dist/{chat-sdk.umd.cjs → page-agent-sdk.umd.cjs} +13 -13
- package/package.json +8 -8
- package/types/index.d.ts +27 -0
- package/dist/chat-sdk.css +0 -2
package/package.json
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "page-agent-sdk",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "框架无关的页面内 Agent JS SDK —— 以对话框形态挂载到任意网页,通过自定义 tool 读写宿主 window 属性(GET 抓文档),具备 planning/skills/虚拟工作区/快照回退/context 管理能力。Vue 打包进库,使用者无需安装 Vue。",
|
|
6
|
-
"main": "./dist/
|
|
7
|
-
"module": "./dist/
|
|
6
|
+
"main": "./dist/page-agent-sdk.umd.cjs",
|
|
7
|
+
"module": "./dist/page-agent-sdk.js",
|
|
8
8
|
"types": "./types/index.d.ts",
|
|
9
|
-
"unpkg": "./dist/
|
|
10
|
-
"jsdelivr": "./dist/
|
|
9
|
+
"unpkg": "./dist/page-agent-sdk.iife.js",
|
|
10
|
+
"jsdelivr": "./dist/page-agent-sdk.iife.js",
|
|
11
11
|
"sideEffects": [
|
|
12
12
|
"**/*.css"
|
|
13
13
|
],
|
|
14
14
|
"exports": {
|
|
15
15
|
".": {
|
|
16
16
|
"types": "./types/index.d.ts",
|
|
17
|
-
"import": "./dist/
|
|
18
|
-
"require": "./dist/
|
|
17
|
+
"import": "./dist/page-agent-sdk.js",
|
|
18
|
+
"require": "./dist/page-agent-sdk.umd.cjs"
|
|
19
19
|
},
|
|
20
|
-
"./style.css": "./dist/
|
|
20
|
+
"./style.css": "./dist/page-agent-sdk.css"
|
|
21
21
|
},
|
|
22
22
|
"files": [
|
|
23
23
|
"dist",
|
package/types/index.d.ts
CHANGED
|
@@ -42,6 +42,25 @@ export type StreamEvent =
|
|
|
42
42
|
|
|
43
43
|
export type StreamHandler = (event: StreamEvent) => void;
|
|
44
44
|
|
|
45
|
+
/**
|
|
46
|
+
* SDK 事件(供 createChatSdk({ onEvent }) 订阅常用时机)。
|
|
47
|
+
* 复用 StreamEvent(round_start/reasoning/text/tool_call/tool_result/subagent/done;approval_request 不外发)
|
|
48
|
+
* + 额外时机:window_prop_change / message_update / error。
|
|
49
|
+
*/
|
|
50
|
+
export type SdkEvent =
|
|
51
|
+
| { type: 'round_start'; round: number }
|
|
52
|
+
| { type: 'reasoning'; delta: string }
|
|
53
|
+
| { type: 'text'; delta: string }
|
|
54
|
+
| { type: 'tool_call'; name: string; args: any }
|
|
55
|
+
| { type: 'tool_result'; name: string; result: string; status: 'done' | 'error' }
|
|
56
|
+
| { type: 'subagent'; taskId: string; label: string; kind: 'tool_call' | 'tool_result'; name: string; args?: any; result?: string; status?: 'done' | 'error' }
|
|
57
|
+
| { type: 'done'; content: string }
|
|
58
|
+
| { type: 'window_prop_change'; path: string; operation: 'set' | 'edit' | 'delete' | 'restore'; value?: unknown }
|
|
59
|
+
| { type: 'message_update'; count: number }
|
|
60
|
+
| { type: 'error'; message: string };
|
|
61
|
+
|
|
62
|
+
export type SdkEventHandler = (event: SdkEvent) => void;
|
|
63
|
+
|
|
45
64
|
/** 调试日志(与 harness/createAgent 的 DebugLog 一致) */
|
|
46
65
|
export interface DebugLog {
|
|
47
66
|
timestamp: number;
|
|
@@ -336,6 +355,12 @@ export interface ChatSdkOptions {
|
|
|
336
355
|
summaryMaxTokens?: number;
|
|
337
356
|
/** 摘要 LLM 超时毫秒(默认 15000;超时回退索引摘要) */
|
|
338
357
|
summaryTimeoutMs?: number;
|
|
358
|
+
/**
|
|
359
|
+
* SDK 事件回调:订阅常用时机(window 属性变化 / 消息更新 / 工具调用 / 流式文本 / 轮次 / 错误)。
|
|
360
|
+
* UI 与 headless 模式均生效;用于外部联动(宿主页面响应式刷新、埋点、日志),替代轮询。
|
|
361
|
+
* approval_request 不外发(UI 已处理)。
|
|
362
|
+
*/
|
|
363
|
+
onEvent?: SdkEventHandler;
|
|
339
364
|
/** 流式输出(默认 true);false 时等整段回复再显示 */
|
|
340
365
|
streaming?: boolean;
|
|
341
366
|
title?: string;
|
|
@@ -356,6 +381,8 @@ export interface ChatSdk {
|
|
|
356
381
|
restoreLastCheckpoint(): boolean;
|
|
357
382
|
/** 列出可用 checkpoint(回退点);需开启 checkpoint,未开启返回空数组 */
|
|
358
383
|
listCheckpoints(): CheckpointMeta[];
|
|
384
|
+
/** 运行时订阅 SDK 事件(可多个监听器,返回取消函数);与构造时 onEvent 互补 */
|
|
385
|
+
hook(handler: SdkEventHandler): () => void;
|
|
359
386
|
}
|
|
360
387
|
|
|
361
388
|
export declare function createChatSdk(options: ChatSdkOptions): ChatSdk;
|
package/dist/chat-sdk.css
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
.code-preview-overlay[data-v-1e52dc9d]{z-index:9999;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.code-preview-modal[data-v-1e52dc9d]{background:#fff;border-radius:12px;flex-direction:column;width:90%;max-width:900px;height:80vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #0000004d}.preview-header[data-v-1e52dc9d]{color:#fff;background:#1f2937;align-items:center;gap:12px;padding:10px 16px;display:flex}.preview-title[data-v-1e52dc9d]{font-size:14px;font-weight:600}.preview-tabs[data-v-1e52dc9d]{gap:4px;margin-left:auto;display:flex}.preview-tabs button[data-v-1e52dc9d]{color:#fff;cursor:pointer;background:#ffffff1a;border:none;border-radius:6px;padding:4px 12px;font-size:13px}.preview-tabs button.active[data-v-1e52dc9d]{background:#667eea}.preview-tabs button[data-v-1e52dc9d]:disabled{opacity:.4;cursor:not-allowed}.preview-actions[data-v-1e52dc9d]{gap:4px;display:flex}.icon-btn[data-v-1e52dc9d]{color:#fff;cursor:pointer;background:#ffffff1a;border:none;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;display:flex}.icon-btn[data-v-1e52dc9d]:hover{background:#ffffff40}.preview-body[data-v-1e52dc9d]{background:#f9fafb;flex:1;overflow:hidden}.preview-iframe[data-v-1e52dc9d]{background:#fff;border:none;width:100%;height:100%}.preview-source[data-v-1e52dc9d]{color:#e5e7eb;white-space:pre-wrap;word-break:break-word;background:#1f2937;height:100%;margin:0;padding:16px;font-family:SF Mono,Monaco,Consolas,monospace;font-size:13px;line-height:1.5;overflow:auto}.message-md{word-break:break-word;font-size:14px;line-height:1.6}.message-md p{margin:0 0 8px}.message-md p:last-child{margin-bottom:0}.message-md ul,.message-md ol{margin:6px 0;padding-left:20px}.message-md li{margin:2px 0}.message-md h1,.message-md h2,.message-md h3{margin:10px 0 6px;font-weight:600}.message-md h1{font-size:18px}.message-md h2{font-size:16px}.message-md h3{font-size:15px}.message-md a{color:#667eea;text-decoration:underline}.message-md code:not(.hljs){color:#4338ca;background:#667eea1a;border-radius:4px;padding:1px 5px;font-family:SF Mono,Monaco,Consolas,monospace;font-size:13px}.message-md .code-block{background:#1f2937;border-radius:8px;margin:10px 0;padding:0;position:relative;overflow:hidden}.message-md .code-block code{color:#e5e7eb;background:0 0;padding:12px 14px;font-family:SF Mono,Monaco,Consolas,monospace;font-size:13px;line-height:1.5;display:block;overflow-x:auto}.message-md .code-toolbar{background:#00000040;border-bottom:1px solid #ffffff14;align-items:center;gap:8px;padding:6px 12px;display:flex}.message-md .code-lang{color:#9ca3af;text-transform:lowercase;font-family:SF Mono,Monaco,Consolas,monospace;font-size:11px}.message-md .code-action-btn{color:#e5e7eb;cursor:pointer;background:#ffffff1a;border:none;border-radius:4px;margin-left:auto;padding:3px 10px;font-size:12px;transition:background .2s}.message-md .code-action-btn:hover{background:#fff3}.message-md .code-action-btn.preview-btn{color:#fff;background:#667eea;margin-left:4px}.message-md .code-action-btn.preview-btn:hover{background:#5568d3}.message-md .hljs{color:#e5e7eb}.message-md .hljs-keyword{color:#c084fc}.message-md .hljs-string{color:#86efac}.message-md .hljs-comment{color:#6b7280;font-style:italic}.message-md .hljs-number{color:#fca5a5}.message-md .hljs-function .hljs-title,.message-md .hljs-title{color:#93c5fd}.message-md .hljs-tag{color:#fca5a5}.message-md .hljs-attr{color:#fcd34d}.message-md .hljs-built_in{color:#67e8f9}.debug-drawer[data-v-1bf2e689]{z-index:9000;pointer-events:none;position:fixed;inset:0}.drawer-mask[data-v-1bf2e689]{pointer-events:auto;background:#00000040;position:absolute;inset:0}.drawer-panel[data-v-1bf2e689]{--cs-primary:#1f4d3a;--cs-primary-rgb:31, 77, 58;pointer-events:auto;z-index:2;background:#fff;flex-direction:column;width:520px;max-width:90vw;display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-8px 0 32px #00000026}.drawer-mask[data-v-1bf2e689]{z-index:1}.drawer-header[data-v-1bf2e689]{color:#fff;background:linear-gradient(135deg,#1f2937,#111827);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.drawer-title[data-v-1bf2e689]{font-size:15px;font-weight:600}.tab-group[data-v-1bf2e689]{gap:4px;display:flex}.tab-btn[data-v-1bf2e689]{color:#fff;cursor:pointer;background:#ffffff1f;border:none;border-radius:6px;padding:4px 12px;font-size:13px;transition:background .2s}.tab-btn[data-v-1bf2e689]:hover{background:#ffffff38}.tab-btn.active[data-v-1bf2e689]{background:#ffffff73;font-weight:600}.info-body[data-v-1bf2e689]{padding:4px 0}.info-section[data-v-1bf2e689]{margin-bottom:14px}.info-title[data-v-1bf2e689]{color:#2d5a47;border-bottom:1px solid #f3f4f6;margin-bottom:6px;padding-bottom:4px;font-size:12px;font-weight:600}.info-item[data-v-1bf2e689]{background:#f9fafb;border-radius:6px;margin-bottom:4px;padding:6px 8px}.info-name[data-v-1bf2e689]{color:#1f2937;font-family:SF Mono,Monaco,Consolas,monospace;font-size:12px;font-weight:600}.info-desc[data-v-1bf2e689]{color:#6b7280;margin-top:2px;font-size:11px;line-height:1.5}.info-desc.muted[data-v-1bf2e689]{color:#9ca3af}.src-tag[data-v-1bf2e689]{vertical-align:middle;border-radius:8px;margin-left:6px;padding:0 6px;font-size:10px;font-weight:600;display:inline-block}.src-tag.builtin[data-v-1bf2e689]{color:#6b7280;background:#f3f4f6}.src-tag.mcp[data-v-1bf2e689]{color:#7c3aed;background:#f3e8ff}.src-tag.user[data-v-1bf2e689]{color:#2563eb;background:#dbeafe}.info-todo[data-v-1bf2e689]{color:#374151;background:#f9fafb;border-radius:6px;align-items:center;gap:6px;margin-bottom:4px;padding:4px 8px;font-size:12px;display:flex}.todo-tag[data-v-1bf2e689]{color:#fff;border-radius:8px;flex-shrink:0;padding:1px 6px;font-size:10px}.info-pre[data-v-1bf2e689]{color:#4b5563;white-space:pre-wrap;word-break:break-word;background:#f9fafb;border-radius:6px;max-height:200px;margin:0;padding:8px;font-family:SF Mono,Monaco,Consolas,monospace;font-size:11px;overflow-y:auto}.header-actions[data-v-1bf2e689]{gap:4px;display:flex}.hd-btn[data-v-1bf2e689]{color:#fff;cursor:pointer;background:#ffffff1f;border:none;border-radius:6px;width:28px;height:28px}.hd-btn[data-v-1bf2e689]:hover{background:#ffffff40}.drawer-filters[data-v-1bf2e689]{background:#fafafa;border-bottom:1px solid #f3f4f6;flex-wrap:wrap;gap:6px;padding:10px 16px;display:flex}.filter-chip[data-v-1bf2e689]{color:#6b7280;cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:14px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;transition:all .2s;display:inline-flex}.filter-chip[data-v-1bf2e689]:hover{border-color:var(--chip-color,var(--cs-primary))}.filter-chip.active[data-v-1bf2e689]{background:var(--chip-color,var(--cs-primary));border-color:var(--chip-color,var(--cs-primary));color:#fff}.chip-count[data-v-1bf2e689]{background:#00000014;border-radius:8px;padding:0 5px;font-size:11px}.filter-chip.active .chip-count[data-v-1bf2e689]{background:#ffffff40}.drawer-body[data-v-1bf2e689]{flex:1;padding:12px;overflow-y:auto}.empty[data-v-1bf2e689]{text-align:center;color:#9ca3af;padding:40px 20px;font-size:13px}.log-item[data-v-1bf2e689]{background:#fff;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:10px;overflow:hidden}.log-head[data-v-1bf2e689]{background:#f9fafb;align-items:center;gap:8px;padding:8px 10px;display:flex}.log-type[data-v-1bf2e689]{color:#fff;white-space:nowrap;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.log-source[data-v-1bf2e689]{color:#7c3aed;white-space:nowrap;background:#f3e8ff;border-radius:4px;padding:2px 8px;font-size:10px;font-weight:600}.log-time[data-v-1bf2e689]{color:#9ca3af;font-family:SF Mono,Monaco,Consolas,monospace;font-size:11px}.log-body[data-v-1bf2e689]{padding:10px 12px}.log-footer[data-v-1bf2e689]{border-top:1px dashed #f3f4f6;gap:8px;padding:6px 12px;display:flex}.raw-toggle[data-v-1bf2e689]{color:var(--cs-primary);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:11px}.raw-toggle[data-v-1bf2e689]:hover{text-decoration:underline}.log-raw[data-v-1bf2e689]{color:#e5e7eb;white-space:pre-wrap;word-break:break-word;background:#1f2937;border-top:1px solid #f3f4f6;max-height:280px;margin:0;padding:10px 12px;font-family:SF Mono,Monaco,Consolas,monospace;font-size:11px;line-height:1.5;overflow:auto}.kv-grid[data-v-1bf2e689]{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px;display:grid}.kv[data-v-1bf2e689]{background:#f9fafb;border-radius:6px;flex-direction:column;padding:6px 8px;display:flex}.kv .k[data-v-1bf2e689]{color:#9ca3af;text-transform:uppercase;font-size:10px}.kv .v[data-v-1bf2e689]{color:#1f2937;font-family:SF Mono,Monaco,Consolas,monospace;font-size:13px;font-weight:600}.section-label[data-v-1bf2e689]{color:#6b7280;margin:10px 0 4px;font-size:11px;font-weight:600}.chip-row[data-v-1bf2e689]{flex-wrap:wrap;gap:4px;display:flex}.tool-chip[data-v-1bf2e689]{color:#2d5a47;background:#ecf5ef;border-radius:10px;padding:2px 8px;font-family:SF Mono,Monaco,Consolas,monospace;font-size:11px}.msg-list[data-v-1bf2e689]{flex-direction:column;gap:4px;display:flex}.msg-row[data-v-1bf2e689]{background:#f9fafb;border-radius:6px;align-items:flex-start;gap:6px;padding:5px 8px;display:flex}.msg-role[data-v-1bf2e689]{color:#fff;border-radius:3px;flex-shrink:0;margin-top:1px;padding:2px 6px;font-size:9px;font-weight:700}.msg-text[data-v-1bf2e689]{color:#374151;white-space:pre-wrap;word-break:break-word;flex:1;font-size:12px;line-height:1.5}.msg-tool-hint[data-v-1bf2e689]{color:#7c3aed;flex-shrink:0;font-size:10px}.badge-row[data-v-1bf2e689]{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.badge[data-v-1bf2e689]{color:#2d5a47;background:#dbeee4;border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600}.badge.muted[data-v-1bf2e689]{color:#6b7280;background:#f3f4f6}.badge.warn[data-v-1bf2e689]{color:#92400e;background:#fef3c7}.resp-content[data-v-1bf2e689]{color:#1f2937;white-space:pre-wrap;word-break:break-word;background:#fffbeb;border-left:3px solid #d97706;border-radius:4px;margin-bottom:8px;padding:6px 10px;font-size:12px}.tc-list[data-v-1bf2e689]{flex-direction:column;gap:6px;display:flex}.tc-card[data-v-1bf2e689]{border:1px solid #e5e7eb;border-radius:6px;overflow:hidden}.tc-card.inline[data-v-1bf2e689]{margin-top:4px}.tc-name[data-v-1bf2e689]{color:#2d5a47;background:#ecf5ef;padding:5px 8px;font-size:12px;font-weight:600}.tc-args[data-v-1bf2e689]{color:#e5e7eb;white-space:pre-wrap;word-break:break-word;background:#1f2937;max-height:200px;margin:0;padding:8px;font-family:SF Mono,Monaco,Consolas,monospace;font-size:11px;line-height:1.5;overflow-y:auto}.usage-row[data-v-1bf2e689]{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.usage[data-v-1bf2e689]{color:#047857;background:#ecfdf5;border-radius:10px;padding:2px 8px;font-family:SF Mono,Monaco,Consolas,monospace;font-size:11px}.err-box[data-v-1bf2e689]{color:#991b1b;white-space:pre-wrap;word-break:break-word;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;padding:8px 10px;font-size:12px}.msg-detail[data-v-1bf2e689]{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.tc-inline[data-v-1bf2e689]{background:#f0f7f3;border:1px solid #c3dcd0;border-radius:4px;align-items:baseline;gap:4px;padding:2px 6px;font-size:11px;display:flex}.tc-inline-name[data-v-1bf2e689]{color:#2d5a47;white-space:nowrap;font-weight:600}.tc-inline-args[data-v-1bf2e689]{color:#16402f;word-break:break-all;font-family:SF Mono,Monaco,Consolas,monospace;font-size:10px}.tc-id[data-v-1bf2e689]{color:#9ca3af;font-family:SF Mono,Monaco,Consolas,monospace;font-size:10px}.view-toggle[data-v-1bf2e689]{color:#2d5a47;cursor:pointer;background:#ecf5ef;border:1px solid #b8d4c5;border-radius:10px;margin-left:auto;padding:2px 8px;font-size:11px}.view-toggle[data-v-1bf2e689]:hover{background:#dbeee4}.drawer-enter-active[data-v-1bf2e689],.drawer-leave-active[data-v-1bf2e689]{transition:opacity .25s}.drawer-enter-active .drawer-panel[data-v-1bf2e689],.drawer-leave-active .drawer-panel[data-v-1bf2e689]{transition:transform .25s}.drawer-enter-from[data-v-1bf2e689],.drawer-leave-to[data-v-1bf2e689]{opacity:0}.drawer-enter-from .drawer-panel[data-v-1bf2e689],.drawer-leave-to .drawer-panel[data-v-1bf2e689]{transform:translate(100%)}.flow-section[data-v-1bf2e689]{margin-bottom:14px}.flow-section-title[data-v-1bf2e689]{color:#6b7280;margin-bottom:6px;padding-left:2px;font-size:11px;font-weight:600}.flow-round[data-v-1bf2e689]{border:1px solid #e5e7eb;border-radius:8px;margin-bottom:12px;overflow:hidden}.flow-round-head[data-v-1bf2e689]{color:#fff;background:var(--cs-primary);padding:5px 10px;font-size:12px;font-weight:600}.flow-round-body[data-v-1bf2e689]{flex-direction:column;gap:3px;padding:6px;display:flex}.flow-node[data-v-1bf2e689]{border-left:3px solid var(--cs-primary);background:#f9fafb;border-radius:6px;align-items:center;gap:6px;padding:5px 8px;font-size:12px;display:flex}.flow-node.llm_request[data-v-1bf2e689]{border-left-color:#059669}.flow-node.llm_response[data-v-1bf2e689]{border-left-color:#d97706}.flow-node.tool_call[data-v-1bf2e689]{border-left-color:#7c3aed}.flow-node.tool_result[data-v-1bf2e689]{border-left-color:#2563eb}.flow-node.error[data-v-1bf2e689]{background:#fef2f2;border-left-color:#dc2626}.flow-node.middleware[data-v-1bf2e689]{border-left-color:#0891b2}.flow-ico[data-v-1bf2e689]{flex-shrink:0;font-size:13px}.flow-label[data-v-1bf2e689]{color:#374151;white-space:nowrap;flex-shrink:0;font-weight:600}.flow-detail[data-v-1bf2e689]{color:#6b7280;text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:SF Mono,Monaco,Consolas,monospace;font-size:11px;overflow:hidden}.flow-time[data-v-1bf2e689]{color:#9ca3af;flex-shrink:0;font-family:SF Mono,Monaco,Consolas,monospace;font-size:10px}.chat-dialog[data-v-d3e4f57d]{--cs-primary:#1f4d3a;--cs-primary-rgb:31, 77, 58;--cs-bg:#fff;--cs-bubble-ai:#f3f4f6;--cs-radius:12px;border-radius:var(--cs-radius);background:var(--cs-bg);flex-direction:column;width:100%;height:100%;transition:all .3s;display:flex;overflow:hidden;box-shadow:0 8px 32px #0000001f,0 2px 8px #00000014}.chat-dialog.collapsed[data-v-d3e4f57d]{height:52px}.chat-header[data-v-d3e4f57d]{background:var(--cs-primary);color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.header-left[data-v-d3e4f57d]{align-items:center;gap:8px;display:flex}.header-icon[data-v-d3e4f57d]{font-size:20px}.header-title[data-v-d3e4f57d]{font-size:15px;font-weight:600}.status-dot[data-v-d3e4f57d]{background:#4ade80;border-radius:50%;width:8px;height:8px}.status-dot.pulse[data-v-d3e4f57d]{animation:1.5s infinite pulse-d3e4f57d}@keyframes pulse-d3e4f57d{0%,to{opacity:1}50%{opacity:.4}}.header-actions[data-v-d3e4f57d]{gap:4px;display:flex}.action-btn[data-v-d3e4f57d]{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;transition:background .2s;display:flex}.action-btn[data-v-d3e4f57d]:hover:not(:disabled){background:#ffffff4d}.action-btn[data-v-d3e4f57d]:disabled{opacity:.4;cursor:not-allowed}.action-btn.debug-btn[data-v-d3e4f57d]{position:relative}.action-btn.debug-btn.active[data-v-d3e4f57d]{background:#ffffff73}.debug-badge[data-v-d3e4f57d]{color:#fff;background:#ef4444;border-radius:8px;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:600;line-height:16px;position:absolute;top:-2px;right:-2px}.chat-body[data-v-d3e4f57d]{scroll-behavior:smooth;flex:1;min-height:0;padding:16px;overflow-y:auto}.empty-state[data-v-d3e4f57d]{color:#9ca3af;flex-direction:column;justify-content:center;align-items:center;height:200px;display:flex}.empty-icon[data-v-d3e4f57d]{margin-bottom:12px;font-size:48px}.empty-state p[data-v-d3e4f57d]{font-size:14px}.message-row[data-v-d3e4f57d]{align-items:flex-start;gap:10px;margin-bottom:16px;display:flex}.message-row.user[data-v-d3e4f57d]{flex-direction:row-reverse}.message-avatar[data-v-d3e4f57d]{background:#f3f4f6;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;display:flex}.message-row.user .message-avatar[data-v-d3e4f57d]{background:#ecf5ef}.message-content[data-v-d3e4f57d]{max-width:75%}.message-bubble[data-v-d3e4f57d]{word-break:break-word;white-space:pre-wrap;border-radius:12px;padding:10px 14px;font-size:14px;line-height:1.5}.message-row.assistant .message-bubble[data-v-d3e4f57d]{color:#1f2937;white-space:normal;background:#f3f4f6;border-bottom-left-radius:4px}.message-row.user .message-bubble[data-v-d3e4f57d]{background:var(--cs-primary);color:#fff;border-bottom-right-radius:4px}.message-row.user .message-content[data-v-d3e4f57d]{flex-direction:column;align-items:flex-end;display:flex}.message-time[data-v-d3e4f57d]{color:#9ca3af;margin-top:4px;padding:0 4px;font-size:11px}.typing[data-v-d3e4f57d]{gap:4px;padding:12px 16px;display:flex}.typing .dot[data-v-d3e4f57d]{background:#9ca3af;border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite bounce-d3e4f57d}.typing .dot[data-v-d3e4f57d]:nth-child(2){animation-delay:.2s}.typing .dot[data-v-d3e4f57d]:nth-child(3){animation-delay:.4s}@keyframes bounce-d3e4f57d{0%,80%,to{transform:translateY(0)}40%{transform:translateY(-6px)}}.typing-text[data-v-d3e4f57d]{color:#9ca3af;font-size:13px}.reasoning-block[data-v-d3e4f57d]{background:#f0f7f3;border:1px dashed #b8d4c5;border-radius:8px;margin-bottom:6px;overflow:hidden}.reasoning-header[data-v-d3e4f57d]{cursor:pointer;-webkit-user-select:none;user-select:none;color:#2d5a47;align-items:center;gap:6px;padding:5px 10px;font-size:12px;display:flex}.reasoning-icon[data-v-d3e4f57d]{font-size:13px}.reasoning-title[data-v-d3e4f57d]{font-weight:600}.reasoning-toggle[data-v-d3e4f57d]{margin-left:auto}.reasoning-body[data-v-d3e4f57d]{color:#16402f;white-space:pre-wrap;word-break:break-word;border-top:1px dashed #b8d4c5;max-height:240px;padding:8px 10px;font-size:12px;line-height:1.6;overflow-y:auto}.steps-block[data-v-d3e4f57d]{flex-direction:column;gap:4px;margin-bottom:6px;display:flex}.step-item[data-v-d3e4f57d]{color:#0e7490;background:#ecfeff;border:1px solid #a5f3fc;border-radius:10px;flex-direction:column;align-self:flex-start;align-items:flex-start;gap:3px;max-width:100%;padding:2px 8px;font-size:11px;display:flex}.step-head[data-v-d3e4f57d]{align-items:center;gap:5px;display:inline-flex}.step-icon[data-v-d3e4f57d]{font-size:11px}.step-name[data-v-d3e4f57d]{font-family:SF Mono,Monaco,Consolas,monospace}.step-count[data-v-d3e4f57d]{color:#0891b2;font-size:10px;font-weight:600}.step-status.running[data-v-d3e4f57d]{color:#0891b2}.step-children[data-v-d3e4f57d]{background:#faf5ff;border-left:2px solid #c4b5fd;border-radius:0 8px 8px 0;flex-direction:column;gap:3px;margin-top:4px;padding:4px 8px 4px 10px;display:flex}.step-children-label[data-v-d3e4f57d]{color:#7c3aed;letter-spacing:.3px;font-size:10px;font-weight:600}.step-child[data-v-d3e4f57d]{color:#6d28d9;background:#ede9fe;border:1px solid #ddd6fe;border-radius:8px;align-items:center;gap:5px;padding:1px 7px;font-size:10px;display:inline-flex}.step-child .step-name[data-v-d3e4f57d]{color:#6d28d9}.step-child .step-status.running[data-v-d3e4f57d]{color:#8b5cf6}.stream-cursor[data-v-d3e4f57d],.typing-cursor[data-v-d3e4f57d]{vertical-align:text-bottom;background:var(--cs-primary);width:7px;height:14px;margin-left:2px;animation:1s steps(2,end) infinite blink-d3e4f57d;display:inline-block}@keyframes blink-d3e4f57d{0%,50%{opacity:1}51%,to{opacity:0}}.error-bar[data-v-d3e4f57d]{color:#dc2626;background:#fef2f2;border-radius:8px;align-items:flex-start;gap:10px;margin-top:8px;padding:8px 12px;font-size:13px;display:flex}.error-text[data-v-d3e4f57d]{word-break:break-word;overflow-wrap:anywhere;white-space:pre-wrap;flex:1;min-width:0;max-height:120px;line-height:1.5;overflow-y:auto}.error-bar .retry-btn[data-v-d3e4f57d],.error-bar .undo-btn[data-v-d3e4f57d]{flex-shrink:0;margin-top:1px}.retry-btn[data-v-d3e4f57d]{color:#fff;cursor:pointer;background:#dc2626;border:none;border-radius:6px;flex-shrink:0;padding:3px 12px;font-size:12px;font-weight:600;transition:background .2s}.retry-btn[data-v-d3e4f57d]:hover{background:#b91c1c}.chat-footer[data-v-d3e4f57d]{background:#fafafa;border-top:1px solid #f3f4f6;align-items:flex-end;gap:8px;padding:12px 16px;display:flex}.chat-input[data-v-d3e4f57d]{resize:none;border:1px solid #e5e7eb;border-radius:8px;outline:none;flex:1;max-height:100px;padding:10px 12px;font-family:inherit;font-size:14px;line-height:1.4;transition:border-color .2s;overflow-y:auto}.chat-input[data-v-d3e4f57d]:focus{border-color:var(--cs-primary);box-shadow:0 0 0 2px rgba(var(--cs-primary-rgb), .1)}.send-btn[data-v-d3e4f57d]{background:var(--cs-primary);color:#fff;cursor:pointer;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;transition:opacity .2s,transform .1s;display:flex}.send-btn[data-v-d3e4f57d]:hover:not(:disabled){opacity:.9;transform:scale(1.05)}.send-btn[data-v-d3e4f57d]:active:not(:disabled){transform:scale(.95)}.send-btn[data-v-d3e4f57d]:disabled{opacity:.4;cursor:not-allowed}.send-btn.stop-btn[data-v-d3e4f57d]{background:#9ca3af}.send-btn.stop-btn[data-v-d3e4f57d]:hover:not(:disabled){background:#6b7280;transform:none}.cap-badge[data-v-d3e4f57d]{color:#6b7280;white-space:nowrap;-webkit-user-select:none;user-select:none;background:#f9fafb;border:1px solid #e5e7eb;border-radius:14px;flex-shrink:0;align-self:center;padding:4px 10px;font-size:11px}.msg-actions[data-v-d3e4f57d]{opacity:0;gap:6px;margin-top:4px;transition:opacity .2s;display:flex}.message-row.assistant:hover .msg-actions[data-v-d3e4f57d]{opacity:1}.msg-action-btn[data-v-d3e4f57d]{color:#6b7280;cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:6px;padding:2px 8px;font-size:11px;transition:all .2s}.msg-action-btn[data-v-d3e4f57d]:hover{border-color:var(--cs-primary);color:var(--cs-primary);background:#f0f7f3}.undo-btn[data-v-d3e4f57d]{color:#92400e;cursor:pointer;background:#fffbeb;border:1px solid #f59e0b;border-radius:6px;margin-left:6px;padding:2px 10px;font-size:11px;transition:all .2s}.undo-btn[data-v-d3e4f57d]:hover{background:#fde68a}.undo-foot-btn[data-v-d3e4f57d]{color:#6b7280;cursor:pointer;background:#f9fafb;border:1px solid #e5e7eb;border-radius:14px;flex-shrink:0;align-self:center;padding:4px 10px;font-size:11px;transition:all .2s}.undo-foot-btn[data-v-d3e4f57d]:hover{border-color:var(--cs-primary);color:var(--cs-primary);background:#f0f7f3}.approval-bar[data-v-d3e4f57d]{background:#fffbeb;border:1px solid #f59e0b;border-radius:10px;margin:8px 12px;padding:10px 12px}.approval-head[data-v-d3e4f57d]{color:#92400e;align-items:center;gap:6px;font-size:13px;display:flex}.approval-icon[data-v-d3e4f57d]{font-size:15px}.approval-title code[data-v-d3e4f57d]{color:#78350f;background:#fef3c7;border-radius:4px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.approval-toggle[data-v-d3e4f57d]{color:#92400e;cursor:pointer;background:0 0;border:none;border-radius:4px;margin-left:auto;padding:2px 8px;font-size:12px}.approval-toggle[data-v-d3e4f57d]:hover{background:#fef3c7}.approval-args[data-v-d3e4f57d]{color:#57534e;white-space:pre-wrap;word-break:break-all;background:#fff;border:1px solid #fde68a;border-radius:6px;max-height:140px;margin:8px 0;padding:8px;font-size:12px;overflow:auto}.approval-actions[data-v-d3e4f57d]{justify-content:flex-end;gap:8px;display:flex}.approval-actions button[data-v-d3e4f57d]{cursor:pointer;border:none;border-radius:6px;padding:5px 16px;font-size:13px;transition:opacity .2s}.approval-deny[data-v-d3e4f57d]{color:#6b7280;background:#f3f4f6;border:1px solid #e5e7eb}.approval-deny[data-v-d3e4f57d]:hover{color:#374151;background:#e5e7eb}.approval-allow[data-v-d3e4f57d]{background:var(--cs-primary);color:#fff}.approval-allow[data-v-d3e4f57d]:hover{opacity:.9}.approval-question[data-v-d3e4f57d]{color:#57534e;white-space:pre-wrap;background:#fff;border:1px solid #fde68a;border-radius:6px;margin:8px 0;padding:8px 10px;font-size:13px;line-height:1.5}.approval-context[data-v-d3e4f57d]{color:#92400e;margin:4px 0 8px;font-size:12px;line-height:1.5}.approval-recommend[data-v-d3e4f57d]{color:#1f4d3a;margin:4px 0 8px;font-size:12px}.approval-opt[data-v-d3e4f57d]{border:1px solid var(--cs-primary);color:var(--cs-primary);cursor:pointer;background:#fff;border-radius:6px;padding:5px 14px;font-size:13px;transition:all .2s}.approval-opt[data-v-d3e4f57d]:hover{background:var(--cs-primary);color:#fff}
|
|
2
|
-
/*$vite$:1*/
|