@cortexkit/opencode-antigravity-auth 3.0.5 → 3.0.6
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 +38 -352
- package/dist/cli.js +9199 -8799
- package/dist/cli.js.map +4 -4
- package/dist/cli.meta.json +1286 -1064
- package/dist/index.js +13641 -14559
- package/dist/index.js.map +4 -4
- package/dist/index.meta.json +1333 -1342
- package/dist/server.js +10618 -11080
- package/dist/server.js.map +4 -4
- package/dist/server.meta.json +1 -1
- package/dist/src/auth-method-labels.d.ts +3 -0
- package/dist/src/auth-method-labels.d.ts.map +1 -0
- package/dist/src/auth-method-labels.js +5 -0
- package/dist/src/auth-method-labels.js.map +1 -0
- package/dist/src/cli.d.ts +3 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +98 -12
- package/dist/src/cli.js.map +1 -1
- package/dist/src/common-auth-embedded/claustrum/consumer.d.ts +33 -3
- package/dist/src/common-auth-embedded/claustrum/consumer.js +96 -1
- package/dist/src/common-auth-embedded/claustrum/custody.d.ts +4 -1
- package/dist/src/common-auth-embedded/claustrum/enrollment.d.ts +6 -1
- package/dist/src/common-auth-embedded/claustrum/enrollment.js +6 -1
- package/dist/src/common-auth-embedded/claustrum/index.d.ts +2 -1
- package/dist/src/common-auth-embedded/claustrum/index.js +5 -3
- package/dist/src/common-auth-embedded/claustrum/insula.d.ts +69 -0
- package/dist/src/common-auth-embedded/claustrum/insula.js +152 -0
- package/dist/src/common-auth-embedded/claustrum/roster.d.ts +13 -0
- package/dist/src/common-auth-embedded/claustrum/roster.js +33 -3
- package/dist/src/common-auth-embedded/fs/refresh-file-lock.js +20 -11
- package/dist/src/common-auth-embedded/quota/codec.d.ts +2 -0
- package/dist/src/common-auth-embedded/quota/codec.js +2 -1
- package/dist/src/common-auth-embedded/quota/format.d.ts +26 -0
- package/dist/src/common-auth-embedded/quota/format.js +78 -42
- package/dist/src/common-auth-embedded/quota/index.d.ts +4 -4
- package/dist/src/common-auth-embedded/quota/index.js +2 -2
- package/dist/src/common-auth-embedded/quota/map.d.ts +11 -0
- package/dist/src/common-auth-embedded/quota/map.js +36 -1
- package/dist/src/common-auth-embedded/quota/merge.d.ts +3 -1
- package/dist/src/common-auth-embedded/quota/merge.js +21 -5
- package/dist/src/common-auth-embedded/quota/projection.d.ts +2 -1
- package/dist/src/common-auth-embedded/quota/projection.js +3 -1
- package/dist/src/common-auth-embedded/setup/command-runner.js +49 -0
- package/dist/src/common-auth-embedded/setup/command.d.ts +3 -0
- package/dist/src/common-auth-embedded/setup/command.js +215 -0
- package/dist/src/common-auth-embedded/setup/config-write.js +60 -0
- package/dist/src/common-auth-embedded/setup/detect.d.ts +6 -0
- package/dist/src/common-auth-embedded/setup/detect.js +224 -0
- package/dist/src/common-auth-embedded/setup/enroll.js +70 -0
- package/dist/src/common-auth-embedded/setup/index.d.ts +5 -0
- package/dist/src/common-auth-embedded/setup/index.js +4 -0
- package/dist/src/common-auth-embedded/setup/paths.js +33 -0
- package/dist/src/common-auth-embedded/setup/process-fence.d.ts +43 -0
- package/dist/src/common-auth-embedded/setup/process-fence.js +270 -0
- package/dist/src/common-auth-embedded/setup/prompts.js +26 -0
- package/dist/src/common-auth-embedded/setup/register.d.ts +11 -0
- package/dist/src/common-auth-embedded/setup/register.js +130 -0
- package/dist/src/common-auth-embedded/setup/types.d.ts +136 -0
- package/dist/src/common-auth-embedded/source-output.json +228 -80
- package/dist/src/common-auth-embedded/store/schema.d.ts +2 -0
- package/dist/src/common-auth-embedded/store/schema.js +3 -2
- package/dist/src/ga/rpc/protocol.d.ts +4 -7
- package/dist/src/ga/rpc/protocol.d.ts.map +1 -1
- package/dist/src/ga/rpc/protocol.js +5 -13
- package/dist/src/ga/rpc/protocol.js.map +1 -1
- package/dist/src/ga/server/auth.d.ts +8 -3
- package/dist/src/ga/server/auth.d.ts.map +1 -1
- package/dist/src/ga/server/auth.js +25 -9
- package/dist/src/ga/server/auth.js.map +1 -1
- package/dist/src/ga/server/index.d.ts +39 -12
- package/dist/src/ga/server/index.d.ts.map +1 -1
- package/dist/src/ga/server/index.js +214 -53
- package/dist/src/ga/server/index.js.map +1 -1
- package/dist/src/ga/server/pool-login.d.ts +22 -0
- package/dist/src/ga/server/pool-login.d.ts.map +1 -0
- package/dist/src/ga/server/pool-login.js +150 -0
- package/dist/src/ga/server/pool-login.js.map +1 -0
- package/dist/src/ga/tui/host-ga.d.ts +2 -5
- package/dist/src/ga/tui/host-ga.d.ts.map +1 -1
- package/dist/src/ga/tui/host-ga.js +17 -49
- package/dist/src/ga/tui/host-ga.js.map +1 -1
- package/dist/src/plugin/accounts.d.ts +1 -1
- package/dist/src/plugin/accounts.d.ts.map +1 -1
- package/dist/src/plugin/accounts.js +1 -0
- package/dist/src/plugin/accounts.js.map +1 -1
- package/dist/src/plugin/background-vault-quota-refresh.d.ts +2 -0
- package/dist/src/plugin/background-vault-quota-refresh.d.ts.map +1 -1
- package/dist/src/plugin/background-vault-quota-refresh.js +125 -10
- package/dist/src/plugin/background-vault-quota-refresh.js.map +1 -1
- package/dist/src/plugin/command-apply.d.ts +2 -2
- package/dist/src/plugin/command-apply.d.ts.map +1 -1
- package/dist/src/plugin/command-apply.js +3 -10
- package/dist/src/plugin/command-apply.js.map +1 -1
- package/dist/src/plugin/commands.d.ts +1 -0
- package/dist/src/plugin/commands.d.ts.map +1 -1
- package/dist/src/plugin/commands.js +2 -2
- package/dist/src/plugin/commands.js.map +1 -1
- package/dist/src/plugin/config/operator-settings-schema.d.ts +0 -4
- package/dist/src/plugin/config/operator-settings-schema.d.ts.map +1 -1
- package/dist/src/plugin/config/operator-settings-schema.js +0 -5
- package/dist/src/plugin/config/operator-settings-schema.js.map +1 -1
- package/dist/src/plugin/config/schema.d.ts +0 -7
- package/dist/src/plugin/config/schema.d.ts.map +1 -1
- package/dist/src/plugin/config/schema.js +0 -43
- package/dist/src/plugin/config/schema.js.map +1 -1
- package/dist/src/plugin/config/writer.d.ts +1 -1
- package/dist/src/plugin/config/writer.js +1 -1
- package/dist/src/plugin/fetch/retry-state.d.ts +19 -3
- package/dist/src/plugin/fetch/retry-state.d.ts.map +1 -1
- package/dist/src/plugin/fetch/retry-state.js +0 -6
- package/dist/src/plugin/fetch/retry-state.js.map +1 -1
- package/dist/src/plugin/fetch-interceptor.d.ts.map +1 -1
- package/dist/src/plugin/fetch-interceptor.js +0 -3
- package/dist/src/plugin/fetch-interceptor.js.map +1 -1
- package/dist/src/plugin/fetch-routing.d.ts +0 -16
- package/dist/src/plugin/fetch-routing.d.ts.map +1 -1
- package/dist/src/plugin/fetch-routing.js +0 -49
- package/dist/src/plugin/fetch-routing.js.map +1 -1
- package/dist/src/plugin/ga-location-services.d.ts +14 -9
- package/dist/src/plugin/ga-location-services.d.ts.map +1 -1
- package/dist/src/plugin/ga-location-services.js +120 -40
- package/dist/src/plugin/ga-location-services.js.map +1 -1
- package/dist/src/plugin/google-origin.d.ts +7 -0
- package/dist/src/plugin/google-origin.d.ts.map +1 -0
- package/dist/src/plugin/google-origin.js +14 -0
- package/dist/src/plugin/google-origin.js.map +1 -0
- package/dist/src/plugin/index.d.ts.map +1 -1
- package/dist/src/plugin/index.js +15 -4
- package/dist/src/plugin/index.js.map +1 -1
- package/dist/src/plugin/oauth-methods.d.ts.map +1 -1
- package/dist/src/plugin/oauth-methods.js +0 -33
- package/dist/src/plugin/oauth-methods.js.map +1 -1
- package/dist/src/plugin/operator-settings.d.ts +1 -1
- package/dist/src/plugin/operator-settings.d.ts.map +1 -1
- package/dist/src/plugin/operator-settings.js +1 -8
- package/dist/src/plugin/operator-settings.js.map +1 -1
- package/dist/src/plugin/quota.d.ts +11 -7
- package/dist/src/plugin/quota.d.ts.map +1 -1
- package/dist/src/plugin/quota.js +128 -102
- package/dist/src/plugin/quota.js.map +1 -1
- package/dist/src/plugin/request.d.ts +5 -3
- package/dist/src/plugin/request.d.ts.map +1 -1
- package/dist/src/plugin/request.js +87 -168
- package/dist/src/plugin/request.js.map +1 -1
- package/dist/src/plugin/server.d.ts.map +1 -1
- package/dist/src/plugin/server.js +60 -53
- package/dist/src/plugin/server.js.map +1 -1
- package/dist/src/plugin/shared/advisory-repository.d.ts +20 -0
- package/dist/src/plugin/shared/advisory-repository.d.ts.map +1 -0
- package/dist/src/plugin/shared/advisory-repository.js +91 -0
- package/dist/src/plugin/shared/advisory-repository.js.map +1 -0
- package/dist/src/plugin/shared/request-services.d.ts +19 -25
- package/dist/src/plugin/shared/request-services.d.ts.map +1 -1
- package/dist/src/plugin/shared/request-services.js +105 -188
- package/dist/src/plugin/shared/request-services.js.map +1 -1
- package/dist/src/plugin/shared/runtime.js +4 -2
- package/dist/src/plugin/shared/runtime.js.map +1 -1
- package/dist/src/plugin/shared/vault-request-credentials.d.ts +4 -1
- package/dist/src/plugin/shared/vault-request-credentials.d.ts.map +1 -1
- package/dist/src/plugin/shared/vault-request-credentials.js +41 -7
- package/dist/src/plugin/shared/vault-request-credentials.js.map +1 -1
- package/dist/src/plugin/storage.d.ts +2 -2
- package/dist/src/plugin/storage.d.ts.map +1 -1
- package/dist/src/plugin/storage.js.map +1 -1
- package/dist/src/plugin/vault-custody.d.ts.map +1 -1
- package/dist/src/plugin/vault-custody.js +147 -35
- package/dist/src/plugin/vault-custody.js.map +1 -1
- package/dist/src/plugin/vault-quota-outcome.d.ts +19 -0
- package/dist/src/plugin/vault-quota-outcome.d.ts.map +1 -0
- package/dist/src/plugin/vault-quota-outcome.js +47 -0
- package/dist/src/plugin/vault-quota-outcome.js.map +1 -0
- package/dist/src/quota-presentation.d.ts +29 -1
- package/dist/src/quota-presentation.d.ts.map +1 -1
- package/dist/src/quota-presentation.js +52 -17
- package/dist/src/quota-presentation.js.map +1 -1
- package/dist/src/setup.d.ts +15 -0
- package/dist/src/setup.d.ts.map +1 -0
- package/dist/src/setup.js +320 -0
- package/dist/src/setup.js.map +1 -0
- package/dist/src/sidebar-projection.d.ts +1 -1
- package/dist/src/sidebar-projection.d.ts.map +1 -1
- package/dist/src/sidebar-state.d.ts +1 -1
- package/dist/src/sidebar-state.d.ts.map +1 -1
- package/dist/src/sidebar-state.js +19 -1
- package/dist/src/sidebar-state.js.map +1 -1
- package/dist/src/tui.d.ts.map +1 -1
- package/dist/src/tui.js +205 -110
- package/dist/src/tui.js.map +1 -1
- package/dist/tui-build-map.json +37 -37
- package/dist/tui-ga-build-map.json +33 -33
- package/dist/types/src/auth-method-labels.d.ts +3 -0
- package/dist/types/src/auth-method-labels.d.ts.map +1 -0
- package/dist/types/src/cli.d.ts +3 -1
- package/dist/types/src/cli.d.ts.map +1 -1
- package/dist/types/src/common-auth-embedded/auth-menu/terminal.d.ts +43 -0
- package/dist/types/src/common-auth-embedded/claustrum/consumer.d.ts +132 -0
- package/dist/types/src/common-auth-embedded/claustrum/custody.d.ts +178 -0
- package/dist/types/src/common-auth-embedded/claustrum/enrollment.d.ts +164 -0
- package/dist/types/src/common-auth-embedded/claustrum/errors.d.ts +16 -0
- package/dist/types/src/common-auth-embedded/claustrum/host-slot.d.ts +39 -0
- package/dist/types/src/common-auth-embedded/claustrum/index.d.ts +19 -0
- package/dist/types/src/common-auth-embedded/claustrum/insula.d.ts +69 -0
- package/dist/types/src/common-auth-embedded/claustrum/interlock.d.ts +27 -0
- package/dist/types/src/common-auth-embedded/claustrum/roster.d.ts +221 -0
- package/dist/types/src/common-auth-embedded/opencode2/errors.d.ts +25 -0
- package/dist/types/src/common-auth-embedded/opencode2/index.d.ts +8 -0
- package/dist/types/src/common-auth-embedded/opencode2/install.d.ts +55 -0
- package/dist/types/src/common-auth-embedded/opencode2/integration.d.ts +112 -0
- package/dist/types/src/common-auth-embedded/opencode2/sse.d.ts +12 -0
- package/dist/types/src/common-auth-embedded/opencode2/types.d.ts +413 -0
- package/dist/types/src/common-auth-embedded/quota/codec.d.ts +2 -0
- package/dist/types/src/common-auth-embedded/quota/format.d.ts +26 -0
- package/dist/types/src/common-auth-embedded/quota/index.d.ts +4 -4
- package/dist/types/src/common-auth-embedded/quota/map.d.ts +11 -0
- package/dist/types/src/common-auth-embedded/quota/merge.d.ts +3 -1
- package/dist/types/src/common-auth-embedded/quota/projection.d.ts +2 -1
- package/dist/types/src/common-auth-embedded/routing/admission.d.ts +93 -0
- package/dist/types/src/common-auth-embedded/routing/index.d.ts +8 -0
- package/dist/types/src/common-auth-embedded/routing/ordered.d.ts +47 -0
- package/dist/types/src/common-auth-embedded/routing/pins.d.ts +22 -0
- package/dist/types/src/common-auth-embedded/routing/sticky.d.ts +158 -0
- package/dist/types/src/common-auth-embedded/setup/command.d.ts +3 -0
- package/dist/types/src/common-auth-embedded/setup/detect.d.ts +6 -0
- package/dist/types/src/common-auth-embedded/setup/index.d.ts +5 -0
- package/dist/types/src/common-auth-embedded/setup/process-fence.d.ts +43 -0
- package/dist/types/src/common-auth-embedded/setup/register.d.ts +11 -0
- package/dist/types/src/common-auth-embedded/setup/types.d.ts +136 -0
- package/dist/types/src/common-auth-embedded/store/schema.d.ts +2 -0
- package/dist/types/src/ga/rpc/protocol.d.ts +4 -7
- package/dist/types/src/ga/rpc/protocol.d.ts.map +1 -1
- package/dist/types/src/ga/server/auth.d.ts +8 -3
- package/dist/types/src/ga/server/auth.d.ts.map +1 -1
- package/dist/types/src/ga/server/index.d.ts +39 -12
- package/dist/types/src/ga/server/index.d.ts.map +1 -1
- package/dist/types/src/ga/server/pool-login.d.ts +22 -0
- package/dist/types/src/ga/server/pool-login.d.ts.map +1 -0
- package/dist/types/src/plugin/accounts.d.ts +1 -1
- package/dist/types/src/plugin/accounts.d.ts.map +1 -1
- package/dist/types/src/plugin/background-vault-quota-refresh.d.ts +2 -0
- package/dist/types/src/plugin/background-vault-quota-refresh.d.ts.map +1 -1
- package/dist/types/src/plugin/command-apply.d.ts +2 -2
- package/dist/types/src/plugin/command-apply.d.ts.map +1 -1
- package/dist/types/src/plugin/commands.d.ts +1 -0
- package/dist/types/src/plugin/commands.d.ts.map +1 -1
- package/dist/types/src/plugin/config/operator-settings-schema.d.ts +0 -4
- package/dist/types/src/plugin/config/operator-settings-schema.d.ts.map +1 -1
- package/dist/types/src/plugin/config/schema.d.ts +0 -7
- package/dist/types/src/plugin/config/schema.d.ts.map +1 -1
- package/dist/types/src/plugin/config/writer.d.ts +1 -1
- package/dist/types/src/plugin/fetch/retry-state.d.ts +19 -3
- package/dist/types/src/plugin/fetch/retry-state.d.ts.map +1 -1
- package/dist/types/src/plugin/fetch-interceptor.d.ts.map +1 -1
- package/dist/types/src/plugin/fetch-routing.d.ts +0 -16
- package/dist/types/src/plugin/fetch-routing.d.ts.map +1 -1
- package/dist/types/src/plugin/ga-location-services.d.ts +14 -9
- package/dist/types/src/plugin/ga-location-services.d.ts.map +1 -1
- package/dist/types/src/plugin/google-origin.d.ts +7 -0
- package/dist/types/src/plugin/google-origin.d.ts.map +1 -0
- package/dist/types/src/plugin/index.d.ts.map +1 -1
- package/dist/types/src/plugin/oauth-methods.d.ts.map +1 -1
- package/dist/types/src/plugin/operator-settings.d.ts +1 -1
- package/dist/types/src/plugin/operator-settings.d.ts.map +1 -1
- package/dist/types/src/plugin/quota.d.ts +11 -7
- package/dist/types/src/plugin/quota.d.ts.map +1 -1
- package/dist/types/src/plugin/request.d.ts +5 -3
- package/dist/types/src/plugin/request.d.ts.map +1 -1
- package/dist/types/src/plugin/server.d.ts.map +1 -1
- package/dist/types/src/plugin/shared/advisory-repository.d.ts +20 -0
- package/dist/types/src/plugin/shared/advisory-repository.d.ts.map +1 -0
- package/dist/types/src/plugin/shared/request-services.d.ts +19 -25
- package/dist/types/src/plugin/shared/request-services.d.ts.map +1 -1
- package/dist/types/src/plugin/shared/vault-request-credentials.d.ts +4 -1
- package/dist/types/src/plugin/shared/vault-request-credentials.d.ts.map +1 -1
- package/dist/types/src/plugin/storage.d.ts +2 -2
- package/dist/types/src/plugin/storage.d.ts.map +1 -1
- package/dist/types/src/plugin/vault-custody.d.ts.map +1 -1
- package/dist/types/src/plugin/vault-quota-outcome.d.ts +19 -0
- package/dist/types/src/plugin/vault-quota-outcome.d.ts.map +1 -0
- package/dist/types/src/setup.d.ts +15 -0
- package/dist/types/src/setup.d.ts.map +1 -0
- package/dist/types/src/sidebar-state.d.ts +1 -1
- package/dist/types/src/sidebar-state.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/common-auth-embedded/claustrum/consumer.d.ts +33 -3
- package/src/common-auth-embedded/claustrum/consumer.js +96 -1
- package/src/common-auth-embedded/claustrum/custody.d.ts +4 -1
- package/src/common-auth-embedded/claustrum/enrollment.d.ts +6 -1
- package/src/common-auth-embedded/claustrum/enrollment.js +6 -1
- package/src/common-auth-embedded/claustrum/index.d.ts +2 -1
- package/src/common-auth-embedded/claustrum/index.js +5 -3
- package/src/common-auth-embedded/claustrum/insula.d.ts +69 -0
- package/src/common-auth-embedded/claustrum/insula.js +152 -0
- package/src/common-auth-embedded/claustrum/roster.d.ts +13 -0
- package/src/common-auth-embedded/claustrum/roster.js +33 -3
- package/src/common-auth-embedded/fs/refresh-file-lock.js +20 -11
- package/src/common-auth-embedded/quota/codec.d.ts +2 -0
- package/src/common-auth-embedded/quota/codec.js +2 -1
- package/src/common-auth-embedded/quota/format.d.ts +26 -0
- package/src/common-auth-embedded/quota/format.js +78 -42
- package/src/common-auth-embedded/quota/index.d.ts +4 -4
- package/src/common-auth-embedded/quota/index.js +2 -2
- package/src/common-auth-embedded/quota/map.d.ts +11 -0
- package/src/common-auth-embedded/quota/map.js +36 -1
- package/src/common-auth-embedded/quota/merge.d.ts +3 -1
- package/src/common-auth-embedded/quota/merge.js +21 -5
- package/src/common-auth-embedded/quota/projection.d.ts +2 -1
- package/src/common-auth-embedded/quota/projection.js +3 -1
- package/src/common-auth-embedded/setup/command-runner.js +49 -0
- package/src/common-auth-embedded/setup/command.d.ts +3 -0
- package/src/common-auth-embedded/setup/command.js +215 -0
- package/src/common-auth-embedded/setup/config-write.js +60 -0
- package/src/common-auth-embedded/setup/detect.d.ts +6 -0
- package/src/common-auth-embedded/setup/detect.js +224 -0
- package/src/common-auth-embedded/setup/enroll.js +70 -0
- package/src/common-auth-embedded/setup/index.d.ts +5 -0
- package/src/common-auth-embedded/setup/index.js +4 -0
- package/src/common-auth-embedded/setup/paths.js +33 -0
- package/src/common-auth-embedded/setup/process-fence.d.ts +43 -0
- package/src/common-auth-embedded/setup/process-fence.js +270 -0
- package/src/common-auth-embedded/setup/prompts.js +26 -0
- package/src/common-auth-embedded/setup/register.d.ts +11 -0
- package/src/common-auth-embedded/setup/register.js +130 -0
- package/src/common-auth-embedded/setup/types.d.ts +136 -0
- package/src/common-auth-embedded/source-output.json +228 -80
- package/src/common-auth-embedded/store/schema.d.ts +2 -0
- package/src/common-auth-embedded/store/schema.js +3 -2
- package/src/sidebar-state.ts +19 -2
- package/src/tui-compiled/common-auth-embedded/quota/codec.js +2 -1
- package/src/tui-compiled/common-auth-embedded/quota/format.js +78 -42
- package/src/tui-compiled/common-auth-embedded/quota/index.js +2 -2
- package/src/tui-compiled/common-auth-embedded/quota/map.js +36 -1
- package/src/tui-compiled/common-auth-embedded/quota/merge.js +21 -5
- package/src/tui-compiled/common-auth-embedded/quota/projection.js +3 -1
- package/src/tui-compiled/quota-presentation.js +42 -9
- package/src/tui-compiled/sidebar-state.js +15 -1
- package/src/tui-compiled/tui.js +516 -334
- package/src/tui-ga-compiled/host-ga.js +11 -38
- package/src/tui-ga-compiled/shared/1ff34afa7c42d196-projection.js +3 -1
- package/src/tui-ga-compiled/shared/77138df80c7ae006-map.js +36 -1
- package/src/tui-ga-compiled/shared/98cc0c186c46c42d-quota-presentation.js +42 -9
- package/src/tui-ga-compiled/shared/aef2402f8fc342f0-format.js +78 -42
- package/src/tui-ga-compiled/shared/bf17cbee28e58197-index.js +2 -2
- package/src/tui-ga-compiled/shared/ca21dc417b36dc5d-codec.js +2 -1
- package/src/tui-ga-compiled/shared/ecc214300932dfb6-merge.js +21 -5
- package/src/tui-ga-raw/host-ga.tsx +31 -62
- package/src/tui-ga-raw/shared/1ff34afa7c42d196-projection.js +3 -1
- package/src/tui-ga-raw/shared/77138df80c7ae006-map.js +36 -1
- package/src/tui-ga-raw/shared/98cc0c186c46c42d-quota-presentation.js +42 -9
- package/src/tui-ga-raw/shared/aef2402f8fc342f0-format.js +78 -42
- package/src/tui-ga-raw/shared/bf17cbee28e58197-index.js +2 -2
- package/src/tui-ga-raw/shared/ca21dc417b36dc5d-codec.js +2 -1
- package/src/tui-ga-raw/shared/ecc214300932dfb6-merge.js +21 -5
- package/src/tui-raw/common-auth-embedded/quota/codec.js +2 -1
- package/src/tui-raw/common-auth-embedded/quota/format.js +78 -42
- package/src/tui-raw/common-auth-embedded/quota/index.js +2 -2
- package/src/tui-raw/common-auth-embedded/quota/map.js +36 -1
- package/src/tui-raw/common-auth-embedded/quota/merge.js +21 -5
- package/src/tui-raw/common-auth-embedded/quota/projection.js +3 -1
- package/src/tui-raw/quota-presentation.js +42 -9
- package/src/tui-raw/sidebar-state.js +15 -1
- package/src/tui-raw/tui.tsx +423 -218
- package/src/tui.tsx +423 -218
- package/dist/src/tui/vault-setup.d.ts +0 -98
- package/dist/src/tui/vault-setup.d.ts.map +0 -1
- package/dist/src/tui/vault-setup.js +0 -198
- package/dist/src/tui/vault-setup.js.map +0 -1
- package/dist/types/src/plugin/transform/model-resolver.d.ts +0 -2
- package/dist/types/src/plugin/transform/model-resolver.d.ts.map +0 -1
- package/dist/types/src/quota-presentation.d.ts +0 -18
- package/dist/types/src/quota-presentation.d.ts.map +0 -1
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
* with `force: true` — manual quota screens must always refresh, even if
|
|
15
15
|
* the background manager has backed off.
|
|
16
16
|
*/
|
|
17
|
-
import { type AccountMetadataV3, type AccountQuotaResult, type AccountQuotaTarget, type AccountRepository, type AntigravityQuotaCheckReport, type AntigravityVaultAccountSource, type AccountManager as CoreAccountManager, type FetchAccountQuota, type FetchAvailableModelsOptions, type
|
|
17
|
+
import { type AccountMetadataV3, type AccountQuotaResult, type AccountQuotaTarget, type AccountRepository, type AntigravityQuotaCheckReport, type AntigravityVaultAccountSource, type AccountManager as CoreAccountManager, type FetchAccountQuota, type FetchAvailableModelsOptions, type QuotaCheckPurpose, type QuotaManager, type QuotaSummary, type RowRef, type VaultRouteRef, type VaultStateAttribution } from '@cortexkit/antigravity-auth-core';
|
|
18
18
|
import { type SidebarMachineState } from '../sidebar-state.js';
|
|
19
19
|
import { type LocalAccountCredentials } from './accounts.js';
|
|
20
20
|
import { type Logger } from './logger.js';
|
|
21
21
|
import type { PluginClient } from './types.js';
|
|
22
22
|
type QuotaFetch = NonNullable<FetchAvailableModelsOptions['fetchVia']>;
|
|
23
|
-
export type { AccountQuotaResult, AccountQuotaStatus,
|
|
23
|
+
export type { AccountQuotaResult, AccountQuotaStatus, PerModelQuotaEntry, QuotaGroup, QuotaGroupSummary, QuotaManager, QuotaManagerOptions, QuotaSummary, } from '@cortexkit/antigravity-auth-core';
|
|
24
24
|
export { classifyQuotaGroup, createQuotaManager, defaultKeyOf, } from '@cortexkit/antigravity-auth-core';
|
|
25
25
|
export interface CreateOpenCodeQuotaManagerOptions {
|
|
26
26
|
/** Override the default key derivation (email → refresh-token hash). */
|
|
@@ -198,7 +198,6 @@ export type VaultQuotaSource = Pick<AntigravityVaultAccountSource, 'send' | 'att
|
|
|
198
198
|
/** Quota summaries and the credential versions that authorized their requests. */
|
|
199
199
|
export interface VaultQuotaReading {
|
|
200
200
|
quota: QuotaSummary;
|
|
201
|
-
geminiCliQuota: GeminiCliQuotaSummary;
|
|
202
201
|
fellBackToLegacy: boolean;
|
|
203
202
|
/**
|
|
204
203
|
* The credential and record version of the receipt that authorized the
|
|
@@ -207,8 +206,6 @@ export interface VaultQuotaReading {
|
|
|
207
206
|
* answer was obtained.
|
|
208
207
|
*/
|
|
209
208
|
quotaAttribution?: VaultStateAttribution;
|
|
210
|
-
/** Likewise for `geminiCliQuota`. */
|
|
211
|
-
geminiCliAttribution?: VaultStateAttribution;
|
|
212
209
|
}
|
|
213
210
|
export interface VaultQuotaCheckOptions {
|
|
214
211
|
source: VaultQuotaSource;
|
|
@@ -218,10 +215,11 @@ export interface VaultQuotaCheckOptions {
|
|
|
218
215
|
logger: Pick<Logger, 'debug'>;
|
|
219
216
|
/** Physical request transport; defaults to `fetchWithActiveTimeout`. */
|
|
220
217
|
transport?: QuotaFetch;
|
|
218
|
+
onFailure?: (error: unknown, refused: boolean) => void;
|
|
221
219
|
}
|
|
222
220
|
/**
|
|
223
221
|
* Fetches a vault account's quota: the windowed quota summary (with the
|
|
224
|
-
* legacy model-list fallback)
|
|
222
|
+
* legacy model-list fallback), from the same core
|
|
225
223
|
* builders and endpoint list the local check uses.
|
|
226
224
|
*
|
|
227
225
|
* Every physical request (each endpoint, each fallback, and the model
|
|
@@ -249,6 +247,9 @@ export type LocalQuotaGrantCheck = {
|
|
|
249
247
|
* through the vault source's own per-send admission instead.
|
|
250
248
|
*/
|
|
251
249
|
export type LocalQuotaCheckAuthorization = {
|
|
250
|
+
readonly status: 'skipped';
|
|
251
|
+
readonly reason: 'refresh-needed' | 'project-needed';
|
|
252
|
+
} | {
|
|
252
253
|
readonly status: 'authorized';
|
|
253
254
|
readonly domain: 'local';
|
|
254
255
|
readonly accessToken: string;
|
|
@@ -275,7 +276,7 @@ export interface AuthorizedFetchAccountQuotaOptions {
|
|
|
275
276
|
* repository row reference it carries) before any other work runs. This
|
|
276
277
|
* fetcher never refreshes, caches or stores a token.
|
|
277
278
|
*/
|
|
278
|
-
authorize(account: AccountMetadataV3, signal: AbortSignal): Promise<LocalQuotaCheckAuthorization>;
|
|
279
|
+
authorize(account: AccountMetadataV3, signal: AbortSignal, purpose?: QuotaCheckPurpose): Promise<LocalQuotaCheckAuthorization>;
|
|
279
280
|
/** Receives the fetcher's diagnostic records; never tokens. */
|
|
280
281
|
logger: Pick<Logger, 'debug'>;
|
|
281
282
|
/**
|
|
@@ -437,6 +438,9 @@ export interface StoreQuotaServiceOptions {
|
|
|
437
438
|
*
|
|
438
439
|
* Only accounts whose refresh token is stored locally use this service;
|
|
439
440
|
* vault-held accounts never do.
|
|
441
|
+
* Successful-send quota is best-effort: its explicit advisory purpose uses only
|
|
442
|
+
* the stored token and project. Checks needing refresh or discovery are skipped
|
|
443
|
+
* so shutdown cannot acquire more credential writes or project-setup network work.
|
|
440
444
|
*/
|
|
441
445
|
export declare function createStoreQuotaService(options: StoreQuotaServiceOptions): StoreQuotaService;
|
|
442
446
|
//# sourceMappingURL=quota.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../../src/plugin/quota.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,
|
|
1
|
+
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../../src/plugin/quota.ts"],"names":[],"mappings":"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"}
|
package/dist/src/plugin/quota.js
CHANGED
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* with `force: true` — manual quota screens must always refresh, even if
|
|
15
15
|
* the background manager has backed off.
|
|
16
16
|
*/
|
|
17
|
-
import {
|
|
18
|
-
import { ANTIGRAVITY_ENDPOINT_FALLBACKS, ANTIGRAVITY_PROVIDER_ID,
|
|
17
|
+
import { aggregateQuota, aggregateQuotaSummary, createQuotaManager, defaultKeyOf, fetchAvailableModels, fetchQuotaSummary, fetchWithActiveTimeout, getHealthTracker, rowRefKey, sameRowRef, VAULT_ACCOUNT_REMEDY, } from '@cortexkit/antigravity-auth-core';
|
|
18
|
+
import { ANTIGRAVITY_ENDPOINT_FALLBACKS, ANTIGRAVITY_PROVIDER_ID, } from '../constants';
|
|
19
19
|
import { buildSidebarMachineStateFromAccounts, isAccountCurrent, setSidebarMachineState, } from '../sidebar-state';
|
|
20
20
|
import { createLocalAccountCredentials, } from './accounts';
|
|
21
21
|
import { accessTokenExpired, formatRefreshParts, parseRefreshParts, } from './auth';
|
|
@@ -43,7 +43,7 @@ export { classifyQuotaGroup, createQuotaManager, defaultKeyOf, } from '@cortexki
|
|
|
43
43
|
*/
|
|
44
44
|
export function createOpenCodeQuotaManager(client, providerId = ANTIGRAVITY_PROVIDER_ID, options = {}) {
|
|
45
45
|
const fetchPoolFileQuota = makeFetchAccountQuota(client, providerId, options.fetchVia);
|
|
46
|
-
const fetchAccountQuota = async (account, request) => {
|
|
46
|
+
const fetchAccountQuota = async (account, request, purpose = 'required') => {
|
|
47
47
|
const target = account;
|
|
48
48
|
const ref = target.rowRef;
|
|
49
49
|
if (options.mayRun && !(await options.mayRun()))
|
|
@@ -52,9 +52,13 @@ export function createOpenCodeQuotaManager(client, providerId = ANTIGRAVITY_PROV
|
|
|
52
52
|
if (!options.fetchStoreAccountQuota)
|
|
53
53
|
throw new Error('Store quota authorization is unavailable');
|
|
54
54
|
const captured = { ...target, rowRef: ref };
|
|
55
|
-
return
|
|
55
|
+
return purpose === 'advisory'
|
|
56
|
+
? options.fetchStoreAccountQuota(captured, request, purpose)
|
|
57
|
+
: options.fetchStoreAccountQuota(captured, request);
|
|
56
58
|
}
|
|
57
|
-
return
|
|
59
|
+
return purpose === 'advisory'
|
|
60
|
+
? fetchPoolFileQuota(account, request, purpose)
|
|
61
|
+
: fetchPoolFileQuota(account, request);
|
|
58
62
|
};
|
|
59
63
|
const manager = createQuotaManager({
|
|
60
64
|
fetchAccountQuota,
|
|
@@ -290,19 +294,12 @@ async function fetchLegacyModelsFallback(options) {
|
|
|
290
294
|
}
|
|
291
295
|
}
|
|
292
296
|
/**
|
|
293
|
-
* Fetches
|
|
294
|
-
* caller already resolved
|
|
295
|
-
* model-list fallback) and the Gemini CLI quota. Shared by the OpenCode 1
|
|
297
|
+
* Fetches the Antigravity quota summary for one account with a bearer and
|
|
298
|
+
* project the caller already resolved, with a legacy model-list fallback. Shared by the OpenCode 1
|
|
296
299
|
* fetcher and `createAuthorizedFetchAccountQuota`.
|
|
297
300
|
*/
|
|
298
301
|
async function fetchQuotaPayloads(options) {
|
|
299
302
|
const { accessToken, managedProjectId, projectId, fetchVia } = options;
|
|
300
|
-
// Two independent payload contracts: the windowed summary
|
|
301
|
-
// (with legacy fallback) and the gemini-CLI quota. They share
|
|
302
|
-
// access + project but target different endpoints, so the
|
|
303
|
-
// two 10s timeouts ran back-to-back for ~20s per account on
|
|
304
|
-
// modal open. Run them concurrently; either rejection is
|
|
305
|
-
// handled by its own branch and the result is still merged.
|
|
306
303
|
const fetchSummaryPayload = (async () => {
|
|
307
304
|
try {
|
|
308
305
|
const summaryResult = await fetchQuotaSummary({
|
|
@@ -330,55 +327,12 @@ async function fetchQuotaPayloads(options) {
|
|
|
330
327
|
};
|
|
331
328
|
}
|
|
332
329
|
})();
|
|
333
|
-
|
|
334
|
-
// NOT kill the summary result, but it also must not be laundered into
|
|
335
|
-
// "No Gemini CLI quota available" (a permanent-looking status) when
|
|
336
|
-
// the real cause is a transient network error. Capture the error
|
|
337
|
-
// message separately so the annotated result can carry it.
|
|
338
|
-
let geminiCliFetchError;
|
|
339
|
-
const fetchGeminiCliPayload = fetchGeminiCliQuota({
|
|
340
|
-
accessToken,
|
|
341
|
-
projectId,
|
|
342
|
-
endpoints: ANTIGRAVITY_ENDPOINT_FALLBACKS,
|
|
343
|
-
userAgent: buildGeminiCliUserAgent(),
|
|
344
|
-
timeoutMs: 10_000,
|
|
345
|
-
...(fetchVia ? { fetchVia } : {}),
|
|
346
|
-
}).catch((error) => {
|
|
347
|
-
geminiCliFetchError = error instanceof Error ? error.message : String(error);
|
|
348
|
-
options.logger.debug('fetchGeminiCliQuota failed', {
|
|
349
|
-
error: geminiCliFetchError,
|
|
350
|
-
});
|
|
351
|
-
return { buckets: undefined };
|
|
352
|
-
});
|
|
353
|
-
const [summary, geminiCliResponse] = await Promise.all([
|
|
354
|
-
fetchSummaryPayload,
|
|
355
|
-
fetchGeminiCliPayload,
|
|
356
|
-
]);
|
|
330
|
+
const summary = await fetchSummaryPayload;
|
|
357
331
|
return {
|
|
358
332
|
quota: summary.result,
|
|
359
|
-
geminiCliQuota: annotateGeminiCliQuota(geminiCliResponse, geminiCliFetchError),
|
|
360
333
|
fellBackToLegacy: summary.fellBackToLegacy,
|
|
361
334
|
};
|
|
362
335
|
}
|
|
363
|
-
/**
|
|
364
|
-
* The Gemini CLI quota summary for a `retrieveUserQuota` answer. An empty or
|
|
365
|
-
* missing answer carries an error: the fetch error when the request failed
|
|
366
|
-
* (a transient failure, not "no CLI quota configured"), else the generic
|
|
367
|
-
* "no quota" text.
|
|
368
|
-
*/
|
|
369
|
-
function annotateGeminiCliQuota(response, fetchError) {
|
|
370
|
-
const result = aggregateGeminiCliQuota(response);
|
|
371
|
-
if (response.buckets !== undefined && response.buckets.length > 0) {
|
|
372
|
-
return result;
|
|
373
|
-
}
|
|
374
|
-
return {
|
|
375
|
-
...result,
|
|
376
|
-
error: fetchError ??
|
|
377
|
-
(result.models.length === 0
|
|
378
|
-
? 'No Gemini CLI quota available'
|
|
379
|
-
: undefined),
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
336
|
/** Stops an outbound quota request after cancellation or a vault authorization refusal. */
|
|
383
337
|
class VaultQuotaCheckStoppedError extends Error {
|
|
384
338
|
name = 'VaultQuotaCheckStoppedError';
|
|
@@ -440,7 +394,18 @@ isStopped, build) {
|
|
|
440
394
|
});
|
|
441
395
|
// The builder reads a clone; `send` gets the original Response,
|
|
442
396
|
// whose status it needs for 401 reporting.
|
|
443
|
-
|
|
397
|
+
const copy = served.clone();
|
|
398
|
+
if (!copy.body)
|
|
399
|
+
return copy;
|
|
400
|
+
// Explicitly cancel body consumption too: injected transports can return
|
|
401
|
+
// streams that do not themselves observe the fetch signal.
|
|
402
|
+
return new Response(copy.body.pipeThrough(new TransformStream(), {
|
|
403
|
+
signal: options.signal,
|
|
404
|
+
}), {
|
|
405
|
+
status: copy.status,
|
|
406
|
+
statusText: copy.statusText,
|
|
407
|
+
headers: copy.headers,
|
|
408
|
+
});
|
|
444
409
|
};
|
|
445
410
|
attempt = {};
|
|
446
411
|
try {
|
|
@@ -471,7 +436,7 @@ isStopped, build) {
|
|
|
471
436
|
}
|
|
472
437
|
/**
|
|
473
438
|
* Fetches a vault account's quota: the windowed quota summary (with the
|
|
474
|
-
* legacy model-list fallback)
|
|
439
|
+
* legacy model-list fallback), from the same core
|
|
475
440
|
* builders and endpoint list the local check uses.
|
|
476
441
|
*
|
|
477
442
|
* Every physical request (each endpoint, each fallback, and the model
|
|
@@ -484,9 +449,7 @@ isStopped, build) {
|
|
|
484
449
|
* `commitState`) is the caller's.
|
|
485
450
|
*/
|
|
486
451
|
export async function fetchVaultAccountQuota(options) {
|
|
487
|
-
//
|
|
488
|
-
// refusal in one stops requests in the other too, including one whose
|
|
489
|
-
// receipt was being served when the refusal happened.
|
|
452
|
+
// A refused receipt stops endpoint retries and the legacy model-list fallback.
|
|
490
453
|
const stopped = { value: false };
|
|
491
454
|
const isStopped = () => stopped.value || options.signal.aborted;
|
|
492
455
|
const attempt = async (build) => {
|
|
@@ -494,6 +457,8 @@ export async function fetchVaultAccountQuota(options) {
|
|
|
494
457
|
return { error: new VaultQuotaCheckStoppedError(), refused: true };
|
|
495
458
|
}
|
|
496
459
|
const result = await vaultQuotaAttempt(options, isStopped, build);
|
|
460
|
+
if (result.error !== undefined || result.refused)
|
|
461
|
+
options.onFailure?.(result.error, result.refused === true);
|
|
497
462
|
if (result.refused || options.signal.aborted)
|
|
498
463
|
stopped.value = true;
|
|
499
464
|
return result;
|
|
@@ -574,46 +539,33 @@ export async function fetchVaultAccountQuota(options) {
|
|
|
574
539
|
fellBackToLegacy: true,
|
|
575
540
|
};
|
|
576
541
|
};
|
|
577
|
-
const
|
|
578
|
-
const errors = [];
|
|
579
|
-
for (const endpoint of ANTIGRAVITY_ENDPOINT_FALLBACKS) {
|
|
580
|
-
const result = await attempt((grant, fetchVia) => fetchGeminiCliQuota({
|
|
581
|
-
accessToken: grant.accessToken,
|
|
582
|
-
projectId: grant.projectId,
|
|
583
|
-
endpoints: [endpoint],
|
|
584
|
-
userAgent: buildGeminiCliUserAgent(),
|
|
585
|
-
timeoutMs: 10_000,
|
|
586
|
-
fetchVia,
|
|
587
|
-
}));
|
|
588
|
-
if (result.value !== undefined) {
|
|
589
|
-
return {
|
|
590
|
-
response: result.value,
|
|
591
|
-
...(result.attribution ? { attribution: result.attribution } : {}),
|
|
592
|
-
};
|
|
593
|
-
}
|
|
594
|
-
errors.push(result.error instanceof Error
|
|
595
|
-
? result.error.message
|
|
596
|
-
: String(result.error));
|
|
597
|
-
if (result.refused)
|
|
598
|
-
break;
|
|
599
|
-
}
|
|
600
|
-
const error = errors.join('; ') || 'fetchGeminiCliQuota failed';
|
|
601
|
-
options.logger.debug('vault fetchGeminiCliQuota failed', { error });
|
|
602
|
-
return { response: { buckets: undefined }, error };
|
|
603
|
-
};
|
|
604
|
-
const [summary, cli] = await Promise.all([fetchSummary(), fetchGeminiCli()]);
|
|
542
|
+
const summary = await fetchSummary();
|
|
605
543
|
return {
|
|
606
544
|
quota: summary.result,
|
|
607
|
-
geminiCliQuota: annotateGeminiCliQuota(cli.response, cli.error),
|
|
608
545
|
fellBackToLegacy: summary.fellBackToLegacy,
|
|
609
546
|
...(summary.attribution ? { quotaAttribution: summary.attribution } : {}),
|
|
610
|
-
...(cli.attribution ? { geminiCliAttribution: cli.attribution } : {}),
|
|
611
547
|
};
|
|
612
548
|
}
|
|
613
549
|
/** Raised inside a check when a request's local grant is no longer current. */
|
|
614
550
|
class LocalQuotaGrantStaleError extends Error {
|
|
615
551
|
name = 'LocalQuotaGrantStaleError';
|
|
616
552
|
}
|
|
553
|
+
function untilQuotaAborted(pending, signal) {
|
|
554
|
+
return new Promise((resolve, reject) => {
|
|
555
|
+
const abort = () => reject(signal.reason);
|
|
556
|
+
if (signal.aborted)
|
|
557
|
+
abort();
|
|
558
|
+
else
|
|
559
|
+
signal.addEventListener('abort', abort, { once: true });
|
|
560
|
+
void pending.then((value) => {
|
|
561
|
+
signal.removeEventListener('abort', abort);
|
|
562
|
+
resolve(value);
|
|
563
|
+
}, (error) => {
|
|
564
|
+
signal.removeEventListener('abort', abort);
|
|
565
|
+
reject(error);
|
|
566
|
+
});
|
|
567
|
+
});
|
|
568
|
+
}
|
|
617
569
|
/**
|
|
618
570
|
* A quota fetcher for LOCAL credentials whose bearer and project come from
|
|
619
571
|
* the caller's `authorize` callback instead of the account's stored refresh
|
|
@@ -633,7 +585,7 @@ class LocalQuotaGrantStaleError extends Error {
|
|
|
633
585
|
* it may write to.
|
|
634
586
|
*/
|
|
635
587
|
export function createAuthorizedFetchAccountQuota(options) {
|
|
636
|
-
return async (account, signal) => {
|
|
588
|
+
return async (account, signal, purpose = 'required') => {
|
|
637
589
|
const base = { index: 0, email: account.email };
|
|
638
590
|
if (account.enabled === false) {
|
|
639
591
|
return { ...base, status: 'disabled', disabled: true };
|
|
@@ -645,8 +597,14 @@ export function createAuthorizedFetchAccountQuota(options) {
|
|
|
645
597
|
try {
|
|
646
598
|
// Called before the first await, so the callback sees the account as
|
|
647
599
|
// handed in; a synchronous throw lands in the catch below.
|
|
648
|
-
const authorizing =
|
|
600
|
+
const authorizing = purpose === 'advisory'
|
|
601
|
+
? options.authorize(account, signal, purpose)
|
|
602
|
+
: options.authorize(account, signal);
|
|
649
603
|
const authorization = await authorizing;
|
|
604
|
+
if (authorization.status === 'skipped') {
|
|
605
|
+
options.logger.debug(`advisory-quota-skipped-${authorization.reason}`);
|
|
606
|
+
return { ...base, status: 'skipped', disabled: false };
|
|
607
|
+
}
|
|
650
608
|
if (authorization.status !== 'authorized') {
|
|
651
609
|
return {
|
|
652
610
|
...base,
|
|
@@ -669,6 +627,7 @@ export function createAuthorizedFetchAccountQuota(options) {
|
|
|
669
627
|
const send = options.transport?.(signal) ??
|
|
670
628
|
((url, init, extra) => fetchWithActiveTimeout(url, { ...init, signal: extra.signal ?? signal }, { timeoutMs: extra.timeoutMs }));
|
|
671
629
|
const guarded = async (url, init, extra) => {
|
|
630
|
+
signal.throwIfAborted();
|
|
672
631
|
if (staleReason !== null)
|
|
673
632
|
throw new LocalQuotaGrantStaleError(staleReason);
|
|
674
633
|
const check = await authorization.confirmSend(signal);
|
|
@@ -681,13 +640,16 @@ export function createAuthorizedFetchAccountQuota(options) {
|
|
|
681
640
|
// out at once, with this quota check's abort signal.
|
|
682
641
|
return send(url, init, { ...extra, signal });
|
|
683
642
|
};
|
|
684
|
-
const
|
|
643
|
+
const pendingPayloads = fetchQuotaPayloads({
|
|
685
644
|
accessToken: authorization.accessToken,
|
|
686
645
|
managedProjectId: authorization.managedProjectId,
|
|
687
646
|
projectId: authorization.projectId,
|
|
688
647
|
fetchVia: guarded,
|
|
689
648
|
logger: options.logger,
|
|
690
649
|
});
|
|
650
|
+
// The quota manager's deadline and request cancellation also bound custom
|
|
651
|
+
// transports and response bodies that ignore their abort signal.
|
|
652
|
+
const payloads = await untilQuotaAborted(pendingPayloads, signal);
|
|
691
653
|
if (staleReason !== null) {
|
|
692
654
|
return {
|
|
693
655
|
...base,
|
|
@@ -701,7 +663,6 @@ export function createAuthorizedFetchAccountQuota(options) {
|
|
|
701
663
|
status: 'ok',
|
|
702
664
|
disabled: false,
|
|
703
665
|
quota: payloads.quota,
|
|
704
|
-
geminiCliQuota: payloads.geminiCliQuota,
|
|
705
666
|
};
|
|
706
667
|
}
|
|
707
668
|
catch (error) {
|
|
@@ -712,7 +673,7 @@ export function createAuthorizedFetchAccountQuota(options) {
|
|
|
712
673
|
};
|
|
713
674
|
}
|
|
714
675
|
function makeFetchAccountQuota(client, providerId, fetchVia) {
|
|
715
|
-
return async (account, signal) => {
|
|
676
|
+
return async (account, signal, purpose = 'required') => {
|
|
716
677
|
const index = 0;
|
|
717
678
|
const disabled = account.enabled === false;
|
|
718
679
|
if (disabled) {
|
|
@@ -733,6 +694,59 @@ function makeFetchAccountQuota(client, providerId, fetchVia) {
|
|
|
733
694
|
}
|
|
734
695
|
let auth = buildAuthFromAccount(account);
|
|
735
696
|
let rotatedRefresh;
|
|
697
|
+
if (purpose === 'advisory') {
|
|
698
|
+
if (accessTokenExpired(auth)) {
|
|
699
|
+
log.debug('advisory-quota-skipped-refresh-needed');
|
|
700
|
+
return {
|
|
701
|
+
index,
|
|
702
|
+
email: account.email,
|
|
703
|
+
status: 'skipped',
|
|
704
|
+
disabled: false,
|
|
705
|
+
};
|
|
706
|
+
}
|
|
707
|
+
const parts = parseRefreshParts(auth.refresh);
|
|
708
|
+
const managedProjectId = parts.managedProjectId ?? account.managedProjectId;
|
|
709
|
+
const projectId = managedProjectId ?? parts.projectId ?? account.projectId;
|
|
710
|
+
if (!projectId) {
|
|
711
|
+
log.debug('advisory-quota-skipped-project-needed');
|
|
712
|
+
return {
|
|
713
|
+
index,
|
|
714
|
+
email: account.email,
|
|
715
|
+
status: 'skipped',
|
|
716
|
+
disabled: false,
|
|
717
|
+
};
|
|
718
|
+
}
|
|
719
|
+
try {
|
|
720
|
+
const payloads = await untilQuotaAborted(fetchQuotaPayloads({
|
|
721
|
+
accessToken: auth.access ?? '',
|
|
722
|
+
managedProjectId,
|
|
723
|
+
projectId,
|
|
724
|
+
fetchVia: (url, init, extra) => {
|
|
725
|
+
signal.throwIfAborted();
|
|
726
|
+
return fetchVia
|
|
727
|
+
? fetchVia(url, init, { ...extra, signal })
|
|
728
|
+
: fetchWithActiveTimeout(url, { ...init, signal }, { timeoutMs: extra.timeoutMs });
|
|
729
|
+
},
|
|
730
|
+
logger: log,
|
|
731
|
+
}), signal);
|
|
732
|
+
return {
|
|
733
|
+
index,
|
|
734
|
+
email: account.email,
|
|
735
|
+
status: 'ok',
|
|
736
|
+
disabled: false,
|
|
737
|
+
quota: payloads.quota,
|
|
738
|
+
};
|
|
739
|
+
}
|
|
740
|
+
catch {
|
|
741
|
+
return {
|
|
742
|
+
index,
|
|
743
|
+
email: account.email,
|
|
744
|
+
status: 'error',
|
|
745
|
+
disabled: false,
|
|
746
|
+
error: 'advisory quota unavailable',
|
|
747
|
+
};
|
|
748
|
+
}
|
|
749
|
+
}
|
|
736
750
|
try {
|
|
737
751
|
if (accessTokenExpired(auth)) {
|
|
738
752
|
const refreshed = await refreshAccessToken(auth, client, providerId);
|
|
@@ -766,7 +780,6 @@ function makeFetchAccountQuota(client, providerId, fetchVia) {
|
|
|
766
780
|
});
|
|
767
781
|
quotaResult = payloads.quota;
|
|
768
782
|
fellBackToLegacy = payloads.fellBackToLegacy;
|
|
769
|
-
const annotated = payloads.geminiCliQuota;
|
|
770
783
|
for (const [family, groupQuota] of Object.entries(quotaResult.groups)) {
|
|
771
784
|
const remainingPercent = (groupQuota.remainingFraction ?? 0) * 100;
|
|
772
785
|
logQuotaStatus(account.email, index, remainingPercent, family);
|
|
@@ -779,7 +792,6 @@ function makeFetchAccountQuota(client, providerId, fetchVia) {
|
|
|
779
792
|
status: 'ok',
|
|
780
793
|
disabled: false,
|
|
781
794
|
quota: quotaResult,
|
|
782
|
-
geminiCliQuota: annotated,
|
|
783
795
|
updatedAccount,
|
|
784
796
|
};
|
|
785
797
|
}
|
|
@@ -977,12 +989,15 @@ function heldAccount(manager, ref) {
|
|
|
977
989
|
*
|
|
978
990
|
* Only accounts whose refresh token is stored locally use this service;
|
|
979
991
|
* vault-held accounts never do.
|
|
992
|
+
* Successful-send quota is best-effort: its explicit advisory purpose uses only
|
|
993
|
+
* the stored token and project. Checks needing refresh or discovery are skipped
|
|
994
|
+
* so shutdown cannot acquire more credential writes or project-setup network work.
|
|
980
995
|
*/
|
|
981
996
|
export function createStoreQuotaService(options) {
|
|
982
997
|
const { manager, logger } = options;
|
|
983
998
|
const credentials = options.credentials ??
|
|
984
999
|
createLocalAccountCredentials(manager, { repository: options.repository });
|
|
985
|
-
const authorize = async (account) => {
|
|
1000
|
+
const authorize = async (account, _signal, purpose = 'required') => {
|
|
986
1001
|
const ref = account.rowRef;
|
|
987
1002
|
if (ref === undefined) {
|
|
988
1003
|
return { status: 'refused', reason: 'the account has no store ref' };
|
|
@@ -995,6 +1010,8 @@ export function createStoreQuotaService(options) {
|
|
|
995
1010
|
}
|
|
996
1011
|
let auth = manager.toAuthDetails(held);
|
|
997
1012
|
if (accessTokenExpired(auth)) {
|
|
1013
|
+
if (purpose === 'advisory')
|
|
1014
|
+
return { status: 'skipped', reason: 'refresh-needed' };
|
|
998
1015
|
const refreshed = await credentials.refresh(held);
|
|
999
1016
|
if (refreshed === undefined) {
|
|
1000
1017
|
return { status: 'refused', reason: 'token refresh failed' };
|
|
@@ -1011,7 +1028,16 @@ export function createStoreQuotaService(options) {
|
|
|
1011
1028
|
}
|
|
1012
1029
|
if (options.mayRun && !(await options.mayRun()))
|
|
1013
1030
|
return { status: 'refused', reason: VAULT_ACCOUNT_REMEDY };
|
|
1014
|
-
const
|
|
1031
|
+
const storedProjects = parseRefreshParts(auth.refresh);
|
|
1032
|
+
const storedProject = storedProjects.managedProjectId ??
|
|
1033
|
+
held.managedProjectId ??
|
|
1034
|
+
storedProjects.projectId ??
|
|
1035
|
+
held.projectId;
|
|
1036
|
+
if (purpose === 'advisory' && !storedProject)
|
|
1037
|
+
return { status: 'skipped', reason: 'project-needed' };
|
|
1038
|
+
const project = purpose === 'advisory'
|
|
1039
|
+
? { auth, effectiveProjectId: storedProject ?? '' }
|
|
1040
|
+
: await credentials.ensureProject(auth);
|
|
1015
1041
|
if (options.mayRun && !(await options.mayRun()))
|
|
1016
1042
|
return { status: 'refused', reason: VAULT_ACCOUNT_REMEDY };
|
|
1017
1043
|
if (project.auth.refresh !== auth.refresh) {
|