diff --git a/app/api/beat-audio/route.ts b/app/api/beat-audio/route.ts index 5c7c8ee..7815d9b 100644 --- a/app/api/beat-audio/route.ts +++ b/app/api/beat-audio/route.ts @@ -4,9 +4,6 @@ import { NextResponse } from "next/server"; import { loadEngineConfig } from "@/lib/config"; export const runtime = "nodejs"; -// The synth itself has a 15s per-call ceiling in the engine. 30s here just -// covers JSON parsing + outbound network buffer. -export const maxDuration = 30; export async function POST(req: Request) { let body: BeatAudioRequest; diff --git a/app/api/insert-beat/route.ts b/app/api/insert-beat/route.ts index 2c82897..820b514 100644 --- a/app/api/insert-beat/route.ts +++ b/app/api/insert-beat/route.ts @@ -4,7 +4,6 @@ import { NextResponse } from "next/server"; import { loadEngineConfig } from "@/lib/config"; export const runtime = "nodejs"; -export const maxDuration = 60; export async function POST(req: Request) { let body: InsertBeatRequest; diff --git a/app/api/parse-style-image/route.ts b/app/api/parse-style-image/route.ts index 02d165e..6fb2d4d 100644 --- a/app/api/parse-style-image/route.ts +++ b/app/api/parse-style-image/route.ts @@ -7,7 +7,6 @@ import { NextResponse } from "next/server"; import { loadEngineConfig } from "@/lib/config"; export const runtime = "nodejs"; -export const maxDuration = 60; // Same rationale as /api/vision: the client resizes to 512px max-dim webp // (~30-80KB base64 typical) before upload, so 3 MB is generous headroom diff --git a/app/api/scene/route.ts b/app/api/scene/route.ts index bc9bcf1..ed25b0f 100644 --- a/app/api/scene/route.ts +++ b/app/api/scene/route.ts @@ -13,11 +13,6 @@ function stripKnownVoices( } export const runtime = "nodejs"; -// Capped at 60 for Vercel Hobby (300 allowed on Pro). The scene pipeline is -// Writer + CharDesigner×N + Cinematographer + Painter — happy path 9–12s; the -// tail (cold provider, multiple new characters) can push 30–45s, so 60 is a -// reasonable headroom on Hobby. -export const maxDuration = 60; export async function POST(req: Request) { let body: SceneRequest; diff --git a/app/api/start/route.ts b/app/api/start/route.ts index 467680b..3ce3169 100644 --- a/app/api/start/route.ts +++ b/app/api/start/route.ts @@ -4,7 +4,6 @@ import { NextResponse } from "next/server"; import { loadEngineConfig } from "@/lib/config"; export const runtime = "nodejs"; -export const maxDuration = 60; // Matches /api/vision and /api/parse-style-image — the user's resized 512px // webp is ~30-80 KB; this caps pathological direct-API payloads (which would diff --git a/app/api/vision/route.ts b/app/api/vision/route.ts index 6f294df..3bd2d59 100644 --- a/app/api/vision/route.ts +++ b/app/api/vision/route.ts @@ -4,7 +4,6 @@ import { NextResponse } from "next/server"; import { loadEngineConfig } from "@/lib/config"; export const runtime = "nodejs"; -export const maxDuration = 60; // Browser annotator resizes to 768 wide → typically 200-800 KB base64. // 3 MB caps abusive direct-API payloads (which would inflate upstream diff --git a/vercel.json b/vercel.json index 4ccec08..a667db8 100644 --- a/vercel.json +++ b/vercel.json @@ -1,11 +1,4 @@ { "$schema": "https://openapi.vercel.sh/vercel.json", - "framework": "nextjs", - "functions": { - "app/api/start/route.ts": { "maxDuration": 60 }, - "app/api/scene/route.ts": { "maxDuration": 60 }, - "app/api/vision/route.ts": { "maxDuration": 60 }, - "app/api/insert-beat/route.ts": { "maxDuration": 60 }, - "app/api/beat-audio/route.ts": { "maxDuration": 30 } - } + "framework": "nextjs" }