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)
65 lines
1.9 KiB
TypeScript
65 lines
1.9 KiB
TypeScript
/**
|
|
* Types and utilities for VLM-based diagram validation.
|
|
* The actual validation is performed via useValidateDiagram hook using AI SDK's useObject.
|
|
*/
|
|
|
|
// Re-export types from the schema file (single source of truth)
|
|
export type { ValidationResult } from "./validation-schema"
|
|
|
|
import type { ValidationResult } from "./validation-schema"
|
|
|
|
/**
|
|
* Format validation feedback for display to the AI model.
|
|
* This creates a human-readable error message that guides the AI to fix issues.
|
|
*
|
|
* @param result - The validation result from VLM
|
|
* @returns Formatted string for tool error output
|
|
*/
|
|
export function formatValidationFeedback(result: ValidationResult): string {
|
|
// If validation passed with no issues, return empty string
|
|
if (result.valid && result.issues.length === 0) {
|
|
return ""
|
|
}
|
|
|
|
const lines: string[] = []
|
|
|
|
lines.push("DIAGRAM VISUAL VALIDATION FAILED")
|
|
lines.push("")
|
|
|
|
// Group issues by severity
|
|
const criticalIssues = result.issues.filter(
|
|
(i) => i.severity === "critical",
|
|
)
|
|
const warnings = result.issues.filter((i) => i.severity === "warning")
|
|
|
|
if (criticalIssues.length > 0) {
|
|
lines.push("Critical Issues (must fix):")
|
|
for (const issue of criticalIssues) {
|
|
lines.push(` - [${issue.type}] ${issue.description}`)
|
|
}
|
|
lines.push("")
|
|
}
|
|
|
|
if (warnings.length > 0) {
|
|
lines.push("Warnings:")
|
|
for (const issue of warnings) {
|
|
lines.push(` - [${issue.type}] ${issue.description}`)
|
|
}
|
|
lines.push("")
|
|
}
|
|
|
|
if (result.suggestions.length > 0) {
|
|
lines.push("Suggestions to fix:")
|
|
for (const suggestion of result.suggestions) {
|
|
lines.push(` - ${suggestion}`)
|
|
}
|
|
lines.push("")
|
|
}
|
|
|
|
lines.push(
|
|
"Please regenerate the diagram with corrected layout to fix these visual issues.",
|
|
)
|
|
|
|
return lines.join("\n")
|
|
}
|