policy.ts ×1

Frontier kind: Code frontier

unlabeled · c_5e75baf8755a

2696 tests · 5673 LOC · 29 files · introduces 0 tests · 161 LOC · 1 file

Introduces — evidence that enters the hierarchy at this concept

Code
1 range161 lines · 1 files
Tests
0 tests

Contains — complete concept membership

All code (extent)
694 ranges5673 lines · 29 files · Browse complete extent
All tests (intent)
2696 testsBrowse complete intent

Neighbourhood graph

The orange circle is the focus. Violet and green circles are every ancestor and descendant, broader and narrower, at any distance; blue squares and pink diamonds are the introduced files and exact introduced tests of every visible concept, not only the focus's. Arrows point from broader to narrower concepts and bridge only concepts omitted from this view. Undirected links show source or test introduction. Concept and file size follows LOC; exact test nodes use test-count units.

Introduced files, introduced tests, and structurally relevant concept specialization

In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the native relationship evidence on this page.

Graph controls are ready.

Interactive rendering requires JavaScript and WebGL. Use the native relationship evidence on this page while the interactive map is unavailable.

Native relationship evidence

Every exact file and test below is linked only from the concept that introduces it.

Introduced tests

Every collected test enters the hierarchy at exactly one concept.

No tests are introduced at this concept. Its intent tests are introduced by other concepts.

Introduced code

Every collected source range enters the hierarchy at exactly one concept.

1 file ranked by introduced lines: 161 introduced LOC across 1 ranges. Expand a file to inspect source; the > gutter marks introduced lines.

src/vs/base/common/policy.ts 161 introduced LOC · 1 range

Open complete file

1 > /*--------------------------------------------------------------------------------------------- policy.ts
2 > * Copyright (c) Microsoft Corporation. All rights reserved.
3 > * Licensed under the MIT License. See License.txt in the project root for license information.
4 > *--------------------------------------------------------------------------------------------*/
5 >
6 > import { localize } from '../../nls.js';
7 > import { IPolicyData } from './defaultAccount.js';
8 >
9 > /**
10 > * System-wide policy file path for Linux systems.
11 > */
12 > export const LINUX_SYSTEM_POLICY_FILE_PATH = '/etc/vscode/policy.json';
13 >
14 > export type PolicyName = string;
15 > export type LocalizedValue = {
16 > key: string;
17 > value: string;
18 > };
19 >
20 > export type PolicyValue = string | number | boolean;
21 > export type ManagedSettingValue = PolicyValue;
22 > export type ManagedSettingsData = Readonly<Record<string, ManagedSettingValue>>;
23 >
24 > export interface IManagedSettingPolicyDefinition {
25 > readonly type: 'string' | 'number' | 'boolean';
26 > }
27 >
28 > export type IManagedSettingsPolicyDefinitions = Readonly<Record<string, IManagedSettingPolicyDefinition>>;
29 >
30 > export enum PolicyCategory {
31 > Extensions = 'Extensions',
32 > IntegratedTerminal = 'IntegratedTerminal',
33 > InteractiveSession = 'InteractiveSession',
34 > Telemetry = 'Telemetry',
35 > Update = 'Update',
36 > }
37 >
38 > export const PolicyCategoryData: {
39 > [key in PolicyCategory]: { name: LocalizedValue }
40 > } = {
41 > [PolicyCategory.Extensions]: {
42 > name: {
43 > key: 'extensionsConfigurationTitle', value: localize('extensionsConfigurationTitle', "Extensions"),
44 > }
45 > },
46 > [PolicyCategory.IntegratedTerminal]: {
47 > name: {
48 > key: 'terminalIntegratedConfigurationTitle', value: localize('terminalIntegratedConfigurationTitle', "Integrated Terminal"),
49 > }
50 > },
51 > [PolicyCategory.InteractiveSession]: {
52 > name: {
53 > key: 'interactiveSessionConfigurationTitle', value: localize('interactiveSessionConfigurationTitle', "Chat"),
54 > }
55 > },
56 > [PolicyCategory.Telemetry]: {
57 > name: {
58 > key: 'telemetryConfigurationTitle', value: localize('telemetryConfigurationTitle', "Telemetry"),
59 > }
60 > },
61 > [PolicyCategory.Update]: {
62 > name: {
63 > key: 'updateConfigurationTitle', value: localize('updateConfigurationTitle', "Update"),
64 > }
65 > }
66 > };
67 >
68 > export interface IPolicy {
69 >
70 > /**
71 > * The policy name.
72 > */
73 > readonly name: PolicyName;
74 >
75 > /**
76 > * The policy category.
77 > */
78 > readonly category: PolicyCategory;
79 >
80 > /**
81 > * The Code version in which this policy was introduced.
82 > */
83 > readonly minimumVersion: `${number}.${number}`;
84 >
85 > /**
86 > * Localization info for the policy.
87 > *
88 > * IMPORTANT: the key values for these must be unique to avoid collisions, as during the export time the module information is not available.
89 > */
90 > readonly localization: {
91 > /** The localization key or key value pair. If only a key is provided, the default value will fallback to the parent configuration's description property. */
92 > description: LocalizedValue;
93 > /** List of localization key or key value pair. If only a key is provided, the default value will fallback to the parent configuration's enumDescriptions property. */
94 > enumDescriptions?: LocalizedValue[];
95 > };
96 >
97 > /**
98 > * The value that an ACCOUNT-based feature will use when its corresponding policy is active.
99 > *
100 > * Only applicable when policy is tagged with ACCOUNT. When an account-based feature's policy is enabled,
101 > * this value determines what value the feature receives.
102 > *
103 > * For example:
104 > * - If evaluated value is `true`, the feature's setting is locked to `true` WHEN the policy is in effect.
105 > * - If evaluated value is `foo`, the feature's setting is locked to 'foo' WHEN the policy is in effect.
106 > *
107 > * If `undefined`, the feature's setting is not locked and can be overridden by other means.
108 > */
109 > readonly value?: (policyData: IPolicyData) => string | number | boolean | undefined;
110 >
111 > /**
112 > * Declares Copilot managed-settings keys this policy's value callback reads.
113 > * Keys are dot-separated managed-settings paths, for example
114 > * `permissions.disableBypassPermissionsMode`.
115 > */
116 > readonly managedSettings?: IManagedSettingsPolicyDefinitions;
117 >
118 > /**
119 > * The most-restrictive value that should be applied when the user is subject to the
120 > * "Require Approved Account" gate but the gate is not yet satisfied (i.e. no approved
121 > * GitHub account is signed in or the account-side policy data has not yet resolved).
122 > *
123 > * If omitted, the gate falls back to a type-driven safe default
124 > * (`false` for boolean, `0` for number, `''` for string).
125 > *
126 > * Only consulted while the gate is active and unsatisfied; ignored otherwise.
127 > */
128 > readonly restrictedValue?: string | number | boolean;
129 > }
130 >
131 > /**
132 > * A subordinate attachment to an existing {@link IPolicy} (the "owner"). A setting may declare a
133 > * `policyReference` instead of a full `policy` to be governed by a policy owned by another setting,
134 > * letting a single enterprise policy lock more than one setting (e.g. gating an agent in both the
135 > * editor window and the Agents window).
136 > *
137 > * A reference is a pure pointer: it carries no policy semantics of its own. The owner is the single
138 > * source of truth for the policy's catalog metadata *and* its runtime behaviour (type, value
139 > * callback, etc.); a reference only contributes the policy name so the setting is gated and the OS
140 > * policy watcher observes the name in processes where the owner is not loaded.
141 > */
142 > export interface IPolicyReference {
143 >
144 > /** The name of the owning {@link IPolicy} this setting attaches to. */
145 > readonly name: PolicyName;
146 > }
147 >
148 > /**
149 > * A `product.json` `extensionConfigurationPolicy` entry that attaches its setting to a policy
150 > * *owned* by an in-code setting, instead of declaring a full owner {@link IPolicy}. This mirrors the
151 > * in-code `policyReference` configuration field, so the same indirection can be expressed from
152 > * `product.json` — where the owner's runtime behaviour (notably its `value` callback) cannot live.
153 > *
154 > * An `extensionConfigurationPolicy` entry is therefore either a full {@link IPolicy} (the setting
155 > * "parents"/owns the policy, the current syntax) or this reference wrapper.
156 > */
157 > export interface IExtensionConfigurationPolicyReference {
158 >
159 > /** Pointer to the owning {@link IPolicy} declared by an in-code setting. */
160 > readonly policyReference: IPolicyReference;
161 > }