AkurAI Build
Menu

popagent

public

Latest change 7cecf6a89b6f39dae8c5678f5b369014199aeb3c - Add self-hosted Mastra observability by AkurAI Build

import type { IMastraLogger } from "@mastra/core/logger";
import { PinoLogger } from "@mastra/loggers";
import { MastraStorageExporter, Observability, SamplingStrategyType } from "@mastra/observability";
import { AGENT_CONTEXT_KEYS } from "./agent-context";

export const OBSERVABILITY_SENSITIVE_FIELDS = [
  "password", "token", "secret", "key", "apikey", "auth", "authorization",
  "bearer", "bearertoken", "jwt", "credential", "clientsecret", "privatekey",
  "refresh", "ssn", "value",
];

export const logger = new PinoLogger({
  name: "popagent",
  level: "info",
  prettyPrint: process.env.NODE_ENV !== "production",
  redact: {
    paths: [
      "authorization",
      "headers.authorization",
      "apiKey",
      "token",
      "secret",
      "value",
      "password",
    ],
    censor: "[REDACTED]",
  },
});

let activeLogger: IMastraLogger = logger;
export const appLogger = () => activeLogger;
export const setAppLogger = (next: IMastraLogger) => { activeLogger = next; };

export const observability = new Observability({
  configs: {
    default: {
      serviceName: "popagent",
      sampling: { type: SamplingStrategyType.ALWAYS },
      exporters: [new MastraStorageExporter({ strategy: "auto" })],
      requestContextKeys: [
        AGENT_CONTEXT_KEYS.resourceId,
        AGENT_CONTEXT_KEYS.sessionId,
        AGENT_CONTEXT_KEYS.turnId,
        AGENT_CONTEXT_KEYS.model,
        AGENT_CONTEXT_KEYS.workspaceId,
        AGENT_CONTEXT_KEYS.executionSource,
        AGENT_CONTEXT_KEYS.taskId,
        AGENT_CONTEXT_KEYS.scheduleId,
      ],
      serializationOptions: {
        maxStringLength: 4_096,
        maxDepth: 8,
        maxArrayLength: 100,
        maxObjectKeys: 75,
      },
      logging: { enabled: true, level: "info" },
    },
  },
  sensitiveDataFilter: {
    sensitiveFields: OBSERVABILITY_SENSITIVE_FIELDS,
    redactionStyle: "full",
    redactionToken: "[REDACTED]",
  },
});