import { ResourceProvider } from "../types.js";
import { supabase } from "../runtime/context.js";
export const documentResources: ResourceProvider = {
list: async () => {
try {
const { data, error } = await supabase
.from("documents")
.select("id, title, category, created_at")
.order("created_at", { ascending: false })
.limit(50);
if (error) throw error;
return data.map((doc) => ({
uri: `document://${doc.id}`,
name: doc.title,
description: `Category: ${doc.category} | Created: ${new Date(
doc.created_at
).toLocaleDateString()}`,
mimeType: "text/plain",
}));
} catch (error) {
console.error("Error listing documents:", error);
return [];
}
},
read: async (uri: string) => {
try {
const id = uri.replace("document://", "");
const { data, error } = await supabase
.from("documents")
.select("*")
.eq("id", id)
.single();
if (error) throw error;
return {
contents: [
{
uri,
mimeType: "text/plain",
text: JSON.stringify(
{
id: data.id,
title: data.title,
content: data.content,
category: data.category,
tags: data.tags,
metadata: data.metadata,
created_at: data.created_at,
updated_at: data.updated_at,
},
null,
2
),
},
],
};
} catch (error: any) {
return {
contents: [
{
uri,
mimeType: "text/plain",
text: `Error reading document: ${error.message}`,
},
],
};
}
},
};