mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-27 03:43:33 +00:00
refactor(streaming): share approval and stream message builders
This commit is contained in:
53
src/agents/stream-message-shared.ts
Normal file
53
src/agents/stream-message-shared.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import type { AssistantMessage, StopReason, Usage } from "@mariozechner/pi-ai";
|
||||
|
||||
export type StreamModelDescriptor = {
|
||||
api: string;
|
||||
provider: string;
|
||||
id: string;
|
||||
};
|
||||
|
||||
export function buildZeroUsage(): Usage {
|
||||
return {
|
||||
input: 0,
|
||||
output: 0,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
totalTokens: 0,
|
||||
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
||||
};
|
||||
}
|
||||
|
||||
export function buildAssistantMessageWithZeroUsage(params: {
|
||||
model: StreamModelDescriptor;
|
||||
content: AssistantMessage["content"];
|
||||
stopReason: StopReason;
|
||||
timestamp?: number;
|
||||
}): AssistantMessage {
|
||||
return {
|
||||
role: "assistant",
|
||||
content: params.content,
|
||||
stopReason: params.stopReason,
|
||||
api: params.model.api,
|
||||
provider: params.model.provider,
|
||||
model: params.model.id,
|
||||
usage: buildZeroUsage(),
|
||||
timestamp: params.timestamp ?? Date.now(),
|
||||
};
|
||||
}
|
||||
|
||||
export function buildStreamErrorAssistantMessage(params: {
|
||||
model: StreamModelDescriptor;
|
||||
errorMessage: string;
|
||||
timestamp?: number;
|
||||
}): AssistantMessage & { stopReason: "error"; errorMessage: string } {
|
||||
return {
|
||||
...buildAssistantMessageWithZeroUsage({
|
||||
model: params.model,
|
||||
content: [],
|
||||
stopReason: "error",
|
||||
timestamp: params.timestamp,
|
||||
}),
|
||||
stopReason: "error",
|
||||
errorMessage: params.errorMessage,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user