diff --git a/pkgs/by-name/ag/agent-browser/package.nix b/pkgs/by-name/ag/agent-browser/package.nix index 3a47929d3143..327271bcb537 100644 --- a/pkgs/by-name/ag/agent-browser/package.nix +++ b/pkgs/by-name/ag/agent-browser/package.nix @@ -9,17 +9,18 @@ pnpmConfigHook, geist-font, nix-update-script, + which, writableTmpDirAsHomeHook, }: let - version = "0.25.4"; + version = "0.27.0"; src = fetchFromGitHub { owner = "vercel-labs"; repo = "agent-browser"; tag = "v${version}"; - hash = "sha256-2Dv+ZY9cvcz6EIpI+gkV9w5eqQzpAD2N+yf4dJrmdwg="; + hash = "sha256-c+AJAXMX88t+zzFsEAtFJDjDY5EbhmEyMRGFL4t63nE="; }; # The Rust CLI embeds the dashboard UI via RustEmbed at compile time. @@ -46,8 +47,8 @@ let pnpmWorkspaces = [ "dashboard" ]; - # Replace Google Fonts fetch with a local font from nixpkgs since - # the nix sandbox has no network access. + # Replace Google Fonts fetch with a local font from nixpkgs since the + # Nix sandbox has no network access. postPatch = '' substituteInPlace packages/dashboard/src/app/layout.tsx --replace-fail \ '{ Geist } from "next/font/google"' \ @@ -80,7 +81,7 @@ rustPlatform.buildRustPackage (finalAttrs: { sourceRoot = "${finalAttrs.src.name}/cli"; - cargoHash = "sha256-3vzVVHFo13ZLsbbXw7n9BE/YXBJwoxzhvfjuqOQwdfg="; + cargoHash = "sha256-2u7yokHCxIVq16370Mg+n5kf03yUDYJmctFxN1fnaAA="; # Place the pre-built dashboard where RustEmbed expects it postUnpack = '' @@ -88,14 +89,24 @@ rustPlatform.buildRustPackage (finalAttrs: { cp -r ${dashboard} source/packages/dashboard/out ''; - nativeCheckInputs = [ writableTmpDirAsHomeHook ]; + # `which_exists` spawns the external `which` binary at runtime to probe + # for optional tools; pin it to an absolute store path. + postPatch = '' + substituteInPlace src/doctor/helpers.rs src/install.rs --replace-fail \ + '"which"' '"${lib.getExe which}"' + ''; + + nativeCheckInputs = [ + writableTmpDirAsHomeHook + ]; __darwinAllowLocalNetworking = true; - # skills/ contains SKILL.md for tools like Claude Code + # The `skills` subcommand looks for `skills/` and `skill-data/` next to + # `bin/`, relative to the canonical exe path. See cli/src/skills.rs. postInstall = '' - mkdir -p $out/share/agent-browser - cp -r ../skills $out/share/agent-browser/ + cp -r ../skills $out/skills + cp -r ../skill-data $out/skill-data ''; passthru = {