-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathconfig.ts
More file actions
115 lines (100 loc) · 2.65 KB
/
Copy pathconfig.ts
File metadata and controls
115 lines (100 loc) · 2.65 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
export type AgentKind = "claude" | "codex";
export type AgentId = string;
export type RuntimeKind = "host" | "docker";
export interface CustomAgentConfig {
label: string;
startCommand: string;
resumeCommand?: string;
}
export type PaneKind = "agent" | "shell" | "command";
export type PaneSplit = "right" | "bottom";
export interface AutoPullConfig {
enabled: boolean;
intervalSeconds: number;
}
export interface WorkspaceConfig {
mainBranch: string;
worktreeRoot: string;
defaultAgent: AgentKind;
autoPull: AutoPullConfig;
}
export interface PaneTemplate {
id: string;
kind: PaneKind;
split?: PaneSplit;
sizePct?: number;
focus?: boolean;
command?: string;
cwd?: "worktree" | "repo";
workingDir?: string;
}
export interface MountSpec {
hostPath: string;
guestPath?: string;
writable?: boolean;
}
export interface ProfileConfig {
runtime: RuntimeKind;
systemPrompt?: string;
envPassthrough: string[];
yolo?: boolean;
panes: PaneTemplate[];
image?: string;
mounts?: MountSpec[];
}
export interface ServiceSpec {
name: string;
portEnv: string;
portStart?: number;
portStep?: number;
urlTemplate?: string;
}
export interface LinkedRepoConfig {
repo: string;
alias: string;
dir?: string;
}
export interface GitHubIntegrationConfig {
linkedRepos: LinkedRepoConfig[];
autoRemoveOnMerge: boolean;
}
export interface LinearIntegrationConfig {
enabled: boolean;
autoCreateWorktrees: boolean;
createTicketOption: boolean;
/** Restrict the auto-create watcher to issues from these team keys (e.g. ["ENG", "OPS"]).
* When unset, all teams the authenticated user is assigned in are watched. */
watchTeams?: string[];
/** When the auto-create watcher picks up an issue (creates a worktree or launches a
* oneshot), post a comment on the Linear issue announcing the pickup so external
* automation can track it. Defaults to false. */
postCommentOnPickup: boolean;
}
export interface IntegrationConfig {
github: GitHubIntegrationConfig;
linear: LinearIntegrationConfig;
}
export interface LifecycleHooksConfig {
postCreate?: string;
preRemove?: string;
}
export interface AutoNameConfig {
provider: "claude" | "codex";
model?: string;
systemPrompt?: string;
}
export interface OneshotConfig {
systemPrompt: string;
}
export interface ProjectConfig {
name: string;
workspace: WorkspaceConfig;
profiles: Record<string, ProfileConfig>;
agents: Record<AgentId, CustomAgentConfig>;
services: ServiceSpec[];
startupEnvs: Record<string, string | boolean>;
integrations: IntegrationConfig;
lifecycleHooks: LifecycleHooksConfig;
autoName: AutoNameConfig | null;
oneshot: OneshotConfig;
}