@llm4ts/core 2.31.0 → 2.31.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.
@@ -1 +1 @@
1
- {"version":3,"file":"UsageLimits.d.ts","sourceRoot":"","sources":["../src/UsageLimits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAmC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AA0C5E,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAAmD,CAAA;AAyJhG,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,EAChB,MAAM,MAAM,EACZ,KAAK,QAAQ,CAAC,GAAG,EACjB,UAAU,MAAM,KACf,QAAQ,GAAG,SA+Db,CAAA"}
1
+ {"version":3,"file":"UsageLimits.d.ts","sourceRoot":"","sources":["../src/UsageLimits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAmC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAoD5E,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAAmD,CAAA;AA4JhG,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,EAChB,MAAM,MAAM,EACZ,KAAK,QAAQ,CAAC,GAAG,EACjB,UAAU,MAAM,KACf,QAAQ,GAAG,SA+Db,CAAA"}
@@ -2,7 +2,16 @@ import * as DateTime from "effect/DateTime";
2
2
  import * as Duration from "effect/Duration";
3
3
  import { RateLimitError, UsageLimitError } from "./Errors.js";
4
4
  const codexAt = /try again at\s+(\d{1,2}:\d{2}\s*[AP]M)/i;
5
- const claudeAt = /usage limit.*?(?:resets?|try again) at\s+(\d{1,2}(?::\d{2})?\s*[ap]m)/i;
5
+ // claude: "You have reached your usage limit; resets at 3 PM", and since
6
+ // 2.1 "You've hit your session limit · resets 8:20am (Europe/Rome)" — the
7
+ // zone in parentheses is the one the time is in, when given.
8
+ const claudeAt = /\blimit\b.*?(?:resets?|try again)(?:\s+at)?\s+(\d{1,2}(?::\d{2})?\s*[ap]m)(?:\s*\(([A-Za-z_]+(?:\/[A-Za-z_+-]+)+)\))?/i;
9
+ const claudeLimitSignals = [
10
+ "usage limit",
11
+ "session limit",
12
+ "weekly limit",
13
+ "hit your"
14
+ ];
6
15
  const geminiReset = /reset after\s+((?:\d+(?:ms|[dhms]))+)/i;
7
16
  const resetComponent = /(\d+)(ms|[dhms])/gi;
8
17
  const shortResetLimit = Duration.seconds(120);
@@ -39,6 +48,7 @@ const includesSignal = (text, signals) => {
39
48
  export const isGeminiQuota = (text) => includesSignal(text, geminiQuotaSignals);
40
49
  const isGenericQuota = (text) => includesSignal(text, genericQuotaSignals);
41
50
  const isRelayedQuota = (text) => includesSignal(text, relayedQuotaSignals);
51
+ const isClaudeLimit = (text) => includesSignal(text, claudeLimitSignals) && /\blimit\b/i.test(text);
42
52
  const resetDuration = (specification) => {
43
53
  let milliseconds = 0;
44
54
  for (const match of specification.matchAll(resetComponent)) {
@@ -156,14 +166,14 @@ export const classifyUsageLimit = (provider, text, now, timeZone) => {
156
166
  });
157
167
  }
158
168
  case "claude": {
159
- const resetAt = wallClockReset(text, claudeAt, now, timeZone);
160
- return resetAt === undefined
161
- ? undefined
162
- : UsageLimitError.make({
163
- resetAt,
164
- provider,
165
- message: text
166
- });
169
+ const statedZone = text.match(claudeAt)?.[2];
170
+ const resetAt = wallClockReset(text, claudeAt, now, statedZone ?? timeZone);
171
+ if (resetAt !== undefined) {
172
+ return UsageLimitError.make({ resetAt, provider, message: text });
173
+ }
174
+ // A limit without a readable reset time still takes claude out of the
175
+ // round, for the roster's default cooldown.
176
+ return isClaudeLimit(text) ? UsageLimitError.make({ provider, message: text }) : undefined;
167
177
  }
168
178
  case "gemini": {
169
179
  const resetSpecification = text.match(geminiReset)?.[1];
@@ -1 +1 @@
1
- {"version":3,"file":"UsageLimits.js","sourceRoot":"","sources":["../src/UsageLimits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAA;AAE5E,MAAM,OAAO,GAAG,yCAAyC,CAAA;AACzD,MAAM,QAAQ,GAAG,wEAAwE,CAAA;AACzF,MAAM,WAAW,GAAG,wCAAwC,CAAA;AAC5D,MAAM,cAAc,GAAG,oBAAoB,CAAA;AAC3C,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAE7C,MAAM,kBAAkB,GAA0B;IAChD,yBAAyB;IACzB,OAAO;IACP,oBAAoB;IACpB,YAAY;IACZ,YAAY;IACZ,KAAK;CACN,CAAA;AAED,MAAM,mBAAmB,GAA0B;IACjD,GAAG,kBAAkB;IACrB,aAAa;IACb,gBAAgB;IAChB,mBAAmB;CACpB,CAAA;AAED,qEAAqE;AACrE,qEAAqE;AACrE,kEAAkE;AAClE,gEAAgE;AAChE,MAAM,mBAAmB,GAA0B;IACjD,aAAa;IACb,gBAAgB;IAChB,oBAAoB;IACpB,2BAA2B;IAC3B,oBAAoB;IACpB,6BAA6B;CAC9B,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,OAA8B,EAAW,EAAE;IAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACrC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;AAEhG,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;AAE3F,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;AAE3F,MAAM,aAAa,GAAG,CAAC,aAAqB,EAAqB,EAAE;IACjE,IAAI,YAAY,GAAG,CAAC,CAAA;IAEpB,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QAE7C,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,GAAG;gBACN,YAAY,IAAI,MAAM,GAAG,UAAU,CAAA;gBACnC,MAAK;YACP,KAAK,GAAG;gBACN,YAAY,IAAI,MAAM,GAAG,SAAS,CAAA;gBAClC,MAAK;YACP,KAAK,GAAG;gBACN,YAAY,IAAI,MAAM,GAAG,MAAM,CAAA;gBAC/B,MAAK;YACP,KAAK,GAAG;gBACN,YAAY,IAAI,MAAM,GAAG,KAAK,CAAA;gBAC9B,MAAK;YACP;gBACE,YAAY,IAAI,MAAM,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AACtC,CAAC,CAAA;AAOD,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAA6B,EAAE;IACpE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACrE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAC7C,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,EAAE,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;QACjE,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM;KACP,CAAA;AACH,CAAC,CAAA;AAQD,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAuB,EAAE,CAClE,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;IACzC,QAAQ;IACR,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,KAAK;CACjB,CAAC,CAAA;AAEJ,MAAM,WAAW,GAAG,CAClB,KAA6C,EAC7C,IAAkC,EAC1B,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAA;AAE3E,MAAM,UAAU,GAAG,CAAC,WAAmB,EAAE,QAAgB,EAAE,EAAE;IAC3D,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;IAC9E,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;QAChC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;QAClC,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;QAC9B,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;QAChC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;QACpC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;KACrC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAE,QAAgB,EAAU,EAAE;IAC7E,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,GAAG,CAAC,EACf,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,MAAM,CACb,CAAA;IACD,OAAO,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,KAAK,CAAA;AACnE,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,IAAkB,EAAE,IAAmB,EAAE,QAAgB,EAAU,EAAE;IAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACtF,MAAM,cAAc,GAAG,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC1E,OAAO,QAAQ,GAAG,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;AAClE,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAkB,EAAgB,EAAE;IAC5D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;IACxE,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE;QAC3B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;QAC7B,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;KACvB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CACrB,IAAY,EACZ,OAAe,EACf,GAAiB,EACjB,QAAgB,EACU,EAAE;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC5E,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAChD,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,GAAG,EAAE,QAAQ,CAAC,GAAG;SAClB,CAAA;QACD,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC/D,MAAM,WAAW,GACf,cAAc,GAAG,SAAS;YACxB,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAEhE,OAAO,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,QAAgB,EAChB,IAAY,EACZ,GAAiB,EACjB,QAAgB,EACM,EAAE;IACxB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;YAC5D,OAAO,OAAO,KAAK,SAAS;gBAC1B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;oBACnB,OAAO;oBACP,QAAQ;oBACR,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;YAC7D,OAAO,OAAO,KAAK,SAAS;gBAC1B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;oBACnB,OAAO;oBACP,QAAQ;oBACR,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACvD,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAA;gBAClD,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC;oBACtE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;oBAC/C,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;wBACnB,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;wBAC5C,QAAQ;wBACR,OAAO,EAAE,IAAI;qBACd,CAAC,CAAA;YACR,CAAC;YAED,OAAO,aAAa,CAAC,IAAI,CAAC;gBACxB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;oBACnB,QAAQ;oBACR,OAAO,EAAE,IAAI;iBACd,CAAC;gBACJ,CAAC,CAAC,SAAS,CAAA;QACf,CAAC;QACD,KAAK,IAAI,CAAC;QACV,KAAK,aAAa,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC,IAAI,CAAC;gBACzB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;oBACnB,QAAQ;oBACR,OAAO,EAAE,IAAI;iBACd,CAAC;gBACJ,CAAC,CAAC,SAAS,CAAA;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,IAAI,CAAC;gBACzB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;oBACnB,QAAQ;oBACR,OAAO,EAAE,IAAI;iBACd,CAAC;gBACJ,CAAC,CAAC,SAAS,CAAA;QACf;YACE,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"UsageLimits.js","sourceRoot":"","sources":["../src/UsageLimits.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llm4ts/core",
3
- "version": "2.31.0",
3
+ "version": "2.31.1",
4
4
  "description": "Effect-native LLM contracts, providers, tools, evaluation, and observability",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -3,7 +3,17 @@ import * as Duration from "effect/Duration"
3
3
  import { RateLimitError, UsageLimitError, type LlmError } from "./Errors.ts"
4
4
 
5
5
  const codexAt = /try again at\s+(\d{1,2}:\d{2}\s*[AP]M)/i
6
- const claudeAt = /usage limit.*?(?:resets?|try again) at\s+(\d{1,2}(?::\d{2})?\s*[ap]m)/i
6
+ // claude: "You have reached your usage limit; resets at 3 PM", and since
7
+ // 2.1 "You've hit your session limit · resets 8:20am (Europe/Rome)" — the
8
+ // zone in parentheses is the one the time is in, when given.
9
+ const claudeAt =
10
+ /\blimit\b.*?(?:resets?|try again)(?:\s+at)?\s+(\d{1,2}(?::\d{2})?\s*[ap]m)(?:\s*\(([A-Za-z_]+(?:\/[A-Za-z_+-]+)+)\))?/i
11
+ const claudeLimitSignals: ReadonlyArray<string> = [
12
+ "usage limit",
13
+ "session limit",
14
+ "weekly limit",
15
+ "hit your"
16
+ ]
7
17
  const geminiReset = /reset after\s+((?:\d+(?:ms|[dhms]))+)/i
8
18
  const resetComponent = /(\d+)(ms|[dhms])/gi
9
19
  const shortResetLimit = Duration.seconds(120)
@@ -48,6 +58,9 @@ const isGenericQuota = (text: string): boolean => includesSignal(text, genericQu
48
58
 
49
59
  const isRelayedQuota = (text: string): boolean => includesSignal(text, relayedQuotaSignals)
50
60
 
61
+ const isClaudeLimit = (text: string): boolean =>
62
+ includesSignal(text, claudeLimitSignals) && /\blimit\b/i.test(text)
63
+
51
64
  const resetDuration = (specification: string): Duration.Duration => {
52
65
  let milliseconds = 0
53
66
 
@@ -213,14 +226,14 @@ export const classifyUsageLimit = (
213
226
  })
214
227
  }
215
228
  case "claude": {
216
- const resetAt = wallClockReset(text, claudeAt, now, timeZone)
217
- return resetAt === undefined
218
- ? undefined
219
- : UsageLimitError.make({
220
- resetAt,
221
- provider,
222
- message: text
223
- })
229
+ const statedZone = text.match(claudeAt)?.[2]
230
+ const resetAt = wallClockReset(text, claudeAt, now, statedZone ?? timeZone)
231
+ if (resetAt !== undefined) {
232
+ return UsageLimitError.make({ resetAt, provider, message: text })
233
+ }
234
+ // A limit without a readable reset time still takes claude out of the
235
+ // round, for the roster's default cooldown.
236
+ return isClaudeLimit(text) ? UsageLimitError.make({ provider, message: text }) : undefined
224
237
  }
225
238
  case "gemini": {
226
239
  const resetSpecification = text.match(geminiReset)?.[1]