AkurAI Build
Menu

popagent

public

Latest change 6edc7e928c57dab23c0973ed3f7ee70b3ebb72d5 - Initial popagent baseline by AkurAI Build

import { createTool } from "@mastra/core/tools";
import { z } from "zod";
import { longTermMemory } from "../long-term-memory";

export const remember = createTool({
  id: "remember",
  description: "Store a durable user fact or preference for recall in future conversations. Use only for information that will remain useful beyond the current chat.",
  inputSchema: z.object({
    key: z.string().min(1).max(128).describe("Stable semantic key such as ui.theme or user.runtime"),
    fact: z.string().min(1).max(2_000),
    importance: z.number().min(0).max(1).default(0.8),
  }),
  outputSchema: z.object({ remembered: z.boolean() }),
  execute: async ({ key, fact, importance }, context) => {
    const resourceId = context.requestContext?.get("popagent.resourceId") as string | undefined;
    const sessionId = context.requestContext?.get("popagent.sessionId") as string | undefined;
    if (!resourceId || !sessionId) throw new Error("Memory context is unavailable");
    await longTermMemory.rememberFact({ resourceId, sessionId, key, content: fact, importance });
    return { remembered: true };
  },
});