M2b:导入改造产出可审阅灵胚(启镜物化世谱)与组装管线(符文展开/火候进入 IR),Kernel 打通采样参数链路
This commit is contained in:
1 parent
e6a3b7121f
commit
5f36e3785c
86 files changed
+424
-14455
No files matched your search
@@ -1,68 +0,0 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
|
||||
vi.mock("./client", () => ({
|
||||
apiDelete: vi.fn(),
|
||||
apiGet: vi.fn(),
|
||||
apiPatch: vi.fn(),
|
||||
apiPost: vi.fn(),
|
||||
}));
|
||||
|
||||
import { apiDelete, apiGet, apiPatch, apiPost } from "./client";
|
||||
import {
|
||||
createSession,
|
||||
deleteSession,
|
||||
listMessages,
|
||||
listSessions,
|
||||
sendMessage,
|
||||
updateSession,
|
||||
} from "./chat";
|
||||
|
||||
describe("chat api", () => {
|
||||
it("createSession POST /chat/sessions", async () => {
|
||||
vi.mocked(apiPost).mockResolvedValue({ id: "session_1" });
|
||||
await createSession({ title: "新会话" });
|
||||
expect(apiPost).toHaveBeenCalledWith("/chat/sessions", { title: "新会话" });
|
||||
});
|
||||
|
||||
it("sendMessage POST 会话消息带 modality & idempotencyKey", async () => {
|
||||
vi.mocked(apiPost).mockResolvedValue({ run_id: "run_1" });
|
||||
await sendMessage("session_1", { content: "你好" }, "idem_1");
|
||||
expect(apiPost).toHaveBeenCalledWith(
|
||||
"/chat/sessions/session_1/messages",
|
||||
{ content: "你好", modality: "text" },
|
||||
{ idempotencyKey: "idem_1" },
|
||||
);
|
||||
});
|
||||
|
||||
it("listMessages GET 分页消息", async () => {
|
||||
vi.mocked(apiGet).mockResolvedValue({ items: [], total: 0 });
|
||||
await listMessages("session_1", { page: 1, page_size: 20 });
|
||||
expect(apiGet).toHaveBeenCalledWith("/chat/sessions/session_1/messages", {
|
||||
page: 1,
|
||||
page_size: 20,
|
||||
});
|
||||
});
|
||||
|
||||
it("listSessions GET 支持 character_id 过滤", async () => {
|
||||
vi.mocked(apiGet).mockResolvedValue({ items: [], total: 0 });
|
||||
await listSessions({ character_id: "char_1", status: "active" });
|
||||
expect(apiGet).toHaveBeenCalledWith("/chat/sessions", {
|
||||
character_id: "char_1",
|
||||
status: "active",
|
||||
});
|
||||
});
|
||||
|
||||
it("updateSession PATCH /chat/sessions/:id", async () => {
|
||||
vi.mocked(apiPatch).mockResolvedValue({ id: "session_1" });
|
||||
await updateSession("session_1", { title: "新标题" });
|
||||
expect(apiPatch).toHaveBeenCalledWith("/chat/sessions/session_1", {
|
||||
title: "新标题",
|
||||
});
|
||||
});
|
||||
|
||||
it("deleteSession DELETE /chat/sessions/:id", async () => {
|
||||
vi.mocked(apiDelete).mockResolvedValue(undefined);
|
||||
await deleteSession("session_1");
|
||||
expect(apiDelete).toHaveBeenCalledWith("/chat/sessions/session_1");
|
||||
});
|
||||
});
|
||||
@@ -1,85 +0,0 @@
|
||||
/**
|
||||
* 对话 API Client(对应 后端生成的 OpenAPI 契约 §7)。
|
||||
* 创建会话、发送消息、拉取历史消息。
|
||||
*/
|
||||
|
||||
import { apiDelete, apiGet, apiPatch, apiPost } from "./client";
|
||||
import type {
|
||||
ChatMessage,
|
||||
ChatSession,
|
||||
CreateSessionRequest,
|
||||
Paginated,
|
||||
SendMessageRequest,
|
||||
SendMessageResponse,
|
||||
UpdateSessionRequest,
|
||||
} from "@/types/api";
|
||||
|
||||
/** 创建会话;character_id 省略时后端使用当前激活人物 */
|
||||
export function createSession(body: CreateSessionRequest = {}) {
|
||||
return apiPost<ChatSession>("/chat/sessions", body);
|
||||
}
|
||||
|
||||
/** 获取单个会话详情 */
|
||||
export function getSession(sessionId: string) {
|
||||
return apiGet<ChatSession>(`/chat/sessions/${sessionId}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送文本消息。
|
||||
* 使用 Idempotency-Key 防止重复提交产生重复 Run(API §5.6)。
|
||||
*/
|
||||
export function sendMessage(
|
||||
sessionId: string,
|
||||
body: SendMessageRequest,
|
||||
idempotencyKey: string,
|
||||
) {
|
||||
return apiPost<SendMessageResponse>(
|
||||
`/chat/sessions/${sessionId}/messages`,
|
||||
{ ...body, modality: body.modality ?? "text" },
|
||||
{ idempotencyKey },
|
||||
);
|
||||
}
|
||||
|
||||
/** 拉取会话历史消息 */
|
||||
export function listMessages(
|
||||
sessionId: string,
|
||||
params?: { page?: number; page_size?: number },
|
||||
) {
|
||||
return apiGet<Paginated<ChatMessage>>(
|
||||
`/chat/sessions/${sessionId}/messages`,
|
||||
params,
|
||||
);
|
||||
}
|
||||
|
||||
/** 会话列表(可选按人物 / 状态过滤) */
|
||||
export function listSessions(params?: {
|
||||
character_id?: string;
|
||||
status?: ChatSession["status"];
|
||||
}) {
|
||||
return apiGet<Paginated<ChatSession>>("/chat/sessions", params);
|
||||
}
|
||||
|
||||
/** 更新会话(重命名 / 归档 / 删除态切换) */
|
||||
export function updateSession(sessionId: string, body: UpdateSessionRequest) {
|
||||
return apiPatch<ChatSession>(`/chat/sessions/${sessionId}`, body);
|
||||
}
|
||||
|
||||
/** 删除会话(软删除,status → deleted) */
|
||||
export function deleteSession(sessionId: string) {
|
||||
return apiDelete<void>(`/chat/sessions/${sessionId}`);
|
||||
}
|
||||
|
||||
/** 选择/激活消息的某个历史版本。后端存储 active_version_idx,refresh 后返回 */
|
||||
export function selectVersion(
|
||||
sessionId: string,
|
||||
messageId: string,
|
||||
versionIdx: number,
|
||||
) {
|
||||
return apiPatch<{
|
||||
message_id: string;
|
||||
active_version_idx: number;
|
||||
versions: import("@/types/api").MessageVersion[];
|
||||
}>(`/chat/sessions/${sessionId}/messages/${messageId}/version`, {
|
||||
version_idx: versionIdx,
|
||||
});
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
/**
|
||||
* 辰正时态 API Client(对应 后端生成的 OpenAPI 契约 §10)。
|
||||
*
|
||||
* 提供数字生命对时间流逝的感知:时态快照、纪念日、相识时长与配置。
|
||||
*/
|
||||
|
||||
import { apiDelete, apiGet, apiPatch, apiPost } from "./client";
|
||||
import type {
|
||||
AcquaintanceInfo,
|
||||
Anniversary,
|
||||
CreateAnniversaryRequest,
|
||||
TimeConfig,
|
||||
TimeSnapshotResponse,
|
||||
UpdateAnniversaryRequest,
|
||||
} from "@/types/api";
|
||||
|
||||
/** 当前时态快照 + 调制因子(GET /time/snapshot) */
|
||||
export function getTimeSnapshot() {
|
||||
return apiGet<TimeSnapshotResponse>("/time/snapshot");
|
||||
}
|
||||
|
||||
/** 纪念日列表(GET /time/anniversaries) */
|
||||
export function listAnniversaries() {
|
||||
return apiGet<Anniversary[]>("/time/anniversaries");
|
||||
}
|
||||
|
||||
/** 新增纪念日(POST /time/anniversaries) */
|
||||
export function createAnniversary(body: CreateAnniversaryRequest) {
|
||||
return apiPost<Anniversary>("/time/anniversaries", body);
|
||||
}
|
||||
|
||||
/** 单条纪念日(GET /time/anniversaries/{id}) */
|
||||
export function getAnniversary(id: string) {
|
||||
return apiGet<Anniversary>(`/time/anniversaries/${id}`);
|
||||
}
|
||||
|
||||
/** 更新纪念日(PATCH /time/anniversaries/{id}) */
|
||||
export function updateAnniversary(id: string, body: UpdateAnniversaryRequest) {
|
||||
return apiPatch<Anniversary>(`/time/anniversaries/${id}`, body);
|
||||
}
|
||||
|
||||
/** 删除纪念日(DELETE /time/anniversaries/{id}) */
|
||||
export function deleteAnniversary(id: string) {
|
||||
return apiDelete<void>(`/time/anniversaries/${id}`);
|
||||
}
|
||||
|
||||
/** 相识时长(GET /time/acquaintance) */
|
||||
export function getAcquaintance() {
|
||||
return apiGet<AcquaintanceInfo>("/time/acquaintance");
|
||||
}
|
||||
|
||||
/** 时态配置(GET /time/config,只读) */
|
||||
export function getTimeConfig() {
|
||||
return apiGet<TimeConfig>("/time/config");
|
||||
}
|
||||
Reference in new issue
Block a user