-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Expand file tree
/
Copy pathpresets.ts
More file actions
87 lines (79 loc) · 2.42 KB
/
Copy pathpresets.ts
File metadata and controls
87 lines (79 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------------------------------------------*/
import type { SessionConfig, CopilotClientOptions } from "./types.js";
/**
* Preset configurations for common use cases.
* Presets provide sensible defaults for different deployment scenarios.
*/
export type PresetName = "cli" | "filesystem" | "minimal";
export interface PresetSessionConfig extends Partial<SessionConfig> {}
export interface PresetClientConfig extends Partial<CopilotClientOptions> {}
export interface PresetConfig {
client: PresetClientConfig;
session: PresetSessionConfig;
}
/**
* Returns a preset configuration for the given scenario.
*
* @param name - The preset name
* @param overrides - Optional overrides to merge on top of the preset
* @returns Preset configuration for client and session
*
* @example
* ```typescript
* // Full CLI experience
* const config = preset("cli");
* const client = new CopilotClient(config.client);
* const session = await client.createSession(config.session);
*
* // Minimal — just LLM chat, no tools
* const config = preset("minimal");
* ```
*/
export function preset(name: PresetName, overrides?: Partial<PresetConfig>): PresetConfig {
const base = PRESETS[name];
if (!base) {
throw new Error(
`Unknown preset: ${name}. Available presets: ${Object.keys(PRESETS).join(", ")}`
);
}
return {
client: { ...base.client, ...overrides?.client },
session: { ...base.session, ...overrides?.session },
};
}
const PRESETS: Record<PresetName, PresetConfig> = {
cli: {
client: {
useLoggedInUser: true,
autoStart: true,
autoRestart: true,
},
session: {
configDiscovery: true,
agentDiscovery: true,
sessionStorage: "disk",
},
},
filesystem: {
client: {
autoStart: true,
},
session: {
configDiscovery: false,
agentDiscovery: false,
sessionStorage: "memory",
},
},
minimal: {
client: {
autoStart: true,
},
session: {
configDiscovery: false,
agentDiscovery: false,
sessionStorage: "memory",
},
},
};