Skip to content

Audit Logging Plugin

Here is a complete, production-ready audit logger plugin:

import type { CriticalPathPlugin } from '@critical-path/core';
export const auditLogPlugin: CriticalPathPlugin = {
id: 'audit-logger',
name: 'Audit Logger Plugin',
version: '1.0.0',
hooks: {
beforeTaskCreate: async (task) => {
// Auto-tag all created tasks
return {
...task,
tags: [...(task.tags || []), 'AUDITED'],
};
},
afterTaskUpdate: async (task, previous) => {
if (previous.status !== task.status) {
console.log(
`[Audit] Task "${task.id}" transitioned status: "${previous.status}" -> "${task.status}"`
);
}
if (previous.assigneeId !== task.assigneeId) {
console.log(
`[Audit] Task "${task.id}" reassigned from ${previous.assigneeId ?? 'unassigned'} to ${task.assigneeId}`
);
}
},
},
};