dsh-llm-verifier 0.1.20 → 0.2.0
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.
- package/README.md +10 -8
- package/lib/client.js +39 -17
- package/lib/client.js.map +1 -1
- package/lib/index.js +147 -37
- package/lib/index.js.map +1 -1
- package/lib/types/auto.d.ts +5 -0
- package/lib/types/auto.d.ts.map +1 -1
- package/lib/types/auto.js.map +1 -1
- package/lib/types/client-i18n.d.ts +17 -1
- package/lib/types/client-i18n.d.ts.map +1 -1
- package/lib/types/client-i18n.js +27 -15
- package/lib/types/client-i18n.js.map +1 -1
- package/lib/types/client.d.ts +3 -2
- package/lib/types/client.d.ts.map +1 -1
- package/lib/types/client.js +4 -4
- package/lib/types/client.js.map +1 -1
- package/lib/types/config.d.ts +9 -0
- package/lib/types/config.d.ts.map +1 -1
- package/lib/types/config.js +4 -2
- package/lib/types/config.js.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +55 -5
- package/lib/types/index.js.map +1 -1
- package/lib/types/router.d.ts +10 -0
- package/lib/types/router.d.ts.map +1 -1
- package/lib/types/router.js +60 -22
- package/lib/types/router.js.map +1 -1
- package/package.json +1 -1
- package/src/auto.ts +5 -0
- package/src/client-i18n.ts +27 -15
- package/src/client.test.ts +17 -11
- package/src/client.tsx +5 -4
- package/src/config.test.ts +23 -0
- package/src/config.ts +13 -2
- package/src/index.ts +55 -6
- package/src/router.test.ts +79 -1
- package/src/router.ts +63 -22
package/README.md
CHANGED
|
@@ -206,7 +206,7 @@ T = 明确且无可争议的失败
|
|
|
206
206
|
- **每个裁判独立缓存与去重**:裁判身份(Provider / Model / 推理强度 / 输出上限)是评分缓存键的一部分,不同裁判既不会读到对方的缓存,也不会被合并成一次调用。
|
|
207
207
|
- **判决透明**:四个工具(`verifier_compare` / `verifier_select` / `verifier_track` / `verifier_current_session`)的返回都新增 `judges` 数组,逐裁判给出 Provider、Model、显示名、是否成功、实际调用次数,以及该裁判自己的分数 / 排名 / 检查点分数;`verifier_compare` 与 `verifier_current_session` 还返回 `agreement`(与最终胜负一致的裁判比例,单裁判恒为 1)。
|
|
208
208
|
- **降级而不是整体失败**:个别裁判偶发失败(网络、限流、解析不出判决)时会被排除在该次聚合之外,并在 `judges[].ok=false` 与 `judges[].error` 中如实报告;只有当**整组裁判**都给不出判决时,这次验收才失败。
|
|
209
|
-
- **预算按裁判数放大**:自动路由的模型调用预算按 `对局数 × 裁判数` 预留,多裁判场景请相应调大「任务/会话模型调用预算」(默认
|
|
209
|
+
- **预算按裁判数放大**:自动路由的模型调用预算按 `对局数 × 裁判数` 预留,多裁判场景请相应调大「任务/会话模型调用预算」(默认 96 / 240)。
|
|
210
210
|
- **分类只走主裁判**:混合语义路由的分类请求是轻量路由动作而非判决,只使用主裁判,不随裁判数放大。
|
|
211
211
|
- **统计归属**:统计与费用按「一次验收」记账,多裁判的 token 与费用合计计入该次调用,模型维度归属主裁判;单个裁判的实际调用次数见工具返回中的 `judges[].calls`。
|
|
212
212
|
|
|
@@ -239,13 +239,14 @@ flowchart LR
|
|
|
239
239
|
| **混合语义路由** | 结构化证据不足时,是否允许裁判模型保守分类 `compare/select/track/none`;不会生成新候选或编造检查点 |
|
|
240
240
|
| **语义路由置信度** | 语义识别达到该值才执行对应工具,默认 `0.9` |
|
|
241
241
|
| **最多候选数** | 自动 `select` 一次最多纳入的候选数,默认 `8` |
|
|
242
|
-
| **每任务/每会话最多路由** |
|
|
242
|
+
| **每任务/每会话最多路由** | 限制 `compare/select/track` 及语义分类的自动次数。它与最终验收**共享同一个尝试计数器**(实际上限 = 本项 + 对应的「每任务/每会话最多验收」),预算按真实对局数估算(8 候选约需 54 次调用);被拒绝时写入宿主日志并区分「预算不足 / 已有 verifier 在跑 / 同一证据已路由」,strict 下额外注入一次提示 |
|
|
243
243
|
| **同时验收子 Agent** | 默认关闭;开启后 `subagent` / fork 子会话也会执行自动路由与最终验收 |
|
|
244
244
|
| **进度完成阈值** | `track` 任一检查点低于该值时 steering 要求继续工作,默认 `0.8` |
|
|
245
|
-
| **单项/总证据字符上限** | 自动候选与检查点脱敏后的单项、整次路由输入硬上限,默认 `20000 / 60000
|
|
246
|
-
| **任务/会话模型调用预算** | 分类、compare/select/track 与最终验收共享的估算请求预算,默认 `
|
|
245
|
+
| **单项/总证据字符上限** | 自动候选与检查点脱敏后的单项、整次路由输入硬上限,默认 `20000 / 60000`;同时约束语义路由提示词的总长度(只保留预算内最新证据)。截断标记本身也计入上限,因此截断后的条目不会被判定为超限。候选与检查点都按**数量分摊**总字符预算(单项仍受 2 万字符上限),自动 `track` 还最多渲染**最近 6 个**检查点(更早的在首个检查点中注明已省略),因此 8 个长候选或几十个检查点都不会让整条决策被上限整条丢弃 |
|
|
246
|
+
| **任务/会话模型调用预算** | 分类、compare/select/track 与最终验收共享的估算请求预算,默认 `96 / 240`(按真实对局数估算:8 候选的完整锦标赛约 18 场对决 × 3 标准 = 54 次调用,再加最终验收 3 标准 × 2 轮 = 6 次;默认值因此给最终验收留出余量) |
|
|
247
247
|
| **通过阈值** | 自动会话验收要求证据分数达到阈值且胜过“未执行有效工作”基线 |
|
|
248
|
-
|
|
|
248
|
+
| **路由评估轮次** | 自动路由(compare/select/track)每个标准的重复轮次;默认 1,作为低成本初筛 |
|
|
249
|
+
| **最终验收轮次** | 最终会话验收每个标准的重复轮次,默认 `2`:奇数轮不交换、偶数轮交换 A/B 位置,因此默认配置下位置偏好被抵消。调低到 1 会省一次调用,但会失去这层保护 |
|
|
249
250
|
| **智能模式最少工具调用** | `smart` 策略需要的最少非 Verifier 工具调用数 |
|
|
250
251
|
| **最大证据字符** | 自动发送给裁判的最近会话轨迹字符上限 |
|
|
251
252
|
| **每任务/每会话最多验收** | 防止低分反馈形成无限修复循环并限制成本 |
|
|
@@ -255,7 +256,7 @@ flowchart LR
|
|
|
255
256
|
| **附加裁判 (Extra judges)** | 在主裁判之外追加最多 4 个裁判模型(各自可指定 Provider / Model / 推理强度 / 显示名),同一 Provider + Model 不允许重复;留空即为单裁判模式,行为与旧版本逐位一致 |
|
|
256
257
|
| **推理强度 (Reasoning Effort)** | 使用 Adapter 为该模型声明的思考强度,或保留模型默认值 |
|
|
257
258
|
| **最大输出 Token** | 单次裁判请求的输出 Token 上限 |
|
|
258
|
-
| **判官温度 (Temperature)** | 判官采样的温度,范围 0–2,默认 **0.2**(旧版固定为 1
|
|
259
|
+
| **判官温度 (Temperature)** | 判官采样的温度,范围 0–2,默认 **0.2**(旧版固定为 1)。自动路由默认只跑 1 轮、最终验收默认 2 轮(偶数轮交换 A/B 位置),温度越低判决越可复现;部分推理模型只接受默认温度,遇到适配器报错时改回 1 |
|
|
259
260
|
| **最大并发数** | 所有 Verifier 调用共享的全局并发请求限制 |
|
|
260
261
|
| **最大重试次数** | 遇到偶发网络或服务短暂故障时的额外重试次数 |
|
|
261
262
|
| **请求超时 (ms)** | 单次模型调用的毫秒级超时时间 |
|
|
@@ -285,7 +286,7 @@ flowchart LR
|
|
|
285
286
|
|
|
286
287
|
插件确定性识别以下对象,不额外调用分类模型:
|
|
287
288
|
|
|
288
|
-
-
|
|
289
|
+
- 两个同步的 `subagent` / `subagent_fork` 结果**不会**被直接当作互相竞争的候选(它们通常只是不同子任务):它们只作为语义路由的线索,是否 `compare` / `select` 交给分类器判断;后台启动返回的 Subagent ID 更是从不作为候选;
|
|
289
290
|
- `workflow` 只有返回以下版本化协议才会被视为可信候选;普通 JSON、裸数组及 Subagent 文本不会直接触发结构化比较:
|
|
290
291
|
|
|
291
292
|
```json
|
|
@@ -301,6 +302,7 @@ flowchart LR
|
|
|
301
302
|
```
|
|
302
303
|
|
|
303
304
|
- 同一任务内至少两个内容或状态发生真实变化的 `todo/write` 快照形成进度检查点;完全相同的重复快照会被折叠;
|
|
305
|
+
- 检查点数量本身没有硬上限,但一次路由最多渲染**最近 6 个**检查点(`MAX_ROUTED_CHECKPOINTS`),被略过的数量会写在首个检查点里;「路由证据总字符上限」按检查点数分摊,所以长任务不会因为检查点太多而被整条丢弃;
|
|
304
306
|
- 每个进度检查点都会附带**该时刻之前最近一次成功工具输出**(`tool/result` / `tool/ptc-dispatch` 原文,脱敏并限长)。只有 todo 文本的检查点无法证明"已完成",裁判提示词明确拒绝给无实测输出的状态打高分,因此证据随检查点一同送入——否则一个真正完成的任务也会稳定被打回继续工作。
|
|
305
307
|
|
|
306
308
|
显式调用过对应的 `verifier_compare`、`verifier_select` 或 `verifier_track` 后,自动 Router 不会再对同类结构化对象重复执行。每个输入还会计算稳定指纹,同一证据不会重复消费预算。
|
|
@@ -317,7 +319,7 @@ flowchart LR
|
|
|
317
319
|
|
|
318
320
|
显式调用 `verifier_current_session` **不会**无条件关闭自动门控:只有该次复核真的达到通过阈值(`winner === 'A'` 且分数不低于阈值),并且之后没有再产生实质工作(写文件、执行命令等)时,才会被当作"已完成验收"而放行。判决失败、低于阈值、结果无法解析、或通过之后又继续改动的复核,都不会解除门控——下一停止边界仍会照常验收。此外,Agent Teams 的队友会话以 `team-message` 作为任务边界,因此队友会话同样可以触发(并遵守)任务级门控。
|
|
319
321
|
|
|
320
|
-
所有自动阶段共享任务/会话级模型调用预算;分类请求以 `verifier_route_classify`
|
|
322
|
+
所有自动阶段共享任务/会话级模型调用预算;分类请求以 `verifier_route_classify` 单独记录到统计。若某条决策因为超过证据上限、或语义路由引用了不存在/已失效的证据而没能执行,插件会写入宿主日志,并在统计里记下一条带 `dropped-over-budget` / `invalid-references` 判决的记录(没有模型调用,因此 `calls` 为 0),看板可以直接回答“这次为什么没有路由”。候选、步骤和标签在发送前统一执行默认脱敏、单项字符上限和总字符上限,图片证据按与显式工具相同的路径传入。
|
|
321
323
|
|
|
322
324
|
## 缓存、重试与遥测统计
|
|
323
325
|
|
package/lib/client.js
CHANGED
|
@@ -32,9 +32,9 @@ window.__ModuleLoader__.load({
|
|
|
32
32
|
"field.autoRouteMaxCandidates.title": "最多候选数",
|
|
33
33
|
"field.autoRouteMaxCandidates.help": "一次自动 select 最多纳入的真实候选数量,至少 3。",
|
|
34
34
|
"field.autoRouteMaxPerTask.title": "每任务最多路由",
|
|
35
|
-
"field.autoRouteMaxPerTask.help": "compare/select/track
|
|
35
|
+
"field.autoRouteMaxPerTask.help": "自动路由(compare/select/track 与语义分类)的任务尝试上限;与「每任务最多验收」共享同一个计数器,实际可用次数是两者之和。",
|
|
36
36
|
"field.autoRouteMaxPerSession.title": "每会话最多路由",
|
|
37
|
-
"field.autoRouteMaxPerSession.help": "
|
|
37
|
+
"field.autoRouteMaxPerSession.help": "同一会话中自动路由的尝试上限;与「每会话最多验收」共享计数器,实际可用次数同样是两者之和。",
|
|
38
38
|
"field.autoTrackCompletionThreshold.title": "进度完成阈值",
|
|
39
39
|
"field.autoTrackCompletionThreshold.help": "track 任一检查点低于该值时 steering 要求 Agent 继续执行;范围 0–1。",
|
|
40
40
|
"field.autoRouteMaxItemChars.title": "单项证据字符上限",
|
|
@@ -47,16 +47,18 @@ window.__ModuleLoader__.load({
|
|
|
47
47
|
"field.autoMaxModelCallsPerSession.help": "整个会话所有自动验证阶段共享的估算模型调用上限。",
|
|
48
48
|
"field.autoVerifyThreshold.title": "通过阈值",
|
|
49
49
|
"field.autoVerifyThreshold.help": "会话证据分数达到该值且胜过空工作基线才允许结束;范围 0–1。",
|
|
50
|
-
"field.autoVerifyRepeats.title": "
|
|
51
|
-
"field.autoVerifyRepeats.help": "
|
|
50
|
+
"field.autoVerifyRepeats.title": "路由评估轮次",
|
|
51
|
+
"field.autoVerifyRepeats.help": "自动路由(compare / select / track)每项标准的评分重复次数;1 为低成本初筛。",
|
|
52
|
+
"field.autoVerifyFinalRepeats.title": "最终验收轮次",
|
|
53
|
+
"field.autoVerifyFinalRepeats.help": "最终会话验收每项标准的评分重复次数;偶数轮会交换 A/B 位置以抵消位置偏好,默认 2。",
|
|
52
54
|
"field.autoVerifyMinToolCalls.title": "智能模式最少工具调用",
|
|
53
|
-
"field.autoVerifyMinToolCalls.help": "
|
|
55
|
+
"field.autoVerifyMinToolCalls.help": "统计除 Verifier 之外的全部工具调用(含 read/grep 等只读工具);此外还必须存在写入/执行类操作与至少一条成功结果。",
|
|
54
56
|
"field.autoVerifyMaxChars.title": "最大证据字符",
|
|
55
57
|
"field.autoVerifyMaxChars.help": "发送给裁判前保留的最近会话证据字符数。",
|
|
56
58
|
"field.autoVerifyMaxPerTask.title": "每任务最多验收",
|
|
57
|
-
"field.autoVerifyMaxPerTask.help": "
|
|
59
|
+
"field.autoVerifyMaxPerTask.help": "最终验收的任务尝试上限;与「每任务最多路由」共享同一个计数器,实际可用次数是两者之和,用于防止低分反馈形成无限修复循环。",
|
|
58
60
|
"field.autoVerifyMaxPerSession.title": "每会话最多验收",
|
|
59
|
-
"field.autoVerifyMaxPerSession.help": "
|
|
61
|
+
"field.autoVerifyMaxPerSession.help": "同一会话中最终验收的尝试上限;与「每会话最多路由」共享计数器,实际可用次数同样是两者之和。",
|
|
60
62
|
"field.autoVerify.warnNotice": "自动路由按 select → compare → track → current_session 的阶段顺序处理;脱敏后的任务、Assistant 轨迹与真实工具输出会发送给所选裁判模型。候选选择或进度不足会 steering 继续工作,最终验收未通过会要求修复并重新验证。",
|
|
61
63
|
"field.autoMaxModelCallsPerTask.warnBudget": "当前单任务预算为 {current} 次模型调用,低于 {judges} 位裁判完整锦标赛所需的最差情况({required} 次)。建议调大该预算以避免自动路由过早耗尽。",
|
|
62
64
|
"field.autoMaxModelCallsPerSession.warnBudget": "当前会话预算为 {current} 次模型调用,低于 {judges} 位裁判推荐的最差情况({required} 次)。建议调大该预算以避免会话验证过早耗尽。",
|
|
@@ -137,6 +139,8 @@ window.__ModuleLoader__.load({
|
|
|
137
139
|
"stats.outcome.below-threshold": "未达标",
|
|
138
140
|
"stats.outcome.tie": "平局",
|
|
139
141
|
"stats.outcome.error": "异常",
|
|
142
|
+
"stats.outcome.dropped-over-budget": "超预算丢弃",
|
|
143
|
+
"stats.outcome.invalid-references": "引用无效",
|
|
140
144
|
"stats.winner.tie": "平局",
|
|
141
145
|
"stats.verdict.winner": "胜方 {winner}",
|
|
142
146
|
"stats.verdict.scoreThreshold": "得分 {score}(阈值 {threshold})",
|
|
@@ -208,9 +212,9 @@ window.__ModuleLoader__.load({
|
|
|
208
212
|
"field.autoRouteMaxCandidates.title": "Max Candidates",
|
|
209
213
|
"field.autoRouteMaxCandidates.help": "Maximum number of real candidates included in an automatic select, at least 3.",
|
|
210
214
|
"field.autoRouteMaxPerTask.title": "Max Routes per Task",
|
|
211
|
-
"field.autoRouteMaxPerTask.help": "Task
|
|
215
|
+
"field.autoRouteMaxPerTask.help": "Task attempt cap for automatic routing (compare/select/track and semantic classification); shares one counter with \"Max Verifications per Task\", so the effective limit is the sum of both.",
|
|
212
216
|
"field.autoRouteMaxPerSession.title": "Max Routes per Session",
|
|
213
|
-
"field.autoRouteMaxPerSession.help": "
|
|
217
|
+
"field.autoRouteMaxPerSession.help": "Session attempt cap for automatic routing; shares its counter with \"Max Verifications per Session\" (effective limit is the sum of both).",
|
|
214
218
|
"field.autoTrackCompletionThreshold.title": "Progress Completion Threshold",
|
|
215
219
|
"field.autoTrackCompletionThreshold.help": "When any track checkpoint falls below this score, steering instructs the Agent to continue; range 0–1.",
|
|
216
220
|
"field.autoRouteMaxItemChars.title": "Max Chars per Route Item",
|
|
@@ -221,18 +225,20 @@ window.__ModuleLoader__.load({
|
|
|
221
225
|
"field.autoMaxModelCallsPerTask.help": "Estimated model call cap shared across semantic classification, intermediate routing, and final acceptance per task.",
|
|
222
226
|
"field.autoMaxModelCallsPerSession.title": "Model Call Budget per Session",
|
|
223
227
|
"field.autoMaxModelCallsPerSession.help": "Estimated model call cap shared across all automatic verification phases throughout the entire session.",
|
|
228
|
+
"field.autoVerifyRepeats.title": "Routing Repeats",
|
|
229
|
+
"field.autoVerifyRepeats.help": "Scoring repeats per criterion for automatic routing (compare / select / track); 1 is low-cost preliminary screening.",
|
|
230
|
+
"field.autoVerifyFinalRepeats.title": "Final Acceptance Repeats",
|
|
231
|
+
"field.autoVerifyFinalRepeats.help": "Scoring repeats per criterion for the final session acceptance; even rounds swap A/B positions to cancel position bias. Defaults to 2.",
|
|
224
232
|
"field.autoVerifyThreshold.title": "Pass Threshold",
|
|
225
233
|
"field.autoVerifyThreshold.help": "Evidence score must meet this threshold and beat the empty-work baseline to allow completion; range 0–1.",
|
|
226
|
-
"field.autoVerifyRepeats.title": "Auto Evaluation Repeats",
|
|
227
|
-
"field.autoVerifyRepeats.help": "Number of scoring repeats per criterion for auto evaluation; 1 is low-cost preliminary screening.",
|
|
228
234
|
"field.autoVerifyMinToolCalls.title": "Min Tool Calls (Smart Mode)",
|
|
229
|
-
"field.autoVerifyMinToolCalls.help": "
|
|
235
|
+
"field.autoVerifyMinToolCalls.help": "Counts every non-Verifier tool call, read-only tools included; consequential write/exec work and at least one successful result are still required.",
|
|
230
236
|
"field.autoVerifyMaxChars.title": "Max Evidence Characters",
|
|
231
237
|
"field.autoVerifyMaxChars.help": "Maximum recent session evidence characters retained before sending to the judge.",
|
|
232
238
|
"field.autoVerifyMaxPerTask.title": "Max Verifications per Task",
|
|
233
|
-
"field.autoVerifyMaxPerTask.help": "
|
|
239
|
+
"field.autoVerifyMaxPerTask.help": "Final-acceptance attempt cap per task; shares one counter with \"Max Routes per Task\", so the effective limit is the sum of both. Prevents endless low-score repair loops.",
|
|
234
240
|
"field.autoVerifyMaxPerSession.title": "Max Verifications per Session",
|
|
235
|
-
"field.autoVerifyMaxPerSession.help": "
|
|
241
|
+
"field.autoVerifyMaxPerSession.help": "Final-acceptance attempt cap within one session; shares its counter with \"Max Routes per Session\" (effective limit is the sum of both).",
|
|
236
242
|
"field.autoVerify.warnNotice": "Automatic routing follows the phase order: select → compare → track → current_session. Sanitized tasks, Assistant trajectories, and real tool outputs are sent to the judge model. Candidate selection or insufficient progress steers the Agent to keep working; failed final acceptance requires remediation and re-verification.",
|
|
237
243
|
"field.autoMaxModelCallsPerTask.warnBudget": "Current task budget ({current} calls) is below the worst-case requirement ({required} calls) for {judges} judge(s) in a full tournament. Consider increasing it to avoid premature budget exhaustion.",
|
|
238
244
|
"field.autoMaxModelCallsPerSession.warnBudget": "Current session budget ({current} calls) is below the worst-case requirement ({required} calls) for {judges} judge(s). Consider increasing it to avoid premature budget exhaustion.",
|
|
@@ -313,6 +319,8 @@ window.__ModuleLoader__.load({
|
|
|
313
319
|
"stats.outcome.below-threshold": "Below Threshold",
|
|
314
320
|
"stats.outcome.tie": "Tie",
|
|
315
321
|
"stats.outcome.error": "Error",
|
|
322
|
+
"stats.outcome.dropped-over-budget": "Dropped (over budget)",
|
|
323
|
+
"stats.outcome.invalid-references": "Invalid references",
|
|
316
324
|
"stats.winner.tie": "Tie",
|
|
317
325
|
"stats.verdict.winner": "Winner {winner}",
|
|
318
326
|
"stats.verdict.scoreThreshold": "Score {score} (threshold {threshold})",
|
|
@@ -439,7 +447,11 @@ window.__ModuleLoader__.load({
|
|
|
439
447
|
if (typeof draft === "string" && draft.trim()) return draft.trim();
|
|
440
448
|
if (typeof previous === "string" && previous.trim()) return previous.trim();
|
|
441
449
|
}
|
|
442
|
-
|
|
450
|
+
/** An eight-candidate select: ring + pivot rounds (18 pairs) x three criteria, one repeat. */
|
|
451
|
+
const WORST_CASE_ROUTE_CALLS_PER_JUDGE = 54;
|
|
452
|
+
/** Final acceptance: three criteria x the default two repeats (one per A/B position). */
|
|
453
|
+
const WORST_CASE_FINAL_CALLS_PER_JUDGE = 6;
|
|
454
|
+
const WORST_CASE_TASK_PER_JUDGE = 60;
|
|
443
455
|
const WORST_CASE_SESSION_PER_JUDGE = 160;
|
|
444
456
|
function computeJudgeCount(extraJudgesCount) {
|
|
445
457
|
return 1 + Math.max(0, extraJudgesCount);
|
|
@@ -447,7 +459,7 @@ window.__ModuleLoader__.load({
|
|
|
447
459
|
function computeWorstCaseBudget(judgeCount) {
|
|
448
460
|
const count = Math.max(1, judgeCount);
|
|
449
461
|
return {
|
|
450
|
-
worstCaseTask: count *
|
|
462
|
+
worstCaseTask: count * 60,
|
|
451
463
|
worstCaseSession: count * 160
|
|
452
464
|
};
|
|
453
465
|
}
|
|
@@ -712,6 +724,7 @@ window.__ModuleLoader__.load({
|
|
|
712
724
|
autoVerifyMode: mode,
|
|
713
725
|
autoVerifyThreshold: Number(v.autoVerifyThreshold ?? .65),
|
|
714
726
|
autoVerifyRepeats: Number(v.autoVerifyRepeats ?? 1),
|
|
727
|
+
autoVerifyFinalRepeats: Number(v.autoVerifyFinalRepeats ?? 2),
|
|
715
728
|
autoVerifyMinToolCalls: Number(v.autoVerifyMinToolCalls ?? 3),
|
|
716
729
|
autoVerifyMaxChars: Number(v.autoVerifyMaxChars ?? 8e4),
|
|
717
730
|
autoVerifyMaxPerTask: Number(v.autoVerifyMaxPerTask ?? 2),
|
|
@@ -724,7 +737,7 @@ window.__ModuleLoader__.load({
|
|
|
724
737
|
autoTrackCompletionThreshold: Number(v.autoTrackCompletionThreshold ?? .8),
|
|
725
738
|
autoRouteMaxItemChars: Number(v.autoRouteMaxItemChars ?? 2e4),
|
|
726
739
|
autoRouteMaxInputChars: Number(v.autoRouteMaxInputChars ?? 6e4),
|
|
727
|
-
autoMaxModelCallsPerTask: Number(v.autoMaxModelCallsPerTask ??
|
|
740
|
+
autoMaxModelCallsPerTask: Number(v.autoMaxModelCallsPerTask ?? 96),
|
|
728
741
|
autoMaxModelCallsPerSession: Number(v.autoMaxModelCallsPerSession ?? 240),
|
|
729
742
|
autoVerifyTeamTasks: v.autoVerifyTeamTasks !== false,
|
|
730
743
|
autoVerifyPlanMode: v.autoVerifyPlanMode !== false,
|
|
@@ -1200,6 +1213,13 @@ window.__ModuleLoader__.load({
|
|
|
1200
1213
|
help: t["field.autoVerifyRepeats.help"]
|
|
1201
1214
|
}), numeric("autoVerifyRepeats", 1)]
|
|
1202
1215
|
}),
|
|
1216
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1217
|
+
style: row,
|
|
1218
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Label, {
|
|
1219
|
+
title: t["field.autoVerifyFinalRepeats.title"],
|
|
1220
|
+
help: t["field.autoVerifyFinalRepeats.help"]
|
|
1221
|
+
}), numeric("autoVerifyFinalRepeats", 1)]
|
|
1222
|
+
}),
|
|
1203
1223
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1204
1224
|
style: row,
|
|
1205
1225
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Label, {
|
|
@@ -2593,6 +2613,8 @@ window.__ModuleLoader__.load({
|
|
|
2593
2613
|
exports.StatisticsPage = StatisticsPage;
|
|
2594
2614
|
exports.VerifierSettings = VerifierSettings;
|
|
2595
2615
|
exports.VerifierSidebarIcon = VerifierSidebarIcon;
|
|
2616
|
+
exports.WORST_CASE_FINAL_CALLS_PER_JUDGE = WORST_CASE_FINAL_CALLS_PER_JUDGE;
|
|
2617
|
+
exports.WORST_CASE_ROUTE_CALLS_PER_JUDGE = WORST_CASE_ROUTE_CALLS_PER_JUDGE;
|
|
2596
2618
|
exports.WORST_CASE_SESSION_PER_JUDGE = WORST_CASE_SESSION_PER_JUDGE;
|
|
2597
2619
|
exports.WORST_CASE_TASK_PER_JUDGE = WORST_CASE_TASK_PER_JUDGE;
|
|
2598
2620
|
exports.apply = apply;
|