export declare const configTemplate = "import { defineOntology, userContext } from 'ont-run';\nimport { z } from 'zod';\n\n// Import resolver functions - TypeScript enforces return types match outputs\nimport healthCheck from './resolvers/healthCheck.js';\nimport getUser from './resolvers/getUser.js';\nimport deleteUser from './resolvers/deleteUser.js';\nimport getSalesData from './resolvers/getSalesData.js';\n\nexport default defineOntology({\n name: 'my-api',\n\n // Auto-generated UUID for cloud service identification\n uuid: '{{UUID}}',\n\n // Connect to ont-run.com for AI agent access\n // Set ONT_API_KEY in .env to enable verified mode\n cloud: true,\n\n environments: {\n dev: { debug: true },\n prod: { debug: false },\n },\n\n // Pluggable auth - customize this for your use case\n // Return { groups, user } for row-level access control\n auth: async (req) => {\n // Accept token from header or query param (useful for webhooks, MCP clients, etc.)\n const header = req.headers.get('Authorization');\n const url = new URL(req.url);\n const token = header || url.searchParams.get('token');\n\n // Return access groups and optional user data\n // This is where you'd verify JWTs, API keys, etc.\n if (!token) return { groups: ['public'] };\n if (token === 'admin-secret') {\n return {\n groups: ['admin', 'support', 'public'],\n user: { id: 'admin-1', email: 'admin@example.com' },\n };\n }\n return {\n groups: ['support', 'public'],\n user: { id: 'user-1', email: 'user@example.com' },\n };\n },\n\n accessGroups: {\n public: { description: 'Unauthenticated users' },\n support: { description: 'Support agents' },\n admin: { description: 'Administrators' },\n },\n\n entities: {\n User: { description: 'A user account' },\n },\n\n functions: {\n // Example: Public function\n healthCheck: {\n description: 'Check API health status',\n access: ['public', 'support', 'admin'],\n entities: [],\n isReadOnly: true,\n inputs: z.object({}),\n outputs: z.object({\n status: z.string(),\n env: z.string(),\n timestamp: z.string(),\n }),\n resolver: healthCheck,\n },\n\n // Example: Restricted function with row-level access\n getUser: {\n description: 'Get user details by ID',\n access: ['support', 'admin'],\n entities: ['User'],\n isReadOnly: true,\n inputs: z.object({\n userId: z.string().uuid(),\n // currentUser is injected from auth - not visible to API callers\n currentUser: userContext(z.object({\n id: z.string(),\n email: z.string(),\n })),\n }),\n outputs: z.object({\n id: z.string(),\n name: z.string(),\n email: z.string(),\n createdAt: z.string(),\n }),\n resolver: getUser,\n },\n\n // Example: Admin-only function\n deleteUser: {\n description: 'Delete a user account',\n access: ['admin'],\n entities: ['User'],\n isReadOnly: false,\n inputs: z.object({\n userId: z.string().uuid(),\n reason: z.string().optional(),\n }),\n outputs: z.object({\n success: z.boolean(),\n deletedUserId: z.string(),\n deletedAt: z.string(),\n }),\n resolver: deleteUser,\n },\n\n // Example: Function with UI visualization (MCP Apps)\n // When called via MCP, results are displayed in an interactive chart/table\n getSalesData: {\n description: 'Get sales data for visualization',\n access: ['public', 'support', 'admin'],\n entities: [],\n isReadOnly: true,\n inputs: z.object({\n region: z.string().optional(),\n }),\n outputs: z.array(z.object({\n month: z.string(),\n sales: z.number(),\n orders: z.number(),\n })),\n // Enable interactive visualization in MCP clients\n // Configure chart type and axes for optimal display\n ui: {\n type: 'chart',\n chartType: 'bar',\n xAxis: 'month',\n leftYAxis: ['sales', 'orders'], // Multiple fields on left axis\n },\n resolver: getSalesData,\n },\n },\n});\n"; export declare const buildTemplate = "import { defineConfig } from 'vite';\nimport react from '@vitejs/plugin-react';\nimport tailwindcss from '@tailwindcss/vite';\nimport { resolve } from 'path';\n\nexport default defineConfig({\n plugins: [react(), tailwindcss()],\n root: 'src',\n server: {\n port: 5173,\n proxy: {\n '/api': {\n target: 'http://localhost:3000',\n changeOrigin: true,\n },\n '/health': {\n target: 'http://localhost:3000',\n changeOrigin: true,\n },\n '/mcp': {\n target: 'http://localhost:3000',\n changeOrigin: true,\n },\n },\n },\n build: {\n outDir: '../dist/client',\n emptyOutDir: true,\n rollupOptions: {\n input: resolve(__dirname, 'src/index.html'),\n },\n },\n});\n"; export declare const bunfigTemplate = "# No longer needed - using Vite instead\n"; export declare const tsconfigTemplate = "{\n \"compilerOptions\": {\n \"lib\": [\"ESNext\", \"DOM\", \"DOM.Iterable\"],\n \"target\": \"ESNext\",\n \"module\": \"ESNext\",\n \"moduleDetection\": \"force\",\n \"jsx\": \"react-jsx\",\n \"allowJs\": true,\n \"moduleResolution\": \"bundler\",\n \"allowImportingTsExtensions\": true,\n \"verbatimModuleSyntax\": true,\n \"noEmit\": true,\n \"strict\": true,\n \"skipLibCheck\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noUnusedLocals\": false,\n \"noUnusedParameters\": false,\n \"noPropertyAccessFromIndexSignature\": false,\n \"types\": [\"node\"]\n }\n}\n";