export function createPlugin(config, ctx) {
return {
register(reg) {
// Content filter: block messages containing forbidden patterns
reg.hook("prePrompt", async (event) => {
for (const pattern of config.blockedPatterns) {
if (event.message.includes(pattern)) {
return { message: "", block: true, reason: `Blocked: contains "${pattern}"` };
}
}
return { message: event.message };
});
// Audit: log every tool call
reg.hook("preToolExec", async (event) => {
console.log(`[AUDIT] ${event.agentName} calling ${event.toolName}`);
return { allow: true };
});
// Post-processing: strip sensitive data from responses
reg.hook("postResponse", async (event) => {
const cleaned = event.response.replace(/\b\d{3}-\d{2}-\d{4}\b/g, "***-**-****");
return { response: cleaned };
});
},
};
}