niceeval 0.4.5 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/agents/bub.ts +14 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "niceeval",
3
- "version": "0.4.5",
3
+ "version": "0.4.6",
4
4
  "description": "Agent-native eval tool — eval agents, services, functions, and coding-agent fixtures",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/agents/bub.ts CHANGED
@@ -34,9 +34,6 @@ export interface BubConfig {
34
34
  }
35
35
 
36
36
  const UV = "$HOME/.local/bin/uv";
37
- // bub 二进制:优先用镜像里(预制模板)烘焙在 PATH 上的 bub,否则用 uv 装到 $HOME/.local/bin 的那个。
38
- // 预制模板把 bub 装到 /usr/local/bin(见 sandbox/docker/Dockerfile),command -v 命中即用 → 跳过安装。
39
- const BUB = "$(command -v bub || echo $HOME/.local/bin/bub)";
40
37
 
41
38
  // TODO(upstream): 这两个默认值钉在个人 fork 的修复分支上,等上游合并后改回发布版并删掉本注释。
42
39
  // 可用 NICEEVAL_BUB_OVERRIDE / NICEEVAL_BUB_OTEL_PLUGIN 覆盖,不必改源码。
@@ -49,6 +46,17 @@ const OTEL_PLUGIN =
49
46
  "git+https://github.com/CorrectRoadH/bub-contrib.git@fix/tapestore-otel-tape-entry-validation" +
50
47
  "#subdirectory=packages/bub-tapestore-otel";
51
48
 
49
+ // override 钉在 git ref 上时,镜像里烘焙的 bub 不可信:模板构建时间早于 ref 当前指向的
50
+ // commit 的话,`command -v bub` 命中的就是修复前的旧构建 —— e2b 模板 fasteval-agents 上
51
+ // 整轮 bub turn failed(send 后无 AI 回复)就是这么来的:override 分支修好了,但捷径
52
+ // 让它从未被安装。所以 pinned 时绕开 PATH 捷径、恒走 uv 安装(有 checkpoint 缓存,
53
+ // 不是每沙箱都全量装),且运行时钉死用 $HOME/.local/bin/bub —— 只改 ensureBub 不改这里
54
+ // 的话,PATH 上的 /usr/local/bin/bub 仍会先于新装的被 command -v 找到,白装。
55
+ const BUB_PINNED = BUB_OVERRIDE.includes("git+");
56
+ // bub 二进制:pinned → 恒用 uv 装到 $HOME/.local/bin 的那个;非 pinned → 优先用镜像里
57
+ // (预制模板)烘焙在 PATH 上的 bub(装到 /usr/local/bin,见 sandbox/docker/Dockerfile)。
58
+ const BUB = BUB_PINNED ? "$HOME/.local/bin/bub" : "$(command -v bub || echo $HOME/.local/bin/bub)";
59
+
52
60
  const INSTALL_SPEC = `bub --override(${BUB_OVERRIDE}) --with ${OTEL_PLUGIN}`;
53
61
  const INSTALL_HASH = createHash("md5").update(INSTALL_SPEC).digest("hex").slice(0, 12);
54
62
 
@@ -64,7 +72,9 @@ const installsInProgress = new Map<string, Promise<void>>();
64
72
 
65
73
  async function ensureBub(sb: Sandbox, home: string): Promise<void> {
66
74
  // 预制模板已把 bub 烘焙进镜像(PATH 上)→ 直接用,跳过 uv 安装 + checkpoint 全套。
67
- if ((await sb.runShell("command -v bub >/dev/null 2>&1")).exitCode === 0) return;
75
+ // pinned(git ref override)时不走此捷径:烘焙的 bub 无法验证是不是 ref 当前指向的
76
+ // 构建,必须按 override 真装(见 BUB_PINNED 注释)。
77
+ if (!BUB_PINNED && (await sb.runShell("command -v bub >/dev/null 2>&1")).exitCode === 0) return;
68
78
 
69
79
  const checkpointPaths = [`${home}/.local`, `${home}/.cache/uv`];
70
80
  const cachePath = diskCachePath(home);