Download src/utils/computerUse/gates.ts from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 2.56 kB
-
https://huggingface.co/chenbhao/codev/resolve/714ab7d15ffd78992a4c3d4e2bf153c2f62f4841/src/utils/computerUse/gates.ts
- Command line
-
hf download hf://chenbhao/codev@714ab7d15ffd78992a4c3d4e2bf153c2f62f4841/src/utils/computerUse/gates.ts
-
curl -L -o gates.ts https://huggingface.co/chenbhao/codev/resolve/714ab7d15ffd78992a4c3d4e2bf153c2f62f4841/src/utils/computerUse/gates.ts
2.56 kB
| import type { CoordinateMode, CuSubGates } from '@ant/computer-use-mcp/types' | |
| import { getDynamicConfig_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' | |
| import { getSubscriptionType } from '../auth.js' | |
| import { isEnvTruthy } from '../envUtils.js' | |
| type ChicagoConfig = CuSubGates & { | |
| enabled: boolean | |
| coordinateMode: CoordinateMode | |
| } | |
| const DEFAULTS: ChicagoConfig = { | |
| enabled: false, | |
| pixelValidation: false, | |
| clipboardPasteMultiline: true, | |
| mouseAnimation: true, | |
| hideBeforeAction: true, | |
| autoTargetDisplay: true, | |
| clipboardGuard: true, | |
| coordinateMode: 'pixels', | |
| } | |
| // Spread over defaults so a partial JSON ({"enabled": true} alone) inherits the | |
| // rest. The generic on getDynamicConfig is a type assertion, not a validator — | |
| // GB returning a partial object would otherwise surface undefined fields. | |
| function readConfig(): ChicagoConfig { | |
| return { | |
| ...DEFAULTS, | |
| ...getDynamicConfig_CACHED_MAY_BE_STALE<Partial<ChicagoConfig>>( | |
| 'tengu_malort_pedway', | |
| DEFAULTS, | |
| ), | |
| } | |
| } | |
| // Max/Pro only for external rollout. Ant bypass so dogfooding continues | |
| // regardless of subscription tier — not all ants are max/pro, and per | |
| // CLAUDE.md:281, USER_TYPE !== 'ant' branches get zero antfooding. | |
| function hasRequiredSubscription(): boolean { | |
| if (process.env.USER_TYPE === 'ant') return true | |
| const tier = getSubscriptionType() | |
| return tier === 'max' || tier === 'pro' | |
| } | |
| export function getChicagoEnabled(): boolean { | |
| // Disable for ants whose shell inherited monorepo dev config. | |
| // MONOREPO_ROOT_DIR is exported by config/local/zsh/zshrc, which | |
| // laptop-setup.sh wires into ~/.zshrc — its presence is the cheap | |
| // proxy for "has monorepo access". Override: ALLOW_ANT_COMPUTER_USE_MCP=1. | |
| if ( | |
| process.env.USER_TYPE === 'ant' && | |
| process.env.MONOREPO_ROOT_DIR && | |
| !isEnvTruthy(process.env.ALLOW_ANT_COMPUTER_USE_MCP) | |
| ) { | |
| return false | |
| } | |
| return hasRequiredSubscription() && readConfig().enabled | |
| } | |
| export function getChicagoSubGates(): CuSubGates { | |
| const { enabled: _e, coordinateMode: _c, ...subGates } = readConfig() | |
| return subGates | |
| } | |
| // Frozen at first read — setup.ts builds tool descriptions and executor.ts | |
| // scales coordinates off the same value. A live read here lets a mid-session | |
| // GB flip tell the model "pixels" while transforming clicks as normalized. | |
| let frozenCoordinateMode: CoordinateMode | undefined | |
| export function getChicagoCoordinateMode(): CoordinateMode { | |
| frozenCoordinateMode ??= readConfig().coordinateMode | |
| return frozenCoordinateMode | |
| } | |