import { createLogger } from '@sim/logger' import type { NextRequest } from 'next/server' import { getWorkflowStatusContract } from '@/lib/api/contracts/workflows' import { parseRequest } from '@/lib/api/server' import { generateRequestId } from '@/lib/core/utils/request' import { withRouteHandler } from '@/lib/core/utils/with-route-handler' import { validateWorkflowAccess } from '@/app/api/workflows/middleware' import { checkNeedsRedeployment, createErrorResponse, createSuccessResponse, } from '@/app/api/workflows/utils' const logger = createLogger('WorkflowStatusAPI') export const GET = withRouteHandler( async (request: NextRequest, context: { params: Promise<{ id: string }> }) => { const requestId = generateRequestId() const parsed = await parseRequest(getWorkflowStatusContract, request, context) if (!parsed.success) return parsed.response const { id } = parsed.data.params try { const validation = await validateWorkflowAccess(request, id, false) if (validation.error) { logger.warn(`[${requestId}] Workflow access validation failed: ${validation.error.message}`) return createErrorResponse(validation.error.message, validation.error.status) } const needsRedeployment = validation.workflow.isDeployed ? await checkNeedsRedeployment(id) : false return createSuccessResponse({ isDeployed: validation.workflow.isDeployed, deployedAt: validation.workflow.deployedAt, isPublished: validation.workflow.isPublished, needsRedeployment, }) } catch (error) { logger.error(`[${requestId}] Error getting status for workflow: ${id}`, error) return createErrorResponse('Failed to get status', 500) } } )