mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-10-13 04:59:51 +08:00
- lib/system-prompts.ts: delete the extended prompt kept only to reach the 4096-token cache threshold of two old Claude models; describe the current canvas-first UI in the App Features section - app/api/chat/route.ts: remove the server-side example cache (the browser answers examples itself), the ENABLE_HISTORY_XML_REPLACE option and its helper, the unread messageMetadata fields; the DEBUG_LLM_PAYLOAD blocks become one describeMessages summary - app/api/log-feedback and log-save share scoreLatestTrace in lib/langfuse.ts - app/api/admin/test-model and validate-model call a shared testModelConnection() instead of one route faking a request to the other and passing trust through the body - lib/dynamo-quota-manager.ts reads the failing item from the conditional update instead of a second GetItem - lib/ai-providers.ts: geminiThinkingOptions helper for the google and vertexai cases, drop the unused fourth resolveBaseURL parameter - edge-functions: always stream, shrink messageSchema, drop model aliases nothing sends - delete app/api/chat/xml_guide.md, parseOutputTokenLimit, unused type exports and export keywords on file-internal symbols - env.example: drop variables nothing reads, document the quota, validation and analytics variables, mention the apiKeyEnv array form (also in docs/*/ai-providers.md)
30 lines
960 B
TypeScript
30 lines
960 B
TypeScript
import { NextResponse } from "next/server"
|
|
import { checkAccessCode, rejectCrossSite } from "@/lib/access-code"
|
|
import {
|
|
type TestModelRequest,
|
|
testModelConnection,
|
|
} from "@/lib/test-model-connection"
|
|
|
|
export const runtime = "nodejs"
|
|
|
|
// The Settings dialog's Test button: a model on the user's own credentials
|
|
export async function POST(req: Request) {
|
|
const crossSite = rejectCrossSite(req)
|
|
if (crossSite) return crossSite
|
|
// Lets the server send requests to arbitrary URLs, so require the access code
|
|
const accessError = checkAccessCode(req)
|
|
if (accessError) return accessError
|
|
|
|
let body: TestModelRequest
|
|
try {
|
|
body = await req.json()
|
|
} catch {
|
|
return NextResponse.json(
|
|
{ valid: false, error: "Invalid JSON body" },
|
|
{ status: 400 },
|
|
)
|
|
}
|
|
// A URL in the request is one the user typed, never the server's own
|
|
return testModelConnection(req, body, false)
|
|
}
|