@slkiser/opencode-quota 3.8.1 → 3.8.2

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 (56) hide show
  1. package/dist/lib/api-key-resolver.d.ts +30 -0
  2. package/dist/lib/api-key-resolver.d.ts.map +1 -1
  3. package/dist/lib/api-key-resolver.js +32 -0
  4. package/dist/lib/api-key-resolver.js.map +1 -1
  5. package/dist/lib/chutes-config.d.ts +0 -27
  6. package/dist/lib/chutes-config.d.ts.map +1 -1
  7. package/dist/lib/chutes-config.js +16 -46
  8. package/dist/lib/chutes-config.js.map +1 -1
  9. package/dist/lib/crof-config.d.ts +0 -7
  10. package/dist/lib/crof-config.d.ts.map +1 -1
  11. package/dist/lib/crof-config.js +15 -28
  12. package/dist/lib/crof-config.js.map +1 -1
  13. package/dist/lib/google-antigravity-companion.d.ts.map +1 -1
  14. package/dist/lib/google-antigravity-companion.js +18 -1
  15. package/dist/lib/google-antigravity-companion.js.map +1 -1
  16. package/dist/lib/google-gemini-cli-companion.d.ts.map +1 -1
  17. package/dist/lib/google-gemini-cli-companion.js +18 -1
  18. package/dist/lib/google-gemini-cli-companion.js.map +1 -1
  19. package/dist/lib/nanogpt-config.d.ts +0 -11
  20. package/dist/lib/nanogpt-config.d.ts.map +1 -1
  21. package/dist/lib/nanogpt-config.js +20 -36
  22. package/dist/lib/nanogpt-config.js.map +1 -1
  23. package/dist/lib/quota-runtime-context.d.ts +1 -1
  24. package/dist/lib/quota-runtime-context.d.ts.map +1 -1
  25. package/dist/lib/quota-runtime-context.js +2 -0
  26. package/dist/lib/quota-runtime-context.js.map +1 -1
  27. package/dist/lib/synthetic-config.d.ts +0 -27
  28. package/dist/lib/synthetic-config.d.ts.map +1 -1
  29. package/dist/lib/synthetic-config.js +16 -46
  30. package/dist/lib/synthetic-config.js.map +1 -1
  31. package/dist/providers/chutes.d.ts.map +1 -1
  32. package/dist/providers/chutes.js +11 -14
  33. package/dist/providers/chutes.js.map +1 -1
  34. package/dist/providers/crof.d.ts.map +1 -1
  35. package/dist/providers/crof.js +22 -23
  36. package/dist/providers/crof.js.map +1 -1
  37. package/dist/providers/nanogpt.d.ts.map +1 -1
  38. package/dist/providers/nanogpt.js +56 -56
  39. package/dist/providers/nanogpt.js.map +1 -1
  40. package/dist/providers/openai.d.ts.map +1 -1
  41. package/dist/providers/openai.js +13 -44
  42. package/dist/providers/openai.js.map +1 -1
  43. package/dist/providers/result-helpers.d.ts +21 -0
  44. package/dist/providers/result-helpers.d.ts.map +1 -1
  45. package/dist/providers/result-helpers.js +27 -0
  46. package/dist/providers/result-helpers.js.map +1 -1
  47. package/dist/providers/synthetic.d.ts.map +1 -1
  48. package/dist/providers/synthetic.js +17 -20
  49. package/dist/providers/synthetic.js.map +1 -1
  50. package/dist/providers/zai.d.ts.map +1 -1
  51. package/dist/providers/zai.js +13 -44
  52. package/dist/providers/zai.js.map +1 -1
  53. package/dist/providers/zhipu.d.ts.map +1 -1
  54. package/dist/providers/zhipu.js +13 -44
  55. package/dist/providers/zhipu.js.map +1 -1
  56. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"nanogpt-config.js","sourceRoot":"","sources":["../../src/lib/nanogpt-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,qCAAqC,EACrC,aAAa,GACd,MAAM,uBAAuB,CAAC;AAQ/B,MAAM,wBAAwB,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAU,CAAC;AAClF,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;AAU/D,8CAA8C;AAC9C,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,OAAO,aAAa,CAClB;QACE,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,qBAAqB,EAAE;YAC1D,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,sBAAsB,EAAE;SAC7D;QACD,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAC5B,4BAA4B,CAAC,MAAM,EAAE;YACnC,YAAY,EAAE,qBAAqB;YACnC,cAAc,EAAE,wBAAwB;SACzC,CAAC;QACJ,gBAAgB,EAAE,eAAe;QACjC,iBAAiB,EAAE,gBAAgB;QACnC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,qBAAqB,CAAC;QAC9E,UAAU,EAAE,WAAW;QACvB,mBAAmB,EAAE,qCAAqC;KAC3D,EACD,YAAY,CACb,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC5C,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAM5C,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAmB;QAC/D,WAAW,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;QACpD,OAAO,EAAE,oBAAoB;QAC7B,mBAAmB,EAAE,qCAAqC;KAC3D,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,WAAW;QACd,SAAS;KACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"nanogpt-config.js","sourceRoot":"","sources":["../../src/lib/nanogpt-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAO/B,MAAM,wBAAwB,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAU,CAAC;AAClF,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;AAS/D,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH,MAAM,qBAAqB,GAAG,4BAA4B,CAAmB;IAC3E,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,qBAAqB,EAAE;QAC1D,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,sBAAsB,EAAE;KAC7D;IACD,YAAY,EAAE,qBAAqB;IACnC,cAAc,EAAE,wBAAwB;IACxC,gBAAgB,EAAE,eAAe;IACjC,iBAAiB,EAAE,gBAAgB;IACnC,mBAAmB,EAAE,qCAAqC;IAC1D,IAAI,EAAE;QACJ,QAAQ,EAAE,YAAY;QACtB,UAAU,EAAE,WAAW;KACxB;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,OAAO,qBAAqB,CAAC,OAAO,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,qBAAqB,CAAC,GAAG,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAM5C,OAAO;QACL,GAAG,CAAC,MAAM,qBAAqB,CAAC,WAAW,EAAE,CAAC;QAC9C,SAAS,EAAE,YAAY,EAAE;KAC1B,CAAC;AACJ,CAAC"}
@@ -39,5 +39,5 @@ export declare function createQuotaRuntimeRequestContext(runtime: Pick<QuotaRunt
39
39
  sessionID?: string;
40
40
  sessionMeta?: QuotaSessionModelContext;
41
41
  };
42
- export declare function createQuotaProviderRuntimeContext(runtime: Pick<QuotaRuntimeContext, "client" | "config" | "session">): QuotaProviderContext;
42
+ export declare function createQuotaProviderRuntimeContext(runtime: Pick<QuotaRuntimeContext, "client" | "config" | "session"> & Partial<Pick<QuotaRuntimeContext, "configMeta">>): QuotaProviderContext;
43
43
  //# sourceMappingURL=quota-runtime-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota-runtime-context.d.ts","sourceRoot":"","sources":["../../src/lib/quota-runtime-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,EAAwB,UAAU,EAAE,MAAM,aAAa,CAAC;AAI/D,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5E,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,uBAAuB,CAAC;IAC/B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC9E,kBAAkB,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC;IACvE,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,wBAAwB,CAAC;KACxC,CAAC;CACH;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,MAAM,EAAE,gBAAgB,CAAC;IACzB,kBAAkB,CAAC,EAAE,gCAAgC,CAAC,oBAAoB,CAAC,CAAC;CAC7E,GAAG,OAAO,CAMV;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,mBAAmB,CAAC,CAiC9B;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAC5C;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACxC,CAKA;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,GAClE,oBAAoB,CAoBtB"}
1
+ {"version":3,"file":"quota-runtime-context.d.ts","sourceRoot":"","sources":["../../src/lib/quota-runtime-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,EAAwB,UAAU,EAAE,MAAM,aAAa,CAAC;AAI/D,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5E,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,uBAAuB,CAAC;IAC/B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC9E,kBAAkB,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC;IACvE,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,wBAAwB,CAAC;KACxC,CAAC;CACH;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,MAAM,EAAE,gBAAgB,CAAC;IACzB,kBAAkB,CAAC,EAAE,gCAAgC,CAAC,oBAAoB,CAAC,CAAC;CAC7E,GAAG,OAAO,CAMV;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,mBAAmB,CAAC,CAiC9B;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAC5C;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACxC,CAKA;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,GACjE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC,GACjD,oBAAoB,CAsBtB"}
@@ -53,6 +53,8 @@ export function createQuotaProviderRuntimeContext(runtime) {
53
53
  cursorIncludedApiUsd: runtime.config.cursorIncludedApiUsd,
54
54
  cursorBillingCycleStartDay: runtime.config.cursorBillingCycleStartDay,
55
55
  opencodeGoWindows: runtime.config.opencodeGoWindows,
56
+ requestTimeoutMs: runtime.config.requestTimeoutMs,
57
+ requestTimeoutMsConfigured: Boolean(runtime.configMeta?.settingSources.requestTimeoutMs),
56
58
  onlyCurrentModel: runtime.config.onlyCurrentModel,
57
59
  enabledProviders: runtime.config.enabledProviders === "auto"
58
60
  ? "auto"
@@ -1 +1 @@
1
- {"version":3,"file":"quota-runtime-context.js","sourceRoot":"","sources":["../../src/lib/quota-runtime-context.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAkCpE,MAAM,UAAU,wBAAwB,CAAC,MAGxC;IACC,IAAI,OAAO,MAAM,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC,kBAAkB,KAAK,IAAI,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAwC;IAExC,MAAM,KAAK,GAAG,0BAA0B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,oBAAoB,EAAE,CAAC;IAC/D,MAAM,MAAM,GACV,MAAM,CAAC,MAAM;QACb,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE;YAC3C,aAAa,EAAE,KAAK,CAAC,UAAU;SAChC,CAAC,CAAC,CAAC;IAEN,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACrC,IACE,CAAC,WAAW;QACZ,MAAM,CAAC,SAAS;QAChB,MAAM,CAAC,kBAAkB;QACzB,wBAAwB,CAAC;YACvB,MAAM;YACN,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;SAC9C,CAAC,EACF,CAAC;QACD,WAAW,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK;QACL,MAAM;QACN,UAAU;QACV,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,YAAY,EAAE;QAC7C,OAAO,EAAE;YACP,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW;SACZ;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,OAA6C;IAK7C,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;QACpC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,OAAmE;IAEnE,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE;YACN,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY;YACzC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB;YACvD,qBAAqB,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB;YAC3D,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU;YACrC,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB;YACzD,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,0BAA0B;YACrE,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB;YACnD,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB;YACjD,gBAAgB,EACd,OAAO,CAAC,MAAM,CAAC,gBAAgB,KAAK,MAAM;gBACxC,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAC1C,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO;YAClD,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU;SAC3D;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"quota-runtime-context.js","sourceRoot":"","sources":["../../src/lib/quota-runtime-context.ts"],"names":[],"mappings":"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"}
@@ -1,38 +1,11 @@
1
- /**
2
- * Synthetic API key configuration resolver
3
- *
4
- * Resolution priority (first wins):
5
- * 1. Environment variable: SYNTHETIC_API_KEY
6
- * 2. User/global opencode.json/opencode.jsonc: provider.synthetic.options.apiKey
7
- * - Supports {env:SYNTHETIC_API_KEY} syntax for environment variable references
8
- * 3. auth.json: synthetic.key (legacy/fallback)
9
- */
10
- /** Result of Synthetic API key resolution */
11
1
  export interface SyntheticApiKeyResult {
12
2
  key: string;
13
3
  source: SyntheticKeySource;
14
4
  }
15
- /** Source of the resolved API key */
16
5
  export type SyntheticKeySource = "env:SYNTHETIC_API_KEY" | "opencode.json" | "opencode.jsonc" | "auth.json";
17
6
  export { getGlobalOpencodeConfigCandidatePaths as getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
18
- /**
19
- * Resolve Synthetic API key from all available sources.
20
- *
21
- * Priority (first wins):
22
- * 1. Environment variable: SYNTHETIC_API_KEY
23
- * 2. User/global opencode.json/opencode.jsonc: provider.synthetic.options.apiKey
24
- * 3. auth.json: synthetic.key
25
- *
26
- * @returns API key and source, or null if not found
27
- */
28
7
  export declare function resolveSyntheticApiKey(): Promise<SyntheticApiKeyResult | null>;
29
- /**
30
- * Check if a Synthetic API key is configured
31
- */
32
8
  export declare function hasSyntheticApiKey(): Promise<boolean>;
33
- /**
34
- * Get diagnostic info about Synthetic API key configuration
35
- */
36
9
  export declare function getSyntheticKeyDiagnostics(): Promise<{
37
10
  configured: boolean;
38
11
  source: SyntheticKeySource | null;
@@ -1 +1 @@
1
- {"version":3,"file":"synthetic-config.d.ts","sourceRoot":"","sources":["../../src/lib/synthetic-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,6CAA6C;AAC7C,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAKD,qCAAqC;AACrC,MAAM,MAAM,kBAAkB,GAC1B,uBAAuB,GACvB,eAAe,GACf,gBAAgB,GAChB,WAAW,CAAC;AAGhB,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAiBpF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG3D;AAED;;GAEG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC;IAC1D,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC,CAMD"}
1
+ {"version":3,"file":"synthetic-config.d.ts","sourceRoot":"","sources":["../../src/lib/synthetic-config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAKD,MAAM,MAAM,kBAAkB,GAC1B,uBAAuB,GACvB,eAAe,GACf,gBAAgB,GAChB,WAAW,CAAC;AAEhB,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAejH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAEpF;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE3D;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC;IAC1D,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC,CAED"}
@@ -1,57 +1,27 @@
1
- /**
2
- * Synthetic API key configuration resolver
3
- *
4
- * Resolution priority (first wins):
5
- * 1. Environment variable: SYNTHETIC_API_KEY
6
- * 2. User/global opencode.json/opencode.jsonc: provider.synthetic.options.apiKey
7
- * - Supports {env:SYNTHETIC_API_KEY} syntax for environment variable references
8
- * 3. auth.json: synthetic.key (legacy/fallback)
9
- */
10
1
  import { readAuthFile } from "./opencode-auth.js";
11
- import { extractAuthApiKeyEntry, extractProviderOptionsApiKey, getApiKeyDiagnostics, getGlobalOpencodeConfigCandidatePaths, resolveApiKey, } from "./api-key-resolver.js";
2
+ import { createProviderApiKeyResolver, getGlobalOpencodeConfigCandidatePaths, } from "./api-key-resolver.js";
12
3
  const ALLOWED_SYNTHETIC_ENV_VARS = ["SYNTHETIC_API_KEY"];
13
4
  const SYNTHETIC_PROVIDER_KEYS = ["synthetic"];
14
- // Re-export for consumers that need path info
15
5
  export { getGlobalOpencodeConfigCandidatePaths as getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
16
- /**
17
- * Resolve Synthetic API key from all available sources.
18
- *
19
- * Priority (first wins):
20
- * 1. Environment variable: SYNTHETIC_API_KEY
21
- * 2. User/global opencode.json/opencode.jsonc: provider.synthetic.options.apiKey
22
- * 3. auth.json: synthetic.key
23
- *
24
- * @returns API key and source, or null if not found
25
- */
26
- export async function resolveSyntheticApiKey() {
27
- return resolveApiKey({
28
- envVars: [{ name: "SYNTHETIC_API_KEY", source: "env:SYNTHETIC_API_KEY" }],
29
- extractFromConfig: (config) => extractProviderOptionsApiKey(config, {
30
- providerKeys: SYNTHETIC_PROVIDER_KEYS,
31
- allowedEnvVars: ALLOWED_SYNTHETIC_ENV_VARS,
32
- }),
33
- configJsonSource: "opencode.json",
34
- configJsoncSource: "opencode.jsonc",
35
- extractFromAuth: (auth) => extractAuthApiKeyEntry(auth, SYNTHETIC_PROVIDER_KEYS),
6
+ const syntheticApiKeyResolver = createProviderApiKeyResolver({
7
+ envVars: [{ name: "SYNTHETIC_API_KEY", source: "env:SYNTHETIC_API_KEY" }],
8
+ providerKeys: SYNTHETIC_PROVIDER_KEYS,
9
+ allowedEnvVars: ALLOWED_SYNTHETIC_ENV_VARS,
10
+ configJsonSource: "opencode.json",
11
+ configJsoncSource: "opencode.jsonc",
12
+ getConfigCandidates: getGlobalOpencodeConfigCandidatePaths,
13
+ auth: {
14
+ readAuth: readAuthFile,
36
15
  authSource: "auth.json",
37
- getConfigCandidates: getGlobalOpencodeConfigCandidatePaths,
38
- }, readAuthFile);
16
+ },
17
+ });
18
+ export async function resolveSyntheticApiKey() {
19
+ return syntheticApiKeyResolver.resolve();
39
20
  }
40
- /**
41
- * Check if a Synthetic API key is configured
42
- */
43
21
  export async function hasSyntheticApiKey() {
44
- const result = await resolveSyntheticApiKey();
45
- return result !== null;
22
+ return syntheticApiKeyResolver.has();
46
23
  }
47
- /**
48
- * Get diagnostic info about Synthetic API key configuration
49
- */
50
24
  export async function getSyntheticKeyDiagnostics() {
51
- return getApiKeyDiagnostics({
52
- envVarNames: ["SYNTHETIC_API_KEY"],
53
- resolve: resolveSyntheticApiKey,
54
- getConfigCandidates: getGlobalOpencodeConfigCandidatePaths,
55
- });
25
+ return syntheticApiKeyResolver.diagnostics();
56
26
  }
57
27
  //# sourceMappingURL=synthetic-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"synthetic-config.js","sourceRoot":"","sources":["../../src/lib/synthetic-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,qCAAqC,EACrC,aAAa,GACd,MAAM,uBAAuB,CAAC;AAQ/B,MAAM,0BAA0B,GAAG,CAAC,mBAAmB,CAAU,CAAC;AAClE,MAAM,uBAAuB,GAAG,CAAC,WAAW,CAAU,CAAC;AASvD,8CAA8C;AAC9C,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,OAAO,aAAa,CAClB;QACE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;QACzE,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAC5B,4BAA4B,CAAC,MAAM,EAAE;YACnC,YAAY,EAAE,uBAAuB;YACrC,cAAc,EAAE,0BAA0B;SAC3C,CAAC;QACJ,gBAAgB,EAAE,eAAe;QACjC,iBAAiB,EAAE,gBAAgB;QACnC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,uBAAuB,CAAC;QAChF,UAAU,EAAE,WAAW;QACvB,mBAAmB,EAAE,qCAAqC;KAC3D,EACD,YAAY,CACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC9C,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAK9C,OAAO,oBAAoB,CAAqB;QAC9C,WAAW,EAAE,CAAC,mBAAmB,CAAC;QAClC,OAAO,EAAE,sBAAsB;QAC/B,mBAAmB,EAAE,qCAAqC;KAC3D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"synthetic-config.js","sourceRoot":"","sources":["../../src/lib/synthetic-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAO/B,MAAM,0BAA0B,GAAG,CAAC,mBAAmB,CAAU,CAAC;AAClE,MAAM,uBAAuB,GAAG,CAAC,WAAW,CAAU,CAAC;AAQvD,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH,MAAM,uBAAuB,GAAG,4BAA4B,CAAqB;IAC/E,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IACzE,YAAY,EAAE,uBAAuB;IACrC,cAAc,EAAE,0BAA0B;IAC1C,gBAAgB,EAAE,eAAe;IACjC,iBAAiB,EAAE,gBAAgB;IACnC,mBAAmB,EAAE,qCAAqC;IAC1D,IAAI,EAAE;QACJ,QAAQ,EAAE,YAAY;QACtB,UAAU,EAAE,WAAW;KACxB;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,OAAO,uBAAuB,CAAC,OAAO,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,OAAO,uBAAuB,CAAC,GAAG,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAK9C,OAAO,uBAAuB,CAAC,WAAW,EAAE,CAAC;AAC/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"chutes.d.ts","sourceRoot":"","sources":["../../src/providers/chutes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAA6C,MAAM,mBAAmB,CAAC;AAMlG,eAAO,MAAM,cAAc,EAAE,aAqC5B,CAAC"}
1
+ {"version":3,"file":"chutes.d.ts","sourceRoot":"","sources":["../../src/providers/chutes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAA6C,MAAM,mBAAmB,CAAC;AAMlG,eAAO,MAAM,cAAc,EAAE,aAiC5B,CAAC"}
@@ -4,7 +4,7 @@
4
4
  import { queryChutesQuota, hasChutesApiKeyConfigured } from "../lib/chutes.js";
5
5
  import { isCanonicalProviderAvailable } from "../lib/provider-availability.js";
6
6
  import { modelProviderIncludesAny } from "../lib/provider-model-matching.js";
7
- import { attemptedErrorResult, attemptedResult, notAttemptedResult } from "./result-helpers.js";
7
+ import { attemptedResult, mapNullableProviderResult } from "./result-helpers.js";
8
8
  export const chutesProvider = {
9
9
  id: "chutes",
10
10
  async isAvailable(ctx) {
@@ -22,19 +22,16 @@ export const chutesProvider = {
22
22
  },
23
23
  async fetch(ctx) {
24
24
  const result = await queryChutesQuota({ requestTimeoutMs: ctx.config?.requestTimeoutMs });
25
- if (!result) {
26
- return notAttemptedResult();
27
- }
28
- if (!result.success) {
29
- return attemptedErrorResult("Chutes", result.error);
30
- }
31
- return attemptedResult([
32
- {
33
- name: "Chutes",
34
- percentRemaining: result.percentRemaining,
35
- resetTimeIso: result.resetTimeIso,
36
- },
37
- ]);
25
+ return mapNullableProviderResult(result, {
26
+ errorLabel: "Chutes",
27
+ onSuccess: (result) => attemptedResult([
28
+ {
29
+ name: "Chutes",
30
+ percentRemaining: result.percentRemaining,
31
+ resetTimeIso: result.resetTimeIso,
32
+ },
33
+ ]),
34
+ });
38
35
  },
39
36
  };
40
37
  //# sourceMappingURL=chutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chutes.js","sourceRoot":"","sources":["../../src/providers/chutes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,EAAE,EAAE,QAAQ;IAEZ,KAAK,CAAC,WAAW,CAAC,GAAyB;QACzC,MAAM,iBAAiB,GAAG,MAAM,4BAA4B,CAAC;YAC3D,GAAG;YACH,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;QACH,IAAI,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAEnC,OAAO,MAAM,yBAAyB,EAAE,CAAC;IAC3C,CAAC;IAED,mBAAmB,CAAC,KAAa;QAC/B,OAAO,wBAAwB,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAyB;QACnC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE1F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,kBAAkB,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,eAAe,CAAC;YACrB;gBACE,IAAI,EAAE,QAAQ;gBACd,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"chutes.js","sourceRoot":"","sources":["../../src/providers/chutes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,EAAE,EAAE,QAAQ;IAEZ,KAAK,CAAC,WAAW,CAAC,GAAyB;QACzC,MAAM,iBAAiB,GAAG,MAAM,4BAA4B,CAAC;YAC3D,GAAG;YACH,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;QACH,IAAI,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAEnC,OAAO,MAAM,yBAAyB,EAAE,CAAC;IAC3C,CAAC;IAED,mBAAmB,CAAC,KAAa;QAC/B,OAAO,wBAAwB,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAyB;QACnC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE1F,OAAO,yBAAyB,CAAC,MAAM,EAAE;YACvC,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CACpB,eAAe,CAAC;gBACd;oBACE,IAAI,EAAE,QAAQ;oBACd,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,YAAY,EAAE,MAAM,CAAC,YAAY;iBAClC;aACF,CAAC;SACL,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"crof.d.ts","sourceRoot":"","sources":["../../src/providers/crof.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,aAAa,EAId,MAAM,mBAAmB,CAAC;AAY3B,eAAO,MAAM,YAAY,EAAE,aAgD1B,CAAC"}
1
+ {"version":3,"file":"crof.d.ts","sourceRoot":"","sources":["../../src/providers/crof.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,aAAa,EAId,MAAM,mBAAmB,CAAC;AAY3B,eAAO,MAAM,YAAY,EAAE,aA6C1B,CAAC"}
@@ -4,7 +4,7 @@
4
4
  import { formatCrofCreditsValue, hasCrofApiKeyConfigured, queryCrofQuota } from "../lib/crof.js";
5
5
  import { isCanonicalProviderAvailable } from "../lib/provider-availability.js";
6
6
  import { modelProviderMatchesRuntimeId } from "../lib/provider-model-matching.js";
7
- import { attemptedErrorResult, attemptedResult, notAttemptedResult } from "./result-helpers.js";
7
+ import { attemptedResult, mapNullableProviderResult } from "./result-helpers.js";
8
8
  function formatRequestAmount(value) {
9
9
  if (!Number.isFinite(value))
10
10
  return "0";
@@ -29,29 +29,28 @@ export const crofProvider = {
29
29
  },
30
30
  async fetch(ctx) {
31
31
  const result = await queryCrofQuota({ requestTimeoutMs: ctx.config?.requestTimeoutMs });
32
- if (!result) {
33
- return notAttemptedResult();
34
- }
35
- if (!result.success) {
36
- return attemptedErrorResult("Crof", result.error);
37
- }
38
- const entries = [
39
- {
40
- name: "Crof Requests",
41
- group: "Crof",
42
- label: "Requests:",
43
- right: `${formatRequestAmount(result.usableRequests)}/${formatRequestAmount(result.requestsPlan)}`,
44
- percentRemaining: result.percentRemaining,
32
+ return mapNullableProviderResult(result, {
33
+ errorLabel: "Crof",
34
+ onSuccess: (result) => {
35
+ const entries = [
36
+ {
37
+ name: "Crof Requests",
38
+ group: "Crof",
39
+ label: "Requests:",
40
+ right: `${formatRequestAmount(result.usableRequests)}/${formatRequestAmount(result.requestsPlan)}`,
41
+ percentRemaining: result.percentRemaining,
42
+ },
43
+ {
44
+ kind: "value",
45
+ name: "Crof Credits",
46
+ group: "Crof",
47
+ label: "Credits:",
48
+ value: formatCrofCreditsValue(result.credits),
49
+ },
50
+ ];
51
+ return attemptedResult(entries);
45
52
  },
46
- {
47
- kind: "value",
48
- name: "Crof Credits",
49
- group: "Crof",
50
- label: "Credits:",
51
- value: formatCrofCreditsValue(result.credits),
52
- },
53
- ];
54
- return attemptedResult(entries);
53
+ });
55
54
  },
56
55
  };
57
56
  //# sourceMappingURL=crof.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crof.js","sourceRoot":"","sources":["../../src/providers/crof.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,EAAE,EAAE,MAAM;IAEV,KAAK,CAAC,WAAW,CAAC,GAAyB;QACzC,MAAM,iBAAiB,GAAG,MAAM,4BAA4B,CAAC;YAC3D,GAAG;YACH,UAAU,EAAE,MAAM;YAClB,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;QACH,IAAI,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAEnC,OAAO,MAAM,uBAAuB,EAAE,CAAC;IACzC,CAAC;IAED,mBAAmB,CAAC,KAAa;QAC/B,OAAO,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAyB;QACnC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAExF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,kBAAkB,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,OAAO,GAAsB;YACjC;gBACE,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,WAAW;gBAClB,KAAK,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;gBAClG,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;aAC1C;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC;aAC9C;SACF,CAAC;QAEF,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"crof.js","sourceRoot":"","sources":["../../src/providers/crof.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,EAAE,EAAE,MAAM;IAEV,KAAK,CAAC,WAAW,CAAC,GAAyB;QACzC,MAAM,iBAAiB,GAAG,MAAM,4BAA4B,CAAC;YAC3D,GAAG;YACH,UAAU,EAAE,MAAM;YAClB,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;QACH,IAAI,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAEnC,OAAO,MAAM,uBAAuB,EAAE,CAAC;IACzC,CAAC;IAED,mBAAmB,CAAC,KAAa;QAC/B,OAAO,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAyB;QACnC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAExF,OAAO,yBAAyB,CAAC,MAAM,EAAE;YACvC,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;gBACpB,MAAM,OAAO,GAAsB;oBACjC;wBACE,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE,MAAM;wBACb,KAAK,EAAE,WAAW;wBAClB,KAAK,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;wBAClG,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;qBAC1C;oBACD;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,cAAc;wBACpB,KAAK,EAAE,MAAM;wBACb,KAAK,EAAE,UAAU;wBACjB,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC;qBAC9C;iBACF,CAAC;gBAEF,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"nanogpt.d.ts","sourceRoot":"","sources":["../../src/providers/nanogpt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,aAAa,EAId,MAAM,mBAAmB,CAAC;AAe3B,eAAO,MAAM,eAAe,EAAE,aAqF7B,CAAC"}
1
+ {"version":3,"file":"nanogpt.d.ts","sourceRoot":"","sources":["../../src/providers/nanogpt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,aAAa,EAId,MAAM,mBAAmB,CAAC;AA+E3B,eAAO,MAAM,eAAe,EAAE,aAmB7B,CAAC"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { formatNanoGptBalanceValue, hasNanoGptApiKeyConfigured, queryNanoGptQuota } from "../lib/nanogpt.js";
5
5
  import { modelProviderMatchesRuntimeId } from "../lib/provider-model-matching.js";
6
- import { attemptedErrorResult, attemptedResult, notAttemptedResult } from "./result-helpers.js";
6
+ import { attemptedResult, mapNullableProviderResult } from "./result-helpers.js";
7
7
  function formatUsageAmount(value) {
8
8
  if (!Number.isFinite(value))
9
9
  return "0";
@@ -14,6 +14,57 @@ function formatUsageAmount(value) {
14
14
  function formatUsageRight(window) {
15
15
  return `${formatUsageAmount(window.used)}/${formatUsageAmount(window.limit)}`;
16
16
  }
17
+ function mapNanoGptSuccess(result) {
18
+ const entries = [];
19
+ const errors = result.endpointErrors?.map((entry) => ({
20
+ label: entry.endpoint === "usage" ? "NanoGPT Usage" : "NanoGPT Balance",
21
+ message: entry.message,
22
+ })) ?? [];
23
+ const subscription = result.subscription;
24
+ if (subscription?.daily) {
25
+ entries.push({
26
+ name: "NanoGPT Daily",
27
+ group: "NanoGPT",
28
+ label: "Daily:",
29
+ right: formatUsageRight(subscription.daily),
30
+ percentRemaining: subscription.daily.percentRemaining,
31
+ resetTimeIso: subscription.daily.resetTimeIso,
32
+ });
33
+ }
34
+ if (subscription?.monthly) {
35
+ entries.push({
36
+ name: "NanoGPT Monthly",
37
+ group: "NanoGPT",
38
+ label: "Monthly:",
39
+ right: formatUsageRight(subscription.monthly),
40
+ percentRemaining: subscription.monthly.percentRemaining,
41
+ resetTimeIso: subscription.monthly.resetTimeIso,
42
+ });
43
+ }
44
+ const balanceValue = result.balance ? formatNanoGptBalanceValue(result.balance) : null;
45
+ if (balanceValue) {
46
+ entries.push({
47
+ kind: "value",
48
+ name: "NanoGPT Balance",
49
+ group: "NanoGPT",
50
+ label: "Balance:",
51
+ value: balanceValue,
52
+ });
53
+ }
54
+ if (subscription?.state && subscription.state.toLowerCase() !== "active") {
55
+ errors.push({
56
+ label: "NanoGPT",
57
+ message: `Subscription state: ${subscription.state}`,
58
+ });
59
+ }
60
+ if (entries.length === 0) {
61
+ errors.push({
62
+ label: "NanoGPT",
63
+ message: "No usable NanoGPT quota or balance data",
64
+ });
65
+ }
66
+ return attemptedResult(entries, errors);
67
+ }
17
68
  export const nanoGptProvider = {
18
69
  id: "nanogpt",
19
70
  async isAvailable(_ctx) {
@@ -24,61 +75,10 @@ export const nanoGptProvider = {
24
75
  },
25
76
  async fetch(ctx) {
26
77
  const result = await queryNanoGptQuota({ requestTimeoutMs: ctx.config?.requestTimeoutMs });
27
- if (!result) {
28
- return notAttemptedResult();
29
- }
30
- if (!result.success) {
31
- return attemptedErrorResult("NanoGPT", result.error);
32
- }
33
- const entries = [];
34
- const errors = result.endpointErrors?.map((entry) => ({
35
- label: entry.endpoint === "usage" ? "NanoGPT Usage" : "NanoGPT Balance",
36
- message: entry.message,
37
- })) ?? [];
38
- const subscription = result.subscription;
39
- if (subscription?.daily) {
40
- entries.push({
41
- name: "NanoGPT Daily",
42
- group: "NanoGPT",
43
- label: "Daily:",
44
- right: formatUsageRight(subscription.daily),
45
- percentRemaining: subscription.daily.percentRemaining,
46
- resetTimeIso: subscription.daily.resetTimeIso,
47
- });
48
- }
49
- if (subscription?.monthly) {
50
- entries.push({
51
- name: "NanoGPT Monthly",
52
- group: "NanoGPT",
53
- label: "Monthly:",
54
- right: formatUsageRight(subscription.monthly),
55
- percentRemaining: subscription.monthly.percentRemaining,
56
- resetTimeIso: subscription.monthly.resetTimeIso,
57
- });
58
- }
59
- const balanceValue = result.balance ? formatNanoGptBalanceValue(result.balance) : null;
60
- if (balanceValue) {
61
- entries.push({
62
- kind: "value",
63
- name: "NanoGPT Balance",
64
- group: "NanoGPT",
65
- label: "Balance:",
66
- value: balanceValue,
67
- });
68
- }
69
- if (subscription?.state && subscription.state.toLowerCase() !== "active") {
70
- errors.push({
71
- label: "NanoGPT",
72
- message: `Subscription state: ${subscription.state}`,
73
- });
74
- }
75
- if (entries.length === 0) {
76
- errors.push({
77
- label: "NanoGPT",
78
- message: "No usable NanoGPT quota or balance data",
79
- });
80
- }
81
- return attemptedResult(entries, errors);
78
+ return mapNullableProviderResult(result, {
79
+ errorLabel: "NanoGPT",
80
+ onSuccess: mapNanoGptSuccess,
81
+ });
82
82
  },
83
83
  };
84
84
  //# sourceMappingURL=nanogpt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nanogpt.js","sourceRoot":"","sources":["../../src/providers/nanogpt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nanogpt.js","sourceRoot":"","sources":["../../src/providers/nanogpt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,aAAa,EAId,MAAM,mBAAmB,CAAC;AAU3B,eAAO,MAAM,cAAc,EAAE,aA6E5B,CAAC"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAA6C,MAAM,mBAAmB,CAAC;AAclG,eAAO,MAAM,cAAc,EAAE,aA4C5B,CAAC"}
@@ -4,7 +4,7 @@
4
4
  import { DEFAULT_OPENAI_AUTH_CACHE_MAX_AGE_MS, hasOpenAIOAuthCached, queryOpenAIQuota, } from "../lib/openai.js";
5
5
  import { isCanonicalProviderAvailable } from "../lib/provider-availability.js";
6
6
  import { modelProviderIncludesAny } from "../lib/provider-model-matching.js";
7
- import { attemptedErrorResult, attemptedResult, notAttemptedResult } from "./result-helpers.js";
7
+ import { attemptedResult, groupedPercentWindowEntries, mapNullableProviderResult, } from "./result-helpers.js";
8
8
  export const openaiProvider = {
9
9
  id: "openai",
10
10
  async isAvailable(ctx) {
@@ -24,49 +24,18 @@ export const openaiProvider = {
24
24
  },
25
25
  async fetch(ctx) {
26
26
  const result = await queryOpenAIQuota({ requestTimeoutMs: ctx.config?.requestTimeoutMs });
27
- if (!result) {
28
- return notAttemptedResult();
29
- }
30
- if (!result.success) {
31
- return attemptedErrorResult("OpenAI", result.error);
32
- }
33
- const entries = [];
34
- const group = result.label;
35
- const hourly = result.windows.hourly;
36
- if (hourly) {
37
- entries.push({
38
- name: `${group} 5h`,
39
- group,
40
- label: "5h:",
41
- percentRemaining: hourly.percentRemaining,
42
- resetTimeIso: hourly.resetTimeIso,
43
- });
44
- }
45
- const weekly = result.windows.weekly;
46
- if (weekly) {
47
- entries.push({
48
- name: `${group} Weekly`,
49
- group,
50
- label: "Weekly:",
51
- percentRemaining: weekly.percentRemaining,
52
- resetTimeIso: weekly.resetTimeIso,
53
- });
54
- }
55
- const codeReview = result.windows.codeReview;
56
- if (codeReview) {
57
- entries.push({
58
- name: `${group} Code Review`,
59
- group,
60
- label: "Code Review:",
61
- percentRemaining: codeReview.percentRemaining,
62
- resetTimeIso: codeReview.resetTimeIso,
63
- });
64
- }
65
- if (entries.length === 0) {
66
- entries.push({ name: result.label, percentRemaining: 0 });
67
- }
68
- return attemptedResult(entries, [], {
69
- singleWindowDisplayName: result.label,
27
+ return mapNullableProviderResult(result, {
28
+ errorLabel: "OpenAI",
29
+ onSuccess: (result) => attemptedResult(groupedPercentWindowEntries({
30
+ group: result.label,
31
+ windows: [
32
+ { window: result.windows.hourly, suffix: "5h", label: "5h:" },
33
+ { window: result.windows.weekly, suffix: "Weekly", label: "Weekly:" },
34
+ { window: result.windows.codeReview, suffix: "Code Review", label: "Code Review:" },
35
+ ],
36
+ }), [], {
37
+ singleWindowDisplayName: result.label,
38
+ }),
70
39
  });
71
40
  },
72
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,oCAAoC,EACpC,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,EAAE,EAAE,QAAQ;IAEZ,KAAK,CAAC,WAAW,CAAC,GAAyB;QACzC,gFAAgF;QAChF,MAAM,qBAAqB,GAAG,MAAM,4BAA4B,CAAC;YAC/D,GAAG;YACH,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QAEH,IAAI,qBAAqB,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,oBAAoB,CAAC,EAAE,QAAQ,EAAE,oCAAoC,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,mBAAmB,CAAC,KAAa;QAC/B,OAAO,wBAAwB,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAyB;QACnC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE1F,OAAO,yBAAyB,CAAC,MAAM,EAAE;YACvC,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CACpB,eAAe,CACb,2BAA2B,CAAC;gBAC1B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE;oBACP,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;oBAC7D,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;oBACrE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE;iBACpF;aACF,CAAC,EACF,EAAE,EACF;gBACE,uBAAuB,EAAE,MAAM,CAAC,KAAK;aACtC,CACF;SACJ,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -2,4 +2,25 @@ import type { QuotaProviderPresentation, QuotaProviderResult, QuotaToastEntry, Q
2
2
  export declare function notAttemptedResult(): QuotaProviderResult;
3
3
  export declare function attemptedResult(entries: QuotaToastEntry[], errors?: QuotaToastError[], presentation?: QuotaProviderPresentation): QuotaProviderResult;
4
4
  export declare function attemptedErrorResult(label: string, message: string): QuotaProviderResult;
5
+ export declare function mapNullableProviderResult<TSuccess extends {
6
+ success: true;
7
+ }>(result: TSuccess | {
8
+ success: false;
9
+ error: string;
10
+ } | null, params: {
11
+ errorLabel: string;
12
+ onSuccess: (result: TSuccess) => QuotaProviderResult;
13
+ }): QuotaProviderResult;
14
+ export declare function groupedPercentWindowEntries(params: {
15
+ group: string;
16
+ windows: Array<{
17
+ window?: {
18
+ percentRemaining: number;
19
+ resetTimeIso?: string;
20
+ };
21
+ suffix: string;
22
+ label: string;
23
+ }>;
24
+ fallbackWhenEmpty?: boolean;
25
+ }): QuotaToastEntry[];
5
26
  //# sourceMappingURL=result-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"result-helpers.d.ts","sourceRoot":"","sources":["../../src/providers/result-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,kBAAkB,IAAI,mBAAmB,CAExD;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,eAAe,EAAE,EAC1B,MAAM,GAAE,eAAe,EAAO,EAC9B,YAAY,CAAC,EAAE,yBAAyB,GACvC,mBAAmB,CAOrB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAExF"}
1
+ {"version":3,"file":"result-helpers.d.ts","sourceRoot":"","sources":["../../src/providers/result-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,kBAAkB,IAAI,mBAAmB,CAExD;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,eAAe,EAAE,EAC1B,MAAM,GAAE,eAAe,EAAO,EAC9B,YAAY,CAAC,EAAE,yBAAyB,GACvC,mBAAmB,CAOrB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAExF;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,SAAS;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,EAC1E,MAAM,EAAE,QAAQ,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAC3D,MAAM,EAAE;IACN,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,mBAAmB,CAAC;CACtD,GACA,mBAAmB,CAUrB;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE;YACP,gBAAgB,EAAE,MAAM,CAAC;YACzB,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;QACF,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,eAAe,EAAE,CAoBpB"}