@h-rig/contracts 0.0.6-alpha.156 → 0.0.6-alpha.158

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.
Files changed (126) hide show
  1. package/dist/index.cjs +2340 -6832
  2. package/dist/index.mjs +2116 -6608
  3. package/dist/src/agent-roles.d.ts +8 -0
  4. package/dist/src/browser.d.ts +34 -4
  5. package/dist/src/browser.js +8 -1
  6. package/dist/src/capability-id.d.ts +22 -0
  7. package/dist/src/capability-id.js +8 -0
  8. package/dist/src/cli-output.d.ts +24 -0
  9. package/dist/src/cli-runner.d.ts +43 -0
  10. package/dist/src/cli-runner.js +13 -0
  11. package/dist/src/collab-session-viewer.d.ts +36 -0
  12. package/dist/src/collab-session-viewer.js +13 -0
  13. package/dist/src/config.d.ts +11 -0
  14. package/dist/src/config.js +279 -1098
  15. package/dist/src/control-plane-types.d.ts +41 -1
  16. package/dist/src/control-plane-types.js +9 -25
  17. package/dist/src/dependency-preflight.d.ts +43 -0
  18. package/dist/src/dependency-preflight.js +13 -0
  19. package/dist/src/doctor.d.ts +67 -4
  20. package/dist/src/doctor.js +8 -9
  21. package/dist/src/errors.d.ts +13 -0
  22. package/dist/src/errors.js +17 -0
  23. package/dist/src/github.d.ts +43 -0
  24. package/dist/src/github.js +12 -1
  25. package/dist/src/graph.d.ts +37 -0
  26. package/dist/src/graph.js +13 -0
  27. package/dist/src/guard.d.ts +111 -0
  28. package/dist/src/guard.js +6 -0
  29. package/dist/src/harness-events.d.ts +8 -0
  30. package/dist/src/harness-events.js +1 -0
  31. package/dist/src/help-catalog.d.ts +17 -10
  32. package/dist/src/help-catalog.js +9 -651
  33. package/dist/src/host.d.ts +41 -0
  34. package/dist/src/host.js +13 -0
  35. package/dist/src/identity.d.ts +44 -0
  36. package/dist/src/identity.js +1 -0
  37. package/dist/src/index.d.ts +27 -7
  38. package/dist/src/index.js +2116 -6608
  39. package/dist/src/isolation.d.ts +207 -15
  40. package/dist/src/isolation.js +8 -1
  41. package/dist/src/kernel.d.ts +11 -0
  42. package/dist/src/kernel.js +7 -0
  43. package/dist/src/layout.d.ts +49 -0
  44. package/dist/src/layout.js +10 -0
  45. package/dist/src/lifecycle-capabilities.d.ts +99 -0
  46. package/dist/src/lifecycle-capabilities.js +18 -1
  47. package/dist/src/managed-repos.d.ts +79 -16
  48. package/dist/src/managed-repos.js +12 -1
  49. package/dist/src/memory.d.ts +52 -4
  50. package/dist/src/memory.js +8 -1
  51. package/dist/src/notify.d.ts +46 -0
  52. package/dist/src/notify.js +13 -0
  53. package/dist/src/orchestration.d.ts +0 -3652
  54. package/dist/src/orchestration.js +28 -964
  55. package/dist/src/plugin-hooks.js +22 -3
  56. package/dist/src/plugin.d.ts +47 -0
  57. package/dist/src/plugin.js +24 -3
  58. package/dist/src/prompt.d.ts +29 -0
  59. package/dist/src/prompt.js +13 -0
  60. package/dist/src/provider-instructions.d.ts +26 -4
  61. package/dist/src/provider-instructions.js +8 -1
  62. package/dist/src/provider.js +1 -824
  63. package/dist/src/remote.d.ts +0 -8
  64. package/dist/src/remote.js +229 -1075
  65. package/dist/src/run-discovery.d.ts +79 -0
  66. package/dist/src/run-discovery.js +13 -0
  67. package/dist/src/run-dispatch.d.ts +34 -0
  68. package/dist/src/run-dispatch.js +13 -0
  69. package/dist/src/run-identity.d.ts +47 -0
  70. package/dist/src/run-identity.js +13 -0
  71. package/dist/src/run-journal.d.ts +0 -236
  72. package/dist/src/run-journal.js +249 -1321
  73. package/dist/src/run-read-model.d.ts +234 -0
  74. package/dist/src/run-read-model.js +13 -0
  75. package/dist/src/run-record.d.ts +0 -11
  76. package/dist/src/run-record.js +0 -16
  77. package/dist/src/run-registry-backbone.d.ts +56 -0
  78. package/dist/src/run-registry-backbone.js +13 -0
  79. package/dist/src/run-session-journal.d.ts +1 -25
  80. package/dist/src/run-session-journal.js +0 -1731
  81. package/dist/src/run-status.d.ts +0 -2
  82. package/dist/src/run-status.js +0 -11
  83. package/dist/src/run-timeline.d.ts +0 -3
  84. package/dist/src/run-timeline.js +0 -1498
  85. package/dist/src/runtime-task-context.d.ts +82 -0
  86. package/dist/src/runtime-task-context.js +1 -0
  87. package/dist/src/runtime.js +66 -904
  88. package/dist/src/session-asset-materializer.d.ts +35 -0
  89. package/dist/src/session-asset-materializer.js +13 -0
  90. package/dist/src/setup.d.ts +47 -0
  91. package/dist/src/setup.js +13 -0
  92. package/dist/src/supervisor-journal.js +117 -955
  93. package/dist/src/task-data.d.ts +239 -0
  94. package/dist/src/task-data.js +13 -0
  95. package/dist/src/task-graph-primitives.d.ts +0 -21
  96. package/dist/src/task-graph-primitives.js +0 -318
  97. package/dist/src/task-source.d.ts +65 -0
  98. package/dist/src/task-source.js +12 -0
  99. package/dist/src/task-state-metadata.d.ts +21 -0
  100. package/dist/src/task-state-metadata.js +1 -0
  101. package/dist/src/tool-materializer.d.ts +36 -0
  102. package/dist/src/tool-materializer.js +13 -0
  103. package/dist/src/tool-registry.d.ts +3 -0
  104. package/dist/src/tool-registry.js +58 -0
  105. package/dist/src/toolchain-sources.d.ts +54 -0
  106. package/dist/src/toolchain-sources.js +17 -0
  107. package/dist/src/workflow-journal.d.ts +0 -32
  108. package/dist/src/workflow-journal.js +0 -371
  109. package/dist/src/workspace-config.d.ts +18 -0
  110. package/dist/src/workspace-config.js +13 -0
  111. package/dist/src/workspace.js +73 -911
  112. package/package.json +1 -1
  113. package/dist/src/engine.d.ts +0 -2789
  114. package/dist/src/engine.js +0 -2392
  115. package/dist/src/ipc.d.ts +0 -248
  116. package/dist/src/providerRuntime.d.ts +0 -3949
  117. package/dist/src/providerRuntime.js +0 -1633
  118. package/dist/src/rig.d.ts +0 -783
  119. package/dist/src/rig.js +0 -2537
  120. package/dist/src/server.d.ts +0 -106
  121. package/dist/src/server.js +0 -1056
  122. package/dist/src/serviceFabric.d.ts +0 -62
  123. package/dist/src/serviceFabric.js +0 -1069
  124. package/dist/src/ws.d.ts +0 -747
  125. package/dist/src/ws.js +0 -3126
  126. /package/dist/src/{ipc.js → agent-roles.js} +0 -0
@@ -1,1603 +1,4 @@
1
1
  // @bun
2
- // packages/contracts/src/run-journal.ts
3
- import { Schema as Schema6 } from "effect";
4
-
5
- // packages/contracts/src/baseSchemas.ts
6
- import { Schema } from "effect";
7
- var TrimmedString = Schema.Trim;
8
- var TrimmedNonEmptyString = TrimmedString.check(Schema.isNonEmpty());
9
- var NonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
10
- var PositiveInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));
11
- var IsoDateTime = Schema.String;
12
- var makeEntityId = (brand) => TrimmedNonEmptyString.pipe(Schema.brand(brand));
13
- var ThreadId = makeEntityId("ThreadId");
14
- var ProjectId = makeEntityId("ProjectId");
15
- var WorkspaceId = makeEntityId("WorkspaceId");
16
- var GraphId = makeEntityId("GraphId");
17
- var TaskId = makeEntityId("TaskId");
18
- var RunId = makeEntityId("RunId");
19
- var SafePathSegment = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/)).pipe(Schema.brand("SafePathSegment"));
20
- var SafeRunId = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/)).pipe(Schema.brand("SafeRunId"));
21
- var SafeGitRefComponent = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/)).pipe(Schema.brand("SafeGitRefComponent"));
22
- var EngineRuntimeId = makeEntityId("EngineRuntimeId");
23
- var ConversationId = makeEntityId("ConversationId");
24
- var ActionId = makeEntityId("ActionId");
25
- var ArtifactId = makeEntityId("ArtifactId");
26
- var WorktreeId = makeEntityId("WorktreeId");
27
- var ValidationResultId = makeEntityId("ValidationResultId");
28
- var ReviewResultId = makeEntityId("ReviewResultId");
29
- var CommandId = makeEntityId("CommandId");
30
- var EventId = makeEntityId("EventId");
31
- var MessageId = makeEntityId("MessageId");
32
- var TurnId = makeEntityId("TurnId");
33
- var ProviderItemId = makeEntityId("ProviderItemId");
34
- var RuntimeSessionId = makeEntityId("RuntimeSessionId");
35
- var RuntimeItemId = makeEntityId("RuntimeItemId");
36
- var RuntimeRequestId = makeEntityId("RuntimeRequestId");
37
- var RuntimeTaskId = makeEntityId("RuntimeTaskId");
38
- var ApprovalRequestId = makeEntityId("ApprovalRequestId");
39
- var CheckpointRef = makeEntityId("CheckpointRef");
40
- var RemoteEndpointId = makeEntityId("RemoteEndpointId");
41
-
42
- // packages/contracts/src/runtime.ts
43
- import { Schema as Schema4 } from "effect";
44
-
45
- // packages/contracts/src/orchestration.ts
46
- import { Option, Schema as Schema3, SchemaIssue, Struct } from "effect";
47
-
48
- // packages/contracts/src/model.ts
49
- import { Schema as Schema2 } from "effect";
50
- var CODEX_REASONING_EFFORT_OPTIONS = ["xhigh", "high", "medium", "low"];
51
- var CodexModelOptions = Schema2.Struct({
52
- reasoningEffort: Schema2.optional(Schema2.Literals(CODEX_REASONING_EFFORT_OPTIONS)),
53
- fastMode: Schema2.optional(Schema2.Boolean)
54
- });
55
- var ClaudeModelOptions = Schema2.Struct({});
56
- var ProviderModelOptions = Schema2.Struct({
57
- codex: Schema2.optional(CodexModelOptions),
58
- claude: Schema2.optional(ClaudeModelOptions)
59
- });
60
-
61
- // packages/contracts/src/orchestration.ts
62
- var ProviderKind = Schema3.Literals(["codex", "claude"]);
63
- var ProviderApprovalPolicy = Schema3.Literals([
64
- "untrusted",
65
- "on-failure",
66
- "on-request",
67
- "never"
68
- ]);
69
- var ProviderSandboxMode = Schema3.Literals([
70
- "read-only",
71
- "workspace-write",
72
- "danger-full-access"
73
- ]);
74
- var ProviderServiceTier = Schema3.Literals(["fast", "flex"]);
75
- var RuntimeMode = Schema3.Literals(["approval-required", "full-access"]);
76
- var DEFAULT_RUNTIME_MODE = "full-access";
77
- var ProviderInteractionMode = Schema3.Literals(["default", "plan"]);
78
- var DEFAULT_PROVIDER_INTERACTION_MODE = "default";
79
- var ProviderRequestKind = Schema3.Literals(["command", "file-read", "file-change"]);
80
- var AssistantDeliveryMode = Schema3.Literals(["buffered", "streaming"]);
81
- var ProviderApprovalDecision = Schema3.Literals([
82
- "accept",
83
- "acceptForSession",
84
- "decline",
85
- "cancel"
86
- ]);
87
- var ProviderUserInputAnswers = Schema3.Record(Schema3.String, Schema3.Unknown);
88
- var PROVIDER_SEND_TURN_MAX_IMAGE_BYTES = 10 * 1024 * 1024;
89
- var PROVIDER_SEND_TURN_MAX_IMAGE_DATA_URL_CHARS = 14000000;
90
- var CHAT_ATTACHMENT_ID_MAX_CHARS = 128;
91
- var ChatAttachmentId = TrimmedNonEmptyString.check(Schema3.isMaxLength(CHAT_ATTACHMENT_ID_MAX_CHARS), Schema3.isPattern(/^[a-z0-9_-]+$/i));
92
- var ChatImageAttachment = Schema3.Struct({
93
- type: Schema3.Literal("image"),
94
- id: ChatAttachmentId,
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
- });
99
- var UploadChatImageAttachment = Schema3.Struct({
100
- type: Schema3.Literal("image"),
101
- name: TrimmedNonEmptyString.check(Schema3.isMaxLength(255)),
102
- mimeType: TrimmedNonEmptyString.check(Schema3.isMaxLength(100), Schema3.isPattern(/^image\//i)),
103
- sizeBytes: NonNegativeInt.check(Schema3.isLessThanOrEqualTo(PROVIDER_SEND_TURN_MAX_IMAGE_BYTES)),
104
- dataUrl: TrimmedNonEmptyString.check(Schema3.isMaxLength(PROVIDER_SEND_TURN_MAX_IMAGE_DATA_URL_CHARS))
105
- });
106
- var ChatAttachment = Schema3.Union([ChatImageAttachment]);
107
- var UploadChatAttachment = Schema3.Union([UploadChatImageAttachment]);
108
- var ProjectScriptIcon = Schema3.Literals([
109
- "play",
110
- "test",
111
- "lint",
112
- "configure",
113
- "build",
114
- "debug"
115
- ]);
116
- var ProjectScript = Schema3.Struct({
117
- id: TrimmedNonEmptyString,
118
- name: TrimmedNonEmptyString,
119
- command: TrimmedNonEmptyString,
120
- icon: ProjectScriptIcon,
121
- runOnWorktreeCreate: Schema3.Boolean
122
- });
123
- var OrchestrationProject = Schema3.Struct({
124
- id: ProjectId,
125
- title: TrimmedNonEmptyString,
126
- workspaceRoot: TrimmedNonEmptyString,
127
- defaultModel: Schema3.NullOr(TrimmedNonEmptyString),
128
- scripts: Schema3.Array(ProjectScript),
129
- createdAt: IsoDateTime,
130
- updatedAt: IsoDateTime,
131
- deletedAt: Schema3.NullOr(IsoDateTime)
132
- });
133
- var OrchestrationMessageRole = Schema3.Literals(["user", "assistant", "system"]);
134
- var OrchestrationMessage = Schema3.Struct({
135
- id: MessageId,
136
- role: OrchestrationMessageRole,
137
- text: Schema3.String,
138
- attachments: Schema3.optional(Schema3.Array(ChatAttachment)),
139
- turnId: Schema3.NullOr(TurnId),
140
- streaming: Schema3.Boolean,
141
- createdAt: IsoDateTime,
142
- updatedAt: IsoDateTime
143
- });
144
- var OrchestrationProposedPlanId = TrimmedNonEmptyString;
145
- var OrchestrationProposedPlan = Schema3.Struct({
146
- id: OrchestrationProposedPlanId,
147
- turnId: Schema3.NullOr(TurnId),
148
- planMarkdown: TrimmedNonEmptyString,
149
- createdAt: IsoDateTime,
150
- updatedAt: IsoDateTime
151
- });
152
- var OrchestrationSessionStatus = Schema3.Literals([
153
- "idle",
154
- "starting",
155
- "running",
156
- "ready",
157
- "interrupted",
158
- "stopped",
159
- "error"
160
- ]);
161
- var OrchestrationSession = Schema3.Struct({
162
- threadId: ThreadId,
163
- status: OrchestrationSessionStatus,
164
- providerName: Schema3.NullOr(TrimmedNonEmptyString),
165
- runtimeMode: RuntimeMode.pipe(Schema3.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
166
- activeTurnId: Schema3.NullOr(TurnId),
167
- lastError: Schema3.NullOr(TrimmedNonEmptyString),
168
- updatedAt: IsoDateTime
169
- });
170
- var OrchestrationCheckpointFile = Schema3.Struct({
171
- path: TrimmedNonEmptyString,
172
- kind: TrimmedNonEmptyString,
173
- additions: NonNegativeInt,
174
- deletions: NonNegativeInt
175
- });
176
- var OrchestrationCheckpointStatus = Schema3.Literals(["ready", "missing", "error"]);
177
- var OrchestrationCheckpointSummary = Schema3.Struct({
178
- turnId: TurnId,
179
- checkpointTurnCount: NonNegativeInt,
180
- checkpointRef: CheckpointRef,
181
- status: OrchestrationCheckpointStatus,
182
- files: Schema3.Array(OrchestrationCheckpointFile),
183
- assistantMessageId: Schema3.NullOr(MessageId),
184
- completedAt: IsoDateTime
185
- });
186
- var OrchestrationThreadActivityTone = Schema3.Literals([
187
- "info",
188
- "tool",
189
- "approval",
190
- "error"
191
- ]);
192
- var OrchestrationThreadActivity = Schema3.Struct({
193
- id: EventId,
194
- tone: OrchestrationThreadActivityTone,
195
- kind: TrimmedNonEmptyString,
196
- summary: TrimmedNonEmptyString,
197
- payload: Schema3.Unknown,
198
- turnId: Schema3.NullOr(TurnId),
199
- sequence: Schema3.optional(NonNegativeInt),
200
- createdAt: IsoDateTime
201
- });
202
- var OrchestrationLatestTurnState = Schema3.Literals([
203
- "running",
204
- "interrupted",
205
- "completed",
206
- "error"
207
- ]);
208
- var OrchestrationLatestTurn = Schema3.Struct({
209
- turnId: TurnId,
210
- state: OrchestrationLatestTurnState,
211
- requestedAt: IsoDateTime,
212
- startedAt: Schema3.NullOr(IsoDateTime),
213
- completedAt: Schema3.NullOr(IsoDateTime),
214
- assistantMessageId: Schema3.NullOr(MessageId)
215
- });
216
- var OrchestrationThread = Schema3.Struct({
217
- id: ThreadId,
218
- projectId: ProjectId,
219
- title: TrimmedNonEmptyString,
220
- model: TrimmedNonEmptyString,
221
- runtimeMode: RuntimeMode,
222
- interactionMode: ProviderInteractionMode.pipe(Schema3.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
223
- branch: Schema3.NullOr(TrimmedNonEmptyString),
224
- worktreePath: Schema3.NullOr(TrimmedNonEmptyString),
225
- latestTurn: Schema3.NullOr(OrchestrationLatestTurn),
226
- createdAt: IsoDateTime,
227
- updatedAt: IsoDateTime,
228
- deletedAt: Schema3.NullOr(IsoDateTime),
229
- messages: Schema3.Array(OrchestrationMessage),
230
- proposedPlans: Schema3.Array(OrchestrationProposedPlan).pipe(Schema3.withDecodingDefault(() => [])),
231
- activities: Schema3.Array(OrchestrationThreadActivity),
232
- checkpoints: Schema3.Array(OrchestrationCheckpointSummary),
233
- session: Schema3.NullOr(OrchestrationSession)
234
- });
235
- var OrchestrationReadModel = Schema3.Struct({
236
- snapshotSequence: NonNegativeInt,
237
- projects: Schema3.Array(OrchestrationProject),
238
- threads: Schema3.Array(OrchestrationThread),
239
- updatedAt: IsoDateTime
240
- });
241
- var ProjectCreateCommand = Schema3.Struct({
242
- type: Schema3.Literal("project.create"),
243
- commandId: CommandId,
244
- projectId: ProjectId,
245
- title: TrimmedNonEmptyString,
246
- workspaceRoot: TrimmedNonEmptyString,
247
- defaultModel: Schema3.optional(TrimmedNonEmptyString),
248
- createdAt: IsoDateTime
249
- });
250
- var ProjectMetaUpdateCommand = Schema3.Struct({
251
- type: Schema3.Literal("project.meta.update"),
252
- commandId: CommandId,
253
- projectId: ProjectId,
254
- title: Schema3.optional(TrimmedNonEmptyString),
255
- workspaceRoot: Schema3.optional(TrimmedNonEmptyString),
256
- defaultModel: Schema3.optional(TrimmedNonEmptyString),
257
- scripts: Schema3.optional(Schema3.Array(ProjectScript))
258
- });
259
- var ProjectDeleteCommand = Schema3.Struct({
260
- type: Schema3.Literal("project.delete"),
261
- commandId: CommandId,
262
- projectId: ProjectId
263
- });
264
- var ThreadCreateCommand = Schema3.Struct({
265
- type: Schema3.Literal("thread.create"),
266
- commandId: CommandId,
267
- threadId: ThreadId,
268
- projectId: ProjectId,
269
- title: TrimmedNonEmptyString,
270
- model: TrimmedNonEmptyString,
271
- runtimeMode: RuntimeMode,
272
- interactionMode: ProviderInteractionMode.pipe(Schema3.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
273
- branch: Schema3.NullOr(TrimmedNonEmptyString),
274
- worktreePath: Schema3.NullOr(TrimmedNonEmptyString),
275
- createdAt: IsoDateTime
276
- });
277
- var ThreadDeleteCommand = Schema3.Struct({
278
- type: Schema3.Literal("thread.delete"),
279
- commandId: CommandId,
280
- threadId: ThreadId
281
- });
282
- var ThreadMetaUpdateCommand = Schema3.Struct({
283
- type: Schema3.Literal("thread.meta.update"),
284
- commandId: CommandId,
285
- threadId: ThreadId,
286
- title: Schema3.optional(TrimmedNonEmptyString),
287
- model: Schema3.optional(TrimmedNonEmptyString),
288
- branch: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString)),
289
- worktreePath: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString))
290
- });
291
- var ThreadRuntimeModeSetCommand = Schema3.Struct({
292
- type: Schema3.Literal("thread.runtime-mode.set"),
293
- commandId: CommandId,
294
- threadId: ThreadId,
295
- runtimeMode: RuntimeMode,
296
- createdAt: IsoDateTime
297
- });
298
- var ThreadInteractionModeSetCommand = Schema3.Struct({
299
- type: Schema3.Literal("thread.interaction-mode.set"),
300
- commandId: CommandId,
301
- threadId: ThreadId,
302
- interactionMode: ProviderInteractionMode,
303
- createdAt: IsoDateTime
304
- });
305
- var ThreadTurnStartCommand = Schema3.Struct({
306
- type: Schema3.Literal("thread.turn.start"),
307
- commandId: CommandId,
308
- threadId: ThreadId,
309
- message: Schema3.Struct({
310
- messageId: MessageId,
311
- role: Schema3.Literal("user"),
312
- text: Schema3.String,
313
- attachments: Schema3.Array(ChatAttachment)
314
- }),
315
- provider: Schema3.optional(ProviderKind),
316
- model: Schema3.optional(TrimmedNonEmptyString),
317
- serviceTier: Schema3.optional(Schema3.NullOr(ProviderServiceTier)),
318
- modelOptions: Schema3.optional(ProviderModelOptions),
319
- assistantDeliveryMode: Schema3.optional(AssistantDeliveryMode),
320
- runtimeMode: RuntimeMode.pipe(Schema3.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
321
- interactionMode: ProviderInteractionMode.pipe(Schema3.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
322
- createdAt: IsoDateTime
323
- });
324
- var ClientThreadTurnStartCommand = Schema3.Struct({
325
- type: Schema3.Literal("thread.turn.start"),
326
- commandId: CommandId,
327
- threadId: ThreadId,
328
- message: Schema3.Struct({
329
- messageId: MessageId,
330
- role: Schema3.Literal("user"),
331
- text: Schema3.String,
332
- attachments: Schema3.Array(UploadChatAttachment)
333
- }),
334
- provider: Schema3.optional(ProviderKind),
335
- model: Schema3.optional(TrimmedNonEmptyString),
336
- serviceTier: Schema3.optional(Schema3.NullOr(ProviderServiceTier)),
337
- modelOptions: Schema3.optional(ProviderModelOptions),
338
- assistantDeliveryMode: Schema3.optional(AssistantDeliveryMode),
339
- runtimeMode: RuntimeMode,
340
- interactionMode: ProviderInteractionMode,
341
- createdAt: IsoDateTime
342
- });
343
- var ThreadTurnInterruptCommand = Schema3.Struct({
344
- type: Schema3.Literal("thread.turn.interrupt"),
345
- commandId: CommandId,
346
- threadId: ThreadId,
347
- turnId: Schema3.optional(TurnId),
348
- createdAt: IsoDateTime
349
- });
350
- var ThreadApprovalRespondCommand = Schema3.Struct({
351
- type: Schema3.Literal("thread.approval.respond"),
352
- commandId: CommandId,
353
- threadId: ThreadId,
354
- requestId: ApprovalRequestId,
355
- decision: ProviderApprovalDecision,
356
- createdAt: IsoDateTime
357
- });
358
- var ThreadUserInputRespondCommand = Schema3.Struct({
359
- type: Schema3.Literal("thread.user-input.respond"),
360
- commandId: CommandId,
361
- threadId: ThreadId,
362
- requestId: ApprovalRequestId,
363
- answers: ProviderUserInputAnswers,
364
- createdAt: IsoDateTime
365
- });
366
- var ThreadCheckpointRevertCommand = Schema3.Struct({
367
- type: Schema3.Literal("thread.checkpoint.revert"),
368
- commandId: CommandId,
369
- threadId: ThreadId,
370
- turnCount: NonNegativeInt,
371
- createdAt: IsoDateTime
372
- });
373
- var ThreadSessionStopCommand = Schema3.Struct({
374
- type: Schema3.Literal("thread.session.stop"),
375
- commandId: CommandId,
376
- threadId: ThreadId,
377
- createdAt: IsoDateTime
378
- });
379
- var DispatchableClientOrchestrationCommand = Schema3.Union([
380
- ProjectCreateCommand,
381
- ProjectMetaUpdateCommand,
382
- ProjectDeleteCommand,
383
- ThreadCreateCommand,
384
- ThreadDeleteCommand,
385
- ThreadMetaUpdateCommand,
386
- ThreadRuntimeModeSetCommand,
387
- ThreadInteractionModeSetCommand,
388
- ThreadTurnStartCommand,
389
- ThreadTurnInterruptCommand,
390
- ThreadApprovalRespondCommand,
391
- ThreadUserInputRespondCommand,
392
- ThreadCheckpointRevertCommand,
393
- ThreadSessionStopCommand
394
- ]);
395
- var ClientOrchestrationCommand = Schema3.Union([
396
- ProjectCreateCommand,
397
- ProjectMetaUpdateCommand,
398
- ProjectDeleteCommand,
399
- ThreadCreateCommand,
400
- ThreadDeleteCommand,
401
- ThreadMetaUpdateCommand,
402
- ThreadRuntimeModeSetCommand,
403
- ThreadInteractionModeSetCommand,
404
- ClientThreadTurnStartCommand,
405
- ThreadTurnInterruptCommand,
406
- ThreadApprovalRespondCommand,
407
- ThreadUserInputRespondCommand,
408
- ThreadCheckpointRevertCommand,
409
- ThreadSessionStopCommand
410
- ]);
411
- var ThreadSessionSetCommand = Schema3.Struct({
412
- type: Schema3.Literal("thread.session.set"),
413
- commandId: CommandId,
414
- threadId: ThreadId,
415
- session: OrchestrationSession,
416
- createdAt: IsoDateTime
417
- });
418
- var ThreadMessageAssistantDeltaCommand = Schema3.Struct({
419
- type: Schema3.Literal("thread.message.assistant.delta"),
420
- commandId: CommandId,
421
- threadId: ThreadId,
422
- messageId: MessageId,
423
- delta: Schema3.String,
424
- turnId: Schema3.optional(TurnId),
425
- createdAt: IsoDateTime
426
- });
427
- var ThreadMessageAssistantCompleteCommand = Schema3.Struct({
428
- type: Schema3.Literal("thread.message.assistant.complete"),
429
- commandId: CommandId,
430
- threadId: ThreadId,
431
- messageId: MessageId,
432
- turnId: Schema3.optional(TurnId),
433
- createdAt: IsoDateTime
434
- });
435
- var ThreadProposedPlanUpsertCommand = Schema3.Struct({
436
- type: Schema3.Literal("thread.proposed-plan.upsert"),
437
- commandId: CommandId,
438
- threadId: ThreadId,
439
- proposedPlan: OrchestrationProposedPlan,
440
- createdAt: IsoDateTime
441
- });
442
- var ThreadTurnDiffCompleteCommand = Schema3.Struct({
443
- type: Schema3.Literal("thread.turn.diff.complete"),
444
- commandId: CommandId,
445
- threadId: ThreadId,
446
- turnId: TurnId,
447
- completedAt: IsoDateTime,
448
- checkpointRef: CheckpointRef,
449
- status: OrchestrationCheckpointStatus,
450
- files: Schema3.Array(OrchestrationCheckpointFile),
451
- assistantMessageId: Schema3.optional(MessageId),
452
- checkpointTurnCount: NonNegativeInt,
453
- createdAt: IsoDateTime
454
- });
455
- var ThreadActivityAppendCommand = Schema3.Struct({
456
- type: Schema3.Literal("thread.activity.append"),
457
- commandId: CommandId,
458
- threadId: ThreadId,
459
- activity: OrchestrationThreadActivity,
460
- createdAt: IsoDateTime
461
- });
462
- var ThreadRevertCompleteCommand = Schema3.Struct({
463
- type: Schema3.Literal("thread.revert.complete"),
464
- commandId: CommandId,
465
- threadId: ThreadId,
466
- turnCount: NonNegativeInt,
467
- createdAt: IsoDateTime
468
- });
469
- var InternalOrchestrationCommand = Schema3.Union([
470
- ThreadSessionSetCommand,
471
- ThreadMessageAssistantDeltaCommand,
472
- ThreadMessageAssistantCompleteCommand,
473
- ThreadProposedPlanUpsertCommand,
474
- ThreadTurnDiffCompleteCommand,
475
- ThreadActivityAppendCommand,
476
- ThreadRevertCompleteCommand
477
- ]);
478
- var OrchestrationCommand = Schema3.Union([
479
- DispatchableClientOrchestrationCommand,
480
- InternalOrchestrationCommand
481
- ]);
482
- var OrchestrationEventType = Schema3.Literals([
483
- "project.created",
484
- "project.meta-updated",
485
- "project.deleted",
486
- "thread.created",
487
- "thread.deleted",
488
- "thread.meta-updated",
489
- "thread.runtime-mode-set",
490
- "thread.interaction-mode-set",
491
- "thread.message-sent",
492
- "thread.turn-start-requested",
493
- "thread.turn-interrupt-requested",
494
- "thread.approval-response-requested",
495
- "thread.user-input-response-requested",
496
- "thread.checkpoint-revert-requested",
497
- "thread.reverted",
498
- "thread.session-stop-requested",
499
- "thread.session-set",
500
- "thread.proposed-plan-upserted",
501
- "thread.turn-diff-completed",
502
- "thread.activity-appended"
503
- ]);
504
- var OrchestrationAggregateKind = Schema3.Literals(["project", "thread"]);
505
- var OrchestrationActorKind = Schema3.Literals(["client", "server", "provider"]);
506
- var ProjectCreatedPayload = Schema3.Struct({
507
- projectId: ProjectId,
508
- title: TrimmedNonEmptyString,
509
- workspaceRoot: TrimmedNonEmptyString,
510
- defaultModel: Schema3.NullOr(TrimmedNonEmptyString),
511
- scripts: Schema3.Array(ProjectScript),
512
- createdAt: IsoDateTime,
513
- updatedAt: IsoDateTime
514
- });
515
- var ProjectMetaUpdatedPayload = Schema3.Struct({
516
- projectId: ProjectId,
517
- title: Schema3.optional(TrimmedNonEmptyString),
518
- workspaceRoot: Schema3.optional(TrimmedNonEmptyString),
519
- defaultModel: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString)),
520
- scripts: Schema3.optional(Schema3.Array(ProjectScript)),
521
- updatedAt: IsoDateTime
522
- });
523
- var ProjectDeletedPayload = Schema3.Struct({
524
- projectId: ProjectId,
525
- deletedAt: IsoDateTime
526
- });
527
- var ThreadCreatedPayload = Schema3.Struct({
528
- threadId: ThreadId,
529
- projectId: ProjectId,
530
- title: TrimmedNonEmptyString,
531
- model: TrimmedNonEmptyString,
532
- runtimeMode: RuntimeMode.pipe(Schema3.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
533
- interactionMode: ProviderInteractionMode.pipe(Schema3.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
534
- branch: Schema3.NullOr(TrimmedNonEmptyString),
535
- worktreePath: Schema3.NullOr(TrimmedNonEmptyString),
536
- createdAt: IsoDateTime,
537
- updatedAt: IsoDateTime
538
- });
539
- var ThreadDeletedPayload = Schema3.Struct({
540
- threadId: ThreadId,
541
- deletedAt: IsoDateTime
542
- });
543
- var ThreadMetaUpdatedPayload = Schema3.Struct({
544
- threadId: ThreadId,
545
- title: Schema3.optional(TrimmedNonEmptyString),
546
- model: Schema3.optional(TrimmedNonEmptyString),
547
- branch: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString)),
548
- worktreePath: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString)),
549
- updatedAt: IsoDateTime
550
- });
551
- var ThreadRuntimeModeSetPayload = Schema3.Struct({
552
- threadId: ThreadId,
553
- runtimeMode: RuntimeMode,
554
- updatedAt: IsoDateTime
555
- });
556
- var ThreadInteractionModeSetPayload = Schema3.Struct({
557
- threadId: ThreadId,
558
- interactionMode: ProviderInteractionMode.pipe(Schema3.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
559
- updatedAt: IsoDateTime
560
- });
561
- var ThreadMessageSentPayload = Schema3.Struct({
562
- threadId: ThreadId,
563
- messageId: MessageId,
564
- role: OrchestrationMessageRole,
565
- text: Schema3.String,
566
- attachments: Schema3.optional(Schema3.Array(ChatAttachment)),
567
- turnId: Schema3.NullOr(TurnId),
568
- streaming: Schema3.Boolean,
569
- createdAt: IsoDateTime,
570
- updatedAt: IsoDateTime
571
- });
572
- var ThreadTurnStartRequestedPayload = Schema3.Struct({
573
- threadId: ThreadId,
574
- messageId: MessageId,
575
- provider: Schema3.optional(ProviderKind),
576
- model: Schema3.optional(TrimmedNonEmptyString),
577
- serviceTier: Schema3.optional(Schema3.NullOr(ProviderServiceTier)),
578
- modelOptions: Schema3.optional(ProviderModelOptions),
579
- assistantDeliveryMode: Schema3.optional(AssistantDeliveryMode),
580
- runtimeMode: RuntimeMode.pipe(Schema3.withDecodingDefault(() => DEFAULT_RUNTIME_MODE)),
581
- interactionMode: ProviderInteractionMode.pipe(Schema3.withDecodingDefault(() => DEFAULT_PROVIDER_INTERACTION_MODE)),
582
- createdAt: IsoDateTime
583
- });
584
- var ThreadTurnInterruptRequestedPayload = Schema3.Struct({
585
- threadId: ThreadId,
586
- turnId: Schema3.optional(TurnId),
587
- createdAt: IsoDateTime
588
- });
589
- var ThreadApprovalResponseRequestedPayload = Schema3.Struct({
590
- threadId: ThreadId,
591
- requestId: ApprovalRequestId,
592
- decision: ProviderApprovalDecision,
593
- createdAt: IsoDateTime
594
- });
595
- var ThreadUserInputResponseRequestedPayload = Schema3.Struct({
596
- threadId: ThreadId,
597
- requestId: ApprovalRequestId,
598
- answers: ProviderUserInputAnswers,
599
- createdAt: IsoDateTime
600
- });
601
- var ThreadCheckpointRevertRequestedPayload = Schema3.Struct({
602
- threadId: ThreadId,
603
- turnCount: NonNegativeInt,
604
- createdAt: IsoDateTime
605
- });
606
- var ThreadRevertedPayload = Schema3.Struct({
607
- threadId: ThreadId,
608
- turnCount: NonNegativeInt
609
- });
610
- var ThreadSessionStopRequestedPayload = Schema3.Struct({
611
- threadId: ThreadId,
612
- createdAt: IsoDateTime
613
- });
614
- var ThreadSessionSetPayload = Schema3.Struct({
615
- threadId: ThreadId,
616
- session: OrchestrationSession
617
- });
618
- var ThreadProposedPlanUpsertedPayload = Schema3.Struct({
619
- threadId: ThreadId,
620
- proposedPlan: OrchestrationProposedPlan
621
- });
622
- var ThreadTurnDiffCompletedPayload = Schema3.Struct({
623
- threadId: ThreadId,
624
- turnId: TurnId,
625
- checkpointTurnCount: NonNegativeInt,
626
- checkpointRef: CheckpointRef,
627
- status: OrchestrationCheckpointStatus,
628
- files: Schema3.Array(OrchestrationCheckpointFile),
629
- assistantMessageId: Schema3.NullOr(MessageId),
630
- completedAt: IsoDateTime
631
- });
632
- var ThreadActivityAppendedPayload = Schema3.Struct({
633
- threadId: ThreadId,
634
- activity: OrchestrationThreadActivity
635
- });
636
- var OrchestrationEventMetadata = Schema3.Struct({
637
- providerTurnId: Schema3.optional(TrimmedNonEmptyString),
638
- providerItemId: Schema3.optional(ProviderItemId),
639
- adapterKey: Schema3.optional(TrimmedNonEmptyString),
640
- requestId: Schema3.optional(ApprovalRequestId),
641
- ingestedAt: Schema3.optional(IsoDateTime)
642
- });
643
- var EventBaseFields = {
644
- sequence: NonNegativeInt,
645
- eventId: EventId,
646
- aggregateKind: OrchestrationAggregateKind,
647
- aggregateId: Schema3.Union([ProjectId, ThreadId]),
648
- occurredAt: IsoDateTime,
649
- commandId: Schema3.NullOr(CommandId),
650
- causationEventId: Schema3.NullOr(EventId),
651
- correlationId: Schema3.NullOr(CommandId),
652
- metadata: OrchestrationEventMetadata
653
- };
654
- var PersistedEventBaseFields = {
655
- sequence: NonNegativeInt,
656
- eventId: EventId,
657
- aggregateKind: OrchestrationAggregateKind,
658
- streamId: Schema3.Union([ProjectId, ThreadId]),
659
- streamVersion: NonNegativeInt,
660
- occurredAt: IsoDateTime,
661
- commandId: Schema3.NullOr(CommandId),
662
- causationEventId: Schema3.NullOr(EventId),
663
- correlationId: Schema3.NullOr(CommandId),
664
- actorKind: OrchestrationActorKind,
665
- metadata: OrchestrationEventMetadata
666
- };
667
- var OrchestrationEvent = Schema3.Union([
668
- Schema3.Struct({
669
- ...EventBaseFields,
670
- type: Schema3.Literal("project.created"),
671
- payload: ProjectCreatedPayload
672
- }),
673
- Schema3.Struct({
674
- ...EventBaseFields,
675
- type: Schema3.Literal("project.meta-updated"),
676
- payload: ProjectMetaUpdatedPayload
677
- }),
678
- Schema3.Struct({
679
- ...EventBaseFields,
680
- type: Schema3.Literal("project.deleted"),
681
- payload: ProjectDeletedPayload
682
- }),
683
- Schema3.Struct({
684
- ...EventBaseFields,
685
- type: Schema3.Literal("thread.created"),
686
- payload: ThreadCreatedPayload
687
- }),
688
- Schema3.Struct({
689
- ...EventBaseFields,
690
- type: Schema3.Literal("thread.deleted"),
691
- payload: ThreadDeletedPayload
692
- }),
693
- Schema3.Struct({
694
- ...EventBaseFields,
695
- type: Schema3.Literal("thread.meta-updated"),
696
- payload: ThreadMetaUpdatedPayload
697
- }),
698
- Schema3.Struct({
699
- ...EventBaseFields,
700
- type: Schema3.Literal("thread.runtime-mode-set"),
701
- payload: ThreadRuntimeModeSetPayload
702
- }),
703
- Schema3.Struct({
704
- ...EventBaseFields,
705
- type: Schema3.Literal("thread.interaction-mode-set"),
706
- payload: ThreadInteractionModeSetPayload
707
- }),
708
- Schema3.Struct({
709
- ...EventBaseFields,
710
- type: Schema3.Literal("thread.message-sent"),
711
- payload: ThreadMessageSentPayload
712
- }),
713
- Schema3.Struct({
714
- ...EventBaseFields,
715
- type: Schema3.Literal("thread.turn-start-requested"),
716
- payload: ThreadTurnStartRequestedPayload
717
- }),
718
- Schema3.Struct({
719
- ...EventBaseFields,
720
- type: Schema3.Literal("thread.turn-interrupt-requested"),
721
- payload: ThreadTurnInterruptRequestedPayload
722
- }),
723
- Schema3.Struct({
724
- ...EventBaseFields,
725
- type: Schema3.Literal("thread.approval-response-requested"),
726
- payload: ThreadApprovalResponseRequestedPayload
727
- }),
728
- Schema3.Struct({
729
- ...EventBaseFields,
730
- type: Schema3.Literal("thread.user-input-response-requested"),
731
- payload: ThreadUserInputResponseRequestedPayload
732
- }),
733
- Schema3.Struct({
734
- ...EventBaseFields,
735
- type: Schema3.Literal("thread.checkpoint-revert-requested"),
736
- payload: ThreadCheckpointRevertRequestedPayload
737
- }),
738
- Schema3.Struct({
739
- ...EventBaseFields,
740
- type: Schema3.Literal("thread.reverted"),
741
- payload: ThreadRevertedPayload
742
- }),
743
- Schema3.Struct({
744
- ...EventBaseFields,
745
- type: Schema3.Literal("thread.session-stop-requested"),
746
- payload: ThreadSessionStopRequestedPayload
747
- }),
748
- Schema3.Struct({
749
- ...EventBaseFields,
750
- type: Schema3.Literal("thread.session-set"),
751
- payload: ThreadSessionSetPayload
752
- }),
753
- Schema3.Struct({
754
- ...EventBaseFields,
755
- type: Schema3.Literal("thread.proposed-plan-upserted"),
756
- payload: ThreadProposedPlanUpsertedPayload
757
- }),
758
- Schema3.Struct({
759
- ...EventBaseFields,
760
- type: Schema3.Literal("thread.turn-diff-completed"),
761
- payload: ThreadTurnDiffCompletedPayload
762
- }),
763
- Schema3.Struct({
764
- ...EventBaseFields,
765
- type: Schema3.Literal("thread.activity-appended"),
766
- payload: ThreadActivityAppendedPayload
767
- })
768
- ]);
769
- var OrchestrationPersistedEvent = Schema3.Union([
770
- Schema3.Struct({
771
- ...PersistedEventBaseFields,
772
- eventType: Schema3.Literal("project.created"),
773
- payload: ProjectCreatedPayload
774
- }),
775
- Schema3.Struct({
776
- ...PersistedEventBaseFields,
777
- eventType: Schema3.Literal("project.meta-updated"),
778
- payload: ProjectMetaUpdatedPayload
779
- }),
780
- Schema3.Struct({
781
- ...PersistedEventBaseFields,
782
- eventType: Schema3.Literal("project.deleted"),
783
- payload: ProjectDeletedPayload
784
- }),
785
- Schema3.Struct({
786
- ...PersistedEventBaseFields,
787
- eventType: Schema3.Literal("thread.created"),
788
- payload: ThreadCreatedPayload
789
- }),
790
- Schema3.Struct({
791
- ...PersistedEventBaseFields,
792
- eventType: Schema3.Literal("thread.deleted"),
793
- payload: ThreadDeletedPayload
794
- }),
795
- Schema3.Struct({
796
- ...PersistedEventBaseFields,
797
- eventType: Schema3.Literal("thread.meta-updated"),
798
- payload: ThreadMetaUpdatedPayload
799
- }),
800
- Schema3.Struct({
801
- ...PersistedEventBaseFields,
802
- eventType: Schema3.Literal("thread.runtime-mode-set"),
803
- payload: ThreadRuntimeModeSetPayload
804
- }),
805
- Schema3.Struct({
806
- ...PersistedEventBaseFields,
807
- eventType: Schema3.Literal("thread.interaction-mode-set"),
808
- payload: ThreadInteractionModeSetPayload
809
- }),
810
- Schema3.Struct({
811
- ...PersistedEventBaseFields,
812
- eventType: Schema3.Literal("thread.message-sent"),
813
- payload: ThreadMessageSentPayload
814
- }),
815
- Schema3.Struct({
816
- ...PersistedEventBaseFields,
817
- eventType: Schema3.Literal("thread.turn-start-requested"),
818
- payload: ThreadTurnStartRequestedPayload
819
- }),
820
- Schema3.Struct({
821
- ...PersistedEventBaseFields,
822
- eventType: Schema3.Literal("thread.turn-interrupt-requested"),
823
- payload: ThreadTurnInterruptRequestedPayload
824
- }),
825
- Schema3.Struct({
826
- ...PersistedEventBaseFields,
827
- eventType: Schema3.Literal("thread.approval-response-requested"),
828
- payload: ThreadApprovalResponseRequestedPayload
829
- }),
830
- Schema3.Struct({
831
- ...PersistedEventBaseFields,
832
- eventType: Schema3.Literal("thread.user-input-response-requested"),
833
- payload: ThreadUserInputResponseRequestedPayload
834
- }),
835
- Schema3.Struct({
836
- ...PersistedEventBaseFields,
837
- eventType: Schema3.Literal("thread.checkpoint-revert-requested"),
838
- payload: ThreadCheckpointRevertRequestedPayload
839
- }),
840
- Schema3.Struct({
841
- ...PersistedEventBaseFields,
842
- eventType: Schema3.Literal("thread.reverted"),
843
- payload: ThreadRevertedPayload
844
- }),
845
- Schema3.Struct({
846
- ...PersistedEventBaseFields,
847
- eventType: Schema3.Literal("thread.session-stop-requested"),
848
- payload: ThreadSessionStopRequestedPayload
849
- }),
850
- Schema3.Struct({
851
- ...PersistedEventBaseFields,
852
- eventType: Schema3.Literal("thread.session-set"),
853
- payload: ThreadSessionSetPayload
854
- }),
855
- Schema3.Struct({
856
- ...PersistedEventBaseFields,
857
- eventType: Schema3.Literal("thread.proposed-plan-upserted"),
858
- payload: ThreadProposedPlanUpsertedPayload
859
- }),
860
- Schema3.Struct({
861
- ...PersistedEventBaseFields,
862
- eventType: Schema3.Literal("thread.turn-diff-completed"),
863
- payload: ThreadTurnDiffCompletedPayload
864
- }),
865
- Schema3.Struct({
866
- ...PersistedEventBaseFields,
867
- eventType: Schema3.Literal("thread.activity-appended"),
868
- payload: ThreadActivityAppendedPayload
869
- })
870
- ]);
871
- var OrchestrationCommandReceiptStatus = Schema3.Literals(["accepted", "rejected"]);
872
- var TurnCountRange = Schema3.Struct({
873
- fromTurnCount: NonNegativeInt,
874
- toTurnCount: NonNegativeInt
875
- }).check(Schema3.makeFilter((input) => input.fromTurnCount <= input.toTurnCount || new SchemaIssue.InvalidValue(Option.some(input.fromTurnCount), {
876
- message: "fromTurnCount must be less than or equal to toTurnCount"
877
- }), { identifier: "OrchestrationTurnDiffRange" }));
878
- var ThreadTurnDiff = TurnCountRange.mapFields(Struct.assign({
879
- threadId: ThreadId,
880
- diff: Schema3.String
881
- }), { unsafePreserveChecks: true });
882
- var ProviderSessionRuntimeStatus = Schema3.Literals([
883
- "starting",
884
- "running",
885
- "stopped",
886
- "error"
887
- ]);
888
- var ProjectionThreadTurnStatus = Schema3.Literals([
889
- "running",
890
- "completed",
891
- "interrupted",
892
- "error"
893
- ]);
894
- var ProjectionCheckpointRow = Schema3.Struct({
895
- threadId: ThreadId,
896
- turnId: TurnId,
897
- checkpointTurnCount: NonNegativeInt,
898
- checkpointRef: CheckpointRef,
899
- status: OrchestrationCheckpointStatus,
900
- files: Schema3.Array(OrchestrationCheckpointFile),
901
- assistantMessageId: Schema3.NullOr(MessageId),
902
- completedAt: IsoDateTime
903
- });
904
- var ProjectionPendingApprovalStatus = Schema3.Literals(["pending", "resolved"]);
905
- var ProjectionPendingApprovalDecision = Schema3.NullOr(ProviderApprovalDecision);
906
- var DispatchResult = Schema3.Struct({
907
- sequence: NonNegativeInt
908
- });
909
- var OrchestrationGetSnapshotInput = Schema3.Struct({});
910
- var OrchestrationGetTurnDiffInput = TurnCountRange.mapFields(Struct.assign({ threadId: ThreadId }), { unsafePreserveChecks: true });
911
- var OrchestrationGetFullThreadDiffInput = Schema3.Struct({
912
- threadId: ThreadId,
913
- toTurnCount: NonNegativeInt
914
- });
915
- var OrchestrationReplayEventsInput = Schema3.Struct({
916
- fromSequenceExclusive: NonNegativeInt
917
- });
918
- var OrchestrationReplayEventsResult = Schema3.Array(OrchestrationEvent);
919
-
920
- // packages/contracts/src/runtime.ts
921
- var RunKind = Schema4.Literals(["adhoc", "task", "batch", "validation", "review"]);
922
- var RunMode = Schema4.Literals(["interactive", "autonomous", "supervised"]);
923
- var RunStatus = Schema4.Literals([
924
- "created",
925
- "queued",
926
- "preparing",
927
- "running",
928
- "waiting-approval",
929
- "waiting-user-input",
930
- "paused",
931
- "validating",
932
- "reviewing",
933
- "closing-out",
934
- "needs-attention",
935
- "completed",
936
- "failed",
937
- "stopped"
938
- ]);
939
- var EngineSandboxMode = Schema4.Literals([
940
- "read-only",
941
- "workspace-write",
942
- "danger-full-access"
943
- ]);
944
- var IsolationMode = Schema4.Literals(["none", "env", "worktree"]);
945
- var RuntimeStatus = Schema4.Literals([
946
- "prepared",
947
- "starting",
948
- "running",
949
- "interrupted",
950
- "exited",
951
- "failed",
952
- "destroyed"
953
- ]);
954
- var RunExecutionTarget = Schema4.Literals(["local", "remote"]);
955
- var RunSummary = Schema4.Struct({
956
- id: RunId,
957
- workspaceId: WorkspaceId,
958
- taskId: Schema4.NullOr(TaskId),
959
- title: TrimmedNonEmptyString,
960
- runKind: RunKind,
961
- mode: RunMode,
962
- runtimeMode: RuntimeMode,
963
- interactionMode: ProviderInteractionMode,
964
- status: RunStatus,
965
- runtimeAdapter: Schema4.Literal("pi"),
966
- model: Schema4.NullOr(TrimmedNonEmptyString),
967
- initialPrompt: Schema4.NullOr(Schema4.String),
968
- executionTarget: Schema4.optional(RunExecutionTarget),
969
- remoteHostId: Schema4.optional(Schema4.NullOr(TrimmedNonEmptyString)),
970
- remoteLeaseId: Schema4.optional(Schema4.NullOr(TrimmedNonEmptyString)),
971
- remoteLeaseClaimedAt: Schema4.optional(Schema4.NullOr(IsoDateTime)),
972
- activeRuntimeId: Schema4.NullOr(EngineRuntimeId),
973
- latestMessageId: Schema4.NullOr(TrimmedNonEmptyString),
974
- pendingApprovalCount: NonNegativeInt,
975
- pendingUserInputCount: NonNegativeInt,
976
- branch: Schema4.NullOr(TrimmedNonEmptyString),
977
- worktreePath: Schema4.NullOr(TrimmedNonEmptyString),
978
- errorText: Schema4.NullOr(Schema4.String),
979
- createdAt: IsoDateTime,
980
- updatedAt: IsoDateTime,
981
- startedAt: Schema4.NullOr(IsoDateTime),
982
- completedAt: Schema4.NullOr(IsoDateTime)
983
- });
984
- var RuntimeSummary = Schema4.Struct({
985
- id: EngineRuntimeId,
986
- workspaceId: WorkspaceId,
987
- runId: RunId,
988
- adapterKind: Schema4.Literal("pi"),
989
- executionTarget: Schema4.optional(RunExecutionTarget),
990
- remoteHostId: Schema4.optional(Schema4.NullOr(TrimmedNonEmptyString)),
991
- status: RuntimeStatus,
992
- sandboxMode: EngineSandboxMode,
993
- isolationMode: IsolationMode,
994
- workspaceDir: Schema4.NullOr(TrimmedNonEmptyString),
995
- homeDir: Schema4.NullOr(TrimmedNonEmptyString),
996
- tmpDir: Schema4.NullOr(TrimmedNonEmptyString),
997
- cacheDir: Schema4.NullOr(TrimmedNonEmptyString),
998
- logsDir: Schema4.NullOr(TrimmedNonEmptyString),
999
- stateDir: Schema4.NullOr(TrimmedNonEmptyString),
1000
- sessionDir: Schema4.NullOr(TrimmedNonEmptyString),
1001
- sessionLogPath: Schema4.NullOr(TrimmedNonEmptyString),
1002
- pid: Schema4.NullOr(NonNegativeInt),
1003
- startedAt: Schema4.NullOr(IsoDateTime),
1004
- updatedAt: IsoDateTime,
1005
- exitedAt: Schema4.NullOr(IsoDateTime)
1006
- });
1007
- var ApprovalStatus = Schema4.Literals(["pending", "resolved"]);
1008
- var ApprovalSummary = Schema4.Struct({
1009
- id: TrimmedNonEmptyString,
1010
- runId: RunId,
1011
- actionId: Schema4.NullOr(TrimmedNonEmptyString),
1012
- requestKind: TrimmedNonEmptyString,
1013
- status: ApprovalStatus,
1014
- payload: Schema4.Unknown,
1015
- createdAt: IsoDateTime,
1016
- resolvedAt: Schema4.NullOr(IsoDateTime)
1017
- });
1018
- var UserInputRequestSummary = Schema4.Struct({
1019
- id: TrimmedNonEmptyString,
1020
- runId: RunId,
1021
- status: ApprovalStatus,
1022
- payload: Schema4.Unknown,
1023
- createdAt: IsoDateTime,
1024
- resolvedAt: Schema4.NullOr(IsoDateTime)
1025
- });
1026
- var WorktreeSummary = Schema4.Struct({
1027
- id: WorktreeId,
1028
- workspaceId: WorkspaceId,
1029
- runId: RunId,
1030
- taskId: Schema4.NullOr(TaskId),
1031
- branchName: TrimmedNonEmptyString,
1032
- path: TrimmedNonEmptyString,
1033
- status: TrimmedNonEmptyString,
1034
- createdAt: IsoDateTime,
1035
- cleanedAt: Schema4.NullOr(IsoDateTime)
1036
- });
1037
-
1038
- // packages/contracts/src/stage.ts
1039
- import { Schema as Schema5 } from "effect";
1040
- var StageKind = Schema5.Literals(["transform", "gate", "observe"]);
1041
- var StageId = TrimmedNonEmptyString.pipe(Schema5.brand("StageId"));
1042
- var StageContext = Schema5.Struct({
1043
- runId: RunId,
1044
- taskId: Schema5.optional(Schema5.NullOr(TaskId)),
1045
- state: Schema5.Unknown,
1046
- metadata: Schema5.optional(Schema5.Record(Schema5.String, Schema5.Unknown))
1047
- });
1048
- var StageDescriptor = Schema5.Struct({
1049
- id: StageId,
1050
- kind: StageKind,
1051
- before: Schema5.optional(Schema5.Array(StageId)),
1052
- after: Schema5.optional(Schema5.Array(StageId)),
1053
- priority: Schema5.Number.pipe(Schema5.withDecodingDefault(() => 0)),
1054
- protected: Schema5.Boolean.pipe(Schema5.withDecodingDefault(() => false))
1055
- });
1056
- var StageContinueResult = Schema5.Struct({
1057
- kind: Schema5.Literal("continue"),
1058
- ctx: StageContext
1059
- });
1060
- var StageAllowResult = Schema5.Struct({
1061
- kind: Schema5.Literal("allow")
1062
- });
1063
- var StageBlockResult = Schema5.Struct({
1064
- kind: Schema5.Literal("block"),
1065
- reason: TrimmedNonEmptyString
1066
- });
1067
- var StageResult = Schema5.Union([
1068
- StageContinueResult,
1069
- StageAllowResult,
1070
- StageBlockResult
1071
- ]);
1072
- var StageWrapperDescriptor = Schema5.Struct({
1073
- id: TrimmedNonEmptyString,
1074
- priority: Schema5.Number.pipe(Schema5.withDecodingDefault(() => 0))
1075
- });
1076
- var StageMutationOp = Schema5.Literals(["insert", "remove", "replace", "wrap", "reorder"]);
1077
- var InsertStageMutation = Schema5.Struct({
1078
- op: Schema5.Literal("insert"),
1079
- stage: StageDescriptor,
1080
- contributedBy: Schema5.optional(TrimmedNonEmptyString)
1081
- });
1082
- var RemoveStageMutation = Schema5.Struct({
1083
- op: Schema5.Literal("remove"),
1084
- id: StageId,
1085
- contributedBy: Schema5.optional(TrimmedNonEmptyString)
1086
- });
1087
- var ReplaceStageMutation = Schema5.Struct({
1088
- op: Schema5.Literal("replace"),
1089
- id: StageId,
1090
- stage: StageDescriptor,
1091
- contributedBy: Schema5.optional(TrimmedNonEmptyString)
1092
- });
1093
- var WrapStageMutation = Schema5.Struct({
1094
- op: Schema5.Literal("wrap"),
1095
- id: StageId,
1096
- around: StageWrapperDescriptor,
1097
- contributedBy: Schema5.optional(TrimmedNonEmptyString)
1098
- });
1099
- var ReorderStageMutation = Schema5.Struct({
1100
- op: Schema5.Literal("reorder"),
1101
- id: StageId,
1102
- before: Schema5.optional(Schema5.Array(StageId)),
1103
- after: Schema5.optional(Schema5.Array(StageId)),
1104
- contributedBy: Schema5.optional(TrimmedNonEmptyString)
1105
- });
1106
- var StageMutation = Schema5.Union([
1107
- InsertStageMutation,
1108
- RemoveStageMutation,
1109
- ReplaceStageMutation,
1110
- WrapStageMutation,
1111
- ReorderStageMutation
1112
- ]);
1113
- var ResolutionGrantUse = Schema5.Struct({
1114
- kind: Schema5.Literal("kernel-replacement"),
1115
- target: TrimmedNonEmptyString,
1116
- pluginId: TrimmedNonEmptyString
1117
- });
1118
- var ResolutionRecordEntry = Schema5.Struct({
1119
- stageId: StageId,
1120
- contributedBy: TrimmedNonEmptyString,
1121
- removedBy: Schema5.optional(TrimmedNonEmptyString),
1122
- replacedBy: Schema5.optional(TrimmedNonEmptyString),
1123
- wrappedBy: Schema5.optional(Schema5.Array(TrimmedNonEmptyString)),
1124
- droppedAnchors: Schema5.optional(Schema5.Array(StageId)),
1125
- isProtected: Schema5.Boolean
1126
- });
1127
- var ResolvedPipeline = Schema5.Struct({
1128
- runId: Schema5.optional(RunId),
1129
- order: Schema5.Array(StageId),
1130
- record: Schema5.Array(ResolutionRecordEntry),
1131
- cycles: Schema5.Array(Schema5.Array(StageId)),
1132
- grantUses: Schema5.optional(Schema5.Array(ResolutionGrantUse)),
1133
- resolvedAt: Schema5.optional(IsoDateTime)
1134
- });
1135
- var StageRunOutcome = Schema5.Struct({
1136
- stageId: StageId,
1137
- result: StageResult,
1138
- startedAt: IsoDateTime,
1139
- finishedAt: IsoDateTime
1140
- });
1141
-
1142
- // packages/contracts/src/run-journal.ts
1143
- var RunActor = Schema6.Struct({
1144
- kind: Schema6.Literals(["operator", "agent", "server", "system"]),
1145
- id: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString))
1146
- });
1147
- var RunCloseoutPhase = Schema6.Literals([
1148
- "queued",
1149
- "commit",
1150
- "push",
1151
- "pr-review-merge",
1152
- "pr-opened",
1153
- "merge",
1154
- "close-source",
1155
- "completed"
1156
- ]);
1157
- var RunCloseoutPhaseOutcome = Schema6.Literals(["started", "completed", "failed"]);
1158
- var RunCloseoutStatus = Schema6.Literals([
1159
- "pending",
1160
- "running",
1161
- "completed",
1162
- "needs-attention",
1163
- "failed"
1164
- ]);
1165
- var RunCloseoutState = Schema6.Struct({
1166
- phase: RunCloseoutPhase,
1167
- status: RunCloseoutStatus,
1168
- updatedAt: IsoDateTime,
1169
- taskId: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1170
- runtimeWorkspace: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1171
- branch: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1172
- prUrl: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1173
- artifactRoot: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1174
- iterations: Schema6.optional(Schema6.NullOr(Schema6.Int)),
1175
- feedback: Schema6.optional(Schema6.Array(Schema6.String)),
1176
- error: Schema6.optional(Schema6.NullOr(Schema6.String)),
1177
- reason: Schema6.optional(Schema6.NullOr(Schema6.String)),
1178
- merged: Schema6.optional(Schema6.Boolean),
1179
- resumedAt: Schema6.optional(Schema6.NullOr(IsoDateTime)),
1180
- completedAt: Schema6.optional(Schema6.NullOr(IsoDateTime))
1181
- });
1182
- var ApprovalDecision = Schema6.Literals(["approve", "reject"]);
1183
- var runRecordFields = {
1184
- runId: TrimmedNonEmptyString,
1185
- workspaceId: TrimmedNonEmptyString,
1186
- taskId: Schema6.NullOr(TrimmedNonEmptyString),
1187
- threadId: Schema6.NullOr(TrimmedNonEmptyString),
1188
- mode: Schema6.Literals(["local", "remote"]),
1189
- runtimeAdapter: Schema6.Literal("pi"),
1190
- createdAt: IsoDateTime,
1191
- startedAt: Schema6.NullOr(IsoDateTime),
1192
- completedAt: Schema6.NullOr(IsoDateTime),
1193
- endpointId: Schema6.NullOr(TrimmedNonEmptyString),
1194
- hostId: Schema6.NullOr(TrimmedNonEmptyString),
1195
- worktreePath: Schema6.NullOr(TrimmedNonEmptyString),
1196
- artifactRoot: Schema6.NullOr(TrimmedNonEmptyString),
1197
- logRoot: Schema6.NullOr(TrimmedNonEmptyString),
1198
- sessionPath: Schema6.NullOr(TrimmedNonEmptyString),
1199
- sessionLogPath: Schema6.NullOr(TrimmedNonEmptyString),
1200
- pid: Schema6.optional(Schema6.NullOr(Schema6.Int)),
1201
- piSession: Schema6.optional(Schema6.Unknown),
1202
- piSessionPrivate: Schema6.optional(Schema6.Unknown),
1203
- updatedAt: IsoDateTime,
1204
- title: TrimmedNonEmptyString,
1205
- projectRoot: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1206
- errorText: Schema6.optional(Schema6.NullOr(Schema6.String)),
1207
- latestMessageId: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1208
- prUrl: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1209
- leaseId: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1210
- serverCloseout: Schema6.optional(Schema6.NullOr(RunCloseoutState)),
1211
- model: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1212
- runtimeMode: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1213
- interactionMode: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1214
- runMode: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1215
- initialPrompt: Schema6.optional(Schema6.NullOr(Schema6.String)),
1216
- baselineMode: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1217
- prMode: Schema6.optional(Schema6.NullOr(Schema6.Literals(["auto", "ask", "off"]))),
1218
- initiatedBy: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1219
- sourceTask: Schema6.optional(Schema6.Unknown),
1220
- serverPid: Schema6.optional(Schema6.NullOr(Schema6.Int)),
1221
- latestSteeringAt: Schema6.optional(Schema6.NullOr(IsoDateTime)),
1222
- latestSteeringDeliveredAt: Schema6.optional(Schema6.NullOr(IsoDateTime)),
1223
- statusDetail: Schema6.optional(Schema6.NullOr(Schema6.String)),
1224
- planning: Schema6.optional(Schema6.Unknown),
1225
- branch: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString))
1226
- };
1227
- var RunJournalRecord = Schema6.Struct({
1228
- ...runRecordFields,
1229
- status: RunStatus
1230
- });
1231
- var RunRecordPatch = Schema6.Struct({
1232
- runId: Schema6.optional(runRecordFields.runId),
1233
- workspaceId: Schema6.optional(runRecordFields.workspaceId),
1234
- taskId: Schema6.optional(runRecordFields.taskId),
1235
- threadId: Schema6.optional(runRecordFields.threadId),
1236
- mode: Schema6.optional(runRecordFields.mode),
1237
- runtimeAdapter: Schema6.optional(runRecordFields.runtimeAdapter),
1238
- createdAt: Schema6.optional(runRecordFields.createdAt),
1239
- startedAt: Schema6.optional(runRecordFields.startedAt),
1240
- completedAt: Schema6.optional(runRecordFields.completedAt),
1241
- endpointId: Schema6.optional(runRecordFields.endpointId),
1242
- hostId: Schema6.optional(runRecordFields.hostId),
1243
- worktreePath: Schema6.optional(runRecordFields.worktreePath),
1244
- artifactRoot: Schema6.optional(runRecordFields.artifactRoot),
1245
- logRoot: Schema6.optional(runRecordFields.logRoot),
1246
- sessionPath: Schema6.optional(runRecordFields.sessionPath),
1247
- sessionLogPath: Schema6.optional(runRecordFields.sessionLogPath),
1248
- pid: runRecordFields.pid,
1249
- piSession: runRecordFields.piSession,
1250
- piSessionPrivate: runRecordFields.piSessionPrivate,
1251
- updatedAt: Schema6.optional(runRecordFields.updatedAt),
1252
- title: Schema6.optional(runRecordFields.title),
1253
- projectRoot: runRecordFields.projectRoot,
1254
- errorText: runRecordFields.errorText,
1255
- latestMessageId: runRecordFields.latestMessageId,
1256
- prUrl: runRecordFields.prUrl,
1257
- leaseId: runRecordFields.leaseId,
1258
- serverCloseout: runRecordFields.serverCloseout,
1259
- model: runRecordFields.model,
1260
- runtimeMode: runRecordFields.runtimeMode,
1261
- interactionMode: runRecordFields.interactionMode,
1262
- runMode: runRecordFields.runMode,
1263
- initialPrompt: runRecordFields.initialPrompt,
1264
- baselineMode: runRecordFields.baselineMode,
1265
- prMode: runRecordFields.prMode,
1266
- initiatedBy: runRecordFields.initiatedBy,
1267
- sourceTask: runRecordFields.sourceTask,
1268
- serverPid: runRecordFields.serverPid,
1269
- latestSteeringAt: runRecordFields.latestSteeringAt,
1270
- latestSteeringDeliveredAt: runRecordFields.latestSteeringDeliveredAt,
1271
- statusDetail: runRecordFields.statusDetail,
1272
- planning: runRecordFields.planning,
1273
- branch: runRecordFields.branch
1274
- });
1275
- var journalEnvelopeFields = {
1276
- v: Schema6.Literal(1),
1277
- seq: PositiveInt,
1278
- at: IsoDateTime,
1279
- runId: RunId
1280
- };
1281
- var RunStatusChangedEvent = Schema6.Struct({
1282
- ...journalEnvelopeFields,
1283
- type: Schema6.Literal("status-changed"),
1284
- from: Schema6.NullOr(RunStatus),
1285
- to: RunStatus,
1286
- reason: Schema6.optional(Schema6.NullOr(Schema6.String)),
1287
- actor: Schema6.optional(RunActor)
1288
- });
1289
- var RunRecordPatchEvent = Schema6.Struct({
1290
- ...journalEnvelopeFields,
1291
- type: Schema6.Literal("record-patch"),
1292
- patch: RunRecordPatch
1293
- });
1294
- var RunTimelineEntryEvent = Schema6.Struct({
1295
- ...journalEnvelopeFields,
1296
- type: Schema6.Literal("timeline-entry"),
1297
- payload: Schema6.Unknown
1298
- });
1299
- var RunLogEntryEvent = Schema6.Struct({
1300
- ...journalEnvelopeFields,
1301
- type: Schema6.Literal("log-entry"),
1302
- payload: Schema6.Unknown
1303
- });
1304
- var RunApprovalRequestedEvent = Schema6.Struct({
1305
- ...journalEnvelopeFields,
1306
- type: Schema6.Literal("approval-requested"),
1307
- requestId: TrimmedNonEmptyString,
1308
- requestKind: TrimmedNonEmptyString,
1309
- actionId: Schema6.optional(Schema6.NullOr(TrimmedNonEmptyString)),
1310
- payload: Schema6.Unknown
1311
- });
1312
- var RunApprovalResolvedEvent = Schema6.Struct({
1313
- ...journalEnvelopeFields,
1314
- type: Schema6.Literal("approval-resolved"),
1315
- requestId: TrimmedNonEmptyString,
1316
- decision: ApprovalDecision,
1317
- note: Schema6.optional(Schema6.NullOr(Schema6.String)),
1318
- actor: RunActor
1319
- });
1320
- var RunInputRequestedEvent = Schema6.Struct({
1321
- ...journalEnvelopeFields,
1322
- type: Schema6.Literal("input-requested"),
1323
- requestId: TrimmedNonEmptyString,
1324
- payload: Schema6.Unknown
1325
- });
1326
- var RunInputResolvedEvent = Schema6.Struct({
1327
- ...journalEnvelopeFields,
1328
- type: Schema6.Literal("input-resolved"),
1329
- requestId: TrimmedNonEmptyString,
1330
- answers: Schema6.Record(Schema6.String, Schema6.String),
1331
- actor: RunActor
1332
- });
1333
- var RunSteeringEvent = Schema6.Struct({
1334
- ...journalEnvelopeFields,
1335
- type: Schema6.Literal("steering"),
1336
- actor: RunActor,
1337
- text: Schema6.String
1338
- });
1339
- var RunAdoptedEvent = Schema6.Struct({
1340
- ...journalEnvelopeFields,
1341
- type: Schema6.Literal("adopted"),
1342
- pid: Schema6.NullOr(Schema6.Int),
1343
- serverPid: Schema6.Int
1344
- });
1345
- var RunStallDetectedEvent = Schema6.Struct({
1346
- ...journalEnvelopeFields,
1347
- type: Schema6.Literal("stall-detected"),
1348
- detail: Schema6.String
1349
- });
1350
- var RunCloseoutPhaseEvent = Schema6.Struct({
1351
- ...journalEnvelopeFields,
1352
- type: Schema6.Literal("closeout-phase"),
1353
- phase: RunCloseoutPhase,
1354
- outcome: RunCloseoutPhaseOutcome,
1355
- detail: Schema6.optional(Schema6.NullOr(Schema6.String))
1356
- });
1357
- var RunPipelineResolvedEvent = Schema6.Struct({
1358
- ...journalEnvelopeFields,
1359
- type: Schema6.Literal("pipeline-resolved"),
1360
- pipeline: ResolvedPipeline
1361
- });
1362
- var RunStageOutcomeEvent = Schema6.Struct({
1363
- ...journalEnvelopeFields,
1364
- type: Schema6.Literal("stage-outcome"),
1365
- outcome: StageRunOutcome
1366
- });
1367
- var RunJournalEvent = Schema6.Union([
1368
- RunStatusChangedEvent,
1369
- RunRecordPatchEvent,
1370
- RunTimelineEntryEvent,
1371
- RunLogEntryEvent,
1372
- RunApprovalRequestedEvent,
1373
- RunApprovalResolvedEvent,
1374
- RunInputRequestedEvent,
1375
- RunInputResolvedEvent,
1376
- RunSteeringEvent,
1377
- RunAdoptedEvent,
1378
- RunStallDetectedEvent,
1379
- RunCloseoutPhaseEvent,
1380
- RunPipelineResolvedEvent,
1381
- RunStageOutcomeEvent
1382
- ]);
1383
- var decodeRunJournalEvent = Schema6.decodeUnknownSync(RunJournalEvent);
1384
- var RUN_STATUS_TRANSITIONS = {
1385
- created: ["queued", "preparing", "running", "failed", "stopped"],
1386
- queued: ["preparing", "running", "failed", "stopped"],
1387
- preparing: ["queued", "running", "needs-attention", "failed", "stopped"],
1388
- running: [
1389
- "queued",
1390
- "waiting-approval",
1391
- "waiting-user-input",
1392
- "paused",
1393
- "validating",
1394
- "reviewing",
1395
- "closing-out",
1396
- "needs-attention",
1397
- "completed",
1398
- "failed",
1399
- "stopped"
1400
- ],
1401
- "waiting-approval": ["running", "needs-attention", "failed", "stopped"],
1402
- "waiting-user-input": ["running", "needs-attention", "failed", "stopped"],
1403
- paused: ["running", "failed", "stopped"],
1404
- validating: ["running", "reviewing", "closing-out", "needs-attention", "completed", "failed", "stopped"],
1405
- reviewing: ["running", "validating", "closing-out", "needs-attention", "completed", "failed", "stopped"],
1406
- "closing-out": ["running", "needs-attention", "completed", "failed", "stopped"],
1407
- "needs-attention": ["queued", "preparing", "running", "closing-out", "completed", "failed", "stopped"],
1408
- completed: [],
1409
- failed: ["queued", "preparing", "running", "closing-out"],
1410
- stopped: ["queued", "preparing", "running", "closing-out"]
1411
- };
1412
- var TERMINAL_RUN_STATUSES = ["completed", "failed", "stopped"];
1413
- var ACTIVE_RUN_STATUSES = Object.keys(RUN_STATUS_TRANSITIONS).filter((status) => !TERMINAL_RUN_STATUSES.includes(status));
1414
- function isTerminalRunStatus(status) {
1415
- return TERMINAL_RUN_STATUSES.includes(status);
1416
- }
1417
- function canTransitionRunStatus(from, to) {
1418
- if (from === null)
1419
- return true;
1420
- if (from === to)
1421
- return true;
1422
- return RUN_STATUS_TRANSITIONS[from].includes(to);
1423
- }
1424
- function reduceRunJournal(events, runId = null) {
1425
- let record = {};
1426
- let status = null;
1427
- const statusHistory = [];
1428
- const pendingApprovals = new Map;
1429
- const resolvedApprovals = [];
1430
- const pendingUserInputs = new Map;
1431
- const resolvedUserInputs = [];
1432
- const closeoutPhases = [];
1433
- let resolvedPipeline = null;
1434
- const stageOutcomes = [];
1435
- const anomalies = [];
1436
- let steeringCount = 0;
1437
- let stallCount = 0;
1438
- let lastSeq = 0;
1439
- let lastEventAt = null;
1440
- const projectedRunId = runId ?? events[0]?.runId ?? null;
1441
- for (const event of events) {
1442
- lastSeq = event.seq;
1443
- lastEventAt = event.at;
1444
- switch (event.type) {
1445
- case "status-changed": {
1446
- if (!canTransitionRunStatus(status, event.to)) {
1447
- anomalies.push({
1448
- seq: event.seq,
1449
- kind: "illegal-transition",
1450
- detail: `${status ?? "(none)"} -> ${event.to}`
1451
- });
1452
- }
1453
- statusHistory.push({
1454
- seq: event.seq,
1455
- at: event.at,
1456
- from: status,
1457
- to: event.to,
1458
- reason: event.reason ?? null
1459
- });
1460
- const wasTerminal = status !== null && isTerminalRunStatus(status);
1461
- status = event.to;
1462
- record = { ...record, updatedAt: event.at };
1463
- if (isTerminalRunStatus(event.to) && !record.completedAt) {
1464
- record = { ...record, completedAt: event.at };
1465
- }
1466
- if (!isTerminalRunStatus(event.to) && wasTerminal) {
1467
- record = { ...record, completedAt: null };
1468
- }
1469
- if (event.to === "running" && !record.startedAt) {
1470
- record = { ...record, startedAt: event.at };
1471
- }
1472
- break;
1473
- }
1474
- case "record-patch": {
1475
- const next = { ...record };
1476
- for (const [key, value] of Object.entries(event.patch)) {
1477
- if (value !== undefined) {
1478
- next[key] = value;
1479
- }
1480
- }
1481
- next.updatedAt = event.patch.updatedAt ?? event.at;
1482
- record = next;
1483
- break;
1484
- }
1485
- case "approval-requested": {
1486
- pendingApprovals.set(event.requestId, {
1487
- requestId: event.requestId,
1488
- requestKind: event.requestKind,
1489
- actionId: event.actionId ?? null,
1490
- payload: event.payload,
1491
- requestedAt: event.at
1492
- });
1493
- break;
1494
- }
1495
- case "approval-resolved": {
1496
- const pending = pendingApprovals.get(event.requestId);
1497
- if (!pending) {
1498
- const alreadyResolved = resolvedApprovals.some((entry) => entry.requestId === event.requestId);
1499
- anomalies.push({
1500
- seq: event.seq,
1501
- kind: alreadyResolved ? "duplicate-resolution" : "unknown-request",
1502
- detail: `approval ${event.requestId}`
1503
- });
1504
- break;
1505
- }
1506
- pendingApprovals.delete(event.requestId);
1507
- resolvedApprovals.push({
1508
- ...pending,
1509
- decision: event.decision,
1510
- note: event.note ?? null,
1511
- actor: event.actor,
1512
- resolvedAt: event.at
1513
- });
1514
- break;
1515
- }
1516
- case "input-requested": {
1517
- pendingUserInputs.set(event.requestId, {
1518
- requestId: event.requestId,
1519
- requestKind: "user-input",
1520
- actionId: null,
1521
- payload: event.payload,
1522
- requestedAt: event.at
1523
- });
1524
- break;
1525
- }
1526
- case "input-resolved": {
1527
- const pending = pendingUserInputs.get(event.requestId);
1528
- if (!pending) {
1529
- const alreadyResolved = resolvedUserInputs.some((entry) => entry.requestId === event.requestId);
1530
- anomalies.push({
1531
- seq: event.seq,
1532
- kind: alreadyResolved ? "duplicate-resolution" : "unknown-request",
1533
- detail: `user-input ${event.requestId}`
1534
- });
1535
- break;
1536
- }
1537
- pendingUserInputs.delete(event.requestId);
1538
- resolvedUserInputs.push({
1539
- ...pending,
1540
- answers: event.answers,
1541
- actor: event.actor,
1542
- resolvedAt: event.at
1543
- });
1544
- break;
1545
- }
1546
- case "steering": {
1547
- steeringCount += 1;
1548
- break;
1549
- }
1550
- case "adopted": {
1551
- record = { ...record, pid: event.pid, updatedAt: event.at };
1552
- break;
1553
- }
1554
- case "stall-detected": {
1555
- stallCount += 1;
1556
- break;
1557
- }
1558
- case "closeout-phase": {
1559
- closeoutPhases.push({
1560
- seq: event.seq,
1561
- at: event.at,
1562
- phase: event.phase,
1563
- outcome: event.outcome,
1564
- detail: event.detail ?? null
1565
- });
1566
- break;
1567
- }
1568
- case "pipeline-resolved": {
1569
- resolvedPipeline = event.pipeline;
1570
- break;
1571
- }
1572
- case "stage-outcome": {
1573
- stageOutcomes.push({ seq: event.seq, at: event.at, outcome: event.outcome });
1574
- break;
1575
- }
1576
- case "timeline-entry":
1577
- case "log-entry":
1578
- break;
1579
- }
1580
- }
1581
- return {
1582
- runId: projectedRunId,
1583
- record,
1584
- status,
1585
- statusHistory,
1586
- pendingApprovals: [...pendingApprovals.values()],
1587
- resolvedApprovals,
1588
- pendingUserInputs: [...pendingUserInputs.values()],
1589
- resolvedUserInputs,
1590
- steeringCount,
1591
- stallCount,
1592
- closeoutPhases,
1593
- resolvedPipeline,
1594
- stageOutcomes,
1595
- lastSeq,
1596
- lastEventAt,
1597
- anomalies
1598
- };
1599
- }
1600
-
1601
2
  // packages/contracts/src/run-session-journal.ts
1602
3
  var RIG_RUN_STATUS_CHANGED = "rig.run.status-changed";
1603
4
  var RIG_RUN_RECORD_PATCH = "rig.run.record-patch";
@@ -1615,108 +16,10 @@ var RIG_RUN_PIPELINE_RESOLVED = "rig.run.pipeline-resolved";
1615
16
  var RIG_RUN_STAGE_OUTCOME = "rig.run.stage-outcome";
1616
17
  var RIG_STOP_SENTINEL = "<<RIG_STOP";
1617
18
  var RIG_STOP_SENTINEL_END = ">>";
1618
- function buildStopSentinel(runId, reason, requestedBy = "rig") {
1619
- const cleanReason = reason?.replace(/[>\n\r]/g, " ").trim();
1620
- return `${RIG_STOP_SENTINEL} runId=${runId} requestedBy=${requestedBy}${cleanReason ? ` reason=${cleanReason}` : ""}${RIG_STOP_SENTINEL_END}`;
1621
- }
1622
- function parseStopSentinel(text, expectedRunId) {
1623
- const start = text.indexOf(RIG_STOP_SENTINEL);
1624
- if (start < 0)
1625
- return null;
1626
- const end = text.indexOf(RIG_STOP_SENTINEL_END, start);
1627
- const body = text.slice(start + RIG_STOP_SENTINEL.length, end >= 0 ? end : undefined).trim();
1628
- const runId = body.match(/(?:^|\s)runId=([^\s>]+)/)?.[1] ?? "";
1629
- if (runId && runId !== expectedRunId)
1630
- return null;
1631
- const reason = body.match(/(?:^|\s)reason=(.+)$/)?.[1]?.trim() ?? null;
1632
- return { reason };
1633
- }
1634
19
  var RIG_PAUSE_SENTINEL = "<<RIG_PAUSE";
1635
20
  var RIG_RESUME_SENTINEL = "<<RIG_RESUME";
1636
21
  var RIG_CONTROL_SENTINEL_END = ">>";
1637
- function buildControlSentinel(marker, runId, requestedBy) {
1638
- return `${marker} runId=${runId} requestedBy=${requestedBy}${RIG_CONTROL_SENTINEL_END}`;
1639
- }
1640
- function parseControlSentinel(marker, text, expectedRunId) {
1641
- const start = text.indexOf(marker);
1642
- if (start < 0)
1643
- return null;
1644
- const end = text.indexOf(RIG_CONTROL_SENTINEL_END, start);
1645
- const body = text.slice(start + marker.length, end >= 0 ? end : undefined).trim();
1646
- const runId = body.match(/(?:^|\s)runId=([^\s>]+)/)?.[1] ?? "";
1647
- if (runId && runId !== expectedRunId)
1648
- return null;
1649
- const requestedBy = body.match(/(?:^|\s)requestedBy=([^\s>]+)/)?.[1] ?? null;
1650
- return { requestedBy };
1651
- }
1652
- function buildPauseSentinel(runId, requestedBy = "rig") {
1653
- return buildControlSentinel(RIG_PAUSE_SENTINEL, runId, requestedBy);
1654
- }
1655
- function parsePauseSentinel(text, expectedRunId) {
1656
- return parseControlSentinel(RIG_PAUSE_SENTINEL, text, expectedRunId);
1657
- }
1658
- function buildResumeSentinel(runId, requestedBy = "rig") {
1659
- return buildControlSentinel(RIG_RESUME_SENTINEL, runId, requestedBy);
1660
- }
1661
- function parseResumeSentinel(text, expectedRunId) {
1662
- return parseControlSentinel(RIG_RESUME_SENTINEL, text, expectedRunId);
1663
- }
1664
22
  var RIG_INBOX_RESOLUTION_SENTINEL = "<<RIG_INBOX_RESOLUTION";
1665
- function encodeInboxResolutionPayload(payload) {
1666
- return encodeURIComponent(JSON.stringify(payload));
1667
- }
1668
- function decodeInboxResolutionPayload(payload) {
1669
- try {
1670
- const parsed = JSON.parse(decodeURIComponent(payload));
1671
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
1672
- return null;
1673
- const record = parsed;
1674
- if (record.kind === "approval") {
1675
- const requestId = typeof record.requestId === "string" ? record.requestId.trim() : "";
1676
- const decision = record.decision === "approve" || record.decision === "reject" ? record.decision : null;
1677
- const note = typeof record.note === "string" ? record.note : record.note === null ? null : undefined;
1678
- if (!requestId || !decision)
1679
- return null;
1680
- return { kind: "approval", requestId, decision, ...note !== undefined ? { note } : {} };
1681
- }
1682
- if (record.kind === "input") {
1683
- const requestId = typeof record.requestId === "string" ? record.requestId.trim() : "";
1684
- const answers = record.answers && typeof record.answers === "object" && !Array.isArray(record.answers) ? Object.fromEntries(Object.entries(record.answers).filter((entry) => typeof entry[1] === "string")) : null;
1685
- if (!requestId || !answers)
1686
- return null;
1687
- return { kind: "input", requestId, answers };
1688
- }
1689
- } catch {
1690
- return null;
1691
- }
1692
- return null;
1693
- }
1694
- function buildInboxResolutionSentinel(runId, resolution, requestedBy = "rig") {
1695
- return `${RIG_INBOX_RESOLUTION_SENTINEL} runId=${runId} requestedBy=${requestedBy} data=${encodeInboxResolutionPayload(resolution)}${RIG_CONTROL_SENTINEL_END}`;
1696
- }
1697
- function parseInboxResolutionSentinel(text, expectedRunId) {
1698
- const start = text.indexOf(RIG_INBOX_RESOLUTION_SENTINEL);
1699
- if (start < 0)
1700
- return null;
1701
- const end = text.indexOf(RIG_CONTROL_SENTINEL_END, start);
1702
- const body = text.slice(start + RIG_INBOX_RESOLUTION_SENTINEL.length, end >= 0 ? end : undefined).trim();
1703
- const runId = body.match(/(?:^|\s)runId=([^\s>]+)/)?.[1] ?? "";
1704
- if (runId && runId !== expectedRunId)
1705
- return null;
1706
- const requestedBy = body.match(/(?:^|\s)requestedBy=([^\s>]+)/)?.[1] ?? null;
1707
- const payload = body.match(/(?:^|\s)data=([^\s>]+)/)?.[1] ?? "";
1708
- const decoded = decodeInboxResolutionPayload(payload);
1709
- if (!decoded)
1710
- return null;
1711
- return { ...decoded, requestedBy };
1712
- }
1713
- function sessionIdFromSessionFile(sessionPath) {
1714
- if (!sessionPath)
1715
- return null;
1716
- const file = sessionPath.split(/[\\/]/).pop() ?? "";
1717
- const match = file.match(/_([0-9a-fA-F][0-9a-fA-F-]{7,})\.jsonl$/);
1718
- return match?.[1] ?? null;
1719
- }
1720
23
  var CUSTOM_TYPE_FOR = {
1721
24
  "status-changed": RIG_RUN_STATUS_CHANGED,
1722
25
  "record-patch": RIG_RUN_RECORD_PATCH,
@@ -1749,41 +52,7 @@ var TYPE_FOR_CUSTOM = {
1749
52
  [RIG_RUN_PIPELINE_RESOLVED]: "pipeline-resolved",
1750
53
  [RIG_RUN_STAGE_OUTCOME]: "stage-outcome"
1751
54
  };
1752
- function isRunSessionCustomType(customType) {
1753
- return customType !== undefined && Object.hasOwn(TYPE_FOR_CUSTOM, customType);
1754
- }
1755
- function foldRunSessionEntries(entries, runId) {
1756
- const events = [];
1757
- entries.forEach((entry, index) => {
1758
- if (entry.type !== "custom" || !isRunSessionCustomType(entry.customType))
1759
- return;
1760
- const data = entry.data !== null && typeof entry.data === "object" ? entry.data : {};
1761
- const stamped = {
1762
- v: 1,
1763
- seq: index + 1,
1764
- at: typeof data.at === "string" ? data.at : new Date(0).toISOString(),
1765
- runId,
1766
- ...data,
1767
- type: TYPE_FOR_CUSTOM[entry.customType]
1768
- };
1769
- try {
1770
- events.push(decodeRunJournalEvent(stamped));
1771
- } catch {}
1772
- });
1773
- return reduceRunJournal(events, runId);
1774
- }
1775
55
  export {
1776
- sessionIdFromSessionFile,
1777
- parseStopSentinel,
1778
- parseResumeSentinel,
1779
- parsePauseSentinel,
1780
- parseInboxResolutionSentinel,
1781
- isRunSessionCustomType,
1782
- foldRunSessionEntries,
1783
- buildStopSentinel,
1784
- buildResumeSentinel,
1785
- buildPauseSentinel,
1786
- buildInboxResolutionSentinel,
1787
56
  TYPE_FOR_CUSTOM,
1788
57
  RIG_STOP_SENTINEL_END,
1789
58
  RIG_STOP_SENTINEL,