import { json } from "@remix-run/server-runtime"; import { PromptPresenter } from "~/presenters/v3/PromptPresenter.server"; import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; import { createLoaderApiRoute } from "~/services/routeBuilders/apiBuilder.server"; export const loader = createLoaderApiRoute( { allowJWT: true, corsStrategy: "all", findResource: async () => 1, authorization: { action: "read", resource: () => ({ type: "prompts", id: "all" }), }, }, async ({ authentication }) => { const clickhouse = await clickhouseFactory.getClickhouseForOrganization( authentication.environment.organizationId, "standard" ); const presenter = new PromptPresenter(clickhouse); const prompts = await presenter.listPrompts( authentication.environment.projectId, authentication.environment.id ); return json({ data: prompts.map((p) => ({ slug: p.slug, friendlyId: p.friendlyId, description: p.description, tags: p.tags, defaultModel: p.defaultModel, currentVersion: p.currentVersion?.version ?? null, hasOverride: p.hasOverride, updatedAt: p.updatedAt.toISOString(), })), }); } );