@h-rig/contracts 0.0.6-alpha.15 → 0.0.6-alpha.151

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 (92) hide show
  1. package/dist/index.cjs +7456 -0
  2. package/dist/index.mjs +7415 -0
  3. package/dist/src/artifact.d.ts +13 -0
  4. package/dist/src/artifact.js +3 -0
  5. package/dist/src/baseSchemas.d.ts +63 -0
  6. package/dist/src/baseSchemas.js +6 -0
  7. package/dist/src/cli-output.d.ts +324 -0
  8. package/dist/src/cli-output.js +190 -0
  9. package/dist/src/config.d.ts +536 -0
  10. package/dist/src/config.js +1592 -162
  11. package/dist/src/conversation.d.ts +50 -0
  12. package/dist/src/conversation.js +3 -0
  13. package/dist/src/drift.d.ts +28 -0
  14. package/dist/src/drift.js +69 -0
  15. package/dist/src/editor.d.ts +25 -0
  16. package/dist/src/editor.js +3 -0
  17. package/dist/src/engine.d.ts +2789 -0
  18. package/dist/src/engine.js +127 -13
  19. package/dist/src/git.d.ts +144 -0
  20. package/dist/src/git.js +3 -0
  21. package/dist/src/graph.d.ts +323 -0
  22. package/dist/src/graph.js +124 -1
  23. package/dist/src/help-catalog.d.ts +34 -0
  24. package/dist/src/help-catalog.js +655 -0
  25. package/dist/src/index.d.ts +46 -0
  26. package/dist/src/index.js +4095 -1228
  27. package/dist/src/ipc.d.ts +248 -0
  28. package/dist/src/kernel.d.ts +221 -0
  29. package/dist/src/kernel.js +269 -0
  30. package/dist/src/keybindings.d.ts +71 -0
  31. package/dist/src/keybindings.js +3 -0
  32. package/dist/src/model.d.ts +77 -0
  33. package/dist/src/orchestration.d.ts +3695 -0
  34. package/dist/src/orchestration.js +3 -0
  35. package/dist/src/pi-session.d.ts +113 -0
  36. package/dist/src/pi-session.js +1 -0
  37. package/dist/src/planning.d.ts +64 -0
  38. package/dist/src/planning.js +90 -0
  39. package/dist/src/plugin-hooks.d.ts +51 -0
  40. package/dist/src/plugin-hooks.js +375 -0
  41. package/dist/src/plugin.d.ts +416 -0
  42. package/dist/src/plugin.js +332 -64
  43. package/dist/src/policy.d.ts +16 -0
  44. package/dist/src/policy.js +3 -0
  45. package/dist/src/project.d.ts +71 -0
  46. package/dist/src/project.js +3 -0
  47. package/dist/src/protocol-version.d.ts +21 -0
  48. package/dist/src/protocol-version.js +6 -0
  49. package/dist/src/provider.d.ts +105 -0
  50. package/dist/src/provider.js +3 -0
  51. package/dist/src/providerRuntime.d.ts +3949 -0
  52. package/dist/src/providerRuntime.js +3 -0
  53. package/dist/src/remote.d.ts +326 -0
  54. package/dist/src/remote.js +16 -10
  55. package/dist/src/review.d.ts +18 -0
  56. package/dist/src/review.js +3 -0
  57. package/dist/src/rig.d.ts +783 -0
  58. package/dist/src/rig.js +178 -15
  59. package/dist/src/rollups.d.ts +41 -0
  60. package/dist/src/rollups.js +70 -0
  61. package/dist/src/run-journal.d.ts +930 -0
  62. package/dist/src/run-journal.js +1641 -0
  63. package/dist/src/run-record.d.ts +45 -0
  64. package/dist/src/run-record.js +1 -0
  65. package/dist/src/run-session-journal.d.ts +93 -0
  66. package/dist/src/run-session-journal.js +1809 -0
  67. package/dist/src/run-status.d.ts +12 -0
  68. package/dist/src/run-status.js +38 -0
  69. package/dist/src/run-timeline.d.ts +10 -0
  70. package/dist/src/run-timeline.js +1499 -0
  71. package/dist/src/runtime.d.ts +103 -0
  72. package/dist/src/runtime.js +9 -4
  73. package/dist/src/server.d.ts +106 -0
  74. package/dist/src/server.js +3 -0
  75. package/dist/src/serviceFabric.d.ts +62 -0
  76. package/dist/src/serviceFabric.js +5 -2
  77. package/dist/src/stage.d.ts +245 -0
  78. package/dist/src/stage.js +169 -0
  79. package/dist/src/supervisor-journal.d.ts +205 -0
  80. package/dist/src/supervisor-journal.js +1246 -0
  81. package/dist/src/task-source.d.ts +37 -0
  82. package/dist/src/terminal.d.ts +130 -0
  83. package/dist/src/terminal.js +3 -0
  84. package/dist/src/validation.d.ts +14 -0
  85. package/dist/src/validation.js +3 -0
  86. package/dist/src/workflow-journal.d.ts +124 -0
  87. package/dist/src/workflow-journal.js +389 -0
  88. package/dist/src/workspace.d.ts +204 -0
  89. package/dist/src/workspace.js +5 -2
  90. package/dist/src/ws.d.ts +747 -0
  91. package/dist/src/ws.js +172 -14
  92. package/package.json +51 -4
@@ -1,7 +1,237 @@
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 ValidatorCategory = Schema.Literals([
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 Stage = StageDescriptor;
64
+ var StageContinueResult = Schema2.Struct({
65
+ kind: Schema2.Literal("continue"),
66
+ ctx: StageContext
67
+ });
68
+ var StageAllowResult = Schema2.Struct({
69
+ kind: Schema2.Literal("allow")
70
+ });
71
+ var StageBlockResult = Schema2.Struct({
72
+ kind: Schema2.Literal("block"),
73
+ reason: TrimmedNonEmptyString
74
+ });
75
+ var StageResult = Schema2.Union([
76
+ StageContinueResult,
77
+ StageAllowResult,
78
+ StageBlockResult
79
+ ]);
80
+ var StageWrapperDescriptor = Schema2.Struct({
81
+ id: TrimmedNonEmptyString,
82
+ priority: Schema2.Number.pipe(Schema2.withDecodingDefault(() => 0))
83
+ });
84
+ var StageMutationOp = Schema2.Literals(["insert", "remove", "replace", "wrap", "reorder"]);
85
+ var InsertStageMutation = Schema2.Struct({
86
+ op: Schema2.Literal("insert"),
87
+ stage: StageDescriptor,
88
+ contributedBy: Schema2.optional(TrimmedNonEmptyString)
89
+ });
90
+ var RemoveStageMutation = Schema2.Struct({
91
+ op: Schema2.Literal("remove"),
92
+ id: StageId,
93
+ contributedBy: Schema2.optional(TrimmedNonEmptyString)
94
+ });
95
+ var ReplaceStageMutation = Schema2.Struct({
96
+ op: Schema2.Literal("replace"),
97
+ id: StageId,
98
+ stage: StageDescriptor,
99
+ contributedBy: Schema2.optional(TrimmedNonEmptyString)
100
+ });
101
+ var WrapStageMutation = Schema2.Struct({
102
+ op: Schema2.Literal("wrap"),
103
+ id: StageId,
104
+ around: StageWrapperDescriptor,
105
+ contributedBy: Schema2.optional(TrimmedNonEmptyString)
106
+ });
107
+ var ReorderStageMutation = Schema2.Struct({
108
+ op: Schema2.Literal("reorder"),
109
+ id: StageId,
110
+ before: Schema2.optional(Schema2.Array(StageId)),
111
+ after: Schema2.optional(Schema2.Array(StageId)),
112
+ contributedBy: Schema2.optional(TrimmedNonEmptyString)
113
+ });
114
+ var StageMutation = Schema2.Union([
115
+ InsertStageMutation,
116
+ RemoveStageMutation,
117
+ ReplaceStageMutation,
118
+ WrapStageMutation,
119
+ ReorderStageMutation
120
+ ]);
121
+ var ResolutionGrantUse = Schema2.Struct({
122
+ kind: Schema2.Literal("kernel-replacement"),
123
+ target: TrimmedNonEmptyString,
124
+ pluginId: TrimmedNonEmptyString
125
+ });
126
+ var ResolutionRecordEntry = Schema2.Struct({
127
+ stageId: StageId,
128
+ contributedBy: TrimmedNonEmptyString,
129
+ removedBy: Schema2.optional(TrimmedNonEmptyString),
130
+ replacedBy: Schema2.optional(TrimmedNonEmptyString),
131
+ wrappedBy: Schema2.optional(Schema2.Array(TrimmedNonEmptyString)),
132
+ droppedAnchors: Schema2.optional(Schema2.Array(StageId)),
133
+ isProtected: Schema2.Boolean
134
+ });
135
+ var ResolvedPipeline = Schema2.Struct({
136
+ runId: Schema2.optional(RunId),
137
+ order: Schema2.Array(StageId),
138
+ record: Schema2.Array(ResolutionRecordEntry),
139
+ cycles: Schema2.Array(Schema2.Array(StageId)),
140
+ grantUses: Schema2.optional(Schema2.Array(ResolutionGrantUse)),
141
+ resolvedAt: Schema2.optional(IsoDateTime)
142
+ });
143
+ var StageRunOutcome = Schema2.Struct({
144
+ stageId: StageId,
145
+ result: StageResult,
146
+ startedAt: IsoDateTime,
147
+ finishedAt: IsoDateTime
148
+ });
149
+
150
+ // packages/contracts/src/kernel.ts
151
+ var CapabilityTag = Schema3.Literals([
152
+ "kernel",
153
+ "journal",
154
+ "stage-runner",
155
+ "transport",
156
+ "loader-policy"
157
+ ]);
158
+ var CapabilityProviderRef = Schema3.Struct({
159
+ capability: CapabilityTag,
160
+ pluginId: TrimmedNonEmptyString
161
+ });
162
+ var CapabilityReplacement = Schema3.Struct({
163
+ capability: CapabilityTag,
164
+ providerPluginId: TrimmedNonEmptyString
165
+ });
166
+ var CapabilityReplacementSpec = Schema3.Union([
167
+ CapabilityReplacement,
168
+ TrimmedNonEmptyString
169
+ ]);
170
+ var PluginMeta = Schema3.Struct({
171
+ id: TrimmedNonEmptyString,
172
+ version: TrimmedNonEmptyString,
173
+ provides: Schema3.Array(CapabilityTag),
174
+ requires: Schema3.optional(Schema3.Array(CapabilityTag)),
175
+ replaces: Schema3.optional(Schema3.Array(CapabilityReplacementSpec))
176
+ });
177
+ var LoadedPluginDescriptor = Schema3.Struct({
178
+ meta: PluginMeta,
179
+ provides: Schema3.Array(CapabilityTag),
180
+ contributes: Schema3.Unknown,
181
+ runtime: Schema3.Unknown
182
+ });
183
+ var KernelReplacementGrant = Schema3.Struct({
184
+ pluginId: TrimmedNonEmptyString,
185
+ grantedBy: Schema3.optional(TrimmedNonEmptyString),
186
+ reason: Schema3.optional(Schema3.String)
187
+ });
188
+ var CapabilityGrants = Schema3.Struct({
189
+ capabilityPrecedence: Schema3.optional(Schema3.Record(Schema3.String, Schema3.Array(TrimmedNonEmptyString))),
190
+ kernelReplacementGrants: Schema3.optional(Schema3.Array(KernelReplacementGrant))
191
+ });
192
+ var KernelBootErrorCode = Schema3.Literals([
193
+ "BootIncoherent",
194
+ "AmbiguousCapability",
195
+ "MissingCapability",
196
+ "KernelReplacementDenied",
197
+ "PipelineUnresolvable"
198
+ ]);
199
+ var KernelBootError = Schema3.Struct({
200
+ code: KernelBootErrorCode,
201
+ message: TrimmedNonEmptyString,
202
+ capability: Schema3.optional(CapabilityTag),
203
+ stageId: Schema3.optional(TrimmedNonEmptyString),
204
+ pluginIds: Schema3.optional(Schema3.Array(TrimmedNonEmptyString))
205
+ });
206
+ var CapabilityResolutionStatus = Schema3.Literals(["resolved", "ambiguous", "missing", "replaced"]);
207
+ var CapabilityResolutionRecord = Schema3.Struct({
208
+ capability: CapabilityTag,
209
+ status: CapabilityResolutionStatus,
210
+ selectedPluginId: Schema3.NullOr(TrimmedNonEmptyString),
211
+ candidatePluginIds: Schema3.Array(TrimmedNonEmptyString),
212
+ precedenceUsed: Schema3.Boolean,
213
+ replacementUsed: Schema3.optional(CapabilityReplacement),
214
+ error: Schema3.optional(Schema3.String)
215
+ });
216
+ var KernelResolutionRecord = Schema3.Struct({
217
+ resolvedAt: IsoDateTime,
218
+ capabilities: Schema3.Array(CapabilityResolutionRecord),
219
+ pipeline: Schema3.optional(ResolvedPipeline)
220
+ });
221
+ var BootResultDescriptor = Schema3.Struct({
222
+ kernelPluginId: TrimmedNonEmptyString,
223
+ pluginIds: Schema3.Array(TrimmedNonEmptyString),
224
+ resolution: KernelResolutionRecord
225
+ });
226
+ var JournalEvent = Schema3.Struct({
227
+ type: TrimmedNonEmptyString,
228
+ runId: Schema3.optional(RunId),
229
+ at: IsoDateTime,
230
+ payload: Schema3.Unknown
231
+ });
232
+
233
+ // packages/contracts/src/plugin.ts
234
+ var ValidatorCategory = Schema4.Literals([
5
235
  "boundary",
6
236
  "contract",
7
237
  "integration",
@@ -9,12 +239,12 @@ var ValidatorCategory = Schema.Literals([
9
239
  "external",
10
240
  "custom"
11
241
  ]);
12
- var ValidatorRegistration = Schema.Struct({
13
- id: Schema.String,
242
+ var ValidatorRegistration = Schema4.Struct({
243
+ id: Schema4.String,
14
244
  category: ValidatorCategory,
15
- description: Schema.optional(Schema.String)
245
+ description: Schema4.optional(Schema4.String)
16
246
  });
17
- var HookEvent = Schema.Literals([
247
+ var AgentSessionHookEvent = Schema4.Literals([
18
248
  "PreToolUse",
19
249
  "PostToolUse",
20
250
  "UserPromptSubmit",
@@ -22,67 +252,101 @@ var HookEvent = Schema.Literals([
22
252
  "SessionStart",
23
253
  "SessionEnd"
24
254
  ]);
25
- var HookMatcher = Schema.Union([
26
- Schema.Struct({ kind: Schema.Literal("all") }),
27
- Schema.Struct({ kind: Schema.Literal("tool"), name: Schema.String }),
28
- Schema.Struct({ kind: Schema.Literal("glob"), pattern: Schema.String })
255
+ var HookEvent = AgentSessionHookEvent;
256
+ var HookMatcher = Schema4.Union([
257
+ Schema4.Struct({ kind: Schema4.Literal("all") }),
258
+ Schema4.Struct({ kind: Schema4.Literal("tool"), name: Schema4.String }),
259
+ Schema4.Struct({ kind: Schema4.Literal("glob"), pattern: Schema4.String })
29
260
  ]);
30
- var HookRegistration = Schema.Struct({
31
- id: Schema.String,
32
- event: HookEvent,
261
+ var HookRegistration = Schema4.Struct({
262
+ id: Schema4.String,
263
+ event: AgentSessionHookEvent,
33
264
  matcher: HookMatcher,
34
- command: Schema.optional(Schema.String),
35
- description: Schema.optional(Schema.String)
36
- });
37
- var SkillRegistration = Schema.Struct({
38
- id: Schema.String,
39
- path: Schema.String,
40
- description: Schema.optional(Schema.String)
41
- });
42
- var RepoSourceRegistration = Schema.Struct({
43
- id: Schema.String,
44
- url: Schema.String,
45
- defaultPath: Schema.optional(Schema.String),
46
- description: Schema.optional(Schema.String),
47
- defaultBranch: Schema.optional(Schema.String),
48
- remoteEnvVar: Schema.optional(Schema.String),
49
- checkoutEnvVar: Schema.optional(Schema.String)
50
- });
51
- var AgentRoleRegistration = Schema.Struct({
52
- id: Schema.String,
53
- defaultModel: Schema.optional(Schema.String),
54
- description: Schema.optional(Schema.String)
55
- });
56
- var TaskFieldExtension = Schema.Struct({
57
- id: Schema.String,
58
- fieldName: Schema.String,
59
- schemaJson: Schema.String
60
- });
61
- var TaskSourceKind = Schema.String;
62
- var TaskSourceRegistration = Schema.Struct({
63
- id: Schema.String,
64
- kind: Schema.String,
65
- description: Schema.optional(Schema.String)
66
- });
67
- var CliCommandRegistration = Schema.Struct({
68
- id: Schema.String,
69
- command: Schema.String,
70
- description: Schema.optional(Schema.String)
71
- });
72
- var PluginContributes = Schema.Struct({
73
- validators: Schema.optional(Schema.Array(ValidatorRegistration)),
74
- hooks: Schema.optional(Schema.Array(HookRegistration)),
75
- skills: Schema.optional(Schema.Array(SkillRegistration)),
76
- repoSources: Schema.optional(Schema.Array(RepoSourceRegistration)),
77
- agentRoles: Schema.optional(Schema.Array(AgentRoleRegistration)),
78
- taskFieldSchemas: Schema.optional(Schema.Array(TaskFieldExtension)),
79
- taskSources: Schema.optional(Schema.Array(TaskSourceRegistration)),
80
- cliCommands: Schema.optional(Schema.Array(CliCommandRegistration))
81
- });
82
- var RigPlugin = Schema.Struct({
83
- name: Schema.String,
84
- version: Schema.String,
85
- contributes: Schema.optional(PluginContributes)
265
+ command: Schema4.optional(Schema4.String),
266
+ description: Schema4.optional(Schema4.String)
267
+ });
268
+ var SkillRegistration = Schema4.Struct({
269
+ id: Schema4.String,
270
+ path: Schema4.String,
271
+ description: Schema4.optional(Schema4.String)
272
+ });
273
+ var RepoSourceRegistration = Schema4.Struct({
274
+ id: Schema4.String,
275
+ url: Schema4.String,
276
+ defaultPath: Schema4.optional(Schema4.String),
277
+ description: Schema4.optional(Schema4.String),
278
+ defaultBranch: Schema4.optional(Schema4.String),
279
+ remoteEnvVar: Schema4.optional(Schema4.String),
280
+ checkoutEnvVar: Schema4.optional(Schema4.String)
281
+ });
282
+ var AgentRoleRegistration = Schema4.Struct({
283
+ id: Schema4.String,
284
+ defaultModel: Schema4.optional(Schema4.String),
285
+ description: Schema4.optional(Schema4.String)
286
+ });
287
+ var TaskFieldExtension = Schema4.Struct({
288
+ id: Schema4.String,
289
+ fieldName: Schema4.String,
290
+ schemaJson: Schema4.String
291
+ });
292
+ var TaskSourceKind = Schema4.String;
293
+ var TaskSourceRegistration = Schema4.Struct({
294
+ id: Schema4.String,
295
+ kind: Schema4.String,
296
+ description: Schema4.optional(Schema4.String)
297
+ });
298
+ var CliCommandRegistration = Schema4.Struct({
299
+ id: Schema4.String,
300
+ family: Schema4.optional(Schema4.String),
301
+ command: Schema4.optional(Schema4.String),
302
+ description: Schema4.optional(Schema4.String),
303
+ usage: Schema4.optional(Schema4.String),
304
+ aliases: Schema4.optional(Schema4.Array(Schema4.String)),
305
+ projectRequired: Schema4.optional(Schema4.Boolean)
306
+ });
307
+ var ProductCapabilityRegistration = Schema4.Struct({
308
+ id: Schema4.String,
309
+ title: Schema4.String,
310
+ description: Schema4.optional(Schema4.String),
311
+ commandId: Schema4.optional(Schema4.String),
312
+ panelId: Schema4.optional(Schema4.String)
313
+ });
314
+ var PanelRegistration = Schema4.Struct({
315
+ id: Schema4.String,
316
+ slot: Schema4.String,
317
+ title: Schema4.String,
318
+ capabilityId: Schema4.optional(Schema4.String),
319
+ badge: Schema4.optional(Schema4.String),
320
+ disabled: Schema4.optional(Schema4.Boolean),
321
+ description: Schema4.optional(Schema4.String)
322
+ });
323
+ var BlockerClassifierRegistration = Schema4.Struct({
324
+ id: Schema4.String,
325
+ description: Schema4.optional(Schema4.String),
326
+ priority: Schema4.optional(Schema4.Number)
327
+ });
328
+ var PluginContributes = Schema4.Struct({
329
+ validators: Schema4.optional(Schema4.Array(ValidatorRegistration)),
330
+ hooks: Schema4.optional(Schema4.Array(HookRegistration)),
331
+ skills: Schema4.optional(Schema4.Array(SkillRegistration)),
332
+ repoSources: Schema4.optional(Schema4.Array(RepoSourceRegistration)),
333
+ agentRoles: Schema4.optional(Schema4.Array(AgentRoleRegistration)),
334
+ taskFieldSchemas: Schema4.optional(Schema4.Array(TaskFieldExtension)),
335
+ taskSources: Schema4.optional(Schema4.Array(TaskSourceRegistration)),
336
+ cliCommands: Schema4.optional(Schema4.Array(CliCommandRegistration)),
337
+ stages: Schema4.optional(Schema4.Array(Stage)),
338
+ stageMutations: Schema4.optional(Schema4.Array(StageMutation)),
339
+ capabilities: Schema4.optional(Schema4.Array(ProductCapabilityRegistration)),
340
+ panels: Schema4.optional(Schema4.Array(PanelRegistration)),
341
+ blockerClassifiers: Schema4.optional(Schema4.Array(BlockerClassifierRegistration))
342
+ });
343
+ var RigPlugin = Schema4.Struct({
344
+ name: Schema4.String,
345
+ version: Schema4.String,
346
+ provides: Schema4.optional(Schema4.Array(CapabilityTag)),
347
+ requires: Schema4.optional(Schema4.Array(CapabilityTag)),
348
+ replaces: Schema4.optional(Schema4.Array(CapabilityReplacementSpec)),
349
+ contributes: Schema4.optional(PluginContributes)
86
350
  });
87
351
  export {
88
352
  ValidatorRegistration,
@@ -93,10 +357,14 @@ export {
93
357
  SkillRegistration,
94
358
  RigPlugin,
95
359
  RepoSourceRegistration,
360
+ ProductCapabilityRegistration,
96
361
  PluginContributes,
362
+ PanelRegistration,
97
363
  HookRegistration,
98
364
  HookMatcher,
99
365
  HookEvent,
100
366
  CliCommandRegistration,
367
+ BlockerClassifierRegistration,
368
+ AgentSessionHookEvent,
101
369
  AgentRoleRegistration
102
370
  };
@@ -0,0 +1,16 @@
1
+ import { Schema } from "effect";
2
+ export declare const PolicyDecision: Schema.Literals<readonly ["allow", "warn", "block"]>;
3
+ export type PolicyDecision = typeof PolicyDecision.Type;
4
+ export declare const PolicyMode: Schema.Literals<readonly ["off", "observe", "enforce"]>;
5
+ export type PolicyMode = typeof PolicyMode.Type;
6
+ export declare const PolicyDecisionSummary: Schema.Struct<{
7
+ readonly id: Schema.Trim;
8
+ readonly runId: Schema.brand<Schema.Trim, "RunId">;
9
+ readonly actionId: Schema.NullOr<Schema.brand<Schema.Trim, "ActionId">>;
10
+ readonly decision: Schema.Literals<readonly ["allow", "warn", "block"]>;
11
+ readonly mode: Schema.Literals<readonly ["off", "observe", "enforce"]>;
12
+ readonly matchedRules: Schema.$Array<Schema.Trim>;
13
+ readonly reason: Schema.String;
14
+ readonly createdAt: Schema.String;
15
+ }>;
16
+ export type PolicyDecisionSummary = typeof PolicyDecisionSummary.Type;
@@ -16,6 +16,9 @@ var WorkspaceId = makeEntityId("WorkspaceId");
16
16
  var GraphId = makeEntityId("GraphId");
17
17
  var TaskId = makeEntityId("TaskId");
18
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"));
19
22
  var EngineRuntimeId = makeEntityId("EngineRuntimeId");
20
23
  var ConversationId = makeEntityId("ConversationId");
21
24
  var ActionId = makeEntityId("ActionId");
@@ -0,0 +1,71 @@
1
+ import { Schema } from "effect";
2
+ export declare const ProjectSearchEntriesInput: Schema.Struct<{
3
+ readonly cwd: Schema.Trim;
4
+ readonly query: Schema.Trim;
5
+ readonly limit: Schema.Int;
6
+ }>;
7
+ export type ProjectSearchEntriesInput = typeof ProjectSearchEntriesInput.Type;
8
+ export declare const ProjectEntry: Schema.Struct<{
9
+ readonly path: Schema.Trim;
10
+ readonly kind: Schema.Literals<readonly ["file", "directory"]>;
11
+ readonly parentPath: Schema.optional<Schema.Trim>;
12
+ }>;
13
+ export type ProjectEntry = typeof ProjectEntry.Type;
14
+ export declare const ProjectSearchEntriesResult: Schema.Struct<{
15
+ readonly entries: Schema.$Array<Schema.Struct<{
16
+ readonly path: Schema.Trim;
17
+ readonly kind: Schema.Literals<readonly ["file", "directory"]>;
18
+ readonly parentPath: Schema.optional<Schema.Trim>;
19
+ }>>;
20
+ readonly truncated: Schema.Boolean;
21
+ }>;
22
+ export type ProjectSearchEntriesResult = typeof ProjectSearchEntriesResult.Type;
23
+ export declare const ProjectListDirectoryInput: Schema.Struct<{
24
+ readonly cwd: Schema.Trim;
25
+ readonly relativePath: Schema.Trim;
26
+ readonly limit: Schema.Int;
27
+ }>;
28
+ export type ProjectListDirectoryInput = typeof ProjectListDirectoryInput.Type;
29
+ export declare const ProjectDirectoryEntry: Schema.Struct<{
30
+ readonly name: Schema.Trim;
31
+ readonly relativePath: Schema.Trim;
32
+ readonly kind: Schema.Literals<readonly ["file", "directory"]>;
33
+ readonly sizeBytes: Schema.optional<Schema.Int>;
34
+ readonly modifiedAt: Schema.optional<Schema.String>;
35
+ }>;
36
+ export type ProjectDirectoryEntry = typeof ProjectDirectoryEntry.Type;
37
+ export declare const ProjectListDirectoryResult: Schema.Struct<{
38
+ readonly entries: Schema.$Array<Schema.Struct<{
39
+ readonly name: Schema.Trim;
40
+ readonly relativePath: Schema.Trim;
41
+ readonly kind: Schema.Literals<readonly ["file", "directory"]>;
42
+ readonly sizeBytes: Schema.optional<Schema.Int>;
43
+ readonly modifiedAt: Schema.optional<Schema.String>;
44
+ }>>;
45
+ readonly truncated: Schema.Boolean;
46
+ }>;
47
+ export type ProjectListDirectoryResult = typeof ProjectListDirectoryResult.Type;
48
+ export declare const ProjectWriteFileInput: Schema.Struct<{
49
+ readonly cwd: Schema.Trim;
50
+ readonly relativePath: Schema.Trim;
51
+ readonly contents: Schema.String;
52
+ }>;
53
+ export type ProjectWriteFileInput = typeof ProjectWriteFileInput.Type;
54
+ export declare const ProjectWriteFileResult: Schema.Struct<{
55
+ readonly relativePath: Schema.Trim;
56
+ }>;
57
+ export type ProjectWriteFileResult = typeof ProjectWriteFileResult.Type;
58
+ export declare const ProjectReadFileInput: Schema.Struct<{
59
+ readonly cwd: Schema.Trim;
60
+ readonly relativePath: Schema.Trim;
61
+ }>;
62
+ export type ProjectReadFileInput = typeof ProjectReadFileInput.Type;
63
+ export declare const ProjectReadFileResult: Schema.Struct<{
64
+ readonly relativePath: Schema.Trim;
65
+ readonly contents: Schema.String;
66
+ readonly truncated: Schema.Boolean;
67
+ readonly sizeBytes: Schema.Int;
68
+ readonly maxBytes: Schema.Int;
69
+ }>;
70
+ export type ProjectReadFileResult = typeof ProjectReadFileResult.Type;
71
+ export declare const PROJECT_READ_FILE_MAX_BYTES_VALUE: number;
@@ -16,6 +16,9 @@ var WorkspaceId = makeEntityId("WorkspaceId");
16
16
  var GraphId = makeEntityId("GraphId");
17
17
  var TaskId = makeEntityId("TaskId");
18
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"));
19
22
  var EngineRuntimeId = makeEntityId("EngineRuntimeId");
20
23
  var ConversationId = makeEntityId("ConversationId");
21
24
  var ActionId = makeEntityId("ActionId");
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Rig client–server protocol version.
3
+ *
4
+ * A single integer shared by the server (reported in the
5
+ * `GET /api/server/status` bootstrap payload as `protocolVersion`) and by
6
+ * clients that speak the HTTP/WS surface (the pi-rig bridge validates it at
7
+ * extension init and disables itself on mismatch instead of failing on a
8
+ * random later request).
9
+ *
10
+ * Bump rules:
11
+ * - Increment whenever a change to the server API surface would break an
12
+ * older client (removed/renamed routes, changed payload shapes, changed
13
+ * steering/event semantics).
14
+ * - Purely additive changes (new routes, new optional fields) do NOT require
15
+ * a bump.
16
+ *
17
+ * History:
18
+ * - 1: first explicit version (2026-06). Servers older than this do not
19
+ * report `protocolVersion` at all; clients treat the missing field as v0.
20
+ */
21
+ export declare const RIG_PROTOCOL_VERSION = 1;
@@ -0,0 +1,6 @@
1
+ // @bun
2
+ // packages/contracts/src/protocol-version.ts
3
+ var RIG_PROTOCOL_VERSION = 1;
4
+ export {
5
+ RIG_PROTOCOL_VERSION
6
+ };