vestige/apps/dashboard/vite.config.ts
Sam Valladares a046c620c8 feat(observatory): raw-WebGPU living cognitive field with 5 deterministic demos
The Observatory is a full-bleed, zero-library WebGPU surface that renders
the memory graph as a living cognitive field. Five deterministic demo
moments driven by a URL contract (?demo=<name>&seed=...&frame=N):
recall-path, engram-birth, salience-rescue, forgetting-horizon, firewall.
Capture mode (?frame=N) freezes the sim deterministically so the same URL
produces identical pixels, the viral-clip primitive.

Architecture: bare-metal WebGPU engine (no Three.js), seeded demo clock,
per-demo plan + renderer modules, WGSL shaders (simulate, nodes, edges,
path, birth particles, rescue, forgetting, firewall) plus a post-processing
chain (tone mapping, MIP). DOM is instrument overlays only (telemetry strip,
timeline spine, rescue verdict); the layout gives /observatory the same
full-bleed bypass as marketing routes so recordings stay clean.

Reads the real memory graph. Verified live: svelte-check 939 files 0 errors,
96 observatory unit tests green, all 5 demos load at 108-119fps with zero
console errors against the live brain.

Known follow-up: engram-birth capture-mode particle cluster needs a render
fix pass before it is camera-ready; the other 4 demos are camera-ready.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 10:49:18 -07:00

35 lines
944 B
TypeScript

/// <reference types="vitest/config" />
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5173,
proxy: {
'/api': {
target: process.env.VESTIGE_API_TARGET ?? 'http://127.0.0.1:3927',
changeOrigin: true
},
'/ws': {
target: (process.env.VESTIGE_API_TARGET ?? 'http://127.0.0.1:3927').replace(
'http',
'ws'
),
ws: true
}
}
},
test: {
include: ['src/**/*.test.ts'],
environment: 'node',
setupFiles: ['src/lib/graph/__tests__/setup.ts'],
alias: {
$lib: new URL('./src/lib', import.meta.url).pathname,
$components: new URL('./src/lib/components', import.meta.url).pathname,
$stores: new URL('./src/lib/stores', import.meta.url).pathname,
$types: new URL('./src/lib/types', import.meta.url).pathname,
},
},
});