overmind-mcp
Version:
Orchestrateur universel agents IA multi-modeles via MCP. Inclut le protocole 'Custom-Nickname' pour identifier vos agents avec des surnoms originaux (The Chaos Prophet, Shadow Sniper, etc.), l'isolation mémoire (Private Memory Context) et le support pour
59 lines • 2.3 kB
JavaScript
/**
* ═══════════════════════════════════════════════════════════════════════════
* Audit Trail — Capture au niveau du Bridge
* ═══════════════════════════════════════════════════════════════════════════
*
* Pseudonymise les externalKeys (Discord userId, phone, Telegram id)
* en data_subject_id audit et propage le contexte au runner.
*
* Appelé par OverBridgeServer avant l'auto-dispatch vers agent.run.
*/
import { pseudonymize } from './anonymize.js';
import { isAuditEnabled, isInternalSubject } from './types.js';
/**
* Map des providers webhook vers les sources audit.
*/
const PROVIDER_TO_SOURCE = {
discord: 'discord',
telegram: 'telegram',
voipms: 'voipms',
twilio: 'twilio',
generic: 'generic',
};
/**
* Capture et pseudonymise l'identité d'un utilisateur bridge.
*
* @param externalKey Clé externe brute (userId Discord, phone, etc.)
* @param provider Provider webhook source
* @returns BridgeCaptureResult avec dataSubjectId pseudonymisé
*/
export function captureBridgeSubject(externalKey, provider) {
const source = PROVIDER_TO_SOURCE[provider] || 'generic';
const dataSubjectId = pseudonymize(externalKey);
const isInternal = isInternalSubject(dataSubjectId);
const legalBasis = isInternal ? 'legitimate_interest' : 'consent';
return {
dataSubjectId,
legalBasis,
source,
isInternal,
};
}
/**
* Propage le data_subject_id au contexte d'exécution via variable d'environnement.
* Le runner_hook.ts lit OVERMIND_CURRENT_SUBJECT_ID pour le passer au guard.
*
* Note : cette approche est safe car le bridge est mono-request par spawn.
*/
export function propagateSubjectContext(result) {
if (!isAuditEnabled())
return;
process.env.OVERMIND_CURRENT_SUBJECT_ID = result.dataSubjectId;
}
/**
* Nettoie le contexte après exécution.
*/
export function clearSubjectContext() {
delete process.env.OVERMIND_CURRENT_SUBJECT_ID;
}
//# sourceMappingURL=bridge_capture.js.map