quota-axi 0.1.44 → 0.1.45
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/README.md +30 -24
- package/dist/src/cli.js +2 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/interpretation.d.ts +1 -0
- package/dist/src/interpretation.js +80 -2
- package/dist/src/interpretation.js.map +1 -1
- package/dist/src/lib/claude-profile.d.ts +15 -0
- package/dist/src/lib/claude-profile.js +18 -0
- package/dist/src/lib/claude-profile.js.map +1 -1
- package/dist/src/lib/fs.js +10 -1
- package/dist/src/lib/fs.js.map +1 -1
- package/dist/src/pace.js +9 -0
- package/dist/src/pace.js.map +1 -1
- package/dist/src/providers/agy.js +78 -54
- package/dist/src/providers/agy.js.map +1 -1
- package/dist/src/providers/claude.js +85 -8
- package/dist/src/providers/claude.js.map +1 -1
- package/dist/src/providers/codex.js +1 -1
- package/dist/src/providers/codex.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ $ npx -y quota-axi
|
|
|
35
35
|
bin: ~/.npm/_npx/.../quota-axi
|
|
36
36
|
description: Report local agent-provider quota windows for routing-aware agents
|
|
37
37
|
generatedAt: "2026-03-15T16:42:00.000Z"
|
|
38
|
-
quota[
|
|
38
|
+
quota[12]{provider,scope,effectivePercentRemaining,spendPriority,runway,confidence,limitedBy,resetsAt}:
|
|
39
39
|
claude,all_models,64,-0.3798,projected_exhaustion,established,seven_day,"2026-03-20T17:59:45.600Z"
|
|
40
40
|
claude,seven_day_opus,64,0.3218,projected_exhaustion,established,seven_day,"2026-03-20T17:59:45.600Z"
|
|
41
41
|
claude,"model:fable",64,-0.0932,projected_exhaustion,established,seven_day,"2026-03-20T17:59:45.600Z"
|
|
@@ -46,6 +46,8 @@ quota[10]{provider,scope,effectivePercentRemaining,spendPriority,runway,confiden
|
|
|
46
46
|
kimi,all_models,74,0.2484,through_reset,established,weekly,"2026-03-20T12:17:02.400Z"
|
|
47
47
|
zai,all_models,50,-1.0046,projected_exhaustion,established,weekly,"2026-03-20T16:42:00.000Z"
|
|
48
48
|
zai,tools,100,unknown,unknown,unknown,mcp_month,"2026-04-01T00:00:00.000Z"
|
|
49
|
+
agy,gemini,88,unknown,unknown,unknown,gemini_weekly,"2026-03-20T00:00:00.000Z"
|
|
50
|
+
agy,claude_gpt,90,unknown,unknown,unknown,claude_gpt_weekly,"2026-03-21T00:00:00.000Z"
|
|
49
51
|
exhaustion[6]{provider,scope,usableRunwaySeconds,projectedExhaustedAt,limitingWindowId}:
|
|
50
52
|
claude,all_models,298906,"2026-03-19T03:43:45.600Z",seven_day
|
|
51
53
|
claude,seven_day_opus,298906,"2026-03-19T03:43:45.600Z",seven_day
|
|
@@ -53,10 +55,11 @@ exhaustion[6]{provider,scope,usableRunwaySeconds,projectedExhaustedAt,limitingWi
|
|
|
53
55
|
codex,all_models,10365,"2026-03-15T19:34:45.428Z",five_hour
|
|
54
56
|
codex,"model:gpt-5.1-codex",10365,"2026-03-15T19:34:45.428Z",five_hour
|
|
55
57
|
zai,all_models,172800,"2026-03-17T16:42:00.000Z",weekly
|
|
56
|
-
attention[
|
|
58
|
+
attention[4]{provider,scope,kind,detail,remedy}:
|
|
57
59
|
copilot,all,unresolved_windows,chat + premium_interactions,none
|
|
58
60
|
zai,tools,unmeasurable,"mcp_month blocks runway + spendPriority",none
|
|
59
|
-
agy,
|
|
61
|
+
agy,gemini,unmeasurable,"gemini_5h + gemini_weekly blocks runway + spendPriority",none
|
|
62
|
+
agy,claude_gpt,unmeasurable,"claude_gpt_5h + claude_gpt_weekly blocks runway + spendPriority",none
|
|
60
63
|
help[1]:
|
|
61
64
|
Run `quota-axi --full` for windows, pace, reserve, and account evidence
|
|
62
65
|
```
|
|
@@ -341,7 +344,7 @@ CODEX_HOME=/path/to/codex-profile quota-axi --provider codex --profile-only --fu
|
|
|
341
344
|
- The headline is labeled with the window it actually is: the minimum across bounding windows always equals at least one named window, so the label names the `limitingWindowIds` window (`week`, `session`, `credits`) and changes per provider and over time. Tied limiting windows read `credits + grok build`, compacting to `credits +2` when the names do not fit; a model- or product-scoped headline appends its scope, and any unresolved limiter falls back to the scope wording (`all models`).
|
|
342
345
|
- The bar fill is current headroom; the `┃` marker sits at the binding window's `pace.timeRemainingPercent`, the fill position of exactly linear burn. The headline marker therefore matches the corresponding `limitingWindowIds` sub-bar even when another window supplies the finite-runway `empty in` verdict. Fill ending left of the marker means burning faster than the reset clock. The marker is omitted when that window's pace is unknown.
|
|
343
346
|
- Pace is shown by the bar and marker alone, never as a numeric burn multiple. The runway verdict on the headline reads `on pace ✓` for `through_reset` and `empty in 7h 21m` for `projected_exhaustion`. Two-up rows keep both card bottoms aligned by padding the shorter card inside its border. The TUI does not display the per-scope selection signal; that signal remains on the JSON and TOON machine surfaces. Those surfaces also keep the `through_reset` vocabulary, while `--full --json` exposes the complete `pace` object. The TUI renders from the complete in-memory model, so `--json` tiering never removes anything it draws.
|
|
344
|
-
- A provider whose window relationships are wholly unknown (Copilot
|
|
347
|
+
- A provider whose window relationships are wholly unknown (Copilot or Antigravity, with every window unresolved) has no combined effective percentage, pace, or runway to show, so its card replaces the headline block with a single `per-window usage · no combined bound` line and leads straight into its real per-window rows. Partially understood providers keep the effective-unknown headline. No combined headroom, pace, or runway number is invented.
|
|
345
348
|
- Signed-out and failed providers stay visible as dimmed cards and are excluded from the fleet totals in the header.
|
|
346
349
|
- Width comes from the terminal, clamped to 80-120 columns; below the two-up width the grid reflows to one column. Color honors `NO_COLOR`, `TERM=dumb`, and non-TTY stdout (the glyph skeleton is kept), re-enables with `FORCE_COLOR`, and uses truecolor when `COLORTERM` advertises it, falling back to 256-color then ANSI-16.
|
|
347
350
|
- `--tui` composes with `--provider` scoping and `--full` (account identity and source-attempt footers). It is mutually exclusive with `--json` and only supported by the `quota` command.
|
|
@@ -442,7 +445,7 @@ When no Grok credential establishes usability but at least one still has a valid
|
|
|
442
445
|
True Grok sign-out or definitive remote rejection uses `state.authStatus: unusable` with `state.status: auth_required` and `state.error: Grok sign-in required` (no `credentials_expired` reason). For official Grok Build OIDC and Pi OAuth, a rejection from the consumer Usage-page operation alone is not that verdict because those access tokens can have a different audience; the matching first-party model catalog must reject the same bearer too. `authStatus: unusable` by itself only means that no source established usability; for example, a Pi credential-resolution failure instead has `state.status: error`. Callers must branch on `authStatus`, `status`, and `reason`, not on human error prose alone, and must not treat `expired_refreshable` as logged out.
|
|
443
446
|
When Grok Build OAuth, Pi `xai` OAuth, or a Pi `xai` API key establishes model usability but consumer credit windows cannot be read, `state.authStatus` is `usable`, windows stay empty, and `state.error` is `Grok model access available; quota unavailable` rather than sign-in required. This is authenticated-but-unmeasurable, not a percentage or evidence of unlimited capacity.
|
|
444
447
|
|
|
445
|
-
A provider with more than one credential source consults them in its fixed declared order and reports the one that works, so a broken store never speaks for a provider whose sibling store still answers. A store's own expiry field is advisory within that source, never a verdict or a reason to reorder sources: a stored-expired credential is still probed in its source's declared position because only the provider's own endpoint can establish that a credential is dead. The superseded source is not discarded: `state.degradedSources` names it on the fresh reading, and default TOON emits a `degraded_source` attention row for it. Pi auth readers reserve `missing` for an absent file or provider property; malformed stores and present non-object or structurally invalid entries are `invalid`. Handover is limited to credential problems - a transport, decoding, or server failure is about the request rather than the credential, so it is reported as-is instead of being retried on a second credential. When no source works the provider still reports its auth problem, and a source that only failed transiently outranks a definitive rejection so a rejected credential is never reported as a sign-out while a sibling's outage is unresolved.
|
|
448
|
+
A provider with more than one credential source consults them in its fixed declared order and reports the one that works, so a broken store never speaks for a provider whose sibling store still answers. A store's own expiry field is advisory within that source, never a verdict or a reason to reorder sources: a stored-expired credential is still probed in its source's declared position because only the provider's own endpoint can establish that a credential is dead. The superseded source is not discarded: `state.degradedSources` names it on the fresh reading, and default TOON emits a `degraded_source` attention row for it. Pi auth readers reserve `missing` for an absent file or provider property; malformed stores and present non-object or structurally invalid entries are `invalid`. Handover is limited to credential problems - a transport, decoding, or server failure is about the request rather than the credential, so it is reported as-is instead of being retried on a second credential. When no source works the provider still reports its auth problem, and a source that only failed transiently outranks a definitive rejection so a rejected credential is never reported as a sign-out while a sibling's outage is unresolved. Claude's `env` plus stored-credential fallback is the one exception: because `env` is consulted first and only its own non-definitive failure hands over to a stored source, a later definitive rejection from that stored source outranks the earlier transient `env` failure instead of being masked by it (see [Claude provider notes](#provider-notes)).
|
|
446
449
|
|
|
447
450
|
Claude credential failures without a usable access token preserve the precise `credentials_missing` or `credentials_invalid` error. A usage response with HTTP 401 reports `Claude sign-in required` only when it definitively establishes account authentication failure; the [Claude provider notes](#provider-notes) own the withheld-Keychain exception and cache effects. HTTP 403 is not sufficient authentication evidence because network policy and WAF denials use it too; it stays unavailable or stale rather than claiming sign-out.
|
|
448
451
|
|
|
@@ -467,7 +470,9 @@ Cursor's IDE windows (`included_usage`, `auto_usage`, `api_usage`, and optional
|
|
|
467
470
|
|
|
468
471
|
Z.AI's `five_hour` and `weekly` usage windows jointly bound model usage and are reported as one `all_models` scope, while the `mcp_month` tool window is a separate resource reported as its own `tools` scope; a tool window near exhaustion therefore never lowers model headroom, and model windows never mask tool exhaustion. An unfamiliar or untrusted Z.AI window is not folded into either bound: it stays named in `unresolvedWindowIds`, turns the provider's semantics `partial`, and leaves both scopes non-definitive because it could add a bound to either.
|
|
469
472
|
|
|
470
|
-
Alibaba's account `weekly` window is reported at `all_models` scope, while each `model:*` limit is kept only at its named model scope; a model limit never becomes an account-wide bound. OpenCode Go's rolling, weekly, and monthly windows are
|
|
473
|
+
Alibaba's account `weekly` window is reported at `all_models` scope, while each `model:*` limit is kept only at its named model scope; a model limit never becomes an account-wide bound. OpenCode Go's rolling, weekly, and monthly windows are stacked plan caps ($12 per rolling 5 hours, $30 per week, $60 per month) that jointly bound Go-plan usage at `all_models` scope, so effective remaining is the minimum across them. A zeroed plan window blocks Go-plan requests, but the vendor's free-model fallback or an opted-in Zen balance may still serve past it, which the usage endpoint does not report.
|
|
474
|
+
|
|
475
|
+
Antigravity groups its Gemini windows (`gemini_5h`, `gemini_weekly`) and its Claude/GPT windows (`claude_gpt_5h`, `claude_gpt_weekly`) into two independent scopes, `gemini` and `claude_gpt`. Within each group the 5-hour and weekly windows jointly bound that group, so its effective remaining is the minimum across its named windows, and neither group's usage lowers the other's headroom. An unfamiliar Antigravity window - including a recognized group's unrecognized bucket such as `gemini_unknown` - is not folded into either bound: it stays named in `unresolvedWindowIds` and turns the provider's semantics `partial`, while a reading that exposes only model-config `model:*` windows resolves no group and stays `unknown`. Antigravity v1 snapshots carry no cycle history, so each group reports headroom while its pace, `runway`, and `selection` stay unmeasurable.
|
|
471
476
|
|
|
472
477
|
For every stale provider report, raw windows remain available for diagnostics but effective availability is always `unknown` and omits `effectivePercentRemaining` and `limitingWindowIds`. Window pace is `unknown` with reason `stale`, and each effective pace summary, effective `runway`, and `selection` is also `unknown` with its unmeasurable bounds named. Routing agents must not treat a stale raw percentage as current headroom.
|
|
473
478
|
|
|
@@ -597,9 +602,9 @@ Source attempts can include `credentialPresent` when a source is not genuinely a
|
|
|
597
602
|
| Grok proto3 zero | For the exact consumer operation only, an omitted usage float is the official proto3 zero when a valid weekly or monthly current period proves the config is present; quota-axi reports `0` used and `100` remaining rather than deriving usage from money. |
|
|
598
603
|
| Kimi | Reports the principal `weekly` subscription window (with trusted 604,800s duration) plus every valid self-described limit in wire order. Only a limit whose normalized duration is exactly 18,000 seconds is identified as `five_hour`; future limits remain `limit:<index>` unknown windows. |
|
|
599
604
|
| Z.AI | Can report the Coding Plan `five_hour` and `weekly` usage windows (with trusted 18,000s and 604,800s durations) plus the `mcp_month` tool window, whose duration is not invented. Token and credit limits are both identified by the endpoint's own `unit`/`number` magic values (`3`/`5` and `6`/`1`) rather than array position; any other limit, or a repeat of an already reported one, degrades to an untrusted `limit:<index>` unknown window named in `state.untrustedWindowIds`. |
|
|
600
|
-
| Antigravity (`agy`) | On macOS and Linux, can report `gemini_5h`, `gemini_weekly`, `claude_gpt_5h`, and `claude_gpt_weekly` from
|
|
605
|
+
| Antigravity (`agy`) | On macOS and Linux, can report `gemini_5h`, `gemini_weekly`, `claude_gpt_5h`, and `claude_gpt_weekly` from the installed CLI's structured `agy -p "/quota" --output-format json` response (a bounded read, not an agent session), falling back to an already-running Antigravity app or `agy` loopback quota summary when the CLI is unavailable. If only model config quota is exposed, quota-axi reports model-scoped `model:<slug>` windows instead of inventing grouped windows. Antigravity v1 snapshots do not expose enough history for honest burn-rate pace, so pace stays `unknown`. |
|
|
601
606
|
| Alibaba | Reads the local `bl` CLI's Alibaba Coding Plan Token Plan usage; reports the plan name and weekly remaining percentage and reset time from the CLI's JSON output, plus any named model limits as separate `model:<name>` windows. Repeated limits for the same model remain separate with suffixed IDs such as `model:<name>:2`. |
|
|
602
|
-
| OpenCode Go | Reads `opencode-go` (falling back to `opencode`) from OpenCode's `auth.json` and reports the provider's rolling, weekly, and monthly usage windows. It uses only cycle durations present in the payload; absent durations remain absent, and the
|
|
607
|
+
| OpenCode Go | Reads `opencode-go` (falling back to `opencode`) from OpenCode's `auth.json` and reports the provider's rolling, weekly, and monthly usage windows as stacked plan caps that jointly bound Go-plan usage at `all_models` scope. It uses only cycle durations present in the payload; absent durations remain absent, so pace, runway, and selection stay unknown until the vendor reports a cycle. A zeroed plan window blocks Go-plan requests, but the vendor's free-model fallback or an opted-in Zen balance may still serve past it. |
|
|
603
608
|
|
|
604
609
|
### Model catalog and `models`
|
|
605
610
|
|
|
@@ -630,18 +635,18 @@ Auth source entries can include `credentialPresent` when a source is not genuine
|
|
|
630
635
|
|
|
631
636
|
### Provider credential sources
|
|
632
637
|
|
|
633
|
-
| Provider | Credential sources read
|
|
634
|
-
| -------------- |
|
|
635
|
-
| Claude | `$CLAUDE_CONFIG_DIR/.credentials.json` or `~/.claude/.credentials.json` (on macOS, not read when a nonempty secure-storage selector is set); on macOS, the discovered Claude Code Keychain value for the selected profile, pinned to Claude Code's validated current-user account, with `--allow-keychain-prompt` or, after a service-and-account-scoped non-secret access marker exists, on plain calls
|
|
636
|
-
| Codex | `$CODEX_HOME/auth.json` or `~/.codex/auth.json`, then Pi's `$PI_CODING_AGENT_DIR/auth.json` `openai-codex` subscription OAuth entry (default `~/.pi/agent/auth.json`), before the read-only CLI fallback; `$QUOTA_AXI_CODEX_BINARY` can pin that fallback to an absolute executable path
|
|
637
|
-
| Cursor | Cursor editor: `$CURSOR_STATE_DB` when set or the platform Cursor state database path. Cursor CLI (`cursor-agent`), macOS: identity from `$CURSOR_CLI_CONFIG` or `~/.cursor/cli-config.json` plus the `cursor-access-token` / `cursor-user` Keychain value with `--allow-keychain-prompt` or an account-scoped marker; Linux: only `accessToken` from `$CURSOR_CLI_CONFIG` or `${XDG_CONFIG_HOME:-~/.config}/cursor/auth.json`
|
|
638
|
-
| GitHub Copilot | `$GITHUB_COPILOT_APPS_JSON` when set or the local Copilot apps auth file
|
|
639
|
-
| Grok | Grok CLI session auth from `$GROK_AUTH_JSON`, inline `$GROK_AUTH`, `$GROK_AUTH_PATH`, or `$GROK_HOME/auth.json` / `~/.grok/auth.json`, plus Pi's independent `$PI_CODING_AGENT_DIR/auth.json` `xai` entry (default `~/.pi/agent/auth.json`) for OAuth or literal API-key model auth
|
|
640
|
-
| Kimi | Pi's `$PI_CODING_AGENT_DIR/auth.json` (default `~/.pi/agent/auth.json`) for a literal `kimi-coding` API key or OAuth access token first, then an official Kimi Code CLI access token from the slot `$KIMI_CODE_HOME/config.toml` names (default `$HOME/.kimi-code/`), falling back to `credentials/kimi-code.json` when it names none. Stored-expired tokens are probed; rejected refreshable expiry is soft, not sign-out
|
|
641
|
-
| Z.AI | Pi's `$PI_CODING_AGENT_DIR/auth.json` (default `~/.pi/agent/auth.json`) for a literal Coding Plan `api_key` entry under `zai`, then opencode's `auth.json` (`$XDG_DATA_HOME/opencode/auth.json` when set, otherwise `~/.local/share/opencode/auth.json`) for a literal key under `zai-coding-plan`, `zai`, `z-ai`, `z.ai`, `zhipu`, or `zhipuai`
|
|
642
|
-
| Antigravity | No credential files;
|
|
643
|
-
| Alibaba | The local `bl` CLI (`bl usage token-plan --output json`); quota-axi never reads Alibaba credential files or exchanges refresh data
|
|
644
|
-
| OpenCode Go | `$XDG_DATA_HOME/opencode/auth.json` when set, `%LOCALAPPDATA%\opencode\auth.json` on Windows, otherwise `~/.local/share/opencode/auth.json`, for a literal `opencode-go` key with `opencode` fallback
|
|
638
|
+
| Provider | Credential sources read |
|
|
639
|
+
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
640
|
+
| Claude | `CLAUDE_CODE_OAUTH_TOKEN` when it is set to a usable literal token; `$CLAUDE_CONFIG_DIR/.credentials.json` or `~/.claude/.credentials.json` (on macOS, not read when a nonempty secure-storage selector is set); on macOS, the discovered Claude Code Keychain value for the selected profile, pinned to Claude Code's validated current-user account, with `--allow-keychain-prompt` or, after a service-and-account-scoped non-secret access marker exists, on plain calls |
|
|
641
|
+
| Codex | `$CODEX_HOME/auth.json` or `~/.codex/auth.json`, then Pi's `$PI_CODING_AGENT_DIR/auth.json` `openai-codex` subscription OAuth entry (default `~/.pi/agent/auth.json`), before the read-only CLI fallback; `$QUOTA_AXI_CODEX_BINARY` can pin that fallback to an absolute executable path |
|
|
642
|
+
| Cursor | Cursor editor: `$CURSOR_STATE_DB` when set or the platform Cursor state database path. Cursor CLI (`cursor-agent`), macOS: identity from `$CURSOR_CLI_CONFIG` or `~/.cursor/cli-config.json` plus the `cursor-access-token` / `cursor-user` Keychain value with `--allow-keychain-prompt` or an account-scoped marker; Linux: only `accessToken` from `$CURSOR_CLI_CONFIG` or `${XDG_CONFIG_HOME:-~/.config}/cursor/auth.json` |
|
|
643
|
+
| GitHub Copilot | `$GITHUB_COPILOT_APPS_JSON` when set or the local Copilot apps auth file |
|
|
644
|
+
| Grok | Grok CLI session auth from `$GROK_AUTH_JSON`, inline `$GROK_AUTH`, `$GROK_AUTH_PATH`, or `$GROK_HOME/auth.json` / `~/.grok/auth.json`, plus Pi's independent `$PI_CODING_AGENT_DIR/auth.json` `xai` entry (default `~/.pi/agent/auth.json`) for OAuth or literal API-key model auth |
|
|
645
|
+
| Kimi | Pi's `$PI_CODING_AGENT_DIR/auth.json` (default `~/.pi/agent/auth.json`) for a literal `kimi-coding` API key or OAuth access token first, then an official Kimi Code CLI access token from the slot `$KIMI_CODE_HOME/config.toml` names (default `$HOME/.kimi-code/`), falling back to `credentials/kimi-code.json` when it names none. Stored-expired tokens are probed; rejected refreshable expiry is soft, not sign-out |
|
|
646
|
+
| Z.AI | Pi's `$PI_CODING_AGENT_DIR/auth.json` (default `~/.pi/agent/auth.json`) for a literal Coding Plan `api_key` entry under `zai`, then opencode's `auth.json` (`$XDG_DATA_HOME/opencode/auth.json` when set, otherwise `~/.local/share/opencode/auth.json`) for a literal key under `zai-coding-plan`, `zai`, `z-ai`, `z.ai`, `zhipu`, or `zhipuai` |
|
|
647
|
+
| Antigravity | No credential files; prefers the installed CLI's bounded, noninteractive structured `/quota` read (`agy -p "/quota"`, a bounded read, not an agent session), falling back to discovering already-running Antigravity or `agy` processes and reading their 127.0.0.1 read-only loopback endpoints |
|
|
648
|
+
| Alibaba | The local `bl` CLI (`bl usage token-plan --output json`); quota-axi never reads Alibaba credential files or exchanges refresh data |
|
|
649
|
+
| OpenCode Go | `$XDG_DATA_HOME/opencode/auth.json` when set, `%LOCALAPPDATA%\opencode\auth.json` on Windows, otherwise `~/.local/share/opencode/auth.json`, for a literal `opencode-go` key with `opencode` fallback |
|
|
645
650
|
|
|
646
651
|
The Claude and Codex rows describe default discovery; [`--profile-only`](#profile-only-quota-reads) narrows each to the one selected credential file.
|
|
647
652
|
|
|
@@ -650,6 +655,7 @@ The Claude and Codex rows describe default discovery; [`--profile-only`](#profil
|
|
|
650
655
|
**Claude**
|
|
651
656
|
|
|
652
657
|
- quota-axi mirrors Claude Code's Keychain account selector: nonempty `USER`, otherwise the operating-system username, validated against Claude Code's safe account pattern with the same `claude-code-user` fallback. Metadata discovery filters to that account, and exact presence/value reads require it plus the selected service. There is no ambiguous service-only fallback.
|
|
658
|
+
- `CLAUDE_CODE_OAUTH_TOKEN` is an explicit credential source and is preferred over every discovered store, because Claude Code resolves that variable before it opens any credential store: a token there names the account a live session is actually using, so reading a store instead would report a bystander account. It is an access token alone, so it has no `expiresAt` to order it by, is never advisory-expired, is never eligible for the delegated `claude doctor` refresh, and is never written to a credential store or a cache. Absent, empty, and whitespace-only values select nothing and leave stored-credential discovery exactly as it was; a non-blank value that is not a usable literal bearer is reported as an `env` source problem rather than dropped silently. An environment token also needs no Keychain grant, so `--allow-keychain-prompt` is irrelevant to it. Because such a token selects an account the profile path and Keychain service do not describe, a reading taken with one carries its own cache identity, so its snapshot is never served as stale once the variable is gone; profiles with no environment token keep the identity they already cached under. Its own failure is not definitive-auth: a non-definitive `env` rejection (for example HTTP 403) falls through to a stored source rather than aborting the whole reading, matching the within-source transient rule for any other stored candidate that fails outright. If that stored source then comes back with a genuine, definitive rejection, that verdict wins over the earlier transient `env` failure - the reverse of the general cross-provider precedence - so a real stored sign-out is never hidden behind, nor mistaken for, the env token's unrelated failure.
|
|
653
659
|
- The plaintext credential file is `$CLAUDE_CONFIG_DIR/.credentials.json` or `~/.claude/.credentials.json`. A nonempty `CLAUDE_SECURESTORAGE_CONFIG_DIR` selects the Keychain service; on macOS, where that Keychain item is the sibling source, the plaintext file is left unread so two profile selectors can never answer for one reading. Off macOS there is no Keychain sibling, so the configured file is still read. An empty value falls through to `CLAUDE_CONFIG_DIR`. A nonempty selector gives exactly `Claude Code-credentials-<sha256(NFC selector path).slice(0,8)>`; with neither selector set, the service is the unsuffixed `Claude Code-credentials`. The hash uses the raw NFC-normalized path, without resolving relative paths, expanding `~`, or trimming it, matching Claude Code's selector.
|
|
654
660
|
- quota-axi reads `security list-keychains`, then lists metadata from those paths in one `security dump-keychain <search-list paths...>` call (no values, raw data, or ACLs). Each command is bounded to five seconds and 16 MiB. It accepts only generic-password records for the validated current-user account whose service is the exact selected service, or - for a default selection only - a single `Claude Code-credentials-<eight lowercase hex>` item (see below). The exact selected service is preferred when both exist. Duplicate matching items follow Keychain search-list order, independently of modification time or dump order; each credential pass reads at most one value, pinned to the located keychain, service, and account.
|
|
655
661
|
- A default selection cannot re-derive the opaque suffix Claude Code gave its own item, so with no selector set quota-axi accepts a `Claude Code-credentials-<eight lowercase hex>` item - but only when complete, conclusive metadata covers the entire search list and exactly one such item exists for this account, since the same naming shape can represent an explicit profile or an MCP OAuth store. Two or more leave the reading inconclusive and none is opened; recency never breaks the tie. Any other suffix shape is never accepted. Missing or unparseable records, unfamiliar Claude services, and Claude items owned by another account prevent opaque fallback; exact selected-service reads remain available. An explicit selector accepts only its own exact service: it never falls back to the unsuffixed item, to an opaque item, or to another profile's item. If the configured service cannot be located and any other Claude-prefixed generic-password item remains - including one owned by a different account name - the result stays inconclusive and eligible stale cache is preserved.
|
|
@@ -683,7 +689,7 @@ The Claude and Codex rows describe default discovery; [`--profile-only`](#profil
|
|
|
683
689
|
Pi owns refresh; quota-axi reads the current entry and sends its access token and account ID only to the existing bounded, read-only ChatGPT usage probe. Stored expiry is advisory, so the probe may test a stored-expired access token and only the endpoint's rejection marks it dead.
|
|
684
690
|
Refresh token values are never logged, rendered, cached, or sent.
|
|
685
691
|
Access token values are never logged, rendered, or cached.
|
|
686
|
-
- It may run `codex -s read-only -a
|
|
692
|
+
- It may run `codex -s read-only -a never app-server` for Codex JSON-RPC fallback. That probe is also Codex's delegated refresh: the Codex CLI renews its own expired OAuth session and rewrites `auth.json` before answering, so an expired stored token still reports live quota without quota-axi touching the refresh token or spawning a second command. Codex rotates the refresh token on use, which is why the exchange stays the vendor's.
|
|
687
693
|
- Set `QUOTA_AXI_CODEX_BINARY` to an absolute executable path when the fallback must use a specific Codex installation. Auth inspection and the app-server probe resolve the same path, and an invalid override fails closed instead of consulting `PATH`.
|
|
688
694
|
|
|
689
695
|
**Cursor**
|
|
@@ -737,9 +743,9 @@ The Claude and Codex rows describe default discovery; [`--profile-only`](#profil
|
|
|
737
743
|
|
|
738
744
|
**Antigravity**
|
|
739
745
|
|
|
740
|
-
- It never restarts, signs in to, configures, or mutates Antigravity or `agy`. It reads no credential store, so it has no delegated refresh.
|
|
746
|
+
- It never restarts, signs in to, configures, or mutates Antigravity or `agy`. It reads no credential store, so it has no delegated refresh. It prefers running `agy -p "/quota" --output-format json` once with a 15 second bound; this is the vendor's noninteractive read-only usage command (a bounded read, not an agent session or credential operation). When the CLI is unavailable or fails, it falls back to existing loopback access. Loopback HTTP 401 carrying `missing CSRF token` is treated as `unavailable` (not signed-out) and retains the cached record. Any reading whose `resetsAt` is in the past is marked stale.
|
|
741
747
|
- On macOS and Linux, it discovers only the current user's processes and their owned listening ports, then sends read-only POST requests with operation-specific bodies to local endpoints on `127.0.0.1`. An app-advertised extension port is eligible only when the same process owns its listener.
|
|
742
|
-
-
|
|
748
|
+
- For loopback access, it uses `RetrieveUserQuotaSummary` with the vendor's read-only `request: {}` / `forceRefresh: false` envelope, forwards a runtime CSRF token only when an app process advertises one, uses `GetUserStatus` for plan identity and account identity exposed only behind `--full`, and can fall back to model quota data from `GetUserStatus` / `GetCommandModelConfigs` when grouped quota summary is unavailable. Conversation text, token counters, and subprocess error output are discarded.
|
|
743
749
|
- Percent remaining and reset times come only from vendor `remainingFraction`/`resetTime` fields. It does not invent windows, resets, or percentages.
|
|
744
750
|
- Burn rate is not reported for Antigravity v1 because the local payload exposes point-in-time quota snapshots, not enough history to compute a rate honestly.
|
|
745
751
|
|
|
@@ -790,7 +796,7 @@ Providers with no established non-interactive rotation command stay read-only on
|
|
|
790
796
|
- It never prints, logs, or caches credential values.
|
|
791
797
|
- It never mints, rotates, or writes a credential, and never performs a refresh-token exchange. Credential renewal is always delegated to the vendor CLI that owns the store (see [Delegated credential refresh](#delegated-credential-refresh)).
|
|
792
798
|
- It never retains, prints, logs, renders, caches, sends, or exchanges a refresh token's value. The Pi credential brokers read a stored refresh value only to derive a usability boolean - whether it is a usable literal secret rather than absent or an environment, template, or command reference - and discard it immediately; elsewhere only its presence is checked, as evidence that the vendor can still recover.
|
|
793
|
-
- It never launches the Cursor, Pi, Kimi, or OpenCode CLIs. It runs the read-only Alibaba `bl` usage command, the declared read-only Codex app-server probe, Antigravity's noninteractive structured `/
|
|
799
|
+
- It never launches the Cursor, Pi, Kimi, or OpenCode CLIs. It runs the read-only Alibaba `bl` usage command, the declared read-only Codex app-server probe, Antigravity's noninteractive structured `/quota` read (`agy -p "/quota"`), preferred ahead of its loopback access, and the two declared refresh delegates (`claude doctor`, `grok models`); none starts an agent session or spends the quota being measured.
|
|
794
800
|
- It never signals or kills a delegated refresh. A vendor that outruns quota-axi's wait is left to finish its own token exchange, and quota-axi reports an unconfirmed refresh instead of a credential verdict.
|
|
795
801
|
- It never routes, ranks a winner, or orders providers preferentially. Derived comparative signals, including `effectiveAvailability[].selection`, are published as data for the consumer to act on.
|
|
796
802
|
|
package/dist/src/cli.js
CHANGED
|
@@ -61,6 +61,8 @@ export async function main(options = {}) {
|
|
|
61
61
|
* the SDK own routing, help, version, and error framing.
|
|
62
62
|
*/
|
|
63
63
|
export function normalizeArgv(raw) {
|
|
64
|
+
if (raw[0] === "--")
|
|
65
|
+
raw = raw.slice(1);
|
|
64
66
|
if (raw.length === 0)
|
|
65
67
|
return ["quota"];
|
|
66
68
|
if (findLegacyFlag(raw, (arg) => arg === "--help" || arg === "-h") >= 0) {
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,29 @@
|
|
|
1
1
|
import { degradedSources } from "./lib/source-attempts.js";
|
|
2
2
|
import { computeEffectiveRunway, computeWindowPace, summarizeEffectivePace, summarizeEffectiveSelection, } from "./pace.js";
|
|
3
|
+
export function markAgyStaleIfExpiredReset(provider, nowMs = Date.now()) {
|
|
4
|
+
const hasExpired = provider.windows.some((w) => {
|
|
5
|
+
if (!w.resetsAt)
|
|
6
|
+
return false;
|
|
7
|
+
const ms = Date.parse(w.resetsAt);
|
|
8
|
+
return Number.isFinite(ms) && ms <= nowMs;
|
|
9
|
+
});
|
|
10
|
+
if (hasExpired &&
|
|
11
|
+
(!provider.state.stale || provider.state.status !== "stale")) {
|
|
12
|
+
return {
|
|
13
|
+
...provider,
|
|
14
|
+
state: {
|
|
15
|
+
...provider.state,
|
|
16
|
+
status: "stale",
|
|
17
|
+
stale: true,
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return provider;
|
|
22
|
+
}
|
|
3
23
|
export function withQuotaSemantics(provider, generatedAt) {
|
|
24
|
+
if (provider.provider === "agy") {
|
|
25
|
+
provider = markAgyStaleIfExpiredReset(provider, Date.parse(generatedAt));
|
|
26
|
+
}
|
|
4
27
|
const windows = provider.windows.map((window) => ({
|
|
5
28
|
...window,
|
|
6
29
|
pace: computeWindowPace(window, generatedAt, {
|
|
@@ -85,14 +108,47 @@ function semanticsFor(provider, generatedAt) {
|
|
|
85
108
|
case "cursor":
|
|
86
109
|
return cursorSemantics(provider.windows, generatedAt);
|
|
87
110
|
case "copilot":
|
|
88
|
-
case "agy":
|
|
89
111
|
return unknownSemantics(provider.windows, `quota-axi does not know whether ${provider.label ?? provider.provider}'s reported windows are independent or jointly bounding, so it does not claim an effective remaining percentage.`);
|
|
112
|
+
case "agy":
|
|
113
|
+
return agySemantics(provider.windows, generatedAt);
|
|
90
114
|
case "alibaba":
|
|
91
115
|
return alibabaSemantics(provider.windows, generatedAt);
|
|
92
116
|
case "opencode-go":
|
|
93
|
-
return
|
|
117
|
+
return opencodeGoSemantics(provider.windows, generatedAt);
|
|
94
118
|
}
|
|
95
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* OpenCode Go's usage endpoint reports the plan's stacked caps: the vendor
|
|
122
|
+
* documents $12 per rolling 5 hours, $30 per week, and $60 per month, and
|
|
123
|
+
* reaching a cap blocks Go-plan requests (the vendor's free-model fallback or
|
|
124
|
+
* an opted-in Zen balance may still serve past a zeroed plan window, which
|
|
125
|
+
* this endpoint does not report). That is the missing joint-bound evidence,
|
|
126
|
+
* so the three windows jointly bound Go-plan usage at `all_models` scope.
|
|
127
|
+
*/
|
|
128
|
+
function opencodeGoSemantics(windows, generatedAt) {
|
|
129
|
+
const plan = windows.filter(({ id }) => ["rolling", "five_hour", "weekly", "monthly"].includes(id));
|
|
130
|
+
const recognized = new Set(plan);
|
|
131
|
+
// The endpoint always reports all three stacked caps; a missing cap is a
|
|
132
|
+
// data gap, not a complete bound, so a subset alone never reads as known.
|
|
133
|
+
// `five_hour` is the duration-confirmed identity of the `rolling` cap.
|
|
134
|
+
const present = new Set(plan.map(({ id }) => (id === "five_hour" ? "rolling" : id)));
|
|
135
|
+
const missing = ["rolling", "weekly", "monthly"].filter((id) => !present.has(id));
|
|
136
|
+
const unresolved = windows.filter((window) => !recognized.has(window));
|
|
137
|
+
const unresolvedWindowIds = [
|
|
138
|
+
...new Set([...unresolved.map(({ id }) => id), ...missing]),
|
|
139
|
+
];
|
|
140
|
+
if (unresolvedWindowIds.length > 0) {
|
|
141
|
+
return {
|
|
142
|
+
status: "partial",
|
|
143
|
+
description: "OpenCode Go's rolling, weekly, and monthly windows are stacked plan caps that jointly bound Go-plan usage, but unfamiliar or missing windows prevent a definitive effective percentage.",
|
|
144
|
+
effectiveAvailability: plan.length > 0
|
|
145
|
+
? [unresolvedAvailability("all_models", plan, unresolvedWindowIds)]
|
|
146
|
+
: [],
|
|
147
|
+
unresolvedWindowIds,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return knownSemantics(plan.length > 0 ? [availability("all_models", plan, generatedAt)] : [], "OpenCode Go's rolling, weekly, and monthly windows are stacked plan caps ($12 per rolling 5 hours, $30 per week, $60 per month) that jointly bound Go-plan usage, so effective remaining is the minimum across the named windows. A zeroed plan window blocks Go-plan requests; the vendor's free-model fallback or an opted-in Zen balance may still serve past it, which this endpoint does not report.");
|
|
151
|
+
}
|
|
96
152
|
function alibabaSemantics(windows, generatedAt) {
|
|
97
153
|
const account = windows.filter(({ id }) => id === "weekly");
|
|
98
154
|
const modelWindows = windows.filter(({ id }) => id.startsWith("model:"));
|
|
@@ -423,6 +479,28 @@ function partialSemantics(unresolved, description) {
|
|
|
423
479
|
unresolvedWindowIds: unresolved.map(({ id }) => id),
|
|
424
480
|
};
|
|
425
481
|
}
|
|
482
|
+
function agySemantics(windows, generatedAt) {
|
|
483
|
+
const gemini = windows.filter(({ id }) => id === "gemini_5h" || id === "gemini_weekly");
|
|
484
|
+
const claudeGpt = windows.filter(({ id }) => id === "claude_gpt_5h" || id === "claude_gpt_weekly");
|
|
485
|
+
const resolved = new Set([...gemini, ...claudeGpt]);
|
|
486
|
+
const unresolved = windows.filter((window) => !resolved.has(window));
|
|
487
|
+
const effectiveAvailability = [];
|
|
488
|
+
if (gemini.length > 0) {
|
|
489
|
+
effectiveAvailability.push(availability("gemini", gemini, generatedAt));
|
|
490
|
+
}
|
|
491
|
+
if (claudeGpt.length > 0) {
|
|
492
|
+
effectiveAvailability.push(availability("claude_gpt", claudeGpt, generatedAt));
|
|
493
|
+
}
|
|
494
|
+
if (unresolved.length > 0) {
|
|
495
|
+
return {
|
|
496
|
+
status: effectiveAvailability.length > 0 ? "partial" : "unknown",
|
|
497
|
+
description: "Antigravity groups Gemini windows separately from Claude/GPT windows. Within a group, the weekly and 5-hour windows jointly bound that group. Unfamiliar windows are not folded into either bound, so they stay unresolved.",
|
|
498
|
+
effectiveAvailability,
|
|
499
|
+
unresolvedWindowIds: unresolved.map(({ id }) => id),
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
return knownSemantics(effectiveAvailability, "Antigravity groups Gemini windows separately from Claude/GPT windows. Within a group, the weekly and 5-hour windows jointly bound that group, so that group's effective remaining percentage is the minimum across the named windows.");
|
|
503
|
+
}
|
|
426
504
|
function unknownSemantics(windows, description) {
|
|
427
505
|
return {
|
|
428
506
|
status: "unknown",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpretation.js","sourceRoot":"","sources":["../../src/interpretation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interpretation.js","sourceRoot":"","sources":["../../src/interpretation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,WAAW,CAAC;AASnB,MAAM,UAAU,0BAA0B,CACxC,QAAuB,EACvB,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IAElB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7C,IAAI,CAAC,CAAC,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,IACE,UAAU;QACV,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,EAC5D,CAAC;QACD,OAAO;YACL,GAAG,QAAQ;YACX,KAAK,EAAE;gBACL,GAAG,QAAQ,CAAC,KAAK;gBACjB,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,IAAI;aACZ;SACF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAuB,EACvB,WAAmB;IAEnB,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAChC,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,GAAG,MAAM;QACT,IAAI,EAAE,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE;YAC3C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK;SAC5B,CAAC;KACH,CAAC,CAAC,CAAC;IACJ,MAAM,WAAW,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACzD,OAAO;QACL,GAAG,WAAW;QACd,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE;QAC5D,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK;YAClC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC;YAC3B,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CACxB,QAAuB;IAEvB,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,CAAC;IACzE,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,cAAc,CAAC,SAAyB;IAC/C,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC9D,WAAW,EACT,+HAA+H;QACjI,qBAAqB,EAAE,SAAS,CAAC,qBAAqB,CAAC,GAAG,CACxD,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/B,KAAK;YACL,MAAM,EAAE,SAAS;YACjB,SAAS;YACT,MAAM,EAAE;gBACN,MAAM,EAAE,SAAkB;gBAC1B,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,SAAkB;gBAC1B,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE;YACD,GAAG,CAAC,IAAI;gBACN,CAAC,CAAC;oBACE,IAAI,EAAE;wBACJ,MAAM,EAAE,SAAkB;wBAC1B,GAAG,CAAC,IAAI,CAAC,gBAAgB;4BACvB,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;4BAC7C,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gCACpB,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE;gCACjC,CAAC,CAAC,EAAE,CAAC;qBACV;iBACF;gBACH,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBACpB,CAAC,CAAC;wBACE,IAAI,EAAE;4BACJ,MAAM,EAAE,SAAkB;4BAC1B,gBAAgB,EAAE,SAAS;yBAC5B;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;SACV,CAAC,CACH;QACD,GAAG,CAAC,SAAS,CAAC,mBAAmB;YAC/B,CAAC,CAAC,EAAE,mBAAmB,EAAE,SAAS,CAAC,mBAAmB,EAAE;YACxD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,QAAuB,EACvB,WAAmB;IAEnB,QAAQ,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACxD,KAAK,OAAO;YACV,OAAO,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,MAAM;YACT,OAAO,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACtD,KAAK,MAAM;YACT,OAAO,aAAa,CAClB,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,EACvC,WAAW,CACZ,CAAC;QACJ,KAAK,KAAK;YACR,OAAO,YAAY,CACjB,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,EACvC,WAAW,CACZ,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACxD,KAAK,SAAS;YACZ,OAAO,gBAAgB,CACrB,QAAQ,CAAC,OAAO,EAChB,mCAAmC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,QAAQ,kHAAkH,CACzL,CAAC;QACJ,KAAK,KAAK;YACR,OAAO,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACrD,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzD,KAAK,aAAa;YAChB,OAAO,mBAAmB,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAC1B,OAAsB,EACtB,WAAmB;IAEnB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CACrC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC3D,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,yEAAyE;IACzE,0EAA0E;IAC1E,uEAAuE;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC5D,CAAC;IACF,MAAM,OAAO,GAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAW,CAAC,MAAM,CAChE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CACzB,CAAC;IACF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,MAAM,mBAAmB,GAAG;QAC1B,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;KAC5D,CAAC;IACF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,WAAW,EACT,yLAAyL;YAC3L,qBAAqB,EACnB,IAAI,CAAC,MAAM,GAAG,CAAC;gBACb,CAAC,CAAC,CAAC,sBAAsB,CAAC,YAAY,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;gBACnE,CAAC,CAAC,EAAE;YACR,mBAAmB;SACpB,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CACnB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EACtE,2YAA2Y,CAC5Y,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAsB,EACtB,WAAmB;IAEnB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CACxE,CAAC;IACF,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,qBAAqB,GAA4B,EAAE,CAAC;IAC1D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,qBAAqB,CAAC,IAAI,CACxB,UAAU,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,sBAAsB,CAAC,YAAY,EAAE,OAAO,EAAE,aAAa,CAAC;YAC9D,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,CACrD,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC;QAC1C,qBAAqB,CAAC,IAAI,CACxB,UAAU,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC;YAC3D,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAClD,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,WAAW,EACT,+MAA+M;YACjN,qBAAqB;YACrB,mBAAmB,EAAE,aAAa;SACnC,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CACnB,qBAAqB,EACrB,wJAAwJ,CACzJ,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,OAAsB,EACtB,WAAmB;IAEnB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CACxC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CACxC,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACf,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,OAAO,CACnB,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,gBAAgB,CACrB,UAAU,EACV,iJAAiJ,CAClJ,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GAA4B,EAAE,CAAC;IAC1D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,qBAAqB,CAAC,IAAI,CACxB,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,CACjD,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,qBAAqB,CAAC,IAAI,CACxB,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CACzD,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CACnB,qBAAqB,EACrB,mLAAmL,CACpL,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,OAAsB,EACtB,WAAmB;IAEnB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CACT,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC;QACtC,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC;QACnC,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,CACvC,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,gBAAgB,CACrB,UAAU,EACV,8cAA8c,CAC/c,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GAA4B,EAAE,CAAC;IAC1D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,qBAAqB,CAAC,IAAI,CACxB,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,CACjD,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,qBAAqB,CAAC,IAAI,CACxB,YAAY,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,CAAC,CACrD,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,MAAM,EAAE,CAAC;QAC3C,qBAAqB,CAAC,IAAI,CACxB,YAAY,CACV,KAAK,EACL,CAAC,GAAG,OAAO,EAAE,GAAG,YAAY,CAAC,EAC7B,WAAW,EACX,YAAY,CACb,CACF,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CACnB,qBAAqB,EACrB,onBAAonB,CACrnB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,OAAsB,EACtB,WAAmB;IAEnB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAC3D,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,gBAAgB,CACrB,UAAU,EACV,4KAA4K,CAC7K,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GAA4B,EAAE,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,qBAAqB,CAAC,IAAI,CACxB,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,CAClD,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,qBAAqB,CAAC,IAAI,CACxB,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CACnB,qBAAqB,EACrB,uLAAuL,CACxL,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,OAAsB,EACtB,kBAA4B,EAC5B,WAAmB;IAEnB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,WAAW,CAClD,CAAC;IACF,MAAM,mBAAmB,GAAG;QAC1B,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,kBAAkB,CAAC,CAAC;KACvE,CAAC;IACF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,WAAW,CAClD,CAAC;QACF,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,WAAW,EACT,4JAA4J;YAC9J,qBAAqB,EACnB,UAAU,CAAC,MAAM,GAAG,CAAC;gBACnB,CAAC,CAAC;oBACE,sBAAsB,CACpB,YAAY,EACZ,UAAU,EACV,mBAAmB,CACpB;iBACF;gBACH,CAAC,CAAC,EAAE;YACR,mBAAmB;SACpB,CAAC;IACJ,CAAC;IACD,MAAM,qBAAqB,GACzB,OAAO,CAAC,MAAM,GAAG,CAAC;QAChB,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,cAAc,CACnB,qBAAqB,EACrB,wIAAwI,CACzI,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG;IAC5B,gBAAgB;IAChB,YAAY;IACZ,WAAW;IACX,aAAa;CACd,CAAC;AACF,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAE7C,SAAS,eAAe,CACtB,OAAsB,EACtB,WAAmB;IAEnB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,yBAAyB,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CACT,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,yBAAyB,CAC1E,CAAC;IACF,MAAM,qBAAqB,GAA4B,EAAE,CAAC;IAC1D,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,WAAW,EACT,+RAA+R;YACjS,qBAAqB;YACrB,mBAAmB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CACnB,qBAAqB,EACrB,iNAAiN,CAClN,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,OAAsB,EACtB,kBAA4B,EAC5B,WAAmB;IAEnB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAC1B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,QAAQ,CAClD,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,MAAM,mBAAmB,GAAG;QAC1B,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,kBAAkB,CAAC,CAAC;KACvE,CAAC;IACF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,qBAAqB,GAA4B,EAAE,CAAC;QAC1D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,qBAAqB,CAAC,IAAI,CACxB,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,mBAAmB,CAAC,CACjE,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,qBAAqB,CAAC,IAAI,CACxB,sBAAsB,CAAC,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAC3D,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,WAAW,EACT,2LAA2L;YAC7L,qBAAqB;YACrB,mBAAmB;SACpB,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GAA4B,EAAE,CAAC;IAC1D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,cAAc,CACnB,qBAAqB,EACrB,0LAA0L,CAC3L,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,sBAAsB,CAC7B,KAAa,EACb,OAAsB,EACtB,mBAA6B;IAE7B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9C,MAAM,qBAAqB,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,mBAAmB,CAAC,CAAC;IACrE,OAAO;QACL,KAAK;QACL,MAAM,EAAE,SAAS;QACjB,SAAS;QACT,IAAI,EAAE,sBAAsB,CAAC,OAAO,CAAC;QACrC,MAAM,EAAE;YACN,MAAM,EAAE,SAAS;YACjB,qBAAqB;SACtB;QACD,mEAAmE;QACnE,mEAAmE;QACnE,iDAAiD;QACjD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,qBAAqB;SACtB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,aAAa,CACpB,OAAsB,EACtB,UAAyB;IAEzB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAC3B,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CACvB,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,GAAG,CAAC,CACzD,CAAC;IACF,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAC9B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,gBAAgB,KAAK,CAAC,CAC9D,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO;QACL,kBAAkB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACjD,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,KAAa,EACb,OAAsB,EACtB,WAAmB;AACnB;;;;;;GAMG;AACH,UAA0B;IAE1B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,UAAU,IAAI,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClE,IAAI,QAAQ,EAAE,CAAC;QACb,0EAA0E;QAC1E,sEAAsE;QACtE,uCAAuC;QACvC,MAAM,qBAAqB,GAAG;YAC5B,GAAG,QAAQ,CAAC,kBAAkB;YAC9B,GAAG,QAAQ,CAAC,aAAa;SAC1B,CAAC;QACF,OAAO;YACL,KAAK;YACL,MAAM,EAAE,SAAS;YACjB,SAAS;YACT,aAAa,EAAE,QAAQ;YACvB,uEAAuE;YACvE,gDAAgD;YAChD,IAAI;YACJ,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE;YACpD,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE;SACxD,CAAC;IACJ,CAAC;IACD,IACE,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,EAC9C,CAAC;QACD,OAAO;YACL,KAAK;YACL,MAAM,EAAE,SAAS;YACjB,SAAS;YACT,IAAI;YACJ,MAAM,EAAE,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC;YACpD,SAAS;SACV,CAAC;IACJ,CAAC;IACD,MAAM,yBAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAI,SAAsB,CAAC,CAAC;IACvE,OAAO;QACL,KAAK;QACL,MAAM,EAAE,OAAO;QACf,yBAAyB;QACzB,SAAS;QACT,iBAAiB,EAAE,OAAO;aACvB,MAAM,CACL,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CACvB,gBAAgB,KAAK,yBAAyB,CACjD;aACA,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACtB,IAAI;QACJ,MAAM,EAAE,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC;QACpD,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAmB;IAC/C,OAAO,CACL,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,cAAc,CACrB,qBAA8C,EAC9C,WAAmB;IAEnB,OAAO;QACL,MAAM,EAAE,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAC9D,WAAW,EACT,qBAAqB,CAAC,MAAM,GAAG,CAAC;YAC9B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,uFAAuF;QAC7F,qBAAqB;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,UAAyB,EACzB,WAAmB;IAEnB,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,WAAW;QACX,qBAAqB,EAAE,EAAE;QACzB,mBAAmB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,OAAsB,EACtB,WAAmB;IAEnB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,eAAe,CACzD,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAC9B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,eAAe,IAAI,EAAE,KAAK,mBAAmB,CACjE,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,MAAM,qBAAqB,GAA4B,EAAE,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,qBAAqB,CAAC,IAAI,CACxB,YAAY,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CACnD,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,MAAM,EAAE,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAChE,WAAW,EACT,6NAA6N;YAC/N,qBAAqB;YACrB,mBAAmB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CACnB,qBAAqB,EACrB,uOAAuO,CACxO,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAsB,EACtB,WAAmB;IAEnB,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,WAAW,EACT,OAAO,CAAC,MAAM,GAAG,CAAC;YAChB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,uFAAuF;QAC7F,qBAAqB,EAAE,EAAE;QACzB,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
export declare const CLAUDE_KEYCHAIN_SERVICE = "Claude Code-credentials";
|
|
2
|
+
/**
|
|
3
|
+
* The environment credential Claude Code itself resolves before it consults any
|
|
4
|
+
* stored credential, so an explicit token here names the account a session is
|
|
5
|
+
* actually using.
|
|
6
|
+
*/
|
|
7
|
+
export declare const CLAUDE_OAUTH_TOKEN_ENV = "CLAUDE_CODE_OAUTH_TOKEN";
|
|
8
|
+
/**
|
|
9
|
+
* The explicitly supplied environment access token, when one is usable as a
|
|
10
|
+
* literal bearer. Absent, empty, and unusable values all resolve to
|
|
11
|
+
* `undefined`, which leaves discovery of the stored credential untouched. The
|
|
12
|
+
* value is returned for request use only and is never logged or persisted.
|
|
13
|
+
*
|
|
14
|
+
* @returns the literal token, or undefined when none is supplied
|
|
15
|
+
*/
|
|
16
|
+
export declare function claudeEnvOauthToken(): string | undefined;
|
|
2
17
|
/**
|
|
3
18
|
* Mirrors Claude Code's configuration and secure-storage selectors. The
|
|
4
19
|
* credential directory is `CLAUDE_CONFIG_DIR` or `~/.claude`; a nonempty
|
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
+
import { usableLiteralSecret } from "./secret.js";
|
|
4
5
|
export const CLAUDE_KEYCHAIN_SERVICE = "Claude Code-credentials";
|
|
6
|
+
/**
|
|
7
|
+
* The environment credential Claude Code itself resolves before it consults any
|
|
8
|
+
* stored credential, so an explicit token here names the account a session is
|
|
9
|
+
* actually using.
|
|
10
|
+
*/
|
|
11
|
+
export const CLAUDE_OAUTH_TOKEN_ENV = "CLAUDE_CODE_OAUTH_TOKEN";
|
|
12
|
+
/**
|
|
13
|
+
* The explicitly supplied environment access token, when one is usable as a
|
|
14
|
+
* literal bearer. Absent, empty, and unusable values all resolve to
|
|
15
|
+
* `undefined`, which leaves discovery of the stored credential untouched. The
|
|
16
|
+
* value is returned for request use only and is never logged or persisted.
|
|
17
|
+
*
|
|
18
|
+
* @returns the literal token, or undefined when none is supplied
|
|
19
|
+
*/
|
|
20
|
+
export function claudeEnvOauthToken() {
|
|
21
|
+
return usableLiteralSecret(process.env[CLAUDE_OAUTH_TOKEN_ENV]?.trim());
|
|
22
|
+
}
|
|
5
23
|
/**
|
|
6
24
|
* Mirrors Claude Code's configuration and secure-storage selectors. The
|
|
7
25
|
* credential directory is `CLAUDE_CONFIG_DIR` or `~/.claude`; a nonempty
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-profile.js","sourceRoot":"","sources":["../../../src/lib/claude-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-profile.js","sourceRoot":"","sources":["../../../src/lib/claude-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IAMpC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9D,4EAA4E;IAC5E,4CAA4C;IAC5C,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,QAAQ,GAAG,eAAe,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzE,OAAO;QACL,SAAS;QACT,qBAAqB,EAAE,eAAe,KAAK,SAAS;QACpD,eAAe,EAAE,QAAQ;YACvB,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC;YACnC,CAAC,CAAC,uBAAuB;QAC3B,2EAA2E;QAC3E,oEAAoE;QACpE,wEAAwE;QACxE,wBAAwB,EAAE,QAAQ,KAAK,SAAS;KACjD,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAAC,OAAe;IAC7D,OAAO,CACL,OAAO,CAAC,UAAU,CAAC,GAAG,uBAAuB,GAAG,CAAC;QACjD,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CACxE,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB;IAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;SAChC,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACf,OAAO,GAAG,uBAAuB,IAAI,MAAM,EAAE,CAAC;AAChD,CAAC"}
|
package/dist/src/lib/fs.js
CHANGED
|
@@ -2,7 +2,7 @@ import { mkdirSync, readFileSync } from "node:fs";
|
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
5
|
-
import { claudeProfileLocations } from "./claude-profile.js";
|
|
5
|
+
import { claudeEnvOauthToken, claudeProfileLocations, } from "./claude-profile.js";
|
|
6
6
|
export function collapseHome(path) {
|
|
7
7
|
const home = homedir();
|
|
8
8
|
if (path === home)
|
|
@@ -47,11 +47,20 @@ export function claudeCredentialContextId() {
|
|
|
47
47
|
// Include the exact service: it already encodes the secure-storage selector,
|
|
48
48
|
// including a relative raw path hash.
|
|
49
49
|
// Version the identity to withhold snapshots from earlier opaque discovery.
|
|
50
|
+
//
|
|
51
|
+
// An explicit environment token selects an account the profile path and
|
|
52
|
+
// Keychain service do not describe, so it earns its own identity: a snapshot
|
|
53
|
+
// taken with one must never be served as stale once it is gone. The marker is
|
|
54
|
+
// appended only when such a token is supplied, so every existing profile
|
|
55
|
+
// keeps the identity it already cached under. It is a presence marker, never
|
|
56
|
+
// any part of the token.
|
|
57
|
+
const envSelected = claudeEnvOauthToken() !== undefined;
|
|
50
58
|
return createHash("sha256")
|
|
51
59
|
.update(JSON.stringify([
|
|
52
60
|
"claude-profile-v2",
|
|
53
61
|
resolve(configDir),
|
|
54
62
|
keychainService,
|
|
63
|
+
...(envSelected ? ["env-token"] : []),
|
|
55
64
|
]))
|
|
56
65
|
.digest("hex");
|
|
57
66
|
}
|
package/dist/src/lib/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/lib/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/lib/fs.ts"],"names":[],"mappings":"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"}
|
package/dist/src/pace.js
CHANGED
|
@@ -246,6 +246,15 @@ export function summarizeEffectiveSelection(windows) {
|
|
|
246
246
|
let weightedGapSum = 0;
|
|
247
247
|
let cycleSecondsSum = 0;
|
|
248
248
|
for (const window of windows) {
|
|
249
|
+
const remaining = finiteNumber(window.percentRemaining);
|
|
250
|
+
if (remaining !== undefined && isZeroUse(window, remaining)) {
|
|
251
|
+
const unknownReason = window.pace?.status === "unknown" ? window.pace.reason : undefined;
|
|
252
|
+
if (window.pace === undefined ||
|
|
253
|
+
unknownReason === "missing_cycle" ||
|
|
254
|
+
unknownReason === "future_cycle_start") {
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
249
258
|
const gap = windowSelectionGap(window);
|
|
250
259
|
const cycleSeconds = finiteNumber(window.pace?.cycleSeconds);
|
|
251
260
|
if (gap === undefined || cycleSeconds === undefined || cycleSeconds <= 0) {
|