dsh-llm-verifier 0.6.4 → 0.6.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 (53) hide show
  1. package/README.md +11 -9
  2. package/lib/{auto-caXDU2pw.js → auto-DzlnuWAr.js} +9 -5
  3. package/lib/{auto-caXDU2pw.js.map → auto-DzlnuWAr.js.map} +1 -1
  4. package/lib/client.js +1656 -154
  5. package/lib/client.js.map +1 -1
  6. package/lib/index.js +131 -30
  7. package/lib/index.js.map +1 -1
  8. package/lib/replay.js +1 -1
  9. package/lib/types/client-fields.d.ts +5 -3
  10. package/lib/types/client-fields.d.ts.map +1 -1
  11. package/lib/types/client-fields.js +23 -3
  12. package/lib/types/client-fields.js.map +1 -1
  13. package/lib/types/client-i18n.d.ts +81 -0
  14. package/lib/types/client-i18n.d.ts.map +1 -1
  15. package/lib/types/client-i18n.js +160 -104
  16. package/lib/types/client-i18n.js.map +1 -1
  17. package/lib/types/client-process-cycles.d.ts +90 -0
  18. package/lib/types/client-process-cycles.d.ts.map +1 -0
  19. package/lib/types/client-process-cycles.js +134 -0
  20. package/lib/types/client-process-cycles.js.map +1 -0
  21. package/lib/types/client.d.ts.map +1 -1
  22. package/lib/types/client.js +30 -9
  23. package/lib/types/client.js.map +1 -1
  24. package/lib/types/config.d.ts +57 -10
  25. package/lib/types/config.d.ts.map +1 -1
  26. package/lib/types/config.js +71 -8
  27. package/lib/types/config.js.map +1 -1
  28. package/lib/types/index.d.ts.map +1 -1
  29. package/lib/types/index.js +47 -14
  30. package/lib/types/index.js.map +1 -1
  31. package/lib/types/process-selection.d.ts +43 -10
  32. package/lib/types/process-selection.d.ts.map +1 -1
  33. package/lib/types/process-selection.js +70 -13
  34. package/lib/types/process-selection.js.map +1 -1
  35. package/lib/types/router.d.ts +5 -3
  36. package/lib/types/router.d.ts.map +1 -1
  37. package/lib/types/router.js +6 -4
  38. package/lib/types/router.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/client-fields.test.ts +78 -0
  41. package/src/client-fields.ts +27 -6
  42. package/src/client-i18n.ts +162 -104
  43. package/src/client-process-cycles.test.ts +177 -0
  44. package/src/client-process-cycles.ts +181 -0
  45. package/src/client.test.ts +83 -0
  46. package/src/client.tsx +68 -11
  47. package/src/config.test.ts +77 -8
  48. package/src/config.ts +105 -18
  49. package/src/index.test.ts +96 -0
  50. package/src/index.ts +47 -13
  51. package/src/process-selection.test.ts +86 -5
  52. package/src/process-selection.ts +81 -17
  53. package/src/router.ts +7 -4
package/README.md CHANGED
@@ -108,6 +108,7 @@ pnpm run typecheck:local # 依据 tsconfig.local.json,把 @deepseek-ai/dsh-*
108
108
  本插件的核心评估理论、A–T 评分标尺、进度判定算法以及概率基准锦标赛(Probabilistic Pivot Tournament)均源自开源项目:
109
109
 
110
110
  - **上游项目**:[llm-as-a-verifier/llm-as-a-verifier](https://github.com/llm-as-a-verifier/llm-as-a-verifier)
111
+ - **上游 Claude Code 插件**:[TurboAgent](https://github.com/llm-as-a-verifier/TurboAgent)——API 代理形态,对每一次 LLM 请求无差别做 N 并发采样 + PPT 锦标赛选优。本插件的 `every-step`(每步选优)档与它对齐(在线拦截、`llm/stream` 缓冲回放、多模型备选池),但保留预算门控与 fail-closed 语义;两者运行方式的逐项对比与取舍见 [.agents/notes/implemented/feature/2026-09-16-every-step-process-selection.md](.agents/notes/implemented/feature/2026-09-16-every-step-process-selection.md)
111
112
 
112
113
  本插件将上游算法的评分、锦标赛与运行策略移植为 TypeScript 实现,并深度集成了 DSH 的模型路由、设置面板、附件管理、会话日志与工具生态。上游实现是本插件的算法基准;本仓库内置离线黄金数据与 Python / TypeScript 一致性测试(Parity Tests)。两者共享算法基础,但本插件在此之上做了一组**明确列出的本地变体**——它们既不是"未修正的上游缺陷",也不是可以笼统忽略的实现细节;改动其中任何一项,都要同步本节、`AGENTS.md` 与 `parity.test.ts`。
113
114
 
@@ -260,11 +261,12 @@ flowchart LR
260
261
  | **混合语义路由** | 结构化证据不足时,是否允许裁判模型保守分类 `compare/select/track/none`;不会生成新候选或编造检查点 |
261
262
  | **语义路由置信度** | 语义识别达到该值才执行对应工具,默认 `0.9` |
262
263
  | **最多候选数** | 自动 `select` 一次最多纳入的候选数,默认 `8` |
263
- | **每任务/每会话最多路由** | 限制自动路由**周期**的次数:`compare/select/track`、语义分类、团队任务闸、计划预审与 P06 的过程选优周期(过程周期同样消耗本项额度,因此它受既有路由额度约束,另有自己的每任务 1 次上限)。**一次周期只消耗一次**——语义分类成立时会在同一个预约上直接提升为它解析出的 `compare/select/track`(分类+执行=1 次),因此默认 2 次足以完成「计划预审 → 分类+compare」;解析为 `none`、低置信、非法引用,或分类成功但执行预算不足时同样消费该周期(后者记录为 `classification-only-budget`,不会伪装成"未路由"或"已评审")。它与最终验收**各自独立计数**(路由用本项,最终验收用「每任务/每会话最多验收」,互不占用),因此被路由要求过的最终验收一定有额度可用;旧版共享一个计数器时,路由可以把最终验收的额度花光,导致 turn 在从未验收的情况下静默关闭。预算按真实对局数估算(8 候选约需 108 次调用);被拒绝时写入宿主日志并区分「预算不足 / 已有 verifier 在跑 / 同一证据已路由」,strict 下额外注入一次提示。每个周期还会在统计里留下一条 `route` 观测:周期 id、触发点、去向、预约调用数、证据保留/省略数与取消标记——它是诊断口径,**不是**模型调用数。分类去重按**渲染后的证据(提示词)**而非最后事件序号,追加纯叙述不会再次付费分类;周期 id 取 epoch+实例+序号,跨插件重载唯一,重载前后两个不同周期不会在看板与离线汇总里合并;没有预约的诊断行(预算丢弃、交付阶段跳过、证据读取失败 evidence-unreadable)共用同一套 epoch 命名空间 |
264
+ | **每任务/每会话最多路由** | 限制自动路由**周期**的次数:`compare/select/track`、语义分类、团队任务闸、计划预审与 P06 的过程选优周期(过程周期同样消耗本项额度,因此它受既有路由额度约束;另有独立的过程周期每任务上限——恢复触发档 1 次,每步选优档 `maxProcessCyclesPerTask` 次)。**一次周期只消耗一次**——语义分类成立时会在同一个预约上直接提升为它解析出的 `compare/select/track`(分类+执行=1 次),因此默认 2 次足以完成「计划预审 → 分类+compare」;解析为 `none`、低置信、非法引用,或分类成功但执行预算不足时同样消费该周期(后者记录为 `classification-only-budget`,不会伪装成"未路由"或"已评审")。它与最终验收**各自独立计数**(路由用本项,最终验收用「每任务/每会话最多验收」,互不占用),因此被路由要求过的最终验收一定有额度可用;旧版共享一个计数器时,路由可以把最终验收的额度花光,导致 turn 在从未验收的情况下静默关闭。预算按真实对局数估算(8 候选约需 108 次调用);被拒绝时写入宿主日志并区分「预算不足 / 已有 verifier 在跑 / 同一证据已路由」,strict 下额外注入一次提示。每个周期还会在统计里留下一条 `route` 观测:周期 id、触发点、去向、预约调用数、证据保留/省略数与取消标记——它是诊断口径,**不是**模型调用数。分类去重按**渲染后的证据(提示词)**而非最后事件序号,追加纯叙述不会再次付费分类;周期 id 取 epoch+实例+序号,跨插件重载唯一,重载前后两个不同周期不会在看板与离线汇总里合并;没有预约的诊断行(预算丢弃、交付阶段跳过、证据读取失败 evidence-unreadable)共用同一套 epoch 命名空间 |
264
265
  | **同时验收子 Agent** | 默认关闭;开启后 `subagent` / fork 子会话也会执行自动路由与最终验收 |
265
- | **过程选优(受控)** | 默认**关闭**。开启后**仅 smart 模式**生效,且仅当同一任务最近两次已完成的验证运行**都失败**(「失败」从运行自己的判决读:`[exit code: N≠0]`、`N failed`、`error TS…`、`test result: FAILED`、`FAIL` 都算,工具级报错也算;`0 failed` 不算失败)时,为**下一次主模型请求**额外生成备选回复(默认 N=2:原回复=候选 0,新增一份=候选 1;`autoProcessCandidates` 可提到 3 或 4,那时按锦标赛判定;采样温度不低于生成档位,避免低温会话买到原回复的副本),按 **process 判据**(失败靶向 / 与已失败尝试不同 / 可验证的一步)比较后**只回放胜者**。每任务最多 1 个周期、**没有**独立的每会话过程上限——该周期与其它路由一样消耗「每任务/每会话最多路由」额度(因此同一会话的第二个任务仍可购买自己的周期),并受任务/会话模型调用预算与最终验收保留额度共同限制;生成与比较共用一个 `timeoutMs` 阶段截止时间。裁判视图里的任务、约束、最近失败证据与两份候选(含工具名与参数)**先脱敏再限长**,并按实际渲染文本计量总量,工具动作无法完整容纳时回退原回复。选优**不是**验收:胜者交给宿主后,最终验收照常覆盖随后产生的实际工作。关闭时完全不进入该路径(不生成候选、不调用裁判、不缓冲响应);manual/strict 不进入该路径 |
266
- | **备选带上失败证据** | 默认**开启**,仅在过程选优启用时生效。把触发本周期的那两次失败验证运行(先 `sanitizeVerifierText` 脱敏,再按单项/总量双层限长,总量 4000 字符)作为一条插件 user 消息附在备选请求之后,让额外生成的候选是针对真实失败的一次不同尝试,而不是同一提示词的再抽样;关闭即对照组(两份候选掌握的信息完全相同,周期照买)。裁判**不被告知**哪份候选带了证据,避免按来源而不是按内容打分;统计行的 `route.alternativeAugmented` 记录该差异,供真实任务对照读取。 |
267
- | **备选用另一个模型** | 默认留空:备选由当前会话模型再采样一份。填入 `provider/model`(例如 `deepseek-official/deepseek-v4-flash`)则改用该模型生成备选,候选之间因此是真正的不同假设;跨 provider 时**不继承**原请求的推理强度(适配器可能不认识该 id),`maxTokens` 与生成温度下限照旧,实际使用的路由记进 `route.alternativeModel`。代价是这次比较同时也在比「哪个模型更好」,与任务本身的质量不可分——所以它是实验臂,不是推荐配置。 |
266
+ | **过程选优** | 三档(旧布尔值兼容:`true`→`recovery`,`false`/缺省→`off`):`off`(默认)完全不进入该路径(不生成候选、不调用裁判、不缓冲响应);`recovery`(恢复触发)仅当同一任务最近两次已完成的验证运行**都失败**(「失败」从运行自己的判决读:`[exit code: N≠0]`、`N failed`、`error TS…`、`test result: FAILED`、`FAIL` 都算,工具级报错也算;`0 failed` 不算失败)时,为**下一次主模型请求**额外生成备选回复,每任务最多 1 个周期;`every-step`(每步选优)为**每个主循环请求**登记选优意图,无需失败信号,每任务最多 `maxProcessCyclesPerTask` 个周期。三档均**仅 smart 模式**生效(manual/strict 不进入该路径),触发后机制相同:额外生成备选(默认 N=2:原回复=候选 0,新增一份=候选 1;`autoProcessCandidates` 可提到 3 或 4,那时按锦标赛判定;采样温度不低于生成档位,避免低温会话买到原回复的副本),按 **process 判据**(失败靶向 / 与已失败尝试不同 / 可验证的一步)比较后**只回放胜者**。过程周期有自己的每任务上限(独立于路由与最终验收的第三本账),同时也消耗「每任务/每会话最多路由」额度,并受任务/会话模型调用预算与最终验收保留额度共同限制;生成与比较共用一个 `timeoutMs` 阶段截止时间。裁判视图里的任务、约束、最近失败证据与两份候选(含工具名与参数)**先脱敏再限长**,并按实际渲染文本计量总量,工具动作无法完整容纳时回退原回复。选优**不是**验收:胜者交给宿主后,最终验收照常覆盖随后产生的实际工作 |
267
+ | **备选带上失败证据** | 默认**开启**,仅在过程选优非 `off` 时生效。`recovery` 档把触发本周期的那两次失败验证运行(先 `sanitizeVerifierText` 脱敏,再按单项/总量双层限长,总量 4000 字符)作为一条插件 user 消息附在备选请求之后,让额外生成的候选是针对真实失败的一次不同尝试,而不是同一提示词的再抽样;`every-step` 档只在任务恰好出现两连败信号时附带,无信号则不带;关闭即对照组(两份候选掌握的信息完全相同,周期照买)。裁判**不被告知**哪份候选带了证据,避免按来源而不是按内容打分;统计行的 `route.alternativeAugmented` 记录该差异,供真实任务对照读取。 |
268
+ | **备选用另一个模型** | 默认留空:备选由当前会话模型再采样。可填**逗号分隔**的 `provider/model` 列表(例如 `deepseek-official/deepseek-v4-flash, openai/gpt-5`):第 i 份备选使用第 i 项,列表短于备选数时循环取用,候选之间因此是真正的不同假设;跨 provider 时**不继承**原请求的推理强度(适配器可能不认识该 id),`maxTokens` 与生成温度下限照旧,归一化后的整个列表记进 `route.alternativeModel`。代价是比较同时也在比「哪个模型更好」,与任务本身的质量不可分——所以它是实验臂,不是推荐配置。 |
269
+ | **每任务选优周期上限** | 仅 `every-step` 档生效:单个任务最多购买的过程选优周期数(1–32,默认 4)。它是独立于路由额度与最终验收额度的第三本账;但每个过程周期仍消耗一次「每任务/每会话最多路由」额度(会话默认上限 8),因此每步选优的实际步数上限取两者较小者。周期计数同时保存在路由内存计数与话题侧车 `verifier/process-selection-v1.json`(取两者较大值),插件重载后不失忆 |
268
270
  | **过程选优候选数** | 默认 **2**(原回复 + 1 份备选,判一对)。设为 3 或 4 时按 `[原回复, 备选 1, …]` 跑锦标赛,判官调用随之上升(N=3 约 5 对,约为单对的 5 倍),预算从同一份任务/会话模型调用额度里出——预约用引擎自己的 `estimateRoutedCalls()` 估算对局数,不会和实际跑的对数脱节。完全相同的候选不会送给判官:引擎先去重,全部相同则 0 调用并回放原回复。**不采纳**上游「多数票直接返回未评判候选」的语义。 |
269
271
  | **进度完成阈值** | `track` **最新**检查点低于该值时 steering 要求继续执行,否则改为"准备最终交付证据;最终会话验收是强制的"。默认 `0.684` = 判官标尺上 **N("偏成功")的起点**(进度分 = 字母序号 ÷ 19,N = 13/19 ≈ 68.4%),与提示词里"N–S = leans YES"的档位描述自洽;旧的 0.8 要求 Q 以上,等于"说得再肯定也不算过"。更早的检查点只随消息展示:每个任务的第一个检查点都是"刚写完计划",用"任一检查点低于阈值"判定会让继续分支恒真(实测 5/5)。**最新检查点达到阈值时还会置一个"下个边界直接进最终验收"的偏好**:steering 文案不变,但下一停止边界会跳过新的自动路由(不再为同一句提示重复购买 `track`);偏好由最终验收的预约消耗,验收失败后路由自动恢复 |
270
272
  | **单项/总证据字符上限** | 自动候选与检查点脱敏后的单项、整次路由输入硬上限,默认 `20000 / 60000`;同时约束语义路由提示词的总长度(只保留预算内最新证据)。截断标记本身也计入上限,因此截断后的条目不会被判定为超限。候选与检查点都按**数量分摊**总字符预算(单项仍受 2 万字符上限),自动 `track` 还最多渲染**最近 6 个**检查点(更早的在首个检查点中注明已省略),因此 8 个长候选或几十个检查点都不会让整条决策被上限整条丢弃。语义路由提示词同样把候选/检查点先脱敏再按同一预算限长,并改用确定性分隔块;分类器只能引用本次实际渲染出的 ID,引用被预算省略的 ID 视为非法引用(strict 下按失败处理且不无限重试) |
@@ -508,7 +510,7 @@ Workflow 候选在被记录后的**下一步主模型请求之前**就会评审
508
510
 
509
511
  所有自动阶段共享任务/会话级模型调用预算;分类请求以 `verifier_route_classify` 单独记录到统计。若某条决策因为超过证据上限、或语义路由引用了不存在/已失效的证据而没能执行,插件会写入宿主日志,并在统计里记下一条带 `dropped-over-budget` / `invalid-references` 判决的记录(没有模型调用,因此 `calls` 为 0),看板可以直接回答“这次为什么没有路由”。候选、步骤和标签在发送前统一执行默认脱敏、单项字符上限和总字符上限,图片证据按与显式工具相同的路径传入。
510
512
 
511
- ## 过程选优(受控,默认关闭)
513
+ ## 过程选优(off / 恢复触发 / 每步选优,默认关闭)
512
514
 
513
515
  前面所有能力都发生在「已经产生了回复/轨迹之后」:`agent/pre-step` 比较已有的可信候选,停止边界复核进度与交付。**过程选优**是唯一能在回复交给宿主**之前**改变下一步动作的入口——它挂在宿主的 `llm/stream` waterfall 上:
514
516
 
@@ -522,11 +524,11 @@ Workflow 候选在被记录后的**下一步主模型请求之前**就会评审
522
524
  └─ 原胜 / 并列 / 相同 / 失败 ──► 回放原回复
523
525
  ```
524
526
 
525
- **首版范围(有意收窄)**
527
+ **范围与触发(三档)**
526
528
 
527
- - **默认关闭**,且只在 smart 模式生效;manual / strict 不进入该路径。关闭时完全不进入该路径:不生成候选、不调用裁判、不缓冲响应。
528
- - **默认 N=2(可配 2–4)、每任务最多 1 个周期**,且与现有任务/会话**路由额度**、任务/会话模型调用预算、最终验收保留额度共用(预算不够时在发出任何新增请求之前回退原路径)。一个过程周期会在它自己的每任务计数器之外再消耗一次路由额度,因此「每任务一次」与「受既有路由额度约束」同时成立;同一会话的第二个任务可以购买自己的周期。
529
- - **唯一触发场景**:同一任务中**最近两次已完成的验证运行都失败**——「失败」读的是**运行自己的判决**,而不只是工具状态:`tool/result` / PTC 结果本身报错算失败,宿主的非零退出码写成文本(`[exit code: 1]`、`N failed`、`error TS…`、`test result: FAILED`、`FAIL`)同样算失败。宿主明确对非零退出**不**置 error(`tool-pwsh` 的渲染器原话是 reported, not errored),所以旧实现要求工具级错误时,两次失败的测试运行看起来像两次成功,P06 在真实会话里根本触发不了;`0 failed` 不算失败。两次中只要有一次成功,失败链就断开;识别不出就不触发,也不会为确认触发额外买一次分类调用。
529
+ - **三档开关**(`autoProcessSelection`,旧布尔值兼容:`true`→`recovery`):`off` 默认关闭,完全不进入该路径(不生成候选、不调用裁判、不缓冲响应);`recovery` 恢复触发,保持首发语义;`every-step` 每步选优,为每个主循环请求登记意图。三档都只在 smart 模式生效;manual / strict 不进入该路径。
530
+ - **默认 N=2(可配 2–4);每任务周期上限随档位**:`recovery` 每任务最多 1 个周期,`every-step` 每任务最多 `maxProcessCyclesPerTask` 个(1–32,默认 4,路由内存计数与侧车记录取较大值,重载不失忆)。过程周期与现有任务/会话**路由额度**、任务/会话模型调用预算、最终验收保留额度共用(预算不够时在发出任何新增请求之前回退原路径):一个过程周期在它自己的每任务计数器之外再消耗一次路由额度,因此 `every-step` 的实际步数上限是 `maxProcessCyclesPerTask` 与剩余路由会话额度(默认 8)的较小者;同一会话的第二个任务可以购买自己的周期。
531
+ - **触发场景按档位**:`recovery` 的唯一触发场景是同一任务中**最近两次已完成的验证运行都失败**;`every-step` 无需失败信号,每个主循环请求都可触发(有失败信号且开关开启时备选仍附带失败证据)。失败链的判定规则不变——「失败」读的是**运行自己的判决**,而不只是工具状态:`tool/result` / PTC 结果本身报错算失败,宿主的非零退出码写成文本(`[exit code: 1]`、`N failed`、`error TS…`、`test result: FAILED`、`FAIL`)同样算失败。宿主明确对非零退出**不**置 error(`tool-pwsh` 的渲染器原话是 reported, not errored),所以旧实现要求工具级错误时,两次失败的测试运行看起来像两次成功,P06 在真实会话里根本触发不了;`0 failed` 不算失败。两次中只要有一次成功,失败链就断开;识别不出就不触发,也不会为确认触发额外买一次分类调用。
530
532
  - **process 判据**:过程比较不再复用 `proposal` 判据(目标与约束 / 可行性 / 验证设计)——把「失败的做法再说一遍」在计划判据下往往得分不低。改用专为「失败之后选下一步」写的三条:**失败靶向**(是否针对观测到的失败证据)、**与已失败尝试不同**、**可验证的一步**。评审阶段仍是 `proposal`(候选都还没执行),判据来源记为 `process`,统计与看板据此区分,缓存键随提示词自然失效。
531
533
  - **不覆盖**架构分歧、用户笼统说「这件事很重要」、单次工具失败或模型自述「卡住了」——这些场景请用显式 `verifier_compare` / `verifier_select` 或可信 Workflow。
532
534
 
@@ -1664,13 +1664,17 @@ var AutoVerifierRouter = class {
1664
1664
  return this.state(agent)?.completed.has(fingerprint) ?? false;
1665
1665
  }
1666
1666
  /**
1667
- * Whether this task already bought its process-selection cycle.
1667
+ * How many process-selection cycles this task bought while the plugin has been loaded.
1668
1668
  *
1669
- * The in-memory counter is authoritative while the plugin is loaded; the durable sidecar
1670
- * covers a reload, which is why {@link hasProcessAttempt} exists next to it.
1669
+ * The in-memory counter is authoritative for the current process; the durable sidecar
1670
+ * covers a reload, which is why the caller reads BOTH and takes the larger.
1671
1671
  */
1672
+ processAttemptCount(agent) {
1673
+ return this.state(agent)?.processAttempts ?? 0;
1674
+ }
1675
+ /** Whether this task already bought at least one process-selection cycle. */
1672
1676
  hasProcessAttempt(agent) {
1673
- return (this.state(agent)?.processAttempts ?? 0) > 0;
1677
+ return this.processAttemptCount(agent) > 0;
1674
1678
  }
1675
1679
  finalRequired(agent) {
1676
1680
  return this.state(agent)?.finalRequiredFromSeq;
@@ -2137,4 +2141,4 @@ function selectRouteFeedbackDetail(candidates, result, maxChars = MAX_ROUTE_FEED
2137
2141
  //#endregion
2138
2142
  export { verificationFailed as A, latestDirectUserSeq as C, semanticDecision as D, routedRepeats as E, ScoreCache as F, SingleFlight as I, resolveCacheFile as L, extractSession as M, sanitizeVerifierText as N, semanticReferencesVisible as O, sessionEvents as P, stableHash as R, itemBudget as S, parseSemanticRoute as T, buildSemanticRoutePrompt as _, compareRouteFeedbackDetail as a, inspectDeliveryPhase as b, selectRouteFeedbackDetail as c, AutoVerifierRouter as d, MAX_ROUTED_CHECKPOINTS as f, buildEvidenceIndex as g, boundDecision as h, automaticFeedback as i, verificationVerdict as j, semanticRouteHint as k, sessionAccepted as l, analyzeStructuredRoute as m, PROPOSAL_FEEDBACK_NOTE as n, failedAcceptanceCriteria as o, RECOVERY_FAILURE_CONTEXT_CHARS as p, analyzeAutoTask as r, isSubagentSession as s, MAX_ROUTE_FEEDBACK_CHARS as t, topScoreIndices as u, buildSemanticRouteView as v, nextDiagnosticCycleId as w, inspectRecoverySignal as x, estimateRoutedCalls as y };
2139
2143
 
2140
- //# sourceMappingURL=auto-caXDU2pw.js.map
2144
+ //# sourceMappingURL=auto-DzlnuWAr.js.map