import * as esbuild from 'esbuild' import { resolve, dirname } from 'path' import { fileURLToPath } from 'url' import { chmodSync, cpSync, mkdirSync, readFileSync, rmSync } from 'fs' const rootDir = resolve(dirname(fileURLToPath(import.meta.url)), '..') const pkg = JSON.parse(readFileSync(resolve(rootDir, 'package.json'), 'utf-8')) const version = pkg.version const serverOutDir = resolve(rootDir, 'dist/server') rmSync(serverOutDir, { recursive: true, force: true }) mkdirSync(serverOutDir, { recursive: true }) await esbuild.build({ entryPoints: [resolve(rootDir, 'packages/server/src/index.ts')], bundle: true, platform: 'node', target: 'node23', format: 'cjs', outfile: resolve(serverOutDir, 'index.js'), external: ['node-pty', 'node:sqlite', 'socket.io'], define: { __APP_VERSION__: JSON.stringify(version), }, sourcemap: true, minify: true, treeShaking: true, logLevel: 'info', }) const bridgeOutDir = resolve(serverOutDir, 'agent-bridge') mkdirSync(bridgeOutDir, { recursive: true }) cpSync( resolve(rootDir, 'packages/server/src/services/hermes/agent-bridge/hermes_bridge.py'), resolve(bridgeOutDir, 'hermes_bridge.py'), ) chmodSync(resolve(bridgeOutDir, 'hermes_bridge.py'), 0o755) const skillsOutDir = resolve(rootDir, 'dist/skills') rmSync(skillsOutDir, { recursive: true, force: true }) cpSync( resolve(rootDir, 'packages/skills'), skillsOutDir, { recursive: true }, )