Download src/utils/permissions/PermissionMode.ts from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 3.49 kB
-
https://huggingface.co/chenbhao/codev/resolve/main/src/utils/permissions/PermissionMode.ts
- Command line
-
hf download hf://chenbhao/codev/src/utils/permissions/PermissionMode.ts
-
curl -L -o PermissionMode.ts https://huggingface.co/chenbhao/codev/resolve/main/src/utils/permissions/PermissionMode.ts
3.49 kB
| import { feature } from 'bun:bundle' | |
| import z from 'zod/v4' | |
| import { PAUSE_ICON } from '../../constants/figures.js' | |
| // Types extracted to src/types/permissions.ts to break import cycles | |
| import { | |
| EXTERNAL_PERMISSION_MODES, | |
| type ExternalPermissionMode, | |
| PERMISSION_MODES, | |
| type PermissionMode, | |
| } from '../../types/permissions.js' | |
| import { lazySchema } from '../lazySchema.js' | |
| // Re-export for backwards compatibility | |
| export { | |
| EXTERNAL_PERMISSION_MODES, | |
| PERMISSION_MODES, | |
| type ExternalPermissionMode, | |
| type PermissionMode, | |
| } | |
| export const permissionModeSchema = lazySchema(() => z.enum(PERMISSION_MODES)) | |
| export const externalPermissionModeSchema = lazySchema(() => | |
| z.enum(EXTERNAL_PERMISSION_MODES), | |
| ) | |
| type ModeColorKey = | |
| | 'text' | |
| | 'planMode' | |
| | 'permission' | |
| | 'autoAccept' | |
| | 'error' | |
| | 'warning' | |
| type PermissionModeConfig = { | |
| title: string | |
| shortTitle: string | |
| symbol: string | |
| color: ModeColorKey | |
| external: ExternalPermissionMode | |
| } | |
| const PERMISSION_MODE_CONFIG: Partial< | |
| Record<PermissionMode, PermissionModeConfig> | |
| > = { | |
| default: { | |
| title: 'Default', | |
| shortTitle: 'Default', | |
| symbol: '', | |
| color: 'text', | |
| external: 'default', | |
| }, | |
| plan: { | |
| title: 'Plan Mode', | |
| shortTitle: 'Plan', | |
| symbol: PAUSE_ICON, | |
| color: 'planMode', | |
| external: 'plan', | |
| }, | |
| acceptEdits: { | |
| title: 'Accept edits', | |
| shortTitle: 'Accept', | |
| symbol: '⏵⏵', | |
| color: 'autoAccept', | |
| external: 'acceptEdits', | |
| }, | |
| bypassPermissions: { | |
| title: 'Bypass Permissions', | |
| shortTitle: 'Bypass', | |
| symbol: '⏵⏵', | |
| color: 'error', | |
| external: 'bypassPermissions', | |
| }, | |
| dontAsk: { | |
| title: "Don't Ask", | |
| shortTitle: 'DontAsk', | |
| symbol: '⏵⏵', | |
| color: 'error', | |
| external: 'dontAsk', | |
| }, | |
| ...(feature('TRANSCRIPT_CLASSIFIER') | |
| ? { | |
| auto: { | |
| title: 'Auto mode', | |
| shortTitle: 'Auto', | |
| symbol: '⏵⏵', | |
| color: 'warning' as ModeColorKey, | |
| external: 'default' as ExternalPermissionMode, | |
| }, | |
| } | |
| : {}), | |
| } | |
| /** | |
| * Type guard to check if a PermissionMode is an ExternalPermissionMode. | |
| * auto is ant-only and excluded from external modes. | |
| */ | |
| export function isExternalPermissionMode( | |
| mode: PermissionMode, | |
| ): mode is ExternalPermissionMode { | |
| // External users can't have auto, so always true for them | |
| if (process.env.USER_TYPE !== 'ant') { | |
| return true | |
| } | |
| return mode !== 'auto' && mode !== 'bubble' | |
| } | |
| function getModeConfig(mode: PermissionMode): PermissionModeConfig { | |
| return PERMISSION_MODE_CONFIG[mode] ?? PERMISSION_MODE_CONFIG.default! | |
| } | |
| export function toExternalPermissionMode( | |
| mode: PermissionMode, | |
| ): ExternalPermissionMode { | |
| return getModeConfig(mode).external | |
| } | |
| export function permissionModeFromString(str: string): PermissionMode { | |
| return (PERMISSION_MODES as readonly string[]).includes(str) | |
| ? (str as PermissionMode) | |
| : 'default' | |
| } | |
| export function permissionModeTitle(mode: PermissionMode): string { | |
| return getModeConfig(mode).title | |
| } | |
| export function isDefaultMode(mode: PermissionMode | undefined): boolean { | |
| return mode === 'default' || mode === undefined | |
| } | |
| export function permissionModeShortTitle(mode: PermissionMode): string { | |
| return getModeConfig(mode).shortTitle | |
| } | |
| export function permissionModeSymbol(mode: PermissionMode): string { | |
| return getModeConfig(mode).symbol | |
| } | |
| export function getModeColor(mode: PermissionMode): ModeColorKey { | |
| return getModeConfig(mode).color | |
| } | |