• turbo 2.10.12 • Packages in scope: bb-plugin-account-pool • Running test in 1 packages • Remote caching disabled, using shared worktree cache @bb/templates:generate:plugin-scaffold: cache miss, executing 167d12a1eb1e188b //:ensure-native-modules: cache bypass, force executing c138e335ede91e21 @bb/templates:generate:templates: cache miss, executing efd4bf50bd98e886 @bb/plugin-build:generate: cache miss, executing 7af3ed8fe5bb0bed @bb/templates:generate:plugin-scaffold: @bb/templates:generate:plugin-scaffold: > @bb/templates@0.0.1 generate:plugin-scaffold /base/packages/templates @bb/templates:generate:plugin-scaffold: > node ./scripts/generate-plugin-scaffold.mjs @bb/templates:generate:plugin-scaffold: @bb/templates:generate:templates: @bb/templates:generate:templates: > @bb/templates@0.0.1 generate:templates /base/packages/templates @bb/templates:generate:templates: > node ./scripts/generate-templates.mjs @bb/templates:generate:templates: @bb/plugin-build:generate: @bb/plugin-build:generate: > @bb/plugin-build@0.0.1 generate /base/packages/plugin-build @bb/plugin-build:generate: > node ./scripts/generate-plugin-theme.mjs && node ./scripts/generate-runtime-export-manifest.mjs @bb/plugin-build:generate: //:ensure-native-modules: //:ensure-native-modules: > bb@ ensure-native-modules /base //:ensure-native-modules: > node scripts/ensure-native-modules.mjs //:ensure-native-modules: @bb/plugin-build:generate: plugin-theme.generated.ts up to date //:ensure-native-modules: [ensure-native-modules] Detached hardlinked better-sqlite3 binary before verification @get-bb/plugin-sdk:build: cache miss, executing 3f945a9f23cf7faa @bb/plugin-build:generate: wrote /base/packages/plugin-build/src/generated/runtime-export-manifest.generated.ts (react@19.2.4) @get-bb/plugin-sdk:build: @get-bb/plugin-sdk:build: > @get-bb/plugin-sdk@0.6.33 build /base/packages/plugin-sdk @get-bb/plugin-sdk:build: > node scripts/build-runtime.mjs @get-bb/plugin-sdk:build: @get-bb/plugin-sdk:build: Built 19 @get-bb/plugin-sdk runtime entries. bb-plugin-account-pool:test: cache miss, executing e96c94303c727564 bb-plugin-account-pool:test: bb-plugin-account-pool:test: > bb-plugin-account-pool@0.1.0 test /base/plugins/account-pool bb-plugin-account-pool:test: > vitest run --config vitest.config.ts "--testNamePattern=retains Claude session affinity" bb-plugin-account-pool:test: bb-plugin-account-pool:test: bb-plugin-account-pool:test: RUN v4.1.1 /base/plugins/account-pool bb-plugin-account-pool:test: bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| src/oauth-login.test.ts (6 tests | 6 skipped) bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| src/request-body.test.ts (62 tests | 62 skipped) bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| src/provider-adapter.test.ts (24 tests | 24 skipped) bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| src/codex-device-login.test.ts (9 tests | 9 skipped) bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| src/codex-adapter.test.ts (15 tests | 15 skipped) bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| src/usage-source.test.ts (2 tests | 2 skipped) bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| src/parent-pool.test.ts (13 tests | 13 skipped) bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| src/credentials.test.ts (2 tests | 2 skipped) bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| src/upstream-transport.test.ts (6 tests | 6 skipped) bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| src/store.test.ts (3 tests | 3 skipped) bb-plugin-account-pool:test: ❯ |bb-plugin-account-pool| src/server.test.ts (180 tests | 4 failed | 176 skipped) 302ms bb-plugin-account-pool:test: ↓ fills defaults and rejects invalid URLs and thresholds bb-plugin-account-pool:test: ↓ removes persisted cache debugging settings while preserving pool configuration across reloads bb-plugin-account-pool:test: ↓ reads and updates one full config record through RPC and CLI bb-plugin-account-pool:test: ↓ routes native Codex 'images/generations' with pool authentication bb-plugin-account-pool:test: ↓ routes native Codex 'images/edits' with pool authentication bb-plugin-account-pool:test: ↓ routes native Codex 'alpha/search' with pool authentication bb-plugin-account-pool:test: ↓ imports, refreshes, and routes Codex HTTP sessions by provider bb-plugin-account-pool:test: ↓ cancels a Codex upstream read when the HTTP client aborts bb-plugin-account-pool:test: ↓ prunes token files for unenrolled hosts on startup and status bb-plugin-account-pool:test: ↓ uses a single-process token cache and throttles last-use file writes bb-plugin-account-pool:test: ↓ forwards the next request after adding the first account through the CLI bb-plugin-account-pool:test: ↓ exposes every account CLI operation bb-plugin-account-pool:test: ↓ refuses unusable pool invocations instead of guessing bb-plugin-account-pool:test: ↓ exposes manual Claude login over RPC and the two-step CLI bb-plugin-account-pool:test: ↓ exposes Codex device login over RPC and the two-step CLI bb-plugin-account-pool:test: ↓ resolves distinct secret machine tokens and honors per-thread bypass bb-plugin-account-pool:test: ↓ restores the 1-hour prompt cache only while a subscription account can serve Claude bb-plugin-account-pool:test: ↓ withholds env and proxied health when an enabled account secret is missing bb-plugin-account-pool:test: ↓ rotates a machine token with a ten-minute grace window bb-plugin-account-pool:test: ↓ reports routed threads without local login and logs them on disable bb-plugin-account-pool:test: ↓ does not fail disposal when disable inspection rejects bb-plugin-account-pool:test: ↓ bounds disable inspection when provider states hang bb-plugin-account-pool:test: ↓ keeps proxied routed hosts visible in status bb-plugin-account-pool:test: ↓ requires a machine token and forwards a streaming SSE response byte for byte bb-plugin-account-pool:test: ↓ errors a failed non-SSE stream without appending an SSE frame bb-plugin-account-pool:test: ↓ applies config threshold changes live and rotates quota rejections bb-plugin-account-pool:test: ↓ routes around a Fable-spent account while retaining it for Opus bb-plugin-account-pool:test: ↓ rotates a family-only 429 without exhausting other families bb-plugin-account-pool:test: ↓ rotates when a same-account retry reveals a family limit bb-plugin-account-pool:test: ↓ refreshes usage on import and routes from its family observations bb-plugin-account-pool:test: ↓ rewrites both known metadata account UUID formats bb-plugin-account-pool:test: ↓ preserves request bytes when an account UUID rewrite cannot apply bb-plugin-account-pool:test: ↓ paces a per-minute 429 on the same account without rotating bb-plugin-account-pool:test: ↓ tries another account after a pre-stream 401 failure bb-plugin-account-pool:test: ↓ tries another account after a pre-stream 403 failure bb-plugin-account-pool:test: ↓ tries another account after a pre-stream 408 failure bb-plugin-account-pool:test: ↓ tries another account after a pre-stream 500 failure bb-plugin-account-pool:test: ↓ tries another account after a pre-stream 502 failure bb-plugin-account-pool:test: ↓ tries another account after a pre-stream 503 failure bb-plugin-account-pool:test: ↓ tries another account after a pre-stream 504 failure bb-plugin-account-pool:test: ↓ tries another account after a pre-stream 529 failure bb-plugin-account-pool:test: ↓ tries another account after a pre-stream disconnect failure bb-plugin-account-pool:test: ↓ bounds '401' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds '429 then 401' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds 'same-token refresh' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds '401 then 429' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds '401 after both retry budgets' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds 'repeated 401' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds 'refresh outage' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ joins an unchanged normal flight once and reuses replacement tokens after a late 401 bb-plugin-account-pool:test: ↓ bounds '401' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds '429 then 401' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds 'same-token refresh' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds '401 then 429' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds '401 after both retry budgets' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds 'repeated 401' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ bounds 'refresh outage' recovery and never reuses rejected fallback credentials bb-plugin-account-pool:test: ↓ joins an unchanged normal flight once and reuses replacement tokens after a late 401 bb-plugin-account-pool:test: ↓ keeps late 401 recovery bounded after a terminal refresh bb-plugin-account-pool:test: ↓ keeps late 401 recovery bounded after a same-token cooldown refresh bb-plugin-account-pool:test: ↓ separates rejection checks from credential flights when the reporting request is canceled: false bb-plugin-account-pool:test: ↓ separates rejection checks from credential flights when the reporting request is canceled: true bb-plugin-account-pool:test: ↓ cancels one forced-refresh waiter without canceling shared recovery bb-plugin-account-pool:test: ↓ does not let a late second 401 poison a newer credential bb-plugin-account-pool:test: ↓ holds a freshly refreshed token rejected with HTTP 401 without marking an account error bb-plugin-account-pool:test: ↓ holds a freshly refreshed token rejected with HTTP 403 without marking an account error bb-plugin-account-pool:test: ↓ clears a stored credential error through a manual refresh bb-plugin-account-pool:test: ↓ holds a freshly refreshed token rejected with HTTP 401 without marking an account error bb-plugin-account-pool:test: ↓ holds a freshly refreshed token rejected with HTTP 403 without marking an account error bb-plugin-account-pool:test: ↓ clears a stored credential error through a manual refresh bb-plugin-account-pool:test: ↓ honors a newer token's rejected cooldown when an older 401 arrives late bb-plugin-account-pool:test: ↓ bounds failed response disposal when the body never ends bb-plugin-account-pool:test: ↓ bounds failed response disposal when the body cancel rejects bb-plugin-account-pool:test: ↓ bounds failed response disposal when the body cancel hangs bb-plugin-account-pool:test: ↓ finishes a successful in-flight fetch during graceful hub shutdown bb-plugin-account-pool:test: ↓ accepts requests after stopping and restarting the hub service bb-plugin-account-pool:test: ↓ uses only the initial account snapshot with a healthy fourth account: true bb-plugin-account-pool:test: ↓ uses only the initial account snapshot with a healthy fourth account: false bb-plugin-account-pool:test: ↓ does not start another inference after cancellation during pacing bb-plugin-account-pool:test: ↓ never replays a committed SSE stream on another account bb-plugin-account-pool:test: ↓ keeps claude sessions and the pool cursor on the third account after two failures bb-plugin-account-pool:test: ↓ keeps codex sessions and the pool cursor on the third account after two failures bb-plugin-account-pool:test: ↓ lets new claude conversations bypass long holds while preserving established pins bb-plugin-account-pool:test: ↓ lets new codex conversations bypass long holds while preserving established pins bb-plugin-account-pool:test: ↓ fails over immediately when a new claude conversation receives a long rate limit bb-plugin-account-pool:test: ↓ fails over immediately when a new codex conversation receives a long rate limit bb-plugin-account-pool:test: ↓ restores the claude cursor and distinct session pins after a full plugin reload bb-plugin-account-pool:test: ↓ restores the codex cursor and distinct session pins after a full plugin reload bb-plugin-account-pool:test: × retains Claude session affinity after 45 idle minutes with reload=false 164ms bb-plugin-account-pool:test: × retains Claude session affinity after 45 idle minutes with reload=true 61ms bb-plugin-account-pool:test: × retains Claude session affinity after 61 idle minutes with reload=false 38ms bb-plugin-account-pool:test: × retains Claude session affinity after 61 idle minutes with reload=true 36ms bb-plugin-account-pool:test: ↓ runs claude sequentially across conversations and keeps a recovered earlier account as backup bb-plugin-account-pool:test: ↓ runs codex sequentially across conversations and keeps a recovered earlier account as backup bb-plugin-account-pool:test: ↓ handles claude quota exhaustion and reset with session affinity bb-plugin-account-pool:test: ↓ handles codex quota exhaustion and reset with session affinity bb-plugin-account-pool:test: ↓ keeps a fork on its short-held parent account over claude bb-plugin-account-pool:test: ↓ keeps a fork on its short-held parent account over codex-fork bb-plugin-account-pool:test: ↓ inherits the eligible claude parent once and keeps child failover independent bb-plugin-account-pool:test: ↓ inherits the eligible codex-fork parent once and keeps child failover independent bb-plugin-account-pool:test: ↓ inherits the eligible codex-shared-session parent once and keeps child failover independent bb-plugin-account-pool:test: ↓ inherits the eligible codex-body parent once and keeps child failover independent bb-plugin-account-pool:test: ↓ inherits the eligible codex-parent-header parent once and keeps child failover independent bb-plugin-account-pool:test: ↓ inherits the eligible codex-parent-body parent once and keeps child failover independent bb-plugin-account-pool:test: ↓ inherits the eligible codex-spawn parent once and keeps child failover independent bb-plugin-account-pool:test: ↓ uses ordinary selection when the parent is disabled bb-plugin-account-pool:test: ↓ uses ordinary selection when the parent is expired bb-plugin-account-pool:test: ↓ uses ordinary selection when the parent is missing bb-plugin-account-pool:test: ↓ uses ordinary selection when the parent is other host bb-plugin-account-pool:test: ↓ does not extend the parent lifetime when a child inherits its account bb-plugin-account-pool:test: ↓ uses ordinary selection when the parent is disabled bb-plugin-account-pool:test: ↓ uses ordinary selection when the parent is expired bb-plugin-account-pool:test: ↓ uses ordinary selection when the parent is missing bb-plugin-account-pool:test: ↓ uses ordinary selection when the parent is other host bb-plugin-account-pool:test: ↓ does not extend the parent lifetime when a child inherits its account bb-plugin-account-pool:test: ↓ does not inherit a parent binding from another provider bb-plugin-account-pool:test: ↓ keeps 'Claude JSON' sessions sticky with host isolation and idle expiry bb-plugin-account-pool:test: ↓ keeps 'Claude legacy' sessions sticky with host isolation and idle expiry bb-plugin-account-pool:test: ↓ keeps 'Codex native' sessions sticky with host isolation and idle expiry bb-plugin-account-pool:test: ↓ keeps 'Codex legacy' sessions sticky with host isolation and idle expiry bb-plugin-account-pool:test: ↓ keeps 'Codex cache' sessions sticky with host isolation and idle expiry bb-plugin-account-pool:test: ↓ preserves the correct binding after family quota despite an older response completion bb-plugin-account-pool:test: ↓ preserves the correct binding after auth error despite an older response completion bb-plugin-account-pool:test: ↓ preserves the correct binding after disabled account despite an older response completion bb-plugin-account-pool:test: ↓ preserves the correct binding after network error despite an older response completion bb-plugin-account-pool:test: ↓ shares the first binding when simultaneous account listings resume under different load bb-plugin-account-pool:test: ↓ keeps native Codex HTTP compaction continuations on the same account bb-plugin-account-pool:test: ↓ preserves a newer session binding outside an older candidate snapshot with a fallback: false bb-plugin-account-pool:test: ↓ preserves a newer session binding outside an older candidate snapshot with a fallback: true bb-plugin-account-pool:test: ↓ preserves a newer session binding to an already-attempted account bb-plugin-account-pool:test: ↓ isolates provider bindings and retains them on hub restart bb-plugin-account-pool:test: ↓ evicts the least recently used binding at capacity bb-plugin-account-pool:test: ↓ serializes refresh, writes new tokens with 0600 mode, and uses them bb-plugin-account-pool:test: ↓ refreshes unrelated accounts independently bb-plugin-account-pool:test: ↓ 'uses valid tokens during temporary fa…' bb-plugin-account-pool:test: ↓ 'temporarily rejects expired tokens an…' bb-plugin-account-pool:test: ↓ 'keeps invalid_grant accounts excluded…' bb-plugin-account-pool:test: ↓ 'uses valid tokens during temporary fa…' bb-plugin-account-pool:test: ↓ 'temporarily rejects expired tokens an…' bb-plugin-account-pool:test: ↓ 'keeps invalid_grant accounts excluded…' bb-plugin-account-pool:test: ↓ expires fallback tokens during refresh backoff and caps Retry-After bb-plugin-account-pool:test: ↓ marks refresh and upstream authorization failures as account errors bb-plugin-account-pool:test: ↓ suppresses env and health only for the provider whose routing is off bb-plugin-account-pool:test: ↓ records the selected account's last-use time and host bb-plugin-account-pool:test: ↓ sets priority, refreshes one account, and returns status over RPC bb-plugin-account-pool:test: ↓ drains completed streams and aborts a stuck stream after the stop deadline bb-plugin-account-pool:test: ↓ bounds repeated waits when a session's rate-limit hold keeps extending bb-plugin-account-pool:test: ↓ keeps a paced session on its account when another request arrives during a short hold bb-plugin-account-pool:test: ↓ keeps the last working binding after every account fails during a provider outage bb-plugin-account-pool:test: ↓ keeps Codex over-limit accounts ineligible until reset when utilization is omitted bb-plugin-account-pool:test: ↓ routes Codex credit fallback with funded allowance bb-plugin-account-pool:test: ↓ routes Codex credit fallback with unlimited allowance bb-plugin-account-pool:test: ↓ routes Codex credit fallback with depleted allowance bb-plugin-account-pool:test: ↓ routes Codex credit fallback with unknown allowance bb-plugin-account-pool:test: ↓ routes Codex credit fallback with spending cap allowance bb-plugin-account-pool:test: ↓ routes Codex credit fallback with individual cap allowance bb-plugin-account-pool:test: ↓ returns Codex paid pins to recovered subscriptions and persists spending restrictions bb-plugin-account-pool:test: ↓ routes exhausted Claude accounts with enabled extra usage bb-plugin-account-pool:test: ↓ routes exhausted Claude accounts with unlimited extra usage bb-plugin-account-pool:test: ↓ routes exhausted Claude accounts with disabled extra usage bb-plugin-account-pool:test: ↓ routes exhausted Claude accounts with spent extra usage bb-plugin-account-pool:test: ↓ routes exhausted Claude accounts with 100 percent extra usage bb-plugin-account-pool:test: ↓ routes exhausted Claude accounts with unobserved extra usage bb-plugin-account-pool:test: ↓ prefers subscription quota over shared extra usage and leaves paid pins on recovery bb-plugin-account-pool:test: ↓ prefers subscription quota over family extra usage and leaves paid pins on recovery bb-plugin-account-pool:test: ↓ learns extra usage from headers, preserves it across restart, and stops on an overage rejection bb-plugin-account-pool:test: ↓ refreshes exhausted usage before refusing a request, at most every 30 seconds per account bb-plugin-account-pool:test: ↓ lets concurrent requests share an exhausted-usage recheck bb-plugin-account-pool:test: ↓ applies reordered failover atomically without moving current conversations bb-plugin-account-pool:test: ↓ logs a sanitized transport cause when pooled fetch fails bb-plugin-account-pool:test: ↓ drains a streamed response before disposing the owned transport bb-plugin-account-pool:test: ↓ publishes pooled usage without a display plugin and does not invent unobserved utilization bb-plugin-account-pool:test: ↓ publishes an empty shared usage group before any accounts or settings are configured bb-plugin-account-pool:test: ↓ neutralises inherited routing when 'the instance is set to isolate' bb-plugin-account-pool:test: ↓ neutralises inherited routing when 'the parent cannot serve the provider' bb-plugin-account-pool:test: ↓ neutralises inherited routing when 'the parent is unreachable' bb-plugin-account-pool:test: ↓ contributes self-pointing routing and the marker while proxying bb-plugin-account-pool:test: ↓ forwards pooled traffic to the parent with the parent token bb-plugin-account-pool:test: ↓ rejects pooled traffic that does not present the child's own token bb-plugin-account-pool:test: ↓ serves availability only to hub token holders bb-plugin-account-pool:test: ↓ |bb-plugin-account-pool| app.test.tsx (31 tests | 31 skipped) bb-plugin-account-pool:test: bb-plugin-account-pool:test: ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 4 ⎯⎯⎯⎯⎯⎯⎯ bb-plugin-account-pool:test: bb-plugin-account-pool:test: FAIL |bb-plugin-account-pool| src/server.test.ts > Account Pool plugin > session affinity > retains Claude session affinity after 45 idle minutes with reload=false bb-plugin-account-pool:test: FAIL |bb-plugin-account-pool| src/server.test.ts > Account Pool plugin > session affinity > retains Claude session affinity after 45 idle minutes with reload=true bb-plugin-account-pool:test: FAIL |bb-plugin-account-pool| src/server.test.ts > Account Pool plugin > session affinity > retains Claude session affinity after 61 idle minutes with reload=false bb-plugin-account-pool:test: FAIL |bb-plugin-account-pool| src/server.test.ts > Account Pool plugin > session affinity > retains Claude session affinity after 61 idle minutes with reload=true bb-plugin-account-pool:test: AssertionError: expected 'sk-second' to be 'sk-first' // Object.is equality bb-plugin-account-pool:test: bb-plugin-account-pool:test: Expected: "sk-first" bb-plugin-account-pool:test: Received: "sk-second" bb-plugin-account-pool:test: bb-plugin-account-pool:test: ❯ src/server.test.ts:4053:40 bb-plugin-account-pool:test: 4051| }); bb-plugin-account-pool:test: 4052| } bb-plugin-account-pool:test: 4053| expect(await send("original")).toBe("sk-first"); bb-plugin-account-pool:test: | ^ bb-plugin-account-pool:test: 4054| expect(await send("fresh")).toBe("sk-second"); bb-plugin-account-pool:test: 4055| }, bb-plugin-account-pool:test: bb-plugin-account-pool:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/4]⎯ bb-plugin-account-pool:test: bb-plugin-account-pool:test: bb-plugin-account-pool:test: Test Files 1 failed | 11 skipped (12) bb-plugin-account-pool:test: Tests 4 failed | 349 skipped (353) bb-plugin-account-pool:test: Start at 17:25:16 bb-plugin-account-pool:test: Duration 2.94s (transform 2.18s, setup 0ms, import 5.81s, tests 302ms, environment 1.62s) bb-plugin-account-pool:test: bb-plugin-account-pool:test:  ELIFECYCLE  Test failed. See above for more details. bb-plugin-account-pool#test: ERROR command (/base/plugins/account-pool) /usr/local/bin/pnpm run test --testNamePattern=retains Claude session affinity exited (1) Tasks: 5 successful, 6 total Cached: 0 cached, 6 total Time: 5.798s Failed: bb-plugin-account-pool#test ERROR run failed: command exited (1)