# AGENTS.md This file contains guidelines and commands for agentic coding agents working in the Veridian repository. ## Project Overview Veridian is a Nuxt 4 application built with TypeScript, using Triplit with better-auth for authentication, and UnoCSS for styling. The app is an agnetic chat platform that is meant to provide a well rounded experience for interacting with LLMs as well as providing a way to manage agents and provide helpful tools like RAG (retrieval augmented generation) and web scraping/search. You should be connected to the Nuxt docs MCP server, if you need to reference the documentation or are unsure on how to implement something, consult the docs. ## Core Commands As an agentic agent, never run the development server yourself. Instead, once you have completed your task, end generation and inform me that you are done and request a review of your changes. You are allowed to use database commands. ### Database Commands - `bunx triplit schema push` - Push schema changes to database ## Tech Stack & Dependencies - **Framework**: Nuxt 4 (SSR enabled) - **Language**: TypeScript with strict configuration - **Database**: Triplit (next generation fullstack syncing database, sort of like convex) - **Auth**: better-auth with email/password and social providers - **Styling**: UnoCSS with presetMini - **Icons**: @nuxt/icon with Iconify, use Myna UI Icons ## Code Style Guidelines **Follow the LLVM golden rule: If you are extending, enhancing, or bug fixing already implemented code, use the style that is already being used so that the source is uniform and easy to follow.** - **Always end lines with a semicolon regardless of surrounding code** - Use 4 spaces for indentation - Use consistent naming conventions for variables, functions, and constants - Always use strict equality checks (`===` and `!==`) instead of loose equality checks (`==` and `!=`) - Prefer using explicity equality checks over truthy/falsy checks e.g., prefer `if (value !== null)` instead of `if (value)` - Always check existing code patterns before implementing new features - Follow existing component and composable structures - Use proper TypeScript types for all function parameters and returns - Implement proper cleanup in composables (e.g., useClickOutside) - Prefer reactive state management over direct DOM manipulation - Keep components focused and single-purpose - Use semantic HTML elements where appropriate ### General Structure - Use Nuxt's app directory structure (`app/`, `server/`, `lib/`) - Auth configuration in `lib/auth.ts` - Server API routes go in `server/api/` - Composables go in `app/composables/` - Database schema in `db/schema.ts` - Database migrations in `db/migrations/` ### TypeScript Guidelines - Use strict TypeScript with no implicit any - Export types and interfaces explicitly - Use `computed()` and `ref()` from Vue 3 reactivity system - Type API responses and database models ### Vue Components - **Never use self-closing tags, excluding images, br, hr, and input** - Use `