zcode-acp-server 0.69.3 → 0.70.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 (74) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/quota.d.ts +1 -1
  3. package/dist/bin/quota.d.ts.map +1 -1
  4. package/dist/bin/quota.js +23 -5
  5. package/dist/bin/quota.js.map +1 -1
  6. package/dist/code-fingerprint.json +2 -2
  7. package/dist/config/user-config.d.ts +8 -0
  8. package/dist/config/user-config.d.ts.map +1 -1
  9. package/dist/config/user-config.js +2 -0
  10. package/dist/config/user-config.js.map +1 -1
  11. package/dist/handlers/account.d.ts +35 -4
  12. package/dist/handlers/account.d.ts.map +1 -1
  13. package/dist/handlers/account.js +69 -6
  14. package/dist/handlers/account.js.map +1 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +4 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/quota/cliproxy/client.d.ts +45 -0
  19. package/dist/quota/cliproxy/client.d.ts.map +1 -0
  20. package/dist/quota/cliproxy/client.js +134 -0
  21. package/dist/quota/cliproxy/client.js.map +1 -0
  22. package/dist/quota/cliproxy/config.d.ts +24 -0
  23. package/dist/quota/cliproxy/config.d.ts.map +1 -0
  24. package/dist/quota/cliproxy/config.js +27 -0
  25. package/dist/quota/cliproxy/config.js.map +1 -0
  26. package/dist/quota/cliproxy/format.d.ts +18 -0
  27. package/dist/quota/cliproxy/format.d.ts.map +1 -0
  28. package/dist/quota/cliproxy/format.js +64 -0
  29. package/dist/quota/cliproxy/format.js.map +1 -0
  30. package/dist/quota/cliproxy/index.d.ts +34 -0
  31. package/dist/quota/cliproxy/index.d.ts.map +1 -0
  32. package/dist/quota/cliproxy/index.js +110 -0
  33. package/dist/quota/cliproxy/index.js.map +1 -0
  34. package/dist/quota/cliproxy/parse.d.ts +48 -0
  35. package/dist/quota/cliproxy/parse.d.ts.map +1 -0
  36. package/dist/quota/cliproxy/parse.js +193 -0
  37. package/dist/quota/cliproxy/parse.js.map +1 -0
  38. package/dist/quota/cliproxy/types.d.ts +74 -0
  39. package/dist/quota/cliproxy/types.d.ts.map +1 -0
  40. package/dist/quota/cliproxy/types.js +33 -0
  41. package/dist/quota/cliproxy/types.js.map +1 -0
  42. package/dist/quota/combined.d.ts +5 -1
  43. package/dist/quota/combined.d.ts.map +1 -1
  44. package/dist/quota/combined.js +24 -6
  45. package/dist/quota/combined.js.map +1 -1
  46. package/dist/quota/format.d.ts +10 -0
  47. package/dist/quota/format.d.ts.map +1 -1
  48. package/dist/quota/format.js +26 -0
  49. package/dist/quota/format.js.map +1 -1
  50. package/dist/quota/live.d.ts.map +1 -1
  51. package/dist/quota/live.js +12 -5
  52. package/dist/quota/live.js.map +1 -1
  53. package/dist/quota/ollama-cloud/client.d.ts +5 -3
  54. package/dist/quota/ollama-cloud/client.d.ts.map +1 -1
  55. package/dist/quota/ollama-cloud/client.js +5 -3
  56. package/dist/quota/ollama-cloud/client.js.map +1 -1
  57. package/dist/quota/ollama-cloud/format.js +23 -4
  58. package/dist/quota/ollama-cloud/format.js.map +1 -1
  59. package/dist/quota/ollama-cloud/index.d.ts +39 -0
  60. package/dist/quota/ollama-cloud/index.d.ts.map +1 -1
  61. package/dist/quota/ollama-cloud/index.js +117 -6
  62. package/dist/quota/ollama-cloud/index.js.map +1 -1
  63. package/dist/quota/ollama-cloud/types.d.ts +28 -8
  64. package/dist/quota/ollama-cloud/types.d.ts.map +1 -1
  65. package/dist/quota/ollama-cloud/types.js +10 -3
  66. package/dist/quota/ollama-cloud/types.js.map +1 -1
  67. package/dist/quota/thresholds.d.ts +19 -7
  68. package/dist/quota/thresholds.d.ts.map +1 -1
  69. package/dist/quota/thresholds.js +85 -48
  70. package/dist/quota/thresholds.js.map +1 -1
  71. package/dist/remote/hub-server.d.ts.map +1 -1
  72. package/dist/remote/hub-server.js +7 -3
  73. package/dist/remote/hub-server.js.map +1 -1
  74. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/quota/live.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/quota/live.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,11 @@
13
13
  /** The undocumented usage endpoint (verified live 2026-09). */
14
14
  export declare const USAGE_URL = "https://ollama.com/api/usage";
15
15
  /**
16
- * The rolling window we request — the numerator window for the derived
17
- * monthly percent. Not the billing month itself: the API offers no
18
- * billing-period range, so the percent is an approximation near the reset.
16
+ * The rolling window we request. Its `buckets` (day granularity) are the
17
+ * primary source: the monthly percent sums them back to the billing-period
18
+ * start (reset-aware). The window's `totals` are the FALLBACK numerator — the
19
+ * API offers no billing-period range, and 30d is the widest window, so it
20
+ * covers a monthly period start except for at most the period's first day.
19
21
  */
20
22
  export declare const USAGE_RANGE = "30d";
21
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,+DAA+D;AAC/D,eAAO,MAAM,SAAS,iCAAiC,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,WAAW,QAAQ,CAAC;AAEjC;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAW3C;AAED,wEAAwE;AACxE,eAAO,MAAM,MAAM,8BAA8B,CAAC;AAElD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAa3C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,+DAA+D;AAC/D,eAAO,MAAM,SAAS,iCAAiC,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,QAAQ,CAAC;AAEjC;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAW3C;AAED,wEAAwE;AACxE,eAAO,MAAM,MAAM,8BAA8B,CAAC;AAElD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAa3C"}
@@ -15,9 +15,11 @@ const TIMEOUT_MS = 10_000;
15
15
  /** The undocumented usage endpoint (verified live 2026-09). */
16
16
  export const USAGE_URL = "https://ollama.com/api/usage";
17
17
  /**
18
- * The rolling window we request — the numerator window for the derived
19
- * monthly percent. Not the billing month itself: the API offers no
20
- * billing-period range, so the percent is an approximation near the reset.
18
+ * The rolling window we request. Its `buckets` (day granularity) are the
19
+ * primary source: the monthly percent sums them back to the billing-period
20
+ * start (reset-aware). The window's `totals` are the FALLBACK numerator — the
21
+ * API offers no billing-period range, and 30d is the widest window, so it
22
+ * covers a monthly period start except for at most the period's first day.
21
23
  */
22
24
  export const USAGE_RANGE = "30d";
23
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gEAAgE;AAChE,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,+DAA+D;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAG,8BAA8B,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,YAAqC,UAAU,CAAC,KAAK;IAErD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,SAAS,UAAU,WAAW,EAAE,EAAE;QAChE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,EAAE;YACjC,MAAM,EAAE,kBAAkB;SAC3B;QACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;KACxC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,MAAM,GAAG,2BAA2B,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAc,EACd,YAAqC,UAAU,CAAC,KAAK;IAErD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE;QACnC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,EAAE;YACjC,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;KACxC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gEAAgE;AAChE,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,+DAA+D;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAG,8BAA8B,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,YAAqC,UAAU,CAAC,KAAK;IAErD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,SAAS,UAAU,WAAW,EAAE,EAAE;QAChE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,EAAE;YACjC,MAAM,EAAE,kBAAkB;SAC3B;QACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;KACxC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,MAAM,GAAG,2BAA2B,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAc,EACd,YAAqC,UAAU,CAAC,KAAK;IAErD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE;QACnC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,EAAE;YACjC,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;KACxC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC"}
@@ -59,12 +59,24 @@ export function formatOcSection(result, color = false) {
59
59
  return { header, body };
60
60
  }
61
61
  /**
62
- * Spend detail line for the analytics API (2026-10+): `usage` spend over the
63
- * rolling 30d window, with the plan credit as context when known. Indented to
64
- * sit under the window bars. `null` when the result carries no spend (legacy
65
- * response shape) — the card then stays exactly as before.
62
+ * Spend detail line for the analytics API (2026-10+). Prefers the
63
+ * BILLING-PERIOD spend (`since MM-DD`, matching the Month bar's numerator);
64
+ * the rolling-30d form only when the period buckets were unavailable. `null`
65
+ * when the result carries no spend (legacy response shape) — the card then
66
+ * stays exactly as before.
66
67
  */
67
68
  function formatOcSpendLine(result) {
69
+ if (result.periodUsageUsd !== undefined) {
70
+ const spend = `$${result.periodUsageUsd.toFixed(2)}`;
71
+ const of = result.creditUsd !== undefined ? ` of $${result.creditUsd}` : " spent";
72
+ const req = result.periodRequestCount !== undefined
73
+ ? ` · ${result.periodRequestCount.toLocaleString("en-US")} req`
74
+ : "";
75
+ const since = result.periodStartAt !== undefined
76
+ ? ` (since ${formatPeriodDate(result.periodStartAt)})`
77
+ : "";
78
+ return ` ${spend}${of}${req}${since}`;
79
+ }
68
80
  if (result.usageUsd === undefined)
69
81
  return null;
70
82
  const spend = `$${result.usageUsd.toFixed(2)}`;
@@ -74,4 +86,11 @@ function formatOcSpendLine(result) {
74
86
  : "";
75
87
  return ` ${spend}${of}${req} (30d)`;
76
88
  }
89
+ /** `MM-DD` (local time, same clock as the reset stamp) for the period anchor. */
90
+ function formatPeriodDate(ms) {
91
+ const d = new Date(ms);
92
+ const mm = String(d.getMonth() + 1).padStart(2, "0");
93
+ const dd = String(d.getDate()).padStart(2, "0");
94
+ return `${mm}-${dd}`;
95
+ }
77
96
  //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/format.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,45 @@ export declare const PLAN_CREDIT_USD: Record<string, number>;
39
39
  * the target month's length (a 31st signup rolls to the 30th/28th).
40
40
  */
41
41
  export declare function nextMonthlyAnniversary(createdMs: number, now: number): number;
42
+ /**
43
+ * Latest monthly anniversary of `createdMs` at or before `now` (NaN when none
44
+ * exists — e.g. a malformed future-dated creation). The START of the current
45
+ * billing period; together with {@link nextMonthlyAnniversary} it brackets
46
+ * [periodStart, nextReset).
47
+ */
48
+ export declare function prevMonthlyAnniversary(createdMs: number, now: number): number;
49
+ /**
50
+ * One month before `ms`, clamped to the previous month's last day (a Mar-31
51
+ * period end clamps its start to Feb 28/29). `Date.UTC` normalizes
52
+ * `month - 1`, so January flows into December of the previous year.
53
+ */
54
+ export declare function subtractOneMonthClamped(ms: number): number;
55
+ /** A raw daily bucket from the analytics response (keys observed 2026-10). */
56
+ export interface OcUsageBucket {
57
+ from?: unknown;
58
+ until?: unknown;
59
+ usage_usd?: unknown;
60
+ request_count?: unknown;
61
+ }
62
+ /** Spend summed from the daily buckets over the current billing period. */
63
+ export interface OcPeriodSpend {
64
+ usageUsd: number;
65
+ requestCount?: number;
66
+ }
67
+ /**
68
+ * Sum the daily buckets' spend over `[periodStartAt, ∞)` — the honest monthly
69
+ * numerator: a reset empties the window instead of keeping the rolling-30d
70
+ * spend (observed 2026-10-14: 81% shown two days past the reset vs 1.4%
71
+ * actual). The bucket straddling the period start is split proportionally by
72
+ * its time overlap (day granularity is all the API offers).
73
+ *
74
+ * Returns `undefined` — the caller then falls back to the rolling-30d
75
+ * `totals.usage_usd` — when no `periodStartAt` is known, no bucket parses, or
76
+ * the buckets do not reach back to the period start (the 30d window opens up
77
+ * to a day later than a monthly period start, so the tail day of the period
78
+ * can sit outside the response).
79
+ */
80
+ export declare function periodSpend(buckets: OcUsageBucket[], periodStartAt: number | undefined): OcPeriodSpend | undefined;
42
81
  /**
43
82
  * Query Ollama Cloud usage and return a normalised {@link OcQueryResult}.
44
83
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,QAAgB,CAAC;AAC/C;;wBAEwB;AACxB,eAAO,MAAM,cAAc,QAAiB,CAAC;AAG7C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjD;AAsDD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIlD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAqB7E;AAoBD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC,CAuF3D;AAGD,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,QAAgB,CAAC;AAC/C;;wBAEwB;AACxB,eAAO,MAAM,cAAc,QAAiB,CAAC;AAG7C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjD;AAkED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIlD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAqB7E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAmB7E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAY1D;AAED,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,EAAE,EACxB,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,aAAa,GAAG,SAAS,CAiC3B;AAoBD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC,CAsG3D;AAGD,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -49,8 +49,13 @@ async function lookupAccountInfo(apiKey) {
49
49
  period.valid;
50
50
  if (valid !== false && typeof raw === "string") {
51
51
  const ms = Date.parse(raw);
52
- if (Number.isFinite(ms))
52
+ if (Number.isFinite(ms)) {
53
53
  info.monthlyResetAt = ms;
54
+ // The billing period runs up TO the (future) period end; its start
55
+ // sits one month earlier, clamped to that month's last day.
56
+ if (ms > Date.now())
57
+ info.periodStartAt = subtractOneMonthClamped(ms);
58
+ }
54
59
  }
55
60
  }
56
61
  if (info.monthlyResetAt === undefined) {
@@ -58,7 +63,11 @@ async function lookupAccountInfo(apiKey) {
58
63
  if (typeof createdRaw === "string") {
59
64
  const created = Date.parse(createdRaw);
60
65
  if (Number.isFinite(created)) {
61
- info.monthlyResetAt = nextMonthlyAnniversary(created, Date.now());
66
+ const now = Date.now();
67
+ info.monthlyResetAt = nextMonthlyAnniversary(created, now);
68
+ const start = prevMonthlyAnniversary(created, now);
69
+ if (Number.isFinite(start))
70
+ info.periodStartAt = start;
62
71
  }
63
72
  }
64
73
  }
@@ -106,6 +115,94 @@ export function nextMonthlyAnniversary(createdMs, now) {
106
115
  }
107
116
  return Number.NaN;
108
117
  }
118
+ /**
119
+ * Latest monthly anniversary of `createdMs` at or before `now` (NaN when none
120
+ * exists — e.g. a malformed future-dated creation). The START of the current
121
+ * billing period; together with {@link nextMonthlyAnniversary} it brackets
122
+ * [periodStart, nextReset).
123
+ */
124
+ export function prevMonthlyAnniversary(createdMs, now) {
125
+ const created = new Date(createdMs);
126
+ const nowDate = new Date(now);
127
+ if (Number.isNaN(created.getTime()) || Number.isNaN(nowDate.getTime()))
128
+ return Number.NaN;
129
+ const day = created.getUTCDate();
130
+ const h = created.getUTCHours();
131
+ const min = created.getUTCMinutes();
132
+ const sec = created.getUTCSeconds();
133
+ const ms = created.getUTCMilliseconds();
134
+ let best = Number.NaN;
135
+ for (let year = nowDate.getUTCFullYear() - 1; year <= nowDate.getUTCFullYear(); year++) {
136
+ for (let month = 0; month < 12; month++) {
137
+ // Clamp to the month's last day (UTC months are 0-based).
138
+ const lastDay = new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
139
+ const candidate = Date.UTC(year, month, Math.min(day, lastDay), h, min, sec, ms);
140
+ if (candidate <= now && (Number.isNaN(best) || candidate > best))
141
+ best = candidate;
142
+ }
143
+ }
144
+ return best;
145
+ }
146
+ /**
147
+ * One month before `ms`, clamped to the previous month's last day (a Mar-31
148
+ * period end clamps its start to Feb 28/29). `Date.UTC` normalizes
149
+ * `month - 1`, so January flows into December of the previous year.
150
+ */
151
+ export function subtractOneMonthClamped(ms) {
152
+ const d = new Date(ms);
153
+ const lastDayOfPrev = new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), 0)).getUTCDate();
154
+ return Date.UTC(d.getUTCFullYear(), d.getUTCMonth() - 1, Math.min(d.getUTCDate(), lastDayOfPrev), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());
155
+ }
156
+ /**
157
+ * Sum the daily buckets' spend over `[periodStartAt, ∞)` — the honest monthly
158
+ * numerator: a reset empties the window instead of keeping the rolling-30d
159
+ * spend (observed 2026-10-14: 81% shown two days past the reset vs 1.4%
160
+ * actual). The bucket straddling the period start is split proportionally by
161
+ * its time overlap (day granularity is all the API offers).
162
+ *
163
+ * Returns `undefined` — the caller then falls back to the rolling-30d
164
+ * `totals.usage_usd` — when no `periodStartAt` is known, no bucket parses, or
165
+ * the buckets do not reach back to the period start (the 30d window opens up
166
+ * to a day later than a monthly period start, so the tail day of the period
167
+ * can sit outside the response).
168
+ */
169
+ export function periodSpend(buckets, periodStartAt) {
170
+ if (periodStartAt === undefined || !Number.isFinite(periodStartAt) || buckets.length === 0) {
171
+ return undefined;
172
+ }
173
+ let usageUsd = 0;
174
+ let requestCount = 0;
175
+ let anyUsage = false;
176
+ let anyRequest = false;
177
+ let minFrom = Number.POSITIVE_INFINITY;
178
+ for (const raw of buckets) {
179
+ const from = typeof raw.from === "string" ? Date.parse(raw.from) : Number.NaN;
180
+ const until = typeof raw.until === "string" ? Date.parse(raw.until) : Number.NaN;
181
+ if (!Number.isFinite(from) || !Number.isFinite(until) || until <= from)
182
+ continue;
183
+ minFrom = Math.min(minFrom, from);
184
+ if (until <= periodStartAt)
185
+ continue; // entirely before the period
186
+ // Fraction of the bucket inside the period (the reset-day straddler).
187
+ const frac = from >= periodStartAt ? 1 : (until - periodStartAt) / (until - from);
188
+ if (validCount(raw.usage_usd)) {
189
+ usageUsd += raw.usage_usd * frac;
190
+ anyUsage = true;
191
+ }
192
+ if (validCount(raw.request_count)) {
193
+ requestCount += raw.request_count * frac;
194
+ anyRequest = true;
195
+ }
196
+ }
197
+ // Coverage: the earliest usable bucket must sit at/before the period start,
198
+ // else the sum silently undercounts the period's first day(s).
199
+ if (!anyUsage || minFrom > periodStartAt)
200
+ return undefined;
201
+ return {
202
+ usageUsd,
203
+ ...(anyRequest && { requestCount: Math.round(requestCount) }),
204
+ };
205
+ }
109
206
  /**
110
207
  * Validate a usage value from the legacy response body: a finite number in
111
208
  * [0, 1].
@@ -162,16 +259,30 @@ export async function queryOcUsage() {
162
259
  const totals = parsed.totals ?? {};
163
260
  const usageUsd = validCount(totals.usage_usd) ? totals.usage_usd : undefined;
164
261
  if (usageUsd !== undefined) {
165
- // Analytics shape: spend over the rolling 30d window. The percent is
166
- // derived (spend ÷ plan credit) because the API reports no limit.
262
+ // Analytics shape: spend over the rolling 30d window. The monthly
263
+ // percent prefers the bucket-summed CURRENT-PERIOD spend (reset-aware)
264
+ // and falls back to the rolling total only when the buckets cannot
265
+ // bracket the period (no /api/me period, no coverage — see
266
+ // {@link periodSpend}).
167
267
  const fetchedAt = Date.now();
168
- const { plan, monthlyResetAt } = await lookupAccountInfo(apiKey);
268
+ const { plan, monthlyResetAt, periodStartAt } = await lookupAccountInfo(apiKey);
169
269
  const creditUsd = plan !== undefined ? PLAN_CREDIT_USD[plan.toLowerCase()] : undefined;
270
+ const buckets = Array.isArray(parsed.buckets)
271
+ ? parsed.buckets
272
+ : [];
273
+ const period = periodSpend(buckets, periodStartAt);
274
+ const monthlyNumerator = period !== undefined ? period.usageUsd : usageUsd;
170
275
  result = {
171
276
  kind: "success",
172
- ...(creditUsd !== undefined && { monthly: Math.min(1, usageUsd / creditUsd) }),
277
+ ...(creditUsd !== undefined && { monthly: Math.min(1, monthlyNumerator / creditUsd) }),
173
278
  ...(monthlyResetAt !== undefined && { monthlyResetAt }),
174
279
  usageUsd,
280
+ ...(period !== undefined &&
281
+ periodStartAt !== undefined && {
282
+ periodUsageUsd: period.usageUsd,
283
+ periodStartAt,
284
+ ...(period.requestCount !== undefined && { periodRequestCount: period.requestCount }),
285
+ }),
175
286
  ...(plan !== undefined && { plan }),
176
287
  ...(creditUsd !== undefined && { creditUsd }),
177
288
  ...(validCount(totals.request_count) && { requestCount: totals.request_count }),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/index.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,16 @@
8
8
  * (`{range, totals:{usage_usd, request_count, …}, buckets}`) — it now reports
9
9
  * SPEND in USD, not usage fractions, and exposes no plan limit. The percent
10
10
  * windows on the success variant are therefore DERIVED:
11
- * - `monthly` = 30d `usage_usd` ÷ the plan's monthly credit (pricing table
12
- * in index.js, keyed by POST /api/me's `Plan`); absent when the plan's
13
- * credit is unknown (e.g. the Free tier's starter credit is unlisted).
11
+ * - `monthly` = the CURRENT BILLING PERIOD's `usage_usd` (summed from the
12
+ * response's daily buckets back to the period start, per-model pricing
13
+ * already applied upstream) ÷ the plan's monthly credit (pricing table in
14
+ * index.js, keyed by POST /api/me's `Plan`); absent when the plan's credit
15
+ * is unknown (e.g. the Free tier's starter credit is unlisted). Falls
16
+ * back to the rolling-30d `usage_usd` only when the buckets cannot
17
+ * bracket the period (no /api/me period, or the 30d window opens after
18
+ * the period start) — a rolling numerator NEVER resets on the billing
19
+ * day (observed 2026-10-14: 81% shown two days past the reset vs 1.4%
20
+ * actual), so the bucket sum is not an optimization but the fix.
14
21
  * - resets from the /api/me billing-period lookup (SubscriptionPeriodEnd,
15
22
  * else the CreatedAt monthly anniversary).
16
23
  * The pre-2026-10 `limits` shape is still parsed when the server returns it,
@@ -30,9 +37,10 @@
30
37
  */
31
38
  export type OcQueryResult = {
32
39
  kind: "success";
33
- /** Present windows only. Fractions in [0, 1]. `monthly` is derived from
34
- * 30d spend ÷ plan credit (see the module header) — undefined when the
35
- * plan's credit is unknown. `session`/`weekly` only ever come from the
40
+ /** Present windows only. Fractions in [0, 1]. `monthly` = the current
41
+ * billing period's spend ÷ plan credit (bucket-summed, see the module
42
+ * header) with a rolling-30d fallback — undefined when the plan's
43
+ * credit is unknown. `session`/`weekly` only ever come from the
36
44
  * pre-2026-10 legacy response shape. */
37
45
  session?: number;
38
46
  weekly?: number;
@@ -45,9 +53,21 @@ export type OcQueryResult = {
45
53
  sessionResetAt?: number;
46
54
  weeklyResetAt?: number;
47
55
  monthlyResetAt?: number;
48
- /** Spend over the rolling 30d window (USD) — the API's own numerator
49
- * for the derived `monthly` fraction. */
56
+ /** Spend over the rolling 30d window (USD) — the API's own numerator,
57
+ * kept raw for the spend detail even when `monthly` uses the bucket
58
+ * sum. */
50
59
  usageUsd?: number;
60
+ /** Spend within the CURRENT billing period (USD), summed from the
61
+ * response's daily buckets back to `periodStartAt` (the reset-day
62
+ * straddling bucket split proportionally). Present only when the
63
+ * buckets bracket the period; `monthly`'s numerator then matches this,
64
+ * not `usageUsd`. */
65
+ periodUsageUsd?: number;
66
+ /** Request count over the same billing-period window. */
67
+ periodRequestCount?: number;
68
+ /** Start of the current billing period (epoch ms) — the bucket-sum
69
+ * anchor (last reset that already happened). */
70
+ periodStartAt?: number;
51
71
  /** Plan id from POST /api/me ("pro" / "max" / "team" / …). */
52
72
  plan?: string;
53
73
  /** The plan's monthly usage credit (USD) — the denominator of the
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB;;;6CAGyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;4BAIwB;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;8CAC0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;iBAEa;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;qDACiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5B,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB;;;;6CAIyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;4BAIwB;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;eAEW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;0BAIsB;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;qDACiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;iBAEa;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;qDACiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5B,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -8,9 +8,16 @@
8
8
  * (`{range, totals:{usage_usd, request_count, …}, buckets}`) — it now reports
9
9
  * SPEND in USD, not usage fractions, and exposes no plan limit. The percent
10
10
  * windows on the success variant are therefore DERIVED:
11
- * - `monthly` = 30d `usage_usd` ÷ the plan's monthly credit (pricing table
12
- * in index.js, keyed by POST /api/me's `Plan`); absent when the plan's
13
- * credit is unknown (e.g. the Free tier's starter credit is unlisted).
11
+ * - `monthly` = the CURRENT BILLING PERIOD's `usage_usd` (summed from the
12
+ * response's daily buckets back to the period start, per-model pricing
13
+ * already applied upstream) ÷ the plan's monthly credit (pricing table in
14
+ * index.js, keyed by POST /api/me's `Plan`); absent when the plan's credit
15
+ * is unknown (e.g. the Free tier's starter credit is unlisted). Falls
16
+ * back to the rolling-30d `usage_usd` only when the buckets cannot
17
+ * bracket the period (no /api/me period, or the 30d window opens after
18
+ * the period start) — a rolling numerator NEVER resets on the billing
19
+ * day (observed 2026-10-14: 81% shown two days past the reset vs 1.4%
20
+ * actual), so the bucket sum is not an optimization but the fix.
14
21
  * - resets from the /api/me billing-period lookup (SubscriptionPeriodEnd,
15
22
  * else the CreatedAt monthly anniversary).
16
23
  * The pre-2026-10 `limits` shape is still parsed when the server returns it,
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/quota/ollama-cloud/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG"}
@@ -12,12 +12,17 @@
12
12
  * reset card, weekly rollover).
13
13
  *
14
14
  * The per-key highest-notified tier is PERSISTED next to the user config
15
- * (`quota-push-state.json`): the hub idle-exits and re-spawns, and bridges
16
- * restart — without persistence every rebirth while usage sits above a tier
17
- * would re-push it, and a hub + bridge pair could double-push one crossing.
18
- * The state advances even when the push itself is switched off or
19
- * suppressed, so re-enabling never replays old crossings. Everything here is
20
- * fire-and-forget from the caller's view: failures warn, never throw.
15
+ * (`quota-push-state.json`) under the SHARED FILE LOCK, re-read from disk on
16
+ * EVERY check: several processes observe the same crossing (observed live
17
+ * 2026-10-14: one "5h quota 60% used" delivered three times — hub + bridges,
18
+ * two of them 80ms apart). A per-process in-memory mirror cannot dedupe
19
+ * across processes: a bridge that booted before the hub persisted a tier
20
+ * keeps its stale mirror forever and pushes the same crossing again. The
21
+ * lock makes read→advance→persist atomic between processes, and the push
22
+ * fires only AFTER the advanced state is durable — a crash between the two
23
+ * never re-pushes. The state advances even when the push itself is switched
24
+ * off or suppressed, so re-enabling never replays old crossings. Everything
25
+ * here is fire-and-forget from the caller's view: failures warn, never throw.
21
26
  */
22
27
  import type { QuotaResult } from "./types.js";
23
28
  /** Highest tier crossed by a used percentage (0 = below all). */
@@ -25,8 +30,15 @@ export declare function quotaTier(usedPercent: number): number;
25
30
  /**
26
31
  * Check one fresh quota result against the persisted tiers and push each
27
32
  * newly-crossed tier once. Callers fire-and-forget this; it never throws.
33
+ *
34
+ * The read→advance→persist section runs under the shared file lock on the
35
+ * state file (re-reading disk every check): hub + bridges all funnel quota
36
+ * results, and without the lock two processes observe one crossing
37
+ * concurrently and each pushes it. The push fires after the lock releases,
38
+ * so a crash between persist and send never replays the crossing.
28
39
  */
29
40
  export declare function checkQuotaThresholds(result: QuotaResult): Promise<void>;
30
- /** Test hook: forget the in-memory mirror (the disk state stays). */
41
+ /** Test hook: no in-process mirror remains (disk is re-read every check) —
42
+ * kept for call-site compatibility; the disk state is the only state. */
31
43
  export declare function resetQuotaThresholdsForTest(): void;
32
44
  //# sourceMappingURL=thresholds.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thresholds.d.ts","sourceRoot":"","sources":["../../src/quota/thresholds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AASH,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,YAAY,CAAC;AAazD,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIrD;AAwCD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC7E;AAED,qEAAqE;AACrE,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
1
+ {"version":3,"file":"thresholds.d.ts","sourceRoot":"","sources":["../../src/quota/thresholds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAWH,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,YAAY,CAAC;AAazD,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIrD;AAiDD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD7E;AAED;0EAC0E;AAC1E,wBAAgB,2BAA2B,IAAI,IAAI,CAAG"}