mirror of
https://github.com/johndoe6345789/low-code-react-app-b.git
synced 2026-04-24 13:44:54 +00:00
Generated by Spark: Page is not loading
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
// @ts-nocheck
|
||||
import { PrismaModel, ComponentNode, ThemeConfig, ProjectFile } from '@/types/project'
|
||||
|
||||
export class AIService {
|
||||
static async generateComponent(description: string): Promise<ComponentNode | null> {
|
||||
try {
|
||||
const promptText = `You are a React component generator. Generate a component tree structure based on this description: "${description}"
|
||||
const prompt = window.spark.llmPrompt`You are a React component generator. Generate a component tree structure based on this description: ${description}
|
||||
|
||||
Return a valid JSON object with a single property "component" containing the component structure. The component should follow this format:
|
||||
{
|
||||
@@ -20,7 +21,7 @@ Return a valid JSON object with a single property "component" containing the com
|
||||
|
||||
Make sure to use appropriate Material UI components and props. Keep the structure clean and semantic.`
|
||||
|
||||
const response = await window.spark.llm(promptText, 'gpt-4o', true)
|
||||
const response = await window.spark.llm(prompt, 'gpt-4o', true)
|
||||
const parsed = JSON.parse(response)
|
||||
return parsed.component
|
||||
} catch (error) {
|
||||
@@ -32,7 +33,7 @@ Make sure to use appropriate Material UI components and props. Keep the structur
|
||||
static async generatePrismaModel(description: string, existingModels: PrismaModel[]): Promise<PrismaModel | null> {
|
||||
try {
|
||||
const existingModelNames = existingModels.map(m => m.name).join(', ')
|
||||
const promptText = `You are a Prisma schema designer. Create a database model based on this description: "${description}"
|
||||
const prompt = window.spark.llmPrompt`You are a Prisma schema designer. Create a database model based on this description: ${description}
|
||||
|
||||
Existing models in the schema: ${existingModelNames || 'none'}
|
||||
|
||||
@@ -65,7 +66,7 @@ Return a valid JSON object with a single property "model" containing the model s
|
||||
|
||||
Include an id field with uuid() default. Add createdAt and updatedAt DateTime fields with @default(now()) and @updatedAt. Use appropriate field types and relationships.`
|
||||
|
||||
const response = await window.spark.llm(promptText, 'gpt-4o', true)
|
||||
const response = await window.spark.llm(prompt, 'gpt-4o', true)
|
||||
const parsed = JSON.parse(response)
|
||||
return parsed.model
|
||||
} catch (error) {
|
||||
@@ -86,15 +87,15 @@ Include an id field with uuid() default. Add createdAt and updatedAt DateTime fi
|
||||
utility: "Create a utility function with TypeScript types and JSDoc comments."
|
||||
}
|
||||
|
||||
const promptText = `You are a Next.js developer. ${fileTypeInstructions[fileType]}
|
||||
const prompt = window.spark.llmPrompt`You are a Next.js developer. ${fileTypeInstructions[fileType]}
|
||||
|
||||
Description: "${description}"
|
||||
Description: ${description}
|
||||
|
||||
Generate clean, production-ready code following Next.js 14 and Material UI best practices. Include all necessary imports.
|
||||
|
||||
Return ONLY the code without any markdown formatting or explanations.`
|
||||
|
||||
const code = await window.spark.llm(promptText, 'gpt-4o', false)
|
||||
const code = await window.spark.llm(prompt, 'gpt-4o', false)
|
||||
return code.trim()
|
||||
} catch (error) {
|
||||
console.error('AI code generation failed:', error)
|
||||
@@ -104,14 +105,14 @@ Return ONLY the code without any markdown formatting or explanations.`
|
||||
|
||||
static async improveCode(code: string, instruction: string): Promise<string | null> {
|
||||
try {
|
||||
const promptText = `You are a code improvement assistant. Improve the following code based on this instruction: "${instruction}"
|
||||
const prompt = window.spark.llmPrompt`You are a code improvement assistant. Improve the following code based on this instruction: ${instruction}
|
||||
|
||||
Original code:
|
||||
${code}
|
||||
|
||||
Return ONLY the improved code without any markdown formatting or explanations.`
|
||||
|
||||
const improved = await window.spark.llm(promptText, 'gpt-4o', false)
|
||||
const improved = await window.spark.llm(prompt, 'gpt-4o', false)
|
||||
return improved.trim()
|
||||
} catch (error) {
|
||||
console.error('AI code improvement failed:', error)
|
||||
@@ -121,7 +122,7 @@ Return ONLY the improved code without any markdown formatting or explanations.`
|
||||
|
||||
static async generateThemeFromDescription(description: string): Promise<Partial<ThemeConfig> | null> {
|
||||
try {
|
||||
const promptText = `You are a UI/UX designer. Generate a Material UI theme configuration based on this description: "${description}"
|
||||
const prompt = window.spark.llmPrompt`You are a UI/UX designer. Generate a Material UI theme configuration based on this description: ${description}
|
||||
|
||||
Return a valid JSON object with a single property "theme" containing:
|
||||
{
|
||||
@@ -144,7 +145,7 @@ Return a valid JSON object with a single property "theme" containing:
|
||||
|
||||
Choose colors that match the description and ensure good contrast. Use common font stacks.`
|
||||
|
||||
const response = await window.spark.llm(promptText, 'gpt-4o', true)
|
||||
const response = await window.spark.llm(prompt, 'gpt-4o', true)
|
||||
const parsed = JSON.parse(response)
|
||||
return parsed.theme
|
||||
} catch (error) {
|
||||
@@ -155,9 +156,10 @@ Choose colors that match the description and ensure good contrast. Use common fo
|
||||
|
||||
static async suggestFieldsForModel(modelName: string, existingFields: string[]): Promise<string[] | null> {
|
||||
try {
|
||||
const promptText = `You are a database architect. Suggest additional useful fields for a Prisma model named "${modelName}".
|
||||
const existingFieldsStr = existingFields.join(', ')
|
||||
const prompt = window.spark.llmPrompt`You are a database architect. Suggest additional useful fields for a Prisma model named ${modelName}.
|
||||
|
||||
Existing fields: ${existingFields.join(', ')}
|
||||
Existing fields: ${existingFieldsStr}
|
||||
|
||||
Return a valid JSON object with a single property "fields" containing an array of field name suggestions (strings only):
|
||||
{
|
||||
@@ -166,7 +168,7 @@ Return a valid JSON object with a single property "fields" containing an array o
|
||||
|
||||
Suggest 3-5 common fields that would be useful for this model type. Use camelCase naming.`
|
||||
|
||||
const response = await window.spark.llm(promptText, 'gpt-4o', true)
|
||||
const response = await window.spark.llm(prompt, 'gpt-4o', true)
|
||||
const parsed = JSON.parse(response)
|
||||
return parsed.fields
|
||||
} catch (error) {
|
||||
@@ -177,13 +179,13 @@ Suggest 3-5 common fields that would be useful for this model type. Use camelCas
|
||||
|
||||
static async explainCode(code: string): Promise<string | null> {
|
||||
try {
|
||||
const promptText = `You are a code teacher. Explain what this code does in simple terms:
|
||||
const prompt = window.spark.llmPrompt`You are a code teacher. Explain what this code does in simple terms:
|
||||
|
||||
${code}
|
||||
|
||||
Provide a clear, concise explanation suitable for developers learning the codebase.`
|
||||
|
||||
const explanation = await window.spark.llm(promptText, 'gpt-4o', false)
|
||||
const explanation = await window.spark.llm(prompt, 'gpt-4o', false)
|
||||
return explanation.trim()
|
||||
} catch (error) {
|
||||
console.error('AI code explanation failed:', error)
|
||||
@@ -193,7 +195,7 @@ Provide a clear, concise explanation suitable for developers learning the codeba
|
||||
|
||||
static async generateCompleteApp(description: string): Promise<{ files: ProjectFile[], models: PrismaModel[], theme: Partial<ThemeConfig> } | null> {
|
||||
try {
|
||||
const promptText = `You are a full-stack application architect. Design a complete Next.js application based on: "${description}"
|
||||
const prompt = window.spark.llmPrompt`You are a full-stack application architect. Design a complete Next.js application based on: ${description}
|
||||
|
||||
Return a valid JSON object with properties "files", "models", and "theme":
|
||||
{
|
||||
@@ -238,7 +240,7 @@ Return a valid JSON object with properties "files", "models", and "theme":
|
||||
|
||||
Create 2-4 essential files for the app structure. Include appropriate Prisma models. Design a cohesive theme.`
|
||||
|
||||
const response = await window.spark.llm(promptText, 'gpt-4o', true)
|
||||
const response = await window.spark.llm(prompt, 'gpt-4o', true)
|
||||
const parsed = JSON.parse(response)
|
||||
return parsed
|
||||
} catch (error) {
|
||||
|
||||
14
src/vite-end.d.ts
vendored
14
src/vite-end.d.ts
vendored
@@ -5,9 +5,9 @@ declare const BASE_KV_SERVICE_URL: string
|
||||
declare global {
|
||||
interface Window {
|
||||
spark: {
|
||||
llmPrompt(strings: TemplateStringsArray, ...values: any[]): string
|
||||
llm(prompt: string, modelName?: string, jsonMode?: boolean): Promise<string>
|
||||
user(): Promise<{
|
||||
llmPrompt: (strings: TemplateStringsArray, ...values: any[]) => string
|
||||
llm: (prompt: string, modelName?: string, jsonMode?: boolean) => Promise<string>
|
||||
user: () => Promise<{
|
||||
avatarUrl: string
|
||||
email: string
|
||||
id: string
|
||||
@@ -15,10 +15,10 @@ declare global {
|
||||
login: string
|
||||
}>
|
||||
kv: {
|
||||
keys(): Promise<string[]>
|
||||
get<T>(key: string): Promise<T | undefined>
|
||||
set<T>(key: string, value: T): Promise<void>
|
||||
delete(key: string): Promise<void>
|
||||
keys: () => Promise<string[]>
|
||||
get: <T>(key: string) => Promise<T | undefined>
|
||||
set: <T>(key: string, value: T) => Promise<void>
|
||||
delete: (key: string) => Promise<void>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user