mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
nix fixes
This commit is contained in:
parent
a1d2a0c0fd
commit
29721fcc58
3 changed files with 20 additions and 12 deletions
|
|
@ -665,6 +665,13 @@ def _make_tui_argv(tui_dir: Path, tui_dev: bool) -> tuple[list[str], Path]:
|
|||
sys.exit(1)
|
||||
return path
|
||||
|
||||
# pre-built dist (nix / HERMES_TUI_DIR) needs no npm at all.
|
||||
if not tui_dev:
|
||||
bundled = _find_bundled_tui(tui_dir)
|
||||
if bundled:
|
||||
node = _node_bin("node")
|
||||
return [node, str(bundled / "dist" / "entry.js")], bundled
|
||||
|
||||
npm = _node_bin("npm")
|
||||
if not (tui_dir / "node_modules").exists():
|
||||
print("Installing TUI dependencies…")
|
||||
|
|
@ -703,11 +710,7 @@ def _make_tui_argv(tui_dir: Path, tui_dev: bool) -> tuple[list[str], Path]:
|
|||
return [str(tsx), "src/entry.tsx"], tui_dir
|
||||
return [npm, "start"], tui_dir
|
||||
|
||||
env_bundle = os.environ.get("HERMES_TUI_DIR")
|
||||
uses_packaged_dist = bool(
|
||||
env_bundle and (Path(env_bundle) / "dist" / "entry.js").exists()
|
||||
)
|
||||
if not uses_packaged_dist and _tui_build_needed(tui_dir):
|
||||
if _tui_build_needed(tui_dir):
|
||||
result = subprocess.run(
|
||||
[npm, "run", "build"],
|
||||
cwd=str(tui_dir),
|
||||
|
|
@ -735,7 +738,8 @@ def _launch_tui(resume_session_id: Optional[str] = None, tui_dev: bool = False):
|
|||
tui_dir = PROJECT_ROOT / "ui-tui"
|
||||
|
||||
env = os.environ.copy()
|
||||
env["HERMES_ROOT"] = os.environ.get("HERMES_ROOT", str(PROJECT_ROOT))
|
||||
env["HERMES_PYTHON_SRC_ROOT"] = os.environ.get("HERMES_PYTHON_SRC_ROOT", str(PROJECT_ROOT))
|
||||
env.setdefault("HERMES_CWD", os.getcwd())
|
||||
if resume_session_id:
|
||||
env["HERMES_TUI_RESUME"] = resume_session_id
|
||||
|
||||
|
|
|
|||
12
nix/tui.nix
12
nix/tui.nix
|
|
@ -4,7 +4,7 @@ let
|
|||
src = ../ui-tui;
|
||||
npmDeps = pkgs.fetchNpmDeps {
|
||||
inherit src;
|
||||
hash = "sha256-QQixyLmsn5+Y1daHifzDaNQbaoZjm+ezGrGoLXcc95U=";
|
||||
hash = "sha256-+EhRRuvXi5hJupseHblF+MGxs84ijRMIH4qt5+2yYi8=";
|
||||
};
|
||||
|
||||
packageJson = builtins.fromJSON (builtins.readFile (src + "/package.json"));
|
||||
|
|
@ -28,6 +28,10 @@ pkgs.buildNpmPackage {
|
|||
# runtime node_modules
|
||||
cp -r node_modules $out/lib/hermes-tui/node_modules
|
||||
|
||||
# @hermes/ink is a file: dependency, we need to copy it in fr
|
||||
rm -f $out/lib/hermes-tui/node_modules/@hermes/ink
|
||||
cp -r packages/hermes-ink $out/lib/hermes-tui/node_modules/@hermes/ink
|
||||
|
||||
# package.json needed for "type": "module" resolution
|
||||
cp package.json $out/lib/hermes-tui/
|
||||
|
||||
|
|
@ -36,7 +40,7 @@ pkgs.buildNpmPackage {
|
|||
|
||||
nativeBuildInputs = [
|
||||
(pkgs.writeShellScriptBin "update_tui_lockfile" ''
|
||||
set -euo pipefail
|
||||
set -euox pipefail
|
||||
|
||||
# get root of repo
|
||||
REPO_ROOT=$(git rev-parse --show-toplevel)
|
||||
|
|
@ -45,7 +49,7 @@ pkgs.buildNpmPackage {
|
|||
cd "$REPO_ROOT/ui-tui"
|
||||
rm -rf node_modules/
|
||||
npm cache clean --force
|
||||
npm install
|
||||
CI=true npm install # ci env var to suppress annoying unicode install banner lag
|
||||
${pkgs.lib.getExe npm-lockfile-fix} ./package-lock.json
|
||||
|
||||
NIX_FILE="$REPO_ROOT/nix/tui.nix"
|
||||
|
|
@ -65,7 +69,7 @@ pkgs.buildNpmPackage {
|
|||
STAMP_VALUE="${npmLockHash}"
|
||||
if [ ! -f "$STAMP" ] || [ "$(cat "$STAMP")" != "$STAMP_VALUE" ]; then
|
||||
echo "hermes-tui: installing npm dependencies..."
|
||||
cd ui-tui && npm install --silent --no-fund --no-audit 2>/dev/null && cd ..
|
||||
cd ui-tui && CI=true npm install --silent --no-fund --no-audit 2>/dev/null && cd ..
|
||||
mkdir -p .nix-stamps
|
||||
echo "$STAMP_VALUE" > "$STAMP"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -24,10 +24,10 @@ export class GatewayClient extends EventEmitter {
|
|||
private pending = new Map<string, Pending>()
|
||||
|
||||
start() {
|
||||
const root = process.env.HERMES_ROOT ?? resolve(import.meta.dirname, '../../')
|
||||
const root = process.env.HERMES_PYTHON_SRC_ROOT ?? resolve(import.meta.dirname, '../../')
|
||||
|
||||
this.proc = spawn(process.env.HERMES_PYTHON ?? resolve(root, 'venv/bin/python'), ['-m', 'tui_gateway.entry'], {
|
||||
cwd: root,
|
||||
cwd: process.env.HERMES_CWD || root,
|
||||
stdio: ['pipe', 'pipe', 'pipe']
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue