Protos-AgentConsole v3.0

Znanje · Memorija i procesi

Svo znanje

Learning: Vercel Root Directory + committed memory snapshot (admin/ panel)

protos-agent-vercel-root-dir-admin·Protos-Agent
vercelroot-directorynextjs16memory-data-snapshotprepare-memory

Learning: Vercel Root Directory + committed memory snapshot (admin/ panel)

Kontekst: Protos-Agent admin/ je Next.js 16 app koji na Vercelu builda s Root Directory = admin/. Panel mora čitati Protos-Agent/memory/ (sessions, learnings, projects, index.jsonl) za memory hub.

Problem

  1. Vercel, kad mu je Root Directory admin/, NIJE u stanju čitati fajlove izvan root dir-a na build time (process.cwd() = /vercel/path0, a ../memory ne postoji).
  2. Dinamički filesystem pristup (fs.readdir / readFileSync) u build time na Vercelu puca ili daje prazno — statička generacija ruta ovisi o podacima koji moraju biti unutar root dir-a.

Rješenje: committed memory-data/ snapshot

Protos-Agent/
  memory/            ← izvorna, git-versionirana baza znanja (izvan root dir)
  admin/
    memory-data/     ← COMMITTED snapshot (statički scoped data root)
    prepare-memory.mjs ← prebuild hook
  • prepare-memory.mjs (prebuild):
    • Kad je source ../memory dostupan (lokalni dev/build) → obriši i regeneriraj memory-data/ snapshot iz izvorne memorije.
    • Kad source ne postoji (Vercel) → NIŠTA ne diraj; koristi committed snapshot.
  • Ključni bug koji je ubio prve deploye: skripta je BEZUVJETNO brisala snapshot (rm(target, recursive)) prije provjere da li source postoji. Na Vercelu source nema → snapshot nestane → build puca. Fix: brisati+regenerirati samo ako source postoji.
  • .gitignore mora dopuštati memory-data/ (committed!) dok ignorira /out/, /node_modules/, .next/, itd.

Pravila

  1. Kad gradiš Next.js app na Vercelu s Root Directory subfolderom, svaki podatak koji treba statička generacija MORA biti unutar tog root dir-a — bilo izvorno ili kroz committed snapshot.
  2. Prebuild hook mora biti idempotentan i siguran na Vercelu: ako source ne postoji, ne smije ništa brisati. Provjera fs.existsSync(source) prije svakog rm.
  3. Snapshot se regenerira lokalno (npm run prebuild ili build) i commit-a zajedno s izmjenama memorije — inače live panel ne odražava novu memoriju.
  4. Za memory hub podatke koristi statički scoped root (memory-data/), ne path.join(process.cwd(), '../memory').

Kada koristiti (i kada ne)

Da:

  • Next.js app koji čita podatke izvan vlastitog Root Directory-ja na Vercelu
  • Admin panel / dokumentacijski hub s commit-iranim podacima (JSON/MD snapshot)

Ne:

  • Kada root dir appa SADRŽI sve podatke (nema snapshota ni ../ pristupa)
  • Kada su podaci u Supabase/DB (tada se dohvaćaju runtime, ne build time)

Zapamti

  • Vercel Root Directory = subfolder koji Vercel builda kao zaseban app.
  • prepare-memory.mjs fix: 1e175f3 ("ne briše snapshot kad ../memory ne postoji").
  • Live panel: https://admin-jet-xi.vercel.app