@h-rig/contracts 0.0.6-alpha.132 → 0.0.6-alpha.134
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.
- package/dist/index.cjs +2206 -1386
- package/dist/index.mjs +2206 -1386
- package/dist/src/config.d.ts +156 -0
- package/dist/src/config.js +1566 -178
- package/dist/src/drift.d.ts +28 -0
- package/dist/src/drift.js +69 -0
- package/dist/src/engine.js +108 -0
- package/dist/src/graph.d.ts +284 -0
- package/dist/src/graph.js +121 -1
- package/dist/src/help-catalog.js +78 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.js +2206 -1386
- package/dist/src/kernel.d.ts +238 -0
- package/dist/src/kernel.js +284 -0
- package/dist/src/planning.d.ts +64 -0
- package/dist/src/planning.js +90 -0
- package/dist/src/plugin-hooks.js +318 -76
- package/dist/src/plugin.d.ts +92 -0
- package/dist/src/plugin.js +308 -64
- package/dist/src/rig.js +108 -0
- package/dist/src/rollups.d.ts +41 -0
- package/dist/src/rollups.js +70 -0
- package/dist/src/run-journal.d.ts +22 -21
- package/dist/src/run-journal.js +3 -1
- package/dist/src/run-session-journal.js +4 -2
- package/dist/src/stage.d.ts +245 -0
- package/dist/src/stage.js +169 -0
- package/dist/src/supervisor-journal.d.ts +205 -0
- package/dist/src/supervisor-journal.js +1246 -0
- package/dist/src/task-source.d.ts +9 -0
- package/dist/src/ws.js +108 -0
- package/package.json +45 -1
package/dist/src/plugin.js
CHANGED
|
@@ -1,7 +1,245 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
// packages/contracts/src/plugin.ts
|
|
3
|
+
import { Schema as Schema4 } from "effect";
|
|
4
|
+
|
|
5
|
+
// packages/contracts/src/kernel.ts
|
|
6
|
+
import { Schema as Schema3 } from "effect";
|
|
7
|
+
|
|
8
|
+
// packages/contracts/src/baseSchemas.ts
|
|
3
9
|
import { Schema } from "effect";
|
|
4
|
-
var
|
|
10
|
+
var TrimmedString = Schema.Trim;
|
|
11
|
+
var TrimmedNonEmptyString = TrimmedString.check(Schema.isNonEmpty());
|
|
12
|
+
var NonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
|
|
13
|
+
var PositiveInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));
|
|
14
|
+
var IsoDateTime = Schema.String;
|
|
15
|
+
var makeEntityId = (brand) => TrimmedNonEmptyString.pipe(Schema.brand(brand));
|
|
16
|
+
var ThreadId = makeEntityId("ThreadId");
|
|
17
|
+
var ProjectId = makeEntityId("ProjectId");
|
|
18
|
+
var WorkspaceId = makeEntityId("WorkspaceId");
|
|
19
|
+
var GraphId = makeEntityId("GraphId");
|
|
20
|
+
var TaskId = makeEntityId("TaskId");
|
|
21
|
+
var RunId = makeEntityId("RunId");
|
|
22
|
+
var SafePathSegment = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/)).pipe(Schema.brand("SafePathSegment"));
|
|
23
|
+
var SafeRunId = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/)).pipe(Schema.brand("SafeRunId"));
|
|
24
|
+
var SafeGitRefComponent = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/)).pipe(Schema.brand("SafeGitRefComponent"));
|
|
25
|
+
var EngineRuntimeId = makeEntityId("EngineRuntimeId");
|
|
26
|
+
var ConversationId = makeEntityId("ConversationId");
|
|
27
|
+
var ActionId = makeEntityId("ActionId");
|
|
28
|
+
var ArtifactId = makeEntityId("ArtifactId");
|
|
29
|
+
var WorktreeId = makeEntityId("WorktreeId");
|
|
30
|
+
var ValidationResultId = makeEntityId("ValidationResultId");
|
|
31
|
+
var ReviewResultId = makeEntityId("ReviewResultId");
|
|
32
|
+
var CommandId = makeEntityId("CommandId");
|
|
33
|
+
var EventId = makeEntityId("EventId");
|
|
34
|
+
var MessageId = makeEntityId("MessageId");
|
|
35
|
+
var TurnId = makeEntityId("TurnId");
|
|
36
|
+
var ProviderItemId = makeEntityId("ProviderItemId");
|
|
37
|
+
var RuntimeSessionId = makeEntityId("RuntimeSessionId");
|
|
38
|
+
var RuntimeItemId = makeEntityId("RuntimeItemId");
|
|
39
|
+
var RuntimeRequestId = makeEntityId("RuntimeRequestId");
|
|
40
|
+
var RuntimeTaskId = makeEntityId("RuntimeTaskId");
|
|
41
|
+
var ApprovalRequestId = makeEntityId("ApprovalRequestId");
|
|
42
|
+
var CheckpointRef = makeEntityId("CheckpointRef");
|
|
43
|
+
var RemoteEndpointId = makeEntityId("RemoteEndpointId");
|
|
44
|
+
|
|
45
|
+
// packages/contracts/src/stage.ts
|
|
46
|
+
import { Schema as Schema2 } from "effect";
|
|
47
|
+
var StageKind = Schema2.Literals(["transform", "gate", "observe"]);
|
|
48
|
+
var StageId = TrimmedNonEmptyString.pipe(Schema2.brand("StageId"));
|
|
49
|
+
var StageContext = Schema2.Struct({
|
|
50
|
+
runId: RunId,
|
|
51
|
+
taskId: Schema2.optional(Schema2.NullOr(TaskId)),
|
|
52
|
+
state: Schema2.Unknown,
|
|
53
|
+
metadata: Schema2.optional(Schema2.Record(Schema2.String, Schema2.Unknown))
|
|
54
|
+
});
|
|
55
|
+
var StageDescriptor = Schema2.Struct({
|
|
56
|
+
id: StageId,
|
|
57
|
+
kind: StageKind,
|
|
58
|
+
before: Schema2.optional(Schema2.Array(StageId)),
|
|
59
|
+
after: Schema2.optional(Schema2.Array(StageId)),
|
|
60
|
+
priority: Schema2.Number.pipe(Schema2.withDecodingDefault(() => 0)),
|
|
61
|
+
protected: Schema2.Boolean.pipe(Schema2.withDecodingDefault(() => false))
|
|
62
|
+
});
|
|
63
|
+
var StageContinueResult = Schema2.Struct({
|
|
64
|
+
kind: Schema2.Literal("continue"),
|
|
65
|
+
ctx: StageContext
|
|
66
|
+
});
|
|
67
|
+
var StageAllowResult = Schema2.Struct({
|
|
68
|
+
kind: Schema2.Literal("allow")
|
|
69
|
+
});
|
|
70
|
+
var StageBlockResult = Schema2.Struct({
|
|
71
|
+
kind: Schema2.Literal("block"),
|
|
72
|
+
reason: TrimmedNonEmptyString
|
|
73
|
+
});
|
|
74
|
+
var StageResult = Schema2.Union([
|
|
75
|
+
StageContinueResult,
|
|
76
|
+
StageAllowResult,
|
|
77
|
+
StageBlockResult
|
|
78
|
+
]);
|
|
79
|
+
var StageWrapperDescriptor = Schema2.Struct({
|
|
80
|
+
id: TrimmedNonEmptyString,
|
|
81
|
+
priority: Schema2.Number.pipe(Schema2.withDecodingDefault(() => 0))
|
|
82
|
+
});
|
|
83
|
+
var StageMutationOp = Schema2.Literals(["insert", "remove", "replace", "wrap", "reorder"]);
|
|
84
|
+
var InsertStageMutation = Schema2.Struct({
|
|
85
|
+
op: Schema2.Literal("insert"),
|
|
86
|
+
stage: StageDescriptor,
|
|
87
|
+
contributedBy: Schema2.optional(TrimmedNonEmptyString)
|
|
88
|
+
});
|
|
89
|
+
var RemoveStageMutation = Schema2.Struct({
|
|
90
|
+
op: Schema2.Literal("remove"),
|
|
91
|
+
id: StageId,
|
|
92
|
+
contributedBy: Schema2.optional(TrimmedNonEmptyString)
|
|
93
|
+
});
|
|
94
|
+
var ReplaceStageMutation = Schema2.Struct({
|
|
95
|
+
op: Schema2.Literal("replace"),
|
|
96
|
+
id: StageId,
|
|
97
|
+
stage: StageDescriptor,
|
|
98
|
+
contributedBy: Schema2.optional(TrimmedNonEmptyString)
|
|
99
|
+
});
|
|
100
|
+
var WrapStageMutation = Schema2.Struct({
|
|
101
|
+
op: Schema2.Literal("wrap"),
|
|
102
|
+
id: StageId,
|
|
103
|
+
around: StageWrapperDescriptor,
|
|
104
|
+
contributedBy: Schema2.optional(TrimmedNonEmptyString)
|
|
105
|
+
});
|
|
106
|
+
var ReorderStageMutation = Schema2.Struct({
|
|
107
|
+
op: Schema2.Literal("reorder"),
|
|
108
|
+
id: StageId,
|
|
109
|
+
before: Schema2.optional(Schema2.Array(StageId)),
|
|
110
|
+
after: Schema2.optional(Schema2.Array(StageId)),
|
|
111
|
+
contributedBy: Schema2.optional(TrimmedNonEmptyString)
|
|
112
|
+
});
|
|
113
|
+
var StageMutation = Schema2.Union([
|
|
114
|
+
InsertStageMutation,
|
|
115
|
+
RemoveStageMutation,
|
|
116
|
+
ReplaceStageMutation,
|
|
117
|
+
WrapStageMutation,
|
|
118
|
+
ReorderStageMutation
|
|
119
|
+
]);
|
|
120
|
+
var ResolutionGrantUse = Schema2.Struct({
|
|
121
|
+
kind: Schema2.Literals(["protected-stage", "kernel-replacement"]),
|
|
122
|
+
target: TrimmedNonEmptyString,
|
|
123
|
+
pluginId: TrimmedNonEmptyString
|
|
124
|
+
});
|
|
125
|
+
var ResolutionRecordEntry = Schema2.Struct({
|
|
126
|
+
stageId: StageId,
|
|
127
|
+
contributedBy: TrimmedNonEmptyString,
|
|
128
|
+
removedBy: Schema2.optional(TrimmedNonEmptyString),
|
|
129
|
+
replacedBy: Schema2.optional(TrimmedNonEmptyString),
|
|
130
|
+
wrappedBy: Schema2.optional(Schema2.Array(TrimmedNonEmptyString)),
|
|
131
|
+
droppedAnchors: Schema2.optional(Schema2.Array(StageId)),
|
|
132
|
+
isProtected: Schema2.Boolean
|
|
133
|
+
});
|
|
134
|
+
var ResolvedPipeline = Schema2.Struct({
|
|
135
|
+
runId: Schema2.optional(RunId),
|
|
136
|
+
order: Schema2.Array(StageId),
|
|
137
|
+
record: Schema2.Array(ResolutionRecordEntry),
|
|
138
|
+
cycles: Schema2.Array(Schema2.Array(StageId)),
|
|
139
|
+
grantUses: Schema2.optional(Schema2.Array(ResolutionGrantUse)),
|
|
140
|
+
resolvedAt: Schema2.optional(IsoDateTime)
|
|
141
|
+
});
|
|
142
|
+
var StageRunOutcome = Schema2.Struct({
|
|
143
|
+
stageId: StageId,
|
|
144
|
+
result: StageResult,
|
|
145
|
+
startedAt: IsoDateTime,
|
|
146
|
+
finishedAt: IsoDateTime
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// packages/contracts/src/kernel.ts
|
|
150
|
+
var CapabilityTag = Schema3.Literals([
|
|
151
|
+
"kernel",
|
|
152
|
+
"journal",
|
|
153
|
+
"stage-runner",
|
|
154
|
+
"transport",
|
|
155
|
+
"loader-policy"
|
|
156
|
+
]);
|
|
157
|
+
var CapabilityProviderRef = Schema3.Struct({
|
|
158
|
+
capability: CapabilityTag,
|
|
159
|
+
pluginId: TrimmedNonEmptyString
|
|
160
|
+
});
|
|
161
|
+
var CapabilityReplacement = Schema3.Struct({
|
|
162
|
+
capability: CapabilityTag,
|
|
163
|
+
providerPluginId: TrimmedNonEmptyString
|
|
164
|
+
});
|
|
165
|
+
var CapabilityReplacementSpec = Schema3.Union([
|
|
166
|
+
CapabilityReplacement,
|
|
167
|
+
TrimmedNonEmptyString
|
|
168
|
+
]);
|
|
169
|
+
var PluginMeta = Schema3.Struct({
|
|
170
|
+
id: TrimmedNonEmptyString,
|
|
171
|
+
version: TrimmedNonEmptyString,
|
|
172
|
+
provides: Schema3.Array(CapabilityTag),
|
|
173
|
+
requires: Schema3.optional(Schema3.Array(CapabilityTag)),
|
|
174
|
+
replaces: Schema3.optional(Schema3.Array(CapabilityReplacementSpec))
|
|
175
|
+
});
|
|
176
|
+
var LoadedPluginDescriptor = Schema3.Struct({
|
|
177
|
+
meta: PluginMeta,
|
|
178
|
+
provides: Schema3.Array(CapabilityTag),
|
|
179
|
+
contributes: Schema3.Unknown,
|
|
180
|
+
runtime: Schema3.Unknown
|
|
181
|
+
});
|
|
182
|
+
var ProtectedStageGrant = Schema3.Struct({
|
|
183
|
+
stageId: TrimmedNonEmptyString,
|
|
184
|
+
pluginId: TrimmedNonEmptyString,
|
|
185
|
+
operations: Schema3.Array(Schema3.Literals(["remove", "replace"])),
|
|
186
|
+
grantedBy: Schema3.optional(TrimmedNonEmptyString),
|
|
187
|
+
reason: Schema3.optional(Schema3.String)
|
|
188
|
+
});
|
|
189
|
+
var KernelReplacementGrant = Schema3.Struct({
|
|
190
|
+
pluginId: TrimmedNonEmptyString,
|
|
191
|
+
grantedBy: Schema3.optional(TrimmedNonEmptyString),
|
|
192
|
+
reason: Schema3.optional(Schema3.String)
|
|
193
|
+
});
|
|
194
|
+
var CapabilityGrants = Schema3.Struct({
|
|
195
|
+
capabilityPrecedence: Schema3.optional(Schema3.Record(Schema3.String, Schema3.Array(TrimmedNonEmptyString))),
|
|
196
|
+
protectedStageGrants: Schema3.optional(Schema3.Array(ProtectedStageGrant)),
|
|
197
|
+
kernelReplacementGrants: Schema3.optional(Schema3.Array(KernelReplacementGrant))
|
|
198
|
+
});
|
|
199
|
+
var KernelBootErrorCode = Schema3.Literals([
|
|
200
|
+
"BootIncoherent",
|
|
201
|
+
"AmbiguousCapability",
|
|
202
|
+
"MissingCapability",
|
|
203
|
+
"ProtectedStageViolation",
|
|
204
|
+
"KernelReplacementDenied",
|
|
205
|
+
"PipelineUnresolvable"
|
|
206
|
+
]);
|
|
207
|
+
var KernelBootError = Schema3.Struct({
|
|
208
|
+
code: KernelBootErrorCode,
|
|
209
|
+
message: TrimmedNonEmptyString,
|
|
210
|
+
capability: Schema3.optional(CapabilityTag),
|
|
211
|
+
stageId: Schema3.optional(TrimmedNonEmptyString),
|
|
212
|
+
pluginIds: Schema3.optional(Schema3.Array(TrimmedNonEmptyString))
|
|
213
|
+
});
|
|
214
|
+
var CapabilityResolutionStatus = Schema3.Literals(["resolved", "ambiguous", "missing", "replaced"]);
|
|
215
|
+
var CapabilityResolutionRecord = Schema3.Struct({
|
|
216
|
+
capability: CapabilityTag,
|
|
217
|
+
status: CapabilityResolutionStatus,
|
|
218
|
+
selectedPluginId: Schema3.NullOr(TrimmedNonEmptyString),
|
|
219
|
+
candidatePluginIds: Schema3.Array(TrimmedNonEmptyString),
|
|
220
|
+
precedenceUsed: Schema3.Boolean,
|
|
221
|
+
replacementUsed: Schema3.optional(CapabilityReplacement),
|
|
222
|
+
error: Schema3.optional(Schema3.String)
|
|
223
|
+
});
|
|
224
|
+
var KernelResolutionRecord = Schema3.Struct({
|
|
225
|
+
resolvedAt: IsoDateTime,
|
|
226
|
+
capabilities: Schema3.Array(CapabilityResolutionRecord),
|
|
227
|
+
pipeline: Schema3.optional(ResolvedPipeline)
|
|
228
|
+
});
|
|
229
|
+
var BootResultDescriptor = Schema3.Struct({
|
|
230
|
+
kernelPluginId: TrimmedNonEmptyString,
|
|
231
|
+
pluginIds: Schema3.Array(TrimmedNonEmptyString),
|
|
232
|
+
resolution: KernelResolutionRecord
|
|
233
|
+
});
|
|
234
|
+
var JournalEvent = Schema3.Struct({
|
|
235
|
+
type: TrimmedNonEmptyString,
|
|
236
|
+
runId: Schema3.optional(RunId),
|
|
237
|
+
at: IsoDateTime,
|
|
238
|
+
payload: Schema3.Unknown
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
// packages/contracts/src/plugin.ts
|
|
242
|
+
var ValidatorCategory = Schema4.Literals([
|
|
5
243
|
"boundary",
|
|
6
244
|
"contract",
|
|
7
245
|
"integration",
|
|
@@ -9,12 +247,12 @@ var ValidatorCategory = Schema.Literals([
|
|
|
9
247
|
"external",
|
|
10
248
|
"custom"
|
|
11
249
|
]);
|
|
12
|
-
var ValidatorRegistration =
|
|
13
|
-
id:
|
|
250
|
+
var ValidatorRegistration = Schema4.Struct({
|
|
251
|
+
id: Schema4.String,
|
|
14
252
|
category: ValidatorCategory,
|
|
15
|
-
description:
|
|
253
|
+
description: Schema4.optional(Schema4.String)
|
|
16
254
|
});
|
|
17
|
-
var
|
|
255
|
+
var AgentSessionHookEvent = Schema4.Literals([
|
|
18
256
|
"PreToolUse",
|
|
19
257
|
"PostToolUse",
|
|
20
258
|
"UserPromptSubmit",
|
|
@@ -22,67 +260,72 @@ var HookEvent = Schema.Literals([
|
|
|
22
260
|
"SessionStart",
|
|
23
261
|
"SessionEnd"
|
|
24
262
|
]);
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
263
|
+
var HookEvent = AgentSessionHookEvent;
|
|
264
|
+
var HookMatcher = Schema4.Union([
|
|
265
|
+
Schema4.Struct({ kind: Schema4.Literal("all") }),
|
|
266
|
+
Schema4.Struct({ kind: Schema4.Literal("tool"), name: Schema4.String }),
|
|
267
|
+
Schema4.Struct({ kind: Schema4.Literal("glob"), pattern: Schema4.String })
|
|
29
268
|
]);
|
|
30
|
-
var HookRegistration =
|
|
31
|
-
id:
|
|
32
|
-
event:
|
|
269
|
+
var HookRegistration = Schema4.Struct({
|
|
270
|
+
id: Schema4.String,
|
|
271
|
+
event: AgentSessionHookEvent,
|
|
33
272
|
matcher: HookMatcher,
|
|
34
|
-
command:
|
|
35
|
-
description:
|
|
36
|
-
});
|
|
37
|
-
var SkillRegistration =
|
|
38
|
-
id:
|
|
39
|
-
path:
|
|
40
|
-
description:
|
|
41
|
-
});
|
|
42
|
-
var RepoSourceRegistration =
|
|
43
|
-
id:
|
|
44
|
-
url:
|
|
45
|
-
defaultPath:
|
|
46
|
-
description:
|
|
47
|
-
defaultBranch:
|
|
48
|
-
remoteEnvVar:
|
|
49
|
-
checkoutEnvVar:
|
|
50
|
-
});
|
|
51
|
-
var AgentRoleRegistration =
|
|
52
|
-
id:
|
|
53
|
-
defaultModel:
|
|
54
|
-
description:
|
|
55
|
-
});
|
|
56
|
-
var TaskFieldExtension =
|
|
57
|
-
id:
|
|
58
|
-
fieldName:
|
|
59
|
-
schemaJson:
|
|
60
|
-
});
|
|
61
|
-
var TaskSourceKind =
|
|
62
|
-
var TaskSourceRegistration =
|
|
63
|
-
id:
|
|
64
|
-
kind:
|
|
65
|
-
description:
|
|
66
|
-
});
|
|
67
|
-
var CliCommandRegistration =
|
|
68
|
-
id:
|
|
69
|
-
command:
|
|
70
|
-
description:
|
|
71
|
-
});
|
|
72
|
-
var PluginContributes =
|
|
73
|
-
validators:
|
|
74
|
-
hooks:
|
|
75
|
-
skills:
|
|
76
|
-
repoSources:
|
|
77
|
-
agentRoles:
|
|
78
|
-
taskFieldSchemas:
|
|
79
|
-
taskSources:
|
|
80
|
-
cliCommands:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
273
|
+
command: Schema4.optional(Schema4.String),
|
|
274
|
+
description: Schema4.optional(Schema4.String)
|
|
275
|
+
});
|
|
276
|
+
var SkillRegistration = Schema4.Struct({
|
|
277
|
+
id: Schema4.String,
|
|
278
|
+
path: Schema4.String,
|
|
279
|
+
description: Schema4.optional(Schema4.String)
|
|
280
|
+
});
|
|
281
|
+
var RepoSourceRegistration = Schema4.Struct({
|
|
282
|
+
id: Schema4.String,
|
|
283
|
+
url: Schema4.String,
|
|
284
|
+
defaultPath: Schema4.optional(Schema4.String),
|
|
285
|
+
description: Schema4.optional(Schema4.String),
|
|
286
|
+
defaultBranch: Schema4.optional(Schema4.String),
|
|
287
|
+
remoteEnvVar: Schema4.optional(Schema4.String),
|
|
288
|
+
checkoutEnvVar: Schema4.optional(Schema4.String)
|
|
289
|
+
});
|
|
290
|
+
var AgentRoleRegistration = Schema4.Struct({
|
|
291
|
+
id: Schema4.String,
|
|
292
|
+
defaultModel: Schema4.optional(Schema4.String),
|
|
293
|
+
description: Schema4.optional(Schema4.String)
|
|
294
|
+
});
|
|
295
|
+
var TaskFieldExtension = Schema4.Struct({
|
|
296
|
+
id: Schema4.String,
|
|
297
|
+
fieldName: Schema4.String,
|
|
298
|
+
schemaJson: Schema4.String
|
|
299
|
+
});
|
|
300
|
+
var TaskSourceKind = Schema4.String;
|
|
301
|
+
var TaskSourceRegistration = Schema4.Struct({
|
|
302
|
+
id: Schema4.String,
|
|
303
|
+
kind: Schema4.String,
|
|
304
|
+
description: Schema4.optional(Schema4.String)
|
|
305
|
+
});
|
|
306
|
+
var CliCommandRegistration = Schema4.Struct({
|
|
307
|
+
id: Schema4.String,
|
|
308
|
+
command: Schema4.String,
|
|
309
|
+
description: Schema4.optional(Schema4.String)
|
|
310
|
+
});
|
|
311
|
+
var PluginContributes = Schema4.Struct({
|
|
312
|
+
validators: Schema4.optional(Schema4.Array(ValidatorRegistration)),
|
|
313
|
+
hooks: Schema4.optional(Schema4.Array(HookRegistration)),
|
|
314
|
+
skills: Schema4.optional(Schema4.Array(SkillRegistration)),
|
|
315
|
+
repoSources: Schema4.optional(Schema4.Array(RepoSourceRegistration)),
|
|
316
|
+
agentRoles: Schema4.optional(Schema4.Array(AgentRoleRegistration)),
|
|
317
|
+
taskFieldSchemas: Schema4.optional(Schema4.Array(TaskFieldExtension)),
|
|
318
|
+
taskSources: Schema4.optional(Schema4.Array(TaskSourceRegistration)),
|
|
319
|
+
cliCommands: Schema4.optional(Schema4.Array(CliCommandRegistration)),
|
|
320
|
+
stageMutations: Schema4.optional(Schema4.Array(StageMutation))
|
|
321
|
+
});
|
|
322
|
+
var RigPlugin = Schema4.Struct({
|
|
323
|
+
name: Schema4.String,
|
|
324
|
+
version: Schema4.String,
|
|
325
|
+
provides: Schema4.optional(Schema4.Array(CapabilityTag)),
|
|
326
|
+
requires: Schema4.optional(Schema4.Array(CapabilityTag)),
|
|
327
|
+
replaces: Schema4.optional(Schema4.Array(CapabilityReplacementSpec)),
|
|
328
|
+
contributes: Schema4.optional(PluginContributes)
|
|
86
329
|
});
|
|
87
330
|
export {
|
|
88
331
|
ValidatorRegistration,
|
|
@@ -98,5 +341,6 @@ export {
|
|
|
98
341
|
HookMatcher,
|
|
99
342
|
HookEvent,
|
|
100
343
|
CliCommandRegistration,
|
|
344
|
+
AgentSessionHookEvent,
|
|
101
345
|
AgentRoleRegistration
|
|
102
346
|
};
|
package/dist/src/rig.js
CHANGED
|
@@ -158,6 +158,114 @@ var QueueEntry = Schema4.Struct({
|
|
|
158
158
|
unblockCount: NonNegativeInt,
|
|
159
159
|
position: NonNegativeInt
|
|
160
160
|
});
|
|
161
|
+
var DependencyEdgeType = Schema4.Literals(["blocks", "parent-child", "related"]);
|
|
162
|
+
var DependencyEdge = Schema4.Struct({
|
|
163
|
+
fromTaskId: TaskId,
|
|
164
|
+
toTaskId: TaskId,
|
|
165
|
+
type: DependencyEdgeType
|
|
166
|
+
});
|
|
167
|
+
var BlockerClass = Schema4.Literals([
|
|
168
|
+
"not-blocked",
|
|
169
|
+
"task-blocked",
|
|
170
|
+
"human-decision",
|
|
171
|
+
"human-approval",
|
|
172
|
+
"external-input",
|
|
173
|
+
"unknown"
|
|
174
|
+
]);
|
|
175
|
+
var ActionRiskTier = Schema4.Literals(["t1-read", "t2-reversible", "t3-external", "t4-irreversible"]);
|
|
176
|
+
var BlockerClassification = Schema4.Struct({
|
|
177
|
+
taskId: TaskId,
|
|
178
|
+
blockerClass: BlockerClass,
|
|
179
|
+
actionRiskTier: Schema4.NullOr(ActionRiskTier),
|
|
180
|
+
rationale: Schema4.String,
|
|
181
|
+
source: Schema4.Literals(["elimination", "label", "status", "llm"]),
|
|
182
|
+
autoApplied: Schema4.Boolean
|
|
183
|
+
});
|
|
184
|
+
var DependencyNode = Schema4.Struct({
|
|
185
|
+
taskId: TaskId,
|
|
186
|
+
title: TrimmedNonEmptyString,
|
|
187
|
+
status: TaskStatus,
|
|
188
|
+
priority: Schema4.NullOr(PositiveInt),
|
|
189
|
+
assignee: Schema4.NullOr(TrimmedNonEmptyString),
|
|
190
|
+
blockedBy: Schema4.Array(TaskId),
|
|
191
|
+
blocks: Schema4.Array(TaskId),
|
|
192
|
+
blockingDepth: NonNegativeInt,
|
|
193
|
+
blockerClass: Schema4.NullOr(BlockerClass),
|
|
194
|
+
actionRiskTier: Schema4.NullOr(ActionRiskTier),
|
|
195
|
+
epicKey: Schema4.NullOr(TrimmedNonEmptyString),
|
|
196
|
+
groupKey: Schema4.optional(Schema4.NullOr(TrimmedNonEmptyString)),
|
|
197
|
+
externalId: Schema4.optional(Schema4.NullOr(TrimmedNonEmptyString)),
|
|
198
|
+
sourceIssueId: Schema4.optional(Schema4.NullOr(TrimmedNonEmptyString)),
|
|
199
|
+
scope: Schema4.optional(Schema4.Array(TrimmedNonEmptyString)),
|
|
200
|
+
validationKeys: Schema4.optional(Schema4.Array(TrimmedNonEmptyString))
|
|
201
|
+
});
|
|
202
|
+
var TaskGraphLane = Schema4.Struct({
|
|
203
|
+
key: TrimmedNonEmptyString,
|
|
204
|
+
label: TrimmedNonEmptyString,
|
|
205
|
+
rowIndex: NonNegativeInt,
|
|
206
|
+
x: Schema4.Number,
|
|
207
|
+
y: Schema4.Number,
|
|
208
|
+
width: NonNegativeInt,
|
|
209
|
+
height: NonNegativeInt,
|
|
210
|
+
color: Schema4.String,
|
|
211
|
+
taskCount: NonNegativeInt
|
|
212
|
+
});
|
|
213
|
+
var TaskGraphStage = Schema4.Struct({
|
|
214
|
+
index: NonNegativeInt,
|
|
215
|
+
label: TrimmedNonEmptyString,
|
|
216
|
+
x: Schema4.Number,
|
|
217
|
+
width: NonNegativeInt
|
|
218
|
+
});
|
|
219
|
+
var TaskGraphNode = Schema4.Struct({
|
|
220
|
+
id: TrimmedNonEmptyString,
|
|
221
|
+
taskId: TaskId,
|
|
222
|
+
task: Schema4.optional(TaskSummary),
|
|
223
|
+
rowKey: TrimmedNonEmptyString,
|
|
224
|
+
rowLabel: TrimmedNonEmptyString,
|
|
225
|
+
rowIndex: NonNegativeInt,
|
|
226
|
+
stage: NonNegativeInt,
|
|
227
|
+
x: Schema4.Number,
|
|
228
|
+
y: Schema4.Number,
|
|
229
|
+
width: NonNegativeInt,
|
|
230
|
+
height: NonNegativeInt,
|
|
231
|
+
color: Schema4.optional(Schema4.String),
|
|
232
|
+
taskCode: Schema4.optional(Schema4.NullOr(Schema4.String)),
|
|
233
|
+
strippedTitle: Schema4.optional(Schema4.String),
|
|
234
|
+
depsIn: Schema4.optional(NonNegativeInt),
|
|
235
|
+
depsOut: Schema4.optional(NonNegativeInt),
|
|
236
|
+
runCount: Schema4.optional(NonNegativeInt),
|
|
237
|
+
hasApprovals: Schema4.optional(Schema4.Boolean),
|
|
238
|
+
hasPendingUserInput: Schema4.optional(Schema4.Boolean),
|
|
239
|
+
hasRejectedReview: Schema4.optional(Schema4.Boolean),
|
|
240
|
+
hasFailedValidations: Schema4.optional(Schema4.Boolean),
|
|
241
|
+
artifactCount: Schema4.optional(NonNegativeInt)
|
|
242
|
+
});
|
|
243
|
+
var TaskGraphEdge = Schema4.Struct({
|
|
244
|
+
id: TrimmedNonEmptyString,
|
|
245
|
+
sourceId: TrimmedNonEmptyString,
|
|
246
|
+
targetId: TrimmedNonEmptyString,
|
|
247
|
+
color: Schema4.String,
|
|
248
|
+
kind: Schema4.Literals(["blocking", "parent-child"])
|
|
249
|
+
});
|
|
250
|
+
var TaskGraphLayout = Schema4.Struct({
|
|
251
|
+
lanes: Schema4.Array(TaskGraphLane),
|
|
252
|
+
stages: Schema4.Array(TaskGraphStage),
|
|
253
|
+
nodes: Schema4.Array(TaskGraphNode),
|
|
254
|
+
edges: Schema4.Array(TaskGraphEdge),
|
|
255
|
+
totalWidth: NonNegativeInt,
|
|
256
|
+
totalHeight: NonNegativeInt,
|
|
257
|
+
taskCount: NonNegativeInt
|
|
258
|
+
});
|
|
259
|
+
var DependencyGraphModel = Schema4.Struct({
|
|
260
|
+
graphId: GraphId,
|
|
261
|
+
nodes: Schema4.Array(DependencyNode),
|
|
262
|
+
edges: Schema4.Array(DependencyEdge),
|
|
263
|
+
layout: TaskGraphLayout,
|
|
264
|
+
cycles: Schema4.Array(Schema4.Array(TaskId)),
|
|
265
|
+
unresolvedRefs: Schema4.Array(TrimmedNonEmptyString),
|
|
266
|
+
degraded: Schema4.Boolean,
|
|
267
|
+
generatedAt: IsoDateTime
|
|
268
|
+
});
|
|
161
269
|
|
|
162
270
|
// packages/contracts/src/policy.ts
|
|
163
271
|
import { Schema as Schema5 } from "effect";
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
export declare const PercentComplete: Schema.Int;
|
|
3
|
+
export type PercentComplete = typeof PercentComplete.Type;
|
|
4
|
+
export declare const EpicRollup: Schema.Struct<{
|
|
5
|
+
readonly epicKey: Schema.Trim;
|
|
6
|
+
readonly total: Schema.Int;
|
|
7
|
+
readonly percentComplete: Schema.Int;
|
|
8
|
+
readonly blockedCount: Schema.Int;
|
|
9
|
+
readonly humanBlockedCount: Schema.Int;
|
|
10
|
+
readonly inFlightCount: Schema.Int;
|
|
11
|
+
readonly byStatus: Schema.$Record<Schema.String, Schema.Int>;
|
|
12
|
+
}>;
|
|
13
|
+
export type EpicRollup = typeof EpicRollup.Type;
|
|
14
|
+
export declare const AssigneeRollup: Schema.Struct<{
|
|
15
|
+
readonly assignee: Schema.Trim;
|
|
16
|
+
readonly openTaskCount: Schema.Int;
|
|
17
|
+
readonly inFlightRunCount: Schema.Int;
|
|
18
|
+
readonly prsAwaitingReview: Schema.Int;
|
|
19
|
+
readonly blockers: Schema.$Array<Schema.brand<Schema.Trim, "TaskId">>;
|
|
20
|
+
}>;
|
|
21
|
+
export type AssigneeRollup = typeof AssigneeRollup.Type;
|
|
22
|
+
export declare const WorkspaceRollups: Schema.Struct<{
|
|
23
|
+
readonly epics: Schema.$Array<Schema.Struct<{
|
|
24
|
+
readonly epicKey: Schema.Trim;
|
|
25
|
+
readonly total: Schema.Int;
|
|
26
|
+
readonly percentComplete: Schema.Int;
|
|
27
|
+
readonly blockedCount: Schema.Int;
|
|
28
|
+
readonly humanBlockedCount: Schema.Int;
|
|
29
|
+
readonly inFlightCount: Schema.Int;
|
|
30
|
+
readonly byStatus: Schema.$Record<Schema.String, Schema.Int>;
|
|
31
|
+
}>>;
|
|
32
|
+
readonly assignees: Schema.$Array<Schema.Struct<{
|
|
33
|
+
readonly assignee: Schema.Trim;
|
|
34
|
+
readonly openTaskCount: Schema.Int;
|
|
35
|
+
readonly inFlightRunCount: Schema.Int;
|
|
36
|
+
readonly prsAwaitingReview: Schema.Int;
|
|
37
|
+
readonly blockers: Schema.$Array<Schema.brand<Schema.Trim, "TaskId">>;
|
|
38
|
+
}>>;
|
|
39
|
+
readonly generatedAt: Schema.String;
|
|
40
|
+
}>;
|
|
41
|
+
export type WorkspaceRollups = typeof WorkspaceRollups.Type;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// packages/contracts/src/rollups.ts
|
|
3
|
+
import { Schema as Schema2 } 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/rollups.ts
|
|
43
|
+
var PercentComplete = NonNegativeInt.check(Schema2.isLessThanOrEqualTo(100));
|
|
44
|
+
var EpicRollup = Schema2.Struct({
|
|
45
|
+
epicKey: TrimmedNonEmptyString,
|
|
46
|
+
total: NonNegativeInt,
|
|
47
|
+
percentComplete: PercentComplete,
|
|
48
|
+
blockedCount: NonNegativeInt,
|
|
49
|
+
humanBlockedCount: NonNegativeInt,
|
|
50
|
+
inFlightCount: NonNegativeInt,
|
|
51
|
+
byStatus: Schema2.Record(Schema2.String, NonNegativeInt)
|
|
52
|
+
});
|
|
53
|
+
var AssigneeRollup = Schema2.Struct({
|
|
54
|
+
assignee: TrimmedNonEmptyString,
|
|
55
|
+
openTaskCount: NonNegativeInt,
|
|
56
|
+
inFlightRunCount: NonNegativeInt,
|
|
57
|
+
prsAwaitingReview: NonNegativeInt,
|
|
58
|
+
blockers: Schema2.Array(TaskId)
|
|
59
|
+
});
|
|
60
|
+
var WorkspaceRollups = Schema2.Struct({
|
|
61
|
+
epics: Schema2.Array(EpicRollup),
|
|
62
|
+
assignees: Schema2.Array(AssigneeRollup),
|
|
63
|
+
generatedAt: IsoDateTime
|
|
64
|
+
});
|
|
65
|
+
export {
|
|
66
|
+
WorkspaceRollups,
|
|
67
|
+
PercentComplete,
|
|
68
|
+
EpicRollup,
|
|
69
|
+
AssigneeRollup
|
|
70
|
+
};
|