feat(audit): log backend routing decisions and fallback events
This commit is contained in:
+28
-2
@@ -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,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user