From 670dcea8f44a8884f67301244a6cec516b3025c7 Mon Sep 17 00:00:00 2001 From: Ari Lotter Date: Thu, 9 Apr 2026 15:30:18 -0400 Subject: [PATCH] ui-tui: add tsc build pipeline - Switch tsconfig to nodenext module resolution for Node 22 (used by installer script) - Add shebang to entry.tsx, preserved into index.js - Add HERMES_ROOT env var fallback for repo root resolution --- ui-tui/package.json | 2 +- ui-tui/src/entry.tsx | 1 + ui-tui/src/gatewayClient.ts | 2 +- ui-tui/tsconfig.json | 19 +++++++++++-------- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/ui-tui/package.json b/ui-tui/package.json index 5100edbd2..177cdd05a 100644 --- a/ui-tui/package.json +++ b/ui-tui/package.json @@ -6,7 +6,7 @@ "scripts": { "dev": "tsx --watch src/entry.tsx", "start": "tsx src/entry.tsx", - "build": "tsc", + "build": "tsc && chmod +x dist/entry.js", "lint": "eslint src/", "lint:fix": "eslint src/ --fix", "fmt": "prettier --write 'src/**/*.{ts,tsx}'", diff --git a/ui-tui/src/entry.tsx b/ui-tui/src/entry.tsx index 29d034957..68dc9c0b7 100644 --- a/ui-tui/src/entry.tsx +++ b/ui-tui/src/entry.tsx @@ -1,3 +1,4 @@ +#!/usr/bin/env node import { render } from 'ink' import React from 'react' diff --git a/ui-tui/src/gatewayClient.ts b/ui-tui/src/gatewayClient.ts index 332610961..5a3eac5e8 100644 --- a/ui-tui/src/gatewayClient.ts +++ b/ui-tui/src/gatewayClient.ts @@ -24,7 +24,7 @@ export class GatewayClient extends EventEmitter { private pending = new Map() start() { - const root = resolve(import.meta.dirname, '../../') + const root = process.env.HERMES_ROOT ?? resolve(import.meta.dirname, '../../') this.proc = spawn(process.env.HERMES_PYTHON ?? resolve(root, 'venv/bin/python'), ['-m', 'tui_gateway.entry'], { cwd: root, diff --git a/ui-tui/tsconfig.json b/ui-tui/tsconfig.json index fe135bfec..b7817e13a 100644 --- a/ui-tui/tsconfig.json +++ b/ui-tui/tsconfig.json @@ -1,16 +1,19 @@ { "compilerOptions": { "target": "ES2022", - "module": "ESNext", - "moduleResolution": "bundler", + "module": "nodenext", + "moduleResolution": "nodenext", "jsx": "react-jsx", - "lib": ["ES2022"], - "types": ["node"], - "strict": true, - "esModuleInterop": true, "outDir": "dist", "rootDir": "src", - "skipLibCheck": true + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "declaration": false, + "sourceMap": false, + "resolveJsonModule": true }, - "include": ["src"] + "include": ["src/**/*.ts", "src/**/*.tsx"], + "exclude": ["src/__tests__", "node_modules", "dist"] }