@h-rig/contracts 0.0.6-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,14 @@
1
+ # Contracts Package
2
+
3
+ `@rig/contracts` is the shared schema and type surface across apps, runtime, and server.
4
+
5
+ ## Rules
6
+
7
+ - Prefer additive changes.
8
+ - If a contract changes, check web, desktop, runtime, and server callers in the same change.
9
+ - Keep the package framework-neutral.
10
+
11
+ ## Commands
12
+
13
+ - `bun run --filter=@rig/contracts build`
14
+ - `bun run --filter=@rig/contracts test`
@@ -0,0 +1,53 @@
1
+ // @bun
2
+ // packages/contracts/src/artifact.ts
3
+ import { Schema as Schema2 } from "effect";
4
+
5
+ // packages/contracts/src/baseSchemas.ts
6
+ import { Schema } from "effect";
7
+ var TrimmedString = Schema.Trim;
8
+ var TrimmedNonEmptyString = TrimmedString.check(Schema.isNonEmpty());
9
+ var NonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
10
+ var PositiveInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));
11
+ var IsoDateTime = Schema.String;
12
+ var makeEntityId = (brand) => TrimmedNonEmptyString.pipe(Schema.brand(brand));
13
+ var ThreadId = makeEntityId("ThreadId");
14
+ var ProjectId = makeEntityId("ProjectId");
15
+ var WorkspaceId = makeEntityId("WorkspaceId");
16
+ var GraphId = makeEntityId("GraphId");
17
+ var TaskId = makeEntityId("TaskId");
18
+ var RunId = makeEntityId("RunId");
19
+ var EngineRuntimeId = makeEntityId("EngineRuntimeId");
20
+ var ConversationId = makeEntityId("ConversationId");
21
+ var ActionId = makeEntityId("ActionId");
22
+ var ArtifactId = makeEntityId("ArtifactId");
23
+ var WorktreeId = makeEntityId("WorktreeId");
24
+ var ValidationResultId = makeEntityId("ValidationResultId");
25
+ var ReviewResultId = makeEntityId("ReviewResultId");
26
+ var CommandId = makeEntityId("CommandId");
27
+ var EventId = makeEntityId("EventId");
28
+ var MessageId = makeEntityId("MessageId");
29
+ var TurnId = makeEntityId("TurnId");
30
+ var ProviderItemId = makeEntityId("ProviderItemId");
31
+ var RuntimeSessionId = makeEntityId("RuntimeSessionId");
32
+ var RuntimeItemId = makeEntityId("RuntimeItemId");
33
+ var RuntimeRequestId = makeEntityId("RuntimeRequestId");
34
+ var RuntimeTaskId = makeEntityId("RuntimeTaskId");
35
+ var ApprovalRequestId = makeEntityId("ApprovalRequestId");
36
+ var CheckpointRef = makeEntityId("CheckpointRef");
37
+ var RemoteEndpointId = makeEntityId("RemoteEndpointId");
38
+
39
+ // packages/contracts/src/artifact.ts
40
+ var ArtifactSummary = Schema2.Struct({
41
+ id: ArtifactId,
42
+ runId: RunId,
43
+ taskId: Schema2.NullOr(TaskId),
44
+ kind: TrimmedNonEmptyString,
45
+ label: TrimmedNonEmptyString,
46
+ path: Schema2.NullOr(TrimmedNonEmptyString),
47
+ url: Schema2.NullOr(TrimmedNonEmptyString),
48
+ metadata: Schema2.Record(Schema2.String, Schema2.Unknown),
49
+ createdAt: IsoDateTime
50
+ });
51
+ export {
52
+ ArtifactSummary
53
+ };
@@ -0,0 +1,66 @@
1
+ // @bun
2
+ // packages/contracts/src/baseSchemas.ts
3
+ import { Schema } from "effect";
4
+ var TrimmedString = Schema.Trim;
5
+ var TrimmedNonEmptyString = TrimmedString.check(Schema.isNonEmpty());
6
+ var NonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
7
+ var PositiveInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));
8
+ var IsoDateTime = Schema.String;
9
+ var makeEntityId = (brand) => TrimmedNonEmptyString.pipe(Schema.brand(brand));
10
+ var ThreadId = makeEntityId("ThreadId");
11
+ var ProjectId = makeEntityId("ProjectId");
12
+ var WorkspaceId = makeEntityId("WorkspaceId");
13
+ var GraphId = makeEntityId("GraphId");
14
+ var TaskId = makeEntityId("TaskId");
15
+ var RunId = makeEntityId("RunId");
16
+ var EngineRuntimeId = makeEntityId("EngineRuntimeId");
17
+ var ConversationId = makeEntityId("ConversationId");
18
+ var ActionId = makeEntityId("ActionId");
19
+ var ArtifactId = makeEntityId("ArtifactId");
20
+ var WorktreeId = makeEntityId("WorktreeId");
21
+ var ValidationResultId = makeEntityId("ValidationResultId");
22
+ var ReviewResultId = makeEntityId("ReviewResultId");
23
+ var CommandId = makeEntityId("CommandId");
24
+ var EventId = makeEntityId("EventId");
25
+ var MessageId = makeEntityId("MessageId");
26
+ var TurnId = makeEntityId("TurnId");
27
+ var ProviderItemId = makeEntityId("ProviderItemId");
28
+ var RuntimeSessionId = makeEntityId("RuntimeSessionId");
29
+ var RuntimeItemId = makeEntityId("RuntimeItemId");
30
+ var RuntimeRequestId = makeEntityId("RuntimeRequestId");
31
+ var RuntimeTaskId = makeEntityId("RuntimeTaskId");
32
+ var ApprovalRequestId = makeEntityId("ApprovalRequestId");
33
+ var CheckpointRef = makeEntityId("CheckpointRef");
34
+ var RemoteEndpointId = makeEntityId("RemoteEndpointId");
35
+ export {
36
+ WorktreeId,
37
+ WorkspaceId,
38
+ ValidationResultId,
39
+ TurnId,
40
+ TrimmedString,
41
+ TrimmedNonEmptyString,
42
+ ThreadId,
43
+ TaskId,
44
+ RuntimeTaskId,
45
+ RuntimeSessionId,
46
+ RuntimeRequestId,
47
+ RuntimeItemId,
48
+ RunId,
49
+ ReviewResultId,
50
+ RemoteEndpointId,
51
+ ProviderItemId,
52
+ ProjectId,
53
+ PositiveInt,
54
+ NonNegativeInt,
55
+ MessageId,
56
+ IsoDateTime,
57
+ GraphId,
58
+ EventId,
59
+ EngineRuntimeId,
60
+ ConversationId,
61
+ CommandId,
62
+ CheckpointRef,
63
+ ArtifactId,
64
+ ApprovalRequestId,
65
+ ActionId
66
+ };
@@ -0,0 +1,214 @@
1
+ // @bun
2
+ // packages/contracts/src/config.ts
3
+ import { Schema as Schema2 } from "effect";
4
+
5
+ // packages/contracts/src/plugin.ts
6
+ import { Schema } from "effect";
7
+ var ValidatorCategory = Schema.Literals([
8
+ "boundary",
9
+ "contract",
10
+ "integration",
11
+ "regression",
12
+ "external",
13
+ "custom"
14
+ ]);
15
+ var ValidatorRegistration = Schema.Struct({
16
+ id: Schema.String,
17
+ category: ValidatorCategory,
18
+ description: Schema.optional(Schema.String)
19
+ });
20
+ var HookEvent = Schema.Literals([
21
+ "PreToolUse",
22
+ "PostToolUse",
23
+ "UserPromptSubmit",
24
+ "Stop",
25
+ "SessionStart",
26
+ "SessionEnd"
27
+ ]);
28
+ var HookMatcher = Schema.Union([
29
+ Schema.Struct({ kind: Schema.Literal("all") }),
30
+ Schema.Struct({ kind: Schema.Literal("tool"), name: Schema.String }),
31
+ Schema.Struct({ kind: Schema.Literal("glob"), pattern: Schema.String })
32
+ ]);
33
+ var HookRegistration = Schema.Struct({
34
+ id: Schema.String,
35
+ event: HookEvent,
36
+ matcher: HookMatcher,
37
+ command: Schema.optional(Schema.String),
38
+ description: Schema.optional(Schema.String)
39
+ });
40
+ var SkillRegistration = Schema.Struct({
41
+ id: Schema.String,
42
+ path: Schema.String,
43
+ description: Schema.optional(Schema.String)
44
+ });
45
+ var RepoSourceRegistration = Schema.Struct({
46
+ id: Schema.String,
47
+ url: Schema.String,
48
+ defaultPath: Schema.optional(Schema.String),
49
+ description: Schema.optional(Schema.String),
50
+ defaultBranch: Schema.optional(Schema.String),
51
+ remoteEnvVar: Schema.optional(Schema.String),
52
+ checkoutEnvVar: Schema.optional(Schema.String)
53
+ });
54
+ var AgentRoleRegistration = Schema.Struct({
55
+ id: Schema.String,
56
+ defaultModel: Schema.optional(Schema.String),
57
+ description: Schema.optional(Schema.String)
58
+ });
59
+ var TaskFieldExtension = Schema.Struct({
60
+ id: Schema.String,
61
+ fieldName: Schema.String,
62
+ schemaJson: Schema.String
63
+ });
64
+ var TaskSourceKind = Schema.String;
65
+ var TaskSourceRegistration = Schema.Struct({
66
+ id: Schema.String,
67
+ kind: Schema.String,
68
+ description: Schema.optional(Schema.String)
69
+ });
70
+ var CliCommandRegistration = Schema.Struct({
71
+ id: Schema.String,
72
+ command: Schema.String,
73
+ description: Schema.optional(Schema.String)
74
+ });
75
+ var PluginContributes = Schema.Struct({
76
+ validators: Schema.optional(Schema.Array(ValidatorRegistration)),
77
+ hooks: Schema.optional(Schema.Array(HookRegistration)),
78
+ skills: Schema.optional(Schema.Array(SkillRegistration)),
79
+ repoSources: Schema.optional(Schema.Array(RepoSourceRegistration)),
80
+ agentRoles: Schema.optional(Schema.Array(AgentRoleRegistration)),
81
+ taskFieldSchemas: Schema.optional(Schema.Array(TaskFieldExtension)),
82
+ taskSources: Schema.optional(Schema.Array(TaskSourceRegistration)),
83
+ cliCommands: Schema.optional(Schema.Array(CliCommandRegistration))
84
+ });
85
+ var RigPlugin = Schema.Struct({
86
+ name: Schema.String,
87
+ version: Schema.String,
88
+ contributes: Schema.optional(PluginContributes)
89
+ });
90
+
91
+ // packages/contracts/src/config.ts
92
+ var WorkspaceIsolation = Schema2.Literals([
93
+ "worktree",
94
+ "directory"
95
+ ]);
96
+ var ScopeSearchPrefix = Schema2.Struct({
97
+ prefix: Schema2.String,
98
+ matchStartsWith: Schema2.optional(Schema2.Array(Schema2.String)),
99
+ matchExact: Schema2.optional(Schema2.Array(Schema2.String))
100
+ });
101
+ var ScopeNormalizationRules = Schema2.Struct({
102
+ stripPrefixes: Schema2.optional(Schema2.Array(Schema2.String)),
103
+ searchPrefixes: Schema2.optional(Schema2.Array(ScopeSearchPrefix))
104
+ });
105
+ var WorkspaceConfig = Schema2.Struct({
106
+ mainRepo: Schema2.String,
107
+ isolation: WorkspaceIsolation,
108
+ scopeNormalization: Schema2.optional(ScopeNormalizationRules)
109
+ });
110
+ var TaskSourceConfig = Schema2.Struct({
111
+ kind: Schema2.String,
112
+ path: Schema2.optional(Schema2.String),
113
+ owner: Schema2.optional(Schema2.String),
114
+ repo: Schema2.optional(Schema2.String),
115
+ labels: Schema2.optional(Schema2.Array(Schema2.String)),
116
+ state: Schema2.optional(Schema2.Literals(["open", "closed", "all"])),
117
+ url: Schema2.optional(Schema2.String),
118
+ options: Schema2.optional(Schema2.Record(Schema2.String, Schema2.Unknown))
119
+ });
120
+ var RuntimeHarness = Schema2.Literals(["pi", "claude-code", "codex"]);
121
+ var RigRuntimeMode = Schema2.Literals(["yolo", "approval-required"]);
122
+ var RuntimeConfig = Schema2.Struct({
123
+ agentRoles: Schema2.optional(Schema2.Record(Schema2.String, Schema2.Unknown)),
124
+ timeouts: Schema2.optional(Schema2.Record(Schema2.String, Schema2.Number)),
125
+ harness: Schema2.optional(RuntimeHarness),
126
+ model: Schema2.optional(Schema2.String),
127
+ mode: Schema2.optional(RigRuntimeMode)
128
+ });
129
+ var ProjectIdentity = Schema2.Struct({
130
+ name: Schema2.String,
131
+ repo: Schema2.optional(Schema2.String)
132
+ });
133
+ var PlanningConfig = Schema2.Struct({
134
+ mode: Schema2.optional(Schema2.Literals(["auto", "always", "off"])),
135
+ requireForLabels: Schema2.optional(Schema2.Array(Schema2.String)),
136
+ skipForLabels: Schema2.optional(Schema2.Array(Schema2.String))
137
+ });
138
+ var GitHubProjectStatusConfig = Schema2.Struct({
139
+ enabled: Schema2.optional(Schema2.Boolean),
140
+ projectId: Schema2.optional(Schema2.String),
141
+ statusFieldId: Schema2.optional(Schema2.String),
142
+ statuses: Schema2.optional(Schema2.Struct({
143
+ running: Schema2.optional(Schema2.String),
144
+ prOpen: Schema2.optional(Schema2.String),
145
+ ciFixing: Schema2.optional(Schema2.String),
146
+ done: Schema2.optional(Schema2.String),
147
+ needsAttention: Schema2.optional(Schema2.String)
148
+ }))
149
+ });
150
+ var GitHubConfig = Schema2.Struct({
151
+ issueUpdates: Schema2.optional(Schema2.Literals(["lifecycle", "minimal", "off"])),
152
+ projects: Schema2.optional(GitHubProjectStatusConfig)
153
+ });
154
+ var AutomationConfig = Schema2.Struct({
155
+ maxValidationAttempts: Schema2.optional(Schema2.Number),
156
+ maxPrFixIterations: Schema2.optional(Schema2.Number)
157
+ });
158
+ var PullRequestConfig = Schema2.Struct({
159
+ mode: Schema2.optional(Schema2.Literals(["auto", "ask", "off"])),
160
+ watchChecks: Schema2.optional(Schema2.Boolean),
161
+ autoFixChecks: Schema2.optional(Schema2.Boolean),
162
+ autoFixReview: Schema2.optional(Schema2.Boolean)
163
+ });
164
+ var MergeConfig = Schema2.Struct({
165
+ mode: Schema2.optional(Schema2.Literals(["auto", "off", "pr-ready"])),
166
+ method: Schema2.optional(Schema2.Literals(["repo-default", "squash", "merge", "rebase"])),
167
+ deleteBranch: Schema2.optional(Schema2.Union([Schema2.Literal("repo-default"), Schema2.Boolean])),
168
+ allowedFailures: Schema2.optional(Schema2.Array(Schema2.String)),
169
+ bypass: Schema2.optional(Schema2.Boolean)
170
+ });
171
+ var IssueAnalysisConfig = Schema2.Struct({
172
+ enabled: Schema2.optional(Schema2.Boolean),
173
+ harness: Schema2.optional(Schema2.Literal("pi")),
174
+ model: Schema2.optional(Schema2.String),
175
+ mode: Schema2.optional(Schema2.Literals(["continuous", "off"]))
176
+ });
177
+ var ReviewConfig = Schema2.Struct({
178
+ mode: Schema2.optional(Schema2.Literals(["off", "advisory", "required"])),
179
+ provider: Schema2.optional(Schema2.Literal("greptile"))
180
+ });
181
+ var RigConfig = Schema2.Struct({
182
+ project: ProjectIdentity,
183
+ plugins: Schema2.Array(RigPlugin),
184
+ taskSource: TaskSourceConfig,
185
+ workspace: WorkspaceConfig,
186
+ runtime: Schema2.optional(RuntimeConfig),
187
+ planning: Schema2.optional(PlanningConfig),
188
+ github: Schema2.optional(GitHubConfig),
189
+ automation: Schema2.optional(AutomationConfig),
190
+ pr: Schema2.optional(PullRequestConfig),
191
+ merge: Schema2.optional(MergeConfig),
192
+ review: Schema2.optional(ReviewConfig),
193
+ issueAnalysis: Schema2.optional(IssueAnalysisConfig)
194
+ });
195
+ export {
196
+ WorkspaceIsolation,
197
+ WorkspaceConfig,
198
+ TaskSourceConfig,
199
+ ScopeSearchPrefix,
200
+ ScopeNormalizationRules,
201
+ RuntimeHarness,
202
+ RuntimeConfig,
203
+ RigRuntimeMode,
204
+ RigConfig,
205
+ ReviewConfig,
206
+ PullRequestConfig,
207
+ ProjectIdentity,
208
+ PlanningConfig,
209
+ MergeConfig,
210
+ IssueAnalysisConfig,
211
+ GitHubProjectStatusConfig,
212
+ GitHubConfig,
213
+ AutomationConfig
214
+ };
@@ -0,0 +1,95 @@
1
+ // @bun
2
+ // packages/contracts/src/conversation.ts
3
+ import { Schema as Schema2 } from "effect";
4
+
5
+ // packages/contracts/src/baseSchemas.ts
6
+ import { Schema } from "effect";
7
+ var TrimmedString = Schema.Trim;
8
+ var TrimmedNonEmptyString = TrimmedString.check(Schema.isNonEmpty());
9
+ var NonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
10
+ var PositiveInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));
11
+ var IsoDateTime = Schema.String;
12
+ var makeEntityId = (brand) => TrimmedNonEmptyString.pipe(Schema.brand(brand));
13
+ var ThreadId = makeEntityId("ThreadId");
14
+ var ProjectId = makeEntityId("ProjectId");
15
+ var WorkspaceId = makeEntityId("WorkspaceId");
16
+ var GraphId = makeEntityId("GraphId");
17
+ var TaskId = makeEntityId("TaskId");
18
+ var RunId = makeEntityId("RunId");
19
+ var EngineRuntimeId = makeEntityId("EngineRuntimeId");
20
+ var ConversationId = makeEntityId("ConversationId");
21
+ var ActionId = makeEntityId("ActionId");
22
+ var ArtifactId = makeEntityId("ArtifactId");
23
+ var WorktreeId = makeEntityId("WorktreeId");
24
+ var ValidationResultId = makeEntityId("ValidationResultId");
25
+ var ReviewResultId = makeEntityId("ReviewResultId");
26
+ var CommandId = makeEntityId("CommandId");
27
+ var EventId = makeEntityId("EventId");
28
+ var MessageId = makeEntityId("MessageId");
29
+ var TurnId = makeEntityId("TurnId");
30
+ var ProviderItemId = makeEntityId("ProviderItemId");
31
+ var RuntimeSessionId = makeEntityId("RuntimeSessionId");
32
+ var RuntimeItemId = makeEntityId("RuntimeItemId");
33
+ var RuntimeRequestId = makeEntityId("RuntimeRequestId");
34
+ var RuntimeTaskId = makeEntityId("RuntimeTaskId");
35
+ var ApprovalRequestId = makeEntityId("ApprovalRequestId");
36
+ var CheckpointRef = makeEntityId("CheckpointRef");
37
+ var RemoteEndpointId = makeEntityId("RemoteEndpointId");
38
+
39
+ // packages/contracts/src/conversation.ts
40
+ var EngineMessageRole = Schema2.Literals(["user", "assistant", "system"]);
41
+ var EngineMessageState = Schema2.Literals([
42
+ "streaming",
43
+ "completed",
44
+ "interrupted",
45
+ "errored"
46
+ ]);
47
+ var ConversationSummary = Schema2.Struct({
48
+ id: ConversationId,
49
+ runId: RunId,
50
+ title: TrimmedNonEmptyString,
51
+ createdAt: IsoDateTime,
52
+ updatedAt: IsoDateTime
53
+ });
54
+ var EngineMessage = Schema2.Struct({
55
+ id: MessageId,
56
+ conversationId: ConversationId,
57
+ role: EngineMessageRole,
58
+ text: Schema2.String,
59
+ attachments: Schema2.Array(Schema2.Unknown),
60
+ state: EngineMessageState,
61
+ createdAt: IsoDateTime,
62
+ completedAt: Schema2.NullOr(IsoDateTime)
63
+ });
64
+ var EngineAction = Schema2.Struct({
65
+ id: ActionId,
66
+ runId: RunId,
67
+ messageId: Schema2.NullOr(MessageId),
68
+ actionType: TrimmedNonEmptyString,
69
+ title: TrimmedNonEmptyString,
70
+ detail: Schema2.NullOr(Schema2.String),
71
+ state: TrimmedNonEmptyString,
72
+ payload: Schema2.Unknown,
73
+ startedAt: IsoDateTime,
74
+ completedAt: Schema2.NullOr(IsoDateTime)
75
+ });
76
+ var EngineLogTone = Schema2.Literals(["thinking", "tool", "info", "error"]);
77
+ var EngineRunLog = Schema2.Struct({
78
+ id: TrimmedNonEmptyString,
79
+ runId: RunId,
80
+ title: TrimmedNonEmptyString,
81
+ detail: Schema2.NullOr(Schema2.String),
82
+ tone: EngineLogTone,
83
+ status: Schema2.NullOr(TrimmedNonEmptyString),
84
+ payload: Schema2.Unknown,
85
+ createdAt: IsoDateTime
86
+ });
87
+ export {
88
+ EngineRunLog,
89
+ EngineMessageState,
90
+ EngineMessageRole,
91
+ EngineMessage,
92
+ EngineLogTone,
93
+ EngineAction,
94
+ ConversationSummary
95
+ };
@@ -0,0 +1,55 @@
1
+ // @bun
2
+ // packages/contracts/src/editor.ts
3
+ import { Schema as Schema2 } from "effect";
4
+
5
+ // packages/contracts/src/baseSchemas.ts
6
+ import { Schema } from "effect";
7
+ var TrimmedString = Schema.Trim;
8
+ var TrimmedNonEmptyString = TrimmedString.check(Schema.isNonEmpty());
9
+ var NonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
10
+ var PositiveInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));
11
+ var IsoDateTime = Schema.String;
12
+ var makeEntityId = (brand) => TrimmedNonEmptyString.pipe(Schema.brand(brand));
13
+ var ThreadId = makeEntityId("ThreadId");
14
+ var ProjectId = makeEntityId("ProjectId");
15
+ var WorkspaceId = makeEntityId("WorkspaceId");
16
+ var GraphId = makeEntityId("GraphId");
17
+ var TaskId = makeEntityId("TaskId");
18
+ var RunId = makeEntityId("RunId");
19
+ var EngineRuntimeId = makeEntityId("EngineRuntimeId");
20
+ var ConversationId = makeEntityId("ConversationId");
21
+ var ActionId = makeEntityId("ActionId");
22
+ var ArtifactId = makeEntityId("ArtifactId");
23
+ var WorktreeId = makeEntityId("WorktreeId");
24
+ var ValidationResultId = makeEntityId("ValidationResultId");
25
+ var ReviewResultId = makeEntityId("ReviewResultId");
26
+ var CommandId = makeEntityId("CommandId");
27
+ var EventId = makeEntityId("EventId");
28
+ var MessageId = makeEntityId("MessageId");
29
+ var TurnId = makeEntityId("TurnId");
30
+ var ProviderItemId = makeEntityId("ProviderItemId");
31
+ var RuntimeSessionId = makeEntityId("RuntimeSessionId");
32
+ var RuntimeItemId = makeEntityId("RuntimeItemId");
33
+ var RuntimeRequestId = makeEntityId("RuntimeRequestId");
34
+ var RuntimeTaskId = makeEntityId("RuntimeTaskId");
35
+ var ApprovalRequestId = makeEntityId("ApprovalRequestId");
36
+ var CheckpointRef = makeEntityId("CheckpointRef");
37
+ var RemoteEndpointId = makeEntityId("RemoteEndpointId");
38
+
39
+ // packages/contracts/src/editor.ts
40
+ var EDITORS = [
41
+ { id: "cursor", label: "Cursor", command: "cursor" },
42
+ { id: "vscode", label: "VS Code", command: "code" },
43
+ { id: "zed", label: "Zed", command: "zed" },
44
+ { id: "file-manager", label: "File Manager", command: null }
45
+ ];
46
+ var EditorId = Schema2.Literals(EDITORS.map((e) => e.id));
47
+ var OpenInEditorInput = Schema2.Struct({
48
+ cwd: TrimmedNonEmptyString,
49
+ editor: EditorId
50
+ });
51
+ export {
52
+ OpenInEditorInput,
53
+ EditorId,
54
+ EDITORS
55
+ };