Ganti renderer ANSI line-based (render.ts) dan event loop raw stdin dengan OpenTUI React bindings (@opentui/react + @opentui/core, React 19.2): - ui.tsx: komponen ZesdexApp (header/scrollbox transkrip/input/footer), adaptor toControllerKey (OpenTUI KeyEvent -> controller KeyEvent), bootTui (createCliRenderer + createRoot + mount). - run.ts: pakai bootTui, jalankan OpenTUI sampai user quit. - state/action/command/controller tetap logika murni (tidak tersentuh). - 5 unit test baru untuk toControllerKey; 79 test total hijau. - tsconfig: jsx react-jsx + jsxImportSource @opentui/react. - hapus render.ts (tidak terpakai); hapus script format rusak (bun fmt). - deps: @opentui/core, @opentui/react, react, @types/react. verify: tsc 0 err, bun test 79 pass, dist/zesdex merender TUI via pty.
38 lines
1.2 KiB
JSON
38 lines
1.2 KiB
JSON
{
|
|
"compilerOptions": {
|
|
"target": "ESNext",
|
|
"module": "ESNext",
|
|
"moduleResolution": "bundler",
|
|
"moduleDetection": "force",
|
|
"lib": ["ESNext", "DOM"],
|
|
"types": ["bun"],
|
|
"strict": true,
|
|
"noEmit": true,
|
|
"allowImportingTsExtensions": true,
|
|
"verbatimModuleSyntax": true,
|
|
"skipLibCheck": true,
|
|
"resolveJsonModule": true,
|
|
"esModuleInterop": true,
|
|
"isolatedModules": true,
|
|
"forceConsistentCasingInFileNames": true,
|
|
"noUncheckedIndexedAccess": true,
|
|
"noUnusedLocals": true,
|
|
"noUnusedParameters": true,
|
|
"noFallthroughCasesInSwitch": true,
|
|
"jsx": "react-jsx",
|
|
"jsxImportSource": "@opentui/react",
|
|
"paths": {
|
|
"@zesdex/domain": ["./src/domain/index.ts"],
|
|
"@zesdex/application": ["./src/application/index.ts"],
|
|
"@zesdex/infrastructure": ["./src/infrastructure/index.ts"],
|
|
"@zesdex/api": ["./src/interfaces/api/index.ts"],
|
|
"@zesdex/ws": ["./src/interfaces/ws/index.ts"],
|
|
"@zesdex/grpc": ["./src/interfaces/grpc/index.ts"],
|
|
"@zesdex/web": ["./src/interfaces/web/index.ts"],
|
|
"@zesdex/daemon": ["./src/interfaces/daemon/index.ts"],
|
|
"@zesdex/tui": ["./src/interfaces/tui/index.ts"]
|
|
}
|
|
},
|
|
"include": ["src"]
|
|
}
|