Download src/utils/settings/constants.ts from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 5.63 kB
-
https://huggingface.co/chenbhao/codev/resolve/afbc7edaae4e6bb0102ba024b49ce8be89d2264c/src/utils/settings/constants.ts
- Command line
-
hf download hf://chenbhao/codev@afbc7edaae4e6bb0102ba024b49ce8be89d2264c/src/utils/settings/constants.ts
-
curl -L -o constants.ts https://huggingface.co/chenbhao/codev/resolve/afbc7edaae4e6bb0102ba024b49ce8be89d2264c/src/utils/settings/constants.ts
5.63 kB
| import { getAllowedSettingSources } from '../../bootstrap/state.js' | |
| /** | |
| * All possible sources where settings can come from | |
| * Order matters - later sources override earlier ones | |
| */ | |
| export const SETTING_SOURCES = [ | |
| // User settings (global) | |
| 'userSettings', | |
| // Project settings (shared per-directory) | |
| 'projectSettings', | |
| // Local settings (gitignored) | |
| 'localSettings', | |
| // Flag settings (from --settings flag) | |
| 'flagSettings', | |
| // Policy settings (managed-settings.json or remote settings from API) | |
| 'policySettings', | |
| ] as const | |
| export type SettingSource = (typeof SETTING_SOURCES)[number] | |
| export function getSettingSourceName(source: SettingSource): string { | |
| switch (source) { | |
| case 'userSettings': | |
| return 'user' | |
| case 'projectSettings': | |
| return 'project' | |
| case 'localSettings': | |
| return 'project, gitignored' | |
| case 'flagSettings': | |
| return 'cli flag' | |
| case 'policySettings': | |
| return 'managed' | |
| } | |
| } | |
| /** | |
| * Get short display name for a setting source (capitalized, for context/skills UI) | |
| * @param source The setting source or 'plugin'/'built-in' | |
| * @returns Short capitalized display name like 'User', 'Project', 'Plugin' | |
| */ | |
| export function getSourceDisplayName( | |
| source: SettingSource | 'plugin' | 'built-in', | |
| ): string { | |
| switch (source) { | |
| case 'userSettings': | |
| return 'User' | |
| case 'projectSettings': | |
| return 'Project' | |
| case 'localSettings': | |
| return 'Local' | |
| case 'flagSettings': | |
| return 'Flag' | |
| case 'policySettings': | |
| return 'Managed' | |
| case 'plugin': | |
| return 'Plugin' | |
| case 'built-in': | |
| return 'Built-in' | |
| } | |
| } | |
| /** | |
| * Get display name for a setting or permission rule source (lowercase, for inline use) | |
| * @param source The setting source or permission rule source | |
| * @returns Display name for the source in lowercase | |
| */ | |
| export function getSettingSourceDisplayNameLowercase( | |
| source: SettingSource | 'cliArg' | 'command' | 'session', | |
| ): string { | |
| switch (source) { | |
| case 'userSettings': | |
| return 'user settings' | |
| case 'projectSettings': | |
| return 'shared project settings' | |
| case 'localSettings': | |
| return 'project local settings' | |
| case 'flagSettings': | |
| return 'command line arguments' | |
| case 'policySettings': | |
| return 'enterprise managed settings' | |
| case 'cliArg': | |
| return 'CLI argument' | |
| case 'command': | |
| return 'command configuration' | |
| case 'session': | |
| return 'current session' | |
| } | |
| } | |
| /** | |
| * Get display name for a setting or permission rule source (capitalized, for UI labels) | |
| * @param source The setting source or permission rule source | |
| * @returns Display name for the source with first letter capitalized | |
| */ | |
| export function getSettingSourceDisplayNameCapitalized( | |
| source: SettingSource | 'cliArg' | 'command' | 'session', | |
| ): string { | |
| switch (source) { | |
| case 'userSettings': | |
| return 'User settings' | |
| case 'projectSettings': | |
| return 'Shared project settings' | |
| case 'localSettings': | |
| return 'Project local settings' | |
| case 'flagSettings': | |
| return 'Command line arguments' | |
| case 'policySettings': | |
| return 'Enterprise managed settings' | |
| case 'cliArg': | |
| return 'CLI argument' | |
| case 'command': | |
| return 'Command configuration' | |
| case 'session': | |
| return 'Current session' | |
| } | |
| } | |
| /** | |
| * Parse the --setting-sources CLI flag into SettingSource array | |
| * @param flag Comma-separated string like "user,project,local" | |
| * @returns Array of SettingSource values | |
| */ | |
| export function parseSettingSourcesFlag(flag: string): SettingSource[] { | |
| if (flag === '') return [] | |
| const names = flag.split(',').map(s => s.trim()) | |
| const result: SettingSource[] = [] | |
| for (const name of names) { | |
| switch (name) { | |
| case 'user': | |
| result.push('userSettings') | |
| break | |
| case 'project': | |
| result.push('projectSettings') | |
| break | |
| case 'local': | |
| result.push('localSettings') | |
| break | |
| default: | |
| throw new Error( | |
| `Invalid setting source: ${name}. Valid options are: user, project, local`, | |
| ) | |
| } | |
| } | |
| return result | |
| } | |
| /** | |
| * Get enabled setting sources with policy/flag always included | |
| * @returns Array of enabled SettingSource values | |
| */ | |
| export function getEnabledSettingSources(): SettingSource[] { | |
| const allowed = getAllowedSettingSources() | |
| // Always include policy and flag settings | |
| const result = new Set<SettingSource>(allowed) | |
| result.add('policySettings') | |
| result.add('flagSettings') | |
| return Array.from(result) | |
| } | |
| /** | |
| * Check if a specific source is enabled | |
| * @param source The source to check | |
| * @returns true if the source should be loaded | |
| */ | |
| export function isSettingSourceEnabled(source: SettingSource): boolean { | |
| const enabled = getEnabledSettingSources() | |
| return enabled.includes(source) | |
| } | |
| /** | |
| * Editable setting sources (excludes policySettings and flagSettings which are read-only) | |
| */ | |
| export type EditableSettingSource = Exclude< | |
| SettingSource, | |
| 'policySettings' | 'flagSettings' | |
| > | |
| /** | |
| * List of sources where permission rules can be saved, in display order. | |
| * Used by permission-rule and hook-save UIs to present source options. | |
| */ | |
| export const SOURCES = [ | |
| 'localSettings', | |
| 'projectSettings', | |
| 'userSettings', | |
| ] as const satisfies readonly EditableSettingSource[] | |
| /** | |
| * The JSON Schema URL for Claude Code settings | |
| * You can edit the contents at https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/claude-code-settings.json | |
| */ | |
| export const CLAUDE_CODE_SETTINGS_SCHEMA_URL = | |
| 'https://json.schemastore.org/claude-code-settings.json' | |