@h-rig/contracts 0.0.6-alpha.131 → 0.0.6-alpha.133

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.
@@ -1,10 +1,248 @@
1
1
  // @bun
2
2
  // packages/contracts/src/config.ts
3
- import { Schema as Schema2 } from "effect";
3
+ import { Schema as Schema9 } from "effect";
4
4
 
5
5
  // packages/contracts/src/plugin.ts
6
+ import { Schema as Schema4 } from "effect";
7
+
8
+ // packages/contracts/src/kernel.ts
9
+ import { Schema as Schema3 } from "effect";
10
+
11
+ // packages/contracts/src/baseSchemas.ts
6
12
  import { Schema } from "effect";
7
- var ValidatorCategory = Schema.Literals([
13
+ var TrimmedString = Schema.Trim;
14
+ var TrimmedNonEmptyString = TrimmedString.check(Schema.isNonEmpty());
15
+ var NonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
16
+ var PositiveInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));
17
+ var IsoDateTime = Schema.String;
18
+ var makeEntityId = (brand) => TrimmedNonEmptyString.pipe(Schema.brand(brand));
19
+ var ThreadId = makeEntityId("ThreadId");
20
+ var ProjectId = makeEntityId("ProjectId");
21
+ var WorkspaceId = makeEntityId("WorkspaceId");
22
+ var GraphId = makeEntityId("GraphId");
23
+ var TaskId = makeEntityId("TaskId");
24
+ var RunId = makeEntityId("RunId");
25
+ var SafePathSegment = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/)).pipe(Schema.brand("SafePathSegment"));
26
+ var SafeRunId = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/)).pipe(Schema.brand("SafeRunId"));
27
+ var SafeGitRefComponent = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/)).pipe(Schema.brand("SafeGitRefComponent"));
28
+ var EngineRuntimeId = makeEntityId("EngineRuntimeId");
29
+ var ConversationId = makeEntityId("ConversationId");
30
+ var ActionId = makeEntityId("ActionId");
31
+ var ArtifactId = makeEntityId("ArtifactId");
32
+ var WorktreeId = makeEntityId("WorktreeId");
33
+ var ValidationResultId = makeEntityId("ValidationResultId");
34
+ var ReviewResultId = makeEntityId("ReviewResultId");
35
+ var CommandId = makeEntityId("CommandId");
36
+ var EventId = makeEntityId("EventId");
37
+ var MessageId = makeEntityId("MessageId");
38
+ var TurnId = makeEntityId("TurnId");
39
+ var ProviderItemId = makeEntityId("ProviderItemId");
40
+ var RuntimeSessionId = makeEntityId("RuntimeSessionId");
41
+ var RuntimeItemId = makeEntityId("RuntimeItemId");
42
+ var RuntimeRequestId = makeEntityId("RuntimeRequestId");
43
+ var RuntimeTaskId = makeEntityId("RuntimeTaskId");
44
+ var ApprovalRequestId = makeEntityId("ApprovalRequestId");
45
+ var CheckpointRef = makeEntityId("CheckpointRef");
46
+ var RemoteEndpointId = makeEntityId("RemoteEndpointId");
47
+
48
+ // packages/contracts/src/stage.ts
49
+ import { Schema as Schema2 } from "effect";
50
+ var StageKind = Schema2.Literals(["transform", "gate", "observe"]);
51
+ var StageId = TrimmedNonEmptyString.pipe(Schema2.brand("StageId"));
52
+ var StageContext = Schema2.Struct({
53
+ runId: RunId,
54
+ taskId: Schema2.optional(Schema2.NullOr(TaskId)),
55
+ state: Schema2.Unknown,
56
+ metadata: Schema2.optional(Schema2.Record(Schema2.String, Schema2.Unknown))
57
+ });
58
+ var StageDescriptor = Schema2.Struct({
59
+ id: StageId,
60
+ kind: StageKind,
61
+ before: Schema2.optional(Schema2.Array(StageId)),
62
+ after: Schema2.optional(Schema2.Array(StageId)),
63
+ priority: Schema2.Number.pipe(Schema2.withDecodingDefault(() => 0)),
64
+ protected: Schema2.Boolean.pipe(Schema2.withDecodingDefault(() => false))
65
+ });
66
+ var StageContinueResult = Schema2.Struct({
67
+ kind: Schema2.Literal("continue"),
68
+ ctx: StageContext
69
+ });
70
+ var StageAllowResult = Schema2.Struct({
71
+ kind: Schema2.Literal("allow")
72
+ });
73
+ var StageBlockResult = Schema2.Struct({
74
+ kind: Schema2.Literal("block"),
75
+ reason: TrimmedNonEmptyString
76
+ });
77
+ var StageResult = Schema2.Union([
78
+ StageContinueResult,
79
+ StageAllowResult,
80
+ StageBlockResult
81
+ ]);
82
+ var StageWrapperDescriptor = Schema2.Struct({
83
+ id: TrimmedNonEmptyString,
84
+ priority: Schema2.Number.pipe(Schema2.withDecodingDefault(() => 0))
85
+ });
86
+ var StageMutationOp = Schema2.Literals(["insert", "remove", "replace", "wrap", "reorder"]);
87
+ var InsertStageMutation = Schema2.Struct({
88
+ op: Schema2.Literal("insert"),
89
+ stage: StageDescriptor,
90
+ contributedBy: Schema2.optional(TrimmedNonEmptyString)
91
+ });
92
+ var RemoveStageMutation = Schema2.Struct({
93
+ op: Schema2.Literal("remove"),
94
+ id: StageId,
95
+ contributedBy: Schema2.optional(TrimmedNonEmptyString)
96
+ });
97
+ var ReplaceStageMutation = Schema2.Struct({
98
+ op: Schema2.Literal("replace"),
99
+ id: StageId,
100
+ stage: StageDescriptor,
101
+ contributedBy: Schema2.optional(TrimmedNonEmptyString)
102
+ });
103
+ var WrapStageMutation = Schema2.Struct({
104
+ op: Schema2.Literal("wrap"),
105
+ id: StageId,
106
+ around: StageWrapperDescriptor,
107
+ contributedBy: Schema2.optional(TrimmedNonEmptyString)
108
+ });
109
+ var ReorderStageMutation = Schema2.Struct({
110
+ op: Schema2.Literal("reorder"),
111
+ id: StageId,
112
+ before: Schema2.optional(Schema2.Array(StageId)),
113
+ after: Schema2.optional(Schema2.Array(StageId)),
114
+ contributedBy: Schema2.optional(TrimmedNonEmptyString)
115
+ });
116
+ var StageMutation = Schema2.Union([
117
+ InsertStageMutation,
118
+ RemoveStageMutation,
119
+ ReplaceStageMutation,
120
+ WrapStageMutation,
121
+ ReorderStageMutation
122
+ ]);
123
+ var ResolutionGrantUse = Schema2.Struct({
124
+ kind: Schema2.Literals(["protected-stage", "kernel-replacement"]),
125
+ target: TrimmedNonEmptyString,
126
+ pluginId: TrimmedNonEmptyString
127
+ });
128
+ var ResolutionRecordEntry = Schema2.Struct({
129
+ stageId: StageId,
130
+ contributedBy: TrimmedNonEmptyString,
131
+ removedBy: Schema2.optional(TrimmedNonEmptyString),
132
+ replacedBy: Schema2.optional(TrimmedNonEmptyString),
133
+ wrappedBy: Schema2.optional(Schema2.Array(TrimmedNonEmptyString)),
134
+ droppedAnchors: Schema2.optional(Schema2.Array(StageId)),
135
+ isProtected: Schema2.Boolean
136
+ });
137
+ var ResolvedPipeline = Schema2.Struct({
138
+ runId: Schema2.optional(RunId),
139
+ order: Schema2.Array(StageId),
140
+ record: Schema2.Array(ResolutionRecordEntry),
141
+ cycles: Schema2.Array(Schema2.Array(StageId)),
142
+ grantUses: Schema2.optional(Schema2.Array(ResolutionGrantUse)),
143
+ resolvedAt: Schema2.optional(IsoDateTime)
144
+ });
145
+ var StageRunOutcome = Schema2.Struct({
146
+ stageId: StageId,
147
+ result: StageResult,
148
+ startedAt: IsoDateTime,
149
+ finishedAt: IsoDateTime
150
+ });
151
+
152
+ // packages/contracts/src/kernel.ts
153
+ var CapabilityTag = Schema3.Literals([
154
+ "kernel",
155
+ "journal",
156
+ "stage-runner",
157
+ "transport",
158
+ "loader-policy"
159
+ ]);
160
+ var CapabilityProviderRef = Schema3.Struct({
161
+ capability: CapabilityTag,
162
+ pluginId: TrimmedNonEmptyString
163
+ });
164
+ var CapabilityReplacement = Schema3.Struct({
165
+ capability: CapabilityTag,
166
+ providerPluginId: TrimmedNonEmptyString
167
+ });
168
+ var CapabilityReplacementSpec = Schema3.Union([
169
+ CapabilityReplacement,
170
+ TrimmedNonEmptyString
171
+ ]);
172
+ var PluginMeta = Schema3.Struct({
173
+ id: TrimmedNonEmptyString,
174
+ version: TrimmedNonEmptyString,
175
+ provides: Schema3.Array(CapabilityTag),
176
+ requires: Schema3.optional(Schema3.Array(CapabilityTag)),
177
+ replaces: Schema3.optional(Schema3.Array(CapabilityReplacementSpec))
178
+ });
179
+ var LoadedPluginDescriptor = Schema3.Struct({
180
+ meta: PluginMeta,
181
+ provides: Schema3.Array(CapabilityTag),
182
+ contributes: Schema3.Unknown,
183
+ runtime: Schema3.Unknown
184
+ });
185
+ var ProtectedStageGrant = Schema3.Struct({
186
+ stageId: TrimmedNonEmptyString,
187
+ pluginId: TrimmedNonEmptyString,
188
+ operations: Schema3.Array(Schema3.Literals(["remove", "replace"])),
189
+ grantedBy: Schema3.optional(TrimmedNonEmptyString),
190
+ reason: Schema3.optional(Schema3.String)
191
+ });
192
+ var KernelReplacementGrant = Schema3.Struct({
193
+ pluginId: TrimmedNonEmptyString,
194
+ grantedBy: Schema3.optional(TrimmedNonEmptyString),
195
+ reason: Schema3.optional(Schema3.String)
196
+ });
197
+ var CapabilityGrants = Schema3.Struct({
198
+ capabilityPrecedence: Schema3.optional(Schema3.Record(Schema3.String, Schema3.Array(TrimmedNonEmptyString))),
199
+ protectedStageGrants: Schema3.optional(Schema3.Array(ProtectedStageGrant)),
200
+ kernelReplacementGrants: Schema3.optional(Schema3.Array(KernelReplacementGrant))
201
+ });
202
+ var KernelBootErrorCode = Schema3.Literals([
203
+ "BootIncoherent",
204
+ "AmbiguousCapability",
205
+ "MissingCapability",
206
+ "ProtectedStageViolation",
207
+ "KernelReplacementDenied",
208
+ "PipelineUnresolvable"
209
+ ]);
210
+ var KernelBootError = Schema3.Struct({
211
+ code: KernelBootErrorCode,
212
+ message: TrimmedNonEmptyString,
213
+ capability: Schema3.optional(CapabilityTag),
214
+ stageId: Schema3.optional(TrimmedNonEmptyString),
215
+ pluginIds: Schema3.optional(Schema3.Array(TrimmedNonEmptyString))
216
+ });
217
+ var CapabilityResolutionStatus = Schema3.Literals(["resolved", "ambiguous", "missing", "replaced"]);
218
+ var CapabilityResolutionRecord = Schema3.Struct({
219
+ capability: CapabilityTag,
220
+ status: CapabilityResolutionStatus,
221
+ selectedPluginId: Schema3.NullOr(TrimmedNonEmptyString),
222
+ candidatePluginIds: Schema3.Array(TrimmedNonEmptyString),
223
+ precedenceUsed: Schema3.Boolean,
224
+ replacementUsed: Schema3.optional(CapabilityReplacement),
225
+ error: Schema3.optional(Schema3.String)
226
+ });
227
+ var KernelResolutionRecord = Schema3.Struct({
228
+ resolvedAt: IsoDateTime,
229
+ capabilities: Schema3.Array(CapabilityResolutionRecord),
230
+ pipeline: Schema3.optional(ResolvedPipeline)
231
+ });
232
+ var BootResultDescriptor = Schema3.Struct({
233
+ kernelPluginId: TrimmedNonEmptyString,
234
+ pluginIds: Schema3.Array(TrimmedNonEmptyString),
235
+ resolution: KernelResolutionRecord
236
+ });
237
+ var JournalEvent = Schema3.Struct({
238
+ type: TrimmedNonEmptyString,
239
+ runId: Schema3.optional(RunId),
240
+ at: IsoDateTime,
241
+ payload: Schema3.Unknown
242
+ });
243
+
244
+ // packages/contracts/src/plugin.ts
245
+ var ValidatorCategory = Schema4.Literals([
8
246
  "boundary",
9
247
  "contract",
10
248
  "integration",
@@ -12,12 +250,12 @@ var ValidatorCategory = Schema.Literals([
12
250
  "external",
13
251
  "custom"
14
252
  ]);
15
- var ValidatorRegistration = Schema.Struct({
16
- id: Schema.String,
253
+ var ValidatorRegistration = Schema4.Struct({
254
+ id: Schema4.String,
17
255
  category: ValidatorCategory,
18
- description: Schema.optional(Schema.String)
256
+ description: Schema4.optional(Schema4.String)
19
257
  });
20
- var HookEvent = Schema.Literals([
258
+ var AgentSessionHookEvent = Schema4.Literals([
21
259
  "PreToolUse",
22
260
  "PostToolUse",
23
261
  "UserPromptSubmit",
@@ -25,192 +263,1339 @@ var HookEvent = Schema.Literals([
25
263
  "SessionStart",
26
264
  "SessionEnd"
27
265
  ]);
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 })
266
+ var HookMatcher = Schema4.Union([
267
+ Schema4.Struct({ kind: Schema4.Literal("all") }),
268
+ Schema4.Struct({ kind: Schema4.Literal("tool"), name: Schema4.String }),
269
+ Schema4.Struct({ kind: Schema4.Literal("glob"), pattern: Schema4.String })
32
270
  ]);
33
- var HookRegistration = Schema.Struct({
34
- id: Schema.String,
35
- event: HookEvent,
271
+ var HookRegistration = Schema4.Struct({
272
+ id: Schema4.String,
273
+ event: AgentSessionHookEvent,
36
274
  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)
275
+ command: Schema4.optional(Schema4.String),
276
+ description: Schema4.optional(Schema4.String)
277
+ });
278
+ var SkillRegistration = Schema4.Struct({
279
+ id: Schema4.String,
280
+ path: Schema4.String,
281
+ description: Schema4.optional(Schema4.String)
282
+ });
283
+ var RepoSourceRegistration = Schema4.Struct({
284
+ id: Schema4.String,
285
+ url: Schema4.String,
286
+ defaultPath: Schema4.optional(Schema4.String),
287
+ description: Schema4.optional(Schema4.String),
288
+ defaultBranch: Schema4.optional(Schema4.String),
289
+ remoteEnvVar: Schema4.optional(Schema4.String),
290
+ checkoutEnvVar: Schema4.optional(Schema4.String)
291
+ });
292
+ var AgentRoleRegistration = Schema4.Struct({
293
+ id: Schema4.String,
294
+ defaultModel: Schema4.optional(Schema4.String),
295
+ description: Schema4.optional(Schema4.String)
296
+ });
297
+ var TaskFieldExtension = Schema4.Struct({
298
+ id: Schema4.String,
299
+ fieldName: Schema4.String,
300
+ schemaJson: Schema4.String
301
+ });
302
+ var TaskSourceKind = Schema4.String;
303
+ var TaskSourceRegistration = Schema4.Struct({
304
+ id: Schema4.String,
305
+ kind: Schema4.String,
306
+ description: Schema4.optional(Schema4.String)
307
+ });
308
+ var CliCommandRegistration = Schema4.Struct({
309
+ id: Schema4.String,
310
+ command: Schema4.String,
311
+ description: Schema4.optional(Schema4.String)
312
+ });
313
+ var PluginContributes = Schema4.Struct({
314
+ validators: Schema4.optional(Schema4.Array(ValidatorRegistration)),
315
+ hooks: Schema4.optional(Schema4.Array(HookRegistration)),
316
+ skills: Schema4.optional(Schema4.Array(SkillRegistration)),
317
+ repoSources: Schema4.optional(Schema4.Array(RepoSourceRegistration)),
318
+ agentRoles: Schema4.optional(Schema4.Array(AgentRoleRegistration)),
319
+ taskFieldSchemas: Schema4.optional(Schema4.Array(TaskFieldExtension)),
320
+ taskSources: Schema4.optional(Schema4.Array(TaskSourceRegistration)),
321
+ cliCommands: Schema4.optional(Schema4.Array(CliCommandRegistration)),
322
+ stageMutations: Schema4.optional(Schema4.Array(StageMutation))
323
+ });
324
+ var RigPlugin = Schema4.Struct({
325
+ name: Schema4.String,
326
+ version: Schema4.String,
327
+ provides: Schema4.optional(Schema4.Array(CapabilityTag)),
328
+ requires: Schema4.optional(Schema4.Array(CapabilityTag)),
329
+ replaces: Schema4.optional(Schema4.Array(CapabilityReplacementSpec)),
330
+ contributes: Schema4.optional(PluginContributes)
331
+ });
332
+
333
+ // packages/contracts/src/supervisor-journal.ts
334
+ import { Schema as Schema8 } from "effect";
335
+
336
+ // packages/contracts/src/runtime.ts
337
+ import { Schema as Schema7 } from "effect";
338
+
339
+ // packages/contracts/src/orchestration.ts
340
+ import { Option, Schema as Schema6, SchemaIssue, Struct } from "effect";
341
+
342
+ // packages/contracts/src/model.ts
343
+ import { Schema as Schema5 } from "effect";
344
+ var CODEX_REASONING_EFFORT_OPTIONS = ["xhigh", "high", "medium", "low"];
345
+ var CodexModelOptions = Schema5.Struct({
346
+ reasoningEffort: Schema5.optional(Schema5.Literals(CODEX_REASONING_EFFORT_OPTIONS)),
347
+ fastMode: Schema5.optional(Schema5.Boolean)
348
+ });
349
+ var ClaudeModelOptions = Schema5.Struct({});
350
+ var ProviderModelOptions = Schema5.Struct({
351
+ codex: Schema5.optional(CodexModelOptions),
352
+ claude: Schema5.optional(ClaudeModelOptions)
353
+ });
354
+
355
+ // packages/contracts/src/orchestration.ts
356
+ var ProviderKind = Schema6.Literals(["codex", "claude"]);
357
+ var ProviderApprovalPolicy = Schema6.Literals([
358
+ "untrusted",
359
+ "on-failure",
360
+ "on-request",
361
+ "never"
362
+ ]);
363
+ var ProviderSandboxMode = Schema6.Literals([
364
+ "read-only",
365
+ "workspace-write",
366
+ "danger-full-access"
367
+ ]);
368
+ var ProviderServiceTier = Schema6.Literals(["fast", "flex"]);
369
+ var RuntimeMode = Schema6.Literals(["approval-required", "full-access"]);
370
+ var DEFAULT_RUNTIME_MODE = "full-access";
371
+ var ProviderInteractionMode = Schema6.Literals(["default", "plan"]);
372
+ var DEFAULT_PROVIDER_INTERACTION_MODE = "default";
373
+ var ProviderRequestKind = Schema6.Literals(["command", "file-read", "file-change"]);
374
+ var AssistantDeliveryMode = Schema6.Literals(["buffered", "streaming"]);
375
+ var ProviderApprovalDecision = Schema6.Literals([
376
+ "accept",
377
+ "acceptForSession",
378
+ "decline",
379
+ "cancel"
380
+ ]);
381
+ var ProviderUserInputAnswers = Schema6.Record(Schema6.String, Schema6.Unknown);
382
+ var PROVIDER_SEND_TURN_MAX_IMAGE_BYTES = 10 * 1024 * 1024;
383
+ var PROVIDER_SEND_TURN_MAX_IMAGE_DATA_URL_CHARS = 14000000;
384
+ var CHAT_ATTACHMENT_ID_MAX_CHARS = 128;
385
+ var ChatAttachmentId = TrimmedNonEmptyString.check(Schema6.isMaxLength(CHAT_ATTACHMENT_ID_MAX_CHARS), Schema6.isPattern(/^[a-z0-9_-]+$/i));
386
+ var ChatImageAttachment = Schema6.Struct({
387
+ type: Schema6.Literal("image"),
388
+ id: ChatAttachmentId,
389
+ name: TrimmedNonEmptyString.check(Schema6.isMaxLength(255)),
390
+ mimeType: TrimmedNonEmptyString.check(Schema6.isMaxLength(100), Schema6.isPattern(/^image\//i)),
391
+ sizeBytes: NonNegativeInt.check(Schema6.isLessThanOrEqualTo(PROVIDER_SEND_TURN_MAX_IMAGE_BYTES))
392
+ });
393
+ var UploadChatImageAttachment = Schema6.Struct({
394
+ type: Schema6.Literal("image"),
395
+ name: TrimmedNonEmptyString.check(Schema6.isMaxLength(255)),
396
+ mimeType: TrimmedNonEmptyString.check(Schema6.isMaxLength(100), Schema6.isPattern(/^image\//i)),
397
+ sizeBytes: NonNegativeInt.check(Schema6.isLessThanOrEqualTo(PROVIDER_SEND_TURN_MAX_IMAGE_BYTES)),
398
+ dataUrl: TrimmedNonEmptyString.check(Schema6.isMaxLength(PROVIDER_SEND_TURN_MAX_IMAGE_DATA_URL_CHARS))
399
+ });
400
+ var ChatAttachment = Schema6.Union([ChatImageAttachment]);
401
+ var UploadChatAttachment = Schema6.Union([UploadChatImageAttachment]);
402
+ var ProjectScriptIcon = Schema6.Literals([
403
+ "play",
404
+ "test",
405
+ "lint",
406
+ "configure",
407
+ "build",
408
+ "debug"
409
+ ]);
410
+ var ProjectScript = Schema6.Struct({
411
+ id: TrimmedNonEmptyString,
412
+ name: TrimmedNonEmptyString,
413
+ command: TrimmedNonEmptyString,
414
+ icon: ProjectScriptIcon,
415
+ runOnWorktreeCreate: Schema6.Boolean
416
+ });
417
+ var OrchestrationProject = Schema6.Struct({
418
+ id: ProjectId,
419
+ title: TrimmedNonEmptyString,
420
+ workspaceRoot: TrimmedNonEmptyString,
421
+ defaultModel: Schema6.NullOr(TrimmedNonEmptyString),
422
+ scripts: Schema6.Array(ProjectScript),
423
+ createdAt: IsoDateTime,
424
+ updatedAt: IsoDateTime,
425
+ deletedAt: Schema6.NullOr(IsoDateTime)
426
+ });
427
+ var OrchestrationMessageRole = Schema6.Literals(["user", "assistant", "system"]);
428
+ var OrchestrationMessage = Schema6.Struct({
429
+ id: MessageId,
430
+ role: OrchestrationMessageRole,
431
+ text: Schema6.String,
432
+ attachments: Schema6.optional(Schema6.Array(ChatAttachment)),
433
+ turnId: Schema6.NullOr(TurnId),
434
+ streaming: Schema6.Boolean,
435
+ createdAt: IsoDateTime,
436
+ updatedAt: IsoDateTime
437
+ });
438
+ var OrchestrationProposedPlanId = TrimmedNonEmptyString;
439
+ var OrchestrationProposedPlan = Schema6.Struct({
440
+ id: OrchestrationProposedPlanId,
441
+ turnId: Schema6.NullOr(TurnId),
442
+ planMarkdown: TrimmedNonEmptyString,
443
+ createdAt: IsoDateTime,
444
+ updatedAt: IsoDateTime
445
+ });
446
+ var OrchestrationSessionStatus = Schema6.Literals([
447
+ "idle",
448
+ "starting",
449
+ "running",
450
+ "ready",
451
+ "interrupted",
452
+ "stopped",
453
+ "error"
454
+ ]);
455
+ var OrchestrationSession = Schema6.Struct({
456
+ threadId: ThreadId,
457
+ status: OrchestrationSessionStatus,
458
+ providerName: Schema6.NullOr(TrimmedNonEmptyString),
459
+ runtimeMode: RuntimeMode.pipe(Schema6.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
460
+ activeTurnId: Schema6.NullOr(TurnId),
461
+ lastError: Schema6.NullOr(TrimmedNonEmptyString),
462
+ updatedAt: IsoDateTime
463
+ });
464
+ var OrchestrationCheckpointFile = Schema6.Struct({
465
+ path: TrimmedNonEmptyString,
466
+ kind: TrimmedNonEmptyString,
467
+ additions: NonNegativeInt,
468
+ deletions: NonNegativeInt
469
+ });
470
+ var OrchestrationCheckpointStatus = Schema6.Literals(["ready", "missing", "error"]);
471
+ var OrchestrationCheckpointSummary = Schema6.Struct({
472
+ turnId: TurnId,
473
+ checkpointTurnCount: NonNegativeInt,
474
+ checkpointRef: CheckpointRef,
475
+ status: OrchestrationCheckpointStatus,
476
+ files: Schema6.Array(OrchestrationCheckpointFile),
477
+ assistantMessageId: Schema6.NullOr(MessageId),
478
+ completedAt: IsoDateTime
479
+ });
480
+ var OrchestrationThreadActivityTone = Schema6.Literals([
481
+ "info",
482
+ "tool",
483
+ "approval",
484
+ "error"
485
+ ]);
486
+ var OrchestrationThreadActivity = Schema6.Struct({
487
+ id: EventId,
488
+ tone: OrchestrationThreadActivityTone,
489
+ kind: TrimmedNonEmptyString,
490
+ summary: TrimmedNonEmptyString,
491
+ payload: Schema6.Unknown,
492
+ turnId: Schema6.NullOr(TurnId),
493
+ sequence: Schema6.optional(NonNegativeInt),
494
+ createdAt: IsoDateTime
495
+ });
496
+ var OrchestrationLatestTurnState = Schema6.Literals([
497
+ "running",
498
+ "interrupted",
499
+ "completed",
500
+ "error"
501
+ ]);
502
+ var OrchestrationLatestTurn = Schema6.Struct({
503
+ turnId: TurnId,
504
+ state: OrchestrationLatestTurnState,
505
+ requestedAt: IsoDateTime,
506
+ startedAt: Schema6.NullOr(IsoDateTime),
507
+ completedAt: Schema6.NullOr(IsoDateTime),
508
+ assistantMessageId: Schema6.NullOr(MessageId)
509
+ });
510
+ var OrchestrationThread = Schema6.Struct({
511
+ id: ThreadId,
512
+ projectId: ProjectId,
513
+ title: TrimmedNonEmptyString,
514
+ model: TrimmedNonEmptyString,
515
+ runtimeMode: RuntimeMode,
516
+ interactionMode: ProviderInteractionMode.pipe(Schema6.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
517
+ branch: Schema6.NullOr(TrimmedNonEmptyString),
518
+ worktreePath: Schema6.NullOr(TrimmedNonEmptyString),
519
+ latestTurn: Schema6.NullOr(OrchestrationLatestTurn),
520
+ createdAt: IsoDateTime,
521
+ updatedAt: IsoDateTime,
522
+ deletedAt: Schema6.NullOr(IsoDateTime),
523
+ messages: Schema6.Array(OrchestrationMessage),
524
+ proposedPlans: Schema6.Array(OrchestrationProposedPlan).pipe(Schema6.withDecodingDefault(() => [])),
525
+ activities: Schema6.Array(OrchestrationThreadActivity),
526
+ checkpoints: Schema6.Array(OrchestrationCheckpointSummary),
527
+ session: Schema6.NullOr(OrchestrationSession)
528
+ });
529
+ var OrchestrationReadModel = Schema6.Struct({
530
+ snapshotSequence: NonNegativeInt,
531
+ projects: Schema6.Array(OrchestrationProject),
532
+ threads: Schema6.Array(OrchestrationThread),
533
+ updatedAt: IsoDateTime
534
+ });
535
+ var ProjectCreateCommand = Schema6.Struct({
536
+ type: Schema6.Literal("project.create"),
537
+ commandId: CommandId,
538
+ projectId: ProjectId,
539
+ title: TrimmedNonEmptyString,
540
+ workspaceRoot: TrimmedNonEmptyString,
541
+ defaultModel: Schema6.optional(TrimmedNonEmptyString),
542
+ createdAt: IsoDateTime
543
+ });
544
+ var ProjectMetaUpdateCommand = Schema6.Struct({
545
+ type: Schema6.Literal("project.meta.update"),
546
+ commandId: CommandId,
547
+ projectId: ProjectId,
548
+ title: Schema6.optional(TrimmedNonEmptyString),
549
+ workspaceRoot: Schema6.optional(TrimmedNonEmptyString),
550
+ defaultModel: Schema6.optional(TrimmedNonEmptyString),
551
+ scripts: Schema6.optional(Schema6.Array(ProjectScript))
552
+ });
553
+ var ProjectDeleteCommand = Schema6.Struct({
554
+ type: Schema6.Literal("project.delete"),
555
+ commandId: CommandId,
556
+ projectId: ProjectId
557
+ });
558
+ var ThreadCreateCommand = Schema6.Struct({
559
+ type: Schema6.Literal("thread.create"),
560
+ commandId: CommandId,
561
+ threadId: ThreadId,
562
+ projectId: ProjectId,
563
+ title: TrimmedNonEmptyString,
564
+ model: TrimmedNonEmptyString,
565
+ runtimeMode: RuntimeMode,
566
+ interactionMode: ProviderInteractionMode.pipe(Schema6.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
567
+ branch: Schema6.NullOr(TrimmedNonEmptyString),
568
+ worktreePath: Schema6.NullOr(TrimmedNonEmptyString),
569
+ createdAt: IsoDateTime
570
+ });
571
+ var ThreadDeleteCommand = Schema6.Struct({
572
+ type: Schema6.Literal("thread.delete"),
573
+ commandId: CommandId,
574
+ threadId: ThreadId
575
+ });
576
+ var ThreadMetaUpdateCommand = Schema6.Struct({
577
+ type: Schema6.Literal("thread.meta.update"),
578
+ commandId: CommandId,
579
+ threadId: ThreadId,
580
+ title: Schema6.optional(TrimmedNonEmptyString),
581
+ model: Schema6.optional(TrimmedNonEmptyString),
582
+ branch: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
583
+ worktreePath: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString))
584
+ });
585
+ var ThreadRuntimeModeSetCommand = Schema6.Struct({
586
+ type: Schema6.Literal("thread.runtime-mode.set"),
587
+ commandId: CommandId,
588
+ threadId: ThreadId,
589
+ runtimeMode: RuntimeMode,
590
+ createdAt: IsoDateTime
591
+ });
592
+ var ThreadInteractionModeSetCommand = Schema6.Struct({
593
+ type: Schema6.Literal("thread.interaction-mode.set"),
594
+ commandId: CommandId,
595
+ threadId: ThreadId,
596
+ interactionMode: ProviderInteractionMode,
597
+ createdAt: IsoDateTime
598
+ });
599
+ var ThreadTurnStartCommand = Schema6.Struct({
600
+ type: Schema6.Literal("thread.turn.start"),
601
+ commandId: CommandId,
602
+ threadId: ThreadId,
603
+ message: Schema6.Struct({
604
+ messageId: MessageId,
605
+ role: Schema6.Literal("user"),
606
+ text: Schema6.String,
607
+ attachments: Schema6.Array(ChatAttachment)
608
+ }),
609
+ provider: Schema6.optional(ProviderKind),
610
+ model: Schema6.optional(TrimmedNonEmptyString),
611
+ serviceTier: Schema6.optional(Schema6.NullOr(ProviderServiceTier)),
612
+ modelOptions: Schema6.optional(ProviderModelOptions),
613
+ assistantDeliveryMode: Schema6.optional(AssistantDeliveryMode),
614
+ runtimeMode: RuntimeMode.pipe(Schema6.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
615
+ interactionMode: ProviderInteractionMode.pipe(Schema6.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
616
+ createdAt: IsoDateTime
617
+ });
618
+ var ClientThreadTurnStartCommand = Schema6.Struct({
619
+ type: Schema6.Literal("thread.turn.start"),
620
+ commandId: CommandId,
621
+ threadId: ThreadId,
622
+ message: Schema6.Struct({
623
+ messageId: MessageId,
624
+ role: Schema6.Literal("user"),
625
+ text: Schema6.String,
626
+ attachments: Schema6.Array(UploadChatAttachment)
627
+ }),
628
+ provider: Schema6.optional(ProviderKind),
629
+ model: Schema6.optional(TrimmedNonEmptyString),
630
+ serviceTier: Schema6.optional(Schema6.NullOr(ProviderServiceTier)),
631
+ modelOptions: Schema6.optional(ProviderModelOptions),
632
+ assistantDeliveryMode: Schema6.optional(AssistantDeliveryMode),
633
+ runtimeMode: RuntimeMode,
634
+ interactionMode: ProviderInteractionMode,
635
+ createdAt: IsoDateTime
636
+ });
637
+ var ThreadTurnInterruptCommand = Schema6.Struct({
638
+ type: Schema6.Literal("thread.turn.interrupt"),
639
+ commandId: CommandId,
640
+ threadId: ThreadId,
641
+ turnId: Schema6.optional(TurnId),
642
+ createdAt: IsoDateTime
643
+ });
644
+ var ThreadApprovalRespondCommand = Schema6.Struct({
645
+ type: Schema6.Literal("thread.approval.respond"),
646
+ commandId: CommandId,
647
+ threadId: ThreadId,
648
+ requestId: ApprovalRequestId,
649
+ decision: ProviderApprovalDecision,
650
+ createdAt: IsoDateTime
651
+ });
652
+ var ThreadUserInputRespondCommand = Schema6.Struct({
653
+ type: Schema6.Literal("thread.user-input.respond"),
654
+ commandId: CommandId,
655
+ threadId: ThreadId,
656
+ requestId: ApprovalRequestId,
657
+ answers: ProviderUserInputAnswers,
658
+ createdAt: IsoDateTime
659
+ });
660
+ var ThreadCheckpointRevertCommand = Schema6.Struct({
661
+ type: Schema6.Literal("thread.checkpoint.revert"),
662
+ commandId: CommandId,
663
+ threadId: ThreadId,
664
+ turnCount: NonNegativeInt,
665
+ createdAt: IsoDateTime
666
+ });
667
+ var ThreadSessionStopCommand = Schema6.Struct({
668
+ type: Schema6.Literal("thread.session.stop"),
669
+ commandId: CommandId,
670
+ threadId: ThreadId,
671
+ createdAt: IsoDateTime
672
+ });
673
+ var DispatchableClientOrchestrationCommand = Schema6.Union([
674
+ ProjectCreateCommand,
675
+ ProjectMetaUpdateCommand,
676
+ ProjectDeleteCommand,
677
+ ThreadCreateCommand,
678
+ ThreadDeleteCommand,
679
+ ThreadMetaUpdateCommand,
680
+ ThreadRuntimeModeSetCommand,
681
+ ThreadInteractionModeSetCommand,
682
+ ThreadTurnStartCommand,
683
+ ThreadTurnInterruptCommand,
684
+ ThreadApprovalRespondCommand,
685
+ ThreadUserInputRespondCommand,
686
+ ThreadCheckpointRevertCommand,
687
+ ThreadSessionStopCommand
688
+ ]);
689
+ var ClientOrchestrationCommand = Schema6.Union([
690
+ ProjectCreateCommand,
691
+ ProjectMetaUpdateCommand,
692
+ ProjectDeleteCommand,
693
+ ThreadCreateCommand,
694
+ ThreadDeleteCommand,
695
+ ThreadMetaUpdateCommand,
696
+ ThreadRuntimeModeSetCommand,
697
+ ThreadInteractionModeSetCommand,
698
+ ClientThreadTurnStartCommand,
699
+ ThreadTurnInterruptCommand,
700
+ ThreadApprovalRespondCommand,
701
+ ThreadUserInputRespondCommand,
702
+ ThreadCheckpointRevertCommand,
703
+ ThreadSessionStopCommand
704
+ ]);
705
+ var ThreadSessionSetCommand = Schema6.Struct({
706
+ type: Schema6.Literal("thread.session.set"),
707
+ commandId: CommandId,
708
+ threadId: ThreadId,
709
+ session: OrchestrationSession,
710
+ createdAt: IsoDateTime
711
+ });
712
+ var ThreadMessageAssistantDeltaCommand = Schema6.Struct({
713
+ type: Schema6.Literal("thread.message.assistant.delta"),
714
+ commandId: CommandId,
715
+ threadId: ThreadId,
716
+ messageId: MessageId,
717
+ delta: Schema6.String,
718
+ turnId: Schema6.optional(TurnId),
719
+ createdAt: IsoDateTime
720
+ });
721
+ var ThreadMessageAssistantCompleteCommand = Schema6.Struct({
722
+ type: Schema6.Literal("thread.message.assistant.complete"),
723
+ commandId: CommandId,
724
+ threadId: ThreadId,
725
+ messageId: MessageId,
726
+ turnId: Schema6.optional(TurnId),
727
+ createdAt: IsoDateTime
728
+ });
729
+ var ThreadProposedPlanUpsertCommand = Schema6.Struct({
730
+ type: Schema6.Literal("thread.proposed-plan.upsert"),
731
+ commandId: CommandId,
732
+ threadId: ThreadId,
733
+ proposedPlan: OrchestrationProposedPlan,
734
+ createdAt: IsoDateTime
735
+ });
736
+ var ThreadTurnDiffCompleteCommand = Schema6.Struct({
737
+ type: Schema6.Literal("thread.turn.diff.complete"),
738
+ commandId: CommandId,
739
+ threadId: ThreadId,
740
+ turnId: TurnId,
741
+ completedAt: IsoDateTime,
742
+ checkpointRef: CheckpointRef,
743
+ status: OrchestrationCheckpointStatus,
744
+ files: Schema6.Array(OrchestrationCheckpointFile),
745
+ assistantMessageId: Schema6.optional(MessageId),
746
+ checkpointTurnCount: NonNegativeInt,
747
+ createdAt: IsoDateTime
748
+ });
749
+ var ThreadActivityAppendCommand = Schema6.Struct({
750
+ type: Schema6.Literal("thread.activity.append"),
751
+ commandId: CommandId,
752
+ threadId: ThreadId,
753
+ activity: OrchestrationThreadActivity,
754
+ createdAt: IsoDateTime
755
+ });
756
+ var ThreadRevertCompleteCommand = Schema6.Struct({
757
+ type: Schema6.Literal("thread.revert.complete"),
758
+ commandId: CommandId,
759
+ threadId: ThreadId,
760
+ turnCount: NonNegativeInt,
761
+ createdAt: IsoDateTime
762
+ });
763
+ var InternalOrchestrationCommand = Schema6.Union([
764
+ ThreadSessionSetCommand,
765
+ ThreadMessageAssistantDeltaCommand,
766
+ ThreadMessageAssistantCompleteCommand,
767
+ ThreadProposedPlanUpsertCommand,
768
+ ThreadTurnDiffCompleteCommand,
769
+ ThreadActivityAppendCommand,
770
+ ThreadRevertCompleteCommand
771
+ ]);
772
+ var OrchestrationCommand = Schema6.Union([
773
+ DispatchableClientOrchestrationCommand,
774
+ InternalOrchestrationCommand
775
+ ]);
776
+ var OrchestrationEventType = Schema6.Literals([
777
+ "project.created",
778
+ "project.meta-updated",
779
+ "project.deleted",
780
+ "thread.created",
781
+ "thread.deleted",
782
+ "thread.meta-updated",
783
+ "thread.runtime-mode-set",
784
+ "thread.interaction-mode-set",
785
+ "thread.message-sent",
786
+ "thread.turn-start-requested",
787
+ "thread.turn-interrupt-requested",
788
+ "thread.approval-response-requested",
789
+ "thread.user-input-response-requested",
790
+ "thread.checkpoint-revert-requested",
791
+ "thread.reverted",
792
+ "thread.session-stop-requested",
793
+ "thread.session-set",
794
+ "thread.proposed-plan-upserted",
795
+ "thread.turn-diff-completed",
796
+ "thread.activity-appended"
797
+ ]);
798
+ var OrchestrationAggregateKind = Schema6.Literals(["project", "thread"]);
799
+ var OrchestrationActorKind = Schema6.Literals(["client", "server", "provider"]);
800
+ var ProjectCreatedPayload = Schema6.Struct({
801
+ projectId: ProjectId,
802
+ title: TrimmedNonEmptyString,
803
+ workspaceRoot: TrimmedNonEmptyString,
804
+ defaultModel: Schema6.NullOr(TrimmedNonEmptyString),
805
+ scripts: Schema6.Array(ProjectScript),
806
+ createdAt: IsoDateTime,
807
+ updatedAt: IsoDateTime
808
+ });
809
+ var ProjectMetaUpdatedPayload = Schema6.Struct({
810
+ projectId: ProjectId,
811
+ title: Schema6.optional(TrimmedNonEmptyString),
812
+ workspaceRoot: Schema6.optional(TrimmedNonEmptyString),
813
+ defaultModel: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
814
+ scripts: Schema6.optional(Schema6.Array(ProjectScript)),
815
+ updatedAt: IsoDateTime
816
+ });
817
+ var ProjectDeletedPayload = Schema6.Struct({
818
+ projectId: ProjectId,
819
+ deletedAt: IsoDateTime
820
+ });
821
+ var ThreadCreatedPayload = Schema6.Struct({
822
+ threadId: ThreadId,
823
+ projectId: ProjectId,
824
+ title: TrimmedNonEmptyString,
825
+ model: TrimmedNonEmptyString,
826
+ runtimeMode: RuntimeMode.pipe(Schema6.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
827
+ interactionMode: ProviderInteractionMode.pipe(Schema6.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
828
+ branch: Schema6.NullOr(TrimmedNonEmptyString),
829
+ worktreePath: Schema6.NullOr(TrimmedNonEmptyString),
830
+ createdAt: IsoDateTime,
831
+ updatedAt: IsoDateTime
832
+ });
833
+ var ThreadDeletedPayload = Schema6.Struct({
834
+ threadId: ThreadId,
835
+ deletedAt: IsoDateTime
836
+ });
837
+ var ThreadMetaUpdatedPayload = Schema6.Struct({
838
+ threadId: ThreadId,
839
+ title: Schema6.optional(TrimmedNonEmptyString),
840
+ model: Schema6.optional(TrimmedNonEmptyString),
841
+ branch: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
842
+ worktreePath: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
843
+ updatedAt: IsoDateTime
844
+ });
845
+ var ThreadRuntimeModeSetPayload = Schema6.Struct({
846
+ threadId: ThreadId,
847
+ runtimeMode: RuntimeMode,
848
+ updatedAt: IsoDateTime
849
+ });
850
+ var ThreadInteractionModeSetPayload = Schema6.Struct({
851
+ threadId: ThreadId,
852
+ interactionMode: ProviderInteractionMode.pipe(Schema6.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
853
+ updatedAt: IsoDateTime
854
+ });
855
+ var ThreadMessageSentPayload = Schema6.Struct({
856
+ threadId: ThreadId,
857
+ messageId: MessageId,
858
+ role: OrchestrationMessageRole,
859
+ text: Schema6.String,
860
+ attachments: Schema6.optional(Schema6.Array(ChatAttachment)),
861
+ turnId: Schema6.NullOr(TurnId),
862
+ streaming: Schema6.Boolean,
863
+ createdAt: IsoDateTime,
864
+ updatedAt: IsoDateTime
865
+ });
866
+ var ThreadTurnStartRequestedPayload = Schema6.Struct({
867
+ threadId: ThreadId,
868
+ messageId: MessageId,
869
+ provider: Schema6.optional(ProviderKind),
870
+ model: Schema6.optional(TrimmedNonEmptyString),
871
+ serviceTier: Schema6.optional(Schema6.NullOr(ProviderServiceTier)),
872
+ modelOptions: Schema6.optional(ProviderModelOptions),
873
+ assistantDeliveryMode: Schema6.optional(AssistantDeliveryMode),
874
+ runtimeMode: RuntimeMode.pipe(Schema6.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
875
+ interactionMode: ProviderInteractionMode.pipe(Schema6.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
876
+ createdAt: IsoDateTime
877
+ });
878
+ var ThreadTurnInterruptRequestedPayload = Schema6.Struct({
879
+ threadId: ThreadId,
880
+ turnId: Schema6.optional(TurnId),
881
+ createdAt: IsoDateTime
882
+ });
883
+ var ThreadApprovalResponseRequestedPayload = Schema6.Struct({
884
+ threadId: ThreadId,
885
+ requestId: ApprovalRequestId,
886
+ decision: ProviderApprovalDecision,
887
+ createdAt: IsoDateTime
888
+ });
889
+ var ThreadUserInputResponseRequestedPayload = Schema6.Struct({
890
+ threadId: ThreadId,
891
+ requestId: ApprovalRequestId,
892
+ answers: ProviderUserInputAnswers,
893
+ createdAt: IsoDateTime
894
+ });
895
+ var ThreadCheckpointRevertRequestedPayload = Schema6.Struct({
896
+ threadId: ThreadId,
897
+ turnCount: NonNegativeInt,
898
+ createdAt: IsoDateTime
899
+ });
900
+ var ThreadRevertedPayload = Schema6.Struct({
901
+ threadId: ThreadId,
902
+ turnCount: NonNegativeInt
903
+ });
904
+ var ThreadSessionStopRequestedPayload = Schema6.Struct({
905
+ threadId: ThreadId,
906
+ createdAt: IsoDateTime
907
+ });
908
+ var ThreadSessionSetPayload = Schema6.Struct({
909
+ threadId: ThreadId,
910
+ session: OrchestrationSession
911
+ });
912
+ var ThreadProposedPlanUpsertedPayload = Schema6.Struct({
913
+ threadId: ThreadId,
914
+ proposedPlan: OrchestrationProposedPlan
915
+ });
916
+ var ThreadTurnDiffCompletedPayload = Schema6.Struct({
917
+ threadId: ThreadId,
918
+ turnId: TurnId,
919
+ checkpointTurnCount: NonNegativeInt,
920
+ checkpointRef: CheckpointRef,
921
+ status: OrchestrationCheckpointStatus,
922
+ files: Schema6.Array(OrchestrationCheckpointFile),
923
+ assistantMessageId: Schema6.NullOr(MessageId),
924
+ completedAt: IsoDateTime
925
+ });
926
+ var ThreadActivityAppendedPayload = Schema6.Struct({
927
+ threadId: ThreadId,
928
+ activity: OrchestrationThreadActivity
929
+ });
930
+ var OrchestrationEventMetadata = Schema6.Struct({
931
+ providerTurnId: Schema6.optional(TrimmedNonEmptyString),
932
+ providerItemId: Schema6.optional(ProviderItemId),
933
+ adapterKey: Schema6.optional(TrimmedNonEmptyString),
934
+ requestId: Schema6.optional(ApprovalRequestId),
935
+ ingestedAt: Schema6.optional(IsoDateTime)
936
+ });
937
+ var EventBaseFields = {
938
+ sequence: NonNegativeInt,
939
+ eventId: EventId,
940
+ aggregateKind: OrchestrationAggregateKind,
941
+ aggregateId: Schema6.Union([ProjectId, ThreadId]),
942
+ occurredAt: IsoDateTime,
943
+ commandId: Schema6.NullOr(CommandId),
944
+ causationEventId: Schema6.NullOr(EventId),
945
+ correlationId: Schema6.NullOr(CommandId),
946
+ metadata: OrchestrationEventMetadata
947
+ };
948
+ var PersistedEventBaseFields = {
949
+ sequence: NonNegativeInt,
950
+ eventId: EventId,
951
+ aggregateKind: OrchestrationAggregateKind,
952
+ streamId: Schema6.Union([ProjectId, ThreadId]),
953
+ streamVersion: NonNegativeInt,
954
+ occurredAt: IsoDateTime,
955
+ commandId: Schema6.NullOr(CommandId),
956
+ causationEventId: Schema6.NullOr(EventId),
957
+ correlationId: Schema6.NullOr(CommandId),
958
+ actorKind: OrchestrationActorKind,
959
+ metadata: OrchestrationEventMetadata
960
+ };
961
+ var OrchestrationEvent = Schema6.Union([
962
+ Schema6.Struct({
963
+ ...EventBaseFields,
964
+ type: Schema6.Literal("project.created"),
965
+ payload: ProjectCreatedPayload
966
+ }),
967
+ Schema6.Struct({
968
+ ...EventBaseFields,
969
+ type: Schema6.Literal("project.meta-updated"),
970
+ payload: ProjectMetaUpdatedPayload
971
+ }),
972
+ Schema6.Struct({
973
+ ...EventBaseFields,
974
+ type: Schema6.Literal("project.deleted"),
975
+ payload: ProjectDeletedPayload
976
+ }),
977
+ Schema6.Struct({
978
+ ...EventBaseFields,
979
+ type: Schema6.Literal("thread.created"),
980
+ payload: ThreadCreatedPayload
981
+ }),
982
+ Schema6.Struct({
983
+ ...EventBaseFields,
984
+ type: Schema6.Literal("thread.deleted"),
985
+ payload: ThreadDeletedPayload
986
+ }),
987
+ Schema6.Struct({
988
+ ...EventBaseFields,
989
+ type: Schema6.Literal("thread.meta-updated"),
990
+ payload: ThreadMetaUpdatedPayload
991
+ }),
992
+ Schema6.Struct({
993
+ ...EventBaseFields,
994
+ type: Schema6.Literal("thread.runtime-mode-set"),
995
+ payload: ThreadRuntimeModeSetPayload
996
+ }),
997
+ Schema6.Struct({
998
+ ...EventBaseFields,
999
+ type: Schema6.Literal("thread.interaction-mode-set"),
1000
+ payload: ThreadInteractionModeSetPayload
1001
+ }),
1002
+ Schema6.Struct({
1003
+ ...EventBaseFields,
1004
+ type: Schema6.Literal("thread.message-sent"),
1005
+ payload: ThreadMessageSentPayload
1006
+ }),
1007
+ Schema6.Struct({
1008
+ ...EventBaseFields,
1009
+ type: Schema6.Literal("thread.turn-start-requested"),
1010
+ payload: ThreadTurnStartRequestedPayload
1011
+ }),
1012
+ Schema6.Struct({
1013
+ ...EventBaseFields,
1014
+ type: Schema6.Literal("thread.turn-interrupt-requested"),
1015
+ payload: ThreadTurnInterruptRequestedPayload
1016
+ }),
1017
+ Schema6.Struct({
1018
+ ...EventBaseFields,
1019
+ type: Schema6.Literal("thread.approval-response-requested"),
1020
+ payload: ThreadApprovalResponseRequestedPayload
1021
+ }),
1022
+ Schema6.Struct({
1023
+ ...EventBaseFields,
1024
+ type: Schema6.Literal("thread.user-input-response-requested"),
1025
+ payload: ThreadUserInputResponseRequestedPayload
1026
+ }),
1027
+ Schema6.Struct({
1028
+ ...EventBaseFields,
1029
+ type: Schema6.Literal("thread.checkpoint-revert-requested"),
1030
+ payload: ThreadCheckpointRevertRequestedPayload
1031
+ }),
1032
+ Schema6.Struct({
1033
+ ...EventBaseFields,
1034
+ type: Schema6.Literal("thread.reverted"),
1035
+ payload: ThreadRevertedPayload
1036
+ }),
1037
+ Schema6.Struct({
1038
+ ...EventBaseFields,
1039
+ type: Schema6.Literal("thread.session-stop-requested"),
1040
+ payload: ThreadSessionStopRequestedPayload
1041
+ }),
1042
+ Schema6.Struct({
1043
+ ...EventBaseFields,
1044
+ type: Schema6.Literal("thread.session-set"),
1045
+ payload: ThreadSessionSetPayload
1046
+ }),
1047
+ Schema6.Struct({
1048
+ ...EventBaseFields,
1049
+ type: Schema6.Literal("thread.proposed-plan-upserted"),
1050
+ payload: ThreadProposedPlanUpsertedPayload
1051
+ }),
1052
+ Schema6.Struct({
1053
+ ...EventBaseFields,
1054
+ type: Schema6.Literal("thread.turn-diff-completed"),
1055
+ payload: ThreadTurnDiffCompletedPayload
1056
+ }),
1057
+ Schema6.Struct({
1058
+ ...EventBaseFields,
1059
+ type: Schema6.Literal("thread.activity-appended"),
1060
+ payload: ThreadActivityAppendedPayload
1061
+ })
1062
+ ]);
1063
+ var OrchestrationPersistedEvent = Schema6.Union([
1064
+ Schema6.Struct({
1065
+ ...PersistedEventBaseFields,
1066
+ eventType: Schema6.Literal("project.created"),
1067
+ payload: ProjectCreatedPayload
1068
+ }),
1069
+ Schema6.Struct({
1070
+ ...PersistedEventBaseFields,
1071
+ eventType: Schema6.Literal("project.meta-updated"),
1072
+ payload: ProjectMetaUpdatedPayload
1073
+ }),
1074
+ Schema6.Struct({
1075
+ ...PersistedEventBaseFields,
1076
+ eventType: Schema6.Literal("project.deleted"),
1077
+ payload: ProjectDeletedPayload
1078
+ }),
1079
+ Schema6.Struct({
1080
+ ...PersistedEventBaseFields,
1081
+ eventType: Schema6.Literal("thread.created"),
1082
+ payload: ThreadCreatedPayload
1083
+ }),
1084
+ Schema6.Struct({
1085
+ ...PersistedEventBaseFields,
1086
+ eventType: Schema6.Literal("thread.deleted"),
1087
+ payload: ThreadDeletedPayload
1088
+ }),
1089
+ Schema6.Struct({
1090
+ ...PersistedEventBaseFields,
1091
+ eventType: Schema6.Literal("thread.meta-updated"),
1092
+ payload: ThreadMetaUpdatedPayload
1093
+ }),
1094
+ Schema6.Struct({
1095
+ ...PersistedEventBaseFields,
1096
+ eventType: Schema6.Literal("thread.runtime-mode-set"),
1097
+ payload: ThreadRuntimeModeSetPayload
1098
+ }),
1099
+ Schema6.Struct({
1100
+ ...PersistedEventBaseFields,
1101
+ eventType: Schema6.Literal("thread.interaction-mode-set"),
1102
+ payload: ThreadInteractionModeSetPayload
1103
+ }),
1104
+ Schema6.Struct({
1105
+ ...PersistedEventBaseFields,
1106
+ eventType: Schema6.Literal("thread.message-sent"),
1107
+ payload: ThreadMessageSentPayload
1108
+ }),
1109
+ Schema6.Struct({
1110
+ ...PersistedEventBaseFields,
1111
+ eventType: Schema6.Literal("thread.turn-start-requested"),
1112
+ payload: ThreadTurnStartRequestedPayload
1113
+ }),
1114
+ Schema6.Struct({
1115
+ ...PersistedEventBaseFields,
1116
+ eventType: Schema6.Literal("thread.turn-interrupt-requested"),
1117
+ payload: ThreadTurnInterruptRequestedPayload
1118
+ }),
1119
+ Schema6.Struct({
1120
+ ...PersistedEventBaseFields,
1121
+ eventType: Schema6.Literal("thread.approval-response-requested"),
1122
+ payload: ThreadApprovalResponseRequestedPayload
1123
+ }),
1124
+ Schema6.Struct({
1125
+ ...PersistedEventBaseFields,
1126
+ eventType: Schema6.Literal("thread.user-input-response-requested"),
1127
+ payload: ThreadUserInputResponseRequestedPayload
1128
+ }),
1129
+ Schema6.Struct({
1130
+ ...PersistedEventBaseFields,
1131
+ eventType: Schema6.Literal("thread.checkpoint-revert-requested"),
1132
+ payload: ThreadCheckpointRevertRequestedPayload
1133
+ }),
1134
+ Schema6.Struct({
1135
+ ...PersistedEventBaseFields,
1136
+ eventType: Schema6.Literal("thread.reverted"),
1137
+ payload: ThreadRevertedPayload
1138
+ }),
1139
+ Schema6.Struct({
1140
+ ...PersistedEventBaseFields,
1141
+ eventType: Schema6.Literal("thread.session-stop-requested"),
1142
+ payload: ThreadSessionStopRequestedPayload
1143
+ }),
1144
+ Schema6.Struct({
1145
+ ...PersistedEventBaseFields,
1146
+ eventType: Schema6.Literal("thread.session-set"),
1147
+ payload: ThreadSessionSetPayload
1148
+ }),
1149
+ Schema6.Struct({
1150
+ ...PersistedEventBaseFields,
1151
+ eventType: Schema6.Literal("thread.proposed-plan-upserted"),
1152
+ payload: ThreadProposedPlanUpsertedPayload
1153
+ }),
1154
+ Schema6.Struct({
1155
+ ...PersistedEventBaseFields,
1156
+ eventType: Schema6.Literal("thread.turn-diff-completed"),
1157
+ payload: ThreadTurnDiffCompletedPayload
1158
+ }),
1159
+ Schema6.Struct({
1160
+ ...PersistedEventBaseFields,
1161
+ eventType: Schema6.Literal("thread.activity-appended"),
1162
+ payload: ThreadActivityAppendedPayload
1163
+ })
1164
+ ]);
1165
+ var OrchestrationCommandReceiptStatus = Schema6.Literals(["accepted", "rejected"]);
1166
+ var TurnCountRange = Schema6.Struct({
1167
+ fromTurnCount: NonNegativeInt,
1168
+ toTurnCount: NonNegativeInt
1169
+ }).check(Schema6.makeFilter((input) => input.fromTurnCount <= input.toTurnCount || new SchemaIssue.InvalidValue(Option.some(input.fromTurnCount), {
1170
+ message: "fromTurnCount must be less than or equal to toTurnCount"
1171
+ }), { identifier: "OrchestrationTurnDiffRange" }));
1172
+ var ThreadTurnDiff = TurnCountRange.mapFields(Struct.assign({
1173
+ threadId: ThreadId,
1174
+ diff: Schema6.String
1175
+ }), { unsafePreserveChecks: true });
1176
+ var ProviderSessionRuntimeStatus = Schema6.Literals([
1177
+ "starting",
1178
+ "running",
1179
+ "stopped",
1180
+ "error"
1181
+ ]);
1182
+ var ProjectionThreadTurnStatus = Schema6.Literals([
1183
+ "running",
1184
+ "completed",
1185
+ "interrupted",
1186
+ "error"
1187
+ ]);
1188
+ var ProjectionCheckpointRow = Schema6.Struct({
1189
+ threadId: ThreadId,
1190
+ turnId: TurnId,
1191
+ checkpointTurnCount: NonNegativeInt,
1192
+ checkpointRef: CheckpointRef,
1193
+ status: OrchestrationCheckpointStatus,
1194
+ files: Schema6.Array(OrchestrationCheckpointFile),
1195
+ assistantMessageId: Schema6.NullOr(MessageId),
1196
+ completedAt: IsoDateTime
1197
+ });
1198
+ var ProjectionPendingApprovalStatus = Schema6.Literals(["pending", "resolved"]);
1199
+ var ProjectionPendingApprovalDecision = Schema6.NullOr(ProviderApprovalDecision);
1200
+ var DispatchResult = Schema6.Struct({
1201
+ sequence: NonNegativeInt
1202
+ });
1203
+ var OrchestrationGetSnapshotInput = Schema6.Struct({});
1204
+ var OrchestrationGetTurnDiffInput = TurnCountRange.mapFields(Struct.assign({ threadId: ThreadId }), { unsafePreserveChecks: true });
1205
+ var OrchestrationGetFullThreadDiffInput = Schema6.Struct({
1206
+ threadId: ThreadId,
1207
+ toTurnCount: NonNegativeInt
1208
+ });
1209
+ var OrchestrationReplayEventsInput = Schema6.Struct({
1210
+ fromSequenceExclusive: NonNegativeInt
1211
+ });
1212
+ var OrchestrationReplayEventsResult = Schema6.Array(OrchestrationEvent);
1213
+
1214
+ // packages/contracts/src/runtime.ts
1215
+ var RunKind = Schema7.Literals(["adhoc", "task", "batch", "validation", "review"]);
1216
+ var RunMode = Schema7.Literals(["interactive", "autonomous", "supervised"]);
1217
+ var RunStatus = Schema7.Literals([
1218
+ "created",
1219
+ "queued",
1220
+ "preparing",
1221
+ "running",
1222
+ "waiting-approval",
1223
+ "waiting-user-input",
1224
+ "paused",
1225
+ "validating",
1226
+ "reviewing",
1227
+ "closing-out",
1228
+ "needs-attention",
1229
+ "completed",
1230
+ "failed",
1231
+ "stopped"
1232
+ ]);
1233
+ var EngineSandboxMode = Schema7.Literals([
1234
+ "read-only",
1235
+ "workspace-write",
1236
+ "danger-full-access"
1237
+ ]);
1238
+ var IsolationMode = Schema7.Literals(["none", "env", "worktree"]);
1239
+ var RuntimeStatus = Schema7.Literals([
1240
+ "prepared",
1241
+ "starting",
1242
+ "running",
1243
+ "interrupted",
1244
+ "exited",
1245
+ "failed",
1246
+ "destroyed"
1247
+ ]);
1248
+ var RunExecutionTarget = Schema7.Literals(["local", "remote"]);
1249
+ var RunSummary = Schema7.Struct({
1250
+ id: RunId,
1251
+ workspaceId: WorkspaceId,
1252
+ taskId: Schema7.NullOr(TaskId),
1253
+ title: TrimmedNonEmptyString,
1254
+ runKind: RunKind,
1255
+ mode: RunMode,
1256
+ runtimeMode: RuntimeMode,
1257
+ interactionMode: ProviderInteractionMode,
1258
+ status: RunStatus,
1259
+ runtimeAdapter: Schema7.Literal("pi"),
1260
+ model: Schema7.NullOr(TrimmedNonEmptyString),
1261
+ initialPrompt: Schema7.NullOr(Schema7.String),
1262
+ executionTarget: Schema7.optional(RunExecutionTarget),
1263
+ remoteHostId: Schema7.optional(Schema7.NullOr(TrimmedNonEmptyString)),
1264
+ remoteLeaseId: Schema7.optional(Schema7.NullOr(TrimmedNonEmptyString)),
1265
+ remoteLeaseClaimedAt: Schema7.optional(Schema7.NullOr(IsoDateTime)),
1266
+ activeRuntimeId: Schema7.NullOr(EngineRuntimeId),
1267
+ latestMessageId: Schema7.NullOr(TrimmedNonEmptyString),
1268
+ pendingApprovalCount: NonNegativeInt,
1269
+ pendingUserInputCount: NonNegativeInt,
1270
+ branch: Schema7.NullOr(TrimmedNonEmptyString),
1271
+ worktreePath: Schema7.NullOr(TrimmedNonEmptyString),
1272
+ errorText: Schema7.NullOr(Schema7.String),
1273
+ createdAt: IsoDateTime,
1274
+ updatedAt: IsoDateTime,
1275
+ startedAt: Schema7.NullOr(IsoDateTime),
1276
+ completedAt: Schema7.NullOr(IsoDateTime)
1277
+ });
1278
+ var RuntimeSummary = Schema7.Struct({
1279
+ id: EngineRuntimeId,
1280
+ workspaceId: WorkspaceId,
1281
+ runId: RunId,
1282
+ adapterKind: Schema7.Literal("pi"),
1283
+ executionTarget: Schema7.optional(RunExecutionTarget),
1284
+ remoteHostId: Schema7.optional(Schema7.NullOr(TrimmedNonEmptyString)),
1285
+ status: RuntimeStatus,
1286
+ sandboxMode: EngineSandboxMode,
1287
+ isolationMode: IsolationMode,
1288
+ workspaceDir: Schema7.NullOr(TrimmedNonEmptyString),
1289
+ homeDir: Schema7.NullOr(TrimmedNonEmptyString),
1290
+ tmpDir: Schema7.NullOr(TrimmedNonEmptyString),
1291
+ cacheDir: Schema7.NullOr(TrimmedNonEmptyString),
1292
+ logsDir: Schema7.NullOr(TrimmedNonEmptyString),
1293
+ stateDir: Schema7.NullOr(TrimmedNonEmptyString),
1294
+ sessionDir: Schema7.NullOr(TrimmedNonEmptyString),
1295
+ sessionLogPath: Schema7.NullOr(TrimmedNonEmptyString),
1296
+ pid: Schema7.NullOr(NonNegativeInt),
1297
+ startedAt: Schema7.NullOr(IsoDateTime),
1298
+ updatedAt: IsoDateTime,
1299
+ exitedAt: Schema7.NullOr(IsoDateTime)
1300
+ });
1301
+ var ApprovalStatus = Schema7.Literals(["pending", "resolved"]);
1302
+ var ApprovalSummary = Schema7.Struct({
1303
+ id: TrimmedNonEmptyString,
1304
+ runId: RunId,
1305
+ actionId: Schema7.NullOr(TrimmedNonEmptyString),
1306
+ requestKind: TrimmedNonEmptyString,
1307
+ status: ApprovalStatus,
1308
+ payload: Schema7.Unknown,
1309
+ createdAt: IsoDateTime,
1310
+ resolvedAt: Schema7.NullOr(IsoDateTime)
1311
+ });
1312
+ var UserInputRequestSummary = Schema7.Struct({
1313
+ id: TrimmedNonEmptyString,
1314
+ runId: RunId,
1315
+ status: ApprovalStatus,
1316
+ payload: Schema7.Unknown,
1317
+ createdAt: IsoDateTime,
1318
+ resolvedAt: Schema7.NullOr(IsoDateTime)
1319
+ });
1320
+ var WorktreeSummary = Schema7.Struct({
1321
+ id: WorktreeId,
1322
+ workspaceId: WorkspaceId,
1323
+ runId: RunId,
1324
+ taskId: Schema7.NullOr(TaskId),
1325
+ branchName: TrimmedNonEmptyString,
1326
+ path: TrimmedNonEmptyString,
1327
+ status: TrimmedNonEmptyString,
1328
+ createdAt: IsoDateTime,
1329
+ cleanedAt: Schema7.NullOr(IsoDateTime)
1330
+ });
1331
+
1332
+ // packages/contracts/src/supervisor-journal.ts
1333
+ var SupervisorStopReason = Schema8.Literals([
1334
+ "all-done",
1335
+ "all-human-blocked",
1336
+ "max-tasks",
1337
+ "budget",
1338
+ "judge-stop",
1339
+ "operator-stop",
1340
+ "source-error"
1341
+ ]);
1342
+ var SupervisorSelectionPolicy = Schema8.Literals(["rank", "max-unblock", "blocking-only"]);
1343
+ var SupervisorStatus = Schema8.Literals(["running", "idle", "stopped", "finished"]);
1344
+ var TaskClosureSummary = Schema8.Struct({
1345
+ taskId: TaskId,
1346
+ runId: RunId,
1347
+ prUrl: Schema8.NullOr(Schema8.String),
1348
+ mergeGate: Schema8.NullOr(Schema8.Literals(["passed", "blocked", "skipped"])),
1349
+ acceptanceChecked: Schema8.Array(Schema8.Struct({
1350
+ item: Schema8.String,
1351
+ met: Schema8.Boolean
1352
+ })),
1353
+ unblockedTaskIds: Schema8.Array(TaskId)
1354
+ });
1355
+ var SupervisorStartedEvent = Schema8.Struct({
1356
+ kind: Schema8.Literal("supervisor.started"),
1357
+ at: IsoDateTime,
1358
+ options: Schema8.Unknown
1359
+ });
1360
+ var SupervisorSelectionPlannedEvent = Schema8.Struct({
1361
+ kind: Schema8.Literal("supervisor.selection-planned"),
1362
+ at: IsoDateTime,
1363
+ taskIds: Schema8.Array(TaskId),
1364
+ policy: SupervisorSelectionPolicy
1365
+ });
1366
+ var SupervisorDispatchStartedEvent = Schema8.Struct({
1367
+ kind: Schema8.Literal("supervisor.dispatch-started"),
1368
+ at: IsoDateTime,
1369
+ taskId: TaskId,
1370
+ score: NonNegativeInt
1371
+ });
1372
+ var SupervisorDispatchConfirmedEvent = Schema8.Struct({
1373
+ kind: Schema8.Literal("supervisor.dispatch-confirmed"),
1374
+ at: IsoDateTime,
1375
+ taskId: TaskId,
1376
+ runId: RunId,
1377
+ dispatchHandle: Schema8.optional(Schema8.NullOr(Schema8.String))
1378
+ });
1379
+ var SupervisorDispatchEvent = Schema8.Struct({
1380
+ kind: Schema8.Literal("supervisor.dispatch"),
1381
+ at: IsoDateTime,
1382
+ taskId: TaskId,
1383
+ runId: RunId,
1384
+ score: NonNegativeInt,
1385
+ dispatchHandle: Schema8.optional(Schema8.NullOr(Schema8.String))
1386
+ });
1387
+ var SupervisorOutcomeEvent = Schema8.Struct({
1388
+ kind: Schema8.Literal("supervisor.outcome"),
1389
+ at: IsoDateTime,
1390
+ taskId: TaskId,
1391
+ runId: RunId,
1392
+ status: RunStatus,
1393
+ failed: Schema8.Boolean,
1394
+ unblockedTaskIds: Schema8.Array(TaskId),
1395
+ closure: Schema8.optional(TaskClosureSummary)
1396
+ });
1397
+ var SupervisorSkippedEvent = Schema8.Struct({
1398
+ kind: Schema8.Literal("supervisor.skipped"),
1399
+ at: IsoDateTime,
1400
+ taskId: TaskId,
1401
+ reason: Schema8.String
1402
+ });
1403
+ var SupervisorIdleEvent = Schema8.Struct({
1404
+ kind: Schema8.Literal("supervisor.idle"),
1405
+ at: IsoDateTime,
1406
+ reason: SupervisorStopReason
1407
+ });
1408
+ var SupervisorStoppedEvent = Schema8.Struct({
1409
+ kind: Schema8.Literal("supervisor.stopped"),
1410
+ at: IsoDateTime,
1411
+ reason: SupervisorStopReason
1412
+ });
1413
+ var SupervisorFinishedEvent = Schema8.Struct({
1414
+ kind: Schema8.Literal("supervisor.finished"),
1415
+ at: IsoDateTime,
1416
+ processed: NonNegativeInt,
1417
+ succeeded: NonNegativeInt,
1418
+ failed: NonNegativeInt,
1419
+ skipped: Schema8.optional(NonNegativeInt),
1420
+ idleReason: Schema8.NullOr(SupervisorStopReason)
1421
+ });
1422
+ var SupervisorEvent = Schema8.Union([
1423
+ SupervisorStartedEvent,
1424
+ SupervisorSelectionPlannedEvent,
1425
+ SupervisorDispatchStartedEvent,
1426
+ SupervisorDispatchConfirmedEvent,
1427
+ SupervisorDispatchEvent,
1428
+ SupervisorOutcomeEvent,
1429
+ SupervisorSkippedEvent,
1430
+ SupervisorIdleEvent,
1431
+ SupervisorStoppedEvent,
1432
+ SupervisorFinishedEvent
1433
+ ]);
1434
+ var SupervisorProjection = Schema8.Struct({
1435
+ status: SupervisorStatus,
1436
+ processed: NonNegativeInt,
1437
+ succeeded: NonNegativeInt,
1438
+ failed: NonNegativeInt,
1439
+ skipped: NonNegativeInt,
1440
+ current: Schema8.NullOr(Schema8.Struct({ taskId: TaskId, runId: RunId })),
1441
+ plannedOrder: Schema8.Array(TaskId),
1442
+ selectionPolicy: Schema8.NullOr(SupervisorSelectionPolicy),
1443
+ concurrency: Schema8.NullOr(NonNegativeInt),
1444
+ idleReason: Schema8.NullOr(SupervisorStopReason),
1445
+ stopReason: Schema8.NullOr(SupervisorStopReason),
1446
+ closures: Schema8.Array(TaskClosureSummary),
1447
+ anomalies: Schema8.Array(Schema8.String)
89
1448
  });
90
1449
 
91
1450
  // packages/contracts/src/config.ts
92
- var WorkspaceIsolation = Schema2.Literals([
1451
+ var WorkspaceIsolation = Schema9.Literals([
93
1452
  "worktree",
94
1453
  "directory"
95
1454
  ]);
96
1455
  var WorkspaceCheckout = WorkspaceIsolation;
97
- var WorkspaceSandbox = Schema2.Literals(["enforce", "auto", "off"]);
98
- var ScopeSearchPrefix = Schema2.Struct({
99
- prefix: Schema2.String,
100
- matchStartsWith: Schema2.optional(Schema2.Array(Schema2.String)),
101
- matchExact: Schema2.optional(Schema2.Array(Schema2.String))
102
- });
103
- var ScopeNormalizationRules = Schema2.Struct({
104
- stripPrefixes: Schema2.optional(Schema2.Array(Schema2.String)),
105
- searchPrefixes: Schema2.optional(Schema2.Array(ScopeSearchPrefix))
106
- });
107
- var WorkspaceConfig = Schema2.Struct({
108
- mainRepo: Schema2.String,
109
- checkout: Schema2.optional(WorkspaceCheckout),
110
- isolation: Schema2.optional(WorkspaceIsolation),
111
- sandbox: Schema2.optional(WorkspaceSandbox),
112
- scopeNormalization: Schema2.optional(ScopeNormalizationRules)
113
- });
114
- var TaskSourceConfig = Schema2.Struct({
115
- kind: Schema2.String,
116
- path: Schema2.optional(Schema2.String),
117
- owner: Schema2.optional(Schema2.String),
118
- repo: Schema2.optional(Schema2.String),
119
- labels: Schema2.optional(Schema2.Array(Schema2.String)),
120
- state: Schema2.optional(Schema2.Literals(["open", "closed", "all"])),
121
- url: Schema2.optional(Schema2.String),
122
- options: Schema2.optional(Schema2.Record(Schema2.String, Schema2.Unknown))
123
- });
124
- var RuntimeHarness = Schema2.Literal("pi");
125
- var RigRuntimeMode = Schema2.Literals(["yolo", "approval-required"]);
126
- var PiRuntimeConfig = Schema2.Struct({
127
- packages: Schema2.optional(Schema2.Array(Schema2.String))
128
- });
129
- var RigServerConfig = Schema2.Struct({
130
- host: Schema2.optional(Schema2.String),
131
- relayUrl: Schema2.optional(Schema2.String),
132
- registryUrl: Schema2.optional(Schema2.String),
133
- sshTarget: Schema2.optional(Schema2.String),
134
- checkout: Schema2.optional(Schema2.String)
135
- });
136
- var RuntimeConfig = Schema2.Struct({
137
- agentRoles: Schema2.optional(Schema2.Record(Schema2.String, Schema2.Unknown)),
138
- timeouts: Schema2.optional(Schema2.Record(Schema2.String, Schema2.Number)),
139
- harness: Schema2.optional(RuntimeHarness),
140
- model: Schema2.optional(Schema2.String),
141
- mode: Schema2.optional(RigRuntimeMode),
142
- pi: Schema2.optional(PiRuntimeConfig),
143
- server: Schema2.optional(RigServerConfig)
144
- });
145
- var ProjectIdentity = Schema2.Struct({
146
- name: Schema2.String,
147
- repo: Schema2.optional(Schema2.String)
148
- });
149
- var PlanningConfig = Schema2.Struct({
150
- mode: Schema2.optional(Schema2.Literals(["auto", "always", "off"])),
151
- requireForLabels: Schema2.optional(Schema2.Array(Schema2.String)),
152
- skipForLabels: Schema2.optional(Schema2.Array(Schema2.String))
153
- });
154
- var GitHubProjectStatusConfig = Schema2.Struct({
155
- enabled: Schema2.optional(Schema2.Boolean),
156
- projectId: Schema2.optional(Schema2.String),
157
- statusFieldId: Schema2.optional(Schema2.String),
158
- statuses: Schema2.optional(Schema2.Struct({
159
- running: Schema2.optional(Schema2.String),
160
- prOpen: Schema2.optional(Schema2.String),
161
- ciFixing: Schema2.optional(Schema2.String),
162
- merging: Schema2.optional(Schema2.String),
163
- done: Schema2.optional(Schema2.String),
164
- needsAttention: Schema2.optional(Schema2.String)
1456
+ var WorkspaceSandbox = Schema9.Literals(["enforce", "auto", "off"]);
1457
+ var ScopeSearchPrefix = Schema9.Struct({
1458
+ prefix: Schema9.String,
1459
+ matchStartsWith: Schema9.optional(Schema9.Array(Schema9.String)),
1460
+ matchExact: Schema9.optional(Schema9.Array(Schema9.String))
1461
+ });
1462
+ var ScopeNormalizationRules = Schema9.Struct({
1463
+ stripPrefixes: Schema9.optional(Schema9.Array(Schema9.String)),
1464
+ searchPrefixes: Schema9.optional(Schema9.Array(ScopeSearchPrefix))
1465
+ });
1466
+ var WorkspaceConfig = Schema9.Struct({
1467
+ mainRepo: Schema9.String,
1468
+ checkout: Schema9.optional(WorkspaceCheckout),
1469
+ isolation: Schema9.optional(WorkspaceIsolation),
1470
+ sandbox: Schema9.optional(WorkspaceSandbox),
1471
+ scopeNormalization: Schema9.optional(ScopeNormalizationRules)
1472
+ });
1473
+ var TaskSourceConfig = Schema9.Struct({
1474
+ kind: Schema9.String,
1475
+ path: Schema9.optional(Schema9.String),
1476
+ owner: Schema9.optional(Schema9.String),
1477
+ repo: Schema9.optional(Schema9.String),
1478
+ labels: Schema9.optional(Schema9.Array(Schema9.String)),
1479
+ state: Schema9.optional(Schema9.Literals(["open", "closed", "all"])),
1480
+ url: Schema9.optional(Schema9.String),
1481
+ options: Schema9.optional(Schema9.Record(Schema9.String, Schema9.Unknown))
1482
+ });
1483
+ var RuntimeHarness = Schema9.Literal("pi");
1484
+ var RigRuntimeMode = Schema9.Literals(["yolo", "approval-required"]);
1485
+ var PiRuntimeConfig = Schema9.Struct({
1486
+ packages: Schema9.optional(Schema9.Array(Schema9.String))
1487
+ });
1488
+ var RigServerConfig = Schema9.Struct({
1489
+ host: Schema9.optional(Schema9.String),
1490
+ relayUrl: Schema9.optional(Schema9.String),
1491
+ registryUrl: Schema9.optional(Schema9.String),
1492
+ sshTarget: Schema9.optional(Schema9.String),
1493
+ checkout: Schema9.optional(Schema9.String)
1494
+ });
1495
+ var RuntimePositiveInt = Schema9.Int.check(Schema9.isGreaterThanOrEqualTo(1));
1496
+ var RuntimeSupervisorConfig = Schema9.Struct({
1497
+ concurrency: Schema9.optional(RuntimePositiveInt),
1498
+ pauseOnAttention: Schema9.optional(Schema9.Boolean),
1499
+ stopWhen: Schema9.optional(Schema9.Array(SupervisorStopReason)),
1500
+ maxTasks: Schema9.optional(RuntimePositiveInt),
1501
+ selectionPolicy: Schema9.optional(SupervisorSelectionPolicy),
1502
+ failFast: Schema9.optional(Schema9.Boolean)
1503
+ });
1504
+ var RuntimeDriftConfig = Schema9.Struct({
1505
+ enabled: Schema9.optional(Schema9.Boolean),
1506
+ failOnDrift: Schema9.optional(Schema9.Boolean),
1507
+ docsGlobs: Schema9.optional(Schema9.Array(Schema9.String)),
1508
+ ignoreGlobs: Schema9.optional(Schema9.Array(Schema9.String)),
1509
+ judge: Schema9.optional(Schema9.Boolean)
1510
+ });
1511
+ var RuntimePlanningConfig = Schema9.Struct({
1512
+ architectRole: Schema9.optional(Schema9.String),
1513
+ autoResolveFromCode: Schema9.optional(Schema9.Boolean),
1514
+ materialize: Schema9.optional(Schema9.Literals(["dry-run", "create"]))
1515
+ });
1516
+ var RuntimeConfig = Schema9.Struct({
1517
+ agentRoles: Schema9.optional(Schema9.Record(Schema9.String, Schema9.Unknown)),
1518
+ timeouts: Schema9.optional(Schema9.Record(Schema9.String, Schema9.Number)),
1519
+ harness: Schema9.optional(RuntimeHarness),
1520
+ model: Schema9.optional(Schema9.String),
1521
+ mode: Schema9.optional(RigRuntimeMode),
1522
+ pi: Schema9.optional(PiRuntimeConfig),
1523
+ server: Schema9.optional(RigServerConfig),
1524
+ capabilities: Schema9.optional(CapabilityGrants),
1525
+ supervisor: Schema9.optional(RuntimeSupervisorConfig),
1526
+ drift: Schema9.optional(RuntimeDriftConfig),
1527
+ planning: Schema9.optional(RuntimePlanningConfig)
1528
+ });
1529
+ var ProjectIdentity = Schema9.Struct({
1530
+ name: Schema9.String,
1531
+ repo: Schema9.optional(Schema9.String)
1532
+ });
1533
+ var PlanningConfig = Schema9.Struct({
1534
+ mode: Schema9.optional(Schema9.Literals(["auto", "always", "off"])),
1535
+ requireForLabels: Schema9.optional(Schema9.Array(Schema9.String)),
1536
+ skipForLabels: Schema9.optional(Schema9.Array(Schema9.String))
1537
+ });
1538
+ var GitHubProjectStatusConfig = Schema9.Struct({
1539
+ enabled: Schema9.optional(Schema9.Boolean),
1540
+ projectId: Schema9.optional(Schema9.String),
1541
+ statusFieldId: Schema9.optional(Schema9.String),
1542
+ statuses: Schema9.optional(Schema9.Struct({
1543
+ running: Schema9.optional(Schema9.String),
1544
+ prOpen: Schema9.optional(Schema9.String),
1545
+ ciFixing: Schema9.optional(Schema9.String),
1546
+ merging: Schema9.optional(Schema9.String),
1547
+ done: Schema9.optional(Schema9.String),
1548
+ needsAttention: Schema9.optional(Schema9.String)
165
1549
  }))
166
1550
  });
167
- var GitHubConfig = Schema2.Struct({
168
- issueUpdates: Schema2.optional(Schema2.Literals(["lifecycle", "minimal", "off"])),
169
- projects: Schema2.optional(GitHubProjectStatusConfig)
170
- });
171
- var AutomationConfig = Schema2.Struct({
172
- maxValidationAttempts: Schema2.optional(Schema2.Number),
173
- maxPrFixIterations: Schema2.optional(Schema2.Number)
174
- });
175
- var PullRequestConfig = Schema2.Struct({
176
- mode: Schema2.optional(Schema2.Literals(["auto", "ask", "off"])),
177
- watchChecks: Schema2.optional(Schema2.Boolean),
178
- autoFixChecks: Schema2.optional(Schema2.Boolean),
179
- autoFixReview: Schema2.optional(Schema2.Boolean),
180
- pendingTimeoutMs: Schema2.optional(Schema2.Number),
181
- pendingPollMs: Schema2.optional(Schema2.Number)
182
- });
183
- var MergeConfig = Schema2.Struct({
184
- mode: Schema2.optional(Schema2.Literals(["auto", "off", "pr-ready"])),
185
- method: Schema2.optional(Schema2.Literals(["repo-default", "squash", "merge", "rebase"])),
186
- deleteBranch: Schema2.optional(Schema2.Union([Schema2.Literal("repo-default"), Schema2.Boolean])),
187
- allowedFailures: Schema2.optional(Schema2.Array(Schema2.String)),
188
- bypass: Schema2.optional(Schema2.Boolean)
189
- });
190
- var IssueAnalysisConfig = Schema2.Struct({
191
- enabled: Schema2.optional(Schema2.Boolean),
192
- harness: Schema2.optional(Schema2.Literal("pi")),
193
- model: Schema2.optional(Schema2.String),
194
- mode: Schema2.optional(Schema2.Literals(["continuous", "off"]))
195
- });
196
- var ReviewConfig = Schema2.Struct({
197
- mode: Schema2.optional(Schema2.Literals(["off", "advisory", "required"])),
198
- provider: Schema2.optional(Schema2.Literals(["greptile", "github"]))
199
- });
200
- var RigConfig = Schema2.Struct({
1551
+ var GitHubConfig = Schema9.Struct({
1552
+ issueUpdates: Schema9.optional(Schema9.Literals(["lifecycle", "minimal", "off"])),
1553
+ projects: Schema9.optional(GitHubProjectStatusConfig)
1554
+ });
1555
+ var AutomationConfig = Schema9.Struct({
1556
+ maxValidationAttempts: Schema9.optional(Schema9.Number),
1557
+ maxPrFixIterations: Schema9.optional(Schema9.Number)
1558
+ });
1559
+ var PullRequestConfig = Schema9.Struct({
1560
+ mode: Schema9.optional(Schema9.Literals(["auto", "ask", "off"])),
1561
+ watchChecks: Schema9.optional(Schema9.Boolean),
1562
+ autoFixChecks: Schema9.optional(Schema9.Boolean),
1563
+ autoFixReview: Schema9.optional(Schema9.Boolean),
1564
+ pendingTimeoutMs: Schema9.optional(Schema9.Number),
1565
+ pendingPollMs: Schema9.optional(Schema9.Number)
1566
+ });
1567
+ var MergeConfig = Schema9.Struct({
1568
+ mode: Schema9.optional(Schema9.Literals(["auto", "off", "pr-ready"])),
1569
+ method: Schema9.optional(Schema9.Literals(["repo-default", "squash", "merge", "rebase"])),
1570
+ deleteBranch: Schema9.optional(Schema9.Union([Schema9.Literal("repo-default"), Schema9.Boolean])),
1571
+ allowedFailures: Schema9.optional(Schema9.Array(Schema9.String)),
1572
+ bypass: Schema9.optional(Schema9.Boolean)
1573
+ });
1574
+ var IssueAnalysisConfig = Schema9.Struct({
1575
+ enabled: Schema9.optional(Schema9.Boolean),
1576
+ harness: Schema9.optional(Schema9.Literal("pi")),
1577
+ model: Schema9.optional(Schema9.String),
1578
+ mode: Schema9.optional(Schema9.Literals(["continuous", "off"]))
1579
+ });
1580
+ var ReviewConfig = Schema9.Struct({
1581
+ mode: Schema9.optional(Schema9.Literals(["off", "advisory", "required"])),
1582
+ provider: Schema9.optional(Schema9.Literals(["greptile", "github"]))
1583
+ });
1584
+ var RigConfig = Schema9.Struct({
201
1585
  project: ProjectIdentity,
202
- plugins: Schema2.Array(RigPlugin),
1586
+ plugins: Schema9.Array(RigPlugin),
203
1587
  taskSource: TaskSourceConfig,
204
1588
  workspace: WorkspaceConfig,
205
- runtime: Schema2.optional(RuntimeConfig),
206
- planning: Schema2.optional(PlanningConfig),
207
- github: Schema2.optional(GitHubConfig),
208
- automation: Schema2.optional(AutomationConfig),
209
- pr: Schema2.optional(PullRequestConfig),
210
- merge: Schema2.optional(MergeConfig),
211
- review: Schema2.optional(ReviewConfig),
212
- issueAnalysis: Schema2.optional(IssueAnalysisConfig),
213
- env: Schema2.optional(Schema2.Record(Schema2.String, Schema2.String))
1589
+ runtime: Schema9.optional(RuntimeConfig),
1590
+ planning: Schema9.optional(PlanningConfig),
1591
+ github: Schema9.optional(GitHubConfig),
1592
+ automation: Schema9.optional(AutomationConfig),
1593
+ pr: Schema9.optional(PullRequestConfig),
1594
+ merge: Schema9.optional(MergeConfig),
1595
+ review: Schema9.optional(ReviewConfig),
1596
+ issueAnalysis: Schema9.optional(IssueAnalysisConfig),
1597
+ capabilities: Schema9.optional(CapabilityGrants),
1598
+ env: Schema9.optional(Schema9.Record(Schema9.String, Schema9.String))
214
1599
  });
215
1600
  export {
216
1601
  WorkspaceSandbox,
@@ -220,7 +1605,10 @@ export {
220
1605
  TaskSourceConfig,
221
1606
  ScopeSearchPrefix,
222
1607
  ScopeNormalizationRules,
1608
+ RuntimeSupervisorConfig,
1609
+ RuntimePlanningConfig,
223
1610
  RuntimeHarness,
1611
+ RuntimeDriftConfig,
224
1612
  RuntimeConfig,
225
1613
  RigServerConfig,
226
1614
  RigRuntimeMode,