refactor: 聊天室 Agent 重构 — ToolLoopAgent + 论坛式布局
后端: - 删除 agent-stream.ts,新建 alfred-agent.ts (ToolLoopAgent 工厂) - 新建 get-current-time.ts 工具 (zod schema) - 重构 send.ts: createAgentUIStreamResponse + onFinish 可靠持久化 前端: - 删除 MessageBubble.tsx,新建 ToolCallCard.tsx (四态) - 重构 ChatPanel.tsx: 论坛式 Card 布局 + PartRenderer 分派 - 移除 @ant-design/x 依赖,改用 antd 组件 + streamdown 依赖: + zod + streamdown - @ant-design/x - @ant-design/x-markdown 测试: 306 pass, typecheck/lint 0 errors
This commit is contained in:
25
tests/server/ai/tools/get-current-time.test.ts
Normal file
25
tests/server/ai/tools/get-current-time.test.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { describe, expect, test } from "bun:test";
|
||||
|
||||
import { formatCurrentTime } from "../../../../src/server/ai/tools/get-current-time";
|
||||
|
||||
describe("getCurrentTime 工具", () => {
|
||||
test("formatCurrentTime 返回 ISO/local/timestamp", () => {
|
||||
const result = formatCurrentTime();
|
||||
expect(result).toBeDefined();
|
||||
expect(typeof result.iso).toBe("string");
|
||||
expect(typeof result.local).toBe("string");
|
||||
expect(typeof result.timestamp).toBe("number");
|
||||
});
|
||||
|
||||
test("formatCurrentTime 指定 timezone", () => {
|
||||
const result = formatCurrentTime("Asia/Shanghai");
|
||||
expect(result).toBeDefined();
|
||||
expect(typeof result.local).toBe("string");
|
||||
});
|
||||
|
||||
test("formatCurrentTime 无效 timezone 优雅降级", () => {
|
||||
const result = formatCurrentTime("Invalid/Zone");
|
||||
expect(result).toBeDefined();
|
||||
expect(typeof result.local).toBe("string");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user