From cb157611df2e0d2104077ea8fdfc5594439d4a64 Mon Sep 17 00:00:00 2001 From: Ajax Davis Date: Fri, 9 Jan 2026 20:01:18 +1000 Subject: [PATCH] revert: restore maxDuration=300 for conversation routes The maxDuration=60 change was causing all API routes to hang/timeout on Vercel deployments. While the Hobby plan limit is 60s, setting maxDuration=60 in certain route files appears to cause a deployment issue where no API routes respond. Reverting to maxDuration=300 to restore functionality. The actual runtime timeout will be enforced by Vercel's plan limits anyway. --- .../[id]/conversation/[conversationId]/route.ts | 2 +- .../[uid]/conversation/[conversationId]/route.ts | 2 +- .../api/mcp/[username]/[slug]/[transport]/route.ts | 2 +- .../vercel-executor/app/api/execute-tool/route.ts | 12 ++++++++++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/apps/web/src/app/api/agents/[id]/conversation/[conversationId]/route.ts b/apps/web/src/app/api/agents/[id]/conversation/[conversationId]/route.ts index 4985a01..fbbd409 100644 --- a/apps/web/src/app/api/agents/[id]/conversation/[conversationId]/route.ts +++ b/apps/web/src/app/api/agents/[id]/conversation/[conversationId]/route.ts @@ -27,7 +27,7 @@ const CHAT_RATE_LIMIT: RateLimitConfig = { export const runtime = 'nodejs'; export const dynamic = 'force-dynamic'; -export const maxDuration = 60; // Vercel Hobby plan max +export const maxDuration = 300; // 5 minutes for long agentic runs type RouteContext = { params: Promise<{ id: string; conversationId: string }>; diff --git a/apps/web/src/app/api/agents/[username]/[uid]/conversation/[conversationId]/route.ts b/apps/web/src/app/api/agents/[username]/[uid]/conversation/[conversationId]/route.ts index 46c8baa..76110f5 100644 --- a/apps/web/src/app/api/agents/[username]/[uid]/conversation/[conversationId]/route.ts +++ b/apps/web/src/app/api/agents/[username]/[uid]/conversation/[conversationId]/route.ts @@ -27,7 +27,7 @@ const CHAT_RATE_LIMIT: RateLimitConfig = { export const runtime = 'nodejs'; export const dynamic = 'force-dynamic'; -export const maxDuration = 60; // Vercel Hobby plan max +export const maxDuration = 300; // 5 minutes for long agentic runs type RouteContext = { params: Promise<{ username: string; uid: string; conversationId: string }>; diff --git a/apps/web/src/app/api/mcp/[username]/[slug]/[transport]/route.ts b/apps/web/src/app/api/mcp/[username]/[slug]/[transport]/route.ts index 357dde7..d3686c5 100644 --- a/apps/web/src/app/api/mcp/[username]/[slug]/[transport]/route.ts +++ b/apps/web/src/app/api/mcp/[username]/[slug]/[transport]/route.ts @@ -5,7 +5,7 @@ import { handleInitialize, handleToolsCall, handleToolsList } from '~/lib/mcp/ha export const runtime = 'nodejs'; export const dynamic = 'force-dynamic'; -export const maxDuration = 60; // Vercel Hobby plan max +export const maxDuration = 300; interface RouteContext { params: Promise<{ username: string; slug: string; transport: string }>; diff --git a/templates/vercel-executor/app/api/execute-tool/route.ts b/templates/vercel-executor/app/api/execute-tool/route.ts index a1fb704..b5c34b7 100644 --- a/templates/vercel-executor/app/api/execute-tool/route.ts +++ b/templates/vercel-executor/app/api/execute-tool/route.ts @@ -88,9 +88,17 @@ export async function POST(req: NextRequest): Promise `process.env[${JSON.stringify(key)}] = ${JSON.stringify(value)};`) + .join('\n') + : ''; + + // 3) Write the execution script (CommonJS for require()) const script = ` +${envSetup} + (async () => { try { const pkg = require(${JSON.stringify(packageName)});