page.tsx28 lines · main
| 1 | import { AiExplainForm } from './ai-explain-form'; |
| 2 | import { AiSubnav } from '../ai-subnav'; |
| 3 | |
| 4 | export const metadata = { title: 'ai explain' }; |
| 5 | export const dynamic = 'force-dynamic'; |
| 6 | |
| 7 | export default async function AiExplainPage({ params }: { params: Promise<{ id: string }> }) { |
| 8 | const { id } = await params; |
| 9 | return ( |
| 10 | <section className="flex flex-col gap-6"> |
| 11 | <AiSubnav projectId={id} /> |
| 12 | <header> |
| 13 | <h1 className="font-mono text-xl tracking-tight">ai explain</h1> |
| 14 | <p className="mt-1 font-mono text-sm text-[var(--color-text-muted)]"> |
| 15 | paste any briven schema or function code and get a plain-english walkthrough framed in |
| 16 | briven idioms — what the wrapper means, which db calls happen, where reactivity hooks |
| 17 | in, and what would change if you flipped a query to a mutation. |
| 18 | </p> |
| 19 | <p className="mt-2 font-mono text-xs text-[var(--color-text-subtle)]"> |
| 20 | your code is sent to a self-hosted Qwen 2.5-coder model on briven infrastructure — not |
| 21 | to any third-party AI provider. snippets and explanations are not logged. |
| 22 | </p> |
| 23 | </header> |
| 24 | |
| 25 | <AiExplainForm projectId={id} /> |
| 26 | </section> |
| 27 | ); |
| 28 | } |