import { parseConnectionsImportBatch } from "@/lib/arcade/connectionsImport"; import { parseCrosswordImportBatch } from "@/lib/arcade/crosswordImport"; import type { ArcadeGameKey } from "@/types/arcade"; const CONNECTIONS_PROMPT = `You are generating a Connections study game as strict JSON. Return exactly one JSON object with no Markdown fence or commentary. Use this schema: {"schemaVersion":1,"type":"connections","name":"...","description":"...","settings":{"groupCount":4,"itemsPerGroup":4,"allowedMistakes":4},"content":[{"id":"group-1","category":"...","items":["...","...","...","..."],"explanation":"..."}]} Rules: - Generate exactly four groups of exactly four unique items. - Every item must fit only its intended group within this board. - Use specific, distinct category names and concise tiles of one to four words. - Give every group a concise explanation. - Do not create arbitrary leftover groups or use broad categories shared by most tiles. - Base all content strictly on the study material below. Material: [paste your notes or lecture content here]`; const CROSSWORD_PROMPT = `You are generating one Crossword study game as strict JSON. Return exactly one JSON object with no Markdown fence or commentary. Use this schema: {"schemaVersion":1,"type":"crossword","name":"...","description":"...","settings":{"allowInstantCheck":false,"allowHints":true},"content":[{"id":"entry-1","answer":"...","displayAnswer":"...","clue":"...","alternateClue":"...","explanation":"..."}]} Rules: - Generate exactly 80 entries in the content array. - Every answer must be unique after spaces, punctuation, hyphens, apostrophes, and capitalization are removed. - Answers must contain 3 to 18 letters after normalization. Do not use digits. - Prefer terminology with shared letters so the application can construct a dense connected crossword. - Each clue must uniquely identify its answer without repeating the answer. - Provide a genuinely useful alternate clue and a concise educational explanation for every entry. - Use displayAnswer to preserve spaces, punctuation, or natural capitalization when needed. - Base all content strictly on the study material below. Material: [paste your notes or lecture content here]`; export const ARCADE_SERVER_REGISTRY = { connections: { schemaVersion: 1, preview: parseConnectionsImportBatch, defaultInstructions: CONNECTIONS_PROMPT, }, crossword: { schemaVersion: 1, preview: parseCrosswordImportBatch, defaultInstructions: CROSSWORD_PROMPT, }, } satisfies Record unknown; defaultInstructions: string; }>; export function getArcadeGameDefinition(gameType: ArcadeGameKey) { return ARCADE_SERVER_REGISTRY[gameType]; }