@cortexkit/opencode-antigravity-auth 1.1.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +225 -569
- package/dist/cli.js +4017 -0
- package/dist/cli.js.map +7 -0
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20742 -14586
- package/dist/index.js.map +4 -4
- package/dist/src/antigravity/oauth.d.ts +1 -1
- package/dist/src/antigravity/oauth.js +1 -1
- package/dist/src/cli.d.ts +21 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +237 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/constants.d.ts +1 -1
- package/dist/src/constants.js +1 -1
- package/dist/src/hooks/auto-update-checker/cache.d.ts.map +1 -1
- package/dist/src/hooks/auto-update-checker/cache.js +13 -13
- package/dist/src/hooks/auto-update-checker/cache.js.map +1 -1
- package/dist/src/hooks/auto-update-checker/checker.d.ts +1 -1
- package/dist/src/hooks/auto-update-checker/checker.d.ts.map +1 -1
- package/dist/src/hooks/auto-update-checker/checker.js +75 -51
- package/dist/src/hooks/auto-update-checker/checker.js.map +1 -1
- package/dist/src/hooks/auto-update-checker/constants.d.ts.map +1 -1
- package/dist/src/hooks/auto-update-checker/constants.js +12 -12
- package/dist/src/hooks/auto-update-checker/constants.js.map +1 -1
- package/dist/src/hooks/auto-update-checker/index.d.ts +6 -6
- package/dist/src/hooks/auto-update-checker/index.d.ts.map +1 -1
- package/dist/src/hooks/auto-update-checker/index.js +17 -17
- package/dist/src/hooks/auto-update-checker/index.js.map +1 -1
- package/dist/src/hooks/auto-update-checker/logging.js +2 -2
- package/dist/src/hooks/auto-update-checker/logging.js.map +1 -1
- package/dist/src/hooks/auto-update-checker/types.d.ts.map +1 -1
- package/dist/src/plugin/account-access.d.ts +99 -0
- package/dist/src/plugin/account-access.d.ts.map +1 -0
- package/dist/src/plugin/account-access.js +480 -0
- package/dist/src/plugin/account-access.js.map +1 -0
- package/dist/src/plugin/account-command-oauth.d.ts +34 -0
- package/dist/src/plugin/account-command-oauth.d.ts.map +1 -0
- package/dist/src/plugin/account-command-oauth.js +156 -0
- package/dist/src/plugin/account-command-oauth.js.map +1 -0
- package/dist/src/plugin/accounts.d.ts +7 -256
- package/dist/src/plugin/accounts.d.ts.map +1 -1
- package/dist/src/plugin/accounts.js +31 -1367
- package/dist/src/plugin/accounts.js.map +1 -1
- package/dist/src/plugin/agy-request-metadata.d.ts +1 -1
- package/dist/src/plugin/agy-request-metadata.js +1 -1
- package/dist/src/plugin/agy-transport.d.ts +1 -1
- package/dist/src/plugin/agy-transport.js +1 -1
- package/dist/src/plugin/auth-doctor.d.ts +6 -6
- package/dist/src/plugin/auth-doctor.d.ts.map +1 -1
- package/dist/src/plugin/auth-doctor.js +74 -66
- package/dist/src/plugin/auth-doctor.js.map +1 -1
- package/dist/src/plugin/auth-drift.d.ts +4 -4
- package/dist/src/plugin/auth-drift.d.ts.map +1 -1
- package/dist/src/plugin/auth-drift.js +15 -15
- package/dist/src/plugin/auth-drift.js.map +1 -1
- package/dist/src/plugin/auth-loader.d.ts +50 -0
- package/dist/src/plugin/auth-loader.d.ts.map +1 -0
- package/dist/src/plugin/auth-loader.js +225 -0
- package/dist/src/plugin/auth-loader.js.map +1 -0
- package/dist/src/plugin/auth.d.ts +1 -1
- package/dist/src/plugin/auth.js +1 -1
- package/dist/src/plugin/background-quota-refresh.d.ts +146 -0
- package/dist/src/plugin/background-quota-refresh.d.ts.map +1 -0
- package/dist/src/plugin/background-quota-refresh.js +347 -0
- package/dist/src/plugin/background-quota-refresh.js.map +1 -0
- package/dist/src/plugin/cache/index.d.ts +1 -1
- package/dist/src/plugin/cache/index.d.ts.map +1 -1
- package/dist/src/plugin/cache/index.js +1 -1
- package/dist/src/plugin/cache/index.js.map +1 -1
- package/dist/src/plugin/cache/signature-cache.d.ts +1 -1
- package/dist/src/plugin/cache/signature-cache.d.ts.map +1 -1
- package/dist/src/plugin/cache/signature-cache.js +23 -24
- package/dist/src/plugin/cache/signature-cache.js.map +1 -1
- package/dist/src/plugin/cache.d.ts +6 -5
- package/dist/src/plugin/cache.d.ts.map +1 -1
- package/dist/src/plugin/cache.js +21 -7
- package/dist/src/plugin/cache.js.map +1 -1
- package/dist/src/plugin/catalog.d.ts +23 -0
- package/dist/src/plugin/catalog.d.ts.map +1 -0
- package/dist/src/plugin/catalog.js +60 -0
- package/dist/src/plugin/catalog.js.map +1 -0
- package/dist/src/plugin/cli.d.ts +7 -7
- package/dist/src/plugin/cli.d.ts.map +1 -1
- package/dist/src/plugin/cli.js +62 -55
- package/dist/src/plugin/cli.js.map +1 -1
- package/dist/src/plugin/command-data.d.ts +329 -0
- package/dist/src/plugin/command-data.d.ts.map +1 -0
- package/dist/src/plugin/command-data.js +517 -0
- package/dist/src/plugin/command-data.js.map +1 -0
- package/dist/src/plugin/commands.d.ts +154 -0
- package/dist/src/plugin/commands.d.ts.map +1 -0
- package/dist/src/plugin/commands.js +746 -0
- package/dist/src/plugin/commands.js.map +1 -0
- package/dist/src/plugin/config/index.d.ts +2 -2
- package/dist/src/plugin/config/index.d.ts.map +1 -1
- package/dist/src/plugin/config/index.js +2 -2
- package/dist/src/plugin/config/index.js.map +1 -1
- package/dist/src/plugin/config/loader.d.ts +1 -1
- package/dist/src/plugin/config/loader.d.ts.map +1 -1
- package/dist/src/plugin/config/loader.js +18 -16
- package/dist/src/plugin/config/loader.js.map +1 -1
- package/dist/src/plugin/config/models.d.ts +2 -2
- package/dist/src/plugin/config/models.d.ts.map +1 -1
- package/dist/src/plugin/config/models.js +1 -1
- package/dist/src/plugin/config/models.js.map +1 -1
- package/dist/src/plugin/config/operator-settings-schema.d.ts +29 -0
- package/dist/src/plugin/config/operator-settings-schema.d.ts.map +1 -0
- package/dist/src/plugin/config/operator-settings-schema.js +28 -0
- package/dist/src/plugin/config/operator-settings-schema.js.map +1 -0
- package/dist/src/plugin/config/schema.d.ts +23 -2
- package/dist/src/plugin/config/schema.d.ts.map +1 -1
- package/dist/src/plugin/config/schema.js +109 -25
- package/dist/src/plugin/config/schema.js.map +1 -1
- package/dist/src/plugin/config/updater.d.ts.map +1 -1
- package/dist/src/plugin/config/updater.js +15 -15
- package/dist/src/plugin/config/updater.js.map +1 -1
- package/dist/src/plugin/config/writer.d.ts +34 -0
- package/dist/src/plugin/config/writer.d.ts.map +1 -0
- package/dist/src/plugin/config/writer.js +81 -0
- package/dist/src/plugin/config/writer.js.map +1 -0
- package/dist/src/plugin/core/streaming/index.d.ts +1 -1
- package/dist/src/plugin/core/streaming/index.d.ts.map +1 -1
- package/dist/src/plugin/core/streaming/index.js +1 -1
- package/dist/src/plugin/core/streaming/index.js.map +1 -1
- package/dist/src/plugin/core/streaming/transformer.d.ts.map +1 -1
- package/dist/src/plugin/core/streaming/transformer.js +85 -44
- package/dist/src/plugin/core/streaming/transformer.js.map +1 -1
- package/dist/src/plugin/core/streaming/types.d.ts.map +1 -1
- package/dist/src/plugin/debug.d.ts +10 -3
- package/dist/src/plugin/debug.d.ts.map +1 -1
- package/dist/src/plugin/debug.js +110 -47
- package/dist/src/plugin/debug.js.map +1 -1
- package/dist/src/plugin/dependencies.d.ts +129 -0
- package/dist/src/plugin/dependencies.d.ts.map +1 -0
- package/dist/src/plugin/dependencies.js +107 -0
- package/dist/src/plugin/dependencies.js.map +1 -0
- package/dist/src/plugin/errors.d.ts +27 -0
- package/dist/src/plugin/errors.d.ts.map +1 -1
- package/dist/src/plugin/errors.js +29 -3
- package/dist/src/plugin/errors.js.map +1 -1
- package/dist/src/plugin/event-handler.d.ts +53 -0
- package/dist/src/plugin/event-handler.d.ts.map +1 -0
- package/dist/src/plugin/event-handler.js +101 -0
- package/dist/src/plugin/event-handler.js.map +1 -0
- package/dist/src/plugin/fetch/retry-state.d.ts +61 -0
- package/dist/src/plugin/fetch/retry-state.d.ts.map +1 -0
- package/dist/src/plugin/fetch/retry-state.js +248 -0
- package/dist/src/plugin/fetch/retry-state.js.map +1 -0
- package/dist/src/plugin/fetch/warmup.d.ts +30 -0
- package/dist/src/plugin/fetch/warmup.d.ts.map +1 -0
- package/dist/src/plugin/fetch/warmup.js +76 -0
- package/dist/src/plugin/fetch/warmup.js.map +1 -0
- package/dist/src/plugin/fetch-interceptor.d.ts +59 -0
- package/dist/src/plugin/fetch-interceptor.d.ts.map +1 -0
- package/dist/src/plugin/fetch-interceptor.js +1399 -0
- package/dist/src/plugin/fetch-interceptor.js.map +1 -0
- package/dist/src/plugin/fetch-routing.d.ts +26 -0
- package/dist/src/plugin/fetch-routing.d.ts.map +1 -0
- package/dist/src/plugin/fetch-routing.js +99 -0
- package/dist/src/plugin/fetch-routing.js.map +1 -0
- package/dist/src/plugin/fingerprint.d.ts +1 -1
- package/dist/src/plugin/fingerprint.js +1 -1
- package/dist/src/plugin/gemini-dump.d.ts +5 -5
- package/dist/src/plugin/gemini-dump.d.ts.map +1 -1
- package/dist/src/plugin/gemini-dump.js +109 -55
- package/dist/src/plugin/gemini-dump.js.map +1 -1
- package/dist/src/plugin/google-search-tool.d.ts +9 -0
- package/dist/src/plugin/google-search-tool.d.ts.map +1 -0
- package/dist/src/plugin/google-search-tool.js +56 -0
- package/dist/src/plugin/google-search-tool.js.map +1 -0
- package/dist/src/plugin/image-saver.d.ts.map +1 -1
- package/dist/src/plugin/image-saver.js +16 -16
- package/dist/src/plugin/image-saver.js.map +1 -1
- package/dist/src/plugin/index.d.ts +30 -0
- package/dist/src/plugin/index.d.ts.map +1 -0
- package/dist/src/plugin/index.js +411 -0
- package/dist/src/plugin/index.js.map +1 -0
- package/dist/src/plugin/killswitch.d.ts +94 -0
- package/dist/src/plugin/killswitch.d.ts.map +1 -0
- package/dist/src/plugin/killswitch.js +197 -0
- package/dist/src/plugin/killswitch.js.map +1 -0
- package/dist/src/plugin/lifecycle.d.ts +40 -0
- package/dist/src/plugin/lifecycle.d.ts.map +1 -0
- package/dist/src/plugin/lifecycle.js +73 -0
- package/dist/src/plugin/lifecycle.js.map +1 -0
- package/dist/src/plugin/logger.d.ts +10 -1
- package/dist/src/plugin/logger.d.ts.map +1 -1
- package/dist/src/plugin/logger.js +38 -12
- package/dist/src/plugin/logger.js.map +1 -1
- package/dist/src/plugin/logging-utils.d.ts +35 -1
- package/dist/src/plugin/logging-utils.d.ts.map +1 -1
- package/dist/src/plugin/logging-utils.js +98 -15
- package/dist/src/plugin/logging-utils.js.map +1 -1
- package/dist/src/plugin/model-registry.d.ts +1 -1
- package/dist/src/plugin/model-registry.js +1 -1
- package/dist/src/plugin/oauth-login.d.ts +22 -0
- package/dist/src/plugin/oauth-login.d.ts.map +1 -0
- package/dist/src/plugin/oauth-login.js +37 -0
- package/dist/src/plugin/oauth-login.js.map +1 -0
- package/dist/src/plugin/oauth-methods.d.ts +42 -0
- package/dist/src/plugin/oauth-methods.d.ts.map +1 -0
- package/dist/src/plugin/oauth-methods.js +1276 -0
- package/dist/src/plugin/oauth-methods.js.map +1 -0
- package/dist/src/plugin/operator-settings.d.ts +40 -0
- package/dist/src/plugin/operator-settings.d.ts.map +1 -0
- package/dist/src/plugin/operator-settings.js +148 -0
- package/dist/src/plugin/operator-settings.js.map +1 -0
- package/dist/src/plugin/persist-account-pool.d.ts +37 -0
- package/dist/src/plugin/persist-account-pool.d.ts.map +1 -0
- package/dist/src/plugin/persist-account-pool.js +142 -0
- package/dist/src/plugin/persist-account-pool.js.map +1 -0
- package/dist/src/plugin/project.d.ts +1 -1
- package/dist/src/plugin/project.js +1 -1
- package/dist/src/plugin/prompt-context.d.ts.map +1 -1
- package/dist/src/plugin/prompt-context.js +11 -11
- package/dist/src/plugin/prompt-context.js.map +1 -1
- package/dist/src/plugin/quota.d.ts +138 -41
- package/dist/src/plugin/quota.d.ts.map +1 -1
- package/dist/src/plugin/quota.js +417 -285
- package/dist/src/plugin/quota.js.map +1 -1
- package/dist/src/plugin/recovery/constants.d.ts.map +1 -1
- package/dist/src/plugin/recovery/constants.js +24 -15
- package/dist/src/plugin/recovery/constants.js.map +1 -1
- package/dist/src/plugin/recovery/index.d.ts +3 -3
- package/dist/src/plugin/recovery/index.d.ts.map +1 -1
- package/dist/src/plugin/recovery/index.js +3 -3
- package/dist/src/plugin/recovery/index.js.map +1 -1
- package/dist/src/plugin/recovery/storage.d.ts +1 -1
- package/dist/src/plugin/recovery/storage.d.ts.map +1 -1
- package/dist/src/plugin/recovery/storage.js +31 -39
- package/dist/src/plugin/recovery/storage.js.map +1 -1
- package/dist/src/plugin/recovery/types.d.ts +12 -12
- package/dist/src/plugin/recovery/types.d.ts.map +1 -1
- package/dist/src/plugin/recovery.d.ts +3 -3
- package/dist/src/plugin/recovery.d.ts.map +1 -1
- package/dist/src/plugin/recovery.js +62 -58
- package/dist/src/plugin/recovery.js.map +1 -1
- package/dist/src/plugin/refresh-queue.d.ts +5 -2
- package/dist/src/plugin/refresh-queue.d.ts.map +1 -1
- package/dist/src/plugin/refresh-queue.js +37 -15
- package/dist/src/plugin/refresh-queue.js.map +1 -1
- package/dist/src/plugin/request-helpers.d.ts +1 -1
- package/dist/src/plugin/request-helpers.d.ts.map +1 -1
- package/dist/src/plugin/request-helpers.js +451 -352
- package/dist/src/plugin/request-helpers.js.map +1 -1
- package/dist/src/plugin/request.d.ts +7 -7
- package/dist/src/plugin/request.d.ts.map +1 -1
- package/dist/src/plugin/request.js +622 -384
- package/dist/src/plugin/request.js.map +1 -1
- package/dist/src/plugin/rotation.d.ts +1 -168
- package/dist/src/plugin/rotation.d.ts.map +1 -1
- package/dist/src/plugin/rotation.js +1 -327
- package/dist/src/plugin/rotation.js.map +1 -1
- package/dist/src/plugin/search.d.ts.map +1 -1
- package/dist/src/plugin/search.js +39 -35
- package/dist/src/plugin/search.js.map +1 -1
- package/dist/src/plugin/server.d.ts +1 -1
- package/dist/src/plugin/server.d.ts.map +1 -1
- package/dist/src/plugin/server.js +42 -37
- package/dist/src/plugin/server.js.map +1 -1
- package/dist/src/plugin/session-context.d.ts +2 -1
- package/dist/src/plugin/session-context.d.ts.map +1 -1
- package/dist/src/plugin/session-context.js +11 -7
- package/dist/src/plugin/session-context.js.map +1 -1
- package/dist/src/plugin/storage.d.ts +59 -120
- package/dist/src/plugin/storage.d.ts.map +1 -1
- package/dist/src/plugin/storage.js +140 -485
- package/dist/src/plugin/storage.js.map +1 -1
- package/dist/src/plugin/stores/signature-store.d.ts.map +1 -1
- package/dist/src/plugin/stores/signature-store.js.map +1 -1
- package/dist/src/plugin/thinking-recovery.d.ts.map +1 -1
- package/dist/src/plugin/thinking-recovery.js +35 -33
- package/dist/src/plugin/thinking-recovery.js.map +1 -1
- package/dist/src/plugin/token.d.ts +2 -2
- package/dist/src/plugin/token.d.ts.map +1 -1
- package/dist/src/plugin/token.js +30 -21
- package/dist/src/plugin/token.js.map +1 -1
- package/dist/src/plugin/transform/cross-model-sanitizer.d.ts +1 -1
- package/dist/src/plugin/transform/cross-model-sanitizer.js +1 -1
- package/dist/src/plugin/transform/index.d.ts +1 -1
- package/dist/src/plugin/transform/index.js +1 -1
- package/dist/src/plugin/transform/model-resolver.d.ts +1 -1
- package/dist/src/plugin/transform/model-resolver.js +1 -1
- package/dist/src/plugin/transform/types.d.ts +1 -1
- package/dist/src/plugin/transform/types.js +1 -1
- package/dist/src/plugin/types.d.ts +25 -69
- package/dist/src/plugin/types.d.ts.map +1 -1
- package/dist/src/plugin/ui/ansi.d.ts.map +1 -1
- package/dist/src/plugin/ui/ansi.js.map +1 -1
- package/dist/src/plugin/ui/auth-menu.d.ts +1 -1
- package/dist/src/plugin/ui/auth-menu.d.ts.map +1 -1
- package/dist/src/plugin/ui/auth-menu.js +84 -35
- package/dist/src/plugin/ui/auth-menu.js.map +1 -1
- package/dist/src/plugin/ui/confirm.d.ts.map +1 -1
- package/dist/src/plugin/ui/confirm.js.map +1 -1
- package/dist/src/plugin/ui/model-status.d.ts +3 -3
- package/dist/src/plugin/ui/model-status.d.ts.map +1 -1
- package/dist/src/plugin/ui/model-status.js +3 -3
- package/dist/src/plugin/ui/model-status.js.map +1 -1
- package/dist/src/plugin/ui/quota-status.d.ts +4 -4
- package/dist/src/plugin/ui/quota-status.d.ts.map +1 -1
- package/dist/src/plugin/ui/quota-status.js +49 -49
- package/dist/src/plugin/ui/quota-status.js.map +1 -1
- package/dist/src/plugin/ui/select.d.ts.map +1 -1
- package/dist/src/plugin/ui/select.js +22 -12
- package/dist/src/plugin/ui/select.js.map +1 -1
- package/dist/src/plugin/version.d.ts +1 -1
- package/dist/src/plugin/version.js +1 -1
- package/dist/src/rpc/notifications.d.ts +6 -0
- package/dist/src/rpc/notifications.d.ts.map +1 -0
- package/dist/src/rpc/notifications.js +46 -0
- package/dist/src/rpc/notifications.js.map +1 -0
- package/dist/src/rpc/port-file.d.ts +13 -0
- package/dist/src/rpc/port-file.d.ts.map +1 -0
- package/dist/src/rpc/port-file.js +109 -0
- package/dist/src/rpc/port-file.js.map +1 -0
- package/dist/src/rpc/protocol.d.ts +22 -0
- package/dist/src/rpc/protocol.d.ts.map +1 -0
- package/dist/src/rpc/protocol.js +1 -0
- package/dist/src/rpc/protocol.js.map +1 -0
- package/dist/src/rpc/rpc-client.d.ts +10 -0
- package/dist/src/rpc/rpc-client.d.ts.map +1 -0
- package/dist/src/rpc/rpc-client.js +58 -0
- package/dist/src/rpc/rpc-client.js.map +1 -0
- package/dist/src/rpc/rpc-dir.d.ts +4 -0
- package/dist/src/rpc/rpc-dir.d.ts.map +1 -0
- package/dist/src/rpc/rpc-dir.js +19 -0
- package/dist/src/rpc/rpc-dir.js.map +1 -0
- package/dist/src/rpc/rpc-server.d.ts +13 -0
- package/dist/src/rpc/rpc-server.d.ts.map +1 -0
- package/dist/src/rpc/rpc-server.js +231 -0
- package/dist/src/rpc/rpc-server.js.map +1 -0
- package/dist/src/sidebar-state.d.ts +357 -0
- package/dist/src/sidebar-state.d.ts.map +1 -0
- package/dist/src/sidebar-state.js +680 -0
- package/dist/src/sidebar-state.js.map +1 -0
- package/dist/src/tui/command-dialogs.d.ts +61 -0
- package/dist/src/tui/command-dialogs.d.ts.map +1 -0
- package/dist/src/tui/command-dialogs.js +595 -0
- package/dist/src/tui/command-dialogs.js.map +1 -0
- package/dist/src/tui/file-logger.d.ts +41 -0
- package/dist/src/tui/file-logger.d.ts.map +1 -0
- package/dist/src/tui/file-logger.js +114 -0
- package/dist/src/tui/file-logger.js.map +1 -0
- package/dist/src/tui-preferences.d.ts +40 -0
- package/dist/src/tui-preferences.d.ts.map +1 -0
- package/dist/src/tui-preferences.js +328 -0
- package/dist/src/tui-preferences.js.map +1 -0
- package/dist/src/tui.d.ts +68 -0
- package/dist/src/tui.d.ts.map +1 -0
- package/dist/src/tui.js +697 -0
- package/dist/src/tui.js.map +1 -0
- package/package.json +46 -22
- package/src/plugin/command-data.ts +931 -0
- package/src/rpc/port-file.ts +143 -0
- package/src/rpc/protocol.ts +31 -0
- package/src/rpc/rpc-client.ts +102 -0
- package/src/rpc/rpc-dir.ts +24 -0
- package/src/sidebar-state.ts +991 -0
- package/src/tui/command-dialogs.tsx +832 -0
- package/src/tui/entry.mjs +74 -0
- package/src/tui/file-logger.ts +145 -0
- package/src/tui-compiled/plugin/command-data.ts +931 -0
- package/src/tui-compiled/rpc/port-file.ts +143 -0
- package/src/tui-compiled/rpc/protocol.ts +31 -0
- package/src/tui-compiled/rpc/rpc-client.ts +102 -0
- package/src/tui-compiled/rpc/rpc-dir.ts +24 -0
- package/src/tui-compiled/sidebar-state.ts +991 -0
- package/src/tui-compiled/tui/command-dialogs.tsx +779 -0
- package/src/tui-compiled/tui/file-logger.ts +145 -0
- package/src/tui-compiled/tui-preferences.ts +416 -0
- package/src/tui-compiled/tui.tsx +1193 -0
- package/src/tui-preferences.ts +416 -0
- package/src/tui.tsx +1171 -0
- package/dist/src/plugin.d.ts +0 -48
- package/dist/src/plugin.d.ts.map +0 -1
- package/dist/src/plugin.js +0 -3311
- package/dist/src/plugin.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugin/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live killswitch for the account pool.
|
|
3
|
+
*
|
|
4
|
+
* The operator-configured killswitch excludes candidates whose freshest
|
|
5
|
+
* cached quota remaining-percent is at or below a per-account
|
|
6
|
+
* threshold (or the global minimum_remaining_percent when no
|
|
7
|
+
* per-account override is set).
|
|
8
|
+
*
|
|
9
|
+
* Quota data is read live from `account.cachedQuota`, which is a
|
|
10
|
+
* `Partial<Record<QuotaGroup, QuotaGroupSummary>>` populated by the
|
|
11
|
+
* quota manager after every successful refresh. Stale or missing
|
|
12
|
+
* data is treated as fail-open: the candidate is allowed through so a
|
|
13
|
+
* cold start cannot deadlock the request pipeline on the operator's
|
|
14
|
+
* first dial.
|
|
15
|
+
*/
|
|
16
|
+
import type { QuotaGroup, QuotaGroupSummary } from '@cortexkit/antigravity-auth-core';
|
|
17
|
+
import type { ModelFamily } from './accounts';
|
|
18
|
+
import type { OperatorSettings } from './operator-settings';
|
|
19
|
+
export interface KillswitchAccountSnapshot {
|
|
20
|
+
index: number;
|
|
21
|
+
refreshToken?: string;
|
|
22
|
+
email?: string;
|
|
23
|
+
cachedQuota?: Partial<Record<QuotaGroup, QuotaGroupSummary>>;
|
|
24
|
+
cachedQuotaUpdatedAt?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface KillswitchDecision {
|
|
27
|
+
allowed: boolean;
|
|
28
|
+
reason: 'ok' | 'killswitch-disabled' | 'quota-missing-or-stale' | 'below-threshold';
|
|
29
|
+
thresholdPercent: number;
|
|
30
|
+
remainingPercent: number | null;
|
|
31
|
+
}
|
|
32
|
+
export interface KillswitchEvaluateOptions {
|
|
33
|
+
now?: number;
|
|
34
|
+
/** Cache TTL in milliseconds — cached quota older than this is fail-open. */
|
|
35
|
+
cacheTtlMs?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Model identifier to scope the evaluation to. When set, the
|
|
38
|
+
* decision checks only the quota group that powers that model
|
|
39
|
+
* (e.g. a `gemini-pro` request checks ONLY `gemini-pro`,
|
|
40
|
+
* not the max of pro+flash). When omitted, the evaluation uses
|
|
41
|
+
* the family-max behavior.
|
|
42
|
+
*/
|
|
43
|
+
model?: string | null;
|
|
44
|
+
}
|
|
45
|
+
export declare function accountKeyForRefreshToken(refreshToken: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Determine whether `account` is allowed under the operator killswitch.
|
|
48
|
+
*
|
|
49
|
+
* The decision is fail-open when:
|
|
50
|
+
* - killswitch is disabled
|
|
51
|
+
* - cached quota is missing entirely
|
|
52
|
+
* - cached quota is older than `cacheTtlMs`
|
|
53
|
+
*
|
|
54
|
+
* When `model` is provided, the evaluation is scoped to the single
|
|
55
|
+
* quota group that powers that model (e.g. a `gemini-pro` request
|
|
56
|
+
* checks ONLY `gemini-pro` — not the max of pro+flash). Without
|
|
57
|
+
* `model`, the evaluation falls back to the family-max behavior so
|
|
58
|
+
* existing callers that omit the model argument keep their previous
|
|
59
|
+
* semantics.
|
|
60
|
+
*
|
|
61
|
+
* Returns a structured decision so callers can emit diagnostics for
|
|
62
|
+
* each candidate without re-running the comparison.
|
|
63
|
+
*/
|
|
64
|
+
export declare function evaluateKillswitchForAccount(account: KillswitchAccountSnapshot, family: ModelFamily, settings: OperatorSettings, options?: KillswitchEvaluateOptions): KillswitchDecision;
|
|
65
|
+
/**
|
|
66
|
+
* Build a redacted summary of every candidate's killswitch outcome.
|
|
67
|
+
*
|
|
68
|
+
* Used when the operator killswitch excludes the entire pool so the
|
|
69
|
+
* host error message can list the offending accounts without leaking
|
|
70
|
+
* identifiers or tokens.
|
|
71
|
+
*/
|
|
72
|
+
export declare function summarizeKillswitchOutcomes(accounts: readonly KillswitchAccountSnapshot[], family: ModelFamily, settings: OperatorSettings, options?: KillswitchEvaluateOptions): Array<{
|
|
73
|
+
accountKey: string;
|
|
74
|
+
remainingPercent: number | null;
|
|
75
|
+
thresholdPercent: number;
|
|
76
|
+
}>;
|
|
77
|
+
/**
|
|
78
|
+
* Throw `AntigravityKillswitchError` when every candidate is excluded.
|
|
79
|
+
*
|
|
80
|
+
* The interceptor calls this when its retry loop runs out of viable
|
|
81
|
+
* accounts so the host surfaces a single, structured error rather than
|
|
82
|
+
* a synthetic 200/401 body.
|
|
83
|
+
*/
|
|
84
|
+
export declare function throwIfAllKilled(input: {
|
|
85
|
+
family: ModelFamily;
|
|
86
|
+
model: string;
|
|
87
|
+
accounts: readonly KillswitchAccountSnapshot[];
|
|
88
|
+
settings: OperatorSettings;
|
|
89
|
+
now?: number;
|
|
90
|
+
cacheTtlMs?: number;
|
|
91
|
+
/** Optional model to scope per-account evaluation to a single quota group. */
|
|
92
|
+
quotaModel?: string | null;
|
|
93
|
+
}): void;
|
|
94
|
+
//# sourceMappingURL=killswitch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"killswitch.d.ts","sourceRoot":"","sources":["../../../src/plugin/killswitch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EACF,IAAI,GACJ,qBAAqB,GACrB,wBAAwB,GACxB,iBAAiB,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAoCD,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,yBAAyB,EAClC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,yBAA8B,GACtC,kBAAkB,CAmDpB;AAoCD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,SAAS,yBAAyB,EAAE,EAC9C,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,yBAA8B,GACtC,KAAK,CAAC;IACP,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAC,CAiBD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,SAAS,yBAAyB,EAAE,CAAA;IAC9C,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,GAAG,IAAI,CA+BP"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live killswitch for the account pool.
|
|
3
|
+
*
|
|
4
|
+
* The operator-configured killswitch excludes candidates whose freshest
|
|
5
|
+
* cached quota remaining-percent is at or below a per-account
|
|
6
|
+
* threshold (or the global minimum_remaining_percent when no
|
|
7
|
+
* per-account override is set).
|
|
8
|
+
*
|
|
9
|
+
* Quota data is read live from `account.cachedQuota`, which is a
|
|
10
|
+
* `Partial<Record<QuotaGroup, QuotaGroupSummary>>` populated by the
|
|
11
|
+
* quota manager after every successful refresh. Stale or missing
|
|
12
|
+
* data is treated as fail-open: the candidate is allowed through so a
|
|
13
|
+
* cold start cannot deadlock the request pipeline on the operator's
|
|
14
|
+
* first dial.
|
|
15
|
+
*/
|
|
16
|
+
import { createHash } from 'node:crypto';
|
|
17
|
+
import { AntigravityKillswitchError } from './errors';
|
|
18
|
+
const DEFAULT_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
19
|
+
const QUOTA_GROUP_BY_FAMILY = {
|
|
20
|
+
claude: ['non-gemini'],
|
|
21
|
+
gemini: ['gemini', 'non-gemini'],
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Best-effort mapping from a model string to the quota group it draws
|
|
25
|
+
* on. The mapping is intentionally inline (no shared regex table) so
|
|
26
|
+
* the killswitch does not pull a transform stack into its import
|
|
27
|
+
* graph. Models that are not recognised fall back to the family-max
|
|
28
|
+
* behavior so a missed match can never widen the kill.
|
|
29
|
+
*/
|
|
30
|
+
function quotaGroupForModel(family, model) {
|
|
31
|
+
if (!model)
|
|
32
|
+
return null;
|
|
33
|
+
const lower = model.toLowerCase();
|
|
34
|
+
if (family === 'claude')
|
|
35
|
+
return 'non-gemini';
|
|
36
|
+
if (family === 'gemini') {
|
|
37
|
+
// Check Claude / GPT-OSS substrings BEFORE the `gemini` substring so
|
|
38
|
+
// a `gemini-claude-*` alias (Claude route exposed under a `gemini-`
|
|
39
|
+
// namespace) attributes to the non-gemini pool rather than the
|
|
40
|
+
// gemini pool.
|
|
41
|
+
if (lower.includes('claude') || lower.includes('gpt-oss')) {
|
|
42
|
+
return 'non-gemini';
|
|
43
|
+
}
|
|
44
|
+
if (lower.includes('gemini') || lower.startsWith('tab_'))
|
|
45
|
+
return 'gemini';
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
export function accountKeyForRefreshToken(refreshToken) {
|
|
50
|
+
return createHash('sha256').update(refreshToken).digest('hex').slice(0, 12);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Determine whether `account` is allowed under the operator killswitch.
|
|
54
|
+
*
|
|
55
|
+
* The decision is fail-open when:
|
|
56
|
+
* - killswitch is disabled
|
|
57
|
+
* - cached quota is missing entirely
|
|
58
|
+
* - cached quota is older than `cacheTtlMs`
|
|
59
|
+
*
|
|
60
|
+
* When `model` is provided, the evaluation is scoped to the single
|
|
61
|
+
* quota group that powers that model (e.g. a `gemini-pro` request
|
|
62
|
+
* checks ONLY `gemini-pro` — not the max of pro+flash). Without
|
|
63
|
+
* `model`, the evaluation falls back to the family-max behavior so
|
|
64
|
+
* existing callers that omit the model argument keep their previous
|
|
65
|
+
* semantics.
|
|
66
|
+
*
|
|
67
|
+
* Returns a structured decision so callers can emit diagnostics for
|
|
68
|
+
* each candidate without re-running the comparison.
|
|
69
|
+
*/
|
|
70
|
+
export function evaluateKillswitchForAccount(account, family, settings, options = {}) {
|
|
71
|
+
if (!settings.killswitch.enabled) {
|
|
72
|
+
return {
|
|
73
|
+
allowed: true,
|
|
74
|
+
reason: 'killswitch-disabled',
|
|
75
|
+
thresholdPercent: 0,
|
|
76
|
+
remainingPercent: null,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const accountKey = account.refreshToken
|
|
80
|
+
? accountKeyForRefreshToken(account.refreshToken)
|
|
81
|
+
: `idx-${account.index}`;
|
|
82
|
+
const thresholdPercent = settings.killswitch.accounts?.[accountKey] ??
|
|
83
|
+
settings.killswitch.minimum_remaining_percent;
|
|
84
|
+
const now = options.now ?? Date.now();
|
|
85
|
+
const cacheTtlMs = options.cacheTtlMs ?? DEFAULT_CACHE_TTL_MS;
|
|
86
|
+
const freshEnough = typeof account.cachedQuotaUpdatedAt === 'number' &&
|
|
87
|
+
now - account.cachedQuotaUpdatedAt <= cacheTtlMs;
|
|
88
|
+
const quota = freshEnough ? account.cachedQuota : undefined;
|
|
89
|
+
if (!quota) {
|
|
90
|
+
return {
|
|
91
|
+
allowed: true,
|
|
92
|
+
reason: 'quota-missing-or-stale',
|
|
93
|
+
thresholdPercent,
|
|
94
|
+
remainingPercent: null,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const remainingPercent = quotaGroupForModel(family, options.model)
|
|
98
|
+
? remainingPercentForGroup(quota, family, options.model)
|
|
99
|
+
: freshestRemainingPercent(quota, family);
|
|
100
|
+
if (remainingPercent === null) {
|
|
101
|
+
return {
|
|
102
|
+
allowed: true,
|
|
103
|
+
reason: 'quota-missing-or-stale',
|
|
104
|
+
thresholdPercent,
|
|
105
|
+
remainingPercent: null,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
allowed: remainingPercent >= thresholdPercent,
|
|
110
|
+
reason: remainingPercent >= thresholdPercent ? 'ok' : 'below-threshold',
|
|
111
|
+
thresholdPercent,
|
|
112
|
+
remainingPercent,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function freshestRemainingPercent(quota, family) {
|
|
116
|
+
const groups = QUOTA_GROUP_BY_FAMILY[family];
|
|
117
|
+
let best = null;
|
|
118
|
+
for (const group of groups) {
|
|
119
|
+
const entry = quota[group];
|
|
120
|
+
if (!entry || typeof entry.remainingFraction !== 'number')
|
|
121
|
+
continue;
|
|
122
|
+
const pct = clampPercent(entry.remainingFraction * 100);
|
|
123
|
+
if (best === null || pct > best)
|
|
124
|
+
best = pct;
|
|
125
|
+
}
|
|
126
|
+
return best;
|
|
127
|
+
}
|
|
128
|
+
function remainingPercentForGroup(quota, family, model) {
|
|
129
|
+
const group = quotaGroupForModel(family, model);
|
|
130
|
+
if (!group)
|
|
131
|
+
return null;
|
|
132
|
+
const entry = quota[group];
|
|
133
|
+
if (!entry || typeof entry.remainingFraction !== 'number')
|
|
134
|
+
return null;
|
|
135
|
+
return clampPercent(entry.remainingFraction * 100);
|
|
136
|
+
}
|
|
137
|
+
function clampPercent(value) {
|
|
138
|
+
if (Number.isNaN(value))
|
|
139
|
+
return 0;
|
|
140
|
+
if (value < 0)
|
|
141
|
+
return 0;
|
|
142
|
+
if (value > 100)
|
|
143
|
+
return 100;
|
|
144
|
+
return value;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Build a redacted summary of every candidate's killswitch outcome.
|
|
148
|
+
*
|
|
149
|
+
* Used when the operator killswitch excludes the entire pool so the
|
|
150
|
+
* host error message can list the offending accounts without leaking
|
|
151
|
+
* identifiers or tokens.
|
|
152
|
+
*/
|
|
153
|
+
export function summarizeKillswitchOutcomes(accounts, family, settings, options = {}) {
|
|
154
|
+
return accounts.map((account) => {
|
|
155
|
+
const decision = evaluateKillswitchForAccount(account, family, settings, options);
|
|
156
|
+
const accountKey = account.refreshToken
|
|
157
|
+
? accountKeyForRefreshToken(account.refreshToken)
|
|
158
|
+
: `idx-${account.index}`;
|
|
159
|
+
return {
|
|
160
|
+
accountKey,
|
|
161
|
+
remainingPercent: decision.remainingPercent,
|
|
162
|
+
thresholdPercent: decision.thresholdPercent,
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Throw `AntigravityKillswitchError` when every candidate is excluded.
|
|
168
|
+
*
|
|
169
|
+
* The interceptor calls this when its retry loop runs out of viable
|
|
170
|
+
* accounts so the host surfaces a single, structured error rather than
|
|
171
|
+
* a synthetic 200/401 body.
|
|
172
|
+
*/
|
|
173
|
+
export function throwIfAllKilled(input) {
|
|
174
|
+
const { family, model, accounts, settings, quotaModel } = input;
|
|
175
|
+
if (!settings.killswitch.enabled)
|
|
176
|
+
return;
|
|
177
|
+
const summaryOptions = {
|
|
178
|
+
...(input.now !== undefined ? { now: input.now } : {}),
|
|
179
|
+
...(input.cacheTtlMs !== undefined ? { cacheTtlMs: input.cacheTtlMs } : {}),
|
|
180
|
+
...(quotaModel !== undefined ? { model: quotaModel } : {}),
|
|
181
|
+
};
|
|
182
|
+
const summaries = summarizeKillswitchOutcomes(accounts, family, settings, summaryOptions);
|
|
183
|
+
const allKilled = accounts.every((account) => {
|
|
184
|
+
const decision = evaluateKillswitchForAccount(account, family, settings, summaryOptions);
|
|
185
|
+
return decision.reason === 'below-threshold';
|
|
186
|
+
});
|
|
187
|
+
if (!allKilled)
|
|
188
|
+
return;
|
|
189
|
+
const thresholdPercent = settings.killswitch.minimum_remaining_percent;
|
|
190
|
+
throw new AntigravityKillswitchError({
|
|
191
|
+
family,
|
|
192
|
+
model,
|
|
193
|
+
thresholdPercent,
|
|
194
|
+
summaries,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=killswitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"killswitch.js","sourceRoot":"","sources":["../../../src/plugin/killswitch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { AccountManager } from './accounts';
|
|
2
|
+
import type { ProactiveRefreshQueue } from './refresh-queue';
|
|
3
|
+
export interface Disposable {
|
|
4
|
+
dispose(): Promise<void> | void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Lifecycle phase for a registered disposable.
|
|
8
|
+
*
|
|
9
|
+
* - `producer`: runs on the same side of the sidebar drain as the
|
|
10
|
+
* fetch interceptor — the lifecycle disposes producers BEFORE the
|
|
11
|
+
* sidebar drain so a producer racing with shutdown cannot enqueue
|
|
12
|
+
* a write that lands after the drain asserts the queue is empty.
|
|
13
|
+
* - `consumer`: runs AFTER the sidebar drain. These are the sinks
|
|
14
|
+
* (RPC server, file logger) that the TUI / host talk to and that
|
|
15
|
+
* must stay alive until every queued write has landed.
|
|
16
|
+
*/
|
|
17
|
+
export type LifecyclePhase = 'producer' | 'consumer';
|
|
18
|
+
export interface PluginLifecycleOptions {
|
|
19
|
+
sessionRegistry: {
|
|
20
|
+
clear(): void;
|
|
21
|
+
};
|
|
22
|
+
shutdownDiskSignatureCache: () => Promise<void>;
|
|
23
|
+
clearFetchState: () => void;
|
|
24
|
+
/**
|
|
25
|
+
* Optional drain hook for in-flight sidebar-state writes. Lifecycle
|
|
26
|
+
* awaits this AFTER producers are disposed but BEFORE consumers are
|
|
27
|
+
* disposed, so:
|
|
28
|
+
* 1. producers have stopped (no new writes can land)
|
|
29
|
+
* 2. every queued write has flushed
|
|
30
|
+
* 3. the file logger + RPC server are still alive
|
|
31
|
+
*/
|
|
32
|
+
drainSidebarWrites?: () => Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export interface PluginLifecycle extends Disposable {
|
|
35
|
+
getAccountManager(): AccountManager | null;
|
|
36
|
+
replaceAccountRuntime(manager: AccountManager, refreshQueue: ProactiveRefreshQueue | null): Promise<void>;
|
|
37
|
+
register(disposable: Disposable, phase?: LifecyclePhase): void;
|
|
38
|
+
}
|
|
39
|
+
export declare function createPluginLifecycle(options: PluginLifecycleOptions): PluginLifecycle;
|
|
40
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/plugin/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAE5D,MAAM,WAAW,UAAU;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAChC;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,CAAA;AAEpD,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE;QAAE,KAAK,IAAI,IAAI,CAAA;KAAE,CAAA;IAClC,0BAA0B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAAA;IAC1C,qBAAqB,CACnB,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,qBAAqB,GAAG,IAAI,GACzC,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/D;AAID,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CA4EjB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const NOOP_DRAIN = async () => { };
|
|
2
|
+
export function createPluginLifecycle(options) {
|
|
3
|
+
let accountManager = null;
|
|
4
|
+
let refreshQueue = null;
|
|
5
|
+
let disposal = null;
|
|
6
|
+
const producers = [];
|
|
7
|
+
const consumers = [];
|
|
8
|
+
const drainSidebarWrites = options.drainSidebarWrites ?? NOOP_DRAIN;
|
|
9
|
+
const disposeAccountRuntime = async () => {
|
|
10
|
+
const oldQueue = refreshQueue;
|
|
11
|
+
const oldManager = accountManager;
|
|
12
|
+
refreshQueue = null;
|
|
13
|
+
accountManager = null;
|
|
14
|
+
await oldQueue?.dispose();
|
|
15
|
+
await oldManager?.dispose();
|
|
16
|
+
};
|
|
17
|
+
const register = (disposable, phase = 'consumer') => {
|
|
18
|
+
if (disposal) {
|
|
19
|
+
void disposable.dispose();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (phase === 'producer') {
|
|
23
|
+
producers.push(disposable);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
consumers.push(disposable);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
getAccountManager: () => accountManager,
|
|
31
|
+
async replaceAccountRuntime(manager, queue) {
|
|
32
|
+
await disposeAccountRuntime();
|
|
33
|
+
if (disposal) {
|
|
34
|
+
await queue?.dispose();
|
|
35
|
+
await manager.dispose();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
accountManager = manager;
|
|
39
|
+
refreshQueue = queue;
|
|
40
|
+
},
|
|
41
|
+
register,
|
|
42
|
+
dispose() {
|
|
43
|
+
if (!disposal) {
|
|
44
|
+
disposal = (async () => {
|
|
45
|
+
await disposeAccountRuntime();
|
|
46
|
+
await options.shutdownDiskSignatureCache();
|
|
47
|
+
options.sessionRegistry.clear();
|
|
48
|
+
options.clearFetchState();
|
|
49
|
+
// 1. Stop and await all producers (e.g. fetch interceptor).
|
|
50
|
+
// This prevents NEW sidebar writes from being enqueued
|
|
51
|
+
// while the drain is in flight.
|
|
52
|
+
for (const disposable of producers) {
|
|
53
|
+
await disposable.dispose();
|
|
54
|
+
}
|
|
55
|
+
producers.length = 0;
|
|
56
|
+
// 2. Drain sidebar writes. Every write enqueued by a now-stopped
|
|
57
|
+
// producer lands here before the consumers (RPC server, file
|
|
58
|
+
// logger) are torn down.
|
|
59
|
+
await drainSidebarWrites();
|
|
60
|
+
// 3. Stop consumers. The TUI's last frame can still observe a
|
|
61
|
+
// fully landed snapshot because the file logger is still alive
|
|
62
|
+
// during the drain.
|
|
63
|
+
for (const disposable of consumers) {
|
|
64
|
+
await disposable.dispose();
|
|
65
|
+
}
|
|
66
|
+
consumers.length = 0;
|
|
67
|
+
})();
|
|
68
|
+
}
|
|
69
|
+
return disposal;
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/plugin/lifecycle.ts"],"names":[],"mappings":"AA4CA,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE,GAAE,CAAC,CAAA;AAEhD,MAAM,UAAU,qBAAqB,CACnC,OAA+B;IAE/B,IAAI,cAAc,GAA0B,IAAI,CAAA;IAChD,IAAI,YAAY,GAAiC,IAAI,CAAA;IACrD,IAAI,QAAQ,GAAyB,IAAI,CAAA;IACzC,MAAM,SAAS,GAAiB,EAAE,CAAA;IAClC,MAAM,SAAS,GAAiB,EAAE,CAAA;IAClC,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,UAAU,CAAA;IAEnE,MAAM,qBAAqB,GAAG,KAAK,IAAmB,EAAE;QACtD,MAAM,QAAQ,GAAG,YAAY,CAAA;QAC7B,MAAM,UAAU,GAAG,cAAc,CAAA;QACjC,YAAY,GAAG,IAAI,CAAA;QACnB,cAAc,GAAG,IAAI,CAAA;QAErB,MAAM,QAAQ,EAAE,OAAO,EAAE,CAAA;QACzB,MAAM,UAAU,EAAE,OAAO,EAAE,CAAA;IAC7B,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CACf,UAAsB,EACtB,QAAwB,UAAU,EAC5B,EAAE;QACR,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,UAAU,CAAC,OAAO,EAAE,CAAA;YACzB,OAAM;QACR,CAAC;QACD,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,CAAA;IAED,OAAO;QACL,iBAAiB,EAAE,GAAG,EAAE,CAAC,cAAc;QACvC,KAAK,CAAC,qBAAqB,CAAC,OAAO,EAAE,KAAK;YACxC,MAAM,qBAAqB,EAAE,CAAA;YAC7B,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,KAAK,EAAE,OAAO,EAAE,CAAA;gBACtB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;gBACvB,OAAM;YACR,CAAC;YACD,cAAc,GAAG,OAAO,CAAA;YACxB,YAAY,GAAG,KAAK,CAAA;QACtB,CAAC;QACD,QAAQ;QACR,OAAO;YACL,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;oBACrB,MAAM,qBAAqB,EAAE,CAAA;oBAC7B,MAAM,OAAO,CAAC,0BAA0B,EAAE,CAAA;oBAC1C,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;oBAC/B,OAAO,CAAC,eAAe,EAAE,CAAA;oBACzB,4DAA4D;oBAC5D,0DAA0D;oBAC1D,mCAAmC;oBACnC,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE,CAAC;wBACnC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;oBAC5B,CAAC;oBACD,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;oBACpB,iEAAiE;oBACjE,gEAAgE;oBAChE,4BAA4B;oBAC5B,MAAM,kBAAkB,EAAE,CAAA;oBAC1B,8DAA8D;oBAC9D,kEAAkE;oBAClE,uBAAuB;oBACvB,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE,CAAC;wBACnC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;oBAC5B,CAAC;oBACD,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;gBACtB,CAAC,CAAC,EAAE,CAAA;YACN,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -6,14 +6,23 @@
|
|
|
6
6
|
* - debug_tui controls TUI log panel only
|
|
7
7
|
* - either sink can be enabled independently
|
|
8
8
|
* - OPENCODE_ANTIGRAVITY_CONSOLE_LOG=1 → console output (independent of debug flags)
|
|
9
|
+
* - operator.log_level filters the level at which log entries are emitted
|
|
9
10
|
*/
|
|
10
|
-
import type {
|
|
11
|
+
import type { OperatorSettings } from './operator-settings';
|
|
12
|
+
import type { PluginClient } from './types';
|
|
11
13
|
export interface Logger {
|
|
12
14
|
debug(message: string, extra?: Record<string, unknown>): void;
|
|
13
15
|
info(message: string, extra?: Record<string, unknown>): void;
|
|
14
16
|
warn(message: string, extra?: Record<string, unknown>): void;
|
|
15
17
|
error(message: string, extra?: Record<string, unknown>): void;
|
|
16
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Set the runtime log level. Reads from the operator settings controller
|
|
21
|
+
* on each call so a /antigravity-logging dialog flip takes effect
|
|
22
|
+
* immediately. Falls back to "debug" when the operator level is not
|
|
23
|
+
* yet known.
|
|
24
|
+
*/
|
|
25
|
+
export declare function setRuntimeLogLevel(level: OperatorSettings['log_level']): void;
|
|
17
26
|
/**
|
|
18
27
|
* Initialize the logger with the plugin client.
|
|
19
28
|
* Must be called during plugin initialization to enable TUI logging.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/plugin/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/plugin/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAsB3C,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC9D;AASD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAAG,IAAI,CAE7E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAOrD;AAkDD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBnD"}
|
|
@@ -6,17 +6,38 @@
|
|
|
6
6
|
* - debug_tui controls TUI log panel only
|
|
7
7
|
* - either sink can be enabled independently
|
|
8
8
|
* - OPENCODE_ANTIGRAVITY_CONSOLE_LOG=1 → console output (independent of debug flags)
|
|
9
|
+
* - operator.log_level filters the level at which log entries are emitted
|
|
9
10
|
*/
|
|
10
|
-
import { setLogSink } from
|
|
11
|
-
import { isDebugTuiEnabled } from
|
|
12
|
-
import { isTruthyFlag, writeConsoleLog
|
|
13
|
-
const ENV_CONSOLE_LOG =
|
|
11
|
+
import { setLogSink } from '@cortexkit/antigravity-auth-core';
|
|
12
|
+
import { isDebugTuiEnabled } from './debug';
|
|
13
|
+
import { isTruthyFlag, writeConsoleLog } from './logging-utils';
|
|
14
|
+
const ENV_CONSOLE_LOG = 'OPENCODE_ANTIGRAVITY_CONSOLE_LOG';
|
|
15
|
+
const LEVEL_PRIORITY = {
|
|
16
|
+
debug: 0,
|
|
17
|
+
info: 1,
|
|
18
|
+
warn: 2,
|
|
19
|
+
error: 3,
|
|
20
|
+
};
|
|
21
|
+
const LOG_LEVEL_FROM_OPERATOR = {
|
|
22
|
+
error: 'error',
|
|
23
|
+
warn: 'warn',
|
|
24
|
+
info: 'info',
|
|
25
|
+
debug: 'debug',
|
|
26
|
+
trace: 'debug',
|
|
27
|
+
};
|
|
14
28
|
let _client = null;
|
|
29
|
+
let _configuredLevel = 'debug';
|
|
30
|
+
function shouldEmit(level) {
|
|
31
|
+
return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[_configuredLevel];
|
|
32
|
+
}
|
|
15
33
|
/**
|
|
16
|
-
*
|
|
34
|
+
* Set the runtime log level. Reads from the operator settings controller
|
|
35
|
+
* on each call so a /antigravity-logging dialog flip takes effect
|
|
36
|
+
* immediately. Falls back to "debug" when the operator level is not
|
|
37
|
+
* yet known.
|
|
17
38
|
*/
|
|
18
|
-
function
|
|
19
|
-
|
|
39
|
+
export function setRuntimeLogLevel(level) {
|
|
40
|
+
_configuredLevel = LOG_LEVEL_FROM_OPERATOR[level] ?? 'debug';
|
|
20
41
|
}
|
|
21
42
|
/**
|
|
22
43
|
* Initialize the logger with the plugin client.
|
|
@@ -44,10 +65,12 @@ export function initLogger(client) {
|
|
|
44
65
|
* ```
|
|
45
66
|
*/
|
|
46
67
|
function emitLog(service, level, message, extra) {
|
|
68
|
+
if (!shouldEmit(level))
|
|
69
|
+
return;
|
|
47
70
|
// TUI logging: controlled only by debug_tui policy
|
|
48
71
|
if (isDebugTuiEnabled()) {
|
|
49
72
|
const app = _client?.app;
|
|
50
|
-
if (app && typeof app.log ===
|
|
73
|
+
if (app && typeof app.log === 'function') {
|
|
51
74
|
app
|
|
52
75
|
.log({
|
|
53
76
|
body: { service, level, message, extra },
|
|
@@ -65,16 +88,19 @@ function emitLog(service, level, message, extra) {
|
|
|
65
88
|
}
|
|
66
89
|
// If neither TUI nor console logging is enabled, log is silently discarded
|
|
67
90
|
}
|
|
91
|
+
function isConsoleLogEnabled() {
|
|
92
|
+
return isTruthyFlag(process.env[ENV_CONSOLE_LOG]);
|
|
93
|
+
}
|
|
68
94
|
export function createLogger(module) {
|
|
69
95
|
const service = `antigravity.${module}`;
|
|
70
96
|
const log = (level, message, extra) => {
|
|
71
97
|
emitLog(service, level, message, extra);
|
|
72
98
|
};
|
|
73
99
|
return {
|
|
74
|
-
debug: (message, extra) => log(
|
|
75
|
-
info: (message, extra) => log(
|
|
76
|
-
warn: (message, extra) => log(
|
|
77
|
-
error: (message, extra) => log(
|
|
100
|
+
debug: (message, extra) => log('debug', message, extra),
|
|
101
|
+
info: (message, extra) => log('info', message, extra),
|
|
102
|
+
warn: (message, extra) => log('warn', message, extra),
|
|
103
|
+
error: (message, extra) => log('error', message, extra),
|
|
78
104
|
};
|
|
79
105
|
}
|
|
80
106
|
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/plugin/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/plugin/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type LogLevel =
|
|
1
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
2
2
|
export interface DebugPolicyInput {
|
|
3
3
|
configDebug: boolean;
|
|
4
4
|
configDebugTui: boolean;
|
|
@@ -20,4 +20,38 @@ export declare function formatErrorForLog(error: unknown): string;
|
|
|
20
20
|
export declare function truncateTextForLog(text: string, maxChars: number): string;
|
|
21
21
|
export declare function formatBodyPreviewForLog(body: BodyInit | null | undefined, maxChars: number): string | undefined;
|
|
22
22
|
export declare function writeConsoleLog(level: LogLevel, ...args: unknown[]): void;
|
|
23
|
+
/**
|
|
24
|
+
* Mask all but the first 4 and last 4 characters of `value`. A short
|
|
25
|
+
* value (≤ 8 chars) is masked entirely so the caller never leaks a
|
|
26
|
+
* full identifier. Empty / non-string inputs collapse to an empty
|
|
27
|
+
* marker so a debug line that ran the helper cannot accidentally
|
|
28
|
+
* surface the original value.
|
|
29
|
+
*
|
|
30
|
+
* Pattern matches the `${start}****${end}` shape used by metrics teams
|
|
31
|
+
* for opaque resource IDs; the implementation is intentionally simple
|
|
32
|
+
* so a quick visual scan of a debug log still tells operators what
|
|
33
|
+
* class of identifier they are looking at.
|
|
34
|
+
*/
|
|
35
|
+
export declare function redactSensitive(value: string | undefined | null): string;
|
|
36
|
+
/**
|
|
37
|
+
* Walk a JSON-like value and redact every credential-shaped field.
|
|
38
|
+
* Returns a NEW value — the original is never mutated. Strings inside
|
|
39
|
+
* arrays are left untouched; only object keys whose name matches the
|
|
40
|
+
* sensitive pattern have their string values masked.
|
|
41
|
+
*/
|
|
42
|
+
export declare function redactSensitiveFields(value: unknown): unknown;
|
|
43
|
+
/**
|
|
44
|
+
* Redact credential-shaped fields (project IDs, tokens, …) out of a
|
|
45
|
+
* serialized JSON request body. Returns the input untouched when it is
|
|
46
|
+
* not parseable JSON or not an object/array — unstructured bodies have
|
|
47
|
+
* no field names to key redaction off.
|
|
48
|
+
*/
|
|
49
|
+
export declare function redactJsonBodyString(body: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Redact a request body before it reaches a debug log or dump file.
|
|
52
|
+
* String bodies are treated as JSON and field-redacted; every other
|
|
53
|
+
* `BodyInit` shape passes through (those are summarized, not printed
|
|
54
|
+
* verbatim, by the log formatters).
|
|
55
|
+
*/
|
|
56
|
+
export declare function redactBodyForLog(body: BodyInit | null | undefined): BodyInit | null | undefined;
|
|
23
57
|
//# sourceMappingURL=logging-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging-utils.d.ts","sourceRoot":"","sources":["../../../src/plugin/logging-utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"logging-utils.d.ts","sourceRoot":"","sources":["../../../src/plugin/logging-utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAmBtE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,YAAY,EAAE,MAAM,GACnB,MAAM,CAER;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,YAAY,EAAE,MAAM,GACnB,MAAM,CAQR;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASxD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKzE;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAsBpB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAezE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAIxE;AAYD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgB7D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAChC,QAAQ,GAAG,IAAI,GAAG,SAAS,CAG7B"}
|