github-issue-tower-defence-management 1.127.0 → 1.128.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.
- package/CHANGELOG.md +7 -0
- package/README.md +3 -3
- package/bin/adapter/entry-points/handlers/InTmuxByHumanSessionTokenCountHandler.js +1 -0
- package/bin/adapter/entry-points/handlers/InTmuxByHumanSessionTokenCountHandler.js.map +1 -1
- package/bin/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.js +5 -0
- package/bin/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.js.map +1 -1
- package/bin/adapter/entry-points/handlers/OauthTokenSelectHandler.js +5 -0
- package/bin/adapter/entry-points/handlers/OauthTokenSelectHandler.js.map +1 -1
- package/bin/adapter/entry-points/handlers/tokenStatusWriter.js +1 -0
- package/bin/adapter/entry-points/handlers/tokenStatusWriter.js.map +1 -1
- package/bin/adapter/proxy/RateLimitCache.js +35 -4
- package/bin/adapter/proxy/RateLimitCache.js.map +1 -1
- package/bin/adapter/proxy/proxyEntry.js +48 -0
- package/bin/adapter/proxy/proxyEntry.js.map +1 -1
- package/bin/domain/usecases/OauthTokenSelectUseCase.js +5 -2
- package/bin/domain/usecases/OauthTokenSelectUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/handlers/InTmuxByHumanSessionTokenCountHandler.ts +1 -0
- package/src/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.test.ts +49 -1
- package/src/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.ts +7 -1
- package/src/adapter/entry-points/handlers/OauthTokenSelectHandler.test.ts +65 -1
- package/src/adapter/entry-points/handlers/OauthTokenSelectHandler.ts +11 -1
- package/src/adapter/entry-points/handlers/tokenStatusWriter.ts +1 -0
- package/src/adapter/proxy/RateLimitCache.test.ts +148 -0
- package/src/adapter/proxy/RateLimitCache.ts +56 -3
- package/src/adapter/proxy/proxyEntry.test.ts +126 -0
- package/src/adapter/proxy/proxyEntry.ts +60 -0
- package/src/domain/usecases/InTmuxByHumanSessionTokenCountUseCase.test.ts +1 -0
- package/src/domain/usecases/LiveSessionOauthTokenSelectUseCase.test.ts +2 -0
- package/src/domain/usecases/OauthTokenSelectUseCase.test.ts +25 -0
- package/src/domain/usecases/OauthTokenSelectUseCase.ts +6 -0
- package/types/adapter/entry-points/handlers/InTmuxByHumanSessionTokenCountHandler.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/OauthTokenSelectHandler.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/tokenStatusWriter.d.ts.map +1 -1
- package/types/adapter/proxy/RateLimitCache.d.ts +8 -0
- package/types/adapter/proxy/RateLimitCache.d.ts.map +1 -1
- package/types/adapter/proxy/proxyEntry.d.ts.map +1 -1
- package/types/domain/usecases/OauthTokenSelectUseCase.d.ts +1 -0
- package/types/domain/usecases/OauthTokenSelectUseCase.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [1.128.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.127.0...v1.128.0) (2026-07-24)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **proxy:** reactively exclude fable-exhausted tokens from fable token selection ([#1239](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1239)) ([c9e0b56](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/c9e0b56a4b961921b83e3d21f40ddebe1b57a5e1)), closes [#1238](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1238)
|
|
7
|
+
|
|
1
8
|
# [1.127.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.126.3...v1.127.0) (2026-07-23)
|
|
2
9
|
|
|
3
10
|
|
package/README.md
CHANGED
|
@@ -109,9 +109,9 @@ Each project's status and story options are loaded lazily the first time a `pjco
|
|
|
109
109
|
|
|
110
110
|
The `checkIssueReviewReadiness` sub-command lets an agent self-check whether an issue is currently review-ready. It does NOT change the issue Status field and does NOT post any comment. It writes a single JSON line to stdout of the shape `{ "reviewReady": boolean, "rejections": [{ "type": string, "detail": string }] }` and exits 0 on a successful evaluation regardless of readiness; a non-zero exit indicates an operational error (auth failure, network error). The rejection types include: `ISSUE_NOT_FOUND`, `NO_REPORT_FROM_AGENT_BOT`, `REPORT_HAS_NEXT_STEP`, `PULL_REQUEST_NOT_FOUND`, `PULL_REQUEST_IS_DRAFT`, `PULL_REQUEST_CONFLICTED`, `ANY_CI_JOB_FAILED_OR_IN_PROGRESS`, `REQUIRED_CI_JOB_NEVER_STARTED`, `ANY_REVIEW_COMMENT_NOT_RESOLVED`, and `MULTIPLE_PULL_REQUESTS_FOUND`. The `--projectUrl` option is optional; when omitted the command still runs using only the issue URL.
|
|
111
111
|
|
|
112
|
-
The `selectOauthToken` sub-command reads the same per-token rate-limit cache that the `startDaemon` proxy writes (see "Claude OAuth Token Rotation" below) and prints exactly one token string to stdout so a caller can choose an appropriate token before launching Claude Code. It is read-only: it never starts the proxy, never mutates any cache file, and never writes the token anywhere. Selection runs in two stages. First, a candidate filter keeps tokens whose 5-hour window is at least 60% free (5-hour utilization at most 0.40) AND whose 7-day window is at least 7% free (7-day utilization at most 0.93), where "% free" is `1 - utilization`. A token with no cache file, or whose window reset epoch has already passed, is treated as fully free (utilization 0) for these checks. Second, among the surviving candidates it selects the single token whose 7-day window reset epoch is nearest in the future (soonest reset), so weekly quota that would otherwise reset unused is consumed first; a candidate with no active 7-day window is treated as having the farthest reset (now + 7 days) and therefore sorts last. The selected token string is written to stdout (pipeable) and the per-candidate decision trace is written to stderr. When no token passes the filter, nothing is written to stdout and the command exits non-zero with an explanatory message on stderr. The token-list path comes from `--tokenListJsonPath` or the `CLAUDE_CODE_OAUTH_TOKEN_LIST_JSON_PATH` environment variable; the cache directory comes from `--cacheDir` or the `TDPM_RATELIMIT_CACHE_DIR` environment variable, defaulting to `${XDG_CACHE_HOME:-~/.cache}/tdpm/ratelimit`.
|
|
112
|
+
The `selectOauthToken` sub-command reads the same per-token rate-limit cache that the `startDaemon` proxy writes (see "Claude OAuth Token Rotation" below) and prints exactly one token string to stdout so a caller can choose an appropriate token before launching Claude Code. It is read-only: it never starts the proxy, never mutates any cache file, and never writes the token anywhere. Selection runs in two stages. First, a candidate filter keeps tokens whose 5-hour window is at least 60% free (5-hour utilization at most 0.40) AND whose 7-day window is at least 7% free (7-day utilization at most 0.93), where "% free" is `1 - utilization`. A token with no cache file, or whose window reset epoch has already passed, is treated as fully free (utilization 0) for these checks. The filter additionally excludes any token carrying a non-expired reactive `seven_day_fable` rejection marker — set when a `fable`-model request on that token was rejected with HTTP 429 (see "Claude OAuth Token Rotation" below) — because these interactive sessions run on the `fable` model; a token without the marker is treated as `fable`-usable, and the marker is ignored once its stored reset epoch has passed. Second, among the surviving candidates it selects the single token whose 7-day window reset epoch is nearest in the future (soonest reset), so weekly quota that would otherwise reset unused is consumed first; a candidate with no active 7-day window is treated as having the farthest reset (now + 7 days) and therefore sorts last. The selected token string is written to stdout (pipeable) and the per-candidate decision trace is written to stderr. When no token passes the filter, nothing is written to stdout and the command exits non-zero with an explanatory message on stderr. The token-list path comes from `--tokenListJsonPath` or the `CLAUDE_CODE_OAUTH_TOKEN_LIST_JSON_PATH` environment variable; the cache directory comes from `--cacheDir` or the `TDPM_RATELIMIT_CACHE_DIR` environment variable, defaulting to `${XDG_CACHE_HOME:-~/.cache}/tdpm/ratelimit`.
|
|
113
113
|
|
|
114
|
-
The `selectLiveSessionOauthToken` sub-command picks a token for a new live interactive Claude Code session a human is about to start, so that concurrent interactive sessions spread across distinct tokens instead of stacking onto the same one. It loads the token list and reads the same per-token rate-limit cache as `selectOauthToken`, and it is read-only in exactly the same way: it never starts the proxy, never mutates any cache file, and never writes the token anywhere. It applies the identical rate-limit eligibility filter as `selectOauthToken` (5-hour window at least 60% free AND 7-day window at least 7% free, with a missing cache file or an expired window treated as fully free). It additionally measures current live occupancy per token by scanning running Claude Code processes on the local Linux host: for each process under `/proc` it reads the NUL-separated `/proc/<pid>/environ` and, when the process is a Claude Code process, takes its `CLAUDE_CODE_OAUTH_TOKEN` and `CLAUDE_CODE_SESSION_ID`. A token's occupancy is the number of distinct `CLAUDE_CODE_SESSION_ID` values bound to it, so child processes that inherit one session id count once. Processes without `CLAUDE_CODE_OAUTH_TOKEN` (for example API-key sessions) are ignored, and a process whose environ cannot be read is skipped. Among the eligible tokens it selects the one with the fewest live sessions (ideally zero), breaking ties by the soonest 7-day reset. The selected token string is written to stdout (pipeable) and the per-candidate decision trace is written to stderr; when no token passes the filter, nothing is written to stdout and the command exits non-zero with an explanatory message on stderr. The token-list path and cache directory are resolved exactly as for `selectOauthToken`. Because occupancy is read from `/proc/<pid>/environ`, this sub-command is Linux-specific.
|
|
114
|
+
The `selectLiveSessionOauthToken` sub-command picks a token for a new live interactive Claude Code session a human is about to start, so that concurrent interactive sessions spread across distinct tokens instead of stacking onto the same one. It loads the token list and reads the same per-token rate-limit cache as `selectOauthToken`, and it is read-only in exactly the same way: it never starts the proxy, never mutates any cache file, and never writes the token anywhere. It applies the identical rate-limit eligibility filter as `selectOauthToken` (5-hour window at least 60% free AND 7-day window at least 7% free, with a missing cache file or an expired window treated as fully free, and any token carrying a non-expired reactive `seven_day_fable` rejection marker excluded). It additionally measures current live occupancy per token by scanning running Claude Code processes on the local Linux host: for each process under `/proc` it reads the NUL-separated `/proc/<pid>/environ` and, when the process is a Claude Code process, takes its `CLAUDE_CODE_OAUTH_TOKEN` and `CLAUDE_CODE_SESSION_ID`. A token's occupancy is the number of distinct `CLAUDE_CODE_SESSION_ID` values bound to it, so child processes that inherit one session id count once. Processes without `CLAUDE_CODE_OAUTH_TOKEN` (for example API-key sessions) are ignored, and a process whose environ cannot be read is skipped. Among the eligible tokens it selects the one with the fewest live sessions (ideally zero), breaking ties by the soonest 7-day reset. The selected token string is written to stdout (pipeable) and the per-candidate decision trace is written to stderr; when no token passes the filter, nothing is written to stdout and the command exits non-zero with an explanatory message on stderr. The token-list path and cache directory are resolved exactly as for `selectOauthToken`. Because occupancy is read from `/proc/<pid>/environ`, this sub-command is Linux-specific.
|
|
115
115
|
|
|
116
116
|
The `countInTmuxByHumanSessionsPerToken` sub-command reports, per Claude Code OAuth token, how many live interactive sessions running under that token belong to an issue that is currently in the GitHub Project Status `In Tmux by human`. It is read-only: it never starts the proxy, never mutates any cache file, and never writes any token anywhere. It enumerates live interactive sessions by scanning running processes on the local Linux host: for each process under `/proc` it reads the NUL-separated `/proc/<pid>/cmdline` and selects only processes launched for an interactive session, identified by a `--name <issue-url>` argument whose value is an HTTP or HTTPS URL; `Take ownership` background spawns (which have no `--name` argument) are excluded. For each selected process it reads `/proc/<pid>/environ` and takes its `CLAUDE_CODE_OAUTH_TOKEN` and `CLAUDE_CODE_SESSION_ID`; a process missing either is skipped, and a process whose files cannot be read is skipped. It then loads the project's issues with their Status (reusing the same on-disk issue cache the daemon uses), keeps only the sessions whose `--name` issue URL maps to an open issue in Status `In Tmux by human`, and counts the distinct `CLAUDE_CODE_SESSION_ID` values per token so child processes that inherit one session id count once. It writes one tab-separated line per token to stdout in the form `<tokenName>\t<count>` (the token name comes from the token list; the raw token value is never printed), and writes the per-run decision trace to stderr. The token-list path comes from `--tokenListJsonPath`, the `claudeCodeOauthTokenListJsonPath` config value, or the `CLAUDE_CODE_OAUTH_TOKEN_LIST_JSON_PATH` environment variable. Because occupancy is read from `/proc/<pid>/cmdline` and `/proc/<pid>/environ`, this sub-command is Linux-specific.
|
|
117
117
|
|
|
@@ -350,7 +350,7 @@ When `claudeCodeOauthTokenListJsonPath` is set, `startDaemon` distributes prepar
|
|
|
350
350
|
|
|
351
351
|
The `name` field is optional; when absent, TDPM assigns a positional name (`token-1`, `token-2`, …) based on the entry's index in the array. Entries without a string `token` are skipped. Missing files or malformed JSON yield no tokens and disable rotation for that run (the daemon then falls back to whatever `CLAUDE_CODE_OAUTH_TOKEN` is already in the environment).
|
|
352
352
|
|
|
353
|
-
2. Local reverse proxy (`127.0.0.1:8787`): on each `startDaemon` run, the daemon TCP-probes the port. If nothing responds, it spawns a detached child running `bin/adapter/proxy/proxyEntry.js`. The proxy forwards every request to `api.anthropic.com`, observes the `anthropic-ratelimit-unified-*` response headers, and writes them to a per-token cache file at `${XDG_CACHE_HOME:-~/.cache}/tdpm/ratelimit/<sha256-of-token>.json`. The cache file stores the latest 5-hour and 7-day utilization, reset epochs, and the unified, 5-hour, and 7-day statuses (used to detect `blocked` and `rejected` state per window). In addition to the headline unified headers, the proxy records the model-specific weekly limits — at minimum `seven_day_sonnet` and `seven_day_opus` — per token from two sources: the per-model unified response headers `anthropic-ratelimit-unified-7d_sonnet-status`/`-reset` and `anthropic-ratelimit-unified-7d_opus-status`/`-reset` (present on every response), and the streamed response body's `rate_limit` events (objects carrying `rateLimitType`, `status`, and `resetsAt`). When both sources describe the same claim, the body-derived value takes precedence. Because the per-model windows are tracked separately, a token can be `rejected` on the headline `anthropic-ratelimit-unified-status` (whose value reflects only the representative, most-binding claim — for example `seven_day_sonnet`) while its `seven_day_opus` window is still allowed and Opus requests on that token still succeed. When a response is an HTTP 429 that carries no `anthropic-ratelimit-*` headers at all (for example a `rate_limit_error` with `x-should-retry: true`), the proxy records a short-lived per-token cooldown as a `blockedUntilEpoch` field on that token's cache file without discarding the last-good snapshot: the cooldown end is `now + Retry-After` seconds when the `Retry-After` header is present (clamped to a maximum of 600 seconds), otherwise a fixed default of 90 seconds. A later response that does carry `anthropic-ratelimit-*` headers overwrites the cache and clears the cooldown.
|
|
353
|
+
2. Local reverse proxy (`127.0.0.1:8787`): on each `startDaemon` run, the daemon TCP-probes the port. If nothing responds, it spawns a detached child running `bin/adapter/proxy/proxyEntry.js`. The proxy forwards every request to `api.anthropic.com`, observes the `anthropic-ratelimit-unified-*` response headers, and writes them to a per-token cache file at `${XDG_CACHE_HOME:-~/.cache}/tdpm/ratelimit/<sha256-of-token>.json`. The cache file stores the latest 5-hour and 7-day utilization, reset epochs, and the unified, 5-hour, and 7-day statuses (used to detect `blocked` and `rejected` state per window). In addition to the headline unified headers, the proxy records the model-specific weekly limits — at minimum `seven_day_sonnet` and `seven_day_opus` — per token from two sources: the per-model unified response headers `anthropic-ratelimit-unified-7d_sonnet-status`/`-reset` and `anthropic-ratelimit-unified-7d_opus-status`/`-reset` (present on every response), and the streamed response body's `rate_limit` events (objects carrying `rateLimitType`, `status`, and `resetsAt`). When both sources describe the same claim, the body-derived value takes precedence. Because the per-model windows are tracked separately, a token can be `rejected` on the headline `anthropic-ratelimit-unified-status` (whose value reflects only the representative, most-binding claim — for example `seven_day_sonnet`) while its `seven_day_opus` window is still allowed and Opus requests on that token still succeed. The `fable` model's weekly limit is reported by neither the response headers nor the streamed body events, so it is tracked reactively and in binary form. Because Anthropic exposes no per-model rate-limit data, a 429 on a `fable` request cannot be split into "fable's own weekly limit" versus "the token's overall weekly limit"; the proxy therefore records the marker only when the 429 is a genuine seven-day (weekly) rejection, which is the only case in which the token cannot serve `fable` regardless of model. Concretely: when a request whose JSON body selects a `fable` model (a `model` value containing `fable`, such as `claude-fable-5`) receives an HTTP 429 whose response carries `anthropic-ratelimit-unified-7d-status: rejected`, the proxy records a rejected `seven_day_fable` entry in that token's `modelWeeklyLimits`. A model-agnostic 429 that is not a weekly rejection — a five-hour-window rejection (`anthropic-ratelimit-unified-5h-status: rejected` while the seven-day window is not rejected) or a transient 429 carrying no rate-limit rejection headers at all — does NOT set the marker, so a token whose weekly `fable` quota is intact is not wrongly excluded from `fable` selection. The marker's `resetsAt` is taken from the `anthropic-ratelimit-unified-7d-reset` header when that reset is present, and otherwise falls back to the same cooldown rule as the headerless 429 case below (`now + Retry-After` seconds when the `Retry-After` header is present, clamped to a maximum of 600 seconds, otherwise a fixed default of 90 seconds). No remaining-quota or utilization percentage is computed for `fable`; the marker is a plain "this token's fable is currently exhausted" flag that clears once its `resetsAt` has passed. When a response is an HTTP 429 that carries no `anthropic-ratelimit-*` headers at all (for example a `rate_limit_error` with `x-should-retry: true`), the proxy records a short-lived per-token cooldown as a `blockedUntilEpoch` field on that token's cache file without discarding the last-good snapshot: the cooldown end is `now + Retry-After` seconds when the `Retry-After` header is present (clamped to a maximum of 600 seconds), otherwise a fixed default of 90 seconds. A later response that does carry `anthropic-ratelimit-*` headers overwrites the cache and clears the cooldown.
|
|
354
354
|
|
|
355
355
|
3. Selection: before spawning each `aw` job, the daemon reads every token's cache file. A cached observation is treated as expired once its reset epoch has passed: when the current time is past the 5-hour reset, that token's 5-hour utilization is treated as `0` and any 5-hour-window rejection is cleared; likewise, when the 7-day reset has passed, the 7-day utilization is treated as `0` and any 7-day-window rejection is cleared; a model-specific weekly limit rejection is cleared once that limit's `resetsAt` has passed. This stale-reset expiry prevents a token that has actually recovered from being locked out of rotation forever (an excluded token receives no new requests, so the proxy never re-observes it). After expiry normalization, a token is excluded only for a genuinely model-agnostic reason: its status is `blocked`, its (non-expired) 5-hour-window rejection is still active, its `blockedUntilEpoch` cooldown is still in the future, or its 5-hour utilization meets or exceeds the configured threshold. The headline `anthropic-ratelimit-unified-status` being `rejected` does NOT by itself exclude a token, because that status reflects only the representative (most-binding) claim — a Sonnet-exhausted token whose `seven_day_opus` window is still allowed must remain in rotation and route to Opus. The model for each remaining token is then routed independently: the configured default model is preferred when that token's matching weekly window is not rejected, otherwise the configured fallback model (default `claude-opus-4-8`) is used when its matching weekly window is not rejected; a token is excluded for weekly limits only when every candidate model's weekly window is rejected or the generic `seven_day` window is rejected. This routing is per token, so within a single pass a token whose `seven_day_sonnet` window is exhausted is spawned on the fallback Opus model while sibling tokens that still have Sonnet headroom keep using Sonnet. A cooled-down token becomes selectable again automatically once its `blockedUntilEpoch` has passed. The model name maps to a limit type: a model name containing `sonnet` maps to `seven_day_sonnet`, one containing `opus` maps to `seven_day_opus`, otherwise `seven_day`; the generic `seven_day` rejection excludes a token regardless of model. The remaining eligible tokens are sorted by time until the 7-day reset deadline ascending (soonest 7-day reset first, so quota that would otherwise expire unused is consumed first), with 5-hour utilization ascending as the tiebreaker. The 7-day reset deadline for a given spawn is read from the per-model weekly limit entry in `modelWeeklyLimits` matching the model that will be used (`seven_day_sonnet`, `seven_day_opus`, or the generic `seven_day`); when no model-specific or generic `seven_day` entry exists but the cache snapshot recorded a non-expired top-level `anthropic-ratelimit-unified-7d-reset` deadline, that header value is bridged into a synthesized generic `seven_day` entry whose `rejected` flag matches the (non-expired) `anthropic-ratelimit-unified-7d-status` rejection. When neither source supplies a deadline, the token is treated as having an infinite deadline and sorts last. Each token's per-run concurrent preparation slot count is determined by both its 5-hour and 7-day utilization, taking the more restrictive (minimum) of the two so concurrency ramps down as either window fills: for each window, at or below 80% the token receives the full six concurrent slots; above 80%, the slot count is reduced proportionally — specifically `ceil(6 × (1 − util) / 0.2)` — with a minimum of 1 slot at any utilization level, so near-exhausted tokens still participate rather than being cut off entirely. The final slot count is the minimum of the 5-hour-derived and 7-day-derived counts. Before each `aw` spawn, among the tokens that still have an available slot (slot count minus the in-flight count minus the count already spawned this run, greater than zero), the token whose 7-day reset is soonest is selected; in-flight slot count from prior runs no longer routes new work away from a soon-reset token, so a soon-reset token's slots are filled before a later-reset token receives any, and remaining slot count is used only as the tiebreaker when two candidates share the same 7-day reset. The effective preparation limit for a run is the lesser of the sum of all eligible tokens' slot counts and the explicit `maximumPreparingIssuesCount` (which defaults to 6). When a token list is configured but no eligible token remains after filtering, preparation is skipped for that run. The selected token and the proxy URL (`http://127.0.0.1:8787`) are passed to the child `aw` process as `CLAUDE_CODE_OAUTH_TOKEN` and `ANTHROPIC_BASE_URL` environment variables. The child inherits the parent process's environment, so no further wiring is required inside `aw`.
|
|
356
356
|
|
|
@@ -34,6 +34,7 @@ class InTmuxByHumanSessionTokenCountHandler {
|
|
|
34
34
|
snapshot: null,
|
|
35
35
|
subscriptionDisabled: false,
|
|
36
36
|
unifiedRejected: false,
|
|
37
|
+
fableRejected: false,
|
|
37
38
|
}));
|
|
38
39
|
const interactiveSessions = this.interactiveSessionRepository.listInteractiveSessions();
|
|
39
40
|
const result = this.useCase.run(candidates, interactiveSessions, input.issues);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InTmuxByHumanSessionTokenCountHandler.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/InTmuxByHumanSessionTokenCountHandler.ts"],"names":[],"mappings":";;;AAEA,0HAAuH;AAEvH,sHAAmH;AACnH,iEAA+D;AAC/D,uEAAqE;AAYrE,MAAa,qCAAqC;IAChD,YACmB,UAAiD,IAAI,6EAAqC,EAAE,EAC5F,+BAAmE,IAAI,+EAAsC,EAAE;QAD/G,YAAO,GAAP,OAAO,CAAqF;QAC5F,iCAA4B,GAA5B,4BAA4B,CAAmF;QAGlI,WAAM,GAAG,CACP,KAAiD,EACJ,EAAE;YAC/C,MAAM,iBAAiB,GAAG,IAAA,kDAAwB,EAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC5E,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBAC/B,OAAO;oBACL,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE;wBACX,sGAAsG;qBACvG;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,IAAA,kCAAgB,EAAC,iBAAiB,CAAC,CAAC;YACpD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO;oBACL,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE;wBACX,uCAAuC,iBAAiB,GAAG;qBAC5D;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAA0B,OAAO,CAAC,GAAG,CACnD,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpB,IAAI;gBACJ,KAAK;gBACL,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,eAAe,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"InTmuxByHumanSessionTokenCountHandler.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/InTmuxByHumanSessionTokenCountHandler.ts"],"names":[],"mappings":";;;AAEA,0HAAuH;AAEvH,sHAAmH;AACnH,iEAA+D;AAC/D,uEAAqE;AAYrE,MAAa,qCAAqC;IAChD,YACmB,UAAiD,IAAI,6EAAqC,EAAE,EAC5F,+BAAmE,IAAI,+EAAsC,EAAE;QAD/G,YAAO,GAAP,OAAO,CAAqF;QAC5F,iCAA4B,GAA5B,4BAA4B,CAAmF;QAGlI,WAAM,GAAG,CACP,KAAiD,EACJ,EAAE;YAC/C,MAAM,iBAAiB,GAAG,IAAA,kDAAwB,EAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC5E,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBAC/B,OAAO;oBACL,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE;wBACX,sGAAsG;qBACvG;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,IAAA,kCAAgB,EAAC,iBAAiB,CAAC,CAAC;YACpD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO;oBACL,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE;wBACX,uCAAuC,iBAAiB,GAAG;qBAC5D;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAA0B,OAAO,CAAC,GAAG,CACnD,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpB,IAAI;gBACJ,KAAK;gBACL,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,eAAe,EAAE,KAAK;gBACtB,aAAa,EAAE,KAAK;aACrB,CAAC,CACH,CAAC;YAEF,MAAM,mBAAmB,GACvB,IAAI,CAAC,4BAA4B,CAAC,uBAAuB,EAAE,CAAC;YAE9D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAC7B,UAAU,EACV,mBAAmB,EACnB,KAAK,CAAC,MAAM,CACb,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAE5E,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CACxC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,EACjC,CAAC,CACF,CAAC;YACF,MAAM,WAAW,GAAG;gBAClB,WAAW,aAAa,4CAA4C,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY;aACrG,CAAC;YAEF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAChC,CAAC,CAAC;IAxDC,CAAC;CAyDL;AA7DD,sFA6DC"}
|
|
@@ -35,6 +35,10 @@ class LiveSessionOauthTokenSelectHandler {
|
|
|
35
35
|
const cacheDirectory = (0, OauthTokenSelectHandler_1.resolveCacheDirectory)(input.cacheDirectory);
|
|
36
36
|
const candidates = entries.map(({ name, token }) => {
|
|
37
37
|
const snapshot = (0, RateLimitCache_1.readRateLimit)(token, cacheDirectory);
|
|
38
|
+
const fableLimit = snapshot?.modelWeeklyLimits[RateLimitCache_1.FABLE_LIMIT_TYPE];
|
|
39
|
+
const fableRejected = fableLimit !== undefined &&
|
|
40
|
+
fableLimit.rejected &&
|
|
41
|
+
input.nowEpochSeconds <= fableLimit.resetsAt;
|
|
38
42
|
return {
|
|
39
43
|
name,
|
|
40
44
|
token,
|
|
@@ -48,6 +52,7 @@ class LiveSessionOauthTokenSelectHandler {
|
|
|
48
52
|
},
|
|
49
53
|
subscriptionDisabled: snapshot?.subscriptionDisabled ?? false,
|
|
50
54
|
unifiedRejected: snapshot?.unifiedRejected ?? false,
|
|
55
|
+
fableRejected,
|
|
51
56
|
};
|
|
52
57
|
});
|
|
53
58
|
const liveSessions = this.liveSessionRepository.listLiveSessions();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveSessionOauthTokenSelectHandler.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.ts"],"names":[],"mappings":";;;AACA,oHAGqE;AACrE,8FAI0D;AAC1D,wGAAqG;AACrG,+
|
|
1
|
+
{"version":3,"file":"LiveSessionOauthTokenSelectHandler.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/LiveSessionOauthTokenSelectHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,10 @@ class OauthTokenSelectHandler {
|
|
|
55
55
|
const cacheDirectory = (0, exports.resolveCacheDirectory)(input.cacheDirectory);
|
|
56
56
|
const candidates = entries.map(({ name, token }) => {
|
|
57
57
|
const snapshot = (0, RateLimitCache_1.readRateLimit)(token, cacheDirectory);
|
|
58
|
+
const fableLimit = snapshot?.modelWeeklyLimits[RateLimitCache_1.FABLE_LIMIT_TYPE];
|
|
59
|
+
const fableRejected = fableLimit !== undefined &&
|
|
60
|
+
fableLimit.rejected &&
|
|
61
|
+
input.nowEpochSeconds <= fableLimit.resetsAt;
|
|
58
62
|
return {
|
|
59
63
|
name,
|
|
60
64
|
token,
|
|
@@ -68,6 +72,7 @@ class OauthTokenSelectHandler {
|
|
|
68
72
|
},
|
|
69
73
|
subscriptionDisabled: snapshot?.subscriptionDisabled ?? false,
|
|
70
74
|
unifiedRejected: snapshot?.unifiedRejected ?? false,
|
|
75
|
+
fableRejected,
|
|
71
76
|
};
|
|
72
77
|
});
|
|
73
78
|
const result = this.useCase.run(candidates, input.nowEpochSeconds);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OauthTokenSelectHandler.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/OauthTokenSelectHandler.ts"],"names":[],"mappings":";;;AAAA,8FAI0D;AAC1D,+
|
|
1
|
+
{"version":3,"file":"OauthTokenSelectHandler.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/OauthTokenSelectHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenStatusWriter.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/tokenStatusWriter.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB,4EAA8E;AAC9E,8GAKuE;AACvE,0HAAuH;AAIvH,+DAA8E;AAC9E,iEAA+D;AAC/D,sHAAmH;AACnH,0GAAuG;AAEvG,MAAM,2BAA2B,GAAG,kBAAkB,CAAC;AACvD,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AAEnD,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAwBzD,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,IAAa,EAAQ,EAAE;IAChE,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,QAAQ,MAAM,CAAC;IAClC,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,YAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAAC,MAAe,EAAY,EAAE;IAChE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,oCAAmB,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,+BAA+B,GAAG,CACtC,iBAAyB,EACzB,MAAc,EACd,IAAc,EACd,UAAkB,EACZ,EAAE;IACR,MAAM,IAAI,GAA6B,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACpE,eAAe,CAAC,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,gCAAgC,GAAG,CACvC,iBAAyB,EACZ,EAAE;IACf,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,SAAmB,CAAC;IACxB,IAAI,CAAC;QACH,SAAS,GAAG,YAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAChC,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAChE,CAAC;YACF,IACE,MAAM,KAAK,IAAI;gBACf,OAAO,MAAM,KAAK,QAAQ;gBAC1B,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;gBACnB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAC3B,CAAC;gBACD,SAAS;YACX,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEK,MAAM,wBAAwB,GAAG,CACtC,QAAkC,EACH,EAAE;IACjC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,aAAa,GACjB,QAAQ,CAAC,aAAa,KAAK,IAAI;QAC/B,QAAQ,CAAC,aAAa,GAAG,CAAC;QAC1B,QAAQ,CAAC,aAAa,GAAG,CAAC;QAC1B,QAAQ,CAAC,mBAAmB,GAAG,CAAC;QAChC,QAAQ,CAAC,mBAAmB,GAAG,CAAC,CAAC;IACnC,OAAO;QACL,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,sBAAsB,EACpB,QAAQ,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,QAAQ;YACjE,KAAK;QACP,oBAAoB,EAClB,QAAQ,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,EAAE,QAAQ,IAAI,KAAK;QAC1E,aAAa;KACd,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,wBAAwB,4BA4BnC;AAEK,MAAM,gBAAgB,GAAG,CAAC,MAA+B,EAAQ,EAAE;IACxE,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACvE,IAAI,CAAC,gBAAgB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,kCAAgB,EAAC,iBAAiB,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACrC,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CACjC,gBAAgB,EAChB,yBAAyB,CAC1B,CAAC;IACF,IAAI,MAAM,EAAE,CAAC;QACX,+BAA+B,CAC7B,iBAAiB,EACjB,MAAM,EACN,2BAA2B,CAAC,MAAM,CAAC,EACnC,GAAG,CAAC,WAAW,EAAE,CAClB,CAAC;IACJ,CAAC;IACD,MAAM,4BAA4B,GAAG,MAAM;QACzC,CAAC,CAAC,gCAAgC,CAAC,iBAAiB,CAAC;QACrD,CAAC,CAAC,IAAI,GAAG,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,8BAAa,CAAC;IAC1D,MAAM,4BAA4B,GAChC,MAAM,CAAC,4BAA4B;QACnC,IAAI,+EAAsC,EAAE,CAAC;IAC/C,MAAM,eAAe,GACnB,MAAM,CAAC,eAAe,IAAI,IAAI,mEAAgC,EAAE,CAAC;IAEnE,MAAM,WAAW,GAAuB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,IAAA,gCAAwB,EAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC9D,CAAC,CAAC,CAAC;IAEJ,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/D,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC;QACjD,MAAM,QAAQ,GACZ,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QAChE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC;QAClE,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,UAAU,GAA0B,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,IAAI;QACd,oBAAoB,EAAE,KAAK;QAC3B,eAAe,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"tokenStatusWriter.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/tokenStatusWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,16 +33,20 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.readRateLimit = exports.parseModelRateLimitsFromHeaders = exports.parseModelRateLimitsFromBody = exports.writeSubscriptionDisabled = exports.writeModelRateLimit = exports.writeRateLimit = exports.cachePathForToken = exports.hashToken = exports.cacheDir = exports.PERMISSION_DISABLED_COOLDOWN_SECONDS = exports.HEADERLESS_429_MAX_COOLDOWN_SECONDS = exports.HEADERLESS_429_DEFAULT_COOLDOWN_SECONDS = exports.PROXY_PORT = void 0;
|
|
36
|
+
exports.readRateLimit = exports.parseModelRateLimitsFromHeaders = exports.parseModelRateLimitsFromBody = exports.writeSubscriptionDisabled = exports.writeFableRejection = exports.parseSevenDayRejection = exports.isFableModel = exports.writeModelRateLimit = exports.writeRateLimit = exports.cachePathForToken = exports.hashToken = exports.cacheDir = exports.PERMISSION_DISABLED_COOLDOWN_SECONDS = exports.HEADERLESS_429_MAX_COOLDOWN_SECONDS = exports.HEADERLESS_429_DEFAULT_COOLDOWN_SECONDS = exports.FABLE_LIMIT_TYPE = exports.PROXY_PORT = void 0;
|
|
37
37
|
const crypto = __importStar(require("crypto"));
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const os = __importStar(require("os"));
|
|
40
40
|
const path = __importStar(require("path"));
|
|
41
41
|
exports.PROXY_PORT = 8787;
|
|
42
|
+
exports.FABLE_LIMIT_TYPE = 'seven_day_fable';
|
|
42
43
|
const HASH_ALGORITHM = 'sha256';
|
|
43
44
|
exports.HEADERLESS_429_DEFAULT_COOLDOWN_SECONDS = 90;
|
|
44
45
|
exports.HEADERLESS_429_MAX_COOLDOWN_SECONDS = 600;
|
|
45
46
|
exports.PERMISSION_DISABLED_COOLDOWN_SECONDS = 3600;
|
|
47
|
+
const FIVE_HOUR_STATUS_HEADER = 'anthropic-ratelimit-unified-5h-status';
|
|
48
|
+
const SEVEN_DAY_STATUS_HEADER = 'anthropic-ratelimit-unified-7d-status';
|
|
49
|
+
const SEVEN_DAY_RESET_HEADER = 'anthropic-ratelimit-unified-7d-reset';
|
|
46
50
|
const cacheDir = () => {
|
|
47
51
|
const base = process.env.XDG_CACHE_HOME ?? path.join(os.homedir(), '.cache');
|
|
48
52
|
return path.join(base, 'tdpm', 'ratelimit');
|
|
@@ -166,6 +170,33 @@ const writeModelRateLimit = (token, limits) => {
|
|
|
166
170
|
fs.writeFileSync(filePath, JSON.stringify(payload));
|
|
167
171
|
};
|
|
168
172
|
exports.writeModelRateLimit = writeModelRateLimit;
|
|
173
|
+
const isFableModel = (modelName) => (modelName ?? '').toLowerCase().includes('fable');
|
|
174
|
+
exports.isFableModel = isFableModel;
|
|
175
|
+
const pickHeaderValue = (headers, key) => {
|
|
176
|
+
const value = headers[key];
|
|
177
|
+
return Array.isArray(value) ? value[0] : value;
|
|
178
|
+
};
|
|
179
|
+
const parseSevenDayRejection = (headers) => {
|
|
180
|
+
const status = pickHeaderValue(headers, SEVEN_DAY_STATUS_HEADER);
|
|
181
|
+
const resetRaw = pickHeaderValue(headers, SEVEN_DAY_RESET_HEADER);
|
|
182
|
+
const sevenDayReset = resetRaw !== undefined && Number.isFinite(Number(resetRaw))
|
|
183
|
+
? Number(resetRaw)
|
|
184
|
+
: null;
|
|
185
|
+
return {
|
|
186
|
+
sevenDayRejected: status === 'rejected',
|
|
187
|
+
sevenDayReset,
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
exports.parseSevenDayRejection = parseSevenDayRejection;
|
|
191
|
+
const writeFableRejection = (token, retryAfterSeconds, sevenDayReset = null) => {
|
|
192
|
+
const resetsAt = sevenDayReset !== null && sevenDayReset > 0
|
|
193
|
+
? sevenDayReset
|
|
194
|
+
: cooldownEndFromRetryAfter(retryAfterSeconds, Date.now() / 1000);
|
|
195
|
+
(0, exports.writeModelRateLimit)(token, {
|
|
196
|
+
[exports.FABLE_LIMIT_TYPE]: { rejected: true, resetsAt },
|
|
197
|
+
});
|
|
198
|
+
};
|
|
199
|
+
exports.writeFableRejection = writeFableRejection;
|
|
169
200
|
const writeSubscriptionDisabled = (token, baseDir = (0, exports.cacheDir)()) => {
|
|
170
201
|
const dir = baseDir;
|
|
171
202
|
if (!fs.existsSync(dir)) {
|
|
@@ -260,8 +291,8 @@ const readRateLimit = (token, baseDir = (0, exports.cacheDir)()) => {
|
|
|
260
291
|
return Number.isFinite(parsedValue) ? parsedValue : 0;
|
|
261
292
|
};
|
|
262
293
|
const status = headers['anthropic-ratelimit-unified-status'];
|
|
263
|
-
const fiveHourStatus = headers[
|
|
264
|
-
const sevenDayStatus = headers[
|
|
294
|
+
const fiveHourStatus = headers[FIVE_HOUR_STATUS_HEADER];
|
|
295
|
+
const sevenDayStatus = headers[SEVEN_DAY_STATUS_HEADER];
|
|
265
296
|
const overageDisabledReason = headers['anthropic-ratelimit-unified-overage-disabled-reason'];
|
|
266
297
|
const unifiedRejected = status === 'rejected';
|
|
267
298
|
const fiveHourRejected = fiveHourStatus === 'rejected';
|
|
@@ -282,7 +313,7 @@ const readRateLimit = (token, baseDir = (0, exports.cacheDir)()) => {
|
|
|
282
313
|
fiveHourUtilization: num('anthropic-ratelimit-unified-5h-utilization'),
|
|
283
314
|
fiveHourReset: num('anthropic-ratelimit-unified-5h-reset'),
|
|
284
315
|
sevenDayUtilization: num('anthropic-ratelimit-unified-7d-utilization'),
|
|
285
|
-
sevenDayReset: num(
|
|
316
|
+
sevenDayReset: num(SEVEN_DAY_RESET_HEADER),
|
|
286
317
|
blocked: status === 'blocked' ||
|
|
287
318
|
fiveHourStatus === 'blocked' ||
|
|
288
319
|
sevenDayStatus === 'blocked',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimitCache.js","sourceRoot":"","sources":["../../../src/adapter/proxy/RateLimitCache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAyBhB,QAAA,UAAU,GAAG,IAAI,CAAC;AAE/B,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEnB,QAAA,uCAAuC,GAAG,EAAE,CAAC;AAE7C,QAAA,mCAAmC,GAAG,GAAG,CAAC;AAE1C,QAAA,oCAAoC,GAAG,IAAI,CAAC;AAElD,MAAM,QAAQ,GAAG,GAAW,EAAE;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC9C,CAAC,CAAC;AAHW,QAAA,QAAQ,YAGnB;AAEK,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CACjD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AADnD,QAAA,SAAS,aAC0C;AAEzD,MAAM,iBAAiB,GAAG,CAC/B,KAAa,EACb,UAAkB,IAAA,gBAAQ,GAAE,EACpB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAH/C,QAAA,iBAAiB,qBAG8B;AAE5D,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,WAAW,GAAG,CAAC,QAAgB,EAA2B,EAAE;IAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC5B,OAAgC,EACE,EAAE;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACzC,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACrC,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,OAAO,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClE,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,CACpC,OAAgC,EAC+B,EAAE;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IACjD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAChC,iBAAgC,EAChC,eAAuB,EACf,EAAE;IACV,MAAM,eAAe,GACnB,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,GAAG,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,2CAAmC,CAAC;QAClE,CAAC,CAAC,+CAAuC,CAAC;IAC9C,OAAO,eAAe,GAAG,eAAe,CAAC;AAC3C,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,CAC5B,KAAa,EACb,OAAsD,EACtD,aAA4B,IAAI,EAC1B,EAAE;IACR,MAAM,IAAI,GAAG,CAAC,GAAW,EAAsB,EAAE;QAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,gBAAgB,GAA2B,EAAE,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,IAAA,gBAAQ,GAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,iBAAiB,GACrB,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACnE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;YACvB,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,iBAAiB,GAAG,yBAAyB,CACjD,iBAAiB,EACjB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAClB,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,OAAO,GAAG;YACd,GAAG,QAAQ;YACX,iBAAiB;SAClB,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG;QACd,GAAG,6BAA6B,CAAC,QAAQ,CAAC;QAC1C,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;QACrB,OAAO,EAAE,gBAAgB;QACzB,iBAAiB,EAAE,qBAAqB,CAAC,QAAQ,CAAC;KACnD,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAxDW,QAAA,cAAc,kBAwDzB;AAEK,MAAM,mBAAmB,GAAG,CACjC,KAAa,EACb,MAAwC,EAClC,EAAE;IACR,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACpC,MAAM,GAAG,GAAG,IAAA,gBAAQ,GAAE,CAAC;IACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG;QACb,GAAG,qBAAqB,CAAC,QAAQ,CAAC;QAClC,GAAG,MAAM;KACV,CAAC;IACF,MAAM,OAAO,GAAG;QACd,GAAG,QAAQ;QACX,iBAAiB,EAAE,MAAM;KAC1B,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AArBW,QAAA,mBAAmB,uBAqB9B;AAEK,MAAM,yBAAyB,GAAG,CACvC,KAAa,EACb,UAAkB,IAAA,gBAAQ,GAAE,EACtB,EAAE;IACR,MAAM,GAAG,GAAG,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG;QACd,GAAG,QAAQ;QACX,yBAAyB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;KAC7C,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAfW,QAAA,yBAAyB,6BAepC;AAEK,MAAM,4BAA4B,GAAG,CAC1C,IAAY,EACsB,EAAE;IACpC,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACxB,kFAAkF,CACnF,CAAC;IACF,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACpC,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QAChC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,OAAO,aAAa,KAAK,QAAQ;YAAE,SAAS;QAChD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,SAAS;QACzC,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,SAAS;QAC3C,MAAM,CAAC,aAAa,CAAC,GAAG;YACtB,QAAQ,EAAE,MAAM,KAAK,UAAU;YAC/B,QAAQ;SACT,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA5BW,QAAA,4BAA4B,gCA4BvC;AAEF,MAAM,0BAA0B,GAA2B;IACzD,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,gBAAgB;CAC5B,CAAC;AAEK,MAAM,+BAA+B,GAAG,CAC7C,OAA+B,EACG,EAAE;IACpC,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CACnD,0BAA0B,CAC3B,EAAE,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,+BAA+B,WAAW,SAAS,CAAC,CAAC;QAC5E,MAAM,QAAQ,GACZ,OAAO,CAAC,+BAA+B,WAAW,QAAQ,CAAC,CAAC;QAC9D,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,MAAM,QAAQ,GACZ,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClB,CAAC,CAAC,CAAC,CAAC;QACR,MAAM,CAAC,SAAS,CAAC,GAAG;YAClB,QAAQ,EAAE,MAAM,KAAK,UAAU;YAC/B,QAAQ;SACT,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AArBW,QAAA,+BAA+B,mCAqB1C;AAEK,MAAM,aAAa,GAAG,CAC3B,KAAa,EACb,UAAkB,IAAA,gBAAQ,GAAE,EACF,EAAE;IAC5B,MAAM,QAAQ,GAAG,IAAA,yBAAiB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;QACtC,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,GAAW,EAAU,EAAE;YAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC;YACxC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,oCAAoC,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,OAAO,CAAC,uCAAuC,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,OAAO,CAAC,uCAAuC,CAAC,CAAC;QACxE,MAAM,qBAAqB,GACzB,OAAO,CAAC,qDAAqD,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,MAAM,KAAK,UAAU,CAAC;QAC9C,MAAM,gBAAgB,GAAG,cAAc,KAAK,UAAU,CAAC;QACvD,MAAM,gBAAgB,GAAG,cAAc,KAAK,UAAU,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,gBAAgB,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACpD,MAAM,iBAAiB,GACrB,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,+BAA+B,GAAG,MAAM,CAAC,yBAAyB,CAAC;QACzE,MAAM,yBAAyB,GAC7B,OAAO,+BAA+B,KAAK,QAAQ;YACjD,CAAC,CAAC,+BAA+B;YACjC,CAAC,CAAC,CAAC,CAAC;QACR,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC1C,MAAM,oBAAoB,GACxB,yBAAyB,GAAG,CAAC;YAC7B,eAAe,GAAG,yBAAyB;gBACzC,4CAAoC,CAAC;QACzC,OAAO;YACL,mBAAmB,EAAE,GAAG,CAAC,4CAA4C,CAAC;YACtE,aAAa,EAAE,GAAG,CAAC,sCAAsC,CAAC;YAC1D,mBAAmB,EAAE,GAAG,CAAC,4CAA4C,CAAC;YACtE,aAAa,EAAE,GAAG,CAAC,sCAAsC,CAAC;YAC1D,OAAO,EACL,MAAM,KAAK,SAAS;gBACpB,cAAc,KAAK,SAAS;gBAC5B,cAAc,KAAK,SAAS;YAC9B,QAAQ,EAAE,eAAe,IAAI,gBAAgB,IAAI,gBAAgB;YACjE,eAAe;YACf,gBAAgB;YAChB,gBAAgB;YAChB,aAAa,EAAE,MAAM,IAAI,IAAI;YAC7B,qBAAqB,EAAE,qBAAqB,IAAI,IAAI;YACpD,iBAAiB,EAAE;gBACjB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC;gBAC3C,GAAG,qBAAqB,CAAC,MAAM,CAAC;aACjC;YACD,gBAAgB;YAChB,iBAAiB;YACjB,oBAAoB;SACrB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AA1EW,QAAA,aAAa,iBA0ExB"}
|
|
1
|
+
{"version":3,"file":"RateLimitCache.js","sourceRoot":"","sources":["../../../src/adapter/proxy/RateLimitCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,9 +70,43 @@ const isPermissionError = (body) => {
|
|
|
70
70
|
return false;
|
|
71
71
|
return error.type === 'permission_error';
|
|
72
72
|
};
|
|
73
|
+
const matchModelInBody = (requestBody) => {
|
|
74
|
+
const match = requestBody.match(/"model"\s*:\s*"([^"]+)"/);
|
|
75
|
+
return match !== null ? match[1] : null;
|
|
76
|
+
};
|
|
77
|
+
const extractRequestModel = (requestBody) => {
|
|
78
|
+
try {
|
|
79
|
+
const parsed = JSON.parse(requestBody);
|
|
80
|
+
if (isRecord(parsed) && typeof parsed.model === 'string') {
|
|
81
|
+
return parsed.model;
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return matchModelInBody(requestBody);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const parseRetryAfterSeconds = (headers) => {
|
|
90
|
+
const raw = headers['retry-after'];
|
|
91
|
+
const value = typeof raw === 'string' ? raw : Array.isArray(raw) ? raw[0] : null;
|
|
92
|
+
if (typeof value !== 'string')
|
|
93
|
+
return null;
|
|
94
|
+
const parsed = Number(value);
|
|
95
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
96
|
+
};
|
|
73
97
|
const startProxy = (port, claudeMessageResponseRepository = null) => {
|
|
74
98
|
const server = http.createServer((clientRequest, clientResponse) => {
|
|
75
99
|
const token = extractToken(clientRequest.headers['authorization']);
|
|
100
|
+
const requestChunks = [];
|
|
101
|
+
let requestBytes = 0;
|
|
102
|
+
if (token !== null) {
|
|
103
|
+
clientRequest.on('data', (chunk) => {
|
|
104
|
+
if (requestBytes >= MAX_INSPECTED_BODY_BYTES)
|
|
105
|
+
return;
|
|
106
|
+
requestChunks.push(new Uint8Array(chunk));
|
|
107
|
+
requestBytes += chunk.length;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
76
110
|
const upstreamHeaders = {
|
|
77
111
|
...clientRequest.headers,
|
|
78
112
|
host: UPSTREAM_HOST,
|
|
@@ -117,6 +151,20 @@ const startProxy = (port, claudeMessageResponseRepository = null) => {
|
|
|
117
151
|
console.error('Failed to write subscription disabled cache:', error);
|
|
118
152
|
}
|
|
119
153
|
}
|
|
154
|
+
if (upstreamResponse.statusCode === 429) {
|
|
155
|
+
try {
|
|
156
|
+
const requestModel = extractRequestModel(Buffer.concat(requestChunks).toString('utf8'));
|
|
157
|
+
if ((0, RateLimitCache_1.isFableModel)(requestModel)) {
|
|
158
|
+
const { sevenDayRejected, sevenDayReset } = (0, RateLimitCache_1.parseSevenDayRejection)(upstreamResponse.headers);
|
|
159
|
+
if (sevenDayRejected) {
|
|
160
|
+
(0, RateLimitCache_1.writeFableRejection)(token, parseRetryAfterSeconds(upstreamResponse.headers), sevenDayReset);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
console.error('Failed to write fable rejection cache:', error);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
120
168
|
if (claudeMessageResponseRepository !== null) {
|
|
121
169
|
try {
|
|
122
170
|
const response = (0, ClaudeMessageResponseParser_1.parseClaudeMessageResponse)((0, RateLimitCache_1.hashToken)(token), upstreamResponse.statusCode ?? 0, upstreamResponse.headers, body);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyEntry.js","sourceRoot":"","sources":["../../../src/adapter/proxy/proxyEntry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,6CAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"proxyEntry.js","sourceRoot":"","sources":["../../../src/adapter/proxy/proxyEntry.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ class OauthTokenSelectUseCase {
|
|
|
26
26
|
const fiveHourFreeRatio = this.fiveHourFreeRatio(candidate.snapshot, nowEpochSeconds);
|
|
27
27
|
const sevenDayFreeRatio = this.sevenDayFreeRatio(candidate.snapshot, nowEpochSeconds);
|
|
28
28
|
const sevenDayEndEpoch = this.sevenDayEndEpoch(candidate.snapshot, nowEpochSeconds);
|
|
29
|
-
const exclusionReason = this.exclusionReason(candidate.subscriptionDisabled, candidate.unifiedRejected, fiveHourFreeRatio, sevenDayFreeRatio);
|
|
29
|
+
const exclusionReason = this.exclusionReason(candidate.subscriptionDisabled, candidate.unifiedRejected, candidate.fableRejected, fiveHourFreeRatio, sevenDayFreeRatio);
|
|
30
30
|
return {
|
|
31
31
|
name: candidate.name,
|
|
32
32
|
fiveHourFreeRatio,
|
|
@@ -36,13 +36,16 @@ class OauthTokenSelectUseCase {
|
|
|
36
36
|
exclusionReason,
|
|
37
37
|
};
|
|
38
38
|
};
|
|
39
|
-
this.exclusionReason = (subscriptionDisabled, unifiedRejected, fiveHourFreeRatio, sevenDayFreeRatio) => {
|
|
39
|
+
this.exclusionReason = (subscriptionDisabled, unifiedRejected, fableRejected, fiveHourFreeRatio, sevenDayFreeRatio) => {
|
|
40
40
|
if (subscriptionDisabled) {
|
|
41
41
|
return 'organization has disabled Claude subscription access for Claude Code';
|
|
42
42
|
}
|
|
43
43
|
if (unifiedRejected) {
|
|
44
44
|
return 'token request was rejected (anthropic-ratelimit-unified-status: rejected)';
|
|
45
45
|
}
|
|
46
|
+
if (fableRejected) {
|
|
47
|
+
return 'fable weekly limit exhausted (a fable request was rejected with HTTP 429)';
|
|
48
|
+
}
|
|
46
49
|
if (fiveHourFreeRatio < exports.FIVE_HOUR_MIN_FREE_RATIO) {
|
|
47
50
|
return `5h window only ${this.toPercent(fiveHourFreeRatio)}% free (requires >= ${this.toPercent(exports.FIVE_HOUR_MIN_FREE_RATIO)}%)`;
|
|
48
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OauthTokenSelectUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/OauthTokenSelectUseCase.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"OauthTokenSelectUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/OauthTokenSelectUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
ClaudeLiveSessionRepository,
|
|
7
7
|
} from '../../../domain/usecases/adapter-interfaces/ClaudeLiveSessionRepository';
|
|
8
8
|
import { LiveSessionOauthTokenSelectUseCase } from '../../../domain/usecases/LiveSessionOauthTokenSelectUseCase';
|
|
9
|
-
import { hashToken } from '../../proxy/RateLimitCache';
|
|
9
|
+
import { FABLE_LIMIT_TYPE, hashToken } from '../../proxy/RateLimitCache';
|
|
10
10
|
import { LiveSessionOauthTokenSelectHandler } from './LiveSessionOauthTokenSelectHandler';
|
|
11
11
|
|
|
12
12
|
const NOW = 2_000_000;
|
|
@@ -115,6 +115,54 @@ describe('LiveSessionOauthTokenSelectHandler', () => {
|
|
|
115
115
|
new FakeClaudeLiveSessionRepository(sessions),
|
|
116
116
|
);
|
|
117
117
|
|
|
118
|
+
const writeFableRejectionCache = (token: string, resetsAt: number): void => {
|
|
119
|
+
const payload = {
|
|
120
|
+
ts: NOW,
|
|
121
|
+
headers: {
|
|
122
|
+
'anthropic-ratelimit-unified-status': 'allowed',
|
|
123
|
+
'anthropic-ratelimit-unified-5h-status': 'allowed',
|
|
124
|
+
'anthropic-ratelimit-unified-5h-reset': String(NOW + HOUR),
|
|
125
|
+
'anthropic-ratelimit-unified-5h-utilization': '0.1',
|
|
126
|
+
'anthropic-ratelimit-unified-7d-status': 'allowed',
|
|
127
|
+
'anthropic-ratelimit-unified-7d-reset': String(NOW + DAY),
|
|
128
|
+
'anthropic-ratelimit-unified-7d-utilization': '0.1',
|
|
129
|
+
},
|
|
130
|
+
modelWeeklyLimits: {
|
|
131
|
+
[FABLE_LIMIT_TYPE]: { rejected: true, resetsAt },
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
fs.writeFileSync(
|
|
135
|
+
path.join(cacheDirectory, `${hashToken(token)}.json`),
|
|
136
|
+
JSON.stringify(payload),
|
|
137
|
+
);
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
it('excludes a token whose fable marker is set even when it is unoccupied', () => {
|
|
141
|
+
writeTokenList([
|
|
142
|
+
{ name: 'fable-out', token: 'fake-fable-out' },
|
|
143
|
+
{ name: 'active', token: 'fake-active' },
|
|
144
|
+
]);
|
|
145
|
+
writeFableRejectionCache('fake-fable-out', NOW + HOUR);
|
|
146
|
+
writeCache('fake-active', {
|
|
147
|
+
fiveHourUtilization: 0.1,
|
|
148
|
+
fiveHourReset: NOW + HOUR,
|
|
149
|
+
sevenDayUtilization: 0.1,
|
|
150
|
+
sevenDayReset: NOW + DAY,
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
const handler = buildHandler([]);
|
|
154
|
+
const output = handler.handle({
|
|
155
|
+
tokenListJsonPath: tokenListPath,
|
|
156
|
+
cacheDirectory,
|
|
157
|
+
nowEpochSeconds: NOW,
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
expect(output.selectedName).toBe('active');
|
|
161
|
+
expect(output.diagnostics.join('\n')).toContain(
|
|
162
|
+
'fable weekly limit exhausted',
|
|
163
|
+
);
|
|
164
|
+
});
|
|
165
|
+
|
|
118
166
|
it('selects the eligible token with the fewest live sessions', () => {
|
|
119
167
|
writeTokenList([
|
|
120
168
|
{ name: 'busy', token: 'fake-busy' },
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
SEVEN_DAY_MIN_FREE_RATIO,
|
|
10
10
|
} from '../../../domain/usecases/OauthTokenSelectUseCase';
|
|
11
11
|
import { ProcClaudeLiveSessionRepository } from '../../repositories/ProcClaudeLiveSessionRepository';
|
|
12
|
-
import { readRateLimit } from '../../proxy/RateLimitCache';
|
|
12
|
+
import { FABLE_LIMIT_TYPE, readRateLimit } from '../../proxy/RateLimitCache';
|
|
13
13
|
import { loadTokenEntries } from '../../proxy/TokenListLoader';
|
|
14
14
|
import {
|
|
15
15
|
resolveCacheDirectory,
|
|
@@ -63,6 +63,11 @@ export class LiveSessionOauthTokenSelectHandler {
|
|
|
63
63
|
|
|
64
64
|
const candidates: OauthTokenCandidate[] = entries.map(({ name, token }) => {
|
|
65
65
|
const snapshot = readRateLimit(token, cacheDirectory);
|
|
66
|
+
const fableLimit = snapshot?.modelWeeklyLimits[FABLE_LIMIT_TYPE];
|
|
67
|
+
const fableRejected =
|
|
68
|
+
fableLimit !== undefined &&
|
|
69
|
+
fableLimit.rejected &&
|
|
70
|
+
input.nowEpochSeconds <= fableLimit.resetsAt;
|
|
66
71
|
return {
|
|
67
72
|
name,
|
|
68
73
|
token,
|
|
@@ -77,6 +82,7 @@ export class LiveSessionOauthTokenSelectHandler {
|
|
|
77
82
|
},
|
|
78
83
|
subscriptionDisabled: snapshot?.subscriptionDisabled ?? false,
|
|
79
84
|
unifiedRejected: snapshot?.unifiedRejected ?? false,
|
|
85
|
+
fableRejected,
|
|
80
86
|
};
|
|
81
87
|
});
|
|
82
88
|
|