Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/agentHost/common/agentHostCustomizationConfig.ts
13394 views
1
/*---------------------------------------------------------------------------------------------
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 { createSchema, schemaProperty } from './agentHostSchema.js';
8
import { type CustomizationRef } from './state/protocol/state.js';
9
10
/**
11
* Well-known root-config keys used by the platform to configure agent-host
12
* customizations.
13
*/
14
export const enum AgentHostConfigKey {
15
/** Host-owned Open Plugins available to remote sessions. */
16
Customizations = 'customizations',
17
}
18
19
export const agentHostCustomizationConfigSchema = createSchema({
20
[AgentHostConfigKey.Customizations]: schemaProperty<CustomizationRef[]>({
21
type: 'array',
22
title: localize('agentHost.config.customizations.title', "Plugins"),
23
description: localize('agentHost.config.customizations.description', "Plugins configured on this agent host and available to remote sessions."),
24
default: [],
25
items: {
26
type: 'object',
27
title: localize('agentHost.config.customizations.itemTitle', "Plugin"),
28
properties: {
29
uri: {
30
type: 'string',
31
title: localize('agentHost.config.customizations.uri', "Plugin URI"),
32
},
33
displayName: {
34
type: 'string',
35
title: localize('agentHost.config.customizations.displayName', "Name"),
36
},
37
description: {
38
type: 'string',
39
title: localize('agentHost.config.customizations.descriptionField', "Description"),
40
},
41
},
42
required: ['uri', 'displayName'],
43
},
44
}),
45
});
46
47
export const defaultAgentHostCustomizationConfigValues = {
48
[AgentHostConfigKey.Customizations]: [] as CustomizationRef[],
49
};
50
51
export function getAgentHostConfiguredCustomizations(values: Record<string, unknown> | undefined): readonly CustomizationRef[] {
52
const raw = values?.[AgentHostConfigKey.Customizations];
53
return agentHostCustomizationConfigSchema.validate(AgentHostConfigKey.Customizations, raw)
54
? raw
55
: defaultAgentHostCustomizationConfigValues[AgentHostConfigKey.Customizations];
56
}
57
58