refactor: scope transcript rewrite broadcasts

This commit is contained in:
Peter Steinberger
2026-05-08 11:42:52 +01:00
parent df01411def
commit 3c2b3debb2
7 changed files with 37 additions and 0 deletions

View File

@@ -235,6 +235,7 @@ export async function compactEmbeddedPiSession(
}
await runContextEngineMaintenance({
contextEngine,
sessionAgentId: agentIds.sessionAgentId,
sessionId: postCompactionSessionId,
sessionKey: params.sessionKey,
sessionFile: postCompactionSessionFile,

View File

@@ -43,6 +43,7 @@ const DEFERRED_TURN_MAINTENANCE_ABORT_STATE_KEY = Symbol.for(
);
type DeferredTurnMaintenanceScheduleParams = {
contextEngine: ContextEngine;
sessionAgentId?: string;
sessionId: string;
sessionKey: string;
sessionFile: string;
@@ -273,6 +274,7 @@ function promoteTurnMaintenanceTaskVisibility(params: {
* context-engine runtime context payload.
*/
export function buildContextEngineMaintenanceRuntimeContext(params: {
sessionAgentId?: string;
sessionId: string;
sessionKey?: string;
sessionFile: string;
@@ -305,6 +307,7 @@ export function buildContextEngineMaintenanceRuntimeContext(params: {
const rewriteTranscriptEntriesInFile = async () =>
await rewriteTranscriptEntriesInSqliteTranscript({
transcriptPath: params.sessionFile,
agentId: params.sessionAgentId,
sessionId: params.sessionId,
sessionKey: params.sessionKey,
config: params.config,
@@ -324,6 +327,7 @@ export function buildContextEngineMaintenanceRuntimeContext(params: {
async function executeContextEngineMaintenance(params: {
contextEngine: ContextEngine;
sessionAgentId?: string;
sessionId: string;
sessionKey?: string;
sessionFile: string;
@@ -342,6 +346,7 @@ async function executeContextEngineMaintenance(params: {
sessionKey: params.sessionKey,
sessionFile: params.sessionFile,
runtimeContext: buildContextEngineMaintenanceRuntimeContext({
sessionAgentId: params.sessionAgentId,
sessionId: params.sessionId,
sessionKey: params.sessionKey,
sessionFile: params.sessionFile,
@@ -367,6 +372,7 @@ async function executeContextEngineMaintenance(params: {
async function runDeferredTurnMaintenanceWorker(params: {
contextEngine: ContextEngine;
sessionAgentId?: string;
sessionId: string;
sessionKey: string;
sessionFile: string;
@@ -447,6 +453,7 @@ async function runDeferredTurnMaintenanceWorker(params: {
const result = await executeContextEngineMaintenance({
contextEngine: params.contextEngine,
sessionAgentId: params.sessionAgentId,
sessionId: params.sessionId,
sessionKey: params.sessionKey,
sessionFile: params.sessionFile,
@@ -572,6 +579,7 @@ function scheduleDeferredTurnMaintenance(params: DeferredTurnMaintenanceSchedule
runPromise = enqueueCommandInLane(resolveDeferredTurnMaintenanceLane(sessionKey), async () =>
runDeferredTurnMaintenanceWorker({
contextEngine: params.contextEngine,
sessionAgentId: params.sessionAgentId,
sessionId: params.sessionId,
sessionKey,
sessionFile: params.sessionFile,
@@ -628,6 +636,7 @@ function scheduleDeferredTurnMaintenance(params: DeferredTurnMaintenanceSchedule
*/
export async function runContextEngineMaintenance(params: {
contextEngine?: ContextEngine;
sessionAgentId?: string;
sessionId: string;
sessionKey?: string;
sessionFile: string;
@@ -652,6 +661,7 @@ export async function runContextEngineMaintenance(params: {
try {
scheduleDeferredTurnMaintenance({
contextEngine: params.contextEngine,
sessionAgentId: params.sessionAgentId,
sessionId: params.sessionId,
sessionKey: params.sessionKey ?? params.sessionId,
sessionFile: params.sessionFile,
@@ -669,6 +679,7 @@ export async function runContextEngineMaintenance(params: {
try {
return await executeContextEngineMaintenance({
contextEngine: params.contextEngine,
sessionAgentId: params.sessionAgentId,
sessionId: params.sessionId,
sessionKey: params.sessionKey,
sessionFile: params.sessionFile,

View File

@@ -1857,6 +1857,7 @@ export async function runEmbeddedPiAgent(
adoptCompactionTranscript(compactResult);
await runContextEngineMaintenance({
contextEngine,
sessionAgentId,
sessionId: activeSessionId,
sessionKey: params.sessionKey,
sessionFile: activeSessionFile,
@@ -1895,6 +1896,7 @@ export async function runEmbeddedPiAgent(
cfg: params.config,
agentId: sessionAgentId,
}),
agentId: sessionAgentId,
sessionId: activeSessionId,
sessionKey: params.sessionKey,
config: params.config,
@@ -1957,6 +1959,7 @@ export async function runEmbeddedPiAgent(
sessionFile: activeSessionFile,
contextWindowTokens,
maxCharsOverride: toolResultMaxChars,
agentId: sessionAgentId,
sessionId: activeSessionId,
sessionKey: params.sessionKey,
config: params.config,

View File

@@ -1466,6 +1466,7 @@ export async function runEmbeddedAttempt(
runMaintenance: async (contextParams) =>
await runContextEngineMaintenance({
contextEngine: contextParams.contextEngine as never,
sessionAgentId,
sessionId: contextParams.sessionId,
sessionKey: contextParams.sessionKey,
sessionFile: contextParams.sessionFile,
@@ -2593,6 +2594,7 @@ export async function runEmbeddedAttempt(
sessionManager: activeSessionManager,
contextWindowTokens: contextTokenBudget,
maxCharsOverride: toolResultMaxChars,
agentId: sessionAgentId,
sessionFile: params.sessionFile,
sessionId: params.sessionId,
sessionKey: params.sessionKey,
@@ -3135,6 +3137,7 @@ export async function runEmbeddedAttempt(
sessionManager,
contextWindowTokens: contextTokenBudget,
maxCharsOverride: toolResultMaxChars,
agentId: sessionAgentId,
sessionFile: params.sessionFile,
sessionId: params.sessionId,
sessionKey: params.sessionKey,
@@ -3463,6 +3466,7 @@ export async function runEmbeddedAttempt(
runMaintenance: async (contextParams) =>
await runContextEngineMaintenance({
contextEngine: contextParams.contextEngine as never,
sessionAgentId,
sessionId: contextParams.sessionId,
sessionKey: contextParams.sessionKey,
sessionFile: contextParams.sessionFile,

View File

@@ -617,6 +617,7 @@ function truncateOversizedToolResultsInExistingSessionManager(params: {
sessionManager: SessionManager;
contextWindowTokens: number;
maxCharsOverride?: number;
agentId?: string;
sessionFile?: string;
sessionId?: string;
sessionKey?: string;
@@ -655,6 +656,8 @@ function truncateOversizedToolResultsInExistingSessionManager(params: {
});
if (rewriteResult.changed && params.sessionFile) {
emitSessionTranscriptUpdate({
...(params.agentId ? { agentId: params.agentId } : {}),
...(params.sessionId ? { sessionId: params.sessionId } : {}),
sessionFile: params.sessionFile,
sessionKey: params.sessionKey,
});
@@ -679,6 +682,7 @@ async function truncateOversizedToolResultsInTranscriptState(params: {
sessionFile: string;
contextWindowTokens: number;
maxCharsOverride?: number;
agentId?: string;
sessionId?: string;
sessionKey?: string;
config?: unknown;
@@ -722,6 +726,8 @@ async function truncateOversizedToolResultsInTranscriptState(params: {
appendedEntries: rewriteResult.appendedEntries,
});
emitSessionTranscriptUpdate({
...(params.agentId ? { agentId: params.agentId } : {}),
...(params.sessionId ? { sessionId: params.sessionId } : {}),
sessionFile: params.sessionFile,
sessionKey: params.sessionKey,
});
@@ -745,6 +751,7 @@ export function truncateOversizedToolResultsInSessionManager(params: {
sessionManager: SessionManager;
contextWindowTokens: number;
maxCharsOverride?: number;
agentId?: string;
sessionFile?: string;
sessionId?: string;
sessionKey?: string;
@@ -762,6 +769,7 @@ export async function truncateOversizedToolResultsInSession(params: {
sessionFile: string;
contextWindowTokens: number;
maxCharsOverride?: number;
agentId?: string;
sessionId?: string;
sessionKey?: string;
config?: unknown;
@@ -774,6 +782,7 @@ export async function truncateOversizedToolResultsInSession(params: {
state,
contextWindowTokens,
maxCharsOverride: params.maxCharsOverride,
agentId: params.agentId,
sessionFile,
sessionId: params.sessionId,
sessionKey: params.sessionKey,

View File

@@ -351,6 +351,7 @@ export function rewriteTranscriptEntriesInState(params: {
*/
export async function rewriteTranscriptEntriesInSqliteTranscript(params: {
transcriptPath: string;
agentId?: string;
sessionId?: string;
sessionKey?: string;
request: TranscriptRewriteRequest;
@@ -369,6 +370,8 @@ export async function rewriteTranscriptEntriesInSqliteTranscript(params: {
appendedEntries: result.appendedEntries,
});
emitSessionTranscriptUpdate({
...(params.agentId ? { agentId: params.agentId } : {}),
...(params.sessionId ? { sessionId: params.sessionId } : {}),
sessionFile: params.transcriptPath,
sessionKey: params.sessionKey,
});

View File

@@ -1016,6 +1016,8 @@ function extractTranscriptUserText(content: unknown): string | undefined {
async function rewriteChatSendUserTurnMediaPaths(params: {
transcriptPath: string;
agentId: string;
sessionId: string;
sessionKey: string;
message: string;
savedImages: SavedMedia[];
@@ -1062,6 +1064,8 @@ async function rewriteChatSendUserTurnMediaPaths(params: {
};
await rewriteTranscriptEntriesInSqliteTranscript({
transcriptPath: params.transcriptPath,
agentId: params.agentId,
sessionId: params.sessionId,
sessionKey: params.sessionKey,
config: params.cfg,
request: {
@@ -2310,6 +2314,8 @@ export const chatHandlers: GatewayRequestHandlers = {
transcriptMediaRewriteDone = true;
await rewriteChatSendUserTurnMediaPaths({
transcriptPath,
agentId,
sessionId: resolvedSessionId,
sessionKey,
message: parsedMessage,
savedImages: await persistedImagesPromise,