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