Framework Integration

Integration examples for popular frameworks.

React Hook

import { useState, useCallback } from 'react';
import { createMoaClient } from 'memofai';

export function useMemofai({ apiToken, botId }) {
  const [client] = useState(() => createMoaClient({ apiToken }));
  const [memories, setMemories] = useState([]);
  const [loading, setLoading] = useState(false);

  const searchMemories = useCallback(async (query) => {
    setLoading(true);
    try {
      const results = await client.memories.search({ botId, query, limit: 20 });
      setMemories(results);
    } finally {
      setLoading(false);
    }
  }, [client, botId]);

  return { memories, loading, searchMemories };
}

Next.js API Route

// pages/api/memories/search.ts
import { NextApiRequest, NextApiResponse } from 'next';
import { createMoaClient } from 'memofai';

const client = createMoaClient({
  apiToken: process.env.MEMOFAI_API_TOKEN!
});

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  const { botId, query, limit = 10 } = req.body;
  const memories = await client.memories.search({ botId, query, limit });
  res.json({ memories });
}

Express.js

import express from 'express';
import { createMoaClient } from 'memofai';

const app = express();
const client = createMoaClient({ apiToken: process.env.MEMOFAI_API_TOKEN! });

app.post('/bots/:botId/memories/search', async (req, res) => {
  const { botId } = req.params;
  const { query, limit = 10 } = req.body;
  const memories = await client.memories.search({ botId, query, limit });
  res.json({ memories });
});

Vue 3

import { ref } from 'vue';
import { createMoaClient } from 'memofai';

export function useMemofai(apiToken: string) {
  const client = createMoaClient({ apiToken });
  const memories = ref([]);

  const searchMemories = async (botId: string, query: string) => {
    memories.value = await client.memories.search({ botId, query });
  };

  return { memories, searchMemories };
}

Next Steps