- port retrieval, validation, and eval improvements relevant to os - align prompts and dimensions with the flat single-agent model - replace the old eval suite with the focused core scenarios Generated with Codex
63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import { getSQLiteClient } from '@/services/database/sqlite-client';
|
|
|
|
export interface DimensionContext {
|
|
name: string;
|
|
description: string | null;
|
|
isPriority: boolean;
|
|
nodeCount: number;
|
|
}
|
|
|
|
export async function GET(
|
|
request: NextRequest,
|
|
{ params }: { params: Promise<{ name: string }> }
|
|
) {
|
|
try {
|
|
const { name } = await params;
|
|
const decodedName = decodeURIComponent(name);
|
|
|
|
const db = getSQLiteClient();
|
|
|
|
// Get dimension metadata
|
|
const dimension = db.query<{
|
|
name: string;
|
|
description: string | null;
|
|
is_priority: number;
|
|
}>(
|
|
'SELECT name, description, is_priority FROM dimensions WHERE name = ?',
|
|
[decodedName]
|
|
).rows[0];
|
|
|
|
if (!dimension) {
|
|
return NextResponse.json(
|
|
{ success: false, error: 'Dimension not found' },
|
|
{ status: 404 }
|
|
);
|
|
}
|
|
|
|
// Count nodes in this dimension (via node_dimensions join table)
|
|
const countResult = db.query<{ count: number }>(
|
|
`SELECT COUNT(DISTINCT node_id) as count FROM node_dimensions WHERE dimension = ?`,
|
|
[decodedName]
|
|
).rows[0];
|
|
|
|
const context: DimensionContext = {
|
|
name: dimension.name,
|
|
description: dimension.description,
|
|
isPriority: false,
|
|
nodeCount: countResult?.count || 0,
|
|
};
|
|
|
|
return NextResponse.json({
|
|
success: true,
|
|
data: context,
|
|
});
|
|
} catch (error) {
|
|
console.error('Error fetching dimension context:', error);
|
|
return NextResponse.json(
|
|
{ success: false, error: 'Failed to fetch dimension context' },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|