niceeval 0.13.0 → 0.13.2-canary.35

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 (172) hide show
  1. package/INDEX.md +1 -0
  2. package/README.md +9 -10
  3. package/README.zh.md +9 -10
  4. package/dist/agents/ai-sdk.cjs.map +1 -1
  5. package/dist/agents/ai-sdk.d.cts +1 -1
  6. package/dist/agents/ai-sdk.d.mts +1 -1
  7. package/dist/agents/ai-sdk.d.ts +1 -1
  8. package/dist/agents/coding-cli-versions.cjs +10 -1
  9. package/dist/agents/coding-cli-versions.cjs.map +1 -1
  10. package/dist/agents/coding-cli-versions.d.cts +8 -3
  11. package/dist/agents/coding-cli-versions.d.mts +8 -3
  12. package/dist/agents/coding-cli-versions.d.ts +8 -3
  13. package/dist/agents/coding-cli-versions.js +18 -12
  14. package/dist/agents/deepseek-harness.cjs +103 -0
  15. package/dist/agents/deepseek-harness.cjs.map +1 -0
  16. package/dist/agents/deepseek-harness.d.cts +12 -0
  17. package/dist/agents/deepseek-harness.d.mts +12 -0
  18. package/dist/agents/deepseek-harness.d.ts +12 -0
  19. package/dist/agents/deepseek-harness.js +7 -0
  20. package/dist/agents/deepseek-harness.js.map +1 -0
  21. package/dist/agents/index.cjs +5 -1
  22. package/dist/agents/index.cjs.map +1 -1
  23. package/dist/agents/index.d.cts +4 -0
  24. package/dist/agents/index.d.mts +4 -0
  25. package/dist/agents/index.d.ts +4 -0
  26. package/dist/agents/index.js +54 -50
  27. package/dist/agents/index.mjs +54 -50
  28. package/dist/agents/omp.cjs +170 -0
  29. package/dist/agents/omp.cjs.map +1 -0
  30. package/dist/agents/omp.d.cts +14 -0
  31. package/dist/agents/omp.d.mts +14 -0
  32. package/dist/agents/omp.d.ts +14 -0
  33. package/dist/agents/omp.js +7 -0
  34. package/dist/agents/omp.js.map +1 -0
  35. package/dist/agents/types.cjs.map +1 -1
  36. package/dist/agents/types.d.cts +2 -2
  37. package/dist/agents/types.d.mts +2 -2
  38. package/dist/agents/types.d.ts +2 -2
  39. package/dist/analysis/api.cjs +9 -1
  40. package/dist/analysis/api.cjs.map +1 -1
  41. package/dist/analysis/api.d.cts +21 -0
  42. package/dist/analysis/api.d.mts +21 -0
  43. package/dist/analysis/api.d.ts +21 -0
  44. package/dist/analysis/api.js +8 -6
  45. package/dist/cli.cjs +10 -1
  46. package/dist/cli.cjs.map +1 -1
  47. package/dist/i18n/en.cjs +7 -2
  48. package/dist/i18n/en.cjs.map +1 -1
  49. package/dist/i18n/en.d.cts +7 -2
  50. package/dist/i18n/en.d.mts +7 -2
  51. package/dist/i18n/en.d.ts +7 -2
  52. package/dist/o11y/parsers/hermes.cjs +1 -1
  53. package/dist/o11y/parsers/hermes.cjs.map +1 -1
  54. package/dist/report/built-in/analysis-values.cjs +21 -5
  55. package/dist/report/built-in/analysis-values.cjs.map +1 -1
  56. package/dist/report/built-in/analysis-values.d.cts +11 -9
  57. package/dist/report/built-in/analysis-values.d.mts +11 -9
  58. package/dist/report/built-in/analysis-values.d.ts +11 -9
  59. package/dist/report/built-in/overview.cjs +1 -0
  60. package/dist/report/built-in/overview.cjs.map +1 -1
  61. package/dist/report/built-in/result-components.cjs +58 -12
  62. package/dist/report/built-in/result-components.cjs.map +1 -1
  63. package/dist/report/built-in/result-components.d.cts +15 -0
  64. package/dist/report/built-in/result-components.d.mts +15 -0
  65. package/dist/report/built-in/result-components.d.ts +15 -0
  66. package/dist/report/built-in/run-membership-overview.cjs +100 -4
  67. package/dist/report/built-in/run-membership-overview.cjs.map +1 -1
  68. package/dist/report/built-in/standard.cjs +1 -0
  69. package/dist/report/built-in/standard.cjs.map +1 -1
  70. package/dist/report/built-in/standard.d.cts +1 -0
  71. package/dist/report/built-in/standard.d.mts +1 -0
  72. package/dist/report/built-in/standard.d.ts +1 -0
  73. package/dist/report/components/entity-lists/compute.cjs +40 -3
  74. package/dist/report/components/entity-lists/compute.cjs.map +1 -1
  75. package/dist/report/components/entity-lists/compute.d.cts +8 -6
  76. package/dist/report/components/entity-lists/compute.d.mts +8 -6
  77. package/dist/report/components/entity-lists/compute.d.ts +8 -6
  78. package/dist/report/components/entity-lists/content.cjs +31 -6
  79. package/dist/report/components/entity-lists/content.cjs.map +1 -1
  80. package/dist/report/components/entity-lists/index.cjs +3 -2
  81. package/dist/report/components/entity-lists/index.cjs.map +1 -1
  82. package/dist/report/components/entity-lists/index.d.cts +1 -1
  83. package/dist/report/components/entity-lists/index.d.mts +1 -1
  84. package/dist/report/components/entity-lists/index.d.ts +1 -1
  85. package/dist/report/definition/cell.cjs +3 -0
  86. package/dist/report/definition/cell.cjs.map +1 -1
  87. package/dist/report/definition/cell.d.cts +2 -0
  88. package/dist/report/definition/cell.d.mts +2 -0
  89. package/dist/report/definition/cell.d.ts +2 -0
  90. package/dist/report/definition/primitives.cjs +9 -2
  91. package/dist/report/definition/primitives.cjs.map +1 -1
  92. package/dist/report/execution/machine.cjs +1 -1
  93. package/dist/report/execution/machine.cjs.map +1 -1
  94. package/dist/report/host/execute.cjs +14 -4
  95. package/dist/report/host/execute.cjs.map +1 -1
  96. package/dist/report/host/execute.d.cts +5 -0
  97. package/dist/report/host/execute.d.mts +5 -0
  98. package/dist/report/host/execute.d.ts +5 -0
  99. package/dist/report/host/from-record.cjs +6 -1
  100. package/dist/report/host/from-record.cjs.map +1 -1
  101. package/dist/report/host/from-record.d.cts +5 -0
  102. package/dist/report/host/from-record.d.mts +5 -0
  103. package/dist/report/host/from-record.d.ts +5 -0
  104. package/dist/report/runtime/resolved-page.cjs +16 -6
  105. package/dist/report/runtime/resolved-page.cjs.map +1 -1
  106. package/dist/report/runtime/resolved-page.d.cts +3 -0
  107. package/dist/report/runtime/resolved-page.d.mts +3 -0
  108. package/dist/report/runtime/resolved-page.d.ts +3 -0
  109. package/dist/report/runtime/text.cjs +1 -0
  110. package/dist/report/runtime/text.cjs.map +1 -1
  111. package/dist/report/runtime/text.d.cts +4 -0
  112. package/dist/report/runtime/text.d.mts +4 -0
  113. package/dist/report/runtime/text.d.ts +4 -0
  114. package/dist/runner/feedback/human.cjs +180 -16
  115. package/dist/runner/feedback/human.cjs.map +1 -1
  116. package/dist/runner/run.cjs +43 -0
  117. package/dist/runner/run.cjs.map +1 -1
  118. package/dist/sample/capability.cjs +93 -0
  119. package/dist/sample/capability.cjs.map +1 -1
  120. package/dist/sample/capability.d.cts +3 -1
  121. package/dist/sample/capability.d.mts +3 -1
  122. package/dist/sample/capability.d.ts +3 -1
  123. package/dist/sample/capability.js +8 -6
  124. package/dist/sandbox/docker-agent-image.cjs +5 -1
  125. package/dist/sandbox/docker-agent-image.cjs.map +1 -1
  126. package/dist/sandbox/docker-agent-image.d.cts +2 -0
  127. package/dist/sandbox/docker-agent-image.d.mts +2 -0
  128. package/dist/sandbox/docker-agent-image.d.ts +2 -0
  129. package/dist/sandbox/docker-agent-image.js +14 -10
  130. package/dist/sandbox/index.cjs +4 -2
  131. package/dist/sandbox/index.cjs.map +1 -1
  132. package/dist/sandbox/index.d.cts +1 -1
  133. package/dist/sandbox/index.d.mts +1 -1
  134. package/dist/sandbox/index.d.ts +1 -1
  135. package/dist/sandbox/index.js +120 -116
  136. package/dist/sandbox/index.mjs +120 -116
  137. package/docs-site/images/hitl-handshake-zh.svg +3 -3
  138. package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +3 -3
  139. package/docs-site/zh/examples/integrations/claude-sdk.mdx +3 -3
  140. package/docs-site/zh/examples/integrations/codex-sdk.mdx +5 -5
  141. package/docs-site/zh/examples/integrations/langgraph.mdx +3 -3
  142. package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
  143. package/docs-site/zh/explanation/adapter.mdx +5 -5
  144. package/docs-site/zh/explanation/assert.mdx +1 -1
  145. package/docs-site/zh/explanation/drive.mdx +3 -1
  146. package/docs-site/zh/explanation/evals.mdx +3 -1
  147. package/docs-site/zh/explanation/hitl.mdx +7 -7
  148. package/docs-site/zh/explanation/runner.mdx +2 -2
  149. package/docs-site/zh/index.mdx +2 -2
  150. package/docs-site/zh/reference/builtin-agents.mdx +4 -4
  151. package/docs-site/zh/reference/capabilities.mdx +1 -1
  152. package/docs-site/zh/reference/cli.mdx +14 -14
  153. package/docs-site/zh/reference/events.mdx +11 -11
  154. package/docs-site/zh/reference/official-adapters.mdx +1 -1
  155. package/docs-site/zh/reference/results-data.mdx +6 -0
  156. package/docs-site/zh/troubleshooting/debugging.mdx +2 -2
  157. package/docs-site/zh/tutorials/agent-feedback-loop.mdx +2 -2
  158. package/docs-site/zh/tutorials/ci-integration.mdx +1 -1
  159. package/docs-site/zh/tutorials/connect-your-agent.mdx +2 -2
  160. package/docs-site/zh/tutorials/custom-reports.mdx +4 -4
  161. package/docs-site/zh/tutorials/deploy-report-site.mdx +3 -3
  162. package/docs-site/zh/tutorials/docker-in-docker.mdx +3 -0
  163. package/docs-site/zh/tutorials/experiments.mdx +2 -2
  164. package/docs-site/zh/tutorials/handle-execution-failures.mdx +1 -1
  165. package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +1 -1
  166. package/docs-site/zh/tutorials/nixos-managed-dind.mdx +160 -0
  167. package/docs-site/zh/tutorials/publish-report.mdx +4 -4
  168. package/docs-site/zh/tutorials/reporters.mdx +1 -1
  169. package/docs-site/zh/tutorials/rerun-and-cache.mdx +16 -0
  170. package/docs-site/zh/tutorials/viewing-results.mdx +28 -10
  171. package/docs-site/zh/tutorials/write-send.mdx +7 -6
  172. package/package.json +1 -1
@@ -70,6 +70,22 @@ npx niceeval accept @1K1P0VJAPVJ12
70
70
 
71
71
  `accept` 先检查所有输入,再发布一个以 `reference` 采用该 Attempt 的新 Run。操作者理由、差异和资格会随该 Run 保存。它不会修改源 Attempt,也不会复制源 Attempt 的业务值。
72
72
 
73
+ 新 Run 保留该 Experiment 当前完整的 expected-slot 分母。命令中选中的 slot 写作 `accepted`,同 Run 中没有被选中的 sibling slot 写作 `not-dispatched`。因此一次只接受一个 locator 时,这个 Run 的其它位置可能没有指标输入。
74
+
75
+ 每次 `accept` 调用都会发布新 Run,不会修改或合并上一次调用。连续接受同一 Experiment 的多个 locator 后,`project-current` 会保留这些仍匹配的 Run occurrence。默认 Overview 会在有边框的 `Result coverage` 区域提示只有部分预期结果可用;这里的可用数是结果覆盖率,不是通过率或 score。
76
+
77
+ 需要接受同一 Experiment 的多个结果时,把 locator 放进同一条命令:
78
+
79
+ ```sh
80
+ npx niceeval accept @1K1P0VJAPVJ12 @1K1P0VJAPVJ13
81
+ ```
82
+
83
+ 同一次调用会为该 Experiment 发布一个 Run,并让两个目标 slot 都成为 `accepted`。需要核对某次接受的精确分母时,复制成功反馈中的 Run ID:
84
+
85
+ ```sh
86
+ npx niceeval show --run <accepted-run-id>
87
+ ```
88
+
73
89
  ## 发布后不可修改
74
90
 
75
91
  Attempt 发布后不可修改。每一次查看都读取当时 Record 中已发布的值;新 Run 或新事实只会以新的发布出现。若 Attempt 或引用无效,Sample 将该 slot 标为 `core-invalid`,而不是 `not-recorded`。
@@ -7,8 +7,8 @@ description: "用 show 或 view 从已发布的 Record 选择固定 Sample,并
7
7
  运行结束后,从下面两条命令开始:
8
8
 
9
9
  ```sh
10
- npx niceeval show
11
- npx niceeval view
10
+ pnpm exec niceeval show
11
+ pnpm exec niceeval view
12
12
  ```
13
13
 
14
14
  两条命令用相同选择规则形成固定 `Sample`,但执行范围不同。`show` 只读取一个目标 Page;`view` 会先构建完整站点,再把它托管在浏览器中。
@@ -18,7 +18,7 @@ npx niceeval view
18
18
  选择一个明确 Run:
19
19
 
20
20
  ```sh
21
- npx niceeval show --run 7b8d2ea4-b840-4870-9840-f85a436a5527
21
+ pnpm exec niceeval show --run 7b8d2ea4-b840-4870-9840-f85a436a5527
22
22
  ```
23
23
 
24
24
  普通运行可从 `exp --json` 最后一条 receipt 的 `runIds` 读取 Run ID:
@@ -29,6 +29,8 @@ npx niceeval show --run 7b8d2ea4-b840-4870-9840-f85a436a5527
29
29
 
30
30
  不带 locator、`--run` 或 `--experiment` 时,命令使用 `project-current`:它保留全部仍与当前项目身份匹配的已发布结果,而不是只选最新一条。需要阅读历史结果时,传入完整 `--run`;要限制当前项目结果时,重复传入完整的 `--experiment <id>`。
31
31
 
32
+ `project-current` 按 Run 中的 slot occurrence 保留结果。它不会把多个 Run 里同名的 Experiment、评估用例和 Attempt 序号合并成一个位置。重复运行或分多次执行 `accept` 都可能增加当前 `Sample` 的分母。
33
+
32
34
  Sample 记录每个位置的状态:
33
35
 
34
36
  | 状态 | 含义 |
@@ -43,10 +45,10 @@ Sample 记录每个位置的状态:
43
45
  ## 在终端读取一个 Page
44
46
 
45
47
  ```sh
46
- npx niceeval show --run <run-id>
47
- npx niceeval show --run <run-id> --page /
48
- npx niceeval show @<attempt-locator>
49
- npx niceeval show --run <run-id> --report ./reports/quality.tsx --json
48
+ pnpm exec niceeval show --run <run-id>
49
+ pnpm exec niceeval show --run <run-id> --page /
50
+ pnpm exec niceeval show @<attempt-locator>
51
+ pnpm exec niceeval show --run <run-id> --report ./reports/quality.tsx --json
50
52
  ```
51
53
 
52
54
  省略 `--page` 时,`show` 使用 Report 的默认可导航页面。提供 `--page` 时,它只 decode、load、render 和关闭这一个精确 route。参数 Page 不会因此调用 `enumerate()`;其它 Page、Analysis 查询和作者 callback 也不会执行。
@@ -66,11 +68,27 @@ npx niceeval show --run <run-id> --report ./reports/quality.tsx --json
66
68
 
67
69
  JSON 不包含其它 Page、HTML、React tree、站点 identity 或 Record 读取能力。
68
70
 
71
+ ## 按题型读取主读数
72
+
73
+ 默认报告按评估类型选择主读数:
74
+
75
+ - Pass Eval 显示通过率。
76
+ - Score Eval 显示 earned score。
77
+ - mixed Experiment 显示 Score,并在 Pass Eval 子行显示通过率,不把两者合成百分比。
78
+
79
+ Score Eval 上声明的 `points` 是评分项的贡献权重,不是 Experiment 的固定满分。动态执行、条件分支或不可用材料可能让评分项集合不同,因此默认报告不会自动把 earned score 除以所有源码里声明的 `points`。
80
+
81
+ 项目没有配置 Report 时,`project-current` 使用单页 `default-overview`。显式传入 `--report standard` 会使用相同的题型主读数,并额外提供 Attempts、Traces、Experiment 和 Attempt 详情页。增加详情页不会改变 Score 或通过率的计算口径。
82
+
83
+ 默认 Overview 让主读数保持独立:Score 只显示 earned score,耗时和 token 也只显示各自的值。它不会在这些单元格后面追加容易与分数混淆的 `2 / 4 slot · partial`。
84
+
85
+ 如果部分预期结果不可用,Overview 会在 KPI 和实验表之外显示独立的 `Result coverage` 区域。终端中的这个区域有边框,标题行直接写出“多少个结果可用”;它说明结果完整度,不表示分数、通过率或工作完成比例。结果完整时不显示这个区域。
86
+
69
87
  ## 在浏览器读取完整站点
70
88
 
71
89
  ```sh
72
- npx niceeval view --experiment checkout --no-open
73
- npx niceeval view --run <run-id> --page / --no-open
90
+ pnpm exec niceeval view --experiment checkout --no-open
91
+ pnpm exec niceeval view --run <run-id> --page / --no-open
74
92
  ```
75
93
 
76
94
  view 在启动 server 前枚举所有显式声明的普通 Page 与参数 Page 的全部实例,并验证路径、链接、资源、下载、`_niceeval/data/projections.json` 和预算。`pages` 是唯一页面集合,Host 不会补建详情 route。`--page` 只决定初始打开的已存在 route,不能缩小构建范围。全站 projections 文件的 bytes 属于 revision identity。
@@ -81,7 +99,7 @@ view 在启动 server 前枚举所有显式声明的普通 Page 与参数 Page
81
99
 
82
100
  ## 读懂不完整数据
83
101
 
84
- `MetricValue` 的 `samples` 是实际贡献数,`total` 是既定分母,`state` 和 `issues` 说明为什么数据不完整。`partial` 可以有数值;`empty`、`unsupported` 与 `failed` 不是零。Evidence refs 保留可复核的定位信息。
102
+ `MetricValue` 的 `samples` 是实际贡献数,`total` 是既定分母,`state` 和 `issues` 说明为什么数据不完整。自定义 Report 使用 `formatMetricValue()` 时仍可得到 `2 / 4 slot · partial` 这类紧凑格式;它表示四个已选位置中有两个提供该指标,不是 score,也不是“完成了一半”。默认 Overview 改用上面的独立覆盖区域。`partial` 可以有数值;`empty`、`unsupported` 与 `failed` 不是零。Evidence refs 保留可复核的定位信息。
85
103
 
86
104
  Analysis 数据问题继续作为页面内容显示。相反,选中 Page 的 callback、参数 key 或成员资格失败会让 `show` 返回单目标错误;任何全站 Page、路径、资源或预算失败都会阻止新的站点发布。
87
105
 
@@ -75,7 +75,7 @@ if (!res.requestId) {
75
75
 
76
76
  `progress` 不落盘。diagnostic 会写入 Attempt-owned 通道,并从已选 Run 的详情页面回顾。HTTP 连接失败或响应无法解析时直接抛错;runner 会记录错误发生在 `agent.run`,并在 `niceeval.verdict` 通道形成 `errored` Verdict。
77
77
 
78
- **这一步支持**:`t.reply`、`t.messageIncludes()`、Judge 的全部对话材料,以及 Experiment 侧的**模型对比**。`ctx.model` 来自 Experiment 的 `model`。运行器原样传递,Adapter 只负责转发。接入等级见 [Tier](/zh/explanation/tier)。
78
+ **这一步支持**:`t.reply` 的直接值检查(`t.check(t.reply, includes(...))` 或 `pattern(...)`)、Judge 的全部对话材料,以及 Experiment 侧的**模型对比**。`ctx.model` 来自 Experiment 的 `model`。运行器原样传递,Adapter 只负责转发。接入等级见 [Tier](/zh/explanation/tier)。
79
79
 
80
80
  它有两个明显的局限:每轮都是一场全新对话(第二次 `t.send` 接不上第一次),工具调用完全看不见。后面两步各解决一个。
81
81
 
@@ -236,10 +236,10 @@ type StreamEvent =
236
236
 
237
237
  | 你吐的事件 | 解锁的断言 |
238
238
  |---|---|
239
- | `message` | `t.reply`、`t.messageIncludes()`、judge 的对话材料 |
239
+ | `message` | `t.reply`、`t.check(turn.message, includes(...))` / `pattern(...)`、Judge 的对话材料 |
240
240
  | tool `operation.started` / `operation.finished`(靠 `operationId` 配对) | `turn.calledTool()` / `turn.toolOrder()` / `turn.maxToolCalls()` / `turn.noFailedActions()`… |
241
- | `input.requested`(配合 status `"waiting"`) | `t.parked()`、`t.requireInputRequest()`、`t.respond()`(第五步) |
242
- | `thinking` / `compaction` / `error` | 对应断言与 o11y 计数 |
241
+ | `input.requested`(配合 status `"waiting"`) | `t.check(turn.status, equals("waiting"))`、`t.requireInputRequest()`、`t.respond()`(第五步) |
242
+ | `thinking` / `compaction` / `error` | 报告与诊断;当前没有对应的公开 `eventMatch` selector |
243
243
 
244
244
  Chat Completions 响应**不保证包含完整过程记录**。应用可能在服务端完成工具循环,只返回最终答案。因此,`turnFromChatCompletion` 的返回不带完整性证明:`calledTool` 等正断言可用,`notCalledTool` 等负断言会提示证据不完整。Responses 协议要求 `output` 数组记录完整过程,`turnFromResponses` 的返回带完整性证明,负断言可信。两者的可信度差异来自接口契约。
245
245
 
@@ -249,7 +249,7 @@ Chat Completions 响应**不保证包含完整过程记录**。应用可能在
249
249
 
250
250
  应用中途停下来等人(工具审批、等补充信息)时,`send` 两侧各有义务:
251
251
 
252
- - **停轮**:返回 `status: "waiting"`,并且每个待回答的问题吐一条带稳定 `id` 的 `input.requested` 事件——`t.parked()`、`t.requireInputRequest()` 读它,回答靠这个 `id` 对位。
252
+ - **停轮**:返回 `status: "waiting"`,并且每个待回答的问题吐一条带稳定 `id` 的 `input.requested` 事件——`t.check(turn.status, equals("waiting"))` 与 `t.requireInputRequest()` 读取它,回答靠这个 `id` 对位。
253
253
  - **回答轮**:评估用例里的 `t.respond(...)` 到 Adapter 是**又一次普通的 `send`**(还是同一条会话线、同一份状态),人的裁决以结构化形式随 `input.responses` 到达,每条带 `requestId`、`optionId` 或 `text`(形态见[不同回答的入参](/zh/explanation/adapter#不同回答的入参))。Adapter 先把裁决交回应用,再接着取结果。被人拒绝的调用,tool `operation.finished` 的 `status` 置 `"rejected"` 而不是 `"failed"`——拒绝是人的决定、不是工具故障,`noFailedActions()` 不误伤。
254
254
 
255
255
  "停轮时读了一半的现场"(比如一条读到一半的 SSE 流)也存在 `ctx.session` 上。Adapter 先用 `createSessionSlot<Pending>()` 创建私有 slot,停轮时 `ctx.session.set(slot, pending)`,回答轮开头 `ctx.session.take(slot)` 取回。取到即清除,一次消费。
@@ -312,7 +312,8 @@ export default defineAgent({
312
312
 
313
313
  不需要 HITL 的接口,删掉停轮现场相关的三处(`Pending`、`hold`、开头的 `take` 分支)即可,其余不变。停轮 / 回答 / 续跑的完整心智模型见 [HITL](/zh/explanation/hitl)。
314
314
 
315
- **这一步支持**:`t.parked()`、`t.requireInputRequest()`、`t.respond()` / `t.respondAll()`,以及 `calledTool(toolMatch(..., { status: "rejected" }))` 的精确断言。
315
+ **这一步支持**:`t.check(turn.status, equals("waiting"))`、`t.requireInputRequest()`、`t.respond()` / `t.respondAll()`。
316
+ 被人拒绝的调用可用 `calledTool(toolMatch(..., { status: "rejected" }))` 精确断言。
316
317
 
317
318
  ## 第六步:接上 OTel trace
318
319
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "niceeval",
3
- "version": "0.13.0",
3
+ "version": "0.13.2-canary.35",
4
4
  "description": "Agent-native eval tool — eval agents, services, functions, and coding-agent fixtures",
5
5
  "type": "module",
6
6
  "license": "MIT",