AkurAI Build
Menu

popagent

public

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

import { Memory } from "@mastra/memory";
import { PostgresStoreVNext } from "@mastra/pg";
import { AGENT_CONTEXT_KEYS, agentContextValue } from "./agent-context";
import { resolveModel } from "./models";

const connectionString = process.env.DATABASE_URL;
const observabilityConnectionString = process.env.OBSERVABILITY_DATABASE_URL;
if (!connectionString) throw new Error("DATABASE_URL is required");
if (!observabilityConnectionString) throw new Error("OBSERVABILITY_DATABASE_URL is required");

export const storage = new PostgresStoreVNext({
  id: "popagent-postgres",
  connectionString,
  observability: {
    connectionString: observabilityConnectionString,
    partitioning: { mode: "auto" },
  },
});

export const memory = new Memory({
  storage,
  options: {
    lastMessages: false,
    observationalMemory: {
      enabled: false,
      model: ({ requestContext }) => {
        const settings = agentContextValue(requestContext, AGENT_CONTEXT_KEYS.runtimeSettings);
        if (!settings) throw new Error("Agent runtime settings are required for observational memory");
        return resolveModel(settings.defaultModel);
      },
      observation: { bufferOnIdle: true },
      retrieval: true,
    },
  },
});