feat: persist code agent session facts
This commit is contained in:
@@ -281,7 +281,8 @@ export function summarizeCodeAgentPayload(payload, { httpStatus = null, traceId
|
||||
implementationType: null,
|
||||
runnerLimitations: [],
|
||||
codexStdioFeasibility: null,
|
||||
longLivedSessionGate: null
|
||||
longLivedSessionGate: null,
|
||||
conversationFacts: null
|
||||
};
|
||||
}
|
||||
|
||||
@@ -329,7 +330,8 @@ export function summarizeCodeAgentPayload(payload, { httpStatus = null, traceId
|
||||
implementationType: stringOrNull(payload.implementationType),
|
||||
runnerLimitations: summarizeStringList(payload.runnerLimitations),
|
||||
codexStdioFeasibility: summarizeCodexStdioFeasibility(payload.codexStdioFeasibility),
|
||||
longLivedSessionGate: summarizeLongLivedSessionGate(payload.longLivedSessionGate)
|
||||
longLivedSessionGate: summarizeLongLivedSessionGate(payload.longLivedSessionGate),
|
||||
conversationFacts: summarizeConversationFacts(payload.conversationFacts)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -357,7 +359,8 @@ export function summarizeCodeAgentPayload(payload, { httpStatus = null, traceId
|
||||
implementationType: stringOrNull(payload.implementationType),
|
||||
runnerLimitations: summarizeStringList(payload.runnerLimitations),
|
||||
codexStdioFeasibility: summarizeCodexStdioFeasibility(payload.codexStdioFeasibility),
|
||||
longLivedSessionGate: summarizeLongLivedSessionGate(payload.longLivedSessionGate)
|
||||
longLivedSessionGate: summarizeLongLivedSessionGate(payload.longLivedSessionGate),
|
||||
conversationFacts: summarizeConversationFacts(payload.conversationFacts)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -793,6 +796,39 @@ function summarizeSession(value) {
|
||||
};
|
||||
}
|
||||
|
||||
function summarizeConversationFacts(value) {
|
||||
if (!value || typeof value !== "object") return null;
|
||||
return {
|
||||
conversationId: stringOrNull(value.conversationId),
|
||||
sessionId: stringOrNull(value.sessionId),
|
||||
sessionStatus: stringOrNull(value.sessionStatus),
|
||||
sessionMode: stringOrNull(value.sessionMode),
|
||||
capabilityLevel: stringOrNull(value.capabilityLevel),
|
||||
runnerKind: stringOrNull(value.runnerKind),
|
||||
workspace: stringOrNull(value.workspace),
|
||||
sandbox: stringOrNull(value.sandbox),
|
||||
turnCount: typeof value.turnCount === "number" ? value.turnCount : null,
|
||||
latestTraceId: stringOrNull(value.latestTraceId),
|
||||
traceIds: Array.isArray(value.traceIds) ? value.traceIds.map(stringOrNull).filter(Boolean).slice(-6) : [],
|
||||
latestSkills: value.latestSkills && typeof value.latestSkills === "object"
|
||||
? {
|
||||
status: stringOrNull(value.latestSkills.status),
|
||||
count: typeof value.latestSkills.count === "number" ? value.latestSkills.count : null,
|
||||
totalCount: typeof value.latestSkills.totalCount === "number" ? value.latestSkills.totalCount : null,
|
||||
names: Array.isArray(value.latestSkills.names) ? value.latestSkills.names.map(stringOrNull).filter(Boolean).slice(0, 8) : []
|
||||
}
|
||||
: null,
|
||||
recentToolCalls: Array.isArray(value.recentToolCalls)
|
||||
? value.recentToolCalls.map((tool) => ({
|
||||
name: stringOrNull(tool?.name),
|
||||
status: stringOrNull(tool?.status)
|
||||
})).filter((tool) => tool.name || tool.status).slice(-8)
|
||||
: [],
|
||||
valuesRedacted: value.valuesRedacted === true,
|
||||
secretMaterialStored: value.secretMaterialStored === true
|
||||
};
|
||||
}
|
||||
|
||||
function summarizeCodexStdioFeasibility(value) {
|
||||
if (!value || typeof value !== "object") return null;
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user