fix(tess): redact chat persistence and egress

This commit is contained in:
Jarvis
2026-07-12 18:47:20 -05:00
parent 5f9067cf57
commit 0de3d51466

View File

@@ -18,6 +18,7 @@ import {
} from '@mosaicstack/discord-plugin'; } from '@mosaicstack/discord-plugin';
import type { Auth } from '@mosaicstack/auth'; import type { Auth } from '@mosaicstack/auth';
import type { Brain } from '@mosaicstack/brain'; import type { Brain } from '@mosaicstack/brain';
import { redactSensitiveContent } from '@mosaicstack/log';
import type { import type {
SetThinkingPayload, SetThinkingPayload,
SlashCommandApprovalResultPayload, SlashCommandApprovalResultPayload,
@@ -317,7 +318,7 @@ export class ChatGateway implements OnGatewayInit, OnGatewayConnection, OnGatewa
{ {
conversationId, conversationId,
role: 'user', role: 'user',
content: data.content, content: redactSensitiveContent(data.content).content,
metadata: { metadata: {
timestamp: new Date().toISOString(), timestamp: new Date().toISOString(),
...(correlationId ...(correlationId
@@ -327,6 +328,7 @@ export class ChatGateway implements OnGatewayInit, OnGatewayConnection, OnGatewa
discordUserId: discordIngress?.userId, discordUserId: discordIngress?.userId,
} }
: {}), : {}),
classifications: redactSensitiveContent(data.content).classifications,
}, },
}, },
userId, userId,
@@ -831,8 +833,11 @@ export class ChatGateway implements OnGatewayInit, OnGatewayConnection, OnGatewa
{ {
conversationId, conversationId,
role: 'assistant', role: 'assistant',
content: cs.assistantText, content: redactSensitiveContent(cs.assistantText).content,
metadata, metadata: {
...metadata,
classifications: redactSensitiveContent(cs.assistantText).classifications,
},
}, },
userId, userId,
) )
@@ -856,17 +861,18 @@ export class ChatGateway implements OnGatewayInit, OnGatewayConnection, OnGatewa
if (assistantEvent.type === 'text_delta') { if (assistantEvent.type === 'text_delta') {
// Accumulate assistant text for persistence // Accumulate assistant text for persistence
const cs = this.clientSessions.get(client.id); const cs = this.clientSessions.get(client.id);
const redactedDelta = redactSensitiveContent(assistantEvent.delta).content;
if (cs) { if (cs) {
cs.assistantText += assistantEvent.delta; cs.assistantText += redactedDelta;
} }
client.emit('agent:text', { client.emit('agent:text', {
conversationId, conversationId,
text: assistantEvent.delta, text: redactedDelta,
}); });
} else if (assistantEvent.type === 'thinking_delta') { } else if (assistantEvent.type === 'thinking_delta') {
client.emit('agent:thinking', { client.emit('agent:thinking', {
conversationId, conversationId,
text: assistantEvent.delta, text: redactSensitiveContent(assistantEvent.delta).content,
}); });
} }
break; break;