`vite.config.ts`: **2536 -> 141 Zeilen**. Der Dev-Server liegt jetzt in
`dev-server/` (17 Module) mit 44 eigenen Tests. Die Build-Konfiguration eines
Projekts ist die eine Datei, die jeder anfassen muss und niemand testen kann;
darin steckte ein vollstaendiger HTTP-Server mit Prozessverwaltung.
Die Schnitte folgen GETEILTEM ZUSTAND, nicht Zeilenzahl — `comfy.ts` haelt
einen veraenderlichen Kindprozess samt Logpuffer, `downloads.ts` eine Map
laufender Downloads, `whisper.ts` Prozess und Antwortschlange, `web-search.ts`
einen Verfuegbarkeitsstatus, den Status, Installer und Suchkette teilen. Was
zwei Unabhaengige brauchen (`ssrf.ts`, `python.ts`, `paths.ts`), liegt
daneben statt in einem von beiden. `index.ts` traegt nur noch die Reihenfolge.
Der Port ist ein Parameter: `LU_DEV_PORT` -> `devServerPlugin({ port })`.
Ein Server, dessen Port fest verdrahtet ist, laesst sich nicht zweimal
starten und damit auch nicht pruefen.
Die 15 Lint-Fehler der Datei sind bezahlt, nicht unterdrueckt: 12
`require()`, von denen jedes einen Import SCHATTETE, der oben in derselben
Datei schon stand, und 3 leere `catch` mit dem Grund im Block (Hausstil,
Vorbild `src/api/discover.ts:657`). eslint . faellt damit von 60 auf 45 —
die verbleibenden liegen alle in `src/components`.
Geprueft im eigenen Worktree auf HEAD (nur diese Dateien, node_modules
kopiert statt verlinkt): tsc -b 0 · vite build 0 · madge 0 Zyklen ueber
`src` UND `dev-server` · eslint 45 · vitest 7907 gruen / 0 rot.
Zwei eigene Gegenproben zusaetzlich zu den 12 Sonden des Agenten:
1. ENDPUNKT-PARITAET, mengenweise statt gezaehlt: alle `/local-api/`-Pfade
aus HEADs vite.config.ts gegen alle aus dev-server/ — 46 zu 46, und die
Differenz ist in BEIDE Richtungen leer. Kein Endpunkt verloren, keiner
erfunden.
2. Die REIHENFOLGE, die der Agent als folgenlos meldet. Drei Pfade sind
Praefix eines anderen (`download-model` < `download-model-to-path`,
`fs-read` < `fs-read-bytes`, `transcribe` < `transcribe-status`) — dort
waere ein zu weit greifender Mount ein echter Fehler. Am laufenden Server
auf Port 5401 gemessen: `/transcribe-status` -> **200** (eigener Handler),
`/transcribe` -> 405 (nur POST). Haette der Praefix-Mount zugegriffen,
stuende dort 405. Ohne CSRF-Kopfzeile -> 403, die Sperre greift.
19 lines
875 B
TypeScript
19 lines
875 B
TypeScript
/**
|
|
* Der Projektstamm, von den Dev-Server-Modulen aus gesehen.
|
|
*
|
|
* Diese Rechnung stand als `const __dirname = dirname(fileURLToPath(
|
|
* import.meta.url))` in `vite.config.ts`, und weil DIESE Datei im Stamm liegt,
|
|
* traf `resolve(__dirname, '.env')` dort die richtige Datei. Die Module hier
|
|
* liegen eine Ebene tiefer: ohne das `..` schriebe /local-api/set-comfyui-path
|
|
* seinen COMFYUI_PATH nach `dev-server/.env`, wo dotenv ihn nie wieder liest,
|
|
* und /local-api/transcribe suchte `whisper_server.py` im falschen Ordner.
|
|
*/
|
|
import { dirname, resolve } from 'path'
|
|
import { fileURLToPath } from 'url'
|
|
|
|
/** Der Ordner, in dem package.json und vite.config.ts liegen. */
|
|
export const PROJECT_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..')
|
|
|
|
/** Dieselbe .env, die vite.config.ts beim Start lädt. */
|
|
export const ENV_FILE = resolve(PROJECT_ROOT, '.env')
|