nexus-agents 9.2.0 → 9.4.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.
Files changed (145) hide show
  1. package/dist/{ast-rule-runner-DFEUIC2E.js → ast-rule-runner-5U6TE6YJ.js} +3 -3
  2. package/dist/{child-mcp-config-ALJL5I7K.js → child-mcp-config-IR7LRMIK.js} +2 -2
  3. package/dist/{chunk-M43A5MDJ.js → chunk-2AN5NGCQ.js} +4 -4
  4. package/dist/{chunk-A5D7666X.js → chunk-2AW2VHMK.js} +2 -2
  5. package/dist/{chunk-42TS2JOS.js → chunk-6H4NUU7G.js} +5 -5
  6. package/dist/{chunk-JZSKEIQF.js → chunk-6WPXQTQY.js} +2 -2
  7. package/dist/{chunk-625YPLMG.js → chunk-6Z3MAHAC.js} +2 -2
  8. package/dist/{chunk-SU47CN4Q.js → chunk-7XJZTSHW.js} +120 -64
  9. package/dist/chunk-7XJZTSHW.js.map +1 -0
  10. package/dist/{chunk-ZNXWR6V6.js → chunk-AFAM6GK3.js} +7 -7
  11. package/dist/{chunk-WDSRUC3H.js → chunk-AI6LKFGU.js} +3 -3
  12. package/dist/{chunk-4ROIBRK5.js → chunk-AYBOQE2Y.js} +3 -3
  13. package/dist/chunk-AYBOQE2Y.js.map +1 -0
  14. package/dist/{chunk-DJ7QTY5J.js → chunk-C5WECFBR.js} +5 -5
  15. package/dist/{chunk-KJ46Q24G.js → chunk-DEQRRCHK.js} +2 -2
  16. package/dist/{chunk-XBWG4BJU.js → chunk-DG2UY5QU.js} +2 -2
  17. package/dist/{chunk-DYVYV7NZ.js → chunk-DYTB2XW2.js} +5 -5
  18. package/dist/{chunk-VOJCSOVL.js → chunk-EPCR2GOE.js} +2 -2
  19. package/dist/{chunk-5IMXQQQX.js → chunk-ETGNAHY3.js} +4 -4
  20. package/dist/{chunk-KWQ5IR2A.js → chunk-FKMBZ53Y.js} +2 -2
  21. package/dist/{chunk-WDYK7OAI.js → chunk-FTUBCD52.js} +3 -3
  22. package/dist/{chunk-ZC6QDPMA.js → chunk-FWSAYHGV.js} +4 -4
  23. package/dist/{chunk-AWF35M67.js → chunk-H4ACPMJS.js} +4 -4
  24. package/dist/{chunk-GNGKWFC3.js → chunk-HESQ746B.js} +2 -2
  25. package/dist/{chunk-GAJRBRED.js → chunk-HK4LBUYY.js} +2 -2
  26. package/dist/{chunk-GTWTVDLP.js → chunk-II4XITQ6.js} +13 -13
  27. package/dist/{chunk-3JRQWWBD.js → chunk-JNRDNE26.js} +2 -2
  28. package/dist/{chunk-GNGIZJAC.js → chunk-LWLFWWA7.js} +3 -3
  29. package/dist/{chunk-VS3C3L63.js → chunk-ONWH4UGD.js} +82 -64
  30. package/dist/chunk-ONWH4UGD.js.map +1 -0
  31. package/dist/{chunk-KLDUWDNU.js → chunk-ONYCBTOH.js} +10 -9
  32. package/dist/chunk-ONYCBTOH.js.map +1 -0
  33. package/dist/{chunk-TGOZLRO7.js → chunk-P7327767.js} +2 -2
  34. package/dist/{chunk-ZVSJPKEZ.js → chunk-Q5F4OBOK.js} +2 -2
  35. package/dist/{chunk-PSZQ657B.js → chunk-Q7RFJSR5.js} +3 -3
  36. package/dist/{chunk-UNIRQWHT.js → chunk-RI4IXOZT.js} +2 -2
  37. package/dist/{chunk-PDT6QYKY.js → chunk-TFQMVUWQ.js} +6 -5
  38. package/dist/{chunk-PDT6QYKY.js.map → chunk-TFQMVUWQ.js.map} +1 -1
  39. package/dist/{chunk-TJ4VWR32.js → chunk-TMHCN5EY.js} +5 -5
  40. package/dist/{chunk-MXYKMQ53.js → chunk-TQEXRC5C.js} +250 -92
  41. package/dist/chunk-TQEXRC5C.js.map +1 -0
  42. package/dist/{chunk-ETW6QNVI.js → chunk-VQGHQVD2.js} +3 -3
  43. package/dist/{chunk-XPQ2RDMV.js → chunk-XJ65J3O5.js} +5 -5
  44. package/dist/{cli-circuit-breaker-OTFWY5A5.js → cli-circuit-breaker-AZHN2TMH.js} +3 -3
  45. package/dist/{cli-readiness-WFUMPJCU.js → cli-readiness-H4JTTKKU.js} +7 -7
  46. package/dist/cli.d.ts +1 -1
  47. package/dist/cli.js +44 -44
  48. package/dist/{composite-router-LE4SNM2X.js → composite-router-WCTNVMSX.js} +2 -2
  49. package/dist/{consensus-vote-2BEOCYGU.js → consensus-vote-RD3SME3K.js} +17 -17
  50. package/dist/{consensus-vote-types-q8io4acj.d.ts → consensus-vote-types-G7Lnj3B3.d.ts} +26 -32
  51. package/dist/{context-retriever-NKP73OSE.js → context-retriever-YM2PPNSY.js} +8 -8
  52. package/dist/{doctor-deep-FQPLASUY.js → doctor-deep-6P23G7PN.js} +3 -3
  53. package/dist/{doctor-gateway-report-3I7KQVU3.js → doctor-gateway-report-4TXHTWUM.js} +7 -7
  54. package/dist/{doctor-live-ZAMCNQGM.js → doctor-live-MYXZCBSP.js} +11 -11
  55. package/dist/{expert-bridge-3WL6X37T.js → expert-bridge-CXHYMQRL.js} +4 -4
  56. package/dist/{factory-X7XECZ3D.js → factory-3Z46455N.js} +10 -10
  57. package/dist/{factory-IAH3XPHY.js → factory-KH2MJQ5U.js} +5 -5
  58. package/dist/{improvement-review-4VHBKOME.js → improvement-review-RAISKC3W.js} +6 -6
  59. package/dist/index.d.ts +29 -19
  60. package/dist/index.js +32 -32
  61. package/dist/index.js.map +1 -1
  62. package/dist/{init-opencode-YLKVZJJA.js → init-opencode-WXRTDPFP.js} +6 -6
  63. package/dist/{issue-triage-UUD53JH3.js → issue-triage-KF47ZHU7.js} +6 -6
  64. package/dist/{model-config-helpers-KRTQLJF4.js → model-config-helpers-ZH2QAFVR.js} +2 -2
  65. package/dist/{openai-compat-adapter-YTSKOE4F.js → openai-compat-adapter-PQ3JKWPZ.js} +6 -6
  66. package/dist/{outcome-store-adapter-PSVE6YAJ.js → outcome-store-adapter-NTYEZXLH.js} +2 -2
  67. package/dist/{pr-reviewer-helpers-VP4P23TI.js → pr-reviewer-helpers-AQNGDRQT.js} +4 -4
  68. package/dist/{registry-command-S4GXEMQR.js → registry-command-6EHIJ3PJ.js} +2 -2
  69. package/dist/{repo-security-plan-66VLAFUR.js → repo-security-plan-AP3QEWJ5.js} +3 -3
  70. package/dist/{research-helpers-synthesize-RFOFNS5W.js → research-helpers-synthesize-XE3RMFQT.js} +4 -4
  71. package/dist/{routing-memory-KKBKCISC.js → routing-memory-PBZIE5NX.js} +2 -2
  72. package/dist/{session-memory-6FGTXRCN.js → session-memory-6NUK6ZAG.js} +3 -3
  73. package/dist/{setup-config-4NLQBTZH.js → setup-config-KEPU4NTT.js} +3 -3
  74. package/dist/{setup-custom-api-FLGYMLGG.js → setup-custom-api-XY455LVS.js} +3 -3
  75. package/dist/setup-data-dir-5MRGQD2G.js +36 -0
  76. package/dist/{tool-memory-5DOAHII2.js → tool-memory-MO2KOJJ7.js} +5 -5
  77. package/dist/{unified-registry-I2BUGW6I.js → unified-registry-JE22THXP.js} +11 -11
  78. package/dist/{weather-report-CTT5O7MR.js → weather-report-TQ6KM2F2.js} +2 -2
  79. package/package.json +1 -1
  80. package/dist/chunk-4ROIBRK5.js.map +0 -1
  81. package/dist/chunk-KLDUWDNU.js.map +0 -1
  82. package/dist/chunk-MXYKMQ53.js.map +0 -1
  83. package/dist/chunk-SU47CN4Q.js.map +0 -1
  84. package/dist/chunk-VS3C3L63.js.map +0 -1
  85. package/dist/setup-data-dir-VBMDTRCF.js +0 -36
  86. /package/dist/{ast-rule-runner-DFEUIC2E.js.map → ast-rule-runner-5U6TE6YJ.js.map} +0 -0
  87. /package/dist/{child-mcp-config-ALJL5I7K.js.map → child-mcp-config-IR7LRMIK.js.map} +0 -0
  88. /package/dist/{chunk-M43A5MDJ.js.map → chunk-2AN5NGCQ.js.map} +0 -0
  89. /package/dist/{chunk-A5D7666X.js.map → chunk-2AW2VHMK.js.map} +0 -0
  90. /package/dist/{chunk-42TS2JOS.js.map → chunk-6H4NUU7G.js.map} +0 -0
  91. /package/dist/{chunk-JZSKEIQF.js.map → chunk-6WPXQTQY.js.map} +0 -0
  92. /package/dist/{chunk-625YPLMG.js.map → chunk-6Z3MAHAC.js.map} +0 -0
  93. /package/dist/{chunk-ZNXWR6V6.js.map → chunk-AFAM6GK3.js.map} +0 -0
  94. /package/dist/{chunk-WDSRUC3H.js.map → chunk-AI6LKFGU.js.map} +0 -0
  95. /package/dist/{chunk-DJ7QTY5J.js.map → chunk-C5WECFBR.js.map} +0 -0
  96. /package/dist/{chunk-KJ46Q24G.js.map → chunk-DEQRRCHK.js.map} +0 -0
  97. /package/dist/{chunk-XBWG4BJU.js.map → chunk-DG2UY5QU.js.map} +0 -0
  98. /package/dist/{chunk-DYVYV7NZ.js.map → chunk-DYTB2XW2.js.map} +0 -0
  99. /package/dist/{chunk-VOJCSOVL.js.map → chunk-EPCR2GOE.js.map} +0 -0
  100. /package/dist/{chunk-5IMXQQQX.js.map → chunk-ETGNAHY3.js.map} +0 -0
  101. /package/dist/{chunk-KWQ5IR2A.js.map → chunk-FKMBZ53Y.js.map} +0 -0
  102. /package/dist/{chunk-WDYK7OAI.js.map → chunk-FTUBCD52.js.map} +0 -0
  103. /package/dist/{chunk-ZC6QDPMA.js.map → chunk-FWSAYHGV.js.map} +0 -0
  104. /package/dist/{chunk-AWF35M67.js.map → chunk-H4ACPMJS.js.map} +0 -0
  105. /package/dist/{chunk-GNGKWFC3.js.map → chunk-HESQ746B.js.map} +0 -0
  106. /package/dist/{chunk-GAJRBRED.js.map → chunk-HK4LBUYY.js.map} +0 -0
  107. /package/dist/{chunk-GTWTVDLP.js.map → chunk-II4XITQ6.js.map} +0 -0
  108. /package/dist/{chunk-3JRQWWBD.js.map → chunk-JNRDNE26.js.map} +0 -0
  109. /package/dist/{chunk-GNGIZJAC.js.map → chunk-LWLFWWA7.js.map} +0 -0
  110. /package/dist/{chunk-TGOZLRO7.js.map → chunk-P7327767.js.map} +0 -0
  111. /package/dist/{chunk-ZVSJPKEZ.js.map → chunk-Q5F4OBOK.js.map} +0 -0
  112. /package/dist/{chunk-PSZQ657B.js.map → chunk-Q7RFJSR5.js.map} +0 -0
  113. /package/dist/{chunk-UNIRQWHT.js.map → chunk-RI4IXOZT.js.map} +0 -0
  114. /package/dist/{chunk-TJ4VWR32.js.map → chunk-TMHCN5EY.js.map} +0 -0
  115. /package/dist/{chunk-ETW6QNVI.js.map → chunk-VQGHQVD2.js.map} +0 -0
  116. /package/dist/{chunk-XPQ2RDMV.js.map → chunk-XJ65J3O5.js.map} +0 -0
  117. /package/dist/{cli-circuit-breaker-OTFWY5A5.js.map → cli-circuit-breaker-AZHN2TMH.js.map} +0 -0
  118. /package/dist/{cli-readiness-WFUMPJCU.js.map → cli-readiness-H4JTTKKU.js.map} +0 -0
  119. /package/dist/{composite-router-LE4SNM2X.js.map → composite-router-WCTNVMSX.js.map} +0 -0
  120. /package/dist/{consensus-vote-2BEOCYGU.js.map → consensus-vote-RD3SME3K.js.map} +0 -0
  121. /package/dist/{context-retriever-NKP73OSE.js.map → context-retriever-YM2PPNSY.js.map} +0 -0
  122. /package/dist/{doctor-deep-FQPLASUY.js.map → doctor-deep-6P23G7PN.js.map} +0 -0
  123. /package/dist/{doctor-gateway-report-3I7KQVU3.js.map → doctor-gateway-report-4TXHTWUM.js.map} +0 -0
  124. /package/dist/{doctor-live-ZAMCNQGM.js.map → doctor-live-MYXZCBSP.js.map} +0 -0
  125. /package/dist/{expert-bridge-3WL6X37T.js.map → expert-bridge-CXHYMQRL.js.map} +0 -0
  126. /package/dist/{factory-IAH3XPHY.js.map → factory-3Z46455N.js.map} +0 -0
  127. /package/dist/{factory-X7XECZ3D.js.map → factory-KH2MJQ5U.js.map} +0 -0
  128. /package/dist/{improvement-review-4VHBKOME.js.map → improvement-review-RAISKC3W.js.map} +0 -0
  129. /package/dist/{init-opencode-YLKVZJJA.js.map → init-opencode-WXRTDPFP.js.map} +0 -0
  130. /package/dist/{issue-triage-UUD53JH3.js.map → issue-triage-KF47ZHU7.js.map} +0 -0
  131. /package/dist/{model-config-helpers-KRTQLJF4.js.map → model-config-helpers-ZH2QAFVR.js.map} +0 -0
  132. /package/dist/{openai-compat-adapter-YTSKOE4F.js.map → openai-compat-adapter-PQ3JKWPZ.js.map} +0 -0
  133. /package/dist/{outcome-store-adapter-PSVE6YAJ.js.map → outcome-store-adapter-NTYEZXLH.js.map} +0 -0
  134. /package/dist/{pr-reviewer-helpers-VP4P23TI.js.map → pr-reviewer-helpers-AQNGDRQT.js.map} +0 -0
  135. /package/dist/{registry-command-S4GXEMQR.js.map → registry-command-6EHIJ3PJ.js.map} +0 -0
  136. /package/dist/{repo-security-plan-66VLAFUR.js.map → repo-security-plan-AP3QEWJ5.js.map} +0 -0
  137. /package/dist/{research-helpers-synthesize-RFOFNS5W.js.map → research-helpers-synthesize-XE3RMFQT.js.map} +0 -0
  138. /package/dist/{routing-memory-KKBKCISC.js.map → routing-memory-PBZIE5NX.js.map} +0 -0
  139. /package/dist/{session-memory-6FGTXRCN.js.map → session-memory-6NUK6ZAG.js.map} +0 -0
  140. /package/dist/{setup-config-4NLQBTZH.js.map → setup-config-KEPU4NTT.js.map} +0 -0
  141. /package/dist/{setup-custom-api-FLGYMLGG.js.map → setup-custom-api-XY455LVS.js.map} +0 -0
  142. /package/dist/{setup-data-dir-VBMDTRCF.js.map → setup-data-dir-5MRGQD2G.js.map} +0 -0
  143. /package/dist/{tool-memory-5DOAHII2.js.map → tool-memory-MO2KOJJ7.js.map} +0 -0
  144. /package/dist/{unified-registry-I2BUGW6I.js.map → unified-registry-JE22THXP.js.map} +0 -0
  145. /package/dist/{weather-report-CTT5O7MR.js.map → weather-report-TQ6KM2F2.js.map} +0 -0
@@ -9,8 +9,8 @@ import {
9
9
  getBuiltInAstRulesPath,
10
10
  loadRules,
11
11
  runAstQaRules
12
- } from "./chunk-625YPLMG.js";
13
- import "./chunk-SU47CN4Q.js";
12
+ } from "./chunk-6Z3MAHAC.js";
13
+ import "./chunk-7XJZTSHW.js";
14
14
  import "./chunk-XBEKMUTO.js";
15
15
  import "./chunk-UE7A2XHM.js";
16
16
  import "./chunk-LWOX65CP.js";
@@ -28,4 +28,4 @@ export {
28
28
  loadRules,
29
29
  runAstQaRules
30
30
  };
31
- //# sourceMappingURL=ast-rule-runner-DFEUIC2E.js.map
31
+ //# sourceMappingURL=ast-rule-runner-5U6TE6YJ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-JPFRRNRR.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-SU47CN4Q.js";
6
+ } from "./chunk-7XJZTSHW.js";
7
7
  import "./chunk-XBEKMUTO.js";
8
8
  import "./chunk-UE7A2XHM.js";
9
9
  import "./chunk-LWOX65CP.js";
@@ -75,4 +75,4 @@ async function generateMcpConfig(options) {
75
75
  export {
76
76
  generateMcpConfig
77
77
  };
78
- //# sourceMappingURL=child-mcp-config-ALJL5I7K.js.map
78
+ //# sourceMappingURL=child-mcp-config-IR7LRMIK.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-ZO6ZKR7L.js";
4
4
  import {
5
5
  SessionMemory
6
- } from "./chunk-KWQ5IR2A.js";
6
+ } from "./chunk-FKMBZ53Y.js";
7
7
  import {
8
8
  TRUST_TIER_NUMERIC,
9
9
  TrustTierSchema
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-ROYGBFVE.js";
18
18
  import {
19
19
  generateId
20
- } from "./chunk-KJ46Q24G.js";
20
+ } from "./chunk-DEQRRCHK.js";
21
21
  import {
22
22
  ErrorCode,
23
23
  NexusError,
@@ -34,7 +34,7 @@ import {
34
34
  stringifyValue,
35
35
  tokenize,
36
36
  tokenizeFiltered
37
- } from "./chunk-SU47CN4Q.js";
37
+ } from "./chunk-7XJZTSHW.js";
38
38
  import {
39
39
  nexusDataPath
40
40
  } from "./chunk-LWOX65CP.js";
@@ -5841,4 +5841,4 @@ export {
5841
5841
  shutdownToolMemory,
5842
5842
  ToolMemoryManager
5843
5843
  };
5844
- //# sourceMappingURL=chunk-M43A5MDJ.js.map
5844
+ //# sourceMappingURL=chunk-2AN5NGCQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  redactCredentialShapes
3
- } from "./chunk-SU47CN4Q.js";
3
+ } from "./chunk-7XJZTSHW.js";
4
4
 
5
5
  // src/security/output-sanitizer.ts
6
6
  var REDACTED_KEY_PLACEHOLDER = "[REDACTED_KEY]";
@@ -54,4 +54,4 @@ export {
54
54
  sanitizeErrorDetails,
55
55
  sanitizeStringLeaves
56
56
  };
57
- //# sourceMappingURL=chunk-A5D7666X.js.map
57
+ //# sourceMappingURL=chunk-2AW2VHMK.js.map
@@ -4,16 +4,16 @@ import {
4
4
  createOpenAICompatAdapter,
5
5
  discoverGatewayCatalog,
6
6
  readOpenAICompatEnv
7
- } from "./chunk-DJ7QTY5J.js";
7
+ } from "./chunk-C5WECFBR.js";
8
8
  import {
9
9
  CUSTOM_API_DEFAULT_MODEL
10
10
  } from "./chunk-PRX4ERTK.js";
11
11
  import {
12
12
  gatewayProxyUrl
13
- } from "./chunk-GAJRBRED.js";
13
+ } from "./chunk-HK4LBUYY.js";
14
14
  import {
15
15
  redactGatewaySecrets
16
- } from "./chunk-ZVSJPKEZ.js";
16
+ } from "./chunk-Q5F4OBOK.js";
17
17
  import {
18
18
  DEFAULT_OPENAI_COMPAT_ENDPOINT,
19
19
  GATEWAY_COST_ENV,
@@ -31,7 +31,7 @@ import {
31
31
  isCliDisabled,
32
32
  symbols,
33
33
  writeLine
34
- } from "./chunk-SU47CN4Q.js";
34
+ } from "./chunk-7XJZTSHW.js";
35
35
 
36
36
  // src/cli/doctor-gateway-slots.ts
37
37
  var FAMILY_SLOTS = [
@@ -398,4 +398,4 @@ export {
398
398
  formatGatewayReport,
399
399
  formatGatewaySlotWarnings
400
400
  };
401
- //# sourceMappingURL=chunk-42TS2JOS.js.map
401
+ //# sourceMappingURL=chunk-6H4NUU7G.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  createLogger,
6
6
  getTimeProvider
7
- } from "./chunk-SU47CN4Q.js";
7
+ } from "./chunk-7XJZTSHW.js";
8
8
 
9
9
  // src/mcp/tools/scanner-registry-fetcher.ts
10
10
  import { z } from "zod";
@@ -740,4 +740,4 @@ export {
740
740
  generateSecurityPlan,
741
741
  buildPlanFromAnalysis
742
742
  };
743
- //# sourceMappingURL=chunk-JZSKEIQF.js.map
743
+ //# sourceMappingURL=chunk-6WPXQTQY.js.map
@@ -4,7 +4,7 @@ import {
4
4
  createLogger,
5
5
  formatZodError,
6
6
  resolveInsideRoot
7
- } from "./chunk-SU47CN4Q.js";
7
+ } from "./chunk-7XJZTSHW.js";
8
8
 
9
9
  // src/security/ast-rule-runner.ts
10
10
  import { existsSync } from "node:fs";
@@ -241,4 +241,4 @@ export {
241
241
  collectAstQaFindings,
242
242
  runAstQaRules
243
243
  };
244
- //# sourceMappingURL=chunk-625YPLMG.js.map
244
+ //# sourceMappingURL=chunk-6Z3MAHAC.js.map
@@ -2151,7 +2151,7 @@ function priceBasisCaveat(basis) {
2151
2151
  case "list":
2152
2152
  return "Estimated from public list prices \u2014 your contract, gateway or free-tier rate may differ.";
2153
2153
  case "declared":
2154
- return "Based on the operator\u2019s NEXUS_GATEWAY_COST declaration, not a published rate.";
2154
+ return "Based on an operator-declared rate, not a verified published price.";
2155
2155
  case "unknown":
2156
2156
  return void 0;
2157
2157
  default: {
@@ -2175,17 +2175,24 @@ function isPrefixMatch(entry, query) {
2175
2175
  return id.length > 0 && query.startsWith(id) || cliName.length > 0 && query.startsWith(cliName);
2176
2176
  }
2177
2177
  function lookupCanonicalPricing(model) {
2178
+ const registry = getDefaultRegistry();
2178
2179
  const models = getInTreeCapabilitiesMatrix().models;
2179
- for (const m of models) {
2180
- if (isExactMatch(m, model)) return toPricing(m.pricing);
2181
- }
2182
- for (const m of models) {
2183
- if (m.pricing !== void 0 && isPrefixMatch(m, model)) return toPricing(m.pricing);
2180
+ const matched = models.find((m) => isExactMatch(m, model)) ?? models.find((m) => m.pricing !== void 0 && isPrefixMatch(m, model));
2181
+ if (matched !== void 0) {
2182
+ const entry2 = registry.getEntry(matched.id);
2183
+ return {
2184
+ pricing: toPricing(matched.pricing),
2185
+ source: entry2.pricing === void 0 ? "in-tree" : entry2.source
2186
+ };
2184
2187
  }
2185
- return toPricing(getDefaultRegistry().getEntry(model).pricing);
2188
+ const entry = registry.getEntry(model);
2189
+ return {
2190
+ pricing: toPricing(entry.pricing),
2191
+ source: registry.getEntry(entry.resolvedFrom ?? entry.id).source
2192
+ };
2186
2193
  }
2187
2194
  function calculateCost(model, inputTokens, outputTokens) {
2188
- const pricing = lookupCanonicalPricing(model);
2195
+ const { pricing } = lookupCanonicalPricing(model);
2189
2196
  if (pricing === void 0) {
2190
2197
  return void 0;
2191
2198
  }
@@ -5824,6 +5831,7 @@ function computeCostDetail(modelId, inputTokens, outputTokens) {
5824
5831
  return {
5825
5832
  costUsd: roundToMicroUsd(costUsd),
5826
5833
  priced: true,
5834
+ ...getDefaultRegistry().getEntry(entry.resolvedFrom ?? entry.id).source === "manifest" ? { declared: true } : {},
5827
5835
  resolvedId,
5828
5836
  ...provenance,
5829
5837
  ...entry.pricingProvenance !== void 0 ? { pricingProvenance: entry.pricingProvenance } : {}
@@ -6080,7 +6088,7 @@ function adapterReadiness(adapter, options) {
6080
6088
  const ceiling = resolveClassGuardMs("interactive");
6081
6089
  const requested = options.timeoutMs ?? ceiling;
6082
6090
  const timeoutMs = Number.isFinite(requested) && requested > 0 ? Math.min(requested, ceiling) : ceiling;
6083
- const flight = import("./cli-readiness-WFUMPJCU.js").then(({ probeServes }) => probeServes(adapter, timeoutMs)).finally(() => readinessFlights.delete(adapter));
6091
+ const flight = import("./cli-readiness-H4JTTKKU.js").then(({ probeServes }) => probeServes(adapter, timeoutMs)).finally(() => readinessFlights.delete(adapter));
6084
6092
  readinessFlights.set(adapter, flight);
6085
6093
  return flight;
6086
6094
  }
@@ -6090,7 +6098,7 @@ async function servesListedModel(adapter, modelId, cli) {
6090
6098
  const models = await adapter.listModels();
6091
6099
  if (models.length === 0) return "unknown";
6092
6100
  const requestedKey = canonicalModelKey(modelId);
6093
- const findCanonicalModel2 = cli === "codex" ? (await import("./model-config-helpers-KRTQLJF4.js")).findCanonicalModel : void 0;
6101
+ const findCanonicalModel2 = cli === "codex" ? (await import("./model-config-helpers-ZH2QAFVR.js")).findCanonicalModel : void 0;
6094
6102
  const requestedEntry = requestedKey === null ? findCanonicalModel2?.("codex", modelId) : void 0;
6095
6103
  const listed = models.some((model) => {
6096
6104
  const listedEntry = findCanonicalModel2?.("codex", model.id);
@@ -7314,7 +7322,10 @@ var CircuitBreakerRegistry = class {
7314
7322
  }
7315
7323
  return snapshots;
7316
7324
  }
7317
- /** CLI-slot view of {@link getAllArmSnapshots}: `api:*` arms are filtered out. */
7325
+ /**
7326
+ * CLI-slot view of {@link getAllArmSnapshots}: `api:*` arms are filtered out.
7327
+ * @deprecated Use {@link getAllArmSnapshots}; removed in 10.0, #6291.
7328
+ */
7318
7329
  getAllSnapshots() {
7319
7330
  const snapshots = /* @__PURE__ */ new Map();
7320
7331
  for (const [name, snapshot] of this.getAllArmSnapshots()) {
@@ -7356,7 +7367,10 @@ var CircuitBreakerRegistry = class {
7356
7367
  }
7357
7368
  return healthy;
7358
7369
  }
7359
- /** CLI-slot view of {@link getHealthyArms}: `api:*` arms are filtered out. */
7370
+ /**
7371
+ * CLI-slot view of {@link getHealthyArms}: `api:*` arms are filtered out.
7372
+ * @deprecated Use {@link getHealthyArms}; removed in 10.0, #6291.
7373
+ */
7360
7374
  getHealthyClis() {
7361
7375
  return this.getHealthyArms().filter(isCliName);
7362
7376
  }
@@ -7371,7 +7385,10 @@ var CircuitBreakerRegistry = class {
7371
7385
  }
7372
7386
  return unhealthy;
7373
7387
  }
7374
- /** CLI-slot view of {@link getUnhealthyArms}: `api:*` arms are filtered out. */
7388
+ /**
7389
+ * CLI-slot view of {@link getUnhealthyArms}: `api:*` arms are filtered out.
7390
+ * @deprecated Use {@link getUnhealthyArms}; removed in 10.0, #6291.
7391
+ */
7375
7392
  getUnhealthyClis() {
7376
7393
  return this.getUnhealthyArms().filter(isCliName);
7377
7394
  }
@@ -7540,7 +7557,7 @@ var ModelToCliAdapter = class {
7540
7557
  }
7541
7558
  async execute(task, options) {
7542
7559
  const gatewayArm = this.gatewayArmField().gatewayArm;
7543
- const breaker = gatewayArm !== void 0 && this.modelAdapter.providerId === `cli-${this.name}` ? (await import("./cli-circuit-breaker-OTFWY5A5.js")).getDefaultCliCircuitBreakerRegistry().getArmBreaker(breakerKeys.forArm({ name: this.name, gatewayArm })) : void 0;
7560
+ const breaker = gatewayArm !== void 0 && this.modelAdapter.providerId === `cli-${this.name}` ? (await import("./cli-circuit-breaker-AZHN2TMH.js")).getDefaultCliCircuitBreakerRegistry().getArmBreaker(breakerKeys.forArm({ name: this.name, gatewayArm })) : void 0;
7544
7561
  const result = await this.modelAdapter.complete(this.toCompletionRequest(task, options));
7545
7562
  if (!result.ok) {
7546
7563
  const cliError = this.toCliError(result.error);
@@ -7890,7 +7907,12 @@ function ceilingPriceBasis(target, costUsd, env) {
7890
7907
  const arm = served === void 0 ? target.arm : served.arm;
7891
7908
  const declaration = arm !== void 0 && isGatewayArmId(arm) ? resolveGatewayCostDeclaration(arm, env) : void 0;
7892
7909
  const declared = declaration !== void 0 && gatewayCostRates(declaration) !== "registry";
7893
- return declared ? "declared" : "list";
7910
+ if (declared) return "declared";
7911
+ return registryCeilingBasis(target, served, arm, env);
7912
+ }
7913
+ function registryCeilingBasis(target, served, arm, env) {
7914
+ const model = arm !== void 0 && isGatewayArmId(arm) ? gatewayPricingModel(arm, served?.modelId ?? sentModelOf(target.adapter), env) : getDefaultModelForCli(observedArmDisplaySlot(target.arm));
7915
+ return model === void 0 ? "unknown" : priceBasisOf(computeCostDetail(model, 0, 0));
7894
7916
  }
7895
7917
  function recordCeilingCostOfArm(target, inputTokens, outputTokens, ceiling, env = process.env) {
7896
7918
  const costUsd = ceilingCostOfArm(target, inputTokens, outputTokens, env);
@@ -12741,8 +12763,9 @@ var TaskOutcomeSchema = z13.object({
12741
12763
  */
12742
12764
  costUsd: z13.number().nonnegative().optional(),
12743
12765
  /**
12744
- * What `costUsd` rests on (#6624): `'list'` for a registry-chain rate,
12745
- * `'declared'` for an explicit gateway rate (including free/local), and
12766
+ * What `costUsd` rests on (#6624): `'list'` for an assumed published
12767
+ * registry-chain rate, `'declared'` for a manifest-overlay price (user or
12768
+ * operator tier) or an explicit gateway rate (including free/local), and
12746
12769
  * `'unknown'` when pricing was attempted but none resolved. Absent when no
12747
12770
  * lookup was made because the adapter reported no token usage.
12748
12771
  */
@@ -13576,7 +13599,7 @@ function getOutcomeStore() {
13576
13599
  async function attachOutcomeStoreToRegistry(store) {
13577
13600
  try {
13578
13601
  const { getMemoryRegistry } = await import("./dist-RRRU2OKU.js");
13579
- const { OutcomeStoreAdapter } = await import("./outcome-store-adapter-PSVE6YAJ.js");
13602
+ const { OutcomeStoreAdapter } = await import("./outcome-store-adapter-NTYEZXLH.js");
13580
13603
  const { ensureSharedMemoryRegistry } = await import("./tool-memory-registry-adapters-FO6JVQSX.js");
13581
13604
  ensureSharedMemoryRegistry();
13582
13605
  getMemoryRegistry().attach("outcomes", new OutcomeStoreAdapter(store));
@@ -15860,10 +15883,29 @@ function mintReasoningNonce() {
15860
15883
  function computeReasoningDigest(reasoningNonce, reasoning) {
15861
15884
  return crypto.createHash("sha256").update(reasoningNonce).update(reasoning).digest("hex");
15862
15885
  }
15863
- var REASONING_DIGEST_TIERS = /* @__PURE__ */ new Set(["1.13", "1.14"]);
15886
+ function reasoningCommitmentText(version, reasoning, conditions) {
15887
+ return version === "1.15" ? JSON.stringify({ reasoning, conditions }) : reasoning;
15888
+ }
15889
+ var REASONING_DIGEST_TIERS = /* @__PURE__ */ new Set(["1.13", "1.14", "1.15"]);
15864
15890
  function isReasoningDigestTier(version) {
15865
15891
  return REASONING_DIGEST_TIERS.has(version);
15866
15892
  }
15893
+ function buildReasoningCommitment(clipped, version, conditions) {
15894
+ const reasoningNonce = mintReasoningNonce();
15895
+ return {
15896
+ reasoning: clipped.text,
15897
+ ...clipped.truncated === true ? { reasoningTruncated: true } : {},
15898
+ reasoningNonce,
15899
+ reasoningDigest: computeReasoningDigest(
15900
+ reasoningNonce,
15901
+ reasoningCommitmentText(version, clipped.text, conditions)
15902
+ )
15903
+ };
15904
+ }
15905
+ function isUnhashedReasoningField(version, key) {
15906
+ if (!isReasoningDigestTier(version)) return key === "reasoningNonce" || key === "reasoningDigest";
15907
+ return key === "reasoning" || key === "reasoningNonce" || version === "1.15" && key === "conditions";
15908
+ }
15867
15909
  function textTierShapeDefect(v) {
15868
15910
  if (v.reasoningNonce !== void 0) {
15869
15911
  return { key: "reasoningNonce", message: "reasoningNonce is a 1.13 key" };
@@ -15887,14 +15929,17 @@ function digestTierShapeDefect(v) {
15887
15929
  }
15888
15930
  return null;
15889
15931
  }
15890
- function reasoningCommitmentShapeDefect(digestTier, v) {
15932
+ function reasoningCommitmentShapeDefect(digestTier, v, conditionsTier = false) {
15933
+ if (conditionsTier && v.conditions !== void 0 && v.reasoning === void 0) {
15934
+ return { key: "conditions", message: "conditions without the reasoning opening they share" };
15935
+ }
15891
15936
  return digestTier ? digestTierShapeDefect(v) : textTierShapeDefect(v);
15892
15937
  }
15893
15938
  function findReasoningCommitmentDefect(record, redactedRoles) {
15894
15939
  const digestTier = isReasoningDigestTier(record.version);
15895
15940
  for (const [i, v] of record.voters.entries()) {
15896
15941
  const where = `voters[${String(i)}] (${v.role})`;
15897
- const shape = reasoningCommitmentShapeDefect(digestTier, v);
15942
+ const shape = reasoningCommitmentShapeDefect(digestTier, v, record.version === "1.15");
15898
15943
  if (shape !== null) return `${where}: ${shape.message}`;
15899
15944
  if (v.reasoningNonce === void 0 || v.reasoning === void 0) {
15900
15945
  if (v.reasoningDigest !== void 0 && !redactedRoles.has(v.role)) {
@@ -15902,9 +15947,12 @@ function findReasoningCommitmentDefect(record, redactedRoles) {
15902
15947
  }
15903
15948
  continue;
15904
15949
  }
15905
- const recomputed = computeReasoningDigest(v.reasoningNonce, v.reasoning);
15950
+ const recomputed = computeReasoningDigest(
15951
+ v.reasoningNonce,
15952
+ reasoningCommitmentText(record.version, v.reasoning, v.conditions)
15953
+ );
15906
15954
  if (recomputed !== v.reasoningDigest) {
15907
- return `${where}: stored reasoningDigest=${String(v.reasoningDigest)} does not match sha256(reasoningNonce \u2016 reasoning)=${recomputed} \u2014 the reasoning was edited without re-committing`;
15955
+ return `${where}: stored reasoningDigest=${String(v.reasoningDigest)} does not match sha256(reasoningNonce \u2016 opening)=${recomputed} \u2014 the opening was edited without re-committing`;
15908
15956
  }
15909
15957
  }
15910
15958
  return null;
@@ -15973,6 +16021,9 @@ function redactedRolesByTarget(redactions) {
15973
16021
  }
15974
16022
  return byTarget;
15975
16023
  }
16024
+ function hasOpening(v, version) {
16025
+ return v.reasoning !== void 0 || v.reasoningNonce !== void 0 || version === "1.15" && v.conditions !== void 0;
16026
+ }
15976
16027
  function redactionBindingDefect(r, targets) {
15977
16028
  const matched = targets.filter((t) => t.id === r.targetId);
15978
16029
  if (matched.length === 0) return `targetId '${r.targetId}' matches no record in the set`;
@@ -15989,7 +16040,7 @@ function redactionBindingDefect(r, targets) {
15989
16040
  if (v.reasoningDigest === void 0) {
15990
16041
  return `names role '${role}' on '${target.id}', which carries no reasoning commitment`;
15991
16042
  }
15992
- if (v.reasoning !== void 0 || v.reasoningNonce !== void 0) {
16043
+ if (hasOpening(v, target.version)) {
15993
16044
  return `names role '${role}' on '${target.id}' whose opening is still present \u2014 the redaction is recorded but not applied`;
15994
16045
  }
15995
16046
  }
@@ -16092,6 +16143,8 @@ var VoteRecordPanelCoverageSchema = z20.object({
16092
16143
  erroredRoles: z20.array(z20.string().min(1).max(100))
16093
16144
  }).strict();
16094
16145
  var MAX_VOTER_REASONING_CHARS = 2e4;
16146
+ var MAX_VOTER_CONDITIONS = 20;
16147
+ var MAX_VOTER_CONDITION_CHARS = 2e3;
16095
16148
  function clipForRecord(text) {
16096
16149
  if (text.length <= MAX_VOTER_REASONING_CHARS) return { text };
16097
16150
  return { text: text.slice(0, MAX_VOTER_REASONING_CHARS), truncated: true };
@@ -16243,7 +16296,8 @@ var VoterSummarySchema = z20.object({
16243
16296
  reasoningNonce: z20.string().regex(HEX_256_PATTERN).optional(),
16244
16297
  /**
16245
16298
  * `sha256(reasoningNonce ‖ reasoning)` as lowercase hex (#6263, schema
16246
- * 1.13) — see `computeReasoningDigest` in reasoning-commitment.ts. The
16299
+ * 1.13) — see `computeReasoningDigest` in reasoning-commitment.ts. On
16300
+ * 1.15 the preimage bundles reasoning and conditions via reasoningCommitmentText. The
16247
16301
  * commitment to the text: {@link verifyVoteRecordSet} re-opens it
16248
16302
  * whenever nonce and text are both present, so a text edited without
16249
16303
  * re-committing is a `hash_mismatch` exactly as it was when the text
@@ -16254,7 +16308,17 @@ var VoterSummarySchema = z20.object({
16254
16308
  /** Declared option selected by this seat (#4495, schema 1.14). */
16255
16309
  selectedOption: z20.string().min(1).optional(),
16256
16310
  /** Present only when the approving seat was re-asked once (#4495). */
16257
- optionReask: z20.object({ resolved: z20.boolean() }).strict().optional()
16311
+ optionReask: z20.object({ resolved: z20.boolean() }).strict().optional(),
16312
+ /**
16313
+ * Voter-sent approval conditions (#7134, schema 1.15). Advisory and
16314
+ * unenforced: they do not change the tally. Absent means not supplied;
16315
+ * an empty array means explicitly no conditions. Preserve prose, including
16316
+ * Unicode, within the caps: at most 20 strings of 2,000 UTF-16 code units
16317
+ * each. The response parser visibly marks clipped strings and dropped items.
16318
+ * On 1.15 they share the reasoningNonce/reasoningDigest commitment and
16319
+ * are removed with reasoning and nonce at sanctioned redaction.
16320
+ */
16321
+ conditions: z20.array(z20.string().max(MAX_VOTER_CONDITION_CHARS)).max(MAX_VOTER_CONDITIONS).optional()
16258
16322
  }).strict();
16259
16323
  function defineVoterKeys(keys) {
16260
16324
  return keys;
@@ -16293,15 +16357,9 @@ var VOTER_SUMMARY_KEYS = defineVoterKeys([
16293
16357
  "servedModel",
16294
16358
  // 1.14 (#4495): appended, present-only; historical hashes stay unchanged.
16295
16359
  "selectedOption",
16296
- "optionReask"
16297
- ]);
16298
- var REASONING_TIER_KEYS = /* @__PURE__ */ new Set([
16299
- "reasoningNonce",
16300
- "reasoningDigest"
16301
- ]);
16302
- var REASONING_OPENING_KEYS = /* @__PURE__ */ new Set([
16303
- "reasoning",
16304
- "reasoningNonce"
16360
+ "optionReask",
16361
+ // 1.15 (#7134): conditions join the commitment opening; never folded on 1.15.
16362
+ "conditions"
16305
16363
  ]);
16306
16364
  function noUnprojectedKeys(rest) {
16307
16365
  return rest;
@@ -16324,8 +16382,8 @@ function projectRetriedFrom(r) {
16324
16382
  ...errorTruncated !== void 0 ? { errorTruncated } : {}
16325
16383
  };
16326
16384
  }
16327
- function projectVoterField(v, key, digestTier) {
16328
- if (digestTier ? REASONING_OPENING_KEYS.has(key) : REASONING_TIER_KEYS.has(key)) return void 0;
16385
+ function projectVoterField(v, key, version) {
16386
+ if (isUnhashedReasoningField(version, key)) return void 0;
16329
16387
  if (key === "fallback") {
16330
16388
  return v.fallback === void 0 ? void 0 : projectSeatFallback(v.fallback);
16331
16389
  }
@@ -16338,10 +16396,10 @@ function projectVoterField(v, key, digestTier) {
16338
16396
  }
16339
16397
  return v[key];
16340
16398
  }
16341
- function projectVoterSummary(v, digestTier) {
16399
+ function projectVoterSummary(v, version) {
16342
16400
  const out = {};
16343
16401
  for (const key of VOTER_SUMMARY_KEYS) {
16344
- const value = projectVoterField(v, key, digestTier);
16402
+ const value = projectVoterField(v, key, version);
16345
16403
  if (value !== void 0) out[key] = value;
16346
16404
  }
16347
16405
  return out;
@@ -16382,7 +16440,8 @@ var VoteRecordSchema = z20.object({
16382
16440
  * and — the one tier that changes what an EXISTING key means to the
16383
16441
  * hash — folds those instead of `reasoning` (#6263; the clip marker
16384
16442
  * `reasoningTruncated` stays folded). '1.14' adds per-seat selections and
16385
- * re-ask outcomes (#4495), keeping the digest fold. Every tier is accepted — a 1.1 record
16443
+ * re-ask outcomes (#4495), keeping the digest fold. '1.15' adds advisory
16444
+ * voter conditions (#7134), also keeping the digest fold. Every tier is accepted — a 1.1 record
16386
16445
  * (no `ratifies`) verifies unchanged because each optional is folded into
16387
16446
  * the self-hash ONLY when present (see {@link computeVoteRecordHash}).
16388
16447
  * Tiers are labels, not ordered numbers: '1.10' follows '1.9' by
@@ -16402,7 +16461,8 @@ var VoteRecordSchema = z20.object({
16402
16461
  "1.11",
16403
16462
  "1.12",
16404
16463
  "1.13",
16405
- "1.14"
16464
+ "1.14",
16465
+ "1.15"
16406
16466
  ]),
16407
16467
  /** Unique record id (also usable as a `ratificationVoteRef`). */
16408
16468
  id: z20.string().min(1),
@@ -16562,7 +16622,7 @@ var VoteRecordSchema = z20.object({
16562
16622
  }).strict().superRefine((record, ctx) => {
16563
16623
  const digestTier = isReasoningDigestTier(record.version);
16564
16624
  for (const [i, v] of record.voters.entries()) {
16565
- const defect = reasoningCommitmentShapeDefect(digestTier, v);
16625
+ const defect = reasoningCommitmentShapeDefect(digestTier, v, record.version === "1.15");
16566
16626
  if (defect !== null) {
16567
16627
  ctx.addIssue({ code: "custom", path: ["voters", i, defect.key], message: defect.message });
16568
16628
  }
@@ -16622,9 +16682,7 @@ function computeVoteRecordHash(payload) {
16622
16682
  // `reasoningNonce` stays outside the hash with the text (the clip marker
16623
16683
  // stays folded); the text is bound by the digest, which
16624
16684
  // `verifyVoteRecordSet` re-opens with the nonce.
16625
- voters: payload.voters.map(
16626
- (v) => projectVoterSummary(v, isReasoningDigestTier(payload.version))
16627
- ),
16685
+ voters: payload.voters.map((v) => projectVoterSummary(v, payload.version)),
16628
16686
  correlationId: payload.correlationId ?? null
16629
16687
  };
16630
16688
  const canonical = JSON.stringify(foldOptionalFields(base, payload));
@@ -16756,13 +16814,19 @@ function servedModelField(v, logger16) {
16756
16814
  });
16757
16815
  return {};
16758
16816
  }
16759
- function optionEvidence(v) {
16817
+ function voterEvidence(v) {
16760
16818
  return {
16761
16819
  ...v.vote.decision === "approve" && v.selectedOption !== void 0 ? { selectedOption: v.selectedOption } : {},
16762
- ...v.optionReask !== void 0 ? { optionReask: { resolved: v.optionReask.resolved } } : {}
16820
+ ...v.optionReask !== void 0 ? { optionReask: { resolved: v.optionReask.resolved } } : {},
16821
+ // ParsedVote -> result.vote carries visibly bounded conditions. Preserve [].
16822
+ ...v.vote.conditions !== void 0 ? { conditions: [...v.vote.conditions] } : {}
16763
16823
  };
16764
16824
  }
16825
+ function voterCommitmentVersion(votes) {
16826
+ return votes.some((v) => v.source !== "error" && v.vote.conditions !== void 0) ? "1.15" : "1.13";
16827
+ }
16765
16828
  function toVoterSummaries(votes, logger16) {
16829
+ const version = voterCommitmentVersion(votes);
16766
16830
  const summaries = [];
16767
16831
  for (const v of votes) {
16768
16832
  if (v.source === "error") continue;
@@ -16771,7 +16835,7 @@ function toVoterSummaries(votes, logger16) {
16771
16835
  role: v.role,
16772
16836
  decision: vote.decision,
16773
16837
  confidence: vote.confidence,
16774
- ...reasoningFields(vote.reasoning),
16838
+ ...buildReasoningCommitment(clipForRecord(vote.reasoning), version, vote.conditions),
16775
16839
  // #6050: carried, not dropped. `voter-retry.ts` has set this on every
16776
16840
  // recovered seat since it was written and nothing read it, so the record
16777
16841
  // said "7 of 7 answered cleanly" for a panel that needed a retry.
@@ -16795,21 +16859,11 @@ function toVoterSummaries(votes, logger16) {
16795
16859
  // #6967: the hash projection (`VOTER_SUMMARY_KEYS`) appends it last, so
16796
16860
  // its position here does not change any hash.
16797
16861
  ...servedModelField(v, logger16),
16798
- ...optionEvidence(v)
16862
+ ...voterEvidence(v)
16799
16863
  });
16800
16864
  }
16801
16865
  return summaries;
16802
16866
  }
16803
- function reasoningFields(reasoning) {
16804
- const { text, truncated } = clipForRecord(reasoning);
16805
- const reasoningNonce = mintReasoningNonce();
16806
- return {
16807
- reasoning: text,
16808
- ...truncated === true ? { reasoningTruncated: true } : {},
16809
- reasoningNonce,
16810
- reasoningDigest: computeReasoningDigest(reasoningNonce, text)
16811
- };
16812
- }
16813
16867
  function recordDecisionFor(input) {
16814
16868
  return input.resolvedDecision ?? outcomeToDecision(input.result, input.votes, input.errorVoided ?? false);
16815
16869
  }
@@ -16823,8 +16877,7 @@ function deriveOptionFields(votes, declaredOptions) {
16823
16877
  }
16824
16878
  function recordVersion(optionTally, optionCoverage, panelCoverage, voters, recordLevel) {
16825
16879
  const voterTier = voterTierOf(voters);
16826
- if (voterTier === "1.14") return "1.14";
16827
- if (voterTier === "1.13") return "1.13";
16880
+ if (voterTier !== void 0 && isReasoningDigestTier(voterTier)) return voterTier;
16828
16881
  if (voterTier === "1.12") return "1.12";
16829
16882
  if (recordLevel.errorPolicy !== void 0) return "1.11";
16830
16883
  if (recordLevel.ratifiesPr !== void 0) return "1.10";
@@ -16834,6 +16887,7 @@ function recordVersion(optionTally, optionCoverage, panelCoverage, voters, recor
16834
16887
  return optionTally !== void 0 ? "1.3" : "1.2";
16835
16888
  }
16836
16889
  function voterTierOf(voters) {
16890
+ if (voters.some((v) => v.conditions !== void 0)) return "1.15";
16837
16891
  if (voters.some((v) => v.selectedOption !== void 0 || v.optionReask !== void 0))
16838
16892
  return "1.14";
16839
16893
  if (voters.some((v) => v.reasoningDigest !== void 0)) return "1.13";
@@ -19921,7 +19975,7 @@ var CompositeRouter = class _CompositeRouter {
19921
19975
  */
19922
19976
  async consultUnifiedContext(task) {
19923
19977
  try {
19924
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-NKP73OSE.js");
19978
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-YM2PPNSY.js");
19925
19979
  const ctx = await getContextForTask({
19926
19980
  task: task.content,
19927
19981
  category: inferTaskCategory(task.content),
@@ -21003,7 +21057,7 @@ function setDefaultRegistry(registry) {
21003
21057
  }
21004
21058
  async function reloadDefaultRegistry() {
21005
21059
  globalRegistry = buildDefaultRegistry();
21006
- const { resetGlobalRegistry } = await import("./unified-registry-I2BUGW6I.js");
21060
+ const { resetGlobalRegistry } = await import("./unified-registry-JE22THXP.js");
21007
21061
  resetGlobalRegistry();
21008
21062
  return globalRegistry;
21009
21063
  }
@@ -21637,6 +21691,8 @@ export {
21637
21691
  DecisionGateSchema,
21638
21692
  DecisionCostStore,
21639
21693
  pipelineRunId,
21694
+ MAX_VOTER_CONDITIONS,
21695
+ MAX_VOTER_CONDITION_CHARS,
21640
21696
  clipForRecord,
21641
21697
  VoteRecordPrBindingSchema,
21642
21698
  computeVoteRecordHash,
@@ -21670,4 +21726,4 @@ export {
21670
21726
  AgentCapability,
21671
21727
  OrchestratorError
21672
21728
  };
21673
- //# sourceMappingURL=chunk-SU47CN4Q.js.map
21729
+ //# sourceMappingURL=chunk-7XJZTSHW.js.map