Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/prompts/node/devcontainer/devContainerConfigPrompt.tsx
13404 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
import { BasePromptElementProps, PromptElement, SystemMessage, UserMessage } from '@vscode/prompt-tsx';
6
import { DevContainerConfigFeature, DevContainerConfigTemplate } from '../../../../platform/devcontainer/common/devContainerConfigurationService';
7
import { SafetyRules } from '../base/safetyRules';
8
9
export interface DevContainerConfigPromptProps extends BasePromptElementProps {
10
readonly filenames: string[];
11
readonly templates: DevContainerConfigTemplate[];
12
readonly features: DevContainerConfigFeature[];
13
}
14
15
export class DevContainerConfigPrompt extends PromptElement<DevContainerConfigPromptProps> {
16
render() {
17
return (
18
<>
19
<SystemMessage>
20
<DevContainerConfigSystemRules />
21
<SafetyRules />
22
</SystemMessage>
23
<UserMessage>
24
<DevContainerConfigUserMessage templates={this.props.templates} features={this.props.features} filenames={this.props.filenames} />
25
</UserMessage>
26
</>
27
);
28
}
29
}
30
31
class DevContainerConfigSystemRules extends PromptElement {
32
render() {
33
return (
34
<>
35
You are an AI programming assistant.<br />
36
You are helping a software developer to configure a Dev Container by picking a configuration template and features.
37
</>
38
);
39
}
40
}
41
42
export interface DevContainerConfigUserMessageProps extends BasePromptElementProps {
43
readonly templates: DevContainerConfigTemplate[];
44
readonly features: DevContainerConfigFeature[];
45
readonly filenames: string[];
46
}
47
48
class DevContainerConfigUserMessage extends PromptElement<DevContainerConfigUserMessageProps> {
49
render() {
50
return (
51
<>
52
This is a partial list of workspace files:<br />
53
{this.props.filenames.map(f => `- ${f}\n`).join('')}
54
<br />
55
Based on the workspace files, please suggest the best template from the list of templates below.<br />
56
First identify the relevant files ignoring common files, then pick the best template and reply with the best template's id.<br />
57
This is the list of available templates:<br />
58
{this.props.templates.map(t => `- ${t.id}: ${t.name || t.id}: ${t.description || t.name || t.id}\n`).join('')}
59
<br />
60
Also based on the workspace files, please suggest all relevant features from the list of features below.<br />
61
First identify the relevant files ignoring common files, then pick all relevant features and reply with the relevant features' ids.<br />
62
This is the list of available features:<br />
63
{this.props.features.map(f => `- ${f.id}: ${f.name || f.id}: ${f.description || f.name || f.id}\n`).join('')}
64
<br />
65
</>
66
);
67
}
68
}
69
70