@cortexkit/opencode-antigravity-auth 2.2.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -89
- package/dist/cli.js +18469 -810
- package/dist/cli.js.map +4 -4
- package/dist/cli.meta.json +4079 -0
- package/dist/index.js +40914 -16441
- package/dist/index.js.map +4 -4
- package/dist/index.meta.json +6949 -0
- package/dist/server.js +50948 -0
- package/dist/server.js.map +7 -0
- package/dist/server.meta.json +7284 -0
- package/dist/src/cli.d.ts +46 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +207 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/common-auth-embedded/NOTICE.txt +21 -0
- package/dist/src/common-auth-embedded/auth-menu/accounts.d.ts +97 -0
- package/dist/src/common-auth-embedded/auth-menu/accounts.js +387 -0
- package/dist/src/common-auth-embedded/auth-menu/ansi.d.ts +26 -0
- package/dist/src/common-auth-embedded/auth-menu/ansi.js +98 -0
- package/dist/src/common-auth-embedded/auth-menu/confirm.d.ts +7 -0
- package/dist/src/common-auth-embedded/auth-menu/confirm.js +21 -0
- package/dist/src/common-auth-embedded/auth-menu/doctor.d.ts +52 -0
- package/dist/src/common-auth-embedded/auth-menu/doctor.js +81 -0
- package/dist/src/common-auth-embedded/auth-menu/index.d.ts +17 -0
- package/dist/src/common-auth-embedded/auth-menu/index.js +12 -0
- package/dist/src/common-auth-embedded/auth-menu/login.d.ts +55 -0
- package/dist/src/common-auth-embedded/auth-menu/login.js +83 -0
- package/dist/src/common-auth-embedded/auth-menu/menu.d.ts +59 -0
- package/dist/src/common-auth-embedded/auth-menu/menu.js +73 -0
- package/dist/src/common-auth-embedded/auth-menu/opencode-v1.d.ts +49 -0
- package/dist/src/common-auth-embedded/auth-menu/opencode-v1.js +47 -0
- package/dist/src/common-auth-embedded/auth-menu/select.d.ts +21 -0
- package/dist/src/common-auth-embedded/auth-menu/select.js +159 -0
- package/dist/src/common-auth-embedded/auth-menu/terminal.d.ts +43 -0
- package/dist/src/common-auth-embedded/auth-menu/terminal.js +19 -0
- package/dist/src/common-auth-embedded/claustrum/consumer.d.ts +102 -0
- package/dist/src/common-auth-embedded/claustrum/consumer.js +298 -0
- package/dist/src/common-auth-embedded/claustrum/custody.d.ts +175 -0
- package/dist/src/common-auth-embedded/claustrum/custody.js +354 -0
- package/dist/src/common-auth-embedded/claustrum/enrollment.d.ts +158 -0
- package/dist/src/common-auth-embedded/claustrum/enrollment.js +759 -0
- package/dist/src/common-auth-embedded/claustrum/errors.d.ts +16 -0
- package/dist/src/common-auth-embedded/claustrum/errors.js +8 -0
- package/dist/src/common-auth-embedded/claustrum/host-slot.d.ts +39 -0
- package/dist/src/common-auth-embedded/claustrum/host-slot.js +72 -0
- package/dist/src/common-auth-embedded/claustrum/index.d.ts +18 -0
- package/dist/src/common-auth-embedded/claustrum/index.js +22 -0
- package/dist/src/common-auth-embedded/claustrum/interlock.d.ts +27 -0
- package/dist/src/common-auth-embedded/claustrum/interlock.js +29 -0
- package/dist/src/common-auth-embedded/claustrum/roster.d.ts +208 -0
- package/dist/src/common-auth-embedded/claustrum/roster.js +536 -0
- package/dist/src/common-auth-embedded/commands/builtins.d.ts +71 -0
- package/dist/src/common-auth-embedded/commands/builtins.js +534 -0
- package/dist/src/common-auth-embedded/commands/index.d.ts +10 -0
- package/dist/src/common-auth-embedded/commands/index.js +5 -0
- package/dist/src/common-auth-embedded/commands/menu.d.ts +61 -0
- package/dist/src/common-auth-embedded/commands/menu.js +300 -0
- package/dist/src/common-auth-embedded/commands/model.d.ts +238 -0
- package/dist/src/common-auth-embedded/commands/model.js +16 -0
- package/dist/src/common-auth-embedded/commands/pi.d.ts +23 -0
- package/dist/src/common-auth-embedded/commands/pi.js +206 -0
- package/dist/src/common-auth-embedded/commands/seam.d.ts +72 -0
- package/dist/src/common-auth-embedded/commands/seam.js +301 -0
- package/dist/src/common-auth-embedded/fs/atomic-write.d.ts +20 -0
- package/dist/src/common-auth-embedded/fs/atomic-write.js +80 -0
- package/dist/src/common-auth-embedded/fs/index.d.ts +7 -0
- package/dist/src/common-auth-embedded/fs/index.js +6 -0
- package/dist/src/common-auth-embedded/fs/lock-constants.d.ts +14 -0
- package/dist/src/common-auth-embedded/fs/lock-constants.js +14 -0
- package/dist/src/common-auth-embedded/fs/refresh-file-lock.d.ts +33 -0
- package/dist/src/common-auth-embedded/fs/refresh-file-lock.js +501 -0
- package/dist/src/common-auth-embedded/fs/with-lock.d.ts +33 -0
- package/dist/src/common-auth-embedded/fs/with-lock.js +48 -0
- package/dist/src/common-auth-embedded/logger/capture-sink.d.ts +14 -0
- package/dist/src/common-auth-embedded/logger/capture-sink.js +13 -0
- package/dist/src/common-auth-embedded/logger/engine.d.ts +100 -0
- package/dist/src/common-auth-embedded/logger/engine.js +246 -0
- package/dist/src/common-auth-embedded/logger/index.d.ts +6 -0
- package/dist/src/common-auth-embedded/logger/index.js +3 -0
- package/dist/src/common-auth-embedded/logger/redact.d.ts +11 -0
- package/dist/src/common-auth-embedded/logger/redact.js +83 -0
- package/dist/src/common-auth-embedded/opencode2/errors.d.ts +25 -0
- package/dist/src/common-auth-embedded/opencode2/errors.js +15 -0
- package/dist/src/common-auth-embedded/opencode2/index.d.ts +8 -0
- package/dist/src/common-auth-embedded/opencode2/index.js +4 -0
- package/dist/src/common-auth-embedded/opencode2/install.d.ts +55 -0
- package/dist/src/common-auth-embedded/opencode2/install.js +886 -0
- package/dist/src/common-auth-embedded/opencode2/integration.d.ts +112 -0
- package/dist/src/common-auth-embedded/opencode2/integration.js +143 -0
- package/dist/src/common-auth-embedded/opencode2/sse.d.ts +12 -0
- package/dist/src/common-auth-embedded/opencode2/sse.js +60 -0
- package/dist/src/common-auth-embedded/opencode2/types.d.ts +413 -0
- package/dist/src/common-auth-embedded/pi-slot/index.d.ts +3 -0
- package/dist/src/common-auth-embedded/pi-slot/index.js +2 -0
- package/dist/src/common-auth-embedded/pi-slot/lock.js +212 -0
- package/dist/src/common-auth-embedded/pi-slot/slot.d.ts +49 -0
- package/dist/src/common-auth-embedded/pi-slot/slot.js +383 -0
- package/dist/src/common-auth-embedded/quota/codec.d.ts +11 -0
- package/dist/src/common-auth-embedded/quota/codec.js +12 -0
- package/dist/src/common-auth-embedded/quota/format.d.ts +46 -0
- package/dist/src/common-auth-embedded/quota/format.js +138 -0
- package/dist/src/common-auth-embedded/quota/index.d.ts +10 -0
- package/dist/src/common-auth-embedded/quota/index.js +5 -0
- package/dist/src/common-auth-embedded/quota/map.d.ts +63 -0
- package/dist/src/common-auth-embedded/quota/map.js +105 -0
- package/dist/src/common-auth-embedded/quota/merge.d.ts +48 -0
- package/dist/src/common-auth-embedded/quota/merge.js +162 -0
- package/dist/src/common-auth-embedded/quota/projection.d.ts +64 -0
- package/dist/src/common-auth-embedded/quota/projection.js +134 -0
- package/dist/src/common-auth-embedded/routing/admission.d.ts +93 -0
- package/dist/src/common-auth-embedded/routing/admission.js +142 -0
- package/dist/src/common-auth-embedded/routing/index.d.ts +8 -0
- package/dist/src/common-auth-embedded/routing/index.js +4 -0
- package/dist/src/common-auth-embedded/routing/ordered.d.ts +47 -0
- package/dist/src/common-auth-embedded/routing/ordered.js +58 -0
- package/dist/src/common-auth-embedded/routing/pins.d.ts +22 -0
- package/dist/src/common-auth-embedded/routing/pins.js +34 -0
- package/dist/src/common-auth-embedded/routing/sticky.d.ts +158 -0
- package/dist/src/common-auth-embedded/routing/sticky.js +339 -0
- package/dist/src/common-auth-embedded/rpc/client.d.ts +3 -0
- package/dist/src/common-auth-embedded/rpc/client.js +2 -0
- package/dist/src/common-auth-embedded/rpc/index.d.ts +10 -0
- package/dist/src/common-auth-embedded/rpc/index.js +5 -0
- package/dist/src/common-auth-embedded/rpc/notifications.d.ts +73 -0
- package/dist/src/common-auth-embedded/rpc/notifications.js +100 -0
- package/dist/src/common-auth-embedded/rpc/port-file.d.ts +33 -0
- package/dist/src/common-auth-embedded/rpc/port-file.js +217 -0
- package/dist/src/common-auth-embedded/rpc/rpc-client.d.ts +30 -0
- package/dist/src/common-auth-embedded/rpc/rpc-client.js +253 -0
- package/dist/src/common-auth-embedded/rpc/rpc-server.d.ts +58 -0
- package/dist/src/common-auth-embedded/rpc/rpc-server.js +311 -0
- package/dist/src/common-auth-embedded/rpc/server-registry.d.ts +11 -0
- package/dist/src/common-auth-embedded/rpc/server-registry.js +47 -0
- package/dist/src/common-auth-embedded/source-output.json +1326 -0
- package/dist/src/common-auth-embedded/store/attribution.d.ts +28 -0
- package/dist/src/common-auth-embedded/store/attribution.js +60 -0
- package/dist/src/common-auth-embedded/store/errors.d.ts +55 -0
- package/dist/src/common-auth-embedded/store/errors.js +38 -0
- package/dist/src/common-auth-embedded/store/hooks.d.ts +12 -0
- package/dist/src/common-auth-embedded/store/hooks.js +34 -0
- package/dist/src/common-auth-embedded/store/identity.d.ts +39 -0
- package/dist/src/common-auth-embedded/store/identity.js +79 -0
- package/dist/src/common-auth-embedded/store/index.d.ts +21 -0
- package/dist/src/common-auth-embedded/store/index.js +7 -0
- package/dist/src/common-auth-embedded/store/mutate.d.ts +189 -0
- package/dist/src/common-auth-embedded/store/mutate.js +500 -0
- package/dist/src/common-auth-embedded/store/pool.d.ts +196 -0
- package/dist/src/common-auth-embedded/store/pool.js +120 -0
- package/dist/src/common-auth-embedded/store/provider-state.d.ts +131 -0
- package/dist/src/common-auth-embedded/store/provider-state.js +226 -0
- package/dist/src/common-auth-embedded/store/publication.d.ts +47 -0
- package/dist/src/common-auth-embedded/store/publication.js +304 -0
- package/dist/src/common-auth-embedded/store/pull.d.ts +36 -0
- package/dist/src/common-auth-embedded/store/pull.js +143 -0
- package/dist/src/common-auth-embedded/store/refresh-lock.d.ts +63 -0
- package/dist/src/common-auth-embedded/store/refresh-lock.js +136 -0
- package/dist/src/common-auth-embedded/store/refresh.d.ts +72 -0
- package/dist/src/common-auth-embedded/store/refresh.js +225 -0
- package/dist/src/common-auth-embedded/store/reserved.js +13 -0
- package/dist/src/common-auth-embedded/store/rows.d.ts +313 -0
- package/dist/src/common-auth-embedded/store/rows.js +1258 -0
- package/dist/src/common-auth-embedded/store/runtime.d.ts +36 -0
- package/dist/src/common-auth-embedded/store/runtime.js +68 -0
- package/dist/src/common-auth-embedded/store/schema.d.ts +443 -0
- package/dist/src/common-auth-embedded/store/schema.js +754 -0
- package/dist/src/common-auth-embedded/store/settings.d.ts +63 -0
- package/dist/src/common-auth-embedded/store/settings.js +120 -0
- package/dist/src/common-auth-embedded/store/torn.d.ts +78 -0
- package/dist/src/common-auth-embedded/store/torn.js +294 -0
- package/dist/src/common-auth-embedded/tui/index.d.ts +8 -0
- package/dist/src/common-auth-embedded/tui/index.js +21 -0
- package/dist/src/common-auth-embedded/util/any-signal.js +42 -0
- package/dist/src/constants.d.ts +1 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +4 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/ga/proxy-guard.d.ts +120 -0
- package/dist/src/ga/proxy-guard.d.ts.map +1 -0
- package/dist/src/ga/proxy-guard.js +269 -0
- package/dist/src/ga/proxy-guard.js.map +1 -0
- package/dist/src/ga/rpc/protocol.d.ts +504 -0
- package/dist/src/ga/rpc/protocol.d.ts.map +1 -0
- package/dist/src/ga/rpc/protocol.js +1278 -0
- package/dist/src/ga/rpc/protocol.js.map +1 -0
- package/dist/src/ga/server/auth.d.ts +9 -0
- package/dist/src/ga/server/auth.d.ts.map +1 -0
- package/dist/src/ga/server/auth.js +37 -0
- package/dist/src/ga/server/auth.js.map +1 -0
- package/dist/src/ga/server/index.d.ts +576 -0
- package/dist/src/ga/server/index.d.ts.map +1 -0
- package/dist/src/ga/server/index.js +1012 -0
- package/dist/src/ga/server/index.js.map +1 -0
- package/dist/src/ga/tui/host-ga.d.ts +350 -0
- package/dist/src/ga/tui/host-ga.d.ts.map +1 -0
- package/dist/src/ga/tui/host-ga.js +1242 -0
- package/dist/src/ga/tui/host-ga.js.map +1 -0
- package/dist/src/logging/provider-key-policy.d.ts +9 -0
- package/dist/src/logging/provider-key-policy.d.ts.map +1 -0
- package/dist/src/logging/provider-key-policy.js +11 -0
- package/dist/src/logging/provider-key-policy.js.map +1 -0
- package/dist/src/plugin/account-access.d.ts +130 -15
- package/dist/src/plugin/account-access.d.ts.map +1 -1
- package/dist/src/plugin/account-access.js +331 -129
- package/dist/src/plugin/account-access.js.map +1 -1
- package/dist/src/plugin/account-blocks.d.ts +102 -0
- package/dist/src/plugin/account-blocks.d.ts.map +1 -0
- package/dist/src/plugin/account-blocks.js +196 -0
- package/dist/src/plugin/account-blocks.js.map +1 -0
- package/dist/src/plugin/accounts.d.ts +85 -1
- package/dist/src/plugin/accounts.d.ts.map +1 -1
- package/dist/src/plugin/accounts.js +127 -3
- package/dist/src/plugin/accounts.js.map +1 -1
- package/dist/src/plugin/auth-loader.d.ts +69 -5
- package/dist/src/plugin/auth-loader.d.ts.map +1 -1
- package/dist/src/plugin/auth-loader.js +355 -52
- package/dist/src/plugin/auth-loader.js.map +1 -1
- package/dist/src/plugin/background-quota-refresh.d.ts +54 -8
- package/dist/src/plugin/background-quota-refresh.d.ts.map +1 -1
- package/dist/src/plugin/background-quota-refresh.js +81 -24
- package/dist/src/plugin/background-quota-refresh.js.map +1 -1
- 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 +55 -10
- package/dist/src/plugin/cache/signature-cache.d.ts.map +1 -1
- package/dist/src/plugin/cache/signature-cache.js +100 -41
- package/dist/src/plugin/cache/signature-cache.js.map +1 -1
- package/dist/src/plugin/cache.d.ts +80 -16
- package/dist/src/plugin/cache.d.ts.map +1 -1
- package/dist/src/plugin/cache.js +339 -200
- package/dist/src/plugin/cache.js.map +1 -1
- package/dist/src/plugin/catalog.d.ts +4 -18
- package/dist/src/plugin/catalog.d.ts.map +1 -1
- package/dist/src/plugin/catalog.js +11 -41
- package/dist/src/plugin/catalog.js.map +1 -1
- package/dist/src/plugin/command-apply.d.ts +58 -0
- package/dist/src/plugin/command-apply.d.ts.map +1 -0
- package/dist/src/plugin/command-apply.js +168 -0
- package/dist/src/plugin/command-apply.js.map +1 -0
- package/dist/src/plugin/command-data.d.ts +1 -0
- package/dist/src/plugin/command-data.d.ts.map +1 -1
- package/dist/src/plugin/command-data.js +2 -0
- package/dist/src/plugin/command-data.js.map +1 -1
- package/dist/src/plugin/commands.d.ts +142 -132
- package/dist/src/plugin/commands.d.ts.map +1 -1
- package/dist/src/plugin/commands.js +214 -686
- package/dist/src/plugin/commands.js.map +1 -1
- package/dist/src/plugin/config/index.d.ts +1 -1
- package/dist/src/plugin/config/index.d.ts.map +1 -1
- package/dist/src/plugin/config/index.js +1 -1
- package/dist/src/plugin/config/index.js.map +1 -1
- package/dist/src/plugin/config/loader.d.ts +37 -1
- package/dist/src/plugin/config/loader.d.ts.map +1 -1
- package/dist/src/plugin/config/loader.js +64 -9
- package/dist/src/plugin/config/loader.js.map +1 -1
- package/dist/src/plugin/config/operator-settings-schema.d.ts +2 -2
- package/dist/src/plugin/config/schema.d.ts +2 -2
- package/dist/src/plugin/config/writer.d.ts +7 -0
- package/dist/src/plugin/config/writer.d.ts.map +1 -1
- package/dist/src/plugin/config/writer.js +10 -1
- package/dist/src/plugin/config/writer.js.map +1 -1
- package/dist/src/plugin/debug.d.ts +72 -29
- package/dist/src/plugin/debug.d.ts.map +1 -1
- package/dist/src/plugin/debug.js +353 -239
- package/dist/src/plugin/debug.js.map +1 -1
- package/dist/src/plugin/fetch/retry-state.d.ts +1 -1
- package/dist/src/plugin/fetch/retry-state.d.ts.map +1 -1
- package/dist/src/plugin/fetch/retry-state.js.map +1 -1
- package/dist/src/plugin/fetch-interceptor.d.ts +66 -11
- package/dist/src/plugin/fetch-interceptor.d.ts.map +1 -1
- package/dist/src/plugin/fetch-interceptor.js +228 -1352
- package/dist/src/plugin/fetch-interceptor.js.map +1 -1
- package/dist/src/plugin/fetch-routing.d.ts +7 -2
- package/dist/src/plugin/fetch-routing.d.ts.map +1 -1
- package/dist/src/plugin/fetch-routing.js +7 -4
- package/dist/src/plugin/fetch-routing.js.map +1 -1
- package/dist/src/plugin/ga-location-services.d.ts +389 -0
- package/dist/src/plugin/ga-location-services.d.ts.map +1 -0
- package/dist/src/plugin/ga-location-services.js +1838 -0
- package/dist/src/plugin/ga-location-services.js.map +1 -0
- package/dist/src/plugin/gemini-dump.d.ts +37 -12
- package/dist/src/plugin/gemini-dump.d.ts.map +1 -1
- package/dist/src/plugin/gemini-dump.js +42 -21
- package/dist/src/plugin/gemini-dump.js.map +1 -1
- package/dist/src/plugin/google-search-tool.d.ts +2 -1
- package/dist/src/plugin/google-search-tool.d.ts.map +1 -1
- package/dist/src/plugin/google-search-tool.js +4 -1
- package/dist/src/plugin/google-search-tool.js.map +1 -1
- package/dist/src/plugin/index.d.ts.map +1 -1
- package/dist/src/plugin/index.js +505 -141
- package/dist/src/plugin/index.js.map +1 -1
- package/dist/src/plugin/killswitch.d.ts +1 -2
- package/dist/src/plugin/killswitch.d.ts.map +1 -1
- package/dist/src/plugin/lifecycle.d.ts +24 -1
- package/dist/src/plugin/lifecycle.d.ts.map +1 -1
- package/dist/src/plugin/lifecycle.js +95 -8
- package/dist/src/plugin/lifecycle.js.map +1 -1
- package/dist/src/plugin/logger.d.ts +61 -10
- package/dist/src/plugin/logger.d.ts.map +1 -1
- package/dist/src/plugin/logger.js +134 -63
- package/dist/src/plugin/logger.js.map +1 -1
- package/dist/src/plugin/neutral-types.d.ts +42 -0
- package/dist/src/plugin/neutral-types.d.ts.map +1 -0
- package/dist/src/plugin/neutral-types.js +12 -0
- package/dist/src/plugin/neutral-types.js.map +1 -0
- package/dist/src/plugin/oauth-methods.d.ts +2 -1
- package/dist/src/plugin/oauth-methods.d.ts.map +1 -1
- package/dist/src/plugin/oauth-methods.js +173 -88
- package/dist/src/plugin/oauth-methods.js.map +1 -1
- package/dist/src/plugin/operator-settings.d.ts +34 -0
- package/dist/src/plugin/operator-settings.d.ts.map +1 -1
- package/dist/src/plugin/operator-settings.js +105 -2
- package/dist/src/plugin/operator-settings.js.map +1 -1
- package/dist/src/plugin/persist-account-pool.d.ts +63 -2
- package/dist/src/plugin/persist-account-pool.d.ts.map +1 -1
- package/dist/src/plugin/persist-account-pool.js +125 -2
- package/dist/src/plugin/persist-account-pool.js.map +1 -1
- package/dist/src/plugin/quota.d.ts +335 -35
- package/dist/src/plugin/quota.d.ts.map +1 -1
- package/dist/src/plugin/quota.js +825 -95
- package/dist/src/plugin/quota.js.map +1 -1
- package/dist/src/plugin/refresh-queue.d.ts +35 -5
- package/dist/src/plugin/refresh-queue.d.ts.map +1 -1
- package/dist/src/plugin/refresh-queue.js +50 -16
- package/dist/src/plugin/refresh-queue.js.map +1 -1
- package/dist/src/plugin/request-helpers.d.ts +30 -5
- package/dist/src/plugin/request-helpers.d.ts.map +1 -1
- package/dist/src/plugin/request-helpers.js +82 -17
- package/dist/src/plugin/request-helpers.js.map +1 -1
- package/dist/src/plugin/request.d.ts +63 -15
- package/dist/src/plugin/request.d.ts.map +1 -1
- package/dist/src/plugin/request.js +190 -60
- package/dist/src/plugin/request.js.map +1 -1
- package/dist/src/plugin/session-context.d.ts.map +1 -1
- package/dist/src/plugin/session-context.js +5 -2
- package/dist/src/plugin/session-context.js.map +1 -1
- package/dist/src/plugin/shared/local-grant.d.ts +26 -0
- package/dist/src/plugin/shared/local-grant.d.ts.map +1 -0
- package/dist/src/plugin/shared/local-grant.js +19 -0
- package/dist/src/plugin/shared/local-grant.js.map +1 -0
- package/dist/src/plugin/shared/request-cancellation.d.ts +12 -0
- package/dist/src/plugin/shared/request-cancellation.d.ts.map +1 -0
- package/dist/src/plugin/shared/request-cancellation.js +118 -0
- package/dist/src/plugin/shared/request-cancellation.js.map +1 -0
- package/dist/src/plugin/shared/request-services.d.ts +375 -0
- package/dist/src/plugin/shared/request-services.d.ts.map +1 -0
- package/dist/src/plugin/shared/request-services.js +1743 -0
- package/dist/src/plugin/shared/request-services.js.map +1 -0
- package/dist/src/plugin/shared/runtime.d.ts +217 -0
- package/dist/src/plugin/shared/runtime.d.ts.map +1 -0
- package/dist/src/plugin/shared/runtime.js +345 -0
- package/dist/src/plugin/shared/runtime.js.map +1 -0
- package/dist/src/plugin/shared/source-sidebar.d.ts +15 -0
- package/dist/src/plugin/shared/source-sidebar.d.ts.map +1 -0
- package/dist/src/plugin/shared/source-sidebar.js +41 -0
- package/dist/src/plugin/shared/source-sidebar.js.map +1 -0
- package/dist/src/plugin/shared/vault-menu.d.ts +5 -0
- package/dist/src/plugin/shared/vault-menu.d.ts.map +1 -0
- package/dist/src/plugin/shared/vault-menu.js +49 -0
- package/dist/src/plugin/shared/vault-menu.js.map +1 -0
- package/dist/src/plugin/shared/vault-request-credentials.d.ts +168 -0
- package/dist/src/plugin/shared/vault-request-credentials.d.ts.map +1 -0
- package/dist/src/plugin/shared/vault-request-credentials.js +485 -0
- package/dist/src/plugin/shared/vault-request-credentials.js.map +1 -0
- package/dist/src/plugin/storage.d.ts +127 -1
- package/dist/src/plugin/storage.d.ts.map +1 -1
- package/dist/src/plugin/storage.js +188 -3
- package/dist/src/plugin/storage.js.map +1 -1
- package/dist/src/plugin/token.d.ts +23 -1
- package/dist/src/plugin/token.d.ts.map +1 -1
- package/dist/src/plugin/token.js +117 -58
- package/dist/src/plugin/token.js.map +1 -1
- package/dist/src/plugin/ui/quota-status.d.ts +1 -10
- package/dist/src/plugin/ui/quota-status.d.ts.map +1 -1
- package/dist/src/plugin/ui/quota-status.js +6 -42
- package/dist/src/plugin/ui/quota-status.js.map +1 -1
- package/dist/src/plugin/vault-activation.d.ts +11 -0
- package/dist/src/plugin/vault-activation.d.ts.map +1 -0
- package/dist/src/plugin/vault-activation.js +53 -0
- package/dist/src/plugin/vault-activation.js.map +1 -0
- package/dist/src/plugin/vault-custody.d.ts +131 -0
- package/dist/src/plugin/vault-custody.d.ts.map +1 -0
- package/dist/src/plugin/vault-custody.js +381 -0
- package/dist/src/plugin/vault-custody.js.map +1 -0
- package/dist/src/quota-presentation.d.ts +18 -0
- package/dist/src/quota-presentation.d.ts.map +1 -0
- package/dist/src/quota-presentation.js +58 -0
- package/dist/src/quota-presentation.js.map +1 -0
- package/dist/src/rpc/notifications.d.ts +2 -2
- package/dist/src/rpc/notifications.d.ts.map +1 -1
- package/dist/src/rpc/notifications.js +1 -1
- package/dist/src/rpc/notifications.js.map +1 -1
- package/dist/src/rpc/port-file.d.ts +2 -12
- package/dist/src/rpc/port-file.d.ts.map +1 -1
- package/dist/src/rpc/port-file.js +5 -107
- package/dist/src/rpc/port-file.js.map +1 -1
- package/dist/src/rpc/protocol.d.ts +47 -16
- package/dist/src/rpc/protocol.d.ts.map +1 -1
- package/dist/src/rpc/rpc-client.d.ts +27 -3
- package/dist/src/rpc/rpc-client.d.ts.map +1 -1
- package/dist/src/rpc/rpc-client.js +55 -45
- package/dist/src/rpc/rpc-client.js.map +1 -1
- package/dist/src/rpc/rpc-server.d.ts +13 -2
- package/dist/src/rpc/rpc-server.d.ts.map +1 -1
- package/dist/src/rpc/rpc-server.js +38 -212
- package/dist/src/rpc/rpc-server.js.map +1 -1
- package/dist/src/server.d.ts +30 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +29 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/sidebar-projection.d.ts +102 -0
- package/dist/src/sidebar-projection.d.ts.map +1 -0
- package/dist/src/sidebar-projection.js +146 -0
- package/dist/src/sidebar-projection.js.map +1 -0
- package/dist/src/sidebar-state.d.ts +13 -5
- package/dist/src/sidebar-state.d.ts.map +1 -1
- package/dist/src/sidebar-state.js +49 -16
- package/dist/src/sidebar-state.js.map +1 -1
- package/dist/src/tui/command-dialogs.d.ts +58 -52
- package/dist/src/tui/command-dialogs.d.ts.map +1 -1
- package/dist/src/tui/command-dialogs.js +379 -571
- package/dist/src/tui/command-dialogs.js.map +1 -1
- package/dist/src/tui/file-logger.d.ts +2 -3
- package/dist/src/tui/file-logger.d.ts.map +1 -1
- package/dist/src/tui/file-logger.js +21 -7
- package/dist/src/tui/file-logger.js.map +1 -1
- package/dist/src/tui/host-api.d.ts +196 -0
- package/dist/src/tui/host-api.d.ts.map +1 -0
- package/dist/src/tui/host-api.js +357 -0
- package/dist/src/tui/host-api.js.map +1 -0
- package/dist/src/tui/host-v1.d.ts +60 -0
- package/dist/src/tui/host-v1.d.ts.map +1 -0
- package/dist/src/tui/host-v1.js +147 -0
- package/dist/src/tui/host-v1.js.map +1 -0
- package/dist/src/tui/vault-setup.d.ts +98 -0
- package/dist/src/tui/vault-setup.d.ts.map +1 -0
- package/dist/src/tui/vault-setup.js +198 -0
- package/dist/src/tui/vault-setup.js.map +1 -0
- package/dist/src/tui.d.ts +4 -11
- package/dist/src/tui.d.ts.map +1 -1
- package/dist/src/tui.js +33 -75
- package/dist/src/tui.js.map +1 -1
- package/dist/tui-build-map.json +380 -0
- package/dist/tui-ga-build-map.json +187 -0
- package/dist/types/src/antigravity/oauth.d.ts +2 -0
- package/dist/types/src/antigravity/oauth.d.ts.map +1 -0
- package/dist/types/src/cli.d.ts +66 -0
- package/dist/types/src/cli.d.ts.map +1 -0
- package/dist/types/src/common-auth-embedded/commands/builtins.d.ts +71 -0
- package/dist/types/src/common-auth-embedded/commands/index.d.ts +10 -0
- package/dist/types/src/common-auth-embedded/commands/menu.d.ts +61 -0
- package/dist/types/src/common-auth-embedded/commands/model.d.ts +238 -0
- package/dist/types/src/common-auth-embedded/commands/pi.d.ts +23 -0
- package/dist/types/src/common-auth-embedded/commands/seam.d.ts +72 -0
- package/dist/types/src/common-auth-embedded/fs/refresh-file-lock.d.ts +33 -0
- package/dist/types/src/common-auth-embedded/logger/capture-sink.d.ts +14 -0
- package/dist/types/src/common-auth-embedded/logger/engine.d.ts +100 -0
- package/dist/types/src/common-auth-embedded/logger/index.d.ts +6 -0
- package/dist/types/src/common-auth-embedded/logger/redact.d.ts +11 -0
- package/dist/types/src/common-auth-embedded/quota/codec.d.ts +11 -0
- package/dist/types/src/common-auth-embedded/quota/format.d.ts +46 -0
- package/dist/types/src/common-auth-embedded/quota/index.d.ts +10 -0
- package/dist/types/src/common-auth-embedded/quota/map.d.ts +63 -0
- package/dist/types/src/common-auth-embedded/quota/merge.d.ts +48 -0
- package/dist/types/src/common-auth-embedded/quota/projection.d.ts +64 -0
- package/dist/types/src/common-auth-embedded/store/attribution.d.ts +28 -0
- package/dist/types/src/common-auth-embedded/store/errors.d.ts +55 -0
- package/dist/types/src/common-auth-embedded/store/hooks.d.ts +12 -0
- package/dist/types/src/common-auth-embedded/store/identity.d.ts +39 -0
- package/dist/types/src/common-auth-embedded/store/index.d.ts +21 -0
- package/dist/types/src/common-auth-embedded/store/mutate.d.ts +189 -0
- package/dist/types/src/common-auth-embedded/store/pool.d.ts +196 -0
- package/dist/types/src/common-auth-embedded/store/provider-state.d.ts +131 -0
- package/dist/types/src/common-auth-embedded/store/publication.d.ts +47 -0
- package/dist/types/src/common-auth-embedded/store/pull.d.ts +36 -0
- package/dist/types/src/common-auth-embedded/store/refresh-lock.d.ts +63 -0
- package/dist/types/src/common-auth-embedded/store/refresh.d.ts +72 -0
- package/dist/types/src/common-auth-embedded/store/rows.d.ts +313 -0
- package/dist/types/src/common-auth-embedded/store/runtime.d.ts +36 -0
- package/dist/types/src/common-auth-embedded/store/schema.d.ts +443 -0
- package/dist/types/src/common-auth-embedded/store/settings.d.ts +63 -0
- package/dist/types/src/common-auth-embedded/store/torn.d.ts +78 -0
- package/dist/types/src/constants.d.ts +3 -0
- package/dist/types/src/constants.d.ts.map +1 -0
- package/dist/types/src/ga/proxy-guard.d.ts +120 -0
- package/dist/types/src/ga/proxy-guard.d.ts.map +1 -0
- package/dist/types/src/ga/rpc/protocol.d.ts +504 -0
- package/dist/types/src/ga/rpc/protocol.d.ts.map +1 -0
- package/dist/types/src/ga/server/auth.d.ts +9 -0
- package/dist/types/src/ga/server/auth.d.ts.map +1 -0
- package/dist/types/src/ga/server/index.d.ts +576 -0
- package/dist/types/src/ga/server/index.d.ts.map +1 -0
- package/dist/types/src/hooks/auto-update-checker/cache.d.ts +3 -0
- package/dist/types/src/hooks/auto-update-checker/cache.d.ts.map +1 -0
- package/dist/types/src/hooks/auto-update-checker/checker.d.ts +16 -0
- package/dist/types/src/hooks/auto-update-checker/checker.d.ts.map +1 -0
- package/dist/types/src/hooks/auto-update-checker/constants.d.ts +9 -0
- package/dist/types/src/hooks/auto-update-checker/constants.d.ts.map +1 -0
- package/dist/types/src/hooks/auto-update-checker/index.d.ts +34 -0
- package/dist/types/src/hooks/auto-update-checker/index.d.ts.map +1 -0
- package/dist/types/src/hooks/auto-update-checker/logging.d.ts +3 -0
- package/dist/types/src/hooks/auto-update-checker/logging.d.ts.map +1 -0
- package/dist/types/src/hooks/auto-update-checker/types.d.ts +25 -0
- package/dist/types/src/hooks/auto-update-checker/types.d.ts.map +1 -0
- package/dist/types/src/logging/provider-key-policy.d.ts +9 -0
- package/dist/types/src/logging/provider-key-policy.d.ts.map +1 -0
- package/dist/types/src/plugin/account-access.d.ts +214 -0
- package/dist/types/src/plugin/account-access.d.ts.map +1 -0
- package/dist/types/src/plugin/account-blocks.d.ts +102 -0
- package/dist/types/src/plugin/account-blocks.d.ts.map +1 -0
- package/dist/types/src/plugin/account-command-oauth.d.ts +34 -0
- package/dist/types/src/plugin/account-command-oauth.d.ts.map +1 -0
- package/dist/types/src/plugin/accounts.d.ts +94 -0
- package/dist/types/src/plugin/accounts.d.ts.map +1 -0
- package/dist/types/src/plugin/agy-request-metadata.d.ts +2 -0
- package/dist/types/src/plugin/agy-request-metadata.d.ts.map +1 -0
- package/dist/types/src/plugin/agy-transport.d.ts +2 -0
- package/dist/types/src/plugin/agy-transport.d.ts.map +1 -0
- package/dist/types/src/plugin/auth-doctor.d.ts +30 -0
- package/dist/types/src/plugin/auth-doctor.d.ts.map +1 -0
- package/dist/types/src/plugin/auth-drift.d.ts +13 -0
- package/dist/types/src/plugin/auth-drift.d.ts.map +1 -0
- package/dist/types/src/plugin/auth-loader.d.ts +114 -0
- package/dist/types/src/plugin/auth-loader.d.ts.map +1 -0
- package/dist/types/src/plugin/auth.d.ts +2 -0
- package/dist/types/src/plugin/auth.d.ts.map +1 -0
- package/dist/types/src/plugin/background-quota-refresh.d.ts +192 -0
- package/dist/types/src/plugin/background-quota-refresh.d.ts.map +1 -0
- package/dist/types/src/plugin/cache/signature-cache.d.ts +156 -0
- package/dist/types/src/plugin/cache/signature-cache.d.ts.map +1 -0
- package/dist/types/src/plugin/cache.d.ts +109 -0
- package/dist/types/src/plugin/cache.d.ts.map +1 -0
- package/dist/types/src/plugin/catalog.d.ts +9 -0
- package/dist/types/src/plugin/catalog.d.ts.map +1 -0
- package/dist/types/src/plugin/cli.d.ts +44 -0
- package/dist/types/src/plugin/cli.d.ts.map +1 -0
- package/dist/types/src/plugin/command-apply.d.ts +58 -0
- package/dist/types/src/plugin/command-apply.d.ts.map +1 -0
- package/dist/types/src/plugin/command-data.d.ts +330 -0
- package/dist/types/src/plugin/command-data.d.ts.map +1 -0
- package/dist/types/src/plugin/commands.d.ts +164 -0
- package/dist/types/src/plugin/commands.d.ts.map +1 -0
- package/dist/types/src/plugin/config/index.d.ts +16 -0
- package/dist/types/src/plugin/config/index.d.ts.map +1 -0
- package/dist/types/src/plugin/config/loader.d.ts +72 -0
- package/dist/types/src/plugin/config/loader.d.ts.map +1 -0
- package/dist/types/src/plugin/config/models.d.ts +3 -0
- package/dist/types/src/plugin/config/models.d.ts.map +1 -0
- package/dist/types/src/plugin/config/operator-settings-schema.d.ts +29 -0
- package/dist/types/src/plugin/config/operator-settings-schema.d.ts.map +1 -0
- package/dist/types/src/plugin/config/schema.d.ts +162 -0
- package/dist/types/src/plugin/config/schema.d.ts.map +1 -0
- package/dist/types/src/plugin/config/updater.d.ts +55 -0
- package/dist/types/src/plugin/config/updater.d.ts.map +1 -0
- package/dist/types/src/plugin/config/writer.d.ts +41 -0
- package/dist/types/src/plugin/config/writer.d.ts.map +1 -0
- package/dist/types/src/plugin/core/streaming/index.d.ts +3 -0
- package/dist/types/src/plugin/core/streaming/index.d.ts.map +1 -0
- package/dist/types/src/plugin/core/streaming/transformer.d.ts +12 -0
- package/dist/types/src/plugin/core/streaming/transformer.d.ts.map +1 -0
- package/dist/types/src/plugin/core/streaming/types.d.ts +34 -0
- package/dist/types/src/plugin/core/streaming/types.d.ts.map +1 -0
- package/dist/types/src/plugin/debug.d.ts +144 -0
- package/dist/types/src/plugin/debug.d.ts.map +1 -0
- package/dist/types/src/plugin/dependencies.d.ts +129 -0
- package/dist/types/src/plugin/dependencies.d.ts.map +1 -0
- package/dist/types/src/plugin/errors.d.ts +55 -0
- package/dist/types/src/plugin/errors.d.ts.map +1 -0
- package/dist/types/src/plugin/event-handler.d.ts +53 -0
- package/dist/types/src/plugin/event-handler.d.ts.map +1 -0
- package/dist/types/src/plugin/fetch/retry-state.d.ts +61 -0
- package/dist/types/src/plugin/fetch/retry-state.d.ts.map +1 -0
- package/dist/types/src/plugin/fetch/warmup.d.ts +30 -0
- package/dist/types/src/plugin/fetch/warmup.d.ts.map +1 -0
- package/dist/types/src/plugin/fetch-interceptor.d.ts +114 -0
- package/dist/types/src/plugin/fetch-interceptor.d.ts.map +1 -0
- package/dist/types/src/plugin/fetch-routing.d.ts +31 -0
- package/dist/types/src/plugin/fetch-routing.d.ts.map +1 -0
- package/dist/types/src/plugin/fingerprint.d.ts +2 -0
- package/dist/types/src/plugin/fingerprint.d.ts.map +1 -0
- package/dist/types/src/plugin/ga-location-services.d.ts +389 -0
- package/dist/types/src/plugin/ga-location-services.d.ts.map +1 -0
- package/dist/types/src/plugin/gemini-dump.d.ts +72 -0
- package/dist/types/src/plugin/gemini-dump.d.ts.map +1 -0
- package/dist/types/src/plugin/google-search-tool.d.ts +10 -0
- package/dist/types/src/plugin/google-search-tool.d.ts.map +1 -0
- package/dist/types/src/plugin/image-saver.d.ts +6 -0
- package/dist/types/src/plugin/image-saver.d.ts.map +1 -0
- package/dist/types/src/plugin/index.d.ts +30 -0
- package/dist/types/src/plugin/index.d.ts.map +1 -0
- package/dist/types/src/plugin/killswitch.d.ts +93 -0
- package/dist/types/src/plugin/killswitch.d.ts.map +1 -0
- package/dist/types/src/plugin/lifecycle.d.ts +63 -0
- package/dist/types/src/plugin/lifecycle.d.ts.map +1 -0
- package/dist/types/src/plugin/logger.d.ts +83 -0
- package/dist/types/src/plugin/logger.d.ts.map +1 -0
- package/dist/types/src/plugin/logging-utils.d.ts +57 -0
- package/dist/types/src/plugin/logging-utils.d.ts.map +1 -0
- package/dist/types/src/plugin/model-registry.d.ts +2 -0
- package/dist/types/src/plugin/model-registry.d.ts.map +1 -0
- package/dist/types/src/plugin/neutral-types.d.ts +42 -0
- package/dist/types/src/plugin/neutral-types.d.ts.map +1 -0
- package/dist/types/src/plugin/oauth-login.d.ts +22 -0
- package/dist/types/src/plugin/oauth-login.d.ts.map +1 -0
- package/dist/types/src/plugin/oauth-methods.d.ts +43 -0
- package/dist/types/src/plugin/oauth-methods.d.ts.map +1 -0
- package/dist/types/src/plugin/operator-settings.d.ts +74 -0
- package/dist/types/src/plugin/operator-settings.d.ts.map +1 -0
- package/dist/types/src/plugin/persist-account-pool.d.ts +98 -0
- package/dist/types/src/plugin/persist-account-pool.d.ts.map +1 -0
- package/dist/types/src/plugin/project.d.ts +2 -0
- package/dist/types/src/plugin/project.d.ts.map +1 -0
- package/dist/types/src/plugin/prompt-context.d.ts +18 -0
- package/dist/types/src/plugin/prompt-context.d.ts.map +1 -0
- package/dist/types/src/plugin/quota.d.ts +441 -0
- package/dist/types/src/plugin/quota.d.ts.map +1 -0
- package/dist/types/src/plugin/recovery/constants.d.ts +22 -0
- package/dist/types/src/plugin/recovery/constants.d.ts.map +1 -0
- package/dist/types/src/plugin/recovery/storage.d.ts +24 -0
- package/dist/types/src/plugin/recovery/storage.d.ts.map +1 -0
- package/dist/types/src/plugin/recovery/types.d.ts +116 -0
- package/dist/types/src/plugin/recovery/types.d.ts.map +1 -0
- package/dist/types/src/plugin/recovery.d.ts +61 -0
- package/dist/types/src/plugin/recovery.d.ts.map +1 -0
- package/dist/types/src/plugin/refresh-queue.d.ts +133 -0
- package/dist/types/src/plugin/refresh-queue.d.ts.map +1 -0
- package/dist/types/src/plugin/request-helpers.d.ts +304 -0
- package/dist/types/src/plugin/request-helpers.d.ts.map +1 -0
- package/dist/types/src/plugin/request.d.ts +161 -0
- package/dist/types/src/plugin/request.d.ts.map +1 -0
- package/dist/types/src/plugin/rotation.d.ts +2 -0
- package/dist/types/src/plugin/rotation.d.ts.map +1 -0
- package/dist/types/src/plugin/search.d.ts +25 -0
- package/dist/types/src/plugin/search.d.ts.map +1 -0
- package/dist/types/src/plugin/server.d.ts +23 -0
- package/dist/types/src/plugin/server.d.ts.map +1 -0
- package/dist/types/src/plugin/session-context.d.ts +22 -0
- package/dist/types/src/plugin/session-context.d.ts.map +1 -0
- package/dist/types/src/plugin/shared/local-grant.d.ts +26 -0
- package/dist/types/src/plugin/shared/local-grant.d.ts.map +1 -0
- package/dist/types/src/plugin/shared/request-cancellation.d.ts +12 -0
- package/dist/types/src/plugin/shared/request-cancellation.d.ts.map +1 -0
- package/dist/types/src/plugin/shared/request-services.d.ts +375 -0
- package/dist/types/src/plugin/shared/request-services.d.ts.map +1 -0
- package/dist/types/src/plugin/shared/runtime.d.ts +217 -0
- package/dist/types/src/plugin/shared/runtime.d.ts.map +1 -0
- package/dist/types/src/plugin/shared/source-sidebar.d.ts +15 -0
- package/dist/types/src/plugin/shared/source-sidebar.d.ts.map +1 -0
- package/dist/types/src/plugin/shared/vault-menu.d.ts +5 -0
- package/dist/types/src/plugin/shared/vault-menu.d.ts.map +1 -0
- package/dist/types/src/plugin/shared/vault-request-credentials.d.ts +168 -0
- package/dist/types/src/plugin/shared/vault-request-credentials.d.ts.map +1 -0
- package/dist/types/src/plugin/storage.d.ts +221 -0
- package/dist/types/src/plugin/storage.d.ts.map +1 -0
- package/dist/types/src/plugin/stores/signature-store.d.ts +5 -0
- package/dist/types/src/plugin/stores/signature-store.d.ts.map +1 -0
- package/dist/types/src/plugin/thinking-recovery.d.ts +90 -0
- package/dist/types/src/plugin/thinking-recovery.d.ts.map +1 -0
- package/dist/types/src/plugin/token.d.ts +41 -0
- package/dist/types/src/plugin/token.d.ts.map +1 -0
- package/dist/types/src/plugin/transform/cross-model-sanitizer.d.ts +2 -0
- package/dist/types/src/plugin/transform/cross-model-sanitizer.d.ts.map +1 -0
- package/dist/types/src/plugin/transform/index.d.ts +2 -0
- package/dist/types/src/plugin/transform/index.d.ts.map +1 -0
- package/dist/types/src/plugin/transform/model-resolver.d.ts +2 -0
- package/dist/types/src/plugin/transform/model-resolver.d.ts.map +1 -0
- package/dist/types/src/plugin/transform/types.d.ts +2 -0
- package/dist/types/src/plugin/transform/types.d.ts.map +1 -0
- package/dist/types/src/plugin/types.d.ts +36 -0
- package/dist/types/src/plugin/types.d.ts.map +1 -0
- package/dist/types/src/plugin/ui/ansi.d.ts +32 -0
- package/dist/types/src/plugin/ui/ansi.d.ts.map +1 -0
- package/dist/types/src/plugin/ui/auth-menu.d.ts +59 -0
- package/dist/types/src/plugin/ui/auth-menu.d.ts.map +1 -0
- package/dist/types/src/plugin/ui/confirm.d.ts +2 -0
- package/dist/types/src/plugin/ui/confirm.d.ts.map +1 -0
- package/dist/types/src/plugin/ui/quota-status.d.ts +73 -0
- package/dist/types/src/plugin/ui/quota-status.d.ts.map +1 -0
- package/dist/types/src/plugin/ui/select.d.ts +23 -0
- package/dist/types/src/plugin/ui/select.d.ts.map +1 -0
- package/dist/types/src/plugin/vault-activation.d.ts +11 -0
- package/dist/types/src/plugin/vault-activation.d.ts.map +1 -0
- package/dist/types/src/plugin/vault-custody.d.ts +131 -0
- package/dist/types/src/plugin/vault-custody.d.ts.map +1 -0
- package/dist/types/src/plugin/version.d.ts +2 -0
- package/dist/types/src/plugin/version.d.ts.map +1 -0
- package/dist/types/src/quota-presentation.d.ts +18 -0
- package/dist/types/src/quota-presentation.d.ts.map +1 -0
- package/dist/types/src/rpc/notifications.d.ts +6 -0
- package/dist/types/src/rpc/notifications.d.ts.map +1 -0
- package/dist/types/src/rpc/protocol.d.ts +53 -0
- package/dist/types/src/rpc/protocol.d.ts.map +1 -0
- package/dist/types/src/rpc/rpc-dir.d.ts +4 -0
- package/dist/types/src/rpc/rpc-dir.d.ts.map +1 -0
- package/dist/types/src/rpc/rpc-server.d.ts +24 -0
- package/dist/types/src/rpc/rpc-server.d.ts.map +1 -0
- package/dist/types/src/server.d.ts +30 -0
- package/dist/types/src/server.d.ts.map +1 -0
- package/dist/types/src/sidebar-state.d.ts +365 -0
- package/dist/types/src/sidebar-state.d.ts.map +1 -0
- package/dist/types/src/tui/host-api.d.ts +196 -0
- package/dist/types/src/tui/host-api.d.ts.map +1 -0
- package/package.json +45 -18
- package/server.js +6 -0
- package/src/common-auth-embedded/NOTICE.txt +21 -0
- package/src/common-auth-embedded/auth-menu/accounts.d.ts +97 -0
- package/src/common-auth-embedded/auth-menu/accounts.js +387 -0
- package/src/common-auth-embedded/auth-menu/ansi.d.ts +26 -0
- package/src/common-auth-embedded/auth-menu/ansi.js +98 -0
- package/src/common-auth-embedded/auth-menu/confirm.d.ts +7 -0
- package/src/common-auth-embedded/auth-menu/confirm.js +21 -0
- package/src/common-auth-embedded/auth-menu/doctor.d.ts +52 -0
- package/src/common-auth-embedded/auth-menu/doctor.js +81 -0
- package/src/common-auth-embedded/auth-menu/index.d.ts +17 -0
- package/src/common-auth-embedded/auth-menu/index.js +12 -0
- package/src/common-auth-embedded/auth-menu/login.d.ts +55 -0
- package/src/common-auth-embedded/auth-menu/login.js +83 -0
- package/src/common-auth-embedded/auth-menu/menu.d.ts +59 -0
- package/src/common-auth-embedded/auth-menu/menu.js +73 -0
- package/src/common-auth-embedded/auth-menu/opencode-v1.d.ts +49 -0
- package/src/common-auth-embedded/auth-menu/opencode-v1.js +47 -0
- package/src/common-auth-embedded/auth-menu/select.d.ts +21 -0
- package/src/common-auth-embedded/auth-menu/select.js +159 -0
- package/src/common-auth-embedded/auth-menu/terminal.d.ts +43 -0
- package/src/common-auth-embedded/auth-menu/terminal.js +19 -0
- package/src/common-auth-embedded/claustrum/consumer.d.ts +102 -0
- package/src/common-auth-embedded/claustrum/consumer.js +298 -0
- package/src/common-auth-embedded/claustrum/custody.d.ts +175 -0
- package/src/common-auth-embedded/claustrum/custody.js +354 -0
- package/src/common-auth-embedded/claustrum/enrollment.d.ts +158 -0
- package/src/common-auth-embedded/claustrum/enrollment.js +759 -0
- package/src/common-auth-embedded/claustrum/errors.d.ts +16 -0
- package/src/common-auth-embedded/claustrum/errors.js +8 -0
- package/src/common-auth-embedded/claustrum/host-slot.d.ts +39 -0
- package/src/common-auth-embedded/claustrum/host-slot.js +72 -0
- package/src/common-auth-embedded/claustrum/index.d.ts +18 -0
- package/src/common-auth-embedded/claustrum/index.js +22 -0
- package/src/common-auth-embedded/claustrum/interlock.d.ts +27 -0
- package/src/common-auth-embedded/claustrum/interlock.js +29 -0
- package/src/common-auth-embedded/claustrum/roster.d.ts +208 -0
- package/src/common-auth-embedded/claustrum/roster.js +536 -0
- package/src/common-auth-embedded/commands/builtins.d.ts +71 -0
- package/src/common-auth-embedded/commands/builtins.js +534 -0
- package/src/common-auth-embedded/commands/index.d.ts +10 -0
- package/src/common-auth-embedded/commands/index.js +5 -0
- package/src/common-auth-embedded/commands/menu.d.ts +61 -0
- package/src/common-auth-embedded/commands/menu.js +300 -0
- package/src/common-auth-embedded/commands/model.d.ts +238 -0
- package/src/common-auth-embedded/commands/model.js +16 -0
- package/src/common-auth-embedded/commands/pi.d.ts +23 -0
- package/src/common-auth-embedded/commands/pi.js +206 -0
- package/src/common-auth-embedded/commands/seam.d.ts +72 -0
- package/src/common-auth-embedded/commands/seam.js +301 -0
- package/src/common-auth-embedded/fs/atomic-write.d.ts +20 -0
- package/src/common-auth-embedded/fs/atomic-write.js +80 -0
- package/src/common-auth-embedded/fs/index.d.ts +7 -0
- package/src/common-auth-embedded/fs/index.js +6 -0
- package/src/common-auth-embedded/fs/lock-constants.d.ts +14 -0
- package/src/common-auth-embedded/fs/lock-constants.js +14 -0
- package/src/common-auth-embedded/fs/refresh-file-lock.d.ts +33 -0
- package/src/common-auth-embedded/fs/refresh-file-lock.js +501 -0
- package/src/common-auth-embedded/fs/with-lock.d.ts +33 -0
- package/src/common-auth-embedded/fs/with-lock.js +48 -0
- package/src/common-auth-embedded/logger/capture-sink.d.ts +14 -0
- package/src/common-auth-embedded/logger/capture-sink.js +13 -0
- package/src/common-auth-embedded/logger/engine.d.ts +100 -0
- package/src/common-auth-embedded/logger/engine.js +246 -0
- package/src/common-auth-embedded/logger/index.d.ts +6 -0
- package/src/common-auth-embedded/logger/index.js +3 -0
- package/src/common-auth-embedded/logger/redact.d.ts +11 -0
- package/src/common-auth-embedded/logger/redact.js +83 -0
- package/src/common-auth-embedded/opencode2/errors.d.ts +25 -0
- package/src/common-auth-embedded/opencode2/errors.js +15 -0
- package/src/common-auth-embedded/opencode2/index.d.ts +8 -0
- package/src/common-auth-embedded/opencode2/index.js +4 -0
- package/src/common-auth-embedded/opencode2/install.d.ts +55 -0
- package/src/common-auth-embedded/opencode2/install.js +886 -0
- package/src/common-auth-embedded/opencode2/integration.d.ts +112 -0
- package/src/common-auth-embedded/opencode2/integration.js +143 -0
- package/src/common-auth-embedded/opencode2/sse.d.ts +12 -0
- package/src/common-auth-embedded/opencode2/sse.js +60 -0
- package/src/common-auth-embedded/opencode2/types.d.ts +413 -0
- package/src/common-auth-embedded/pi-slot/index.d.ts +3 -0
- package/src/common-auth-embedded/pi-slot/index.js +2 -0
- package/src/common-auth-embedded/pi-slot/lock.js +212 -0
- package/src/common-auth-embedded/pi-slot/slot.d.ts +49 -0
- package/src/common-auth-embedded/pi-slot/slot.js +383 -0
- package/src/common-auth-embedded/quota/codec.d.ts +11 -0
- package/src/common-auth-embedded/quota/codec.js +12 -0
- package/src/common-auth-embedded/quota/format.d.ts +46 -0
- package/src/common-auth-embedded/quota/format.js +138 -0
- package/src/common-auth-embedded/quota/index.d.ts +10 -0
- package/src/common-auth-embedded/quota/index.js +5 -0
- package/src/common-auth-embedded/quota/map.d.ts +63 -0
- package/src/common-auth-embedded/quota/map.js +105 -0
- package/src/common-auth-embedded/quota/merge.d.ts +48 -0
- package/src/common-auth-embedded/quota/merge.js +162 -0
- package/src/common-auth-embedded/quota/projection.d.ts +64 -0
- package/src/common-auth-embedded/quota/projection.js +134 -0
- package/src/common-auth-embedded/routing/admission.d.ts +93 -0
- package/src/common-auth-embedded/routing/admission.js +142 -0
- package/src/common-auth-embedded/routing/index.d.ts +8 -0
- package/src/common-auth-embedded/routing/index.js +4 -0
- package/src/common-auth-embedded/routing/ordered.d.ts +47 -0
- package/src/common-auth-embedded/routing/ordered.js +58 -0
- package/src/common-auth-embedded/routing/pins.d.ts +22 -0
- package/src/common-auth-embedded/routing/pins.js +34 -0
- package/src/common-auth-embedded/routing/sticky.d.ts +158 -0
- package/src/common-auth-embedded/routing/sticky.js +339 -0
- package/src/common-auth-embedded/rpc/client.d.ts +3 -0
- package/src/common-auth-embedded/rpc/client.js +2 -0
- package/src/common-auth-embedded/rpc/index.d.ts +10 -0
- package/src/common-auth-embedded/rpc/index.js +5 -0
- package/src/common-auth-embedded/rpc/notifications.d.ts +73 -0
- package/src/common-auth-embedded/rpc/notifications.js +100 -0
- package/src/common-auth-embedded/rpc/port-file.d.ts +33 -0
- package/src/common-auth-embedded/rpc/port-file.js +217 -0
- package/src/common-auth-embedded/rpc/rpc-client.d.ts +30 -0
- package/src/common-auth-embedded/rpc/rpc-client.js +253 -0
- package/src/common-auth-embedded/rpc/rpc-server.d.ts +58 -0
- package/src/common-auth-embedded/rpc/rpc-server.js +311 -0
- package/src/common-auth-embedded/rpc/server-registry.d.ts +11 -0
- package/src/common-auth-embedded/rpc/server-registry.js +47 -0
- package/src/common-auth-embedded/source-output.json +1326 -0
- package/src/common-auth-embedded/store/attribution.d.ts +28 -0
- package/src/common-auth-embedded/store/attribution.js +60 -0
- package/src/common-auth-embedded/store/errors.d.ts +55 -0
- package/src/common-auth-embedded/store/errors.js +38 -0
- package/src/common-auth-embedded/store/hooks.d.ts +12 -0
- package/src/common-auth-embedded/store/hooks.js +34 -0
- package/src/common-auth-embedded/store/identity.d.ts +39 -0
- package/src/common-auth-embedded/store/identity.js +79 -0
- package/src/common-auth-embedded/store/index.d.ts +21 -0
- package/src/common-auth-embedded/store/index.js +7 -0
- package/src/common-auth-embedded/store/mutate.d.ts +189 -0
- package/src/common-auth-embedded/store/mutate.js +500 -0
- package/src/common-auth-embedded/store/pool.d.ts +196 -0
- package/src/common-auth-embedded/store/pool.js +120 -0
- package/src/common-auth-embedded/store/provider-state.d.ts +131 -0
- package/src/common-auth-embedded/store/provider-state.js +226 -0
- package/src/common-auth-embedded/store/publication.d.ts +47 -0
- package/src/common-auth-embedded/store/publication.js +304 -0
- package/src/common-auth-embedded/store/pull.d.ts +36 -0
- package/src/common-auth-embedded/store/pull.js +143 -0
- package/src/common-auth-embedded/store/refresh-lock.d.ts +63 -0
- package/src/common-auth-embedded/store/refresh-lock.js +136 -0
- package/src/common-auth-embedded/store/refresh.d.ts +72 -0
- package/src/common-auth-embedded/store/refresh.js +225 -0
- package/src/common-auth-embedded/store/reserved.js +13 -0
- package/src/common-auth-embedded/store/rows.d.ts +313 -0
- package/src/common-auth-embedded/store/rows.js +1258 -0
- package/src/common-auth-embedded/store/runtime.d.ts +36 -0
- package/src/common-auth-embedded/store/runtime.js +68 -0
- package/src/common-auth-embedded/store/schema.d.ts +443 -0
- package/src/common-auth-embedded/store/schema.js +754 -0
- package/src/common-auth-embedded/store/settings.d.ts +63 -0
- package/src/common-auth-embedded/store/settings.js +120 -0
- package/src/common-auth-embedded/store/torn.d.ts +78 -0
- package/src/common-auth-embedded/store/torn.js +294 -0
- package/src/common-auth-embedded/tui/index.d.ts +8 -0
- package/src/common-auth-embedded/tui/index.js +21 -0
- package/src/common-auth-embedded/util/any-signal.js +42 -0
- package/src/plugin/command-data.ts +3 -0
- package/src/rpc/port-file.ts +6 -140
- package/src/rpc/protocol.ts +59 -24
- package/src/rpc/rpc-client.ts +101 -71
- package/src/sidebar-state.ts +82 -24
- package/src/tui/command-dialogs.tsx +412 -776
- package/src/tui/entry.d.mts +17 -0
- package/src/tui/entry.mjs +34 -66
- package/src/tui/file-logger.ts +22 -7
- package/src/tui-compiled/common-auth-embedded/logger/capture-sink.js +13 -0
- package/src/tui-compiled/common-auth-embedded/logger/engine.js +246 -0
- package/src/tui-compiled/common-auth-embedded/logger/index.js +3 -0
- package/src/tui-compiled/common-auth-embedded/logger/redact.js +83 -0
- package/src/tui-compiled/common-auth-embedded/quota/codec.js +12 -0
- package/src/tui-compiled/common-auth-embedded/quota/format.js +138 -0
- package/src/tui-compiled/common-auth-embedded/quota/index.js +5 -0
- package/src/tui-compiled/common-auth-embedded/quota/map.js +105 -0
- package/src/tui-compiled/common-auth-embedded/quota/merge.js +162 -0
- package/src/tui-compiled/common-auth-embedded/quota/projection.js +134 -0
- package/src/tui-compiled/common-auth-embedded/rpc/client.js +2 -0
- package/src/tui-compiled/common-auth-embedded/rpc/port-file.js +217 -0
- package/src/tui-compiled/common-auth-embedded/rpc/rpc-client.js +253 -0
- package/src/tui-compiled/logging/provider-key-policy.js +3 -0
- package/src/tui-compiled/quota-presentation.js +42 -0
- package/src/tui-compiled/rpc/rpc-client.js +35 -0
- package/src/tui-compiled/rpc/rpc-dir.js +13 -0
- package/src/tui-compiled/selector.js +21 -0
- package/src/tui-compiled/sidebar-state.js +401 -0
- package/src/tui-compiled/tui/command-dialogs.js +424 -0
- package/src/tui-compiled/tui/file-logger.js +73 -0
- package/src/tui-compiled/tui/host-api.js +269 -0
- package/src/tui-compiled/tui/host-v1.js +228 -0
- package/src/tui-compiled/tui-preferences.js +230 -0
- package/src/tui-compiled/{tui.tsx → tui.js} +140 -231
- package/src/tui-ga-compiled/host-ga.js +1304 -0
- package/src/tui-ga-compiled/selector.js +21 -0
- package/src/tui-ga-compiled/shared/07365a7d2ccade4c-host-api.js +269 -0
- package/src/tui-ga-compiled/shared/0e19a88ff3535906-command-dialogs.js +424 -0
- package/src/tui-ga-compiled/shared/1ff34afa7c42d196-projection.js +134 -0
- package/src/tui-ga-compiled/shared/77138df80c7ae006-map.js +105 -0
- package/src/tui-ga-compiled/shared/8ae1927e5910ea81-sidebar-projection.js +112 -0
- package/src/tui-ga-compiled/shared/98cc0c186c46c42d-quota-presentation.js +42 -0
- package/src/tui-ga-compiled/shared/aef2402f8fc342f0-format.js +138 -0
- package/src/tui-ga-compiled/shared/bf17cbee28e58197-index.js +5 -0
- package/src/tui-ga-compiled/shared/ca21dc417b36dc5d-codec.js +12 -0
- package/src/tui-ga-compiled/shared/ecc214300932dfb6-merge.js +162 -0
- package/src/tui-ga-raw/host-ga.tsx +1740 -0
- package/src/tui-ga-raw/selector.js +21 -0
- package/src/tui-ga-raw/shared/07365a7d2ccade4c-host-api.js +269 -0
- package/src/tui-ga-raw/shared/0e19a88ff3535906-command-dialogs.tsx +468 -0
- package/src/tui-ga-raw/shared/1ff34afa7c42d196-projection.js +134 -0
- package/src/tui-ga-raw/shared/77138df80c7ae006-map.js +105 -0
- package/src/tui-ga-raw/shared/8ae1927e5910ea81-sidebar-projection.js +112 -0
- package/src/tui-ga-raw/shared/98cc0c186c46c42d-quota-presentation.js +42 -0
- package/src/tui-ga-raw/shared/aef2402f8fc342f0-format.js +138 -0
- package/src/tui-ga-raw/shared/bf17cbee28e58197-index.js +5 -0
- package/src/tui-ga-raw/shared/ca21dc417b36dc5d-codec.js +12 -0
- package/src/tui-ga-raw/shared/ecc214300932dfb6-merge.js +162 -0
- package/src/tui-raw/common-auth-embedded/logger/capture-sink.js +13 -0
- package/src/tui-raw/common-auth-embedded/logger/engine.js +246 -0
- package/src/tui-raw/common-auth-embedded/logger/index.js +3 -0
- package/src/tui-raw/common-auth-embedded/logger/redact.js +83 -0
- package/src/tui-raw/common-auth-embedded/quota/codec.js +12 -0
- package/src/tui-raw/common-auth-embedded/quota/format.js +138 -0
- package/src/tui-raw/common-auth-embedded/quota/index.js +5 -0
- package/src/tui-raw/common-auth-embedded/quota/map.js +105 -0
- package/src/tui-raw/common-auth-embedded/quota/merge.js +162 -0
- package/src/tui-raw/common-auth-embedded/quota/projection.js +134 -0
- package/src/tui-raw/common-auth-embedded/rpc/client.js +2 -0
- package/src/tui-raw/common-auth-embedded/rpc/port-file.js +217 -0
- package/src/tui-raw/common-auth-embedded/rpc/rpc-client.js +253 -0
- package/src/tui-raw/logging/provider-key-policy.js +3 -0
- package/src/tui-raw/quota-presentation.js +42 -0
- package/src/tui-raw/rpc/rpc-client.js +35 -0
- package/src/tui-raw/rpc/rpc-dir.js +13 -0
- package/src/tui-raw/selector.js +21 -0
- package/src/tui-raw/sidebar-state.js +401 -0
- package/src/tui-raw/tui/command-dialogs.tsx +468 -0
- package/src/tui-raw/tui/file-logger.js +73 -0
- package/src/tui-raw/tui/host-api.js +269 -0
- package/src/tui-raw/tui/host-v1.tsx +249 -0
- package/src/tui-raw/tui-preferences.js +230 -0
- package/src/tui-raw/tui.tsx +1088 -0
- package/src/tui.tsx +58 -141
- package/tui.js +6 -0
- package/src/tui-compiled/plugin/command-data.ts +0 -931
- package/src/tui-compiled/rpc/port-file.ts +0 -143
- package/src/tui-compiled/rpc/protocol.ts +0 -31
- package/src/tui-compiled/rpc/rpc-client.ts +0 -102
- package/src/tui-compiled/rpc/rpc-dir.ts +0 -24
- package/src/tui-compiled/sidebar-state.ts +0 -991
- package/src/tui-compiled/tui/command-dialogs.tsx +0 -779
- package/src/tui-compiled/tui/file-logger.ts +0 -145
- package/src/tui-compiled/tui-preferences.ts +0 -416
|
@@ -1,832 +1,468 @@
|
|
|
1
|
-
/** @jsxImportSource @opentui/solid */
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
2
|
+
* The `/antigravity` drawer: one renderer for the server's command menu,
|
|
3
|
+
* shared by the OpenCode 1 and OpenCode GA TUIs.
|
|
4
|
+
*
|
|
5
|
+
* The server builds the whole menu with the shared command menu of
|
|
6
|
+
* `@cortexkit/common-auth/commands`: Accounts, Quota, Routing, Limits
|
|
7
|
+
* (killswitch), Cache, Diagnostics (logging and wire dump) and the plugin's
|
|
8
|
+
* extras (vault setup), each with its read-only lines, its items, and its
|
|
9
|
+
* actions with their typed inputs and confirmations. This file only walks
|
|
10
|
+
* that payload through the host's dialogs and sends back which action the
|
|
11
|
+
* user chose, by the opaque section, item and action ids the server gave.
|
|
12
|
+
* It never builds an account target of its own, never looks an account up
|
|
13
|
+
* by position, and never retries a choice against a different target: an id
|
|
14
|
+
* the server no longer knows comes back as a refused apply and the user sees
|
|
15
|
+
* the server's message.
|
|
5
16
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* dialog BODY as a column of plain `<text>` nodes — non-selectable,
|
|
10
|
-
* non-searchable — and a separate `<DialogSelect>` below carries ONLY the
|
|
11
|
-
* real actions with proper `{title, description}` shapes the host renders
|
|
12
|
-
* on separate lines. The earlier implementation crammed the data rows into
|
|
13
|
-
* `DialogSelect`'s `placeholder` (which participates in type-ahead search)
|
|
14
|
-
* and concatenated label+description into a single highlighted option line;
|
|
15
|
-
* this rewrite separates data from actions the way the host expects.
|
|
17
|
+
* Every redraw after an apply uses the menu that apply returned, which the
|
|
18
|
+
* server built fresh for that answer; settings shown here are never a
|
|
19
|
+
* replay of an earlier answer.
|
|
16
20
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* longest line in any branch.
|
|
21
|
-
* - `apply(command, args, options?)` is the RPC apply path the dispatch
|
|
22
|
-
* site (the module-scoped poll in `tui.tsx`) supplies. The dispatcher
|
|
23
|
-
* forwards `options.timeoutMs` so a long-running apply (account add /
|
|
24
|
-
* refresh, future quota refresh) gets the right RPC timeout.
|
|
25
|
-
* - All `DialogSelect` options must remain VISIBLE — the host's
|
|
26
|
-
* `disabled: true` is a hard hide, so this file must never set it.
|
|
27
|
-
* Invalid actions stay visible with an explanatory description and are
|
|
28
|
-
* rejected in `onSelect`. The `no hide-property option scan` test in
|
|
29
|
-
* the verification gates pins this contract.
|
|
30
|
-
* - `onSelect` awaits the apply, toasts the result, then either clears
|
|
31
|
-
* the dialog or replaces it for multi-step flows. The dialog stack
|
|
32
|
-
* never sees a `clear()` between apply and re-render so the user
|
|
33
|
-
* always sees feedback (per the dispatcher contract).
|
|
21
|
+
* The drawer talks to the host only through `MenuUi` (dialog primitives as
|
|
22
|
+
* promises) and `MenuApply` (the transport), so the same code runs on both
|
|
23
|
+
* hosts. Nothing here writes to the terminal or picks colors.
|
|
34
24
|
*/
|
|
35
25
|
|
|
36
|
-
import
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
import {
|
|
27
|
+
type KnobValue,
|
|
28
|
+
MENU_REFUSED_TEXT,
|
|
29
|
+
type MenuAction,
|
|
30
|
+
type MenuApply,
|
|
31
|
+
type MenuApplyRequest,
|
|
32
|
+
type MenuApplyResult,
|
|
33
|
+
type MenuDialogPayload,
|
|
34
|
+
type MenuItem,
|
|
35
|
+
type MenuKnob,
|
|
36
|
+
type MenuModel,
|
|
37
|
+
type MenuSection,
|
|
38
|
+
type MenuSelectOption,
|
|
39
|
+
type MenuUi,
|
|
40
|
+
} from './host-api'
|
|
41
|
+
|
|
42
|
+
const BACK = 'back'
|
|
43
|
+
|
|
44
|
+
/** Text longer than this, or with a line break, is shown in full, not toasted. */
|
|
45
|
+
const TOAST_MAX_LENGTH = 120
|
|
39
46
|
|
|
40
47
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* `RpcRequestOptions.timeoutMs` knob the RPC client already accepts —
|
|
44
|
-
* the call site in `tui.tsx` forwards these directly into
|
|
45
|
-
* `rpcClient.apply(request, options)`.
|
|
48
|
+
* Raised by a transport when an answer fails validation, so the drawer can
|
|
49
|
+
* tell a refused answer from an unreachable server.
|
|
46
50
|
*/
|
|
47
|
-
export
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
) => Promise<{ text: string; knobs: Record<string, unknown> }>
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Mount the dialog for `payload.command` on the live TUI.
|
|
55
|
-
*
|
|
56
|
-
* The dispatcher branches on `payload.command` — each branch is
|
|
57
|
-
* self-contained: render the data body, render the host DialogSelect
|
|
58
|
-
* below it with the real actions, wire `onSelect` to await `apply(...)`,
|
|
59
|
-
* then toast the result and clear (or replace for multi-step flows).
|
|
60
|
-
* Unknown commands throw so a future command registered in
|
|
61
|
-
* `MODAL_COMMANDS` without a dispatcher branch fails loudly at the first
|
|
62
|
-
* dialog open.
|
|
63
|
-
*/
|
|
64
|
-
export function openCommandDialog(
|
|
65
|
-
api: TuiPluginApi,
|
|
66
|
-
payload: OpenDialogPayload,
|
|
67
|
-
apply: ApplyFn,
|
|
68
|
-
): void {
|
|
69
|
-
if (payload.command === 'antigravity-dump') {
|
|
70
|
-
renderDumpDialog(api, payload, apply)
|
|
71
|
-
return
|
|
72
|
-
}
|
|
73
|
-
if (payload.command === 'antigravity-logging') {
|
|
74
|
-
renderLoggingDialog(api, payload, apply)
|
|
75
|
-
return
|
|
51
|
+
export class MenuRefusedError extends Error {
|
|
52
|
+
constructor(readonly issues: readonly string[]) {
|
|
53
|
+
super(MENU_REFUSED_TEXT)
|
|
54
|
+
this.name = 'MenuRefusedError'
|
|
76
55
|
}
|
|
77
|
-
if (payload.command === 'antigravity-quota') {
|
|
78
|
-
throw new Error('antigravity-quota is rendered by the TUI quota panel')
|
|
79
|
-
}
|
|
80
|
-
if (payload.command === 'antigravity-account') {
|
|
81
|
-
renderAccountDialog(api, payload, apply)
|
|
82
|
-
return
|
|
83
|
-
}
|
|
84
|
-
if (payload.command === 'antigravity-routing') {
|
|
85
|
-
renderRoutingDialog(api, payload, apply)
|
|
86
|
-
return
|
|
87
|
-
}
|
|
88
|
-
if (payload.command === 'antigravity-killswitch') {
|
|
89
|
-
renderKillswitchDialog(api, payload, apply)
|
|
90
|
-
return
|
|
91
|
-
}
|
|
92
|
-
const exhaustiveCheck: never = payload.command
|
|
93
|
-
throw new Error(`Unknown command ${exhaustiveCheck as string}`)
|
|
94
56
|
}
|
|
95
57
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
58
|
+
function factLines(
|
|
59
|
+
facts: Readonly<Record<string, unknown>> | undefined,
|
|
60
|
+
): string[] {
|
|
61
|
+
return Object.entries(facts ?? {}).map(
|
|
62
|
+
([name, value]) =>
|
|
63
|
+
`${name}: ${typeof value === 'string' ? value : JSON.stringify(value)}`,
|
|
64
|
+
)
|
|
65
|
+
}
|
|
99
66
|
|
|
100
|
-
/**
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
):
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
67
|
+
/** One option per section, in the order the menu gives them. */
|
|
68
|
+
export function sectionListOptions(menu: MenuModel): MenuSelectOption[] {
|
|
69
|
+
return menu.sections.map((section) => ({
|
|
70
|
+
title: section.title,
|
|
71
|
+
value: `section:${section.id}`,
|
|
72
|
+
...(section.lines[0] ? { description: section.lines[0] } : {}),
|
|
73
|
+
}))
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Status text is a group header; every option navigates or runs an action. */
|
|
77
|
+
export function sectionOptions(section: MenuSection): MenuSelectOption[] {
|
|
78
|
+
const header = [
|
|
79
|
+
...section.lines,
|
|
80
|
+
...factLines(section.facts),
|
|
81
|
+
...section.items
|
|
82
|
+
.filter((item) => item.actions.length === 0)
|
|
83
|
+
.map((item) =>
|
|
84
|
+
[
|
|
85
|
+
item.group,
|
|
86
|
+
[item.label, item.status].filter(Boolean).join(' · '),
|
|
87
|
+
item.detail,
|
|
88
|
+
...factLines(item.facts),
|
|
89
|
+
]
|
|
90
|
+
.filter(Boolean)
|
|
91
|
+
.join('\n'),
|
|
92
|
+
),
|
|
93
|
+
]
|
|
94
|
+
const options: MenuSelectOption[] = [
|
|
95
|
+
...section.items
|
|
96
|
+
.filter((item) => item.actions.length > 0)
|
|
97
|
+
.map((item) => ({
|
|
98
|
+
title: item.label,
|
|
99
|
+
value: `item:${item.id}`,
|
|
100
|
+
...(item.detail ? { description: item.detail } : {}),
|
|
101
|
+
...(item.group ? { category: item.group } : {}),
|
|
102
|
+
...(item.status ? { footer: item.status } : {}),
|
|
103
|
+
})),
|
|
104
|
+
...section.actions.map((action) => ({
|
|
105
|
+
title: action.label,
|
|
106
|
+
value: `action:${action.id}`,
|
|
107
|
+
...(action.description ? { description: action.description } : {}),
|
|
108
|
+
...(action.group ? { category: action.group } : {}),
|
|
109
|
+
})),
|
|
110
|
+
{ title: 'Back', value: BACK },
|
|
111
|
+
]
|
|
112
|
+
const first = options[0]
|
|
113
|
+
if (!first || header.length === 0) return options
|
|
114
|
+
const category = [...header, first.category].filter(Boolean).join('\n')
|
|
115
|
+
let firstGroup = true
|
|
116
|
+
return options.map((option) => {
|
|
117
|
+
if (option.category !== first.category) firstGroup = false
|
|
118
|
+
return firstGroup ? { ...option, category } : option
|
|
119
|
+
})
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Item context stays in descriptions, never in rows that cannot be acted on. */
|
|
123
|
+
export function itemOptions(item: MenuItem): MenuSelectOption[] {
|
|
124
|
+
const detail = [item.detail, ...factLines(item.facts)]
|
|
125
|
+
.filter(Boolean)
|
|
126
|
+
.join(' · ')
|
|
127
|
+
return [
|
|
128
|
+
...item.actions.map((action) => ({
|
|
129
|
+
title: action.label,
|
|
130
|
+
value: `action:${action.id}`,
|
|
131
|
+
...(detail || action.description
|
|
132
|
+
? {
|
|
133
|
+
description: [detail, action.description]
|
|
134
|
+
.filter(Boolean)
|
|
135
|
+
.join(' · '),
|
|
136
|
+
}
|
|
137
|
+
: {}),
|
|
138
|
+
...(action.group ? { category: action.group } : {}),
|
|
139
|
+
})),
|
|
140
|
+
{ title: 'Back', value: BACK },
|
|
141
|
+
]
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
/**
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
145
|
+
* The value a typed `number` or `text` input sends. Empty is `null` (the
|
|
146
|
+
* action reads that as "leave unset"); a number input sends a number when
|
|
147
|
+
* the text parses as one and the text otherwise, so the server can say what
|
|
148
|
+
* is wrong with it.
|
|
147
149
|
*/
|
|
148
|
-
function
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
api.ui.dialog.replace(() => (
|
|
157
|
-
<DialogSelect
|
|
158
|
-
title='Antigravity logging'
|
|
159
|
-
current={current}
|
|
160
|
-
options={[
|
|
161
|
-
{ title: 'Error', value: 'error', description: 'Errors only.' },
|
|
162
|
-
{ title: 'Warn', value: 'warn', description: 'Warnings and errors.' },
|
|
163
|
-
{
|
|
164
|
-
title: 'Info',
|
|
165
|
-
value: 'info',
|
|
166
|
-
description: 'Default. Includes informational events.',
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
title: 'Debug',
|
|
170
|
-
value: 'debug',
|
|
171
|
-
description: 'Includes debug-level events.',
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
title: 'Trace',
|
|
175
|
-
value: 'trace',
|
|
176
|
-
description: 'Most verbose — every diagnostic event.',
|
|
177
|
-
},
|
|
178
|
-
]}
|
|
179
|
-
onSelect={(option) => {
|
|
180
|
-
void apply('antigravity-logging', String(option.value)).then(
|
|
181
|
-
(result) => {
|
|
182
|
-
api.ui.toast({ message: result.text })
|
|
183
|
-
api.ui.dialog.clear()
|
|
184
|
-
},
|
|
185
|
-
)
|
|
186
|
-
}}
|
|
187
|
-
/>
|
|
188
|
-
))
|
|
150
|
+
export function promptValue(knob: MenuKnob, raw: string): KnobValue {
|
|
151
|
+
const text = raw.trim()
|
|
152
|
+
if (text === '') return null
|
|
153
|
+
if (knob.kind === 'number') {
|
|
154
|
+
const number = Number(text)
|
|
155
|
+
return Number.isFinite(number) ? number : text
|
|
156
|
+
}
|
|
157
|
+
return raw
|
|
189
158
|
}
|
|
190
159
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
160
|
+
function knobDefault(knob: MenuKnob): string {
|
|
161
|
+
if (knob.kind === 'toggle') return knob.value ? 'on' : 'off'
|
|
162
|
+
if (knob.kind === 'text' && knob.masked) return ''
|
|
163
|
+
return knob.value === undefined ? '' : String(knob.value)
|
|
164
|
+
}
|
|
194
165
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
166
|
+
/** The first web link in a message, such as a sign-in URL. */
|
|
167
|
+
export function firstLink(text: string): string | undefined {
|
|
168
|
+
return /https?:\/\/\S+/.exec(text)?.[0]
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export interface DrawerOptions {
|
|
172
|
+
readonly ui: MenuUi
|
|
173
|
+
readonly apply: MenuApply
|
|
174
|
+
/**
|
|
175
|
+
* Copies text to the clipboard; returns false when the terminal cannot.
|
|
176
|
+
* Absent when the host offers no clipboard.
|
|
177
|
+
*/
|
|
178
|
+
readonly copy?: (text: string) => boolean
|
|
179
|
+
/** Receives drawer failures; must not write to the terminal. */
|
|
180
|
+
readonly onError?: (message: string, detail: Record<string, unknown>) => void
|
|
181
|
+
/** Opens on this section instead of the section list, when it exists. */
|
|
182
|
+
readonly startSection?: string
|
|
206
183
|
}
|
|
207
184
|
|
|
208
185
|
/**
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
* The body lists each account row as a plain `<text>` node (cache-only
|
|
212
|
-
* — no network I/O on open). The DialogSelect carries ONLY real
|
|
213
|
-
* actions: Add account… and one drill-in entry per row. Drill-in
|
|
214
|
-
* navigates to a row-level subdialog that exposes toggle / set-current
|
|
215
|
-
* / remove with a DialogConfirm gate for the destructive path.
|
|
216
|
-
*
|
|
217
|
-
* Each action calls `apply('antigravity-account', '<verb> <index>')`,
|
|
218
|
-
* which the apply path translates into a locked-storage mutation.
|
|
219
|
-
* The service returns fresh `CommandAccountRow[]`; the dialog mutates
|
|
220
|
-
* its closed-over payload and re-renders via `renderMain()` so the
|
|
221
|
-
* user never sees a clear-then-redraw gap.
|
|
186
|
+
* Opens the drawer on a payload the server pushed for `/antigravity`. The
|
|
187
|
+
* returned promise settles when the user closes the drawer.
|
|
222
188
|
*/
|
|
223
|
-
function
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
const payload: OpenDialogPayload = { ...initialPayload }
|
|
230
|
-
|
|
231
|
-
const rowsFromKnobs = (): CommandAccountRow[] => {
|
|
232
|
-
const raw = payload.knobs.accounts
|
|
233
|
-
return Array.isArray(raw) ? (raw as CommandAccountRow[]) : []
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
const runApply = async (
|
|
237
|
-
args: string,
|
|
238
|
-
options?: { timeoutMs?: number },
|
|
239
|
-
): Promise<CommandAccountRow[] | null> => {
|
|
240
|
-
const result = await apply('antigravity-account', args, options)
|
|
241
|
-
api.ui.toast({ message: result.text })
|
|
242
|
-
const next = result.knobs.accounts
|
|
243
|
-
if (Array.isArray(next)) {
|
|
244
|
-
payload.knobs = {
|
|
245
|
-
...payload.knobs,
|
|
246
|
-
accounts: next as CommandAccountRow[],
|
|
247
|
-
}
|
|
248
|
-
renderMain()
|
|
249
|
-
return next as CommandAccountRow[]
|
|
250
|
-
}
|
|
251
|
-
renderMain()
|
|
252
|
-
return null
|
|
253
|
-
}
|
|
189
|
+
export function openAntigravityMenu(
|
|
190
|
+
options: DrawerOptions,
|
|
191
|
+
payload: MenuDialogPayload,
|
|
192
|
+
): Promise<void> {
|
|
193
|
+
return new Drawer(options, payload.menu).start()
|
|
194
|
+
}
|
|
254
195
|
|
|
255
|
-
|
|
256
|
-
const accounts = knobs.accounts
|
|
257
|
-
if (!Array.isArray(accounts)) return
|
|
258
|
-
payload.knobs = {
|
|
259
|
-
...payload.knobs,
|
|
260
|
-
accounts: accounts as CommandAccountRow[],
|
|
261
|
-
}
|
|
262
|
-
}
|
|
196
|
+
const CANCEL = '\u0000cancel'
|
|
263
197
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
api.ui.dialog.setSize('xlarge')
|
|
267
|
-
api.ui.dialog.replace(() => (
|
|
268
|
-
<DialogPrompt
|
|
269
|
-
title='OAuth sign-in — label'
|
|
270
|
-
description={() => (
|
|
271
|
-
<text>A short name for this account (optional).</text>
|
|
272
|
-
)}
|
|
273
|
-
placeholder='e.g. work'
|
|
274
|
-
value=''
|
|
275
|
-
onConfirm={(value: string) => {
|
|
276
|
-
const label = value.trim()
|
|
277
|
-
const args = label
|
|
278
|
-
? `add-oauth-finish ${code} --label ${label}`
|
|
279
|
-
: `add-oauth-finish ${code}`
|
|
280
|
-
void apply('antigravity-account', args, { timeoutMs: 120_000 })
|
|
281
|
-
.then((result) => {
|
|
282
|
-
api.ui.toast({ message: result.text })
|
|
283
|
-
updateAccounts(result.knobs)
|
|
284
|
-
renderMain()
|
|
285
|
-
})
|
|
286
|
-
.catch(() => {
|
|
287
|
-
api.ui.toast({ message: 'OAuth account add failed' })
|
|
288
|
-
renderMain()
|
|
289
|
-
})
|
|
290
|
-
}}
|
|
291
|
-
onCancel={() => openOAuthCodePrompt(oauthUrl)}
|
|
292
|
-
/>
|
|
293
|
-
))
|
|
294
|
-
}
|
|
198
|
+
class Drawer {
|
|
199
|
+
private menu: MenuModel
|
|
295
200
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
title='OAuth sign-in — enter code'
|
|
302
|
-
description={() => (
|
|
303
|
-
<text>
|
|
304
|
-
After signing in, paste the full callback URL or authorization code.
|
|
305
|
-
</text>
|
|
306
|
-
)}
|
|
307
|
-
placeholder='Paste callback URL or code here'
|
|
308
|
-
value=''
|
|
309
|
-
onConfirm={(value: string) => {
|
|
310
|
-
const code = value.trim()
|
|
311
|
-
if (!code) {
|
|
312
|
-
// Empty submit must keep the user inside the flow, not
|
|
313
|
-
// silently drop them back to the account list. Surface the
|
|
314
|
-
// validation message and reopen the same prompt so the
|
|
315
|
-
// user can paste again.
|
|
316
|
-
api.ui.toast({
|
|
317
|
-
message: 'Please paste the callback URL or authorization code.',
|
|
318
|
-
})
|
|
319
|
-
openOAuthCodePrompt(oauthUrl)
|
|
320
|
-
return
|
|
321
|
-
}
|
|
322
|
-
openOAuthLabelPrompt(code, oauthUrl)
|
|
323
|
-
}}
|
|
324
|
-
onCancel={() => openOAuthUrlScreen(oauthUrl)}
|
|
325
|
-
/>
|
|
326
|
-
))
|
|
201
|
+
constructor(
|
|
202
|
+
private readonly options: DrawerOptions,
|
|
203
|
+
menu: MenuModel,
|
|
204
|
+
) {
|
|
205
|
+
this.menu = menu
|
|
327
206
|
}
|
|
328
207
|
|
|
329
|
-
|
|
330
|
-
const
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
title: 'Enter sign-in code',
|
|
343
|
-
value: 'code',
|
|
344
|
-
description:
|
|
345
|
-
'Open the URL in your browser, sign in, then paste the callback URL or code.',
|
|
346
|
-
},
|
|
347
|
-
{ title: 'Cancel', value: 'cancel' },
|
|
348
|
-
]}
|
|
349
|
-
onSelect={(option) => {
|
|
350
|
-
if (option.value === 'cancel') {
|
|
351
|
-
renderMain()
|
|
352
|
-
return
|
|
353
|
-
}
|
|
354
|
-
if (option.value === 'copy') {
|
|
355
|
-
const copied = api.renderer.copyToClipboardOSC52(oauthUrl)
|
|
356
|
-
api.ui.toast({
|
|
357
|
-
message: copied
|
|
358
|
-
? 'URL copied to clipboard'
|
|
359
|
-
: 'Copy unavailable — select the URL text above to copy',
|
|
360
|
-
})
|
|
361
|
-
openOAuthUrlScreen(oauthUrl)
|
|
362
|
-
return
|
|
363
|
-
}
|
|
364
|
-
openOAuthCodePrompt(oauthUrl)
|
|
365
|
-
}}
|
|
366
|
-
/>
|
|
367
|
-
))
|
|
208
|
+
async start(): Promise<void> {
|
|
209
|
+
const start = this.options.startSection
|
|
210
|
+
if (start && this.menu.sections.some((section) => section.id === start)) {
|
|
211
|
+
await this.section(start)
|
|
212
|
+
return
|
|
213
|
+
}
|
|
214
|
+
const only =
|
|
215
|
+
this.menu.sections.length === 1 ? this.menu.sections[0] : undefined
|
|
216
|
+
if (only) {
|
|
217
|
+
await this.section(only.id)
|
|
218
|
+
return
|
|
219
|
+
}
|
|
220
|
+
await this.list()
|
|
368
221
|
}
|
|
369
222
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
223
|
+
private async list(): Promise<void> {
|
|
224
|
+
const { ui } = this.options
|
|
225
|
+
const chosen = await ui.select({
|
|
226
|
+
title: this.menu.title,
|
|
227
|
+
options: sectionListOptions(this.menu),
|
|
373
228
|
})
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
const oauthUrl = result.knobs.oauthUrl
|
|
377
|
-
if (typeof oauthUrl === 'string' && oauthUrl.length > 0) {
|
|
378
|
-
openOAuthUrlScreen(oauthUrl)
|
|
379
|
-
return
|
|
380
|
-
}
|
|
381
|
-
api.ui.toast({ message: result.text })
|
|
382
|
-
renderMain()
|
|
383
|
-
})
|
|
384
|
-
.catch(() => {
|
|
385
|
-
api.ui.toast({ message: 'OAuth account add failed' })
|
|
386
|
-
renderMain()
|
|
387
|
-
})
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
const renderManageRow = (row: CommandAccountRow): void => {
|
|
391
|
-
const DialogSelect = api.ui.DialogSelect<string>
|
|
392
|
-
api.ui.dialog.setSize('xlarge')
|
|
393
|
-
api.ui.dialog.replace(() => (
|
|
394
|
-
<box flexDirection='column' padding={1} width='100%'>
|
|
395
|
-
<text>{row.label}</text>
|
|
396
|
-
<text>
|
|
397
|
-
{row.quota.length === 0
|
|
398
|
-
? 'no cached quota'
|
|
399
|
-
: row.quota
|
|
400
|
-
.map((q) =>
|
|
401
|
-
q.remainingPercent == null
|
|
402
|
-
? `${q.label} –%`
|
|
403
|
-
: `${q.label} ${q.remainingPercent}%`,
|
|
404
|
-
)
|
|
405
|
-
.join(', ')}
|
|
406
|
-
</text>
|
|
407
|
-
<box marginTop={1}>
|
|
408
|
-
<DialogSelect
|
|
409
|
-
title={`Manage ${row.label}`}
|
|
410
|
-
options={[
|
|
411
|
-
{
|
|
412
|
-
title: row.enabled ? 'Disable account' : 'Enable account',
|
|
413
|
-
value: `toggle ${row.index}`,
|
|
414
|
-
description: row.enabled
|
|
415
|
-
? 'Skip this account in rotation when its quota is low.'
|
|
416
|
-
: 'Include this account in rotation again.',
|
|
417
|
-
},
|
|
418
|
-
{
|
|
419
|
-
title: 'Set as current',
|
|
420
|
-
value: `current ${row.index}`,
|
|
421
|
-
description:
|
|
422
|
-
'Pin this account as the active Claude + Gemini choice.',
|
|
423
|
-
},
|
|
424
|
-
{
|
|
425
|
-
title: 'Remove account…',
|
|
426
|
-
value: `__remove_prompt__ ${row.index}`,
|
|
427
|
-
description:
|
|
428
|
-
'Permanently delete this account from the local pool.',
|
|
429
|
-
},
|
|
430
|
-
{
|
|
431
|
-
title: 'Back',
|
|
432
|
-
value: '__back__',
|
|
433
|
-
description: 'Return to the account list.',
|
|
434
|
-
},
|
|
435
|
-
]}
|
|
436
|
-
onSelect={(option) => {
|
|
437
|
-
const raw = String(option.value)
|
|
438
|
-
if (raw === '__back__') {
|
|
439
|
-
renderMain()
|
|
440
|
-
return
|
|
441
|
-
}
|
|
442
|
-
if (raw.startsWith('__remove_prompt__ ')) {
|
|
443
|
-
const targetIndex = Number.parseInt(raw.split(' ')[1] ?? '', 10)
|
|
444
|
-
promptRemove(targetIndex)
|
|
445
|
-
return
|
|
446
|
-
}
|
|
447
|
-
if (raw.startsWith('toggle ') || raw.startsWith('current ')) {
|
|
448
|
-
void runApply(raw, { timeoutMs: 2_000 }).catch(() => {
|
|
449
|
-
api.ui.toast({
|
|
450
|
-
message: `${row.label}: action failed`,
|
|
451
|
-
})
|
|
452
|
-
})
|
|
453
|
-
return
|
|
454
|
-
}
|
|
455
|
-
api.ui.toast({
|
|
456
|
-
message: `${row.label}: unknown action`,
|
|
457
|
-
})
|
|
458
|
-
}}
|
|
459
|
-
/>
|
|
460
|
-
</box>
|
|
461
|
-
</box>
|
|
462
|
-
))
|
|
229
|
+
if (chosen === undefined) return
|
|
230
|
+
await this.section(chosen.slice('section:'.length))
|
|
463
231
|
}
|
|
464
232
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
title='Remove account'
|
|
472
|
-
message={`Permanently remove ${row?.label ?? `account ${index + 1}`} from the local pool? This cannot be undone.`}
|
|
473
|
-
onConfirm={async () => {
|
|
474
|
-
try {
|
|
475
|
-
const next = await runApply(`remove ${index}`, {
|
|
476
|
-
timeoutMs: 2_000,
|
|
477
|
-
})
|
|
478
|
-
if (next === null) {
|
|
479
|
-
renderMain()
|
|
480
|
-
}
|
|
481
|
-
} catch {
|
|
482
|
-
api.ui.toast({ message: 'Account remove failed' })
|
|
483
|
-
renderMain()
|
|
484
|
-
}
|
|
485
|
-
}}
|
|
486
|
-
onCancel={() => {
|
|
487
|
-
renderMain()
|
|
488
|
-
}}
|
|
489
|
-
/>
|
|
490
|
-
))
|
|
233
|
+
private async closeOrList(): Promise<void> {
|
|
234
|
+
if (this.menu.sections.length === 1) {
|
|
235
|
+
this.options.ui.clear()
|
|
236
|
+
return
|
|
237
|
+
}
|
|
238
|
+
await this.list()
|
|
491
239
|
}
|
|
492
240
|
|
|
493
|
-
|
|
494
|
-
const
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
onSelect={(option) => {
|
|
527
|
-
const raw = String(option.value)
|
|
528
|
-
if (raw === 'back') {
|
|
529
|
-
api.ui.dialog.clear()
|
|
530
|
-
return
|
|
531
|
-
}
|
|
532
|
-
if (raw === 'add') {
|
|
533
|
-
openAddOAuthStart()
|
|
534
|
-
return
|
|
535
|
-
}
|
|
536
|
-
if (raw.startsWith('__manage__ ')) {
|
|
537
|
-
const targetIndex = Number.parseInt(raw.split(' ')[1] ?? '', 10)
|
|
538
|
-
const target = rows[targetIndex]
|
|
539
|
-
if (target) renderManageRow(target)
|
|
540
|
-
return
|
|
541
|
-
}
|
|
542
|
-
api.ui.toast({ message: 'Unknown action' })
|
|
543
|
-
}}
|
|
544
|
-
/>
|
|
545
|
-
</box>
|
|
546
|
-
</box>
|
|
547
|
-
))
|
|
241
|
+
private async section(sectionId: string): Promise<void> {
|
|
242
|
+
const { ui } = this.options
|
|
243
|
+
const section = this.menu.sections.find((entry) => entry.id === sectionId)
|
|
244
|
+
if (!section) {
|
|
245
|
+
ui.toast('That section is no longer offered.', 'warning')
|
|
246
|
+
await this.list()
|
|
247
|
+
return
|
|
248
|
+
}
|
|
249
|
+
const chosen = await ui.select({
|
|
250
|
+
title: section.title,
|
|
251
|
+
options: sectionOptions(section),
|
|
252
|
+
})
|
|
253
|
+
// Dismissing the dialog (Escape) closes the drawer; Back goes up a level.
|
|
254
|
+
if (chosen === undefined) return
|
|
255
|
+
if (chosen === BACK) {
|
|
256
|
+
await this.closeOrList()
|
|
257
|
+
return
|
|
258
|
+
}
|
|
259
|
+
if (chosen.startsWith('item:')) {
|
|
260
|
+
await this.item(section.id, chosen.slice('item:'.length))
|
|
261
|
+
return
|
|
262
|
+
}
|
|
263
|
+
if (chosen.startsWith('action:')) {
|
|
264
|
+
const action = section.actions.find(
|
|
265
|
+
(entry) => entry.id === chosen.slice('action:'.length),
|
|
266
|
+
)
|
|
267
|
+
if (action) {
|
|
268
|
+
await this.run(section, undefined, action)
|
|
269
|
+
return
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// A read-only line: redraw the same section.
|
|
273
|
+
await this.section(section.id)
|
|
548
274
|
}
|
|
549
275
|
|
|
550
|
-
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
* Re-render contract mirrors the quota/account dialogs: the
|
|
564
|
-
* closed-over `payload.knobs` is mutated with the apply response and
|
|
565
|
-
* `renderMain()` is re-invoked. The dialog stack never sees a
|
|
566
|
-
* `clear()` between apply and re-render.
|
|
567
|
-
*
|
|
568
|
-
* Error path: when apply returns a `knobs.error === true` payload
|
|
569
|
-
* (lock contention, unreadable config), the dispatcher does NOT swap
|
|
570
|
-
* the closed-over payload — the dialog stays mounted on the previous
|
|
571
|
-
* state so the user can retry or back out. The error message was
|
|
572
|
-
* already toasted by `runApply`.
|
|
573
|
-
*/
|
|
574
|
-
function renderRoutingDialog(
|
|
575
|
-
api: TuiPluginApi,
|
|
576
|
-
initialPayload: OpenDialogPayload,
|
|
577
|
-
apply: ApplyFn,
|
|
578
|
-
): void {
|
|
579
|
-
// Closed-over payload: every render reads from the latest snapshot.
|
|
580
|
-
const payload: OpenDialogPayload = { ...initialPayload }
|
|
581
|
-
|
|
582
|
-
const readRouting = (): { cliFirst: boolean; quotaFallback: boolean } => ({
|
|
583
|
-
cliFirst: payload.knobs.cli_first === true,
|
|
584
|
-
quotaFallback: payload.knobs.quota_style_fallback === true,
|
|
585
|
-
})
|
|
586
|
-
|
|
587
|
-
const runApply = async (args: string): Promise<void> => {
|
|
588
|
-
const result = await apply('antigravity-routing', args, {
|
|
589
|
-
timeoutMs: 2_000,
|
|
276
|
+
private async item(sectionId: string, itemId: string): Promise<void> {
|
|
277
|
+
const { ui } = this.options
|
|
278
|
+
const section = this.menu.sections.find((entry) => entry.id === sectionId)
|
|
279
|
+
const item = section?.items.find((entry) => entry.id === itemId)
|
|
280
|
+
if (!section || !item) {
|
|
281
|
+
ui.toast('That entry is no longer offered.', 'warning')
|
|
282
|
+
if (section) await this.section(section.id)
|
|
283
|
+
else await this.list()
|
|
284
|
+
return
|
|
285
|
+
}
|
|
286
|
+
const chosen = await ui.select({
|
|
287
|
+
title: `${section.title}: ${item.label}`,
|
|
288
|
+
options: itemOptions(item),
|
|
590
289
|
})
|
|
591
|
-
|
|
592
|
-
if (
|
|
290
|
+
if (chosen === undefined) return
|
|
291
|
+
if (chosen === BACK) {
|
|
292
|
+
await this.section(section.id)
|
|
593
293
|
return
|
|
594
294
|
}
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
295
|
+
if (chosen.startsWith('action:')) {
|
|
296
|
+
const action = item.actions.find(
|
|
297
|
+
(entry) => entry.id === chosen.slice('action:'.length),
|
|
298
|
+
)
|
|
299
|
+
if (action) {
|
|
300
|
+
await this.run(section, item, action)
|
|
301
|
+
return
|
|
302
|
+
}
|
|
599
303
|
}
|
|
600
|
-
|
|
304
|
+
await this.item(section.id, item.id)
|
|
601
305
|
}
|
|
602
306
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
onSelect={(option) => {
|
|
637
|
-
const raw = String(option.value)
|
|
638
|
-
if (raw === 'back') {
|
|
639
|
-
api.ui.dialog.clear()
|
|
640
|
-
return
|
|
641
|
-
}
|
|
642
|
-
if (
|
|
643
|
-
!raw.startsWith('cli_first=') &&
|
|
644
|
-
!raw.startsWith('quota_style_fallback=')
|
|
645
|
-
) {
|
|
646
|
-
api.ui.toast({ message: 'Unknown routing action' })
|
|
647
|
-
return
|
|
648
|
-
}
|
|
649
|
-
void runApply(raw).catch(() => {
|
|
650
|
-
api.ui.toast({ message: 'Routing update failed' })
|
|
651
|
-
renderMain()
|
|
652
|
-
})
|
|
653
|
-
}}
|
|
654
|
-
/>
|
|
655
|
-
</box>
|
|
656
|
-
</box>
|
|
657
|
-
))
|
|
307
|
+
/** Asks for one input; resolves undefined when the user backs out. */
|
|
308
|
+
private async knob(
|
|
309
|
+
title: string,
|
|
310
|
+
knob: MenuKnob,
|
|
311
|
+
): Promise<KnobValue | undefined> {
|
|
312
|
+
const { ui } = this.options
|
|
313
|
+
if (knob.kind === 'choice' || knob.kind === 'toggle') {
|
|
314
|
+
const choices: MenuSelectOption[] =
|
|
315
|
+
knob.kind === 'choice'
|
|
316
|
+
? knob.choices.map((choice) => ({
|
|
317
|
+
title: choice.label,
|
|
318
|
+
value: choice.value,
|
|
319
|
+
}))
|
|
320
|
+
: [
|
|
321
|
+
{ title: 'On', value: 'on' },
|
|
322
|
+
{ title: 'Off', value: 'off' },
|
|
323
|
+
]
|
|
324
|
+
const chosen = await ui.select({
|
|
325
|
+
title: `${title}: ${knob.label}`,
|
|
326
|
+
current: knobDefault(knob),
|
|
327
|
+
options: [...choices, { title: 'Cancel', value: CANCEL }],
|
|
328
|
+
})
|
|
329
|
+
if (chosen === undefined || chosen === CANCEL) return undefined
|
|
330
|
+
return knob.kind === 'toggle' ? chosen === 'on' : chosen
|
|
331
|
+
}
|
|
332
|
+
const placeholder = knob.kind === 'text' ? knob.placeholder : undefined
|
|
333
|
+
const raw = await ui.prompt({
|
|
334
|
+
title: `${title}: ${knob.label}`,
|
|
335
|
+
...(placeholder ? { placeholder } : {}),
|
|
336
|
+
value: knobDefault(knob),
|
|
337
|
+
})
|
|
338
|
+
if (raw === undefined) return undefined
|
|
339
|
+
return promptValue(knob, raw)
|
|
658
340
|
}
|
|
659
341
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
/**
|
|
664
|
-
* /antigravity-killswitch data-first dialog.
|
|
665
|
-
*
|
|
666
|
-
* The body lists the current persisted killswitch state (`enabled`,
|
|
667
|
-
* `minimum_remaining_percent`, and the per-account override map) as
|
|
668
|
-
* plain `<text>` nodes. The DialogSelect carries ONLY real actions:
|
|
669
|
-
* the global enabled toggle, the threshold-edit prompt, and a Back
|
|
670
|
-
* affordance. The threshold edit opens a DialogPrompt for a fresh
|
|
671
|
-
* integer in `0..100`; out-of-range input stays at the prompt without
|
|
672
|
-
* applying.
|
|
673
|
-
*
|
|
674
|
-
* Re-render contract matches the routing dialog: the closed-over
|
|
675
|
-
* `payload.knobs` is swapped to the apply response on success and
|
|
676
|
-
* `renderMain()` re-runs. Errors leave the payload untouched.
|
|
677
|
-
*/
|
|
678
|
-
function renderKillswitchDialog(
|
|
679
|
-
api: TuiPluginApi,
|
|
680
|
-
initialPayload: OpenDialogPayload,
|
|
681
|
-
apply: ApplyFn,
|
|
682
|
-
): void {
|
|
683
|
-
const payload: OpenDialogPayload = { ...initialPayload }
|
|
684
|
-
|
|
685
|
-
const readKillswitch = (): {
|
|
686
|
-
enabled: boolean
|
|
687
|
-
minimum: number
|
|
688
|
-
accounts: Record<string, number>
|
|
689
|
-
} => {
|
|
690
|
-
const enabled = payload.knobs.enabled === true
|
|
691
|
-
const rawMin = payload.knobs.minimum_remaining_percent
|
|
692
|
-
const minimum =
|
|
693
|
-
typeof rawMin === 'number' && Number.isFinite(rawMin)
|
|
694
|
-
? Math.max(0, Math.min(100, Math.round(rawMin)))
|
|
695
|
-
: 0
|
|
696
|
-
const rawAccounts = payload.knobs.accounts
|
|
697
|
-
const accounts =
|
|
698
|
-
rawAccounts &&
|
|
699
|
-
typeof rawAccounts === 'object' &&
|
|
700
|
-
!Array.isArray(rawAccounts)
|
|
701
|
-
? (rawAccounts as Record<string, number>)
|
|
702
|
-
: {}
|
|
703
|
-
return { enabled, minimum, accounts }
|
|
342
|
+
private back(section: MenuSection, item: MenuItem | undefined) {
|
|
343
|
+
return item ? this.item(section.id, item.id) : this.section(section.id)
|
|
704
344
|
}
|
|
705
345
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
346
|
+
/**
|
|
347
|
+
* Collects an action's inputs, confirms it when it carries a confirmation,
|
|
348
|
+
* applies it and redraws from the refreshed menu.
|
|
349
|
+
*/
|
|
350
|
+
private async run(
|
|
351
|
+
section: MenuSection,
|
|
352
|
+
item: MenuItem | undefined,
|
|
353
|
+
action: MenuAction,
|
|
354
|
+
): Promise<void> {
|
|
355
|
+
const { ui } = this.options
|
|
356
|
+
const values: Record<string, KnobValue> = {}
|
|
357
|
+
for (const knob of action.knobs) {
|
|
358
|
+
const value = await this.knob(action.label, knob)
|
|
359
|
+
if (value === undefined) {
|
|
360
|
+
await this.back(section, item)
|
|
361
|
+
return
|
|
362
|
+
}
|
|
363
|
+
values[knob.id] = value
|
|
364
|
+
}
|
|
365
|
+
let confirmed = false
|
|
366
|
+
if (action.confirm) {
|
|
367
|
+
confirmed = await ui.confirm({
|
|
368
|
+
title: action.label,
|
|
369
|
+
message: action.confirm.message,
|
|
370
|
+
})
|
|
371
|
+
if (!confirmed) {
|
|
372
|
+
await this.back(section, item)
|
|
373
|
+
return
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
const request: MenuApplyRequest = {
|
|
377
|
+
command: this.menu.command,
|
|
378
|
+
sectionId: section.id,
|
|
379
|
+
...(item ? { itemId: item.id } : {}),
|
|
380
|
+
actionId: action.id,
|
|
381
|
+
values,
|
|
382
|
+
...(confirmed ? { confirmed: true as const } : {}),
|
|
383
|
+
}
|
|
384
|
+
let result = await this.send(request)
|
|
385
|
+
if (!result) {
|
|
386
|
+
await this.back(section, item)
|
|
712
387
|
return
|
|
713
388
|
}
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
389
|
+
if (result.needsConfirmation && !confirmed) {
|
|
390
|
+
const yes = await ui.confirm({
|
|
391
|
+
title: action.label,
|
|
392
|
+
message: result.text,
|
|
393
|
+
})
|
|
394
|
+
if (!yes) {
|
|
395
|
+
this.menu = result.menu
|
|
396
|
+
await this.section(section.id)
|
|
397
|
+
return
|
|
398
|
+
}
|
|
399
|
+
const again = await this.send({ ...request, confirmed: true })
|
|
400
|
+
if (!again) {
|
|
401
|
+
this.menu = result.menu
|
|
402
|
+
await this.back(section, item)
|
|
403
|
+
return
|
|
404
|
+
}
|
|
405
|
+
result = again
|
|
719
406
|
}
|
|
720
|
-
|
|
407
|
+
this.menu = result.menu
|
|
408
|
+
await this.finish(section.id, result)
|
|
721
409
|
}
|
|
722
410
|
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
}
|
|
742
|
-
const parsed = Number.parseInt(trimmed, 10)
|
|
743
|
-
if (
|
|
744
|
-
!Number.isInteger(parsed) ||
|
|
745
|
-
parsed < 0 ||
|
|
746
|
-
parsed > 100 ||
|
|
747
|
-
String(parsed) !== trimmed
|
|
748
|
-
) {
|
|
749
|
-
api.ui.toast({
|
|
750
|
-
message: 'Threshold must be an integer between 0 and 100',
|
|
751
|
-
})
|
|
752
|
-
openThresholdPrompt(currentMinimum)
|
|
753
|
-
return
|
|
754
|
-
}
|
|
755
|
-
void runApply(`minimum_remaining_percent=${parsed}`).catch(() => {
|
|
756
|
-
api.ui.toast({ message: 'Killswitch update failed' })
|
|
757
|
-
renderMain()
|
|
758
|
-
})
|
|
759
|
-
}}
|
|
760
|
-
onCancel={() => {
|
|
761
|
-
renderMain()
|
|
762
|
-
}}
|
|
763
|
-
/>
|
|
764
|
-
))
|
|
411
|
+
private async send(
|
|
412
|
+
request: MenuApplyRequest,
|
|
413
|
+
): Promise<MenuApplyResult | undefined> {
|
|
414
|
+
const { ui, apply, onError } = this.options
|
|
415
|
+
try {
|
|
416
|
+
return await apply(request)
|
|
417
|
+
} catch (error) {
|
|
418
|
+
if (error instanceof MenuRefusedError) {
|
|
419
|
+
onError?.('menu-apply-refused', { issues: error.issues })
|
|
420
|
+
ui.toast(MENU_REFUSED_TEXT, 'error')
|
|
421
|
+
return undefined
|
|
422
|
+
}
|
|
423
|
+
onError?.('menu-apply-failed', {
|
|
424
|
+
error: error instanceof Error ? error.name : typeof error,
|
|
425
|
+
})
|
|
426
|
+
ui.toast('The action could not reach Antigravity auth.', 'error')
|
|
427
|
+
return undefined
|
|
428
|
+
}
|
|
765
429
|
}
|
|
766
430
|
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
:
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
},
|
|
804
|
-
{ title: 'Back', value: 'back' },
|
|
805
|
-
]}
|
|
806
|
-
onSelect={(option) => {
|
|
807
|
-
const raw = String(option.value)
|
|
808
|
-
if (raw === 'back') {
|
|
809
|
-
api.ui.dialog.clear()
|
|
810
|
-
return
|
|
811
|
-
}
|
|
812
|
-
if (raw === '__edit_threshold__') {
|
|
813
|
-
openThresholdPrompt(minimum)
|
|
814
|
-
return
|
|
815
|
-
}
|
|
816
|
-
if (raw === 'enabled=true' || raw === 'enabled=false') {
|
|
817
|
-
void runApply(raw).catch(() => {
|
|
818
|
-
api.ui.toast({ message: 'Killswitch update failed' })
|
|
819
|
-
renderMain()
|
|
820
|
-
})
|
|
821
|
-
return
|
|
822
|
-
}
|
|
823
|
-
api.ui.toast({ message: 'Unknown killswitch action' })
|
|
824
|
-
}}
|
|
825
|
-
/>
|
|
826
|
-
</box>
|
|
827
|
-
</box>
|
|
828
|
-
))
|
|
431
|
+
/**
|
|
432
|
+
* Shows the apply's message and returns to the section. A long message (a
|
|
433
|
+
* sign-in URL, a multi-line result) is shown in full; a link in it can be
|
|
434
|
+
* copied when the host has a clipboard. A short one is a toast.
|
|
435
|
+
*/
|
|
436
|
+
private async finish(sectionId: string, result: MenuApplyResult) {
|
|
437
|
+
const { ui, copy } = this.options
|
|
438
|
+
const kind = result.ok ? 'info' : 'warning'
|
|
439
|
+
const long =
|
|
440
|
+
result.text.includes('\n') || result.text.length > TOAST_MAX_LENGTH
|
|
441
|
+
const link = firstLink(result.text)
|
|
442
|
+
if (link && copy) {
|
|
443
|
+
const chosen = await ui.select({
|
|
444
|
+
title: result.ok ? 'Done' : 'Not done',
|
|
445
|
+
options: [
|
|
446
|
+
{ title: 'Copy link', value: 'copy', description: link },
|
|
447
|
+
{ title: 'Continue', value: 'continue', description: result.text },
|
|
448
|
+
],
|
|
449
|
+
})
|
|
450
|
+
if (chosen === 'copy') {
|
|
451
|
+
ui.toast(
|
|
452
|
+
copy(link)
|
|
453
|
+
? 'Link copied to the clipboard.'
|
|
454
|
+
: 'Copy is unavailable here; select the link to copy it.',
|
|
455
|
+
'info',
|
|
456
|
+
)
|
|
457
|
+
}
|
|
458
|
+
} else if (long) {
|
|
459
|
+
await ui.alert({
|
|
460
|
+
title: result.ok ? 'Done' : 'Not done',
|
|
461
|
+
message: result.text,
|
|
462
|
+
})
|
|
463
|
+
} else {
|
|
464
|
+
ui.toast(result.text, kind)
|
|
465
|
+
}
|
|
466
|
+
await this.section(sectionId)
|
|
829
467
|
}
|
|
830
|
-
|
|
831
|
-
renderMain()
|
|
832
468
|
}
|