@sriinnu/kosha-discovery 1.14.0 → 1.15.1

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 (79) hide show
  1. package/README.md +85 -78
  2. package/dist/cli-cmd-doctor.d.ts.map +1 -1
  3. package/dist/cli-cmd-doctor.js +42 -17
  4. package/dist/cli-cmd-doctor.js.map +1 -1
  5. package/dist/cli-cmd-model.d.ts.map +1 -1
  6. package/dist/cli-cmd-model.js +6 -1
  7. package/dist/cli-cmd-model.js.map +1 -1
  8. package/dist/cli-cmd-registry.d.ts +2 -1
  9. package/dist/cli-cmd-registry.d.ts.map +1 -1
  10. package/dist/cli-cmd-registry.js +30 -1
  11. package/dist/cli-cmd-registry.js.map +1 -1
  12. package/dist/cli-commands.d.ts.map +1 -1
  13. package/dist/cli-commands.js +16 -5
  14. package/dist/cli-commands.js.map +1 -1
  15. package/dist/cli-help.d.ts.map +1 -1
  16. package/dist/cli-help.js +4 -1
  17. package/dist/cli-help.js.map +1 -1
  18. package/dist/cli.js +1 -1
  19. package/dist/cli.js.map +1 -1
  20. package/dist/cost.d.ts +16 -1
  21. package/dist/cost.d.ts.map +1 -1
  22. package/dist/cost.js +73 -14
  23. package/dist/cost.js.map +1 -1
  24. package/dist/discovery/snapshot-catalog.d.ts +18 -0
  25. package/dist/discovery/snapshot-catalog.d.ts.map +1 -1
  26. package/dist/discovery/snapshot-catalog.js +83 -3
  27. package/dist/discovery/snapshot-catalog.js.map +1 -1
  28. package/dist/discovery/vercel.d.ts.map +1 -1
  29. package/dist/discovery/vercel.js +19 -0
  30. package/dist/discovery/vercel.js.map +1 -1
  31. package/dist/discovery-contract.d.ts +8 -3
  32. package/dist/discovery-contract.d.ts.map +1 -1
  33. package/dist/discovery-contract.js.map +1 -1
  34. package/dist/index.d.ts +3 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +2 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/lifecycle.d.ts +13 -0
  39. package/dist/lifecycle.d.ts.map +1 -0
  40. package/dist/lifecycle.js +19 -0
  41. package/dist/lifecycle.js.map +1 -0
  42. package/dist/price-trust.d.ts +12 -0
  43. package/dist/price-trust.d.ts.map +1 -1
  44. package/dist/price-trust.js +72 -0
  45. package/dist/price-trust.js.map +1 -1
  46. package/dist/provider-catalog.d.ts +6 -0
  47. package/dist/provider-catalog.d.ts.map +1 -1
  48. package/dist/provider-catalog.js +9 -0
  49. package/dist/provider-catalog.js.map +1 -1
  50. package/dist/proxy.d.ts +9 -0
  51. package/dist/proxy.d.ts.map +1 -1
  52. package/dist/proxy.js +177 -27
  53. package/dist/proxy.js.map +1 -1
  54. package/dist/registry-query.d.ts.map +1 -1
  55. package/dist/registry-query.js +9 -7
  56. package/dist/registry-query.js.map +1 -1
  57. package/dist/registry-routing.d.ts.map +1 -1
  58. package/dist/registry-routing.js +2 -1
  59. package/dist/registry-routing.js.map +1 -1
  60. package/dist/registry-runtime.d.ts +34 -2
  61. package/dist/registry-runtime.d.ts.map +1 -1
  62. package/dist/registry-runtime.js +385 -57
  63. package/dist/registry-runtime.js.map +1 -1
  64. package/dist/registry.d.ts +5 -1
  65. package/dist/registry.d.ts.map +1 -1
  66. package/dist/registry.js +14 -3
  67. package/dist/registry.js.map +1 -1
  68. package/dist/server.d.ts.map +1 -1
  69. package/dist/server.js +16 -3
  70. package/dist/server.js.map +1 -1
  71. package/dist/snapshot-gate.d.ts +50 -0
  72. package/dist/snapshot-gate.d.ts.map +1 -0
  73. package/dist/snapshot-gate.js +128 -0
  74. package/dist/snapshot-gate.js.map +1 -0
  75. package/dist/subscription-plans.d.ts.map +1 -1
  76. package/dist/subscription-plans.js +3 -1
  77. package/dist/subscription-plans.js.map +1 -1
  78. package/package.json +2 -2
  79. package/server.json +2 -2
@@ -58,6 +58,7 @@ export const PROVIDER_CATALOG = [
58
58
  isLocal: false,
59
59
  transport: "native-http",
60
60
  defaultBaseUrl: "https://api.openai.com",
61
+ chatCompletionsPath: "/v1/chat/completions",
61
62
  credentialRequired: true,
62
63
  credentialEnvVars: ["OPENAI_API_KEY"],
63
64
  primaryCredentialEnvVar: "OPENAI_API_KEY",
@@ -137,6 +138,7 @@ export const PROVIDER_CATALOG = [
137
138
  isLocal: true,
138
139
  transport: "native-http",
139
140
  defaultBaseUrl: "http://localhost:11434",
141
+ chatCompletionsPath: "/v1/chat/completions",
140
142
  credentialRequired: false,
141
143
  credentialEnvVars: [],
142
144
  cacheBehavior: {
@@ -154,6 +156,7 @@ export const PROVIDER_CATALOG = [
154
156
  isLocal: true,
155
157
  transport: "openai-compatible-http",
156
158
  defaultBaseUrl: "http://127.0.0.1:8080",
159
+ chatCompletionsPath: "/v1/chat/completions",
157
160
  credentialRequired: false,
158
161
  credentialEnvVars: [],
159
162
  cacheBehavior: {
@@ -171,6 +174,7 @@ export const PROVIDER_CATALOG = [
171
174
  isLocal: true,
172
175
  transport: "openai-compatible-http",
173
176
  defaultBaseUrl: "http://127.0.0.1:1234",
177
+ chatCompletionsPath: "/v1/chat/completions",
174
178
  credentialRequired: false,
175
179
  credentialEnvVars: [],
176
180
  cacheBehavior: {
@@ -188,6 +192,7 @@ export const PROVIDER_CATALOG = [
188
192
  isLocal: true,
189
193
  transport: "openai-compatible-http",
190
194
  defaultBaseUrl: "http://127.0.0.1:8000",
195
+ chatCompletionsPath: "/v1/chat/completions",
191
196
  credentialRequired: false,
192
197
  credentialEnvVars: [],
193
198
  cacheBehavior: {
@@ -384,6 +389,7 @@ export const PROVIDER_CATALOG = [
384
389
  // international key cannot authenticate against; `moonshot-cn` now
385
390
  // carries that host explicitly.
386
391
  defaultBaseUrl: "https://api.moonshot.ai",
392
+ chatCompletionsPath: "/v1/chat/completions",
387
393
  credentialRequired: true,
388
394
  credentialEnvVars: ["MOONSHOT_API_KEY", "KIMI_API_KEY"],
389
395
  primaryCredentialEnvVar: "MOONSHOT_API_KEY",
@@ -430,6 +436,7 @@ export const PROVIDER_CATALOG = [
430
436
  isLocal: false,
431
437
  transport: "openai-compatible-http",
432
438
  defaultBaseUrl: "https://api.moonshot.cn",
439
+ chatCompletionsPath: "/v1/chat/completions",
433
440
  credentialRequired: true,
434
441
  credentialEnvVars: ["MOONSHOT_CN_API_KEY", "MOONSHOT_API_KEY", "KIMI_API_KEY"],
435
442
  primaryCredentialEnvVar: "MOONSHOT_CN_API_KEY",
@@ -450,6 +457,7 @@ export const PROVIDER_CATALOG = [
450
457
  isLocal: false,
451
458
  transport: "openai-compatible-http",
452
459
  defaultBaseUrl: "https://api.minimaxi.com",
460
+ chatCompletionsPath: "/v1/chat/completions",
453
461
  credentialRequired: true,
454
462
  credentialEnvVars: ["MINIMAX_CN_API_KEY", "MINIMAX_API_KEY"],
455
463
  primaryCredentialEnvVar: "MINIMAX_CN_API_KEY",
@@ -740,6 +748,7 @@ export const PROVIDER_CATALOG = [
740
748
  isLocal: false,
741
749
  transport: "openai-compatible-http",
742
750
  defaultBaseUrl: "https://api.minimax.io",
751
+ chatCompletionsPath: "/v1/chat/completions",
743
752
  credentialRequired: true,
744
753
  credentialEnvVars: ["MINIMAX_API_KEY"],
745
754
  primaryCredentialEnvVar: "MINIMAX_API_KEY",
@@ -1 +1 @@
1
- {"version":3,"file":"provider-catalog.js","sourceRoot":"","sources":["../src/provider-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-catalog.js","sourceRoot":"","sources":["../src/provider-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,GAElB,MAAM,yBAAyB,CAAC;AA4EjC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,UAA0C,EAAE,GAAW;IACtF,MAAM,IAAI,GAAG,UAAU,EAAE,mBAAmB,CAAC;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAChE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkC;IAC9D;QACC,UAAU,EAAE,WAAW;QACvB,mBAAmB,EAAE,WAAW;QAChC,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,2BAA2B;QAC3C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,mBAAmB,CAAC;QACxC,uBAAuB,EAAE,mBAAmB;QAC5C,uEAAuE;QACvE,oBAAoB,EAAE,IAAI;QAC1B,aAAa,EAAE;YACd,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACtB,iBAAiB,EAAE,GAAG;YACtB,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,2EAA2E;SAClF;KACD;IACD;QACC,UAAU,EAAE,QAAQ;QACpB,mBAAmB,EAAE,QAAQ;QAC7B,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,wBAAwB;QACxC,mBAAmB,EAAE,sBAAsB;QAC3C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,gBAAgB,CAAC;QACrC,uBAAuB,EAAE,gBAAgB;QACzC,yDAAyD;QACzD,oBAAoB,EAAE,IAAI;QAC1B,aAAa,EAAE;YACd,IAAI,EAAE,WAAW;YACjB,qBAAqB,EAAE,GAAG;YAC1B,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,gFAAgF;SACvF;KACD;IACD;QACC,UAAU,EAAE,QAAQ;QACpB,mBAAmB,EAAE,QAAQ;QAC7B,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,2CAA2C;QAC3D,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;QACvD,uBAAuB,EAAE,gBAAgB;QACzC,aAAa,EAAE;YACd,IAAI,EAAE,UAAU;YAChB,iBAAiB,EAAE,IAAI;YACvB,aAAa,EAAE,OAAO;YACtB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,mGAAmG;SAC1G;KACD;IACD;QACC,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,YAAY;QACjC,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,8BAA8B;QAC9C,kBAAkB,EAAE,KAAK;QACzB,2BAA2B,EAAE,IAAI;QACjC,iBAAiB,EAAE,CAAC,oBAAoB,CAAC;QACzC,uBAAuB,EAAE,oBAAoB;QAC7C,aAAa,EAAE;YACd,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,wFAAwF;SAC/F;KACD;IACD;QACC,UAAU,EAAE,QAAQ;QACpB,mBAAmB,EAAE,QAAQ;QAC7B,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,CAAC;QACvE,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,iCAAiC;QACjD,kBAAkB,EAAE,KAAK;QACzB,2BAA2B,EAAE,IAAI;QACjC,iBAAiB,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;QAC9D,uBAAuB,EAAE,oBAAoB;QAC7C,aAAa,EAAE;YACd,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,gGAAgG;SACvG;KACD;IACD;QACC,UAAU,EAAE,QAAQ;QACpB,mBAAmB,EAAE,QAAQ;QAC7B,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,wBAAwB;QACxC,mBAAmB,EAAE,sBAAsB;QAC3C,kBAAkB,EAAE,KAAK;QACzB,iBAAiB,EAAE,EAAE;QACrB,aAAa,EAAE;YACd,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,sEAAsE;SAC7E;KACD;IACD;QACC,UAAU,EAAE,WAAW;QACvB,mBAAmB,EAAE,WAAW;QAChC,OAAO,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;QAClC,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,uBAAuB;QACvC,mBAAmB,EAAE,sBAAsB;QAC3C,kBAAkB,EAAE,KAAK;QACzB,iBAAiB,EAAE,EAAE;QACrB,aAAa,EAAE;YACd,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,sEAAsE;SAC7E;KACD;IACD;QACC,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,UAAU;QAC/B,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;QACnC,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,uBAAuB;QACvC,mBAAmB,EAAE,sBAAsB;QAC3C,kBAAkB,EAAE,KAAK;QACzB,iBAAiB,EAAE,EAAE;QACrB,aAAa,EAAE;YACd,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,sEAAsE;SAC7E;KACD;IACD;QACC,UAAU,EAAE,MAAM;QAClB,mBAAmB,EAAE,MAAM;QAC3B,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,uBAAuB;QACvC,mBAAmB,EAAE,sBAAsB;QAC3C,kBAAkB,EAAE,KAAK;QACzB,iBAAiB,EAAE,EAAE;QACrB,aAAa,EAAE;YACd,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,sEAAsE;SAC7E;KACD;IACD;QACC,UAAU,EAAE,SAAS;QACrB,mBAAmB,EAAE,SAAS;QAC9B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,WAAW;QACtB,cAAc,EAAE,uCAAuC;QACvD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;QACjE,aAAa,EAAE;YACd,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,mGAAmG;SAC1G;KACD;IACD;QACC,UAAU,EAAE,QAAQ;QACpB,mBAAmB,EAAE,QAAQ;QAC7B,OAAO,EAAE,CAAC,WAAW,CAAC;QACtB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,WAAW;QACtB,cAAc,EAAE,mCAAmC;QACnD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,gCAAgC,EAAE,sBAAsB,CAAC;QAC7E,aAAa,EAAE;YACd,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,gEAAgE;SACvE;KACD;IACD;QACC,UAAU,EAAE,QAAQ;QACpB,mBAAmB,EAAE,QAAQ;QAC7B,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,qCAAqC;QACrD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,gBAAgB,CAAC;QACrC,uBAAuB,EAAE,gBAAgB;KACzC;IACD;QACC,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,UAAU;QAC/B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,6BAA6B;QAC7C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,kBAAkB,CAAC;QACvC,uBAAuB,EAAE,kBAAkB;KAC3C;IACD;QACC,UAAU,EAAE,WAAW;QACvB,mBAAmB,EAAE,WAAW;QAChC,OAAO,EAAE,CAAC,cAAc,CAAC;QACzB,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,uCAAuC;QACvD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,mBAAmB,CAAC;QACxC,uBAAuB,EAAE,mBAAmB;KAC5C;IACD;QACC,UAAU,EAAE,MAAM;QAClB,mBAAmB,EAAE,MAAM;QAC3B,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,gCAAgC;QAChD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,cAAc,CAAC;QACnC,uBAAuB,EAAE,cAAc;QACvC,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;KACjD;IACD;QACC,UAAU,EAAE,SAAS;QACrB,mBAAmB,EAAE,SAAS;QAC9B,OAAO,EAAE,CAAC,YAAY,CAAC;QACvB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,2BAA2B;QAC3C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;QACtC,uBAAuB,EAAE,iBAAiB;QAC1C,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;KACjD;IACD;QACC,UAAU,EAAE,WAAW;QACvB,mBAAmB,EAAE,WAAW;QAChC,OAAO,EAAE,CAAC,YAAY,CAAC;QACvB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,qCAAqC;QACrD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,mBAAmB,CAAC;QACxC,uBAAuB,EAAE,mBAAmB;KAC5C;IACD;QACC,UAAU,EAAE,QAAQ;QACpB,mBAAmB,EAAE,QAAQ;QAC7B,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,wBAAwB;QACxC,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,YAAY,CAAC;QACjC,uBAAuB,EAAE,YAAY;QACrC,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;KACjD;IACD;QACC,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,UAAU;QAC/B,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,4BAA4B;QAC5C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,kBAAkB,CAAC;QACvC,uBAAuB,EAAE,kBAAkB;QAC3C,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;KACjD;IACD;QACC,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,YAAY;QACjC,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,2BAA2B;QAC3C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,oBAAoB,CAAC;QACzC,uBAAuB,EAAE,oBAAoB;QAC7C,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;KACjD;IACD;QACC,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,UAAU;QAC/B,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,0BAA0B;QAC1C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,kBAAkB,CAAC;QACvC,uBAAuB,EAAE,kBAAkB;QAC3C,aAAa,EAAE;YACd,IAAI,EAAE,WAAW;YACjB,qBAAqB,EAAE,IAAI;YAC3B,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,0FAA0F;SACjG;KACD;IACD;QACC,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,UAAU;QAC/B,OAAO,EAAE,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,mEAAmE;QACnE,uEAAuE;QACvE,mEAAmE;QACnE,gCAAgC;QAChC,cAAc,EAAE,yBAAyB;QACzC,mBAAmB,EAAE,sBAAsB;QAC3C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,kBAAkB,EAAE,cAAc,CAAC;QACvD,uBAAuB,EAAE,kBAAkB;QAC3C,mBAAmB,EAAE,EAAE,MAAM,EAAE,wBAAwB,CAAC,UAAU,CAAC,EAAE;QACrE,aAAa,EAAE;YACd,IAAI,EAAE,WAAW;YACjB,qBAAqB,EAAE,IAAI;YAC3B,UAAU,EAAE,IAAI;YAChB,KAAK,EACJ,6GAA6G;SAC9G;KACD;IACD;QACC,UAAU,EAAE,KAAK;QACjB,mBAAmB,EAAE,KAAK;QAC1B,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;QAC9B,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,sCAAsC;QACtD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,aAAa,EAAE,iBAAiB,EAAE,eAAe,CAAC;QACtE,uBAAuB,EAAE,aAAa;KACtC;IACD;QACC,UAAU,EAAE,KAAK;QACjB,mBAAmB,EAAE,KAAK;QAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QACzB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,8BAA8B;QAC9C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,aAAa,CAAC;QAClC,uBAAuB,EAAE,aAAa;KACtC;IACD;QACC,UAAU,EAAE,aAAa;QACzB,mBAAmB,EAAE,aAAa;QAClC,OAAO,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;QACnC,IAAI,EAAE,wBAAwB;QAC9B,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,yBAAyB;QACzC,mBAAmB,EAAE,sBAAsB;QAC3C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,cAAc,CAAC;QAC9E,uBAAuB,EAAE,qBAAqB;QAC9C,mBAAmB,EAAE,EAAE,MAAM,EAAE,wBAAwB,CAAC,UAAU,CAAC,EAAE;QACrE,aAAa,EAAE;YACd,IAAI,EAAE,WAAW;YACjB,qBAAqB,EAAE,IAAI;YAC3B,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,sFAAsF;SAC7F;KACD;IACD;QACC,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,YAAY;QACjC,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;QACnC,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,0BAA0B;QAC1C,mBAAmB,EAAE,sBAAsB;QAC3C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;QAC5D,uBAAuB,EAAE,oBAAoB;KAC7C;IACD;QACC,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,YAAY;QACjC,OAAO,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC;QACpC,IAAI,EAAE,oCAAoC;QAC1C,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,mDAAmD;QACnE,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;QAChE,uBAAuB,EAAE,sBAAsB;QAC/C,mBAAmB,EAAE,EAAE,MAAM,EAAE,wBAAwB,CAAC,SAAS,CAAC,EAAE;QACpE,aAAa,EAAE;YACd,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,iFAAiF;SACxF;KACD;IACD;QACC,UAAU,EAAE,gBAAgB;QAC5B,mBAAmB,EAAE,gBAAgB;QACrC,OAAO,EAAE,CAAC,iBAAiB,CAAC;QAC5B,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,+BAA+B;QAC/C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,CAAC;QACpE,uBAAuB,EAAE,wBAAwB;KACjD;IACD;QACC,UAAU,EAAE,SAAS;QACrB,mBAAmB,EAAE,SAAS;QAC9B,OAAO,EAAE,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,2BAA2B;QAC3C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;QACtC,uBAAuB,EAAE,iBAAiB;KAC1C;IACD;QACC,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,YAAY;QACjC,OAAO,EAAE,CAAC,SAAS,CAAC;QACpB,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,4BAA4B;QAC5C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;QAC5D,uBAAuB,EAAE,oBAAoB;KAC7C;IACD;QACC,UAAU,EAAE,KAAK;QACjB,mBAAmB,EAAE,KAAK;QAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QACzB,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,qBAAqB;QACrC,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;QAClD,uBAAuB,EAAE,aAAa;QACtC,aAAa,EAAE;YACd,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,wGAAwG;SAC/G;KACD;IACD;QACC,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,UAAU;QAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC;QAC3C,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,4BAA4B;QAC5C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,kBAAkB,EAAE,aAAa,CAAC;QACtD,uBAAuB,EAAE,kBAAkB;QAC3C,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,wDAAwD,EAAE;KAClH;IACD;QACC,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,OAAO,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC;QACxC,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,2EAA2E;QAC3F,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;QACjE,uBAAuB,EAAE,gBAAgB;QACzC,aAAa,EAAE;YACd,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,wFAAwF;SAC/F;KACD;IACD;QACC,UAAU,EAAE,SAAS;QACrB,mBAAmB,EAAE,SAAS;QAC9B,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC;QAC7C,IAAI,EAAE,6BAA6B;QACnC,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,wDAAwD;QACxE,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,CAAC;QAC3E,uBAAuB,EAAE,mBAAmB;QAC5C,mBAAmB,EAAE,EAAE,MAAM,EAAE,wBAAwB,CAAC,SAAS,CAAC,EAAE;QACpE,aAAa,EAAE;YACd,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,4FAA4F;SACnG;KACD;IACD;QACC,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,YAAY;QACjC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC1B,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,0CAA0C;QAC1D,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,aAAa,EAAE,oBAAoB,CAAC;QACxD,uBAAuB,EAAE,aAAa;KACtC;IACD;QACC,UAAU,EAAE,WAAW;QACvB,mBAAmB,EAAE,WAAW;QAChC,OAAO,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC;QACrC,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,iCAAiC;QACjD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,mBAAmB,CAAC;QACxC,uBAAuB,EAAE,mBAAmB;KAC5C;IACD;QACC,UAAU,EAAE,MAAM;QAClB,mBAAmB,EAAE,MAAM;QAC3B,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,gCAAgC;QAChD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,cAAc,CAAC;QACnC,uBAAuB,EAAE,cAAc;KACvC;IACD;QACC,UAAU,EAAE,SAAS;QACrB,mBAAmB,EAAE,SAAS;QAC9B,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,iCAAiC;QACjD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;QACtC,uBAAuB,EAAE,iBAAiB;KAC1C;IACD;QACC,UAAU,EAAE,MAAM;QAClB,mBAAmB,EAAE,MAAM;QAC3B,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;QAC5B,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,wBAAwB;QACxC,kBAAkB,EAAE,IAAI;QACxB,sEAAsE;QACtE,2DAA2D;QAC3D,iBAAiB,EAAE,CAAC,oBAAoB,EAAE,cAAc,CAAC;QACzD,uBAAuB,EAAE,oBAAoB;KAC7C;IACD;QACC,UAAU,EAAE,SAAS;QACrB,mBAAmB,EAAE,SAAS;QAC9B,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,iCAAiC;QACjD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;QACtC,uBAAuB,EAAE,iBAAiB;KAC1C;IACD;QACC,UAAU,EAAE,QAAQ;QACpB,mBAAmB,EAAE,QAAQ;QAC7B,OAAO,EAAE,CAAC,sBAAsB,EAAE,cAAc,CAAC;QACjD,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,wCAAwC;QACxD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,gBAAgB,CAAC;QACrC,uBAAuB,EAAE,gBAAgB;KACzC;IACD;QACC,UAAU,EAAE,QAAQ;QACpB,mBAAmB,EAAE,QAAQ;QAC7B,OAAO,EAAE,CAAC,WAAW,CAAC;QACtB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,8BAA8B;QAC9C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,gBAAgB,CAAC;QACrC,uBAAuB,EAAE,gBAAgB;KACzC;IACD;QACC,UAAU,EAAE,aAAa;QACzB,mBAAmB,EAAE,aAAa;QAClC,OAAO,EAAE,CAAC,cAAc,CAAC;QACzB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,gCAAgC;QAChD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,qBAAqB,CAAC;QAC1C,uBAAuB,EAAE,qBAAqB;KAC9C;IACD;QACC,UAAU,EAAE,aAAa;QACzB,mBAAmB,EAAE,aAAa;QAClC,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC;QAC/B,IAAI,EAAE,kCAAkC;QACxC,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,kCAAkC;QAClD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,UAAU,EAAE,qBAAqB,EAAE,wBAAwB,CAAC;QAChF,uBAAuB,EAAE,UAAU;QACnC,aAAa,EAAE;YACd,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,KAAK;YACjB,KAAK,EACJ,gHAAgH;SACjH;KACD;IACD;QACC,UAAU,EAAE,cAAc;QAC1B,mBAAmB,EAAE,cAAc;QACnC,OAAO,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC;QACxC,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,uBAAuB;QACvC,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,gBAAgB,CAAC;QACrC,uBAAuB,EAAE,gBAAgB;KACzC;IACD;QACC,UAAU,EAAE,SAAS;QACrB,mBAAmB,EAAE,SAAS;QAC9B,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,wBAAwB;QACxC,mBAAmB,EAAE,sBAAsB;QAC3C,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;QACtC,uBAAuB,EAAE,iBAAiB;KAC1C;IACD,GAAG,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC;CAChC,CAAC;AAEX,oDAAoD;AACpD,IAAI,aAA8C,CAAC;AAEnD,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,MAAc;IAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;QACpB,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC1D,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,4EAA4E;AAC5E,SAAS,oBAAoB;IAC5B,OAAO,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CACnC,UAA0C,EAC1C,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,SAAS,GACd,UAAU,CAAC,gBAAgB,IAAI,oBAAoB,EAAE;QACpD,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,gBAAgB;QAC9D,CAAC,CAAC,SAAS,CAAC;IACd,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;QACnD,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAsB;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO;QACN,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,mBAAmB,EAAE,IAAI,CAAC,UAAU;QACpC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB;QAC/E,cAAc,EAAE,IAAI,CAAC,OAAO;QAC5B,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,MAAM,CAAC;QACxD,uBAAuB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACjD,gBAAgB,EAAE,IAAI;QACtB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,EAA8B,CAAC;AAC9D,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;IAC3C,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACvD,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACxC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAA8B;IACjE,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,mBAAmB,IAAI,UAAU,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAA8B;IACnE,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACtC,OAAO,CAAC,GAAG,gBAAgB,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAChC,MAA+B,EAC/B,UAA8B;IAE9B,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAExD,MAAM,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CACN,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAChD,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAC1E,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,mCAAmC,CAClD,UAA0F;IAE1F,OAAO,UAAU,CAAC,2BAA2B,IAAI,UAAU,CAAC,kBAAkB,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAA8B;IACtE,OAAO,qBAAqB,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAA8B;IAC7D,OAAO,qBAAqB,CAAC,UAAU,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC;AAC5D,CAAC"}
package/dist/proxy.d.ts CHANGED
@@ -54,6 +54,15 @@ export interface ProxyMetricsSnapshot {
54
54
  * complements the breaker / provider-observation data the registry exposes.
55
55
  */
56
56
  export declare function snapshotProxyMetrics(): ProxyMetricsSnapshot;
57
+ /**
58
+ * Return the upstream URL if-and-only-if its hostname is one we trust.
59
+ * Returns null for an unparseable URL, an exotic protocol, or a hostname
60
+ * outside the catalog allowlist / loopback families. The caller refuses the
61
+ * request in that case rather than dialing a tainted host. Written with
62
+ * explicit `===` checks against literal strings so static taint analysis
63
+ * recognizes this function as a sanitizer.
64
+ */
65
+ export declare function safeUpstreamUrl(rawUrl: string, isLocalProvider: boolean): URL | null;
57
66
  /**
58
67
  * Extract a tenant tag from the request. Two carriers are accepted:
59
68
  *
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAkB1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgDnD,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,CAU3D;AAmND;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAM/G;AAuID,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,IAAI,CAmpB1G"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAqB1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgDnD,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,CAU3D;AA0BD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,GAAG,GAAG,IAAI,CAyBpF;AAyJD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAM/G;AAkND,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,IAAI,CA2tB1G"}
package/dist/proxy.js CHANGED
@@ -38,8 +38,9 @@
38
38
  * @module
39
39
  */
40
40
  import { randomUUID } from "node:crypto";
41
- import { actualCostFromUsage, appendLedgerEntry, estimateRequestCost, readMonthlyBudgetUsd, readSpendForMonth, readTenantBudgetUsd, } from "./cost.js";
41
+ import { actualCostFromUsage, appendLedgerEntry, BudgetConfigError, estimateRequestCost, readMonthlyBudgetUsd, readSpendForMonth, readTenantBudgetUsd, UNTAGGED_TENANT, } from "./cost.js";
42
42
  import { isPlanBilled } from "./discovery/free-tier.js";
43
+ import { isRetired } from "./lifecycle.js";
43
44
  import { isUnverifiedZeroPrice } from "./price-trust.js";
44
45
  import { getProviderDescriptor, listProviderDescriptors, providerExecutionCredentialRequired, } from "./provider-catalog.js";
45
46
  import { parseRouteStrategy } from "./registry-routing.js";
@@ -111,7 +112,7 @@ const ALLOWED_UPSTREAM_HOSTS = (() => {
111
112
  * explicit `===` checks against literal strings so static taint analysis
112
113
  * recognizes this function as a sanitizer.
113
114
  */
114
- function safeUpstreamUrl(rawUrl, isLocalProvider) {
115
+ export function safeUpstreamUrl(rawUrl, isLocalProvider) {
115
116
  let parsed;
116
117
  try {
117
118
  parsed = new URL(rawUrl);
@@ -130,7 +131,8 @@ function safeUpstreamUrl(rawUrl, isLocalProvider) {
130
131
  return parsed;
131
132
  if (host === "127.0.0.1")
132
133
  return parsed;
133
- if (host === "::1")
134
+ // WHATWG URL keeps IPv6 hostnames bracketed: new URL("http://[::1]").hostname === "[::1]".
135
+ if (host === "[::1]")
134
136
  return parsed;
135
137
  if (host === "0.0.0.0")
136
138
  return parsed;
@@ -198,7 +200,7 @@ function parseKoshaHint(model) {
198
200
  function isForwardable(model) {
199
201
  // Retired models are no longer served upstream — never offer them as a
200
202
  // proxy route, even when their transport would otherwise be forwardable.
201
- if (model.status === "retired")
203
+ if (isRetired(model))
202
204
  return false;
203
205
  const descriptor = getProviderDescriptor(model.provider);
204
206
  if (!descriptor)
@@ -357,12 +359,12 @@ function buildUpstreamUrl(model, registry) {
357
359
  else {
358
360
  base = (descriptor?.defaultBaseUrl ?? "").replace(/\/$/, "");
359
361
  }
360
- // Some native/local roots expose the OpenAI-compatible layer under /v1.
361
- if ((model.provider === "openai" || model.provider === "ollama" || model.provider === "llama.cpp") &&
362
- !base.endsWith("/v1")) {
363
- return `${base}/v1/chat/completions`;
364
- }
365
- return `${base}/chat/completions`;
362
+ // Roots that serve chat-completions under /v1 declare it on the descriptor.
363
+ // A configured local base that already ends in /v1 isn't given a second one.
364
+ let path = descriptor?.chatCompletionsPath ?? "/chat/completions";
365
+ if (base.endsWith("/v1") && path.startsWith("/v1/"))
366
+ path = path.slice(3);
367
+ return `${base}${path}`;
366
368
  }
367
369
  /**
368
370
  * Make caller- or upstream-derived text safe to reflect into a response
@@ -381,7 +383,9 @@ function headerSafe(value, max = 400) {
381
383
  * usage seen, or null when the stream never carried one — on every terminal
382
384
  * path, including the client cancelling or the upstream erroring.
383
385
  */
384
- function observeOpenAIStreamUsage(upstream) {
386
+ function observeOpenAIStreamUsage(upstream, options = {}) {
387
+ if (options.dropUsageChunk)
388
+ return relayDroppingUsageChunk(upstream);
385
389
  const decoder = new TextDecoder();
386
390
  let buffer = "";
387
391
  let lastUsage = null;
@@ -430,10 +434,86 @@ function observeOpenAIStreamUsage(upstream) {
430
434
  }));
431
435
  return { stream, usage };
432
436
  }
437
+ /**
438
+ * The stream relay for a request kosha asked usage for on the caller's
439
+ * behalf: re-frames the SSE stream event by event, records the usage, and
440
+ * drops the usage-only chunk (`choices: []` plus `usage`) the caller didn't
441
+ * ask for. Every other event passes through byte for byte.
442
+ */
443
+ function relayDroppingUsageChunk(upstream) {
444
+ const decoder = new TextDecoder();
445
+ const encoder = new TextEncoder();
446
+ let buffer = "";
447
+ let lastUsage = null;
448
+ let resolve;
449
+ const usage = new Promise((r) => {
450
+ resolve = r;
451
+ });
452
+ const keep = (event) => {
453
+ for (const line of event.split(/\r?\n/)) {
454
+ if (!line.startsWith("data:"))
455
+ continue;
456
+ const data = line.slice(5).trim();
457
+ if (!data || data === "[DONE]")
458
+ continue;
459
+ try {
460
+ const evt = JSON.parse(data);
461
+ if (evt && typeof evt === "object" && evt.usage && typeof evt.usage === "object") {
462
+ lastUsage = evt.usage;
463
+ if (Array.isArray(evt.choices) && evt.choices.length === 0)
464
+ return false;
465
+ }
466
+ }
467
+ catch {
468
+ // partial / non-JSON line — pass it through
469
+ }
470
+ }
471
+ return true;
472
+ };
473
+ const emit = (controller, flushAll) => {
474
+ const separator = /\r?\n\r?\n/g;
475
+ let start = 0;
476
+ for (let match = separator.exec(buffer); match; match = separator.exec(buffer)) {
477
+ const end = match.index + match[0].length;
478
+ const event = buffer.slice(start, end);
479
+ if (keep(event))
480
+ controller.enqueue(encoder.encode(event));
481
+ start = end;
482
+ }
483
+ buffer = buffer.slice(start);
484
+ if (flushAll && buffer) {
485
+ if (keep(buffer))
486
+ controller.enqueue(encoder.encode(buffer));
487
+ buffer = "";
488
+ }
489
+ // An event bigger than this has no business in a chat stream: pass it on.
490
+ if (buffer.length > 1_048_576) {
491
+ controller.enqueue(encoder.encode(buffer));
492
+ buffer = "";
493
+ }
494
+ };
495
+ const stream = upstream.pipeThrough(new TransformStream({
496
+ transform(chunk, controller) {
497
+ buffer += decoder.decode(chunk, { stream: true });
498
+ emit(controller, false);
499
+ },
500
+ flush(controller) {
501
+ buffer += decoder.decode();
502
+ emit(controller, true);
503
+ resolve(lastUsage);
504
+ },
505
+ cancel() {
506
+ resolve(lastUsage);
507
+ },
508
+ }));
509
+ return { stream, usage };
510
+ }
433
511
  // ---------------------------------------------------------------------------
434
512
  // Route registration
435
513
  // ---------------------------------------------------------------------------
436
514
  export function registerProxyRoutes(app, registry, shutdownSignal) {
515
+ // Providers that answered 400 to stream_options.include_usage.
516
+ const streamUsageRefused = new Set();
437
517
  // Spend rows that didn't reach the ledger. Budgets are enforced against
438
518
  // the ledger, so while any are held, budgeted requests are refused, like a
439
519
  // failed read. Each budgeted request first writes the held rows again, in
@@ -547,7 +627,7 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
547
627
  // We don't trust the value as authentication — it just buckets ledger
548
628
  // rows and per-tenant budgets. The proxy still resolves real upstream
549
629
  // credentials from env / CLI files as usual.
550
- const tenant = parseTenantTag(ctx.req.header("authorization"), ctx.req.header("x-kosha-tenant"));
630
+ const taggedTenant = parseTenantTag(ctx.req.header("authorization"), ctx.req.header("x-kosha-tenant"));
551
631
  // ── Budget gate ────────────────────────────────────────────────
552
632
  // When a budget is configured we MUST fail closed: if the ledger is
553
633
  // unreadable (permissions, FS error, partial mount) we cannot prove the
@@ -557,8 +637,21 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
557
637
  // The global cap is always checked against TOTAL spend — never a
558
638
  // tenant's slice — so a caller cannot escape it by inventing a fresh
559
639
  // tenant tag per request. A per-tenant cap is an additional gate.
560
- const budget = readMonthlyBudgetUsd();
561
- const tenantBudget = tenant ? readTenantBudgetUsd() : null;
640
+ let budget;
641
+ let tenantBudget;
642
+ try {
643
+ budget = readMonthlyBudgetUsd();
644
+ tenantBudget = readTenantBudgetUsd();
645
+ }
646
+ catch (err) {
647
+ // A budget kosha can't read is not "no budget": refuse until it's fixed.
648
+ const message = err instanceof BudgetConfigError ? err.message : "budget could not be read";
649
+ console.error(`kosha: ${message}`);
650
+ return ctx.json({ error: `budget enforcement unavailable — ${message}` }, 503);
651
+ }
652
+ // Leaving the tenant tag off must not skip a tenant cap: untagged
653
+ // requests share one bucket.
654
+ const tenant = taggedTenant ?? (tenantBudget !== null ? UNTAGGED_TENANT : null);
562
655
  let spent = 0;
563
656
  let tenantSpent = 0;
564
657
  if (budget !== null || tenantBudget !== null) {
@@ -583,13 +676,16 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
583
676
  budgetUsd: budget ?? tenantBudget,
584
677
  }, 503);
585
678
  }
586
- if (budget !== null && spent >= budget) {
679
+ // A $0 budget refuses paid routes one by one below, so free ones
680
+ // (local runtimes, plans you hold) still run; any other reached cap
681
+ // stops everything here.
682
+ if (budget !== null && spent >= budget && (budget > 0 || spent > 0)) {
587
683
  return ctx.json({ error: "monthly budget exceeded", spentUsd: spent, budgetUsd: budget }, 429, {
588
684
  "x-kosha-budget-remaining-usd": Math.max(0, budget - spent).toFixed(4),
589
685
  "x-kosha-budget-usd": budget.toFixed(2),
590
686
  });
591
687
  }
592
- if (tenantBudget !== null && tenantSpent >= tenantBudget) {
688
+ if (tenantBudget !== null && tenantSpent >= tenantBudget && (tenantBudget > 0 || tenantSpent > 0)) {
593
689
  return ctx.json({ error: "tenant monthly budget exceeded", tenant, spentUsd: tenantSpent, budgetUsd: tenantBudget }, 429, {
594
690
  "x-kosha-budget-remaining-usd": Math.max(0, tenantBudget - tenantSpent).toFixed(4),
595
691
  "x-kosha-budget-usd": tenantBudget.toFixed(2),
@@ -618,9 +714,23 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
618
714
  const wantsStream = body.stream === true;
619
715
  const includeUsage = wantsStream && body.stream_options?.include_usage === true;
620
716
  for (const model of candidates) {
621
- const credential = resolver ? await resolver.resolve(model.provider) : fallbackRegistryCredential(model.provider);
622
- const bearerToken = credential.apiKey ?? credential.accessToken;
717
+ // A key in config outranks env vars, exactly as it does for discovery.
718
+ const configuredKey = registry.configuredApiKey(model.provider);
719
+ const credential = resolver
720
+ ? await resolver.resolve(model.provider, configuredKey)
721
+ : fallbackRegistryCredential(model.provider, configuredKey);
623
722
  const descriptor = getProviderDescriptor(model.provider);
723
+ // A key from a shared env var (one vendor's regions and plans read the
724
+ // same one) belongs only to the providers that accepted it at
725
+ // discovery. Sending it, and the prompt, to a sibling region that
726
+ // never accepted it leaks both across a data-residency line.
727
+ if (credential.shared && registry.provider(model.provider)?.authenticated !== true) {
728
+ attemptChain.push(`${model.provider}:unverified-shared-key`);
729
+ continue;
730
+ }
731
+ // A Claude subscription OAuth token is for Claude's own apps, not for
732
+ // a proxy to spend: it is not an API key and isn't forwarded.
733
+ const bearerToken = credential.apiKey ?? (credential.source === "oauth" ? undefined : credential.accessToken);
624
734
  if (descriptor && providerExecutionCredentialRequired(descriptor) && !bearerToken) {
625
735
  const envHint = descriptor.credentialEnvVars.length
626
736
  ? descriptor.credentialEnvVars.join(" or ")
@@ -679,6 +789,11 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
679
789
  let upstreamBody;
680
790
  let upstreamUrlString;
681
791
  let wireNotes = [];
792
+ // Without include_usage an OpenAI stream carries no usage, and the
793
+ // ledger would keep a guess (512 output tokens by default). Ask for
794
+ // it; the usage-only chunk is dropped again if the caller didn't.
795
+ const injectUsage = !usesAnthropicWire && wantsStream && !includeUsage && !streamUsageRefused.has(model.provider);
796
+ let plainBody = null;
682
797
  if (usesAnthropicWire) {
683
798
  // Anthropic /v1/messages: auth via x-api-key + anthropic-version,
684
799
  // body translated from OpenAI chat-completions on the way in,
@@ -720,6 +835,15 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
720
835
  if (bearerToken)
721
836
  upstreamHeaders.authorization = `Bearer ${bearerToken}`;
722
837
  upstreamBody = JSON.stringify({ ...body, model: model.id });
838
+ if (injectUsage) {
839
+ plainBody = upstreamBody;
840
+ const callerOptions = body.stream_options && typeof body.stream_options === "object" ? body.stream_options : {};
841
+ upstreamBody = JSON.stringify({
842
+ ...body,
843
+ model: model.id,
844
+ stream_options: { ...callerOptions, include_usage: true },
845
+ });
846
+ }
723
847
  upstreamUrlString = safeUrl.toString();
724
848
  }
725
849
  fetchAttempts += 1;
@@ -743,6 +867,23 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
743
867
  body: upstreamBody,
744
868
  signal,
745
869
  });
870
+ // A 400 here may be the provider refusing stream_options rather
871
+ // than the caller's request: retry once as the caller sent it. Only
872
+ // when that retry gets past the 400 was it the option, so only then
873
+ // stop asking this provider; a bad request (any caller can send
874
+ // one) used to turn off usage reconciliation until restart.
875
+ if (plainBody !== null && upstream.status === 400) {
876
+ await upstream.body?.cancel().catch(() => { });
877
+ upstream = await fetch(upstreamUrlString, {
878
+ method: "POST",
879
+ headers: upstreamHeaders,
880
+ body: plainBody,
881
+ signal,
882
+ });
883
+ if (upstream.status !== 400)
884
+ streamUsageRefused.add(model.provider);
885
+ plainBody = null;
886
+ }
746
887
  }
747
888
  catch (err) {
748
889
  releaseTimer();
@@ -758,17 +899,26 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
758
899
  }
759
900
  // A retryable upstream failure (5xx) rolls over to the next route,
760
901
  // unless we've spent our fetch budget — then we surface it.
761
- if (upstream.status >= 500 && fetchAttempts < MAX_FETCHES) {
902
+ // A shared key that a plan host listed models for may still be a
903
+ // pay-as-you-go key the plan refuses to bill: then the paid route for
904
+ // the same model should get the request, not the caller a 401.
905
+ const planRefusedSharedKey = (isPlanBilled(model) || descriptor?.subscriptionPlan === true) &&
906
+ credential.shared === true &&
907
+ (upstream.status === 401 || upstream.status === 403);
908
+ if ((upstream.status >= 500 || planRefusedSharedKey) && fetchAttempts < MAX_FETCHES) {
762
909
  releaseTimer();
763
910
  attemptChain.push(`${model.provider}:${upstream.status}`);
764
911
  await upstream.body?.cancel().catch(() => { });
765
- registry.recordProxyOutcome(model.provider, {
766
- ok: false,
767
- status: upstream.status,
768
- latencyMs: Date.now() - attemptStart,
769
- errorType: "transport",
770
- });
771
- bumpProxyMetric(model.provider, false, Date.now() - attemptStart);
912
+ // A refused key says nothing about the provider's health.
913
+ if (!planRefusedSharedKey) {
914
+ registry.recordProxyOutcome(model.provider, {
915
+ ok: false,
916
+ status: upstream.status,
917
+ latencyMs: Date.now() - attemptStart,
918
+ errorType: "transport",
919
+ });
920
+ bumpProxyMetric(model.provider, false, Date.now() - attemptStart);
921
+ }
772
922
  continue;
773
923
  }
774
924
  attemptChain.push(`${model.provider}:${upstream.status}`);
@@ -959,7 +1109,7 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
959
1109
  // usage chunk (present when the caller asked for include_usage).
960
1110
  // Estimate now; reconcile when the stream ends with usage.
961
1111
  recordSpend(null);
962
- const { stream, usage } = observeOpenAIStreamUsage(upstream.body);
1112
+ const { stream, usage } = observeOpenAIStreamUsage(upstream.body, { dropUsageChunk: plainBody !== null });
963
1113
  usage.then((u) => recordAdjustment(actualCostFromUsage(model, u, "openai"))).catch(() => { });
964
1114
  releaseTimer();
965
1115
  return new Response(stream, { status: upstream.status, headers: responseHeaders });