@h-rig/contracts 0.0.6-alpha.18 → 0.0.6-alpha.181

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 (205) hide show
  1. package/dist/index.cjs +3442 -0
  2. package/dist/index.mjs +3401 -0
  3. package/dist/src/agent-roles.d.ts +8 -0
  4. package/dist/src/artifact.d.ts +13 -0
  5. package/dist/src/artifact.js +3 -0
  6. package/dist/src/baseSchemas.d.ts +63 -0
  7. package/dist/src/baseSchemas.js +6 -0
  8. package/dist/src/blocker-classifier.d.ts +21 -0
  9. package/dist/src/blocker-classifier.js +13 -0
  10. package/dist/src/browser.d.ts +80 -0
  11. package/dist/src/browser.js +13 -0
  12. package/dist/src/capability-id.d.ts +22 -0
  13. package/dist/src/capability-id.js +8 -0
  14. package/dist/src/cli-output.d.ts +348 -0
  15. package/dist/src/cli-output.js +190 -0
  16. package/dist/src/cli-runner.d.ts +43 -0
  17. package/dist/src/cli-runner.js +13 -0
  18. package/dist/src/cockpit.d.ts +58 -0
  19. package/dist/src/cockpit.js +13 -0
  20. package/dist/src/collab-session-viewer.d.ts +36 -0
  21. package/dist/src/collab-session-viewer.js +13 -0
  22. package/dist/src/config.d.ts +553 -0
  23. package/dist/src/config.js +767 -162
  24. package/dist/src/control-plane-types.d.ts +323 -0
  25. package/dist/src/control-plane-types.js +13 -0
  26. package/dist/src/conversation.d.ts +50 -0
  27. package/dist/src/conversation.js +3 -0
  28. package/dist/src/dependency-preflight.d.ts +43 -0
  29. package/dist/src/dependency-preflight.js +13 -0
  30. package/dist/src/docs-drift.d.ts +10 -0
  31. package/dist/src/docs-drift.js +12 -0
  32. package/dist/src/doctor.d.ts +90 -0
  33. package/dist/src/doctor.js +13 -0
  34. package/dist/src/drift.d.ts +28 -0
  35. package/dist/src/drift.js +69 -0
  36. package/dist/src/editor.d.ts +25 -0
  37. package/dist/src/editor.js +3 -0
  38. package/dist/src/errors.d.ts +13 -0
  39. package/dist/src/errors.js +17 -0
  40. package/dist/src/git.d.ts +152 -0
  41. package/dist/src/git.js +3 -0
  42. package/dist/src/github.d.ts +295 -0
  43. package/dist/src/github.js +17 -0
  44. package/dist/src/graph.d.ts +360 -0
  45. package/dist/src/graph.js +137 -1
  46. package/dist/src/guard.d.ts +118 -0
  47. package/dist/src/guard.js +15 -0
  48. package/dist/src/harness-events.d.ts +8 -0
  49. package/dist/src/harness-events.js +1 -0
  50. package/dist/src/harness-profile-state.d.ts +10 -0
  51. package/dist/src/harness-profile-state.js +13 -0
  52. package/dist/src/help-catalog.d.ts +41 -0
  53. package/dist/src/help-catalog.js +13 -0
  54. package/dist/src/host.d.ts +41 -0
  55. package/dist/src/host.js +13 -0
  56. package/dist/src/identity.d.ts +44 -0
  57. package/dist/src/identity.js +1 -0
  58. package/dist/src/index.d.ts +98 -0
  59. package/dist/src/index.js +2605 -3752
  60. package/dist/src/isolation.d.ts +213 -0
  61. package/dist/src/isolation.js +13 -0
  62. package/dist/src/kernel.d.ts +200 -0
  63. package/dist/src/kernel.js +261 -0
  64. package/dist/src/keybindings.d.ts +71 -0
  65. package/dist/src/keybindings.js +3 -0
  66. package/dist/src/layout.d.ts +44 -0
  67. package/dist/src/layout.js +8 -0
  68. package/dist/src/lifecycle-capabilities.d.ts +224 -0
  69. package/dist/src/lifecycle-capabilities.js +45 -0
  70. package/dist/src/managed-repos.d.ts +339 -0
  71. package/dist/src/managed-repos.js +37 -0
  72. package/dist/src/memory.d.ts +199 -0
  73. package/dist/src/memory.js +15 -0
  74. package/dist/src/model.d.ts +13 -0
  75. package/dist/src/model.js +3 -58
  76. package/dist/src/native-toolchain.d.ts +46 -0
  77. package/dist/src/native-toolchain.js +13 -0
  78. package/dist/src/notify.d.ts +46 -0
  79. package/dist/src/notify.js +13 -0
  80. package/dist/src/orchestration.d.ts +43 -0
  81. package/dist/src/orchestration.js +28 -961
  82. package/dist/src/panel-protocol.d.ts +17 -0
  83. package/dist/src/panel-protocol.js +10 -0
  84. package/dist/src/pi-session.d.ts +113 -0
  85. package/dist/src/pi-session.js +1 -0
  86. package/dist/src/placement.d.ts +47 -0
  87. package/dist/src/placement.js +13 -0
  88. package/dist/src/planning.d.ts +64 -0
  89. package/dist/src/planning.js +90 -0
  90. package/dist/src/plugin-hooks.d.ts +51 -0
  91. package/dist/src/plugin-hooks.js +386 -0
  92. package/dist/src/plugin.d.ts +476 -0
  93. package/dist/src/plugin.js +346 -64
  94. package/dist/src/policy.d.ts +16 -0
  95. package/dist/src/policy.js +3 -0
  96. package/dist/src/product-entrypoint.d.ts +22 -0
  97. package/dist/src/product-entrypoint.js +13 -0
  98. package/dist/src/project.d.ts +71 -0
  99. package/dist/src/project.js +3 -0
  100. package/dist/src/prompt.d.ts +29 -0
  101. package/dist/src/prompt.js +13 -0
  102. package/dist/src/protocol-version.d.ts +21 -0
  103. package/dist/src/protocol-version.js +6 -0
  104. package/dist/src/provider-instructions.d.ts +41 -0
  105. package/dist/src/provider-instructions.js +13 -0
  106. package/dist/src/provider.d.ts +105 -0
  107. package/dist/src/provider.js +16 -835
  108. package/dist/src/remote-control.d.ts +93 -0
  109. package/dist/src/remote-control.js +26 -0
  110. package/dist/src/remote.d.ts +318 -0
  111. package/dist/src/remote.js +238 -1078
  112. package/dist/src/review.d.ts +18 -0
  113. package/dist/src/review.js +3 -0
  114. package/dist/src/rollups.d.ts +41 -0
  115. package/dist/src/rollups.js +70 -0
  116. package/dist/src/run-control.d.ts +164 -0
  117. package/dist/src/run-control.js +13 -0
  118. package/dist/src/run-discovery.d.ts +83 -0
  119. package/dist/src/run-discovery.js +13 -0
  120. package/dist/src/run-dispatch.d.ts +34 -0
  121. package/dist/src/run-dispatch.js +13 -0
  122. package/dist/src/run-identity.d.ts +47 -0
  123. package/dist/src/run-identity.js +13 -0
  124. package/dist/src/run-journal.d.ts +694 -0
  125. package/dist/src/run-journal.js +569 -0
  126. package/dist/src/run-queue.d.ts +36 -0
  127. package/dist/src/run-queue.js +13 -0
  128. package/dist/src/run-read-model.d.ts +200 -0
  129. package/dist/src/run-read-model.js +13 -0
  130. package/dist/src/run-record.d.ts +45 -0
  131. package/dist/src/run-record.js +1 -0
  132. package/dist/src/run-registry-backbone.d.ts +56 -0
  133. package/dist/src/run-registry-backbone.js +13 -0
  134. package/dist/src/run-session-journal.d.ts +154 -0
  135. package/dist/src/run-session-journal.js +87 -0
  136. package/dist/src/run-status.d.ts +10 -0
  137. package/dist/src/run-status.js +27 -0
  138. package/dist/src/run-timeline.d.ts +7 -0
  139. package/dist/src/run-timeline.js +1 -0
  140. package/dist/src/runtime-secrets.d.ts +10 -0
  141. package/dist/src/runtime-secrets.js +13 -0
  142. package/dist/src/runtime-task-context.d.ts +82 -0
  143. package/dist/src/runtime-task-context.js +1 -0
  144. package/dist/src/runtime.d.ts +103 -0
  145. package/dist/src/runtime.js +73 -906
  146. package/dist/src/session-asset-materializer.d.ts +35 -0
  147. package/dist/src/session-asset-materializer.js +13 -0
  148. package/dist/src/session-hook-materializer.d.ts +41 -0
  149. package/dist/src/session-hook-materializer.js +13 -0
  150. package/dist/src/setup.d.ts +154 -0
  151. package/dist/src/setup.js +13 -0
  152. package/dist/src/stage.d.ts +245 -0
  153. package/dist/src/stage.js +169 -0
  154. package/dist/src/supervisor-journal.d.ts +204 -0
  155. package/dist/src/supervisor-journal.js +336 -0
  156. package/dist/src/supervisor-loop.d.ts +40 -0
  157. package/dist/src/supervisor-loop.js +13 -0
  158. package/dist/src/task-artifacts.d.ts +53 -0
  159. package/dist/src/task-artifacts.js +13 -0
  160. package/dist/src/task-config.d.ts +22 -0
  161. package/dist/src/task-config.js +1 -0
  162. package/dist/src/task-context-renderer.d.ts +29 -0
  163. package/dist/src/task-context-renderer.js +13 -0
  164. package/dist/src/task-data.d.ts +196 -0
  165. package/dist/src/task-data.js +13 -0
  166. package/dist/src/task-graph-primitives.d.ts +47 -0
  167. package/dist/src/task-graph-primitives.js +1 -0
  168. package/dist/src/task-source.d.ts +167 -0
  169. package/dist/src/task-source.js +24 -0
  170. package/dist/src/task-state-metadata.d.ts +21 -0
  171. package/dist/src/task-state-metadata.js +1 -0
  172. package/dist/src/task-state-paths.d.ts +14 -0
  173. package/dist/src/task-state-paths.js +13 -0
  174. package/dist/src/task-state-store.d.ts +36 -0
  175. package/dist/src/task-state-store.js +17 -0
  176. package/dist/src/task-tracker-state.d.ts +101 -0
  177. package/dist/src/task-tracker-state.js +39 -0
  178. package/dist/src/terminal.d.ts +130 -0
  179. package/dist/src/terminal.js +3 -0
  180. package/dist/src/tool-materializer.d.ts +36 -0
  181. package/dist/src/tool-materializer.js +13 -0
  182. package/dist/src/tool-registry.d.ts +3 -0
  183. package/dist/src/tool-registry.js +58 -0
  184. package/dist/src/toolchain-sources.d.ts +54 -0
  185. package/dist/src/toolchain-sources.js +17 -0
  186. package/dist/src/transport-config.d.ts +161 -0
  187. package/dist/src/transport-config.js +15 -0
  188. package/dist/src/validation.d.ts +14 -0
  189. package/dist/src/validation.js +3 -0
  190. package/dist/src/workflow-journal.d.ts +125 -0
  191. package/dist/src/workflow-journal.js +27 -0
  192. package/dist/src/workspace-config.d.ts +18 -0
  193. package/dist/src/workspace-config.js +13 -0
  194. package/dist/src/workspace-service.d.ts +16 -0
  195. package/dist/src/workspace-service.js +13 -0
  196. package/dist/src/workspace.d.ts +204 -0
  197. package/dist/src/workspace.js +76 -911
  198. package/package.json +55 -4
  199. package/dist/src/engine.js +0 -2278
  200. package/dist/src/providerRuntime.js +0 -1630
  201. package/dist/src/rig.js +0 -2374
  202. package/dist/src/server.js +0 -1053
  203. package/dist/src/serviceFabric.js +0 -1066
  204. package/dist/src/ws.js +0 -2968
  205. /package/dist/src/{ipc.js → agent-roles.js} +0 -0
@@ -0,0 +1,569 @@
1
+ // @bun
2
+ // packages/contracts/src/run-journal.ts
3
+ import { Schema as Schema5 } 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 Schema3 } from "effect";
44
+
45
+ // packages/contracts/src/orchestration.ts
46
+ import { Schema as Schema2 } from "effect";
47
+ var ProviderKind = Schema2.Literals(["codex", "claude"]);
48
+ var ProviderApprovalPolicy = Schema2.Literals([
49
+ "untrusted",
50
+ "on-failure",
51
+ "on-request",
52
+ "never"
53
+ ]);
54
+ var ProviderSandboxMode = Schema2.Literals([
55
+ "read-only",
56
+ "workspace-write",
57
+ "danger-full-access"
58
+ ]);
59
+ var ProviderServiceTier = Schema2.Literals(["fast", "flex"]);
60
+ var RuntimeMode = Schema2.Literals(["approval-required", "full-access"]);
61
+ var ProviderInteractionMode = Schema2.Literals(["default", "plan"]);
62
+ var ProviderRequestKind = Schema2.Literals(["command", "file-read", "file-change"]);
63
+ var ProviderApprovalDecision = Schema2.Literals([
64
+ "accept",
65
+ "acceptForSession",
66
+ "decline",
67
+ "cancel"
68
+ ]);
69
+ var ProviderUserInputAnswers = Schema2.Record(Schema2.String, Schema2.Unknown);
70
+ var PROVIDER_SEND_TURN_MAX_IMAGE_BYTES = 10 * 1024 * 1024;
71
+ var CHAT_ATTACHMENT_ID_MAX_CHARS = 128;
72
+ var ChatAttachmentId = TrimmedNonEmptyString.check(Schema2.isMaxLength(CHAT_ATTACHMENT_ID_MAX_CHARS), Schema2.isPattern(/^[a-z0-9_-]+$/i));
73
+ var ChatImageAttachment = Schema2.Struct({
74
+ type: Schema2.Literal("image"),
75
+ id: ChatAttachmentId,
76
+ name: TrimmedNonEmptyString.check(Schema2.isMaxLength(255)),
77
+ mimeType: TrimmedNonEmptyString.check(Schema2.isMaxLength(100), Schema2.isPattern(/^image\//i)),
78
+ sizeBytes: NonNegativeInt.check(Schema2.isLessThanOrEqualTo(PROVIDER_SEND_TURN_MAX_IMAGE_BYTES))
79
+ });
80
+ var ChatAttachment = Schema2.Union([ChatImageAttachment]);
81
+
82
+ // packages/contracts/src/runtime.ts
83
+ var RunKind = Schema3.Literals(["adhoc", "task", "batch", "validation", "review"]);
84
+ var RunMode = Schema3.Literals(["interactive", "autonomous", "supervised"]);
85
+ var RunStatus = Schema3.Literals([
86
+ "created",
87
+ "queued",
88
+ "preparing",
89
+ "running",
90
+ "waiting-approval",
91
+ "waiting-user-input",
92
+ "paused",
93
+ "validating",
94
+ "reviewing",
95
+ "closing-out",
96
+ "needs-attention",
97
+ "completed",
98
+ "failed",
99
+ "stopped"
100
+ ]);
101
+ var EngineSandboxMode = Schema3.Literals([
102
+ "read-only",
103
+ "workspace-write",
104
+ "danger-full-access"
105
+ ]);
106
+ var IsolationMode = Schema3.Literals(["none", "env", "worktree"]);
107
+ var RuntimeStatus = Schema3.Literals([
108
+ "prepared",
109
+ "starting",
110
+ "running",
111
+ "interrupted",
112
+ "exited",
113
+ "failed",
114
+ "destroyed"
115
+ ]);
116
+ var RunExecutionTarget = Schema3.Literals(["local", "remote"]);
117
+ var RunSummary = Schema3.Struct({
118
+ id: RunId,
119
+ workspaceId: WorkspaceId,
120
+ taskId: Schema3.NullOr(TaskId),
121
+ title: TrimmedNonEmptyString,
122
+ runKind: RunKind,
123
+ mode: RunMode,
124
+ runtimeMode: RuntimeMode,
125
+ interactionMode: ProviderInteractionMode,
126
+ status: RunStatus,
127
+ runtimeAdapter: Schema3.Literal("pi"),
128
+ model: Schema3.NullOr(TrimmedNonEmptyString),
129
+ initialPrompt: Schema3.NullOr(Schema3.String),
130
+ executionTarget: Schema3.optional(RunExecutionTarget),
131
+ remoteHostId: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString)),
132
+ remoteLeaseId: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString)),
133
+ remoteLeaseClaimedAt: Schema3.optional(Schema3.NullOr(IsoDateTime)),
134
+ activeRuntimeId: Schema3.NullOr(EngineRuntimeId),
135
+ latestMessageId: Schema3.NullOr(TrimmedNonEmptyString),
136
+ pendingApprovalCount: NonNegativeInt,
137
+ pendingUserInputCount: NonNegativeInt,
138
+ branch: Schema3.NullOr(TrimmedNonEmptyString),
139
+ worktreePath: Schema3.NullOr(TrimmedNonEmptyString),
140
+ errorText: Schema3.NullOr(Schema3.String),
141
+ createdAt: IsoDateTime,
142
+ updatedAt: IsoDateTime,
143
+ startedAt: Schema3.NullOr(IsoDateTime),
144
+ completedAt: Schema3.NullOr(IsoDateTime)
145
+ });
146
+ var RuntimeSummary = Schema3.Struct({
147
+ id: EngineRuntimeId,
148
+ workspaceId: WorkspaceId,
149
+ runId: RunId,
150
+ adapterKind: Schema3.Literal("pi"),
151
+ executionTarget: Schema3.optional(RunExecutionTarget),
152
+ remoteHostId: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString)),
153
+ status: RuntimeStatus,
154
+ sandboxMode: EngineSandboxMode,
155
+ isolationMode: IsolationMode,
156
+ workspaceDir: Schema3.NullOr(TrimmedNonEmptyString),
157
+ homeDir: Schema3.NullOr(TrimmedNonEmptyString),
158
+ tmpDir: Schema3.NullOr(TrimmedNonEmptyString),
159
+ cacheDir: Schema3.NullOr(TrimmedNonEmptyString),
160
+ logsDir: Schema3.NullOr(TrimmedNonEmptyString),
161
+ stateDir: Schema3.NullOr(TrimmedNonEmptyString),
162
+ sessionDir: Schema3.NullOr(TrimmedNonEmptyString),
163
+ sessionLogPath: Schema3.NullOr(TrimmedNonEmptyString),
164
+ pid: Schema3.NullOr(NonNegativeInt),
165
+ startedAt: Schema3.NullOr(IsoDateTime),
166
+ updatedAt: IsoDateTime,
167
+ exitedAt: Schema3.NullOr(IsoDateTime)
168
+ });
169
+ var ApprovalStatus = Schema3.Literals(["pending", "resolved"]);
170
+ var ApprovalSummary = Schema3.Struct({
171
+ id: TrimmedNonEmptyString,
172
+ runId: RunId,
173
+ actionId: Schema3.NullOr(TrimmedNonEmptyString),
174
+ requestKind: TrimmedNonEmptyString,
175
+ status: ApprovalStatus,
176
+ payload: Schema3.Unknown,
177
+ createdAt: IsoDateTime,
178
+ resolvedAt: Schema3.NullOr(IsoDateTime)
179
+ });
180
+ var UserInputRequestSummary = Schema3.Struct({
181
+ id: TrimmedNonEmptyString,
182
+ runId: RunId,
183
+ status: ApprovalStatus,
184
+ payload: Schema3.Unknown,
185
+ createdAt: IsoDateTime,
186
+ resolvedAt: Schema3.NullOr(IsoDateTime)
187
+ });
188
+ var WorktreeSummary = Schema3.Struct({
189
+ id: WorktreeId,
190
+ workspaceId: WorkspaceId,
191
+ runId: RunId,
192
+ taskId: Schema3.NullOr(TaskId),
193
+ branchName: TrimmedNonEmptyString,
194
+ path: TrimmedNonEmptyString,
195
+ status: TrimmedNonEmptyString,
196
+ createdAt: IsoDateTime,
197
+ cleanedAt: Schema3.NullOr(IsoDateTime)
198
+ });
199
+
200
+ // packages/contracts/src/stage.ts
201
+ import { Schema as Schema4 } from "effect";
202
+ var StageKind = Schema4.Literals(["transform", "gate", "observe"]);
203
+ var StageId = TrimmedNonEmptyString.pipe(Schema4.brand("StageId"));
204
+ var StageContext = Schema4.Struct({
205
+ runId: RunId,
206
+ taskId: Schema4.optional(Schema4.NullOr(TaskId)),
207
+ state: Schema4.Unknown,
208
+ metadata: Schema4.optional(Schema4.Record(Schema4.String, Schema4.Unknown))
209
+ });
210
+ var StageDescriptor = Schema4.Struct({
211
+ id: StageId,
212
+ kind: StageKind,
213
+ before: Schema4.optional(Schema4.Array(StageId)),
214
+ after: Schema4.optional(Schema4.Array(StageId)),
215
+ priority: Schema4.Number.pipe(Schema4.withDecodingDefault(() => 0)),
216
+ protected: Schema4.Boolean.pipe(Schema4.withDecodingDefault(() => false))
217
+ });
218
+ var StageContinueResult = Schema4.Struct({
219
+ kind: Schema4.Literal("continue"),
220
+ ctx: StageContext
221
+ });
222
+ var StageAllowResult = Schema4.Struct({
223
+ kind: Schema4.Literal("allow")
224
+ });
225
+ var StageBlockResult = Schema4.Struct({
226
+ kind: Schema4.Literal("block"),
227
+ reason: TrimmedNonEmptyString
228
+ });
229
+ var StageResult = Schema4.Union([
230
+ StageContinueResult,
231
+ StageAllowResult,
232
+ StageBlockResult
233
+ ]);
234
+ var StageWrapperDescriptor = Schema4.Struct({
235
+ id: TrimmedNonEmptyString,
236
+ priority: Schema4.Number.pipe(Schema4.withDecodingDefault(() => 0))
237
+ });
238
+ var StageMutationOp = Schema4.Literals(["insert", "remove", "replace", "wrap", "reorder"]);
239
+ var InsertStageMutation = Schema4.Struct({
240
+ op: Schema4.Literal("insert"),
241
+ stage: StageDescriptor,
242
+ contributedBy: Schema4.optional(TrimmedNonEmptyString)
243
+ });
244
+ var RemoveStageMutation = Schema4.Struct({
245
+ op: Schema4.Literal("remove"),
246
+ id: StageId,
247
+ contributedBy: Schema4.optional(TrimmedNonEmptyString)
248
+ });
249
+ var ReplaceStageMutation = Schema4.Struct({
250
+ op: Schema4.Literal("replace"),
251
+ id: StageId,
252
+ stage: StageDescriptor,
253
+ contributedBy: Schema4.optional(TrimmedNonEmptyString)
254
+ });
255
+ var WrapStageMutation = Schema4.Struct({
256
+ op: Schema4.Literal("wrap"),
257
+ id: StageId,
258
+ around: StageWrapperDescriptor,
259
+ contributedBy: Schema4.optional(TrimmedNonEmptyString)
260
+ });
261
+ var ReorderStageMutation = Schema4.Struct({
262
+ op: Schema4.Literal("reorder"),
263
+ id: StageId,
264
+ before: Schema4.optional(Schema4.Array(StageId)),
265
+ after: Schema4.optional(Schema4.Array(StageId)),
266
+ contributedBy: Schema4.optional(TrimmedNonEmptyString)
267
+ });
268
+ var StageMutation = Schema4.Union([
269
+ InsertStageMutation,
270
+ RemoveStageMutation,
271
+ ReplaceStageMutation,
272
+ WrapStageMutation,
273
+ ReorderStageMutation
274
+ ]);
275
+ var ResolutionGrantUse = Schema4.Struct({
276
+ kind: Schema4.Literal("kernel-replacement"),
277
+ target: TrimmedNonEmptyString,
278
+ pluginId: TrimmedNonEmptyString
279
+ });
280
+ var ResolutionRecordEntry = Schema4.Struct({
281
+ stageId: StageId,
282
+ contributedBy: TrimmedNonEmptyString,
283
+ removedBy: Schema4.optional(TrimmedNonEmptyString),
284
+ replacedBy: Schema4.optional(TrimmedNonEmptyString),
285
+ wrappedBy: Schema4.optional(Schema4.Array(TrimmedNonEmptyString)),
286
+ droppedAnchors: Schema4.optional(Schema4.Array(StageId)),
287
+ isProtected: Schema4.Boolean
288
+ });
289
+ var ResolvedPipeline = Schema4.Struct({
290
+ runId: Schema4.optional(RunId),
291
+ order: Schema4.Array(StageId),
292
+ record: Schema4.Array(ResolutionRecordEntry),
293
+ cycles: Schema4.Array(Schema4.Array(StageId)),
294
+ grantUses: Schema4.optional(Schema4.Array(ResolutionGrantUse)),
295
+ resolvedAt: Schema4.optional(IsoDateTime)
296
+ });
297
+ var StageRunOutcome = Schema4.Struct({
298
+ stageId: StageId,
299
+ result: StageResult,
300
+ startedAt: IsoDateTime,
301
+ finishedAt: IsoDateTime
302
+ });
303
+
304
+ // packages/contracts/src/run-journal.ts
305
+ var RunActor = Schema5.Struct({
306
+ kind: Schema5.Literals(["operator", "agent", "server", "system"]),
307
+ id: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString))
308
+ });
309
+ var RunCloseoutPhase = Schema5.Literals([
310
+ "queued",
311
+ "commit",
312
+ "push",
313
+ "pr-review-merge",
314
+ "pr-opened",
315
+ "merge",
316
+ "close-source",
317
+ "completed"
318
+ ]);
319
+ var RunCloseoutPhaseOutcome = Schema5.Literals(["started", "completed", "failed"]);
320
+ var RunCloseoutStatus = Schema5.Literals([
321
+ "pending",
322
+ "running",
323
+ "completed",
324
+ "needs-attention",
325
+ "failed"
326
+ ]);
327
+ var RunCloseoutState = Schema5.Struct({
328
+ phase: RunCloseoutPhase,
329
+ status: RunCloseoutStatus,
330
+ updatedAt: IsoDateTime,
331
+ taskId: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
332
+ runtimeWorkspace: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
333
+ branch: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
334
+ prUrl: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
335
+ artifactRoot: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
336
+ iterations: Schema5.optional(Schema5.NullOr(Schema5.Int)),
337
+ feedback: Schema5.optional(Schema5.Array(Schema5.String)),
338
+ error: Schema5.optional(Schema5.NullOr(Schema5.String)),
339
+ reason: Schema5.optional(Schema5.NullOr(Schema5.String)),
340
+ merged: Schema5.optional(Schema5.Boolean),
341
+ resumedAt: Schema5.optional(Schema5.NullOr(IsoDateTime)),
342
+ completedAt: Schema5.optional(Schema5.NullOr(IsoDateTime))
343
+ });
344
+ var ApprovalDecision = Schema5.Literals(["approve", "reject"]);
345
+ var runRecordFields = {
346
+ runId: TrimmedNonEmptyString,
347
+ workspaceId: TrimmedNonEmptyString,
348
+ taskId: Schema5.NullOr(TrimmedNonEmptyString),
349
+ threadId: Schema5.NullOr(TrimmedNonEmptyString),
350
+ mode: Schema5.Literals(["local", "remote"]),
351
+ runtimeAdapter: Schema5.Literal("pi"),
352
+ createdAt: IsoDateTime,
353
+ startedAt: Schema5.NullOr(IsoDateTime),
354
+ completedAt: Schema5.NullOr(IsoDateTime),
355
+ endpointId: Schema5.NullOr(TrimmedNonEmptyString),
356
+ hostId: Schema5.NullOr(TrimmedNonEmptyString),
357
+ worktreePath: Schema5.NullOr(TrimmedNonEmptyString),
358
+ artifactRoot: Schema5.NullOr(TrimmedNonEmptyString),
359
+ logRoot: Schema5.NullOr(TrimmedNonEmptyString),
360
+ sessionPath: Schema5.NullOr(TrimmedNonEmptyString),
361
+ sessionLogPath: Schema5.NullOr(TrimmedNonEmptyString),
362
+ pid: Schema5.optional(Schema5.NullOr(Schema5.Int)),
363
+ piSession: Schema5.optional(Schema5.Unknown),
364
+ piSessionPrivate: Schema5.optional(Schema5.Unknown),
365
+ updatedAt: IsoDateTime,
366
+ title: TrimmedNonEmptyString,
367
+ projectRoot: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
368
+ errorText: Schema5.optional(Schema5.NullOr(Schema5.String)),
369
+ latestMessageId: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
370
+ prUrl: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
371
+ leaseId: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
372
+ serverCloseout: Schema5.optional(Schema5.NullOr(RunCloseoutState)),
373
+ model: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
374
+ runtimeMode: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
375
+ interactionMode: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
376
+ runMode: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
377
+ initialPrompt: Schema5.optional(Schema5.NullOr(Schema5.String)),
378
+ baselineMode: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
379
+ prMode: Schema5.optional(Schema5.NullOr(Schema5.Literals(["auto", "ask", "off"]))),
380
+ initiatedBy: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
381
+ sourceTask: Schema5.optional(Schema5.Unknown),
382
+ serverPid: Schema5.optional(Schema5.NullOr(Schema5.Int)),
383
+ latestSteeringAt: Schema5.optional(Schema5.NullOr(IsoDateTime)),
384
+ latestSteeringDeliveredAt: Schema5.optional(Schema5.NullOr(IsoDateTime)),
385
+ statusDetail: Schema5.optional(Schema5.NullOr(Schema5.String)),
386
+ planning: Schema5.optional(Schema5.Unknown),
387
+ branch: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString))
388
+ };
389
+ var RunJournalRecord = Schema5.Struct({
390
+ ...runRecordFields,
391
+ status: RunStatus
392
+ });
393
+ var RunRecordPatch = Schema5.Struct({
394
+ runId: Schema5.optional(runRecordFields.runId),
395
+ workspaceId: Schema5.optional(runRecordFields.workspaceId),
396
+ taskId: Schema5.optional(runRecordFields.taskId),
397
+ threadId: Schema5.optional(runRecordFields.threadId),
398
+ mode: Schema5.optional(runRecordFields.mode),
399
+ runtimeAdapter: Schema5.optional(runRecordFields.runtimeAdapter),
400
+ createdAt: Schema5.optional(runRecordFields.createdAt),
401
+ startedAt: Schema5.optional(runRecordFields.startedAt),
402
+ completedAt: Schema5.optional(runRecordFields.completedAt),
403
+ endpointId: Schema5.optional(runRecordFields.endpointId),
404
+ hostId: Schema5.optional(runRecordFields.hostId),
405
+ worktreePath: Schema5.optional(runRecordFields.worktreePath),
406
+ artifactRoot: Schema5.optional(runRecordFields.artifactRoot),
407
+ logRoot: Schema5.optional(runRecordFields.logRoot),
408
+ sessionPath: Schema5.optional(runRecordFields.sessionPath),
409
+ sessionLogPath: Schema5.optional(runRecordFields.sessionLogPath),
410
+ pid: runRecordFields.pid,
411
+ piSession: runRecordFields.piSession,
412
+ piSessionPrivate: runRecordFields.piSessionPrivate,
413
+ updatedAt: Schema5.optional(runRecordFields.updatedAt),
414
+ title: Schema5.optional(runRecordFields.title),
415
+ projectRoot: runRecordFields.projectRoot,
416
+ errorText: runRecordFields.errorText,
417
+ latestMessageId: runRecordFields.latestMessageId,
418
+ prUrl: runRecordFields.prUrl,
419
+ leaseId: runRecordFields.leaseId,
420
+ serverCloseout: runRecordFields.serverCloseout,
421
+ model: runRecordFields.model,
422
+ runtimeMode: runRecordFields.runtimeMode,
423
+ interactionMode: runRecordFields.interactionMode,
424
+ runMode: runRecordFields.runMode,
425
+ initialPrompt: runRecordFields.initialPrompt,
426
+ baselineMode: runRecordFields.baselineMode,
427
+ prMode: runRecordFields.prMode,
428
+ initiatedBy: runRecordFields.initiatedBy,
429
+ sourceTask: runRecordFields.sourceTask,
430
+ serverPid: runRecordFields.serverPid,
431
+ latestSteeringAt: runRecordFields.latestSteeringAt,
432
+ latestSteeringDeliveredAt: runRecordFields.latestSteeringDeliveredAt,
433
+ statusDetail: runRecordFields.statusDetail,
434
+ planning: runRecordFields.planning,
435
+ branch: runRecordFields.branch
436
+ });
437
+ var journalEnvelopeFields = {
438
+ v: Schema5.Literal(1),
439
+ seq: PositiveInt,
440
+ at: IsoDateTime,
441
+ runId: RunId
442
+ };
443
+ var RunStatusChangedEvent = Schema5.Struct({
444
+ ...journalEnvelopeFields,
445
+ type: Schema5.Literal("status-changed"),
446
+ from: Schema5.NullOr(RunStatus),
447
+ to: RunStatus,
448
+ reason: Schema5.optional(Schema5.NullOr(Schema5.String)),
449
+ actor: Schema5.optional(RunActor)
450
+ });
451
+ var RunRecordPatchEvent = Schema5.Struct({
452
+ ...journalEnvelopeFields,
453
+ type: Schema5.Literal("record-patch"),
454
+ patch: RunRecordPatch
455
+ });
456
+ var RunTimelineEntryEvent = Schema5.Struct({
457
+ ...journalEnvelopeFields,
458
+ type: Schema5.Literal("timeline-entry"),
459
+ payload: Schema5.Unknown
460
+ });
461
+ var RunLogEntryEvent = Schema5.Struct({
462
+ ...journalEnvelopeFields,
463
+ type: Schema5.Literal("log-entry"),
464
+ payload: Schema5.Unknown
465
+ });
466
+ var RunApprovalRequestedEvent = Schema5.Struct({
467
+ ...journalEnvelopeFields,
468
+ type: Schema5.Literal("approval-requested"),
469
+ requestId: TrimmedNonEmptyString,
470
+ requestKind: TrimmedNonEmptyString,
471
+ actionId: Schema5.optional(Schema5.NullOr(TrimmedNonEmptyString)),
472
+ payload: Schema5.Unknown
473
+ });
474
+ var RunApprovalResolvedEvent = Schema5.Struct({
475
+ ...journalEnvelopeFields,
476
+ type: Schema5.Literal("approval-resolved"),
477
+ requestId: TrimmedNonEmptyString,
478
+ decision: ApprovalDecision,
479
+ note: Schema5.optional(Schema5.NullOr(Schema5.String)),
480
+ actor: RunActor
481
+ });
482
+ var RunInputRequestedEvent = Schema5.Struct({
483
+ ...journalEnvelopeFields,
484
+ type: Schema5.Literal("input-requested"),
485
+ requestId: TrimmedNonEmptyString,
486
+ payload: Schema5.Unknown
487
+ });
488
+ var RunInputResolvedEvent = Schema5.Struct({
489
+ ...journalEnvelopeFields,
490
+ type: Schema5.Literal("input-resolved"),
491
+ requestId: TrimmedNonEmptyString,
492
+ answers: Schema5.Record(Schema5.String, Schema5.String),
493
+ actor: RunActor
494
+ });
495
+ var RunSteeringEvent = Schema5.Struct({
496
+ ...journalEnvelopeFields,
497
+ type: Schema5.Literal("steering"),
498
+ actor: RunActor,
499
+ text: Schema5.String
500
+ });
501
+ var RunAdoptedEvent = Schema5.Struct({
502
+ ...journalEnvelopeFields,
503
+ type: Schema5.Literal("adopted"),
504
+ pid: Schema5.NullOr(Schema5.Int),
505
+ serverPid: Schema5.Int
506
+ });
507
+ var RunStallDetectedEvent = Schema5.Struct({
508
+ ...journalEnvelopeFields,
509
+ type: Schema5.Literal("stall-detected"),
510
+ detail: Schema5.String
511
+ });
512
+ var RunCloseoutPhaseEvent = Schema5.Struct({
513
+ ...journalEnvelopeFields,
514
+ type: Schema5.Literal("closeout-phase"),
515
+ phase: RunCloseoutPhase,
516
+ outcome: RunCloseoutPhaseOutcome,
517
+ detail: Schema5.optional(Schema5.NullOr(Schema5.String))
518
+ });
519
+ var RunPipelineResolvedEvent = Schema5.Struct({
520
+ ...journalEnvelopeFields,
521
+ type: Schema5.Literal("pipeline-resolved"),
522
+ pipeline: ResolvedPipeline
523
+ });
524
+ var RunStageOutcomeEvent = Schema5.Struct({
525
+ ...journalEnvelopeFields,
526
+ type: Schema5.Literal("stage-outcome"),
527
+ outcome: StageRunOutcome
528
+ });
529
+ var RunJournalEvent = Schema5.Union([
530
+ RunStatusChangedEvent,
531
+ RunRecordPatchEvent,
532
+ RunTimelineEntryEvent,
533
+ RunLogEntryEvent,
534
+ RunApprovalRequestedEvent,
535
+ RunApprovalResolvedEvent,
536
+ RunInputRequestedEvent,
537
+ RunInputResolvedEvent,
538
+ RunSteeringEvent,
539
+ RunAdoptedEvent,
540
+ RunStallDetectedEvent,
541
+ RunCloseoutPhaseEvent,
542
+ RunPipelineResolvedEvent,
543
+ RunStageOutcomeEvent
544
+ ]);
545
+ export {
546
+ RunTimelineEntryEvent,
547
+ RunSteeringEvent,
548
+ RunStatusChangedEvent,
549
+ RunStallDetectedEvent,
550
+ RunStageOutcomeEvent,
551
+ RunRecordPatchEvent,
552
+ RunRecordPatch,
553
+ RunPipelineResolvedEvent,
554
+ RunLogEntryEvent,
555
+ RunJournalRecord,
556
+ RunJournalEvent,
557
+ RunInputResolvedEvent,
558
+ RunInputRequestedEvent,
559
+ RunCloseoutStatus,
560
+ RunCloseoutState,
561
+ RunCloseoutPhaseOutcome,
562
+ RunCloseoutPhaseEvent,
563
+ RunCloseoutPhase,
564
+ RunApprovalResolvedEvent,
565
+ RunApprovalRequestedEvent,
566
+ RunAdoptedEvent,
567
+ RunActor,
568
+ ApprovalDecision
569
+ };
@@ -0,0 +1,36 @@
1
+ /**
2
+ * run-queue.ts — scheduler-owned run queue capability vocabulary.
3
+ *
4
+ * Contracts keeps only the typed id and data shapes. Ranking, packing, and
5
+ * admission behavior lives in @rig/scheduler-plugin and is consumed by
6
+ * supervisor/CLI surfaces through this capability.
7
+ */
8
+ import type { CapabilityId } from "./capability-id";
9
+ import type { TaskDependencyProjection } from "./task-graph-primitives";
10
+ import type { SupervisorSelectionPolicy } from "./supervisor-journal";
11
+ export interface RunQueueRankedTask<T extends TaskDependencyProjection = TaskDependencyProjection> {
12
+ readonly task: T;
13
+ readonly score: number;
14
+ readonly priority: number;
15
+ readonly unblockCount: number;
16
+ readonly scope: readonly string[];
17
+ }
18
+ export interface RunQueuePlanInput<T extends TaskDependencyProjection = TaskDependencyProjection> {
19
+ readonly tasks: readonly T[];
20
+ readonly activeTaskIds?: Iterable<string>;
21
+ readonly excludeTaskIds?: Iterable<string>;
22
+ readonly candidateTaskIds?: Iterable<string>;
23
+ readonly selectionPolicy?: SupervisorSelectionPolicy;
24
+ readonly requireDisjointScopes?: boolean;
25
+ readonly disjointWithScopes?: Iterable<string>;
26
+ readonly limit?: number;
27
+ }
28
+ export interface RunQueuePlan<T extends TaskDependencyProjection = TaskDependencyProjection> {
29
+ readonly plannedOrder: readonly string[];
30
+ readonly ranked: readonly RunQueueRankedTask<T>[];
31
+ }
32
+ export interface RunQueueService {
33
+ readonly planReadyTasks: <T extends TaskDependencyProjection>(input: RunQueuePlanInput<T>) => RunQueuePlan<T>;
34
+ }
35
+ export declare const RUN_QUEUE_CAPABILITY_ID = "rig.scheduler.run-queue";
36
+ export declare const RUN_QUEUE: CapabilityId<RunQueueService>;
@@ -0,0 +1,13 @@
1
+ // @bun
2
+ // packages/contracts/src/capability-id.ts
3
+ function makeCapabilityId(id) {
4
+ return id;
5
+ }
6
+
7
+ // packages/contracts/src/run-queue.ts
8
+ var RUN_QUEUE_CAPABILITY_ID = "rig.scheduler.run-queue";
9
+ var RUN_QUEUE = makeCapabilityId(RUN_QUEUE_CAPABILITY_ID);
10
+ export {
11
+ RUN_QUEUE_CAPABILITY_ID,
12
+ RUN_QUEUE
13
+ };