11import { NextRequest , NextResponse } from 'next/server'
22import { TemplateId } from '@/lib/templates'
3- import { readFileSync } from 'fs'
3+ import { readFileSync , readdirSync , statSync } from 'fs'
44import { join } from 'path'
55
66export interface TemplateFile {
@@ -13,24 +13,23 @@ function getTemplateFiles(templateId: TemplateId): TemplateFile[] {
1313
1414 try {
1515 const templateDir = join ( process . cwd ( ) , 'sandbox-templates' , templateId )
16- const fileMappings : Record < TemplateId , string [ ] > = {
17- 'code-interpreter-v1' : [ 'script.py' ] ,
18- 'nextjs-developer' : [ '_app.tsx' , 'e2b.Dockerfile' , 'e2b.toml' , 'compile_page.sh' ] ,
19- 'vue-developer' : [ 'app.vue' , 'e2b.Dockerfile' , 'e2b.toml' , 'nuxt.config.ts' ] ,
20- 'streamlit-developer' : [ 'app.py' , 'e2b.Dockerfile' , 'e2b.toml' ] ,
21- 'gradio-developer' : [ 'app.py' , 'e2b.Dockerfile' , 'e2b.toml' ]
22- }
2316
24- const files = fileMappings [ templateId ] || [ ]
17+ // Read all files in the template directory
18+ const files = readdirSync ( templateDir )
2519
2620 for ( const file of files ) {
2721 try {
2822 const filePath = join ( templateDir , file )
29- const content = readFileSync ( filePath , 'utf-8' )
30- templateFiles . push ( {
31- name : file ,
32- content
33- } )
23+ const stat = statSync ( filePath )
24+
25+ // Only include files, not directories
26+ if ( stat . isFile ( ) ) {
27+ const content = readFileSync ( filePath , 'utf-8' )
28+ templateFiles . push ( {
29+ name : file ,
30+ content
31+ } )
32+ }
3433 } catch ( error ) {
3534 console . warn ( `Failed to read template file ${ file } :` , error )
3635 }
0 commit comments