@lcv-ideas-software/cross-review 4.0.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 (122) hide show
  1. package/CHANGELOG.md +2568 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +26 -0
  4. package/README.md +208 -0
  5. package/SECURITY.md +52 -0
  6. package/dist/scripts/api-streaming-smoke.d.ts +1 -0
  7. package/dist/scripts/api-streaming-smoke.js +78 -0
  8. package/dist/scripts/api-streaming-smoke.js.map +1 -0
  9. package/dist/scripts/runtime-default-smoke.d.ts +1 -0
  10. package/dist/scripts/runtime-default-smoke.js +88 -0
  11. package/dist/scripts/runtime-default-smoke.js.map +1 -0
  12. package/dist/scripts/runtime-smoke.d.ts +1 -0
  13. package/dist/scripts/runtime-smoke.js +148 -0
  14. package/dist/scripts/runtime-smoke.js.map +1 -0
  15. package/dist/scripts/smoke.d.ts +1 -0
  16. package/dist/scripts/smoke.js +6156 -0
  17. package/dist/scripts/smoke.js.map +1 -0
  18. package/dist/src/core/cache-manifest.d.ts +22 -0
  19. package/dist/src/core/cache-manifest.js +133 -0
  20. package/dist/src/core/cache-manifest.js.map +1 -0
  21. package/dist/src/core/caller-tokens.d.ts +32 -0
  22. package/dist/src/core/caller-tokens.js +240 -0
  23. package/dist/src/core/caller-tokens.js.map +1 -0
  24. package/dist/src/core/config.d.ts +9 -0
  25. package/dist/src/core/config.js +643 -0
  26. package/dist/src/core/config.js.map +1 -0
  27. package/dist/src/core/convergence.d.ts +5 -0
  28. package/dist/src/core/convergence.js +186 -0
  29. package/dist/src/core/convergence.js.map +1 -0
  30. package/dist/src/core/cost.d.ts +59 -0
  31. package/dist/src/core/cost.js +359 -0
  32. package/dist/src/core/cost.js.map +1 -0
  33. package/dist/src/core/file-config.d.ts +316 -0
  34. package/dist/src/core/file-config.js +490 -0
  35. package/dist/src/core/file-config.js.map +1 -0
  36. package/dist/src/core/orchestrator.d.ts +199 -0
  37. package/dist/src/core/orchestrator.js +3430 -0
  38. package/dist/src/core/orchestrator.js.map +1 -0
  39. package/dist/src/core/prompt-parts.d.ts +58 -0
  40. package/dist/src/core/prompt-parts.js +122 -0
  41. package/dist/src/core/prompt-parts.js.map +1 -0
  42. package/dist/src/core/relator-lottery.d.ts +23 -0
  43. package/dist/src/core/relator-lottery.js +112 -0
  44. package/dist/src/core/relator-lottery.js.map +1 -0
  45. package/dist/src/core/reports.d.ts +2 -0
  46. package/dist/src/core/reports.js +82 -0
  47. package/dist/src/core/reports.js.map +1 -0
  48. package/dist/src/core/session-store.d.ts +149 -0
  49. package/dist/src/core/session-store.js +1923 -0
  50. package/dist/src/core/session-store.js.map +1 -0
  51. package/dist/src/core/status.d.ts +61 -0
  52. package/dist/src/core/status.js +249 -0
  53. package/dist/src/core/status.js.map +1 -0
  54. package/dist/src/core/timeouts.d.ts +2 -0
  55. package/dist/src/core/timeouts.js +3 -0
  56. package/dist/src/core/timeouts.js.map +1 -0
  57. package/dist/src/core/types.d.ts +604 -0
  58. package/dist/src/core/types.js +36 -0
  59. package/dist/src/core/types.js.map +1 -0
  60. package/dist/src/dashboard/server.d.ts +2 -0
  61. package/dist/src/dashboard/server.js +339 -0
  62. package/dist/src/dashboard/server.js.map +1 -0
  63. package/dist/src/mcp/server.d.ts +54 -0
  64. package/dist/src/mcp/server.js +1584 -0
  65. package/dist/src/mcp/server.js.map +1 -0
  66. package/dist/src/observability/logger.d.ts +9 -0
  67. package/dist/src/observability/logger.js +24 -0
  68. package/dist/src/observability/logger.js.map +1 -0
  69. package/dist/src/peers/anthropic.d.ts +14 -0
  70. package/dist/src/peers/anthropic.js +290 -0
  71. package/dist/src/peers/anthropic.js.map +1 -0
  72. package/dist/src/peers/base.d.ts +72 -0
  73. package/dist/src/peers/base.js +416 -0
  74. package/dist/src/peers/base.js.map +1 -0
  75. package/dist/src/peers/deepseek.d.ts +12 -0
  76. package/dist/src/peers/deepseek.js +246 -0
  77. package/dist/src/peers/deepseek.js.map +1 -0
  78. package/dist/src/peers/errors.d.ts +2 -0
  79. package/dist/src/peers/errors.js +185 -0
  80. package/dist/src/peers/errors.js.map +1 -0
  81. package/dist/src/peers/gemini.d.ts +13 -0
  82. package/dist/src/peers/gemini.js +215 -0
  83. package/dist/src/peers/gemini.js.map +1 -0
  84. package/dist/src/peers/grok.d.ts +17 -0
  85. package/dist/src/peers/grok.js +346 -0
  86. package/dist/src/peers/grok.js.map +1 -0
  87. package/dist/src/peers/model-selection.d.ts +4 -0
  88. package/dist/src/peers/model-selection.js +260 -0
  89. package/dist/src/peers/model-selection.js.map +1 -0
  90. package/dist/src/peers/openai.d.ts +14 -0
  91. package/dist/src/peers/openai.js +299 -0
  92. package/dist/src/peers/openai.js.map +1 -0
  93. package/dist/src/peers/perplexity.d.ts +18 -0
  94. package/dist/src/peers/perplexity.js +375 -0
  95. package/dist/src/peers/perplexity.js.map +1 -0
  96. package/dist/src/peers/registry.d.ts +3 -0
  97. package/dist/src/peers/registry.js +77 -0
  98. package/dist/src/peers/registry.js.map +1 -0
  99. package/dist/src/peers/retry.d.ts +2 -0
  100. package/dist/src/peers/retry.js +36 -0
  101. package/dist/src/peers/retry.js.map +1 -0
  102. package/dist/src/peers/stub.d.ts +13 -0
  103. package/dist/src/peers/stub.js +344 -0
  104. package/dist/src/peers/stub.js.map +1 -0
  105. package/dist/src/peers/text.d.ts +18 -0
  106. package/dist/src/peers/text.js +39 -0
  107. package/dist/src/peers/text.js.map +1 -0
  108. package/dist/src/security/redact.d.ts +2 -0
  109. package/dist/src/security/redact.js +128 -0
  110. package/dist/src/security/redact.js.map +1 -0
  111. package/docs/api-keys.md +34 -0
  112. package/docs/architecture.md +118 -0
  113. package/docs/caching.md +135 -0
  114. package/docs/costs.md +40 -0
  115. package/docs/evidence-preflight.md +88 -0
  116. package/docs/github-security-baseline.md +32 -0
  117. package/docs/model-selection.md +105 -0
  118. package/docs/reports/cross-review-v2-api-capability-smoke-2026-04-30.md +354 -0
  119. package/docs/reports/cross-review-v2-format-recovery-findings-2026-04-28.md +223 -0
  120. package/docs/reports/cross-review-v2-official-provider-docs-refresh-2026-05-05.md +60 -0
  121. package/docs/reports/cross-review-v2-token-streaming-smoke-2026-04-30.md +119 -0
  122. package/package.json +88 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,0EAA0E;AAC1E,yEAAyE;AACzE,yEAAyE;AACzE,sEAAsE;AACtE,0EAA0E;AAC1E,0DAA0D;AAC1D,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;IACzC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AACzC,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAChD,MAAM,oBAAoB,GAA2B;IACnD,KAAK,EAAE,qBAAqB;IAC5B,MAAM,EAAE,wBAAwB;IAChC,MAAM,EAAE,qBAAqB;IAC7B,QAAQ,EAAE,uBAAuB;IACjC,iEAAiE;IACjE,wDAAwD;IACxD,+CAA+C;IAC/C,IAAI,EAAE,mBAAmB;IACzB,qEAAqE;IACrE,iEAAiE;IACjE,gEAAgE;IAChE,sEAAsE;IACtE,oEAAoE;IACpE,mCAAmC;IACnC,UAAU,EAAE,yBAAyB;CACtC,CAAC;AAEF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzD,MAAM,YAAY,GAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;IAClD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;IAClC,CAAC,CAAC,YAAY,CAAC;AAEnB,yEAAyE;AACzE,wEAAwE;AACxE,0EAA0E;AAC1E,uEAAuE;AACvE,6DAA6D;AAC7D,wEAAwE;AACxE,wEAAwE;AACxE,wEAAwE;AACxE,wEAAwE;AACxE,sEAAsE;AACtE,yEAAyE;AACzE,wBAAwB;AACxB,IAAI,oBAAoB,GAA+B,IAAI,CAAC;AAE5D,iEAAiE;AACjE,sEAAsE;AACtE,wEAAwE;AACxE,sEAAsE;AACtE,kEAAkE;AAClE,iEAAiE;AACjE,iEAAiE;AACjE,kEAAkE;AAClE,0DAA0D;AAC1D,SAAS,2BAA2B;IAClC,IAAI,oBAAoB;QAAE,OAAO,oBAAoB,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,KAAK,GAAG;QACZ,mBAAmB;QACnB,wEAAwE;KACzE,CAAC;IACF,uEAAuE;IACvE,uDAAuD;IACvD,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBAClD,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;gBACnC,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,+CAA+C;YAC/C,gEAAgE;YAChE,0DAA0D;YAC1D,gDAAgD;YAChD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,yEAAyE,CAC1E,CAAC;gBACF,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;gBACjC,IAAI,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI;oBAAE,SAAS;gBACxC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;YACjE,iDAAiD;QACnD,CAAC;IACH,CAAC;IACD,oBAAoB,GAAG,KAAK,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,2BAA2B,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,aAAa,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;QAClC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,QAAQ,GAAG,KAAK;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACnD,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,QAAgB;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnE,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACpC,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACtC,qEAAqE;QACrE,gEAAgE;QAChE,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;QAClC,gEAAgE;QAChE,iEAAiE;QACjE,qCAAqC;QACrC,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,QAA+C;IAE/C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,IAAI,6CAA6C,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,KAAK,CAAC,WAAW,EAA2C,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,sEAAsE;AACtE,wEAAwE;AACxE,iEAAiE;AACjE,wCAAwC;AACxC,IAAI,uBAAqF,CAAC;AAE1F,MAAM,UAAU,uBAAuB;IAGrC,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,iBAAiB;QAC/B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAEpC,qEAAqE;IACrE,mDAAmD;IACnD,gEAAgE;IAChE,iEAAiE;IACjE,iEAAiE;IACjE,+DAA+D;IAC/D,mEAAmE;IACnE,uBAAuB,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAElE,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,QAAQ,CAAC,wBAAwB,CAAC,IAAI,MAAM;QACvD,IAAI,EAAE,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC;QACzC,cAAc,EAAE,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC;QAC3D,KAAK,EAAE;YACL,YAAY,EAAE,MAAM,CAAC,6BAA6B,EAAE,CAAC,CAAC;YACtD,aAAa,EAAE,MAAM,CAAC,4BAA4B,EAAE,IAAI,CAAC;YACzD,YAAY,EAAE,MAAM,CAAC,2BAA2B,EAAE,KAAK,CAAC;YACxD,UAAU,EAAE,MAAM,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;SAC9D;QACD,MAAM,EAAE;YACN,oBAAoB,EAAE,SAAS,CAAC,mCAAmC,CAAC;YACpE,0BAA0B,EAAE,SAAS,CAAC,yCAAyC,CAAC;YAChF,4BAA4B,EAAE,SAAS,CAAC,2CAA2C,CAAC;YACpF,wBAAwB,EAAE,IAAI;YAC9B,iEAAiE;YACjE,kEAAkE;YAClE,+DAA+D;YAC/D,iEAAiE;YACjE,iEAAiE;YACjE,+CAA+C;YAC/C,kBAAkB,EAAE,MAAM,CAAC,iCAAiC,EAAE,CAAC,CAAC;YAChE,4DAA4D;YAC5D,+DAA+D;YAC/D,iEAAiE;YACjE,iEAAiE;YACjE,+DAA+D;YAC/D,4DAA4D;YAC5D,8DAA8D;YAC9D,yDAAyD;YACzD,+DAA+D;YAC/D,2DAA2D;YAC3D,sBAAsB,EAAE,MAAM,CAAC,qCAAqC,EAAE,CAAC,CAAC;SACzE;QACD,MAAM,EAAE;YACN,cAAc,EAAE,MAAM,CAAC,6BAA6B,EAAE,KAAK,CAAC;YAC5D,sBAAsB,EAAE,MAAM,CAAC,qCAAqC,EAAE,KAAK,CAAC;YAC5E,iBAAiB,EAAE,MAAM,CAAC,gCAAgC,EAAE,MAAM,CAAC;YACnE,eAAe,EAAE,MAAM,CAAC,8BAA8B,EAAE,MAAM,CAAC;YAC/D,gBAAgB,EAAE,MAAM,CAAC,+BAA+B,EAAE,CAAC,CAAC;YAC5D,iBAAiB,EAAE,MAAM,CAAC,gCAAgC,EAAE,CAAC,CAAC;YAC9D,4DAA4D;YAC5D,kEAAkE;YAClE,gEAAgE;YAChE,8DAA8D;YAC9D,kEAAkE;YAClE,oEAAoE;YACpE,mEAAmE;YACnE,2DAA2D;YAC3D,6DAA6D;YAC7D,oEAAoE;YACpE,gEAAgE;YAChE,+DAA+D;YAC/D,2BAA2B,EAAE,MAAM,CAAC,0CAA0C,EAAE,OAAO,CAAC;SACzF;QACD,iBAAiB,EAAE,MAAM,CAAC,gCAAgC,EAAE,yBAAyB,CAAC;QACtF,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,gDAAgD;QAChD,kDAAkD;QAClD,0BAA0B,EAAE,OAAO,CAAC,iCAAiC,EAAE,IAAI,CAAC;QAC5E,SAAS,EAAE;YACT,MAAM,EAAE,OAAO,CAAC,4BAA4B,EAAE,IAAI,CAAC;YACnD,MAAM,EAAE,OAAO,CAAC,4BAA4B,EAAE,IAAI,CAAC;YACnD,YAAY,EAAE,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC;SACzD;QACD,MAAM,EAAE;YACN,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,IAAI,SAAS;YACzD,MAAM,EAAE,QAAQ,CAAC,8BAA8B,CAAC,IAAI,iBAAiB;YACrE,MAAM,EAAE,QAAQ,CAAC,2BAA2B,CAAC,IAAI,gBAAgB;YACjE,QAAQ,EAAE,QAAQ,CAAC,6BAA6B,CAAC,IAAI,iBAAiB;YACtE,iEAAiE;YACjE,mEAAmE;YACnE,8DAA8D;YAC9D,gEAAgE;YAChE,4DAA4D;YAC5D,oEAAoE;YACpE,oEAAoE;YACpE,oEAAoE;YACpE,IAAI,EAAE,QAAQ,CAAC,yBAAyB,CAAC,IAAI,eAAe;YAC5D,6DAA6D;YAC7D,oEAAoE;YACpE,iEAAiE;YACjE,mEAAmE;YACnE,mEAAmE;YACnE,mEAAmE;YACnE,iDAAiD;YACjD,UAAU,EAAE,QAAQ,CAAC,+BAA+B,CAAC,IAAI,qBAAqB;SAC/E;QACD,eAAe,EAAE;YACf,KAAK,EAAE,OAAO,CAAC,qCAAqC,CAAC;YACrD,MAAM,EAAE,OAAO,CAAC,wCAAwC,CAAC;YACzD,MAAM,EAAE,OAAO,CAAC,qCAAqC,CAAC;YACtD,QAAQ,EAAE,OAAO,CAAC,uCAAuC,CAAC;YAC1D,IAAI,EAAE,OAAO,CAAC,mCAAmC,CAAC;YAClD,UAAU,EAAE,OAAO,CAAC,yCAAyC,CAAC;SAC/D;QACD,gBAAgB,EAAE;YAChB,KAAK,EAAE,eAAe,CAAC,sCAAsC,EAAE,OAAO,CAAC;YACvE,MAAM,EAAE,eAAe,CAAC,yCAAyC,EAAE,OAAO,CAAC;YAC3E,QAAQ,EAAE,eAAe,CAAC,wCAAwC,EAAE,KAAK,CAAC;YAC1E,IAAI,EAAE,eAAe,CAAC,oCAAoC,EAAE,OAAO,CAAC;YACpE,sEAAsE;YACtE,8DAA8D;YAC9D,yDAAyD;YACzD,iEAAiE;YACjE,8DAA8D;YAC9D,kEAAkE;YAClE,UAAU,EAAE,eAAe,CAAC,0CAA0C,EAAE,MAAM,CAAC;SAChF;QACD,eAAe,EAAE,EAAE;QACnB,QAAQ,EAAE;YACR,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;YAC1B,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC5B,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC5B,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;YAChC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC;YACxB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC;SACrC;QACD,UAAU,EAAE;YACV,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC;YAC3C,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAC7C,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAC7C,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YACjD,IAAI,EAAE,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC;YACzC,UAAU,EAAE,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC;SACtD;QACD,uBAAuB,EAAE,+BAA+B,EAAE;QAC1D,YAAY,EAAE,qBAAqB,EAAE;QACrC,KAAK,EAAE,eAAe,EAAE;QACxB,UAAU,EAAE,oBAAoB,EAAE;KACnC,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,mEAAmE;AACnE,wEAAwE;AACxE,mEAAmE;AACnE,oEAAoE;AACpE,kEAAkE;AAClE,kEAAkE;AAClE,uEAAuE;AACvE,sEAAsE;AACtE,SAAS;AACT,SAAS,oBAAoB;IAC3B,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,6CAA6C,CAAC,IAAI,EAAE,CAAC;SAC5E,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,IAAI,iBAAiB,GAAmD,KAAK,CAAC;IAC9E,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/C,iBAAiB,GAAG,OAAO,CAAC;IAC9B,CAAC;SAAM,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,CACX,uEAAuE,OAAO,8EAA8E,CAC7J,CAAC;IACJ,CAAC;IACD,OAAO;QACL,mBAAmB,EAAE,iBAAiB;QACtC,cAAc,EAAE,OAAO,CAAC,wCAAwC,EAAE,KAAK,CAAC;KACzE,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,gEAAgE;AAChE,oEAAoE;AACpE,qEAAqE;AACrE,sEAAsE;AACtE,mEAAmE;AACnE,8DAA8D;AAC9D,iEAAiE;AACjE,SAAS,eAAe;IACtB,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,CAAC,QAAQ,CAAC,mCAAmC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAC7F,MAAM,YAAY,GAAG,WAAW,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,WAAW,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;IACrE,kEAAkE;IAClE,sEAAsE;IACtE,8DAA8D;IAC9D,kEAAkE;IAClE,oEAAoE;IACpE,mEAAmE;IACnE,kEAAkE;IAClE,oEAAoE;IACpE,2EAA2E;IAC3E,mEAAmE;IACnE,mEAAmE;IACnE,sEAAsE;IACtE,sCAAsC;IACtC,MAAM,cAAc,GAA4B;QAC9C,KAAK,EAAE,oBAAoB,CAAC,mCAAmC,EAAE,KAAK,CAAC;QACvE,MAAM,EAAE,oBAAoB,CAAC,sCAAsC,EAAE,IAAI,CAAC;QAC1E,MAAM,EAAE,oBAAoB,CAAC,mCAAmC,EAAE,KAAK,CAAC;QACxE,QAAQ,EAAE,oBAAoB,CAAC,qCAAqC,EAAE,KAAK,CAAC;QAC5E,IAAI,EAAE,oBAAoB,CAAC,iCAAiC,EAAE,KAAK,CAAC;QACpE,UAAU,EAAE,oBAAoB,CAAC,uCAAuC,EAAE,KAAK,CAAC;KACjF,CAAC;IACF,OAAO;QACL,cAAc,EAAE,aAAa;QAC7B,OAAO;QACP,GAAG,EAAE;YACH,SAAS,EAAE,YAAY;YACvB,MAAM,EAAE,SAAS;SAClB;QACD,gBAAgB,EAAE,cAAc;KACjC,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,sEAAsE;AACtE,0CAA0C;AAC1C,SAAS,oBAAoB,CAAC,IAAY,EAAE,QAAiB;IAC3D,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxD,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAChC,IAAI,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3D,OAAO,CAAC,KAAK,CACX,0BAA0B,IAAI,KAAK,GAAG,uCAAuC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,yEAAyE,CAC9K,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,QAAqB;IACtD,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAC7C,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,0BAA0B,IAAI,KAAK,GAAG,oCAAoC,QAAQ,+BAA+B,CAClH,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,mEAAmE;AACnE,iEAAiE;AACjE,gEAAgE;AAChE,mEAAmE;AACnE,uEAAuE;AACvE,+DAA+D;AAC/D,sEAAsE;AACtE,wBAAwB;AACxB,SAAS,qBAAqB;IAC5B,MAAM,KAAK,GAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,EAA6B,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,qBAAqB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3D,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,0BAA0B,OAAO,KAAK,GAAG,+GAA+G,CACzJ,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uEAAuE;AACvE,mEAAmE;AACnE,qEAAqE;AACrE,sEAAsE;AACtE,yDAAyD;AACzD,SAAS,+BAA+B;IACtC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,yCAAyC,IAAI,EAAE,CAAC;SAC1E,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrF,MAAM,iBAAiB,GAAG,CACxB,OAAO,CAAC,GAAG,CAAC,oDAAoD,IAAI,EAAE,CACvE,CAAC,IAAI,EAAE,CAAC;IACT,MAAM,SAAS,GAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC5F,MAAM,IAAI,GAAI,SAA+B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,sEAAsE;IACtE,mEAAmE;IACnE,qEAAqE;IACrE,wBAAwB;IACxB,MAAM,cAAc,GAAa,iBAAiB;QAChD,CAAC,CAAC,iBAAiB;aACd,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAE,SAA+B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACnE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAe,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,IAAI,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,oEAAoE;IACpE,gEAAgE;IAChE,0EAA0E;IAC1E,MAAM,MAAM,GACV,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjG,sEAAsE;IACtE,kEAAkE;IAClE,8DAA8D;IAC9D,0EAA0E;IAC1E,oEAAoE;IACpE,wEAAwE;IACxE,yDAAyD;IACzD,iEAAiE;IACjE,6DAA6D;IAC7D,4DAA4D;IAC5D,+DAA+D;IAC/D,gEAAgE;IAChE,iEAAiE;IACjE,4DAA4D;IAC5D,qEAAqE;IACrE,iEAAiE;IACjE,yCAAyC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAC5B,OAAO,CAAC,GAAG,CAAC,8CAA8C,IAAI,GAAG,EACjE,EAAE,CACH,CAAC;IACF,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,kBAAkB,EAAE,eAAe;QACnC,mBAAmB,EAAE,OAAO;QAC5B,mBAAmB,EAAE,OAAO;QAC5B,eAAe,EAAE,cAAc;QAC/B,8BAA8B,EAAE,iBAAiB;KAClD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAiB,EACjB,KAAe,EACf,UAAsC,EAAE;IAExC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,IAAI,MAAM,CAAC,MAAM,CAAC,oBAAoB,IAAI,IAAI,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,4BAA4B,IAAI,IAAI,EAAE,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,0BAA0B,IAAI,IAAI,EAAE,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,wBAAwB,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,yBAAyB,CAAC,CAAC;IAClD,CAAC;IAED,qEAAqE;IACrE,sEAAsE;IACtE,oEAAoE;IACpE,iEAAiE;IACjE,6DAA6D;IAC7D,8DAA8D;IAC9D,oEAAoE;IACpE,qEAAqE;IACrE,6DAA6D;IAC7D,6CAA6C;IAC7C,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC;QACnD,MAAM,eAAe,GACnB,IAAI,KAAK,MAAM;YACb,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,IAAI,KAAK,QAAQ;gBACjB,CAAC,CAAC,6BAA6B;gBAC/B,CAAC,CAAC,0BAA0B,CAAC;QACnC,MAAM,mBAAmB,GACvB,IAAI,KAAK,MAAM;YACb,CAAC,CAAC,wCAAwC;YAC1C,CAAC,CAAC,IAAI,KAAK,QAAQ;gBACjB,CAAC,CAAC,0CAA0C;gBAC5C,CAAC,CAAC,uCAAuC,CAAC;QAChD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,UAAU,IAAI,mBAAmB,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,kEAAkE;AAClE,uEAAuE;AACvE,gCAAgC;AAChC,0EAA0E;AAC1E,sEAAsE;AACtE,4BAA4B;AAC5B,0EAA0E;AAC1E,wEAAwE;AACxE,sDAAsD;AACtD,oEAAoE;AACpE,kEAAkE;AAClE,yEAAyE;AACzE,yEAAyE;AACzE,uEAAuE;AACvE,oEAAoE;AACpE,iBAAiB;AACjB,SAAS,QAAQ,CACf,MAAc;IAEd,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,MAAM,wBAAwB,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,yBAAyB,CAAC,CAAC;IAC7D,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,MAAc,EAAsB,EAAE,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,IAAI,SAAS,CAAC;IAClG,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,MAAM,uBAAuB,CAAC,CAAC;IACnE,MAAM,kBAAkB,GAAG,SAAS,CAAC,GAAG,MAAM,mBAAmB,CAAC,CAAC;IACnE,MAAM,IAAI,GAAuE;QAC/E,iBAAiB,EAAE,KAAK;QACxB,kBAAkB,EAAE,MAAM;KAC3B,CAAC;IACF,MAAM,MAAM,GAAkC;QAC5C,CAAC,4BAA4B,EAAE,gCAAgC,CAAC;QAChE,CAAC,6BAA6B,EAAE,iCAAiC,CAAC;QAClE,CAAC,wBAAwB,EAAE,4BAA4B,CAAC;QACxD,CAAC,yBAAyB,EAAE,6BAA6B,CAAC;QAC1D,CAAC,iCAAiC,EAAE,qCAAqC,CAAC;QAC1E,CAAC,kCAAkC,EAAE,sCAAsC,CAAC;QAC5E,CAAC,yBAAyB,EAAE,6BAA6B,CAAC;QAC1D,CAAC,0BAA0B,EAAE,8BAA8B,CAAC;QAC5D,CAAC,kCAAkC,EAAE,sCAAsC,CAAC;QAC5E,CAAC,mCAAmC,EAAE,uCAAuC,CAAC;QAC9E,CAAC,8BAA8B,EAAE,kCAAkC,CAAC;QACpE,CAAC,+BAA+B,EAAE,mCAAmC,CAAC;QACtE,CAAC,uCAAuC,EAAE,2CAA2C,CAAC;QACtF,CAAC,wCAAwC,EAAE,4CAA4C,CAAC;QACxF,oEAAoE;QACpE,sDAAsD;QACtD,iEAAiE;QACjE,sDAAsD;QACtD,oEAAoE;QACpE,CAAC,0BAA0B,EAAE,uCAAuC,CAAC;QACrE,CAAC,6BAA6B,EAAE,0CAA0C,CAAC;QAC3E,CAAC,2BAA2B,EAAE,wCAAwC,CAAC;QACvE,+DAA+D;QAC/D,gEAAgE;QAChE,mEAAmE;QACnE,CAAC,6BAA6B,EAAE,iCAAiC,CAAC;QAClE;YACE,4CAA4C;YAC5C,gDAAgD;SACjD;QACD,CAAC,yBAAyB,EAAE,sCAAsC,CAAC;KACpE,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YACjB,IAAgC,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,IAAI,kBAAkB,IAAI,IAAI,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,eAAe,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC;QACvC,2EAA2E;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CACX,0BAA0B,MAAM,0BAA0B,OAAO,mEAAmE,CACrI,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ConvergenceResult, PeerFailure, PeerId, PeerResult, ReviewStatus } from "./types.js";
2
+ export declare const SKIP_QUORUM_FLOOR = 2;
3
+ export declare const SKIPPABLE_FAILURE_CLASSES: ReadonlySet<PeerFailure["failure_class"]>;
4
+ export declare function isSkippableFailure(failure: PeerFailure): boolean;
5
+ export declare function checkConvergence(expectedPeers: PeerId[], callerStatus: ReviewStatus, peers: PeerResult[], rejected: PeerFailure[], skipped?: PeerFailure[]): ConvergenceResult;
@@ -0,0 +1,186 @@
1
+ // v3.7.3 (operator no-fallback directive 2026-05-14): when a peer's pinned
2
+ // model is genuinely unavailable, the round SKIPS that peer and converges
3
+ // on the remaining peers, instead of letting the failure block
4
+ // convergence. This is the operator's "pular aquele peer e trabalhar
5
+ // apenas com os outros" path.
6
+ //
7
+ // v3.7.4 (Codex v3.7.3 parecer AUDIT-2): a peer reaches this skip through
8
+ // EITHER of two paths, not just "the user declared no fallback model" —
9
+ // (a) the user declared NO fallback model for that peer, the pinned
10
+ // model hit an infrastructure failure, and retrying the SAME model
11
+ // was exhausted (`auth` / `rate_limit` / `provider_error` /
12
+ // `network` / `timeout`); or
13
+ // (b) the user DID declare a fallback model, it was tried, and the
14
+ // declared fallback chain was itself drained (`fallback_exhausted`).
15
+ // Either way the peer's `failure_class` is in `SKIPPABLE_FAILURE_CLASSES`
16
+ // (classified at the round loop in `orchestrator.ts`); everything else —
17
+ // a peer that DID respond but badly (schema / unparseable /
18
+ // format-recovery-exhausted), the no-fallback-directive's own
19
+ // `silent_model_downgrade`, or a policy/budget/content stop — stays in
20
+ // `rejected` and blocks convergence exactly as before.
21
+ export const SKIP_QUORUM_FLOOR = 2;
22
+ // v3.7.3: failure classes that mean "the peer's model was genuinely
23
+ // UNAVAILABLE" — the call could not reach the provider or get a usable
24
+ // response at all, and the peer has no further model left to fall back
25
+ // to. v3.7.4 (Codex v3.7.3 parecer AUDIT-2): this state is reached two
26
+ // ways — (a) NO fallback model was declared and retrying the SAME pinned
27
+ // model was exhausted (`auth`, `rate_limit`, `provider_error`, `network`,
28
+ // `timeout`); or (b) a fallback model WAS declared, tried, and the
29
+ // declared chain was itself drained (`fallback_exhausted`). Either way
30
+ // these are SKIPPED (round continues on the remaining peers). Everything
31
+ // else stays in `rejected` and blocks convergence: a peer that DID respond
32
+ // but badly (`schema`, `unparseable_after_recovery`,
33
+ // `format_recovery_exhausted`, `stream_buffer_overflow`), the no-fallback
34
+ // directive's own `silent_model_downgrade` (a peer that answered on the
35
+ // WRONG model — must never be silently tolerated), a content stop
36
+ // (`prompt_flagged_by_moderation`), a budget stop (`budget_exceeded`,
37
+ // `budget_preflight`), an operator `cancelled`, or `unknown` (conservative
38
+ // — never skip on an unclassified failure). The round loop in
39
+ // `orchestrator.ts` classifies each `PeerFailure` against this set.
40
+ export const SKIPPABLE_FAILURE_CLASSES = new Set([
41
+ "auth",
42
+ "rate_limit",
43
+ "provider_error",
44
+ "network",
45
+ "timeout",
46
+ "fallback_exhausted",
47
+ ]);
48
+ export function isSkippableFailure(failure) {
49
+ return SKIPPABLE_FAILURE_CLASSES.has(failure.failure_class);
50
+ }
51
+ export function checkConvergence(expectedPeers, callerStatus, peers, rejected,
52
+ // v3.7.3: peers skipped for genuine model-unavailability. Defaults to []
53
+ // so any call site that does not pass it keeps the exact pre-v3.7.3
54
+ // convergence DECISION — on the zero-skip path every branch below
55
+ // reduces to its original form (`effectiveExpected` === `expectedPeers`,
56
+ // the skip-gated floor is not entered, the converged reason string is
57
+ // unchanged). The only output delta is the additive `skipped_peers`
58
+ // field, `[]` when nothing was skipped — a backward-compatible schema
59
+ // addition, not a behavioral change.
60
+ skipped = []) {
61
+ const ready = peers.filter((p) => p.status === "READY").map((p) => p.peer);
62
+ const notReady = peers.filter((p) => p.status === "NOT_READY").map((p) => p.peer);
63
+ // v2.4.0 / audit closure (P3.15): strict equality. Pre-v2.4.0 used
64
+ // `p.status == null` (loose), which would also accept the empty string
65
+ // and the literal `0` if a future code path produced them. ReviewStatus
66
+ // only accepts the three sentinel strings or undefined/null in practice,
67
+ // so anchoring to those values eliminates a class of edge-case false
68
+ // positives.
69
+ const needsEvidence = peers
70
+ .filter((p) => p.status === "NEEDS_EVIDENCE" || p.status === null || p.status === undefined)
71
+ .map((p) => p.peer);
72
+ const rejectedPeers = rejected.map((f) => f.peer);
73
+ const skippedPeers = skipped.map((f) => f.peer);
74
+ // v3.7.3: a skipped peer is removed from the convergence quorum entirely
75
+ // — it neither blocks (the way `rejected` does) nor counts toward the
76
+ // all-peers-READY tally. When `skipped` is empty, `effectiveExpected` ===
77
+ // `expectedPeers`, so every branch below reduces to its pre-v3.7.3 form.
78
+ const effectiveExpected = expectedPeers.filter((p) => !skippedPeers.includes(p));
79
+ const responded = new Set(peers.map((p) => p.peer));
80
+ const missing = expectedPeers.filter((p) => !responded.has(p) && !rejectedPeers.includes(p) && !skippedPeers.includes(p));
81
+ const decisionQuality = Object.fromEntries(peers.map((peer) => [peer.peer, peer.decision_quality]));
82
+ const blockingDetails = [
83
+ ...notReady.map((peer) => `${peer}: NOT_READY`),
84
+ ...needsEvidence.map((peer) => `${peer}: NEEDS_EVIDENCE`),
85
+ ...rejected.map((failure) => `${failure.peer}: ${failure.failure_class}`),
86
+ ...missing.map((peer) => `${peer}: missing response`),
87
+ ];
88
+ if (callerStatus !== "READY") {
89
+ return {
90
+ converged: false,
91
+ reason: `caller_status=${callerStatus}; caller must be READY`,
92
+ ready_peers: ready,
93
+ not_ready_peers: notReady,
94
+ needs_evidence_peers: needsEvidence,
95
+ rejected_peers: [...rejectedPeers, ...missing],
96
+ skipped_peers: skippedPeers,
97
+ decision_quality: decisionQuality,
98
+ blocking_details: [`caller_status=${callerStatus}`, ...blockingDetails],
99
+ };
100
+ }
101
+ if (rejectedPeers.length || missing.length) {
102
+ // v2.5.0 fix (Codex audit, 2026-05-03): replace the generic
103
+ // "one or more peers failed or did not respond" reason — observed 47
104
+ // times in the 253-session corpus, every occurrence equally
105
+ // unhelpful — with a structured per-peer summary. The reason field
106
+ // remains a single string so downstream report consumers don't need
107
+ // a schema migration; the granularity comes from listing peer +
108
+ // failure_class (or `missing`) for every contributor.
109
+ const detail = [
110
+ ...rejected.map((failure) => `${failure.peer}:${failure.failure_class}`),
111
+ ...missing.map((peer) => `${peer}:missing`),
112
+ ].join(", ");
113
+ return {
114
+ converged: false,
115
+ reason: `peers failed or did not respond: ${detail}`,
116
+ ready_peers: ready,
117
+ not_ready_peers: notReady,
118
+ needs_evidence_peers: needsEvidence,
119
+ rejected_peers: [...rejectedPeers, ...missing],
120
+ skipped_peers: skippedPeers,
121
+ decision_quality: decisionQuality,
122
+ blocking_details: blockingDetails,
123
+ };
124
+ }
125
+ if (notReady.length || needsEvidence.length) {
126
+ return {
127
+ converged: false,
128
+ reason: "at least one peer did not declare READY",
129
+ ready_peers: ready,
130
+ not_ready_peers: notReady,
131
+ needs_evidence_peers: needsEvidence,
132
+ rejected_peers: [],
133
+ skipped_peers: skippedPeers,
134
+ decision_quality: decisionQuality,
135
+ blocking_details: blockingDetails,
136
+ };
137
+ }
138
+ // v3.7.3: skip-gated quorum floor. A 0- or 1-peer "unanimous" review is
139
+ // meaningless — skipping must never silently degrade the colegiado below
140
+ // a real cross-check. The floor is GUARDED by `skipped.length > 0`: a
141
+ // zero-skip session keeps its pre-v3.7.3 behavior exactly, including a
142
+ // legitimate single-reviewer-peer session that converges on 1 READY.
143
+ if (skipped.length > 0 && effectiveExpected.length < SKIP_QUORUM_FLOOR) {
144
+ return {
145
+ converged: false,
146
+ reason: `quorum_floor_not_met_after_skips: ${effectiveExpected.length} non-skipped reviewer peer(s) remain after skipping [${skippedPeers.join(", ")}]; at least ${SKIP_QUORUM_FLOOR} are required for a meaningful cross-review`,
147
+ ready_peers: ready,
148
+ not_ready_peers: notReady,
149
+ needs_evidence_peers: needsEvidence,
150
+ rejected_peers: [],
151
+ skipped_peers: skippedPeers,
152
+ decision_quality: decisionQuality,
153
+ blocking_details: [
154
+ ...blockingDetails,
155
+ `quorum_floor_not_met: ${effectiveExpected.length} < ${SKIP_QUORUM_FLOOR} after skips`,
156
+ ],
157
+ };
158
+ }
159
+ if (ready.length !== effectiveExpected.length) {
160
+ return {
161
+ converged: false,
162
+ reason: "not all expected peers responded READY",
163
+ ready_peers: ready,
164
+ not_ready_peers: notReady,
165
+ needs_evidence_peers: needsEvidence,
166
+ rejected_peers: missing,
167
+ skipped_peers: skippedPeers,
168
+ decision_quality: decisionQuality,
169
+ blocking_details: blockingDetails,
170
+ };
171
+ }
172
+ return {
173
+ converged: true,
174
+ reason: skipped.length > 0
175
+ ? `caller and all ${effectiveExpected.length} non-skipped peer(s) declared READY; skipped for model-unavailability: ${skippedPeers.join(", ")}`
176
+ : "caller and all peers declared READY with no rejected peers",
177
+ ready_peers: ready,
178
+ not_ready_peers: [],
179
+ needs_evidence_peers: [],
180
+ rejected_peers: [],
181
+ skipped_peers: skippedPeers,
182
+ decision_quality: decisionQuality,
183
+ blocking_details: [],
184
+ };
185
+ }
186
+ //# sourceMappingURL=convergence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convergence.js","sourceRoot":"","sources":["../../../src/core/convergence.ts"],"names":[],"mappings":"AAEA,2EAA2E;AAC3E,0EAA0E;AAC1E,+DAA+D;AAC/D,qEAAqE;AACrE,8BAA8B;AAC9B,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,sEAAsE;AACtE,yEAAyE;AACzE,kEAAkE;AAClE,mCAAmC;AACnC,qEAAqE;AACrE,2EAA2E;AAC3E,0EAA0E;AAC1E,yEAAyE;AACzE,4DAA4D;AAC5D,8DAA8D;AAC9D,uEAAuE;AACvE,uDAAuD;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,oEAAoE;AACpE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,yEAAyE;AACzE,0EAA0E;AAC1E,mEAAmE;AACnE,uEAAuE;AACvE,yEAAyE;AACzE,2EAA2E;AAC3E,qDAAqD;AACrD,0EAA0E;AAC1E,wEAAwE;AACxE,kEAAkE;AAClE,sEAAsE;AACtE,2EAA2E;AAC3E,8DAA8D;AAC9D,oEAAoE;AACpE,MAAM,CAAC,MAAM,yBAAyB,GAA8C,IAAI,GAAG,CAAC;IAC1F,MAAM;IACN,YAAY;IACZ,gBAAgB;IAChB,SAAS;IACT,SAAS;IACT,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,OAAoB;IACrD,OAAO,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,aAAuB,EACvB,YAA0B,EAC1B,KAAmB,EACnB,QAAuB;AACvB,yEAAyE;AACzE,oEAAoE;AACpE,kEAAkE;AAClE,yEAAyE;AACzE,sEAAsE;AACtE,oEAAoE;AACpE,sEAAsE;AACtE,qCAAqC;AACrC,UAAyB,EAAE;IAE3B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClF,mEAAmE;IACnE,uEAAuE;IACvE,wEAAwE;IACxE,yEAAyE;IACzE,qEAAqE;IACrE,aAAa;IACb,MAAM,aAAa,GAAG,KAAK;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;SAC3F,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChD,yEAAyE;IACzE,sEAAsE;IACtE,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpF,CAAC;IACF,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CACxC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CACf,CAAC;IAC3C,MAAM,eAAe,GAAG;QACtB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,aAAa,CAAC;QAC/C,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,kBAAkB,CAAC;QACzD,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;QACzE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,oBAAoB,CAAC;KACtD,CAAC;IAEF,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,iBAAiB,YAAY,wBAAwB;YAC7D,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,QAAQ;YACzB,oBAAoB,EAAE,aAAa;YACnC,cAAc,EAAE,CAAC,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;YAC9C,aAAa,EAAE,YAAY;YAC3B,gBAAgB,EAAE,eAAe;YACjC,gBAAgB,EAAE,CAAC,iBAAiB,YAAY,EAAE,EAAE,GAAG,eAAe,CAAC;SACxE,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3C,4DAA4D;QAC5D,qEAAqE;QACrE,4DAA4D;QAC5D,mEAAmE;QACnE,oEAAoE;QACpE,gEAAgE;QAChE,sDAAsD;QACtD,MAAM,MAAM,GAAG;YACb,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,UAAU,CAAC;SAC5C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,oCAAoC,MAAM,EAAE;YACpD,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,QAAQ;YACzB,oBAAoB,EAAE,aAAa;YACnC,cAAc,EAAE,CAAC,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;YAC9C,aAAa,EAAE,YAAY;YAC3B,gBAAgB,EAAE,eAAe;YACjC,gBAAgB,EAAE,eAAe;SAClC,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,yCAAyC;YACjD,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,QAAQ;YACzB,oBAAoB,EAAE,aAAa;YACnC,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,gBAAgB,EAAE,eAAe;YACjC,gBAAgB,EAAE,eAAe;SAClC,CAAC;IACJ,CAAC;IACD,wEAAwE;IACxE,yEAAyE;IACzE,sEAAsE;IACtE,uEAAuE;IACvE,qEAAqE;IACrE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACvE,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,qCAAqC,iBAAiB,CAAC,MAAM,wDAAwD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,iBAAiB,6CAA6C;YACjO,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,QAAQ;YACzB,oBAAoB,EAAE,aAAa;YACnC,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,gBAAgB,EAAE,eAAe;YACjC,gBAAgB,EAAE;gBAChB,GAAG,eAAe;gBAClB,yBAAyB,iBAAiB,CAAC,MAAM,MAAM,iBAAiB,cAAc;aACvF;SACF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,wCAAwC;YAChD,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,QAAQ;YACzB,oBAAoB,EAAE,aAAa;YACnC,cAAc,EAAE,OAAO;YACvB,aAAa,EAAE,YAAY;YAC3B,gBAAgB,EAAE,eAAe;YACjC,gBAAgB,EAAE,eAAe;SAClC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,SAAS,EAAE,IAAI;QACf,MAAM,EACJ,OAAO,CAAC,MAAM,GAAG,CAAC;YAChB,CAAC,CAAC,kBAAkB,iBAAiB,CAAC,MAAM,0EAA0E,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC/I,CAAC,CAAC,4DAA4D;QAClE,WAAW,EAAE,KAAK;QAClB,eAAe,EAAE,EAAE;QACnB,oBAAoB,EAAE,EAAE;QACxB,cAAc,EAAE,EAAE;QAClB,aAAa,EAAE,YAAY;QAC3B,gBAAgB,EAAE,eAAe;QACjC,gBAAgB,EAAE,EAAE;KACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { AppConfig, CostEstimate, PeerId, TokenUsage } from "./types.js";
2
+ type CostRate = NonNullable<AppConfig["cost_rates"]["codex"]>;
3
+ type RateCategory = "input" | "output" | "cache_read" | "cache_write";
4
+ /**
5
+ * v2.26.0: select the right per-million USD rate for a given (category,
6
+ * tier, promo-active?) combination, with graceful fallback to the next
7
+ * available rate when fields are absent or expired.
8
+ *
9
+ * Selection priority (each step falls through to the next when the
10
+ * corresponding field is unset OR the condition does not apply):
11
+ * 1. promo_<category>_extended_per_million — IFF in promo period AND
12
+ * large prompt AND field set
13
+ * 2. promo_<category>_per_million — IFF in promo period AND field set
14
+ * 3. <category>_extended_per_million — IFF large prompt AND field set
15
+ * 4. <category>_per_million — base rate, set
16
+ * 5. (cache_read / cache_write only) recurse into "input" category
17
+ * — gracefully degrade to "no cache discount" billing when the
18
+ * operator stops configuring cache rates entirely
19
+ *
20
+ * Fallback semantics intent (operator directive 2026-05-11):
21
+ * - When promo expires (today >= promo_expires_at) or promo fields are
22
+ * unset, automatically use base rates without operator intervention.
23
+ * - When extended-tier rates are unset for a tier-aware provider, use
24
+ * base for ALL prompt sizes (no penalty for missing config).
25
+ * - When cache rates are unset entirely, treat cache tokens as fresh
26
+ * input (no discount, no penalty). The provider may still bill them
27
+ * at a lower rate; we just stop modeling that detail.
28
+ *
29
+ * `now` is injected so tests and FinOps replays can pin the clock.
30
+ */
31
+ export declare function selectRate(rate: CostRate, category: RateCategory, totalInputTokens: number, now?: Date): {
32
+ rate_per_million: number;
33
+ tier_used: NonNullable<CostEstimate["tier_used"]>;
34
+ } | undefined;
35
+ export declare function mergeUsage(items: Array<TokenUsage | undefined>): TokenUsage;
36
+ export declare function estimateCost(config: AppConfig, peer: PeerId, usage?: TokenUsage): CostEstimate;
37
+ export declare function mergeCost(costs: Array<CostEstimate | undefined>): CostEstimate;
38
+ /**
39
+ * v2.21.0 (caching): estimate the savings that flowed from a cache hit
40
+ * vs the fresh input rate for the same peer. Returns { unknown: true }
41
+ * when the rate card has no entry for the provider — operators see
42
+ * "we got a cache hit but cannot price it" instead of a silent zero.
43
+ */
44
+ /**
45
+ * v2.26.0: estimate cache-read savings using ONLY env-configured rates
46
+ * via selectRate(). The legacy `cache-rates.json` fallback was removed
47
+ * per operator directive 2026-05-11 ("nada hardcoded para preços
48
+ * financeiros") — when an operator omits cache rate env vars, the
49
+ * intelligent fallback in selectRate() treats cache reads as priced at
50
+ * the input rate (zero savings) rather than synthesizing a fictional
51
+ * cached rate from a hardcoded JSON. Returns `unknown: true` only when
52
+ * no configRate is provided at all (defensive — `estimateCost()` already
53
+ * short-circuits with "unknown-rate" before reaching this path).
54
+ */
55
+ export declare function estimateCacheSavings(peer: PeerId, usage: TokenUsage, configRate: CostRate | undefined): {
56
+ savings_usd: number;
57
+ unknown: boolean;
58
+ };
59
+ export {};