@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.
@@ -0,0 +1,1053 @@
1
+ // @bun
2
+ // packages/contracts/src/server.ts
3
+ import { Schema as Schema6 } 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/keybindings.ts
40
+ import { Schema as Schema2 } from "effect";
41
+ var MAX_KEYBINDING_VALUE_LENGTH = 64;
42
+ var MAX_KEYBINDING_WHEN_LENGTH = 256;
43
+ var MAX_SCRIPT_ID_LENGTH = 24;
44
+ var MAX_KEYBINDINGS_COUNT = 256;
45
+ var STATIC_KEYBINDING_COMMANDS = [
46
+ "terminal.toggle",
47
+ "terminal.split",
48
+ "terminal.new",
49
+ "terminal.close",
50
+ "diff.toggle",
51
+ "chat.new",
52
+ "chat.newLocal",
53
+ "editor.openFavorite"
54
+ ];
55
+ var SCRIPT_RUN_COMMAND_PATTERN = Schema2.TemplateLiteral([
56
+ Schema2.Literal("script."),
57
+ Schema2.NonEmptyString.check(Schema2.isMaxLength(MAX_SCRIPT_ID_LENGTH), Schema2.isPattern(/^[a-z0-9][a-z0-9-]*$/)),
58
+ Schema2.Literal(".run")
59
+ ]);
60
+ var KeybindingCommand = Schema2.Union([
61
+ Schema2.Literals(STATIC_KEYBINDING_COMMANDS),
62
+ SCRIPT_RUN_COMMAND_PATTERN
63
+ ]);
64
+ var KeybindingValue = TrimmedString.check(Schema2.isMinLength(1), Schema2.isMaxLength(MAX_KEYBINDING_VALUE_LENGTH));
65
+ var KeybindingWhen = TrimmedString.check(Schema2.isMinLength(1), Schema2.isMaxLength(MAX_KEYBINDING_WHEN_LENGTH));
66
+ var KeybindingRule = Schema2.Struct({
67
+ key: KeybindingValue,
68
+ command: KeybindingCommand,
69
+ when: Schema2.optional(KeybindingWhen)
70
+ });
71
+ var KeybindingsConfig = Schema2.Array(KeybindingRule).check(Schema2.isMaxLength(MAX_KEYBINDINGS_COUNT));
72
+ var KeybindingShortcut = Schema2.Struct({
73
+ key: KeybindingValue,
74
+ metaKey: Schema2.Boolean,
75
+ ctrlKey: Schema2.Boolean,
76
+ shiftKey: Schema2.Boolean,
77
+ altKey: Schema2.Boolean,
78
+ modKey: Schema2.Boolean
79
+ });
80
+ var KeybindingWhenNode = Schema2.Union([
81
+ Schema2.Struct({
82
+ type: Schema2.Literal("identifier"),
83
+ name: Schema2.NonEmptyString
84
+ }),
85
+ Schema2.Struct({
86
+ type: Schema2.Literal("not"),
87
+ node: Schema2.suspend(() => KeybindingWhenNode)
88
+ }),
89
+ Schema2.Struct({
90
+ type: Schema2.Literal("and"),
91
+ left: Schema2.suspend(() => KeybindingWhenNode),
92
+ right: Schema2.suspend(() => KeybindingWhenNode)
93
+ }),
94
+ Schema2.Struct({
95
+ type: Schema2.Literal("or"),
96
+ left: Schema2.suspend(() => KeybindingWhenNode),
97
+ right: Schema2.suspend(() => KeybindingWhenNode)
98
+ })
99
+ ]);
100
+ var ResolvedKeybindingRule = Schema2.Struct({
101
+ command: KeybindingCommand,
102
+ shortcut: KeybindingShortcut,
103
+ whenAst: Schema2.optional(KeybindingWhenNode)
104
+ }).annotate({ parseOptions: { onExcessProperty: "ignore" } });
105
+ var ResolvedKeybindingsConfig = Schema2.Array(ResolvedKeybindingRule).check(Schema2.isMaxLength(MAX_KEYBINDINGS_COUNT));
106
+
107
+ // packages/contracts/src/editor.ts
108
+ import { Schema as Schema3 } from "effect";
109
+ var EDITORS = [
110
+ { id: "cursor", label: "Cursor", command: "cursor" },
111
+ { id: "vscode", label: "VS Code", command: "code" },
112
+ { id: "zed", label: "Zed", command: "zed" },
113
+ { id: "file-manager", label: "File Manager", command: null }
114
+ ];
115
+ var EditorId = Schema3.Literals(EDITORS.map((e) => e.id));
116
+ var OpenInEditorInput = Schema3.Struct({
117
+ cwd: TrimmedNonEmptyString,
118
+ editor: EditorId
119
+ });
120
+
121
+ // packages/contracts/src/orchestration.ts
122
+ import { Option, Schema as Schema5, SchemaIssue, Struct } from "effect";
123
+
124
+ // packages/contracts/src/model.ts
125
+ import { Schema as Schema4 } from "effect";
126
+ var CODEX_REASONING_EFFORT_OPTIONS = ["xhigh", "high", "medium", "low"];
127
+ var CodexModelOptions = Schema4.Struct({
128
+ reasoningEffort: Schema4.optional(Schema4.Literals(CODEX_REASONING_EFFORT_OPTIONS)),
129
+ fastMode: Schema4.optional(Schema4.Boolean)
130
+ });
131
+ var ClaudeModelOptions = Schema4.Struct({});
132
+ var ProviderModelOptions = Schema4.Struct({
133
+ codex: Schema4.optional(CodexModelOptions),
134
+ claude: Schema4.optional(ClaudeModelOptions)
135
+ });
136
+
137
+ // packages/contracts/src/orchestration.ts
138
+ var ProviderKind = Schema5.Literals(["codex", "claude"]);
139
+ var ProviderApprovalPolicy = Schema5.Literals([
140
+ "untrusted",
141
+ "on-failure",
142
+ "on-request",
143
+ "never"
144
+ ]);
145
+ var ProviderSandboxMode = Schema5.Literals([
146
+ "read-only",
147
+ "workspace-write",
148
+ "danger-full-access"
149
+ ]);
150
+ var ProviderServiceTier = Schema5.Literals(["fast", "flex"]);
151
+ var RuntimeMode = Schema5.Literals(["approval-required", "full-access"]);
152
+ var DEFAULT_RUNTIME_MODE = "full-access";
153
+ var ProviderInteractionMode = Schema5.Literals(["default", "plan"]);
154
+ var DEFAULT_PROVIDER_INTERACTION_MODE = "default";
155
+ var ProviderRequestKind = Schema5.Literals(["command", "file-read", "file-change"]);
156
+ var AssistantDeliveryMode = Schema5.Literals(["buffered", "streaming"]);
157
+ var ProviderApprovalDecision = Schema5.Literals([
158
+ "accept",
159
+ "acceptForSession",
160
+ "decline",
161
+ "cancel"
162
+ ]);
163
+ var ProviderUserInputAnswers = Schema5.Record(Schema5.String, Schema5.Unknown);
164
+ var PROVIDER_SEND_TURN_MAX_IMAGE_BYTES = 10 * 1024 * 1024;
165
+ var PROVIDER_SEND_TURN_MAX_IMAGE_DATA_URL_CHARS = 14000000;
166
+ var CHAT_ATTACHMENT_ID_MAX_CHARS = 128;
167
+ var ChatAttachmentId = TrimmedNonEmptyString.check(Schema5.isMaxLength(CHAT_ATTACHMENT_ID_MAX_CHARS), Schema5.isPattern(/^[a-z0-9_-]+$/i));
168
+ var ChatImageAttachment = Schema5.Struct({
169
+ type: Schema5.Literal("image"),
170
+ id: ChatAttachmentId,
171
+ name: TrimmedNonEmptyString.check(Schema5.isMaxLength(255)),
172
+ mimeType: TrimmedNonEmptyString.check(Schema5.isMaxLength(100), Schema5.isPattern(/^image\//i)),
173
+ sizeBytes: NonNegativeInt.check(Schema5.isLessThanOrEqualTo(PROVIDER_SEND_TURN_MAX_IMAGE_BYTES))
174
+ });
175
+ var UploadChatImageAttachment = Schema5.Struct({
176
+ type: Schema5.Literal("image"),
177
+ name: TrimmedNonEmptyString.check(Schema5.isMaxLength(255)),
178
+ mimeType: TrimmedNonEmptyString.check(Schema5.isMaxLength(100), Schema5.isPattern(/^image\//i)),
179
+ sizeBytes: NonNegativeInt.check(Schema5.isLessThanOrEqualTo(PROVIDER_SEND_TURN_MAX_IMAGE_BYTES)),
180
+ dataUrl: TrimmedNonEmptyString.check(Schema5.isMaxLength(PROVIDER_SEND_TURN_MAX_IMAGE_DATA_URL_CHARS))
181
+ });
182
+ var ChatAttachment = Schema5.Union([ChatImageAttachment]);
183
+ var UploadChatAttachment = Schema5.Union([UploadChatImageAttachment]);
184
+ var ProjectScriptIcon = Schema5.Literals([
185
+ "play",
186
+ "test",
187
+ "lint",
188
+ "configure",
189
+ "build",
190
+ "debug"
191
+ ]);
192
+ var ProjectScript = Schema5.Struct({
193
+ id: TrimmedNonEmptyString,
194
+ name: TrimmedNonEmptyString,
195
+ command: TrimmedNonEmptyString,
196
+ icon: ProjectScriptIcon,
197
+ runOnWorktreeCreate: Schema5.Boolean
198
+ });
199
+ var OrchestrationProject = Schema5.Struct({
200
+ id: ProjectId,
201
+ title: TrimmedNonEmptyString,
202
+ workspaceRoot: TrimmedNonEmptyString,
203
+ defaultModel: Schema5.NullOr(TrimmedNonEmptyString),
204
+ scripts: Schema5.Array(ProjectScript),
205
+ createdAt: IsoDateTime,
206
+ updatedAt: IsoDateTime,
207
+ deletedAt: Schema5.NullOr(IsoDateTime)
208
+ });
209
+ var OrchestrationMessageRole = Schema5.Literals(["user", "assistant", "system"]);
210
+ var OrchestrationMessage = Schema5.Struct({
211
+ id: MessageId,
212
+ role: OrchestrationMessageRole,
213
+ text: Schema5.String,
214
+ attachments: Schema5.optional(Schema5.Array(ChatAttachment)),
215
+ turnId: Schema5.NullOr(TurnId),
216
+ streaming: Schema5.Boolean,
217
+ createdAt: IsoDateTime,
218
+ updatedAt: IsoDateTime
219
+ });
220
+ var OrchestrationProposedPlanId = TrimmedNonEmptyString;
221
+ var OrchestrationProposedPlan = Schema5.Struct({
222
+ id: OrchestrationProposedPlanId,
223
+ turnId: Schema5.NullOr(TurnId),
224
+ planMarkdown: TrimmedNonEmptyString,
225
+ createdAt: IsoDateTime,
226
+ updatedAt: IsoDateTime
227
+ });
228
+ var OrchestrationSessionStatus = Schema5.Literals([
229
+ "idle",
230
+ "starting",
231
+ "running",
232
+ "ready",
233
+ "interrupted",
234
+ "stopped",
235
+ "error"
236
+ ]);
237
+ var OrchestrationSession = Schema5.Struct({
238
+ threadId: ThreadId,
239
+ status: OrchestrationSessionStatus,
240
+ providerName: Schema5.NullOr(TrimmedNonEmptyString),
241
+ runtimeMode: RuntimeMode.pipe(Schema5.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
242
+ activeTurnId: Schema5.NullOr(TurnId),
243
+ lastError: Schema5.NullOr(TrimmedNonEmptyString),
244
+ updatedAt: IsoDateTime
245
+ });
246
+ var OrchestrationCheckpointFile = Schema5.Struct({
247
+ path: TrimmedNonEmptyString,
248
+ kind: TrimmedNonEmptyString,
249
+ additions: NonNegativeInt,
250
+ deletions: NonNegativeInt
251
+ });
252
+ var OrchestrationCheckpointStatus = Schema5.Literals(["ready", "missing", "error"]);
253
+ var OrchestrationCheckpointSummary = Schema5.Struct({
254
+ turnId: TurnId,
255
+ checkpointTurnCount: NonNegativeInt,
256
+ checkpointRef: CheckpointRef,
257
+ status: OrchestrationCheckpointStatus,
258
+ files: Schema5.Array(OrchestrationCheckpointFile),
259
+ assistantMessageId: Schema5.NullOr(MessageId),
260
+ completedAt: IsoDateTime
261
+ });
262
+ var OrchestrationThreadActivityTone = Schema5.Literals([
263
+ "info",
264
+ "tool",
265
+ "approval",
266
+ "error"
267
+ ]);
268
+ var OrchestrationThreadActivity = Schema5.Struct({
269
+ id: EventId,
270
+ tone: OrchestrationThreadActivityTone,
271
+ kind: TrimmedNonEmptyString,
272
+ summary: TrimmedNonEmptyString,
273
+ payload: Schema5.Unknown,
274
+ turnId: Schema5.NullOr(TurnId),
275
+ sequence: Schema5.optional(NonNegativeInt),
276
+ createdAt: IsoDateTime
277
+ });
278
+ var OrchestrationLatestTurnState = Schema5.Literals([
279
+ "running",
280
+ "interrupted",
281
+ "completed",
282
+ "error"
283
+ ]);
284
+ var OrchestrationLatestTurn = Schema5.Struct({
285
+ turnId: TurnId,
286
+ state: OrchestrationLatestTurnState,
287
+ requestedAt: IsoDateTime,
288
+ startedAt: Schema5.NullOr(IsoDateTime),
289
+ completedAt: Schema5.NullOr(IsoDateTime),
290
+ assistantMessageId: Schema5.NullOr(MessageId)
291
+ });
292
+ var OrchestrationThread = Schema5.Struct({
293
+ id: ThreadId,
294
+ projectId: ProjectId,
295
+ title: TrimmedNonEmptyString,
296
+ model: TrimmedNonEmptyString,
297
+ runtimeMode: RuntimeMode,
298
+ interactionMode: ProviderInteractionMode.pipe(Schema5.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
299
+ branch: Schema5.NullOr(TrimmedNonEmptyString),
300
+ worktreePath: Schema5.NullOr(TrimmedNonEmptyString),
301
+ latestTurn: Schema5.NullOr(OrchestrationLatestTurn),
302
+ createdAt: IsoDateTime,
303
+ updatedAt: IsoDateTime,
304
+ deletedAt: Schema5.NullOr(IsoDateTime),
305
+ messages: Schema5.Array(OrchestrationMessage),
306
+ proposedPlans: Schema5.Array(OrchestrationProposedPlan).pipe(Schema5.withDecodingDefault(() => [])),
307
+ activities: Schema5.Array(OrchestrationThreadActivity),
308
+ checkpoints: Schema5.Array(OrchestrationCheckpointSummary),
309
+ session: Schema5.NullOr(OrchestrationSession)
310
+ });
311
+ var OrchestrationReadModel = Schema5.Struct({
312
+ snapshotSequence: NonNegativeInt,
313
+ projects: Schema5.Array(OrchestrationProject),
314
+ threads: Schema5.Array(OrchestrationThread),
315
+ updatedAt: IsoDateTime
316
+ });
317
+ var ProjectCreateCommand = Schema5.Struct({
318
+ type: Schema5.Literal("project.create"),
319
+ commandId: CommandId,
320
+ projectId: ProjectId,
321
+ title: TrimmedNonEmptyString,
322
+ workspaceRoot: TrimmedNonEmptyString,
323
+ defaultModel: Schema5.optional(TrimmedNonEmptyString),
324
+ createdAt: IsoDateTime
325
+ });
326
+ var ProjectMetaUpdateCommand = Schema5.Struct({
327
+ type: Schema5.Literal("project.meta.update"),
328
+ commandId: CommandId,
329
+ projectId: ProjectId,
330
+ title: Schema5.optional(TrimmedNonEmptyString),
331
+ workspaceRoot: Schema5.optional(TrimmedNonEmptyString),
332
+ defaultModel: Schema5.optional(TrimmedNonEmptyString),
333
+ scripts: Schema5.optional(Schema5.Array(ProjectScript))
334
+ });
335
+ var ProjectDeleteCommand = Schema5.Struct({
336
+ type: Schema5.Literal("project.delete"),
337
+ commandId: CommandId,
338
+ projectId: ProjectId
339
+ });
340
+ var ThreadCreateCommand = Schema5.Struct({
341
+ type: Schema5.Literal("thread.create"),
342
+ commandId: CommandId,
343
+ threadId: ThreadId,
344
+ projectId: ProjectId,
345
+ title: TrimmedNonEmptyString,
346
+ model: TrimmedNonEmptyString,
347
+ runtimeMode: RuntimeMode,
348
+ interactionMode: ProviderInteractionMode.pipe(Schema5.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
349
+ branch: Schema5.NullOr(TrimmedNonEmptyString),
350
+ worktreePath: Schema5.NullOr(TrimmedNonEmptyString),
351
+ createdAt: IsoDateTime
352
+ });
353
+ var ThreadDeleteCommand = Schema5.Struct({
354
+ type: Schema5.Literal("thread.delete"),
355
+ commandId: CommandId,
356
+ threadId: ThreadId
357
+ });
358
+ var ThreadMetaUpdateCommand = Schema5.Struct({
359
+ type: Schema5.Literal("thread.meta.update"),
360
+ commandId: CommandId,
361
+ threadId: ThreadId,
362
+ title: Schema5.optional(TrimmedNonEmptyString),
363
+ model: Schema5.optional(TrimmedNonEmptyString),
364
+ branch: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
365
+ worktreePath: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString))
366
+ });
367
+ var ThreadRuntimeModeSetCommand = Schema5.Struct({
368
+ type: Schema5.Literal("thread.runtime-mode.set"),
369
+ commandId: CommandId,
370
+ threadId: ThreadId,
371
+ runtimeMode: RuntimeMode,
372
+ createdAt: IsoDateTime
373
+ });
374
+ var ThreadInteractionModeSetCommand = Schema5.Struct({
375
+ type: Schema5.Literal("thread.interaction-mode.set"),
376
+ commandId: CommandId,
377
+ threadId: ThreadId,
378
+ interactionMode: ProviderInteractionMode,
379
+ createdAt: IsoDateTime
380
+ });
381
+ var ThreadTurnStartCommand = Schema5.Struct({
382
+ type: Schema5.Literal("thread.turn.start"),
383
+ commandId: CommandId,
384
+ threadId: ThreadId,
385
+ message: Schema5.Struct({
386
+ messageId: MessageId,
387
+ role: Schema5.Literal("user"),
388
+ text: Schema5.String,
389
+ attachments: Schema5.Array(ChatAttachment)
390
+ }),
391
+ provider: Schema5.optional(ProviderKind),
392
+ model: Schema5.optional(TrimmedNonEmptyString),
393
+ serviceTier: Schema5.optional(Schema5.NullOr(ProviderServiceTier)),
394
+ modelOptions: Schema5.optional(ProviderModelOptions),
395
+ assistantDeliveryMode: Schema5.optional(AssistantDeliveryMode),
396
+ runtimeMode: RuntimeMode.pipe(Schema5.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
397
+ interactionMode: ProviderInteractionMode.pipe(Schema5.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
398
+ createdAt: IsoDateTime
399
+ });
400
+ var ClientThreadTurnStartCommand = Schema5.Struct({
401
+ type: Schema5.Literal("thread.turn.start"),
402
+ commandId: CommandId,
403
+ threadId: ThreadId,
404
+ message: Schema5.Struct({
405
+ messageId: MessageId,
406
+ role: Schema5.Literal("user"),
407
+ text: Schema5.String,
408
+ attachments: Schema5.Array(UploadChatAttachment)
409
+ }),
410
+ provider: Schema5.optional(ProviderKind),
411
+ model: Schema5.optional(TrimmedNonEmptyString),
412
+ serviceTier: Schema5.optional(Schema5.NullOr(ProviderServiceTier)),
413
+ modelOptions: Schema5.optional(ProviderModelOptions),
414
+ assistantDeliveryMode: Schema5.optional(AssistantDeliveryMode),
415
+ runtimeMode: RuntimeMode,
416
+ interactionMode: ProviderInteractionMode,
417
+ createdAt: IsoDateTime
418
+ });
419
+ var ThreadTurnInterruptCommand = Schema5.Struct({
420
+ type: Schema5.Literal("thread.turn.interrupt"),
421
+ commandId: CommandId,
422
+ threadId: ThreadId,
423
+ turnId: Schema5.optional(TurnId),
424
+ createdAt: IsoDateTime
425
+ });
426
+ var ThreadApprovalRespondCommand = Schema5.Struct({
427
+ type: Schema5.Literal("thread.approval.respond"),
428
+ commandId: CommandId,
429
+ threadId: ThreadId,
430
+ requestId: ApprovalRequestId,
431
+ decision: ProviderApprovalDecision,
432
+ createdAt: IsoDateTime
433
+ });
434
+ var ThreadUserInputRespondCommand = Schema5.Struct({
435
+ type: Schema5.Literal("thread.user-input.respond"),
436
+ commandId: CommandId,
437
+ threadId: ThreadId,
438
+ requestId: ApprovalRequestId,
439
+ answers: ProviderUserInputAnswers,
440
+ createdAt: IsoDateTime
441
+ });
442
+ var ThreadCheckpointRevertCommand = Schema5.Struct({
443
+ type: Schema5.Literal("thread.checkpoint.revert"),
444
+ commandId: CommandId,
445
+ threadId: ThreadId,
446
+ turnCount: NonNegativeInt,
447
+ createdAt: IsoDateTime
448
+ });
449
+ var ThreadSessionStopCommand = Schema5.Struct({
450
+ type: Schema5.Literal("thread.session.stop"),
451
+ commandId: CommandId,
452
+ threadId: ThreadId,
453
+ createdAt: IsoDateTime
454
+ });
455
+ var DispatchableClientOrchestrationCommand = Schema5.Union([
456
+ ProjectCreateCommand,
457
+ ProjectMetaUpdateCommand,
458
+ ProjectDeleteCommand,
459
+ ThreadCreateCommand,
460
+ ThreadDeleteCommand,
461
+ ThreadMetaUpdateCommand,
462
+ ThreadRuntimeModeSetCommand,
463
+ ThreadInteractionModeSetCommand,
464
+ ThreadTurnStartCommand,
465
+ ThreadTurnInterruptCommand,
466
+ ThreadApprovalRespondCommand,
467
+ ThreadUserInputRespondCommand,
468
+ ThreadCheckpointRevertCommand,
469
+ ThreadSessionStopCommand
470
+ ]);
471
+ var ClientOrchestrationCommand = Schema5.Union([
472
+ ProjectCreateCommand,
473
+ ProjectMetaUpdateCommand,
474
+ ProjectDeleteCommand,
475
+ ThreadCreateCommand,
476
+ ThreadDeleteCommand,
477
+ ThreadMetaUpdateCommand,
478
+ ThreadRuntimeModeSetCommand,
479
+ ThreadInteractionModeSetCommand,
480
+ ClientThreadTurnStartCommand,
481
+ ThreadTurnInterruptCommand,
482
+ ThreadApprovalRespondCommand,
483
+ ThreadUserInputRespondCommand,
484
+ ThreadCheckpointRevertCommand,
485
+ ThreadSessionStopCommand
486
+ ]);
487
+ var ThreadSessionSetCommand = Schema5.Struct({
488
+ type: Schema5.Literal("thread.session.set"),
489
+ commandId: CommandId,
490
+ threadId: ThreadId,
491
+ session: OrchestrationSession,
492
+ createdAt: IsoDateTime
493
+ });
494
+ var ThreadMessageAssistantDeltaCommand = Schema5.Struct({
495
+ type: Schema5.Literal("thread.message.assistant.delta"),
496
+ commandId: CommandId,
497
+ threadId: ThreadId,
498
+ messageId: MessageId,
499
+ delta: Schema5.String,
500
+ turnId: Schema5.optional(TurnId),
501
+ createdAt: IsoDateTime
502
+ });
503
+ var ThreadMessageAssistantCompleteCommand = Schema5.Struct({
504
+ type: Schema5.Literal("thread.message.assistant.complete"),
505
+ commandId: CommandId,
506
+ threadId: ThreadId,
507
+ messageId: MessageId,
508
+ turnId: Schema5.optional(TurnId),
509
+ createdAt: IsoDateTime
510
+ });
511
+ var ThreadProposedPlanUpsertCommand = Schema5.Struct({
512
+ type: Schema5.Literal("thread.proposed-plan.upsert"),
513
+ commandId: CommandId,
514
+ threadId: ThreadId,
515
+ proposedPlan: OrchestrationProposedPlan,
516
+ createdAt: IsoDateTime
517
+ });
518
+ var ThreadTurnDiffCompleteCommand = Schema5.Struct({
519
+ type: Schema5.Literal("thread.turn.diff.complete"),
520
+ commandId: CommandId,
521
+ threadId: ThreadId,
522
+ turnId: TurnId,
523
+ completedAt: IsoDateTime,
524
+ checkpointRef: CheckpointRef,
525
+ status: OrchestrationCheckpointStatus,
526
+ files: Schema5.Array(OrchestrationCheckpointFile),
527
+ assistantMessageId: Schema5.optional(MessageId),
528
+ checkpointTurnCount: NonNegativeInt,
529
+ createdAt: IsoDateTime
530
+ });
531
+ var ThreadActivityAppendCommand = Schema5.Struct({
532
+ type: Schema5.Literal("thread.activity.append"),
533
+ commandId: CommandId,
534
+ threadId: ThreadId,
535
+ activity: OrchestrationThreadActivity,
536
+ createdAt: IsoDateTime
537
+ });
538
+ var ThreadRevertCompleteCommand = Schema5.Struct({
539
+ type: Schema5.Literal("thread.revert.complete"),
540
+ commandId: CommandId,
541
+ threadId: ThreadId,
542
+ turnCount: NonNegativeInt,
543
+ createdAt: IsoDateTime
544
+ });
545
+ var InternalOrchestrationCommand = Schema5.Union([
546
+ ThreadSessionSetCommand,
547
+ ThreadMessageAssistantDeltaCommand,
548
+ ThreadMessageAssistantCompleteCommand,
549
+ ThreadProposedPlanUpsertCommand,
550
+ ThreadTurnDiffCompleteCommand,
551
+ ThreadActivityAppendCommand,
552
+ ThreadRevertCompleteCommand
553
+ ]);
554
+ var OrchestrationCommand = Schema5.Union([
555
+ DispatchableClientOrchestrationCommand,
556
+ InternalOrchestrationCommand
557
+ ]);
558
+ var OrchestrationEventType = Schema5.Literals([
559
+ "project.created",
560
+ "project.meta-updated",
561
+ "project.deleted",
562
+ "thread.created",
563
+ "thread.deleted",
564
+ "thread.meta-updated",
565
+ "thread.runtime-mode-set",
566
+ "thread.interaction-mode-set",
567
+ "thread.message-sent",
568
+ "thread.turn-start-requested",
569
+ "thread.turn-interrupt-requested",
570
+ "thread.approval-response-requested",
571
+ "thread.user-input-response-requested",
572
+ "thread.checkpoint-revert-requested",
573
+ "thread.reverted",
574
+ "thread.session-stop-requested",
575
+ "thread.session-set",
576
+ "thread.proposed-plan-upserted",
577
+ "thread.turn-diff-completed",
578
+ "thread.activity-appended"
579
+ ]);
580
+ var OrchestrationAggregateKind = Schema5.Literals(["project", "thread"]);
581
+ var OrchestrationActorKind = Schema5.Literals(["client", "server", "provider"]);
582
+ var ProjectCreatedPayload = Schema5.Struct({
583
+ projectId: ProjectId,
584
+ title: TrimmedNonEmptyString,
585
+ workspaceRoot: TrimmedNonEmptyString,
586
+ defaultModel: Schema5.NullOr(TrimmedNonEmptyString),
587
+ scripts: Schema5.Array(ProjectScript),
588
+ createdAt: IsoDateTime,
589
+ updatedAt: IsoDateTime
590
+ });
591
+ var ProjectMetaUpdatedPayload = Schema5.Struct({
592
+ projectId: ProjectId,
593
+ title: Schema5.optional(TrimmedNonEmptyString),
594
+ workspaceRoot: Schema5.optional(TrimmedNonEmptyString),
595
+ defaultModel: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
596
+ scripts: Schema5.optional(Schema5.Array(ProjectScript)),
597
+ updatedAt: IsoDateTime
598
+ });
599
+ var ProjectDeletedPayload = Schema5.Struct({
600
+ projectId: ProjectId,
601
+ deletedAt: IsoDateTime
602
+ });
603
+ var ThreadCreatedPayload = Schema5.Struct({
604
+ threadId: ThreadId,
605
+ projectId: ProjectId,
606
+ title: TrimmedNonEmptyString,
607
+ model: TrimmedNonEmptyString,
608
+ runtimeMode: RuntimeMode.pipe(Schema5.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
609
+ interactionMode: ProviderInteractionMode.pipe(Schema5.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
610
+ branch: Schema5.NullOr(TrimmedNonEmptyString),
611
+ worktreePath: Schema5.NullOr(TrimmedNonEmptyString),
612
+ createdAt: IsoDateTime,
613
+ updatedAt: IsoDateTime
614
+ });
615
+ var ThreadDeletedPayload = Schema5.Struct({
616
+ threadId: ThreadId,
617
+ deletedAt: IsoDateTime
618
+ });
619
+ var ThreadMetaUpdatedPayload = Schema5.Struct({
620
+ threadId: ThreadId,
621
+ title: Schema5.optional(TrimmedNonEmptyString),
622
+ model: Schema5.optional(TrimmedNonEmptyString),
623
+ branch: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
624
+ worktreePath: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
625
+ updatedAt: IsoDateTime
626
+ });
627
+ var ThreadRuntimeModeSetPayload = Schema5.Struct({
628
+ threadId: ThreadId,
629
+ runtimeMode: RuntimeMode,
630
+ updatedAt: IsoDateTime
631
+ });
632
+ var ThreadInteractionModeSetPayload = Schema5.Struct({
633
+ threadId: ThreadId,
634
+ interactionMode: ProviderInteractionMode.pipe(Schema5.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
635
+ updatedAt: IsoDateTime
636
+ });
637
+ var ThreadMessageSentPayload = Schema5.Struct({
638
+ threadId: ThreadId,
639
+ messageId: MessageId,
640
+ role: OrchestrationMessageRole,
641
+ text: Schema5.String,
642
+ attachments: Schema5.optional(Schema5.Array(ChatAttachment)),
643
+ turnId: Schema5.NullOr(TurnId),
644
+ streaming: Schema5.Boolean,
645
+ createdAt: IsoDateTime,
646
+ updatedAt: IsoDateTime
647
+ });
648
+ var ThreadTurnStartRequestedPayload = Schema5.Struct({
649
+ threadId: ThreadId,
650
+ messageId: MessageId,
651
+ provider: Schema5.optional(ProviderKind),
652
+ model: Schema5.optional(TrimmedNonEmptyString),
653
+ serviceTier: Schema5.optional(Schema5.NullOr(ProviderServiceTier)),
654
+ modelOptions: Schema5.optional(ProviderModelOptions),
655
+ assistantDeliveryMode: Schema5.optional(AssistantDeliveryMode),
656
+ runtimeMode: RuntimeMode.pipe(Schema5.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
657
+ interactionMode: ProviderInteractionMode.pipe(Schema5.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
658
+ createdAt: IsoDateTime
659
+ });
660
+ var ThreadTurnInterruptRequestedPayload = Schema5.Struct({
661
+ threadId: ThreadId,
662
+ turnId: Schema5.optional(TurnId),
663
+ createdAt: IsoDateTime
664
+ });
665
+ var ThreadApprovalResponseRequestedPayload = Schema5.Struct({
666
+ threadId: ThreadId,
667
+ requestId: ApprovalRequestId,
668
+ decision: ProviderApprovalDecision,
669
+ createdAt: IsoDateTime
670
+ });
671
+ var ThreadUserInputResponseRequestedPayload = Schema5.Struct({
672
+ threadId: ThreadId,
673
+ requestId: ApprovalRequestId,
674
+ answers: ProviderUserInputAnswers,
675
+ createdAt: IsoDateTime
676
+ });
677
+ var ThreadCheckpointRevertRequestedPayload = Schema5.Struct({
678
+ threadId: ThreadId,
679
+ turnCount: NonNegativeInt,
680
+ createdAt: IsoDateTime
681
+ });
682
+ var ThreadRevertedPayload = Schema5.Struct({
683
+ threadId: ThreadId,
684
+ turnCount: NonNegativeInt
685
+ });
686
+ var ThreadSessionStopRequestedPayload = Schema5.Struct({
687
+ threadId: ThreadId,
688
+ createdAt: IsoDateTime
689
+ });
690
+ var ThreadSessionSetPayload = Schema5.Struct({
691
+ threadId: ThreadId,
692
+ session: OrchestrationSession
693
+ });
694
+ var ThreadProposedPlanUpsertedPayload = Schema5.Struct({
695
+ threadId: ThreadId,
696
+ proposedPlan: OrchestrationProposedPlan
697
+ });
698
+ var ThreadTurnDiffCompletedPayload = Schema5.Struct({
699
+ threadId: ThreadId,
700
+ turnId: TurnId,
701
+ checkpointTurnCount: NonNegativeInt,
702
+ checkpointRef: CheckpointRef,
703
+ status: OrchestrationCheckpointStatus,
704
+ files: Schema5.Array(OrchestrationCheckpointFile),
705
+ assistantMessageId: Schema5.NullOr(MessageId),
706
+ completedAt: IsoDateTime
707
+ });
708
+ var ThreadActivityAppendedPayload = Schema5.Struct({
709
+ threadId: ThreadId,
710
+ activity: OrchestrationThreadActivity
711
+ });
712
+ var OrchestrationEventMetadata = Schema5.Struct({
713
+ providerTurnId: Schema5.optional(TrimmedNonEmptyString),
714
+ providerItemId: Schema5.optional(ProviderItemId),
715
+ adapterKey: Schema5.optional(TrimmedNonEmptyString),
716
+ requestId: Schema5.optional(ApprovalRequestId),
717
+ ingestedAt: Schema5.optional(IsoDateTime)
718
+ });
719
+ var EventBaseFields = {
720
+ sequence: NonNegativeInt,
721
+ eventId: EventId,
722
+ aggregateKind: OrchestrationAggregateKind,
723
+ aggregateId: Schema5.Union([ProjectId, ThreadId]),
724
+ occurredAt: IsoDateTime,
725
+ commandId: Schema5.NullOr(CommandId),
726
+ causationEventId: Schema5.NullOr(EventId),
727
+ correlationId: Schema5.NullOr(CommandId),
728
+ metadata: OrchestrationEventMetadata
729
+ };
730
+ var PersistedEventBaseFields = {
731
+ sequence: NonNegativeInt,
732
+ eventId: EventId,
733
+ aggregateKind: OrchestrationAggregateKind,
734
+ streamId: Schema5.Union([ProjectId, ThreadId]),
735
+ streamVersion: NonNegativeInt,
736
+ occurredAt: IsoDateTime,
737
+ commandId: Schema5.NullOr(CommandId),
738
+ causationEventId: Schema5.NullOr(EventId),
739
+ correlationId: Schema5.NullOr(CommandId),
740
+ actorKind: OrchestrationActorKind,
741
+ metadata: OrchestrationEventMetadata
742
+ };
743
+ var OrchestrationEvent = Schema5.Union([
744
+ Schema5.Struct({
745
+ ...EventBaseFields,
746
+ type: Schema5.Literal("project.created"),
747
+ payload: ProjectCreatedPayload
748
+ }),
749
+ Schema5.Struct({
750
+ ...EventBaseFields,
751
+ type: Schema5.Literal("project.meta-updated"),
752
+ payload: ProjectMetaUpdatedPayload
753
+ }),
754
+ Schema5.Struct({
755
+ ...EventBaseFields,
756
+ type: Schema5.Literal("project.deleted"),
757
+ payload: ProjectDeletedPayload
758
+ }),
759
+ Schema5.Struct({
760
+ ...EventBaseFields,
761
+ type: Schema5.Literal("thread.created"),
762
+ payload: ThreadCreatedPayload
763
+ }),
764
+ Schema5.Struct({
765
+ ...EventBaseFields,
766
+ type: Schema5.Literal("thread.deleted"),
767
+ payload: ThreadDeletedPayload
768
+ }),
769
+ Schema5.Struct({
770
+ ...EventBaseFields,
771
+ type: Schema5.Literal("thread.meta-updated"),
772
+ payload: ThreadMetaUpdatedPayload
773
+ }),
774
+ Schema5.Struct({
775
+ ...EventBaseFields,
776
+ type: Schema5.Literal("thread.runtime-mode-set"),
777
+ payload: ThreadRuntimeModeSetPayload
778
+ }),
779
+ Schema5.Struct({
780
+ ...EventBaseFields,
781
+ type: Schema5.Literal("thread.interaction-mode-set"),
782
+ payload: ThreadInteractionModeSetPayload
783
+ }),
784
+ Schema5.Struct({
785
+ ...EventBaseFields,
786
+ type: Schema5.Literal("thread.message-sent"),
787
+ payload: ThreadMessageSentPayload
788
+ }),
789
+ Schema5.Struct({
790
+ ...EventBaseFields,
791
+ type: Schema5.Literal("thread.turn-start-requested"),
792
+ payload: ThreadTurnStartRequestedPayload
793
+ }),
794
+ Schema5.Struct({
795
+ ...EventBaseFields,
796
+ type: Schema5.Literal("thread.turn-interrupt-requested"),
797
+ payload: ThreadTurnInterruptRequestedPayload
798
+ }),
799
+ Schema5.Struct({
800
+ ...EventBaseFields,
801
+ type: Schema5.Literal("thread.approval-response-requested"),
802
+ payload: ThreadApprovalResponseRequestedPayload
803
+ }),
804
+ Schema5.Struct({
805
+ ...EventBaseFields,
806
+ type: Schema5.Literal("thread.user-input-response-requested"),
807
+ payload: ThreadUserInputResponseRequestedPayload
808
+ }),
809
+ Schema5.Struct({
810
+ ...EventBaseFields,
811
+ type: Schema5.Literal("thread.checkpoint-revert-requested"),
812
+ payload: ThreadCheckpointRevertRequestedPayload
813
+ }),
814
+ Schema5.Struct({
815
+ ...EventBaseFields,
816
+ type: Schema5.Literal("thread.reverted"),
817
+ payload: ThreadRevertedPayload
818
+ }),
819
+ Schema5.Struct({
820
+ ...EventBaseFields,
821
+ type: Schema5.Literal("thread.session-stop-requested"),
822
+ payload: ThreadSessionStopRequestedPayload
823
+ }),
824
+ Schema5.Struct({
825
+ ...EventBaseFields,
826
+ type: Schema5.Literal("thread.session-set"),
827
+ payload: ThreadSessionSetPayload
828
+ }),
829
+ Schema5.Struct({
830
+ ...EventBaseFields,
831
+ type: Schema5.Literal("thread.proposed-plan-upserted"),
832
+ payload: ThreadProposedPlanUpsertedPayload
833
+ }),
834
+ Schema5.Struct({
835
+ ...EventBaseFields,
836
+ type: Schema5.Literal("thread.turn-diff-completed"),
837
+ payload: ThreadTurnDiffCompletedPayload
838
+ }),
839
+ Schema5.Struct({
840
+ ...EventBaseFields,
841
+ type: Schema5.Literal("thread.activity-appended"),
842
+ payload: ThreadActivityAppendedPayload
843
+ })
844
+ ]);
845
+ var OrchestrationPersistedEvent = Schema5.Union([
846
+ Schema5.Struct({
847
+ ...PersistedEventBaseFields,
848
+ eventType: Schema5.Literal("project.created"),
849
+ payload: ProjectCreatedPayload
850
+ }),
851
+ Schema5.Struct({
852
+ ...PersistedEventBaseFields,
853
+ eventType: Schema5.Literal("project.meta-updated"),
854
+ payload: ProjectMetaUpdatedPayload
855
+ }),
856
+ Schema5.Struct({
857
+ ...PersistedEventBaseFields,
858
+ eventType: Schema5.Literal("project.deleted"),
859
+ payload: ProjectDeletedPayload
860
+ }),
861
+ Schema5.Struct({
862
+ ...PersistedEventBaseFields,
863
+ eventType: Schema5.Literal("thread.created"),
864
+ payload: ThreadCreatedPayload
865
+ }),
866
+ Schema5.Struct({
867
+ ...PersistedEventBaseFields,
868
+ eventType: Schema5.Literal("thread.deleted"),
869
+ payload: ThreadDeletedPayload
870
+ }),
871
+ Schema5.Struct({
872
+ ...PersistedEventBaseFields,
873
+ eventType: Schema5.Literal("thread.meta-updated"),
874
+ payload: ThreadMetaUpdatedPayload
875
+ }),
876
+ Schema5.Struct({
877
+ ...PersistedEventBaseFields,
878
+ eventType: Schema5.Literal("thread.runtime-mode-set"),
879
+ payload: ThreadRuntimeModeSetPayload
880
+ }),
881
+ Schema5.Struct({
882
+ ...PersistedEventBaseFields,
883
+ eventType: Schema5.Literal("thread.interaction-mode-set"),
884
+ payload: ThreadInteractionModeSetPayload
885
+ }),
886
+ Schema5.Struct({
887
+ ...PersistedEventBaseFields,
888
+ eventType: Schema5.Literal("thread.message-sent"),
889
+ payload: ThreadMessageSentPayload
890
+ }),
891
+ Schema5.Struct({
892
+ ...PersistedEventBaseFields,
893
+ eventType: Schema5.Literal("thread.turn-start-requested"),
894
+ payload: ThreadTurnStartRequestedPayload
895
+ }),
896
+ Schema5.Struct({
897
+ ...PersistedEventBaseFields,
898
+ eventType: Schema5.Literal("thread.turn-interrupt-requested"),
899
+ payload: ThreadTurnInterruptRequestedPayload
900
+ }),
901
+ Schema5.Struct({
902
+ ...PersistedEventBaseFields,
903
+ eventType: Schema5.Literal("thread.approval-response-requested"),
904
+ payload: ThreadApprovalResponseRequestedPayload
905
+ }),
906
+ Schema5.Struct({
907
+ ...PersistedEventBaseFields,
908
+ eventType: Schema5.Literal("thread.user-input-response-requested"),
909
+ payload: ThreadUserInputResponseRequestedPayload
910
+ }),
911
+ Schema5.Struct({
912
+ ...PersistedEventBaseFields,
913
+ eventType: Schema5.Literal("thread.checkpoint-revert-requested"),
914
+ payload: ThreadCheckpointRevertRequestedPayload
915
+ }),
916
+ Schema5.Struct({
917
+ ...PersistedEventBaseFields,
918
+ eventType: Schema5.Literal("thread.reverted"),
919
+ payload: ThreadRevertedPayload
920
+ }),
921
+ Schema5.Struct({
922
+ ...PersistedEventBaseFields,
923
+ eventType: Schema5.Literal("thread.session-stop-requested"),
924
+ payload: ThreadSessionStopRequestedPayload
925
+ }),
926
+ Schema5.Struct({
927
+ ...PersistedEventBaseFields,
928
+ eventType: Schema5.Literal("thread.session-set"),
929
+ payload: ThreadSessionSetPayload
930
+ }),
931
+ Schema5.Struct({
932
+ ...PersistedEventBaseFields,
933
+ eventType: Schema5.Literal("thread.proposed-plan-upserted"),
934
+ payload: ThreadProposedPlanUpsertedPayload
935
+ }),
936
+ Schema5.Struct({
937
+ ...PersistedEventBaseFields,
938
+ eventType: Schema5.Literal("thread.turn-diff-completed"),
939
+ payload: ThreadTurnDiffCompletedPayload
940
+ }),
941
+ Schema5.Struct({
942
+ ...PersistedEventBaseFields,
943
+ eventType: Schema5.Literal("thread.activity-appended"),
944
+ payload: ThreadActivityAppendedPayload
945
+ })
946
+ ]);
947
+ var OrchestrationCommandReceiptStatus = Schema5.Literals(["accepted", "rejected"]);
948
+ var TurnCountRange = Schema5.Struct({
949
+ fromTurnCount: NonNegativeInt,
950
+ toTurnCount: NonNegativeInt
951
+ }).check(Schema5.makeFilter((input) => input.fromTurnCount <= input.toTurnCount || new SchemaIssue.InvalidValue(Option.some(input.fromTurnCount), {
952
+ message: "fromTurnCount must be less than or equal to toTurnCount"
953
+ }), { identifier: "OrchestrationTurnDiffRange" }));
954
+ var ThreadTurnDiff = TurnCountRange.mapFields(Struct.assign({
955
+ threadId: ThreadId,
956
+ diff: Schema5.String
957
+ }), { unsafePreserveChecks: true });
958
+ var ProviderSessionRuntimeStatus = Schema5.Literals([
959
+ "starting",
960
+ "running",
961
+ "stopped",
962
+ "error"
963
+ ]);
964
+ var ProjectionThreadTurnStatus = Schema5.Literals([
965
+ "running",
966
+ "completed",
967
+ "interrupted",
968
+ "error"
969
+ ]);
970
+ var ProjectionCheckpointRow = Schema5.Struct({
971
+ threadId: ThreadId,
972
+ turnId: TurnId,
973
+ checkpointTurnCount: NonNegativeInt,
974
+ checkpointRef: CheckpointRef,
975
+ status: OrchestrationCheckpointStatus,
976
+ files: Schema5.Array(OrchestrationCheckpointFile),
977
+ assistantMessageId: Schema5.NullOr(MessageId),
978
+ completedAt: IsoDateTime
979
+ });
980
+ var ProjectionPendingApprovalStatus = Schema5.Literals(["pending", "resolved"]);
981
+ var ProjectionPendingApprovalDecision = Schema5.NullOr(ProviderApprovalDecision);
982
+ var DispatchResult = Schema5.Struct({
983
+ sequence: NonNegativeInt
984
+ });
985
+ var OrchestrationGetSnapshotInput = Schema5.Struct({});
986
+ var OrchestrationGetTurnDiffInput = TurnCountRange.mapFields(Struct.assign({ threadId: ThreadId }), { unsafePreserveChecks: true });
987
+ var OrchestrationGetFullThreadDiffInput = Schema5.Struct({
988
+ threadId: ThreadId,
989
+ toTurnCount: NonNegativeInt
990
+ });
991
+ var OrchestrationReplayEventsInput = Schema5.Struct({
992
+ fromSequenceExclusive: NonNegativeInt
993
+ });
994
+ var OrchestrationReplayEventsResult = Schema5.Array(OrchestrationEvent);
995
+
996
+ // packages/contracts/src/server.ts
997
+ var KeybindingsMalformedConfigIssue = Schema6.Struct({
998
+ kind: Schema6.Literal("keybindings.malformed-config"),
999
+ message: TrimmedNonEmptyString
1000
+ });
1001
+ var KeybindingsInvalidEntryIssue = Schema6.Struct({
1002
+ kind: Schema6.Literal("keybindings.invalid-entry"),
1003
+ message: TrimmedNonEmptyString,
1004
+ index: Schema6.Number
1005
+ });
1006
+ var ServerConfigIssue = Schema6.Union([
1007
+ KeybindingsMalformedConfigIssue,
1008
+ KeybindingsInvalidEntryIssue
1009
+ ]);
1010
+ var ServerConfigIssues = Schema6.Array(ServerConfigIssue);
1011
+ var ServerProviderStatusState = Schema6.Literals(["ready", "warning", "error"]);
1012
+ var ServerProviderAuthStatus = Schema6.Literals([
1013
+ "authenticated",
1014
+ "unauthenticated",
1015
+ "unknown"
1016
+ ]);
1017
+ var ServerProviderStatus = Schema6.Struct({
1018
+ provider: ProviderKind,
1019
+ status: ServerProviderStatusState,
1020
+ available: Schema6.Boolean,
1021
+ authStatus: ServerProviderAuthStatus,
1022
+ checkedAt: IsoDateTime,
1023
+ message: Schema6.optional(TrimmedNonEmptyString)
1024
+ });
1025
+ var ServerProviderStatuses = Schema6.Array(ServerProviderStatus);
1026
+ var ServerConfig = Schema6.Struct({
1027
+ cwd: TrimmedNonEmptyString,
1028
+ rigRoot: Schema6.NullOr(TrimmedNonEmptyString),
1029
+ keybindingsConfigPath: TrimmedNonEmptyString,
1030
+ keybindings: ResolvedKeybindingsConfig,
1031
+ issues: ServerConfigIssues,
1032
+ providers: ServerProviderStatuses,
1033
+ availableEditors: Schema6.Array(EditorId)
1034
+ });
1035
+ var ServerUpsertKeybindingInput = KeybindingRule;
1036
+ var ServerUpsertKeybindingResult = Schema6.Struct({
1037
+ keybindings: ResolvedKeybindingsConfig,
1038
+ issues: ServerConfigIssues
1039
+ });
1040
+ var ServerConfigUpdatedPayload = Schema6.Struct({
1041
+ issues: ServerConfigIssues,
1042
+ providers: ServerProviderStatuses
1043
+ });
1044
+ export {
1045
+ ServerUpsertKeybindingResult,
1046
+ ServerUpsertKeybindingInput,
1047
+ ServerProviderStatusState,
1048
+ ServerProviderStatus,
1049
+ ServerProviderAuthStatus,
1050
+ ServerConfigUpdatedPayload,
1051
+ ServerConfigIssue,
1052
+ ServerConfig
1053
+ };