feat: add onCompactionStart callback to handle context compaction notifications
This commit is contained in:
parent
6372242da7
commit
8817f6706d
@ -367,6 +367,7 @@ export async function runEmbeddedPiAgent(
|
|||||||
log.warn(
|
log.warn(
|
||||||
`context overflow detected; attempting auto-compaction for ${provider}/${modelId}`,
|
`context overflow detected; attempting auto-compaction for ${provider}/${modelId}`,
|
||||||
);
|
);
|
||||||
|
await params.onCompactionStart?.();
|
||||||
overflowCompactionAttempted = true;
|
overflowCompactionAttempted = true;
|
||||||
const compactResult = await compactEmbeddedPiSessionDirect({
|
const compactResult = await compactEmbeddedPiSessionDirect({
|
||||||
sessionId: params.sessionId,
|
sessionId: params.sessionId,
|
||||||
|
|||||||
@ -86,6 +86,7 @@ export type RunEmbeddedPiAgentParams = {
|
|||||||
onBlockReplyFlush?: () => void | Promise<void>;
|
onBlockReplyFlush?: () => void | Promise<void>;
|
||||||
blockReplyBreak?: "text_end" | "message_end";
|
blockReplyBreak?: "text_end" | "message_end";
|
||||||
blockReplyChunking?: BlockReplyChunking;
|
blockReplyChunking?: BlockReplyChunking;
|
||||||
|
onCompactionStart?: () => void | Promise<void>;
|
||||||
onReasoningStream?: (payload: { text?: string; mediaUrls?: string[] }) => void | Promise<void>;
|
onReasoningStream?: (payload: { text?: string; mediaUrls?: string[] }) => void | Promise<void>;
|
||||||
onToolResult?: (payload: { text?: string; mediaUrls?: string[] }) => void | Promise<void>;
|
onToolResult?: (payload: { text?: string; mediaUrls?: string[] }) => void | Promise<void>;
|
||||||
onAgentEvent?: (evt: { stream: string; data: Record<string, unknown> }) => void;
|
onAgentEvent?: (evt: { stream: string; data: Record<string, unknown> }) => void;
|
||||||
|
|||||||
@ -276,6 +276,13 @@ export async function runAgentTurnWithFallback(params: {
|
|||||||
abortSignal: params.opts?.abortSignal,
|
abortSignal: params.opts?.abortSignal,
|
||||||
blockReplyBreak: params.resolvedBlockStreamingBreak,
|
blockReplyBreak: params.resolvedBlockStreamingBreak,
|
||||||
blockReplyChunking: params.blockReplyChunking,
|
blockReplyChunking: params.blockReplyChunking,
|
||||||
|
onCompactionStart: async () => {
|
||||||
|
if (params.opts?.onPartialReply) {
|
||||||
|
await params.opts.onPartialReply({
|
||||||
|
text: "🧹 Compacting context, please wait...",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
onPartialReply: allowPartialStream
|
onPartialReply: allowPartialStream
|
||||||
? async (payload) => {
|
? async (payload) => {
|
||||||
const textForTyping = await handlePartialForTyping(payload);
|
const textForTyping = await handlePartialForTyping(payload);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user