feat(audit): log backend routing decisions and fallback events

This commit is contained in:
William Valentin
2026-02-17 09:50:44 -08:00
parent 4400bdfcc9
commit 898828bb70
3 changed files with 58 additions and 2 deletions
+28 -2
View File
@@ -919,9 +919,25 @@ export function createMessageRouter(deps: {
// buildUserMessage() in the agent will create native audio content parts
const requestedBackend = agentConfig?.backend ?? deps.defaultName;
const sessionIdForAudit = `${msg.channel}:${msg.senderId}`;
const selectedBackend = requestedBackend && requestedBackend !== 'native'
? deps.externalBackends?.[requestedBackend]
: undefined;
const selectedBackendForAudit: 'native' | ExternalBackendName = selectedBackend && requestedBackend
? requestedBackend
: 'native';
auditLogger?.backendRoute?.({
session_id: sessionIdForAudit,
channel: msg.channel,
sender: msg.senderId,
selected_backend: selectedBackendForAudit,
source: agentConfig?.backend
? 'agent_override'
: selectedBackend
? 'default_external'
: 'native',
});
if (selectedBackend && (!attachments || attachments.length === 0)) {
try {
@@ -935,8 +951,18 @@ export function createMessageRouter(deps: {
await reply({ text: response, replyTo: msg.id });
return;
} catch (error) {
const message = error instanceof Error ? error.message : String(error);
console.warn(`External backend "${selectedBackend.name}" failed, falling back to native: ${message}`);
const detail = error instanceof Error ? error.message : String(error);
console.warn(`External backend "${selectedBackend.name}" failed, falling back to native: ${detail}`);
auditLogger?.backendFallback?.({
session_id: sessionIdForAudit,
channel: msg.channel,
sender: msg.senderId,
from_backend: (requestedBackend && requestedBackend !== 'native')
? requestedBackend
: (selectedBackend.name as ExternalBackendName),
to_backend: 'native',
reason: detail,
});
}
}