Spaces:
Runtime error
Runtime error
| import { | |
| EMBED_SYSTEM_PROMPT, | |
| BANNER_SYSTEM_PROMPT, | |
| buildEmbedContext, | |
| buildDataFilesContext, | |
| buildThemeContext, | |
| } from "./embed-system-prompt.js"; | |
| import { embedTools } from "./embed-tools.js"; | |
| import { streamChatResponse } from "./stream-handler.js"; | |
| import type { Request, Response } from "express"; | |
| export async function handleEmbedChat(req: Request, res: Response) { | |
| const { context } = req.body; | |
| const contextBlock = buildEmbedContext(context?.embedHtml); | |
| const isBanner = Boolean(context?.isBanner); | |
| const isScratch = Boolean(context?.isScratch); | |
| const dataFilesBlock = buildDataFilesContext(context?.dataFiles); | |
| const themeBlock = buildThemeContext(context?.theme); | |
| const parts = [EMBED_SYSTEM_PROMPT]; | |
| if (isBanner) parts.push(BANNER_SYSTEM_PROMPT); | |
| if (isScratch) { | |
| parts.push( | |
| "## New chart\n\nThis chart is BRAND NEW - it has an auto-generated " + | |
| "placeholder filename. Your VERY FIRST `createEmbed` call MUST include " + | |
| "a descriptive `filename` slug (kebab-case, no extension, 2-4 words) " + | |
| "that reflects what the chart represents. The client will rename the " + | |
| "underlying file and keep the document in sync.", | |
| ); | |
| } | |
| if (themeBlock) parts.push(themeBlock); | |
| if (contextBlock) parts.push(`## Current chart\n\n${contextBlock}`); | |
| if (dataFilesBlock) parts.push(`## Attached data\n\n${dataFilesBlock}`); | |
| const systemPrompt = parts.join("\n\n"); | |
| return streamChatResponse(req, res, { | |
| systemPrompt, | |
| tools: embedTools, | |
| logPrefix: "embed-chat", | |
| }); | |
| } | |