@gguf/claw
Version:
Multi-channel AI gateway with extensible messaging integrations
55 lines (53 loc) • 1.52 kB
JavaScript
import { s as resolveStateDir } from "../../paths-CyR9Pa1R.js";
import fs from "node:fs/promises";
import os from "node:os";
import path from "node:path";
//#region src/hooks/bundled/command-logger/handler.ts
/**
* Example hook handler: Log all commands to a file
*
* This handler demonstrates how to create a hook that logs all command events
* to a centralized log file for audit/debugging purposes.
*
* To enable this handler, add it to your config:
*
* ```json
* {
* "hooks": {
* "internal": {
* "enabled": true,
* "handlers": [
* {
* "event": "command",
* "module": "./hooks/handlers/command-logger.ts"
* }
* ]
* }
* }
* }
* ```
*/
/**
* Log all command events to a file
*/
const logCommand = async (event) => {
if (event.type !== "command") return;
try {
const stateDir = resolveStateDir(process.env, os.homedir);
const logDir = path.join(stateDir, "logs");
await fs.mkdir(logDir, { recursive: true });
const logFile = path.join(logDir, "commands.log");
const logLine = JSON.stringify({
timestamp: event.timestamp.toISOString(),
action: event.action,
sessionKey: event.sessionKey,
senderId: event.context.senderId ?? "unknown",
source: event.context.commandSource ?? "unknown"
}) + "\n";
await fs.appendFile(logFile, logLine, "utf-8");
} catch (err) {
console.error("[command-logger] Failed to log command:", err instanceof Error ? err.message : String(err));
}
};
//#endregion
export { logCommand as default };