@h-rig/contracts 0.0.6-alpha.16 → 0.0.6-alpha.161

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 (162) hide show
  1. package/dist/index.cjs +3280 -0
  2. package/dist/index.mjs +3239 -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/browser.d.ts +80 -0
  9. package/dist/src/browser.js +13 -0
  10. package/dist/src/capability-id.d.ts +22 -0
  11. package/dist/src/capability-id.js +8 -0
  12. package/dist/src/cli-output.d.ts +348 -0
  13. package/dist/src/cli-output.js +190 -0
  14. package/dist/src/cli-runner.d.ts +43 -0
  15. package/dist/src/cli-runner.js +13 -0
  16. package/dist/src/collab-session-viewer.d.ts +36 -0
  17. package/dist/src/collab-session-viewer.js +13 -0
  18. package/dist/src/config.d.ts +551 -0
  19. package/dist/src/config.js +765 -162
  20. package/dist/src/control-plane-types.d.ts +323 -0
  21. package/dist/src/control-plane-types.js +13 -0
  22. package/dist/src/conversation.d.ts +50 -0
  23. package/dist/src/conversation.js +3 -0
  24. package/dist/src/dependency-preflight.d.ts +43 -0
  25. package/dist/src/dependency-preflight.js +13 -0
  26. package/dist/src/doctor.d.ts +90 -0
  27. package/dist/src/doctor.js +13 -0
  28. package/dist/src/drift.d.ts +28 -0
  29. package/dist/src/drift.js +69 -0
  30. package/dist/src/editor.d.ts +25 -0
  31. package/dist/src/editor.js +3 -0
  32. package/dist/src/errors.d.ts +13 -0
  33. package/dist/src/errors.js +17 -0
  34. package/dist/src/git.d.ts +144 -0
  35. package/dist/src/git.js +3 -0
  36. package/dist/src/github.d.ts +146 -0
  37. package/dist/src/github.js +17 -0
  38. package/dist/src/graph.d.ts +360 -0
  39. package/dist/src/graph.js +137 -1
  40. package/dist/src/guard.d.ts +111 -0
  41. package/dist/src/guard.js +6 -0
  42. package/dist/src/harness-events.d.ts +8 -0
  43. package/dist/src/harness-events.js +1 -0
  44. package/dist/src/help-catalog.d.ts +41 -0
  45. package/dist/src/help-catalog.js +13 -0
  46. package/dist/src/host.d.ts +41 -0
  47. package/dist/src/host.js +13 -0
  48. package/dist/src/identity.d.ts +44 -0
  49. package/dist/src/identity.js +1 -0
  50. package/dist/src/index.d.ts +77 -0
  51. package/dist/src/index.js +2661 -3970
  52. package/dist/src/isolation.d.ts +213 -0
  53. package/dist/src/isolation.js +13 -0
  54. package/dist/src/kernel.d.ts +200 -0
  55. package/dist/src/kernel.js +261 -0
  56. package/dist/src/keybindings.d.ts +71 -0
  57. package/dist/src/keybindings.js +3 -0
  58. package/dist/src/layout.d.ts +49 -0
  59. package/dist/src/layout.js +10 -0
  60. package/dist/src/lifecycle-capabilities.d.ts +128 -0
  61. package/dist/src/lifecycle-capabilities.js +25 -0
  62. package/dist/src/managed-repos.d.ts +136 -0
  63. package/dist/src/managed-repos.js +17 -0
  64. package/dist/src/memory.d.ts +199 -0
  65. package/dist/src/memory.js +15 -0
  66. package/dist/src/model.d.ts +77 -0
  67. package/dist/src/notify.d.ts +46 -0
  68. package/dist/src/notify.js +13 -0
  69. package/dist/src/orchestration.d.ts +43 -0
  70. package/dist/src/orchestration.js +28 -961
  71. package/dist/src/panel-protocol.d.ts +17 -0
  72. package/dist/src/panel-protocol.js +10 -0
  73. package/dist/src/pi-session.d.ts +113 -0
  74. package/dist/src/pi-session.js +1 -0
  75. package/dist/src/planning.d.ts +64 -0
  76. package/dist/src/planning.js +90 -0
  77. package/dist/src/plugin-hooks.d.ts +51 -0
  78. package/dist/src/plugin-hooks.js +386 -0
  79. package/dist/src/plugin.d.ts +476 -0
  80. package/dist/src/plugin.js +346 -64
  81. package/dist/src/policy.d.ts +16 -0
  82. package/dist/src/policy.js +3 -0
  83. package/dist/src/project.d.ts +71 -0
  84. package/dist/src/project.js +3 -0
  85. package/dist/src/prompt.d.ts +29 -0
  86. package/dist/src/prompt.js +13 -0
  87. package/dist/src/protocol-version.d.ts +21 -0
  88. package/dist/src/protocol-version.js +6 -0
  89. package/dist/src/provider-instructions.d.ts +41 -0
  90. package/dist/src/provider-instructions.js +13 -0
  91. package/dist/src/provider.d.ts +105 -0
  92. package/dist/src/provider.js +4 -824
  93. package/dist/src/remote.d.ts +318 -0
  94. package/dist/src/remote.js +238 -1078
  95. package/dist/src/review.d.ts +18 -0
  96. package/dist/src/review.js +3 -0
  97. package/dist/src/rollups.d.ts +41 -0
  98. package/dist/src/rollups.js +70 -0
  99. package/dist/src/run-discovery.d.ts +79 -0
  100. package/dist/src/run-discovery.js +13 -0
  101. package/dist/src/run-dispatch.d.ts +34 -0
  102. package/dist/src/run-dispatch.js +13 -0
  103. package/dist/src/run-identity.d.ts +47 -0
  104. package/dist/src/run-identity.js +13 -0
  105. package/dist/src/run-journal.d.ts +694 -0
  106. package/dist/src/run-journal.js +569 -0
  107. package/dist/src/run-read-model.d.ts +234 -0
  108. package/dist/src/run-read-model.js +13 -0
  109. package/dist/src/run-record.d.ts +45 -0
  110. package/dist/src/run-record.js +1 -0
  111. package/dist/src/run-registry-backbone.d.ts +56 -0
  112. package/dist/src/run-registry-backbone.js +13 -0
  113. package/dist/src/run-session-journal.d.ts +69 -0
  114. package/dist/src/run-session-journal.js +78 -0
  115. package/dist/src/run-status.d.ts +10 -0
  116. package/dist/src/run-status.js +27 -0
  117. package/dist/src/run-timeline.d.ts +7 -0
  118. package/dist/src/run-timeline.js +1 -0
  119. package/dist/src/runtime-task-context.d.ts +82 -0
  120. package/dist/src/runtime-task-context.js +1 -0
  121. package/dist/src/runtime.d.ts +103 -0
  122. package/dist/src/runtime.js +73 -906
  123. package/dist/src/session-asset-materializer.d.ts +35 -0
  124. package/dist/src/session-asset-materializer.js +13 -0
  125. package/dist/src/setup.d.ts +47 -0
  126. package/dist/src/setup.js +13 -0
  127. package/dist/src/stage.d.ts +245 -0
  128. package/dist/src/stage.js +169 -0
  129. package/dist/src/supervisor-journal.d.ts +204 -0
  130. package/dist/src/supervisor-journal.js +334 -0
  131. package/dist/src/task-data.d.ts +239 -0
  132. package/dist/src/task-data.js +13 -0
  133. package/dist/src/task-graph-primitives.d.ts +47 -0
  134. package/dist/src/task-graph-primitives.js +1 -0
  135. package/dist/src/task-source.d.ts +102 -0
  136. package/dist/src/task-source.js +12 -0
  137. package/dist/src/task-state-metadata.d.ts +21 -0
  138. package/dist/src/task-state-metadata.js +1 -0
  139. package/dist/src/terminal.d.ts +130 -0
  140. package/dist/src/terminal.js +3 -0
  141. package/dist/src/tool-materializer.d.ts +36 -0
  142. package/dist/src/tool-materializer.js +13 -0
  143. package/dist/src/tool-registry.d.ts +3 -0
  144. package/dist/src/tool-registry.js +58 -0
  145. package/dist/src/toolchain-sources.d.ts +54 -0
  146. package/dist/src/toolchain-sources.js +17 -0
  147. package/dist/src/validation.d.ts +14 -0
  148. package/dist/src/validation.js +3 -0
  149. package/dist/src/workflow-journal.d.ts +92 -0
  150. package/dist/src/workflow-journal.js +18 -0
  151. package/dist/src/workspace-config.d.ts +18 -0
  152. package/dist/src/workspace-config.js +13 -0
  153. package/dist/src/workspace.d.ts +204 -0
  154. package/dist/src/workspace.js +76 -911
  155. package/package.json +51 -4
  156. package/dist/src/engine.js +0 -2278
  157. package/dist/src/providerRuntime.js +0 -1630
  158. package/dist/src/rig.js +0 -2374
  159. package/dist/src/server.js +0 -1053
  160. package/dist/src/serviceFabric.js +0 -1066
  161. package/dist/src/ws.js +0 -2968
  162. /package/dist/src/{ipc.js → agent-roles.js} +0 -0
@@ -0,0 +1,360 @@
1
+ import { Schema } from "effect";
2
+ import type { CapabilityId } from "./capability-id";
3
+ export declare const TaskStatus: Schema.Literals<readonly ["draft", "open", "ready", "queued", "running", "in_progress", "under_review", "blocked", "unknown", "completed", "failed", "cancelled", "closed"]>;
4
+ export type TaskStatus = typeof TaskStatus.Type;
5
+ export declare const GraphSummary: Schema.Struct<{
6
+ readonly id: Schema.brand<Schema.Trim, "GraphId">;
7
+ readonly workspaceId: Schema.brand<Schema.Trim, "WorkspaceId">;
8
+ readonly title: Schema.Trim;
9
+ readonly description: Schema.NullOr<Schema.String>;
10
+ readonly createdAt: Schema.String;
11
+ readonly updatedAt: Schema.String;
12
+ }>;
13
+ export type GraphSummary = typeof GraphSummary.Type;
14
+ export declare const TaskSummary: Schema.Struct<{
15
+ readonly id: Schema.brand<Schema.Trim, "TaskId">;
16
+ readonly workspaceId: Schema.brand<Schema.Trim, "WorkspaceId">;
17
+ readonly graphId: Schema.NullOr<Schema.brand<Schema.Trim, "GraphId">>;
18
+ readonly externalId: Schema.NullOr<Schema.Trim>;
19
+ readonly title: Schema.Trim;
20
+ readonly description: Schema.String;
21
+ readonly status: Schema.Literals<readonly ["draft", "open", "ready", "queued", "running", "in_progress", "under_review", "blocked", "unknown", "completed", "failed", "cancelled", "closed"]>;
22
+ readonly priority: Schema.NullOr<Schema.Int>;
23
+ readonly role: Schema.NullOr<Schema.Trim>;
24
+ readonly scope: Schema.$Array<Schema.Trim>;
25
+ readonly validationKeys: Schema.$Array<Schema.Trim>;
26
+ readonly sourceIssueId: Schema.optional<Schema.NullOr<Schema.Trim>>;
27
+ readonly dependencies: Schema.optional<Schema.$Array<Schema.Trim>>;
28
+ readonly parentChildDeps: Schema.optional<Schema.$Array<Schema.Trim>>;
29
+ readonly metadata: Schema.Unknown;
30
+ readonly createdAt: Schema.String;
31
+ readonly updatedAt: Schema.String;
32
+ }>;
33
+ export type TaskSummary = typeof TaskSummary.Type;
34
+ export declare const QueueEntry: Schema.Struct<{
35
+ readonly taskId: Schema.brand<Schema.Trim, "TaskId">;
36
+ readonly score: Schema.Int;
37
+ readonly unblockCount: Schema.Int;
38
+ readonly position: Schema.Int;
39
+ }>;
40
+ export type QueueEntry = typeof QueueEntry.Type;
41
+ export declare const DependencyEdgeType: Schema.Literals<readonly ["blocks", "parent-child", "related"]>;
42
+ export type DependencyEdgeType = typeof DependencyEdgeType.Type;
43
+ export declare const DependencyEdge: Schema.Struct<{
44
+ readonly fromTaskId: Schema.brand<Schema.Trim, "TaskId">;
45
+ readonly toTaskId: Schema.brand<Schema.Trim, "TaskId">;
46
+ readonly type: Schema.Literals<readonly ["blocks", "parent-child", "related"]>;
47
+ }>;
48
+ export type DependencyEdge = typeof DependencyEdge.Type;
49
+ export declare const BlockerClass: Schema.Literals<readonly ["not-blocked", "task-blocked", "human-decision", "human-approval", "external-input", "unknown"]>;
50
+ export type BlockerClass = typeof BlockerClass.Type;
51
+ export declare const ActionRiskTier: Schema.Literals<readonly ["t1-read", "t2-reversible", "t3-external", "t4-irreversible"]>;
52
+ export type ActionRiskTier = typeof ActionRiskTier.Type;
53
+ export declare const BlockerClassification: Schema.Struct<{
54
+ readonly taskId: Schema.brand<Schema.Trim, "TaskId">;
55
+ readonly blockerClass: Schema.Literals<readonly ["not-blocked", "task-blocked", "human-decision", "human-approval", "external-input", "unknown"]>;
56
+ readonly actionRiskTier: Schema.NullOr<Schema.Literals<readonly ["t1-read", "t2-reversible", "t3-external", "t4-irreversible"]>>;
57
+ readonly rationale: Schema.String;
58
+ readonly source: Schema.Literals<readonly ["elimination", "label", "status", "llm"]>;
59
+ readonly autoApplied: Schema.Boolean;
60
+ }>;
61
+ export type BlockerClassification = typeof BlockerClassification.Type;
62
+ export declare const DependencyNode: Schema.Struct<{
63
+ readonly taskId: Schema.brand<Schema.Trim, "TaskId">;
64
+ readonly title: Schema.Trim;
65
+ readonly status: Schema.Literals<readonly ["draft", "open", "ready", "queued", "running", "in_progress", "under_review", "blocked", "unknown", "completed", "failed", "cancelled", "closed"]>;
66
+ readonly priority: Schema.NullOr<Schema.Int>;
67
+ readonly assignee: Schema.NullOr<Schema.Trim>;
68
+ readonly blockedBy: Schema.$Array<Schema.brand<Schema.Trim, "TaskId">>;
69
+ readonly blocks: Schema.$Array<Schema.brand<Schema.Trim, "TaskId">>;
70
+ readonly blockingDepth: Schema.Int;
71
+ readonly blockerClass: Schema.NullOr<Schema.Literals<readonly ["not-blocked", "task-blocked", "human-decision", "human-approval", "external-input", "unknown"]>>;
72
+ readonly actionRiskTier: Schema.NullOr<Schema.Literals<readonly ["t1-read", "t2-reversible", "t3-external", "t4-irreversible"]>>;
73
+ readonly epicKey: Schema.NullOr<Schema.Trim>;
74
+ readonly groupKey: Schema.optional<Schema.NullOr<Schema.Trim>>;
75
+ readonly externalId: Schema.optional<Schema.NullOr<Schema.Trim>>;
76
+ readonly sourceIssueId: Schema.optional<Schema.NullOr<Schema.Trim>>;
77
+ readonly scope: Schema.optional<Schema.$Array<Schema.Trim>>;
78
+ readonly validationKeys: Schema.optional<Schema.$Array<Schema.Trim>>;
79
+ }>;
80
+ export type DependencyNode = typeof DependencyNode.Type;
81
+ export declare const TaskGraphLane: Schema.Struct<{
82
+ readonly key: Schema.Trim;
83
+ readonly label: Schema.Trim;
84
+ readonly rowIndex: Schema.Int;
85
+ readonly x: Schema.Number;
86
+ readonly y: Schema.Number;
87
+ readonly width: Schema.Int;
88
+ readonly height: Schema.Int;
89
+ readonly color: Schema.String;
90
+ readonly taskCount: Schema.Int;
91
+ }>;
92
+ export type TaskGraphLane = typeof TaskGraphLane.Type;
93
+ export declare const TaskGraphStage: Schema.Struct<{
94
+ readonly index: Schema.Int;
95
+ readonly label: Schema.Trim;
96
+ readonly x: Schema.Number;
97
+ readonly width: Schema.Int;
98
+ }>;
99
+ export type TaskGraphStage = typeof TaskGraphStage.Type;
100
+ export declare const TaskGraphNode: Schema.Struct<{
101
+ readonly id: Schema.Trim;
102
+ readonly taskId: Schema.brand<Schema.Trim, "TaskId">;
103
+ readonly task: Schema.optional<Schema.Struct<{
104
+ readonly id: Schema.brand<Schema.Trim, "TaskId">;
105
+ readonly workspaceId: Schema.brand<Schema.Trim, "WorkspaceId">;
106
+ readonly graphId: Schema.NullOr<Schema.brand<Schema.Trim, "GraphId">>;
107
+ readonly externalId: Schema.NullOr<Schema.Trim>;
108
+ readonly title: Schema.Trim;
109
+ readonly description: Schema.String;
110
+ readonly status: Schema.Literals<readonly ["draft", "open", "ready", "queued", "running", "in_progress", "under_review", "blocked", "unknown", "completed", "failed", "cancelled", "closed"]>;
111
+ readonly priority: Schema.NullOr<Schema.Int>;
112
+ readonly role: Schema.NullOr<Schema.Trim>;
113
+ readonly scope: Schema.$Array<Schema.Trim>;
114
+ readonly validationKeys: Schema.$Array<Schema.Trim>;
115
+ readonly sourceIssueId: Schema.optional<Schema.NullOr<Schema.Trim>>;
116
+ readonly dependencies: Schema.optional<Schema.$Array<Schema.Trim>>;
117
+ readonly parentChildDeps: Schema.optional<Schema.$Array<Schema.Trim>>;
118
+ readonly metadata: Schema.Unknown;
119
+ readonly createdAt: Schema.String;
120
+ readonly updatedAt: Schema.String;
121
+ }>>;
122
+ readonly rowKey: Schema.Trim;
123
+ readonly rowLabel: Schema.Trim;
124
+ readonly rowIndex: Schema.Int;
125
+ readonly stage: Schema.Int;
126
+ readonly x: Schema.Number;
127
+ readonly y: Schema.Number;
128
+ readonly width: Schema.Int;
129
+ readonly height: Schema.Int;
130
+ readonly color: Schema.optional<Schema.String>;
131
+ readonly taskCode: Schema.optional<Schema.NullOr<Schema.String>>;
132
+ readonly strippedTitle: Schema.optional<Schema.String>;
133
+ readonly depsIn: Schema.optional<Schema.Int>;
134
+ readonly depsOut: Schema.optional<Schema.Int>;
135
+ readonly runCount: Schema.optional<Schema.Int>;
136
+ readonly hasApprovals: Schema.optional<Schema.Boolean>;
137
+ readonly hasPendingUserInput: Schema.optional<Schema.Boolean>;
138
+ readonly hasRejectedReview: Schema.optional<Schema.Boolean>;
139
+ readonly hasFailedValidations: Schema.optional<Schema.Boolean>;
140
+ readonly artifactCount: Schema.optional<Schema.Int>;
141
+ }>;
142
+ export type TaskGraphNode = typeof TaskGraphNode.Type;
143
+ export declare const TaskGraphEdge: Schema.Struct<{
144
+ readonly id: Schema.Trim;
145
+ readonly sourceId: Schema.Trim;
146
+ readonly targetId: Schema.Trim;
147
+ readonly color: Schema.String;
148
+ readonly kind: Schema.Literals<readonly ["blocking", "parent-child"]>;
149
+ }>;
150
+ export type TaskGraphEdge = typeof TaskGraphEdge.Type;
151
+ export declare const TaskGraphLayout: Schema.Struct<{
152
+ readonly lanes: Schema.$Array<Schema.Struct<{
153
+ readonly key: Schema.Trim;
154
+ readonly label: Schema.Trim;
155
+ readonly rowIndex: Schema.Int;
156
+ readonly x: Schema.Number;
157
+ readonly y: Schema.Number;
158
+ readonly width: Schema.Int;
159
+ readonly height: Schema.Int;
160
+ readonly color: Schema.String;
161
+ readonly taskCount: Schema.Int;
162
+ }>>;
163
+ readonly stages: Schema.$Array<Schema.Struct<{
164
+ readonly index: Schema.Int;
165
+ readonly label: Schema.Trim;
166
+ readonly x: Schema.Number;
167
+ readonly width: Schema.Int;
168
+ }>>;
169
+ readonly nodes: Schema.$Array<Schema.Struct<{
170
+ readonly id: Schema.Trim;
171
+ readonly taskId: Schema.brand<Schema.Trim, "TaskId">;
172
+ readonly task: Schema.optional<Schema.Struct<{
173
+ readonly id: Schema.brand<Schema.Trim, "TaskId">;
174
+ readonly workspaceId: Schema.brand<Schema.Trim, "WorkspaceId">;
175
+ readonly graphId: Schema.NullOr<Schema.brand<Schema.Trim, "GraphId">>;
176
+ readonly externalId: Schema.NullOr<Schema.Trim>;
177
+ readonly title: Schema.Trim;
178
+ readonly description: Schema.String;
179
+ readonly status: Schema.Literals<readonly ["draft", "open", "ready", "queued", "running", "in_progress", "under_review", "blocked", "unknown", "completed", "failed", "cancelled", "closed"]>;
180
+ readonly priority: Schema.NullOr<Schema.Int>;
181
+ readonly role: Schema.NullOr<Schema.Trim>;
182
+ readonly scope: Schema.$Array<Schema.Trim>;
183
+ readonly validationKeys: Schema.$Array<Schema.Trim>;
184
+ readonly sourceIssueId: Schema.optional<Schema.NullOr<Schema.Trim>>;
185
+ readonly dependencies: Schema.optional<Schema.$Array<Schema.Trim>>;
186
+ readonly parentChildDeps: Schema.optional<Schema.$Array<Schema.Trim>>;
187
+ readonly metadata: Schema.Unknown;
188
+ readonly createdAt: Schema.String;
189
+ readonly updatedAt: Schema.String;
190
+ }>>;
191
+ readonly rowKey: Schema.Trim;
192
+ readonly rowLabel: Schema.Trim;
193
+ readonly rowIndex: Schema.Int;
194
+ readonly stage: Schema.Int;
195
+ readonly x: Schema.Number;
196
+ readonly y: Schema.Number;
197
+ readonly width: Schema.Int;
198
+ readonly height: Schema.Int;
199
+ readonly color: Schema.optional<Schema.String>;
200
+ readonly taskCode: Schema.optional<Schema.NullOr<Schema.String>>;
201
+ readonly strippedTitle: Schema.optional<Schema.String>;
202
+ readonly depsIn: Schema.optional<Schema.Int>;
203
+ readonly depsOut: Schema.optional<Schema.Int>;
204
+ readonly runCount: Schema.optional<Schema.Int>;
205
+ readonly hasApprovals: Schema.optional<Schema.Boolean>;
206
+ readonly hasPendingUserInput: Schema.optional<Schema.Boolean>;
207
+ readonly hasRejectedReview: Schema.optional<Schema.Boolean>;
208
+ readonly hasFailedValidations: Schema.optional<Schema.Boolean>;
209
+ readonly artifactCount: Schema.optional<Schema.Int>;
210
+ }>>;
211
+ readonly edges: Schema.$Array<Schema.Struct<{
212
+ readonly id: Schema.Trim;
213
+ readonly sourceId: Schema.Trim;
214
+ readonly targetId: Schema.Trim;
215
+ readonly color: Schema.String;
216
+ readonly kind: Schema.Literals<readonly ["blocking", "parent-child"]>;
217
+ }>>;
218
+ readonly totalWidth: Schema.Int;
219
+ readonly totalHeight: Schema.Int;
220
+ readonly taskCount: Schema.Int;
221
+ }>;
222
+ export type TaskGraphLayout = typeof TaskGraphLayout.Type;
223
+ export declare const DependencyGraphModel: Schema.Struct<{
224
+ readonly graphId: Schema.brand<Schema.Trim, "GraphId">;
225
+ readonly nodes: Schema.$Array<Schema.Struct<{
226
+ readonly taskId: Schema.brand<Schema.Trim, "TaskId">;
227
+ readonly title: Schema.Trim;
228
+ readonly status: Schema.Literals<readonly ["draft", "open", "ready", "queued", "running", "in_progress", "under_review", "blocked", "unknown", "completed", "failed", "cancelled", "closed"]>;
229
+ readonly priority: Schema.NullOr<Schema.Int>;
230
+ readonly assignee: Schema.NullOr<Schema.Trim>;
231
+ readonly blockedBy: Schema.$Array<Schema.brand<Schema.Trim, "TaskId">>;
232
+ readonly blocks: Schema.$Array<Schema.brand<Schema.Trim, "TaskId">>;
233
+ readonly blockingDepth: Schema.Int;
234
+ readonly blockerClass: Schema.NullOr<Schema.Literals<readonly ["not-blocked", "task-blocked", "human-decision", "human-approval", "external-input", "unknown"]>>;
235
+ readonly actionRiskTier: Schema.NullOr<Schema.Literals<readonly ["t1-read", "t2-reversible", "t3-external", "t4-irreversible"]>>;
236
+ readonly epicKey: Schema.NullOr<Schema.Trim>;
237
+ readonly groupKey: Schema.optional<Schema.NullOr<Schema.Trim>>;
238
+ readonly externalId: Schema.optional<Schema.NullOr<Schema.Trim>>;
239
+ readonly sourceIssueId: Schema.optional<Schema.NullOr<Schema.Trim>>;
240
+ readonly scope: Schema.optional<Schema.$Array<Schema.Trim>>;
241
+ readonly validationKeys: Schema.optional<Schema.$Array<Schema.Trim>>;
242
+ }>>;
243
+ readonly edges: Schema.$Array<Schema.Struct<{
244
+ readonly fromTaskId: Schema.brand<Schema.Trim, "TaskId">;
245
+ readonly toTaskId: Schema.brand<Schema.Trim, "TaskId">;
246
+ readonly type: Schema.Literals<readonly ["blocks", "parent-child", "related"]>;
247
+ }>>;
248
+ readonly layout: Schema.Struct<{
249
+ readonly lanes: Schema.$Array<Schema.Struct<{
250
+ readonly key: Schema.Trim;
251
+ readonly label: Schema.Trim;
252
+ readonly rowIndex: Schema.Int;
253
+ readonly x: Schema.Number;
254
+ readonly y: Schema.Number;
255
+ readonly width: Schema.Int;
256
+ readonly height: Schema.Int;
257
+ readonly color: Schema.String;
258
+ readonly taskCount: Schema.Int;
259
+ }>>;
260
+ readonly stages: Schema.$Array<Schema.Struct<{
261
+ readonly index: Schema.Int;
262
+ readonly label: Schema.Trim;
263
+ readonly x: Schema.Number;
264
+ readonly width: Schema.Int;
265
+ }>>;
266
+ readonly nodes: Schema.$Array<Schema.Struct<{
267
+ readonly id: Schema.Trim;
268
+ readonly taskId: Schema.brand<Schema.Trim, "TaskId">;
269
+ readonly task: Schema.optional<Schema.Struct<{
270
+ readonly id: Schema.brand<Schema.Trim, "TaskId">;
271
+ readonly workspaceId: Schema.brand<Schema.Trim, "WorkspaceId">;
272
+ readonly graphId: Schema.NullOr<Schema.brand<Schema.Trim, "GraphId">>;
273
+ readonly externalId: Schema.NullOr<Schema.Trim>;
274
+ readonly title: Schema.Trim;
275
+ readonly description: Schema.String;
276
+ readonly status: Schema.Literals<readonly ["draft", "open", "ready", "queued", "running", "in_progress", "under_review", "blocked", "unknown", "completed", "failed", "cancelled", "closed"]>;
277
+ readonly priority: Schema.NullOr<Schema.Int>;
278
+ readonly role: Schema.NullOr<Schema.Trim>;
279
+ readonly scope: Schema.$Array<Schema.Trim>;
280
+ readonly validationKeys: Schema.$Array<Schema.Trim>;
281
+ readonly sourceIssueId: Schema.optional<Schema.NullOr<Schema.Trim>>;
282
+ readonly dependencies: Schema.optional<Schema.$Array<Schema.Trim>>;
283
+ readonly parentChildDeps: Schema.optional<Schema.$Array<Schema.Trim>>;
284
+ readonly metadata: Schema.Unknown;
285
+ readonly createdAt: Schema.String;
286
+ readonly updatedAt: Schema.String;
287
+ }>>;
288
+ readonly rowKey: Schema.Trim;
289
+ readonly rowLabel: Schema.Trim;
290
+ readonly rowIndex: Schema.Int;
291
+ readonly stage: Schema.Int;
292
+ readonly x: Schema.Number;
293
+ readonly y: Schema.Number;
294
+ readonly width: Schema.Int;
295
+ readonly height: Schema.Int;
296
+ readonly color: Schema.optional<Schema.String>;
297
+ readonly taskCode: Schema.optional<Schema.NullOr<Schema.String>>;
298
+ readonly strippedTitle: Schema.optional<Schema.String>;
299
+ readonly depsIn: Schema.optional<Schema.Int>;
300
+ readonly depsOut: Schema.optional<Schema.Int>;
301
+ readonly runCount: Schema.optional<Schema.Int>;
302
+ readonly hasApprovals: Schema.optional<Schema.Boolean>;
303
+ readonly hasPendingUserInput: Schema.optional<Schema.Boolean>;
304
+ readonly hasRejectedReview: Schema.optional<Schema.Boolean>;
305
+ readonly hasFailedValidations: Schema.optional<Schema.Boolean>;
306
+ readonly artifactCount: Schema.optional<Schema.Int>;
307
+ }>>;
308
+ readonly edges: Schema.$Array<Schema.Struct<{
309
+ readonly id: Schema.Trim;
310
+ readonly sourceId: Schema.Trim;
311
+ readonly targetId: Schema.Trim;
312
+ readonly color: Schema.String;
313
+ readonly kind: Schema.Literals<readonly ["blocking", "parent-child"]>;
314
+ }>>;
315
+ readonly totalWidth: Schema.Int;
316
+ readonly totalHeight: Schema.Int;
317
+ readonly taskCount: Schema.Int;
318
+ }>;
319
+ readonly cycles: Schema.$Array<Schema.$Array<Schema.brand<Schema.Trim, "TaskId">>>;
320
+ readonly unresolvedRefs: Schema.$Array<Schema.Trim>;
321
+ readonly degraded: Schema.Boolean;
322
+ readonly generatedAt: Schema.String;
323
+ }>;
324
+ export type DependencyGraphModel = typeof DependencyGraphModel.Type;
325
+ /** Capability id the dependency-graph plugin registers its project-graph builder under. */
326
+ export declare const GRAPH_PROJECT_CAPABILITY_ID = "rig.graph.project";
327
+ /** Pure input to the project-graph builder: which workspace to analyze. */
328
+ export type GraphProjectInput = {
329
+ readonly projectRoot: string;
330
+ };
331
+ /** The cohesive project-graph operation the substrate depends on. Async (does IO). */
332
+ export interface GraphProjectService {
333
+ buildProjectGraph(input: GraphProjectInput): Promise<DependencyGraphModel>;
334
+ }
335
+ /** Typed capability id; string value is {@link GRAPH_PROJECT_CAPABILITY_ID}. */
336
+ export declare const GRAPH_PROJECT: CapabilityId<GraphProjectService>;
337
+ /** Capability id the dependency-graph plugin registers its task selector under. */
338
+ export declare const TASK_SELECTION_CAPABILITY_ID = "cap:task-selection";
339
+ /** Pure filters narrowing which tasks are eligible for selection. */
340
+ export type TaskSelectionFilters = {
341
+ readonly assignee?: string;
342
+ readonly state?: "open" | "closed";
343
+ readonly search?: string;
344
+ };
345
+ /** Pure input to task selection: which workspace + optional filters. */
346
+ export type TaskSelectionInput = {
347
+ readonly projectRoot: string;
348
+ readonly filters?: TaskSelectionFilters;
349
+ };
350
+ /** Pure result of task selection: the next ready task + the ready set it came from. */
351
+ export type TaskSelectionResult = {
352
+ readonly selected: TaskSummary | null;
353
+ readonly ready: readonly TaskSummary[];
354
+ };
355
+ /** The cohesive task-selection operation the CLI surface depends on. Async (does IO). */
356
+ export interface TaskSelectionService {
357
+ selectNextReadyTask(input: TaskSelectionInput): Promise<TaskSelectionResult>;
358
+ }
359
+ /** Typed capability id; string value is {@link TASK_SELECTION_CAPABILITY_ID}. */
360
+ export declare const TASK_SELECTION: CapabilityId<TaskSelectionService>;
package/dist/src/graph.js CHANGED
@@ -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");
@@ -36,6 +39,11 @@ var ApprovalRequestId = makeEntityId("ApprovalRequestId");
36
39
  var CheckpointRef = makeEntityId("CheckpointRef");
37
40
  var RemoteEndpointId = makeEntityId("RemoteEndpointId");
38
41
 
42
+ // packages/contracts/src/capability-id.ts
43
+ function makeCapabilityId(id) {
44
+ return id;
45
+ }
46
+
39
47
  // packages/contracts/src/graph.ts
40
48
  var TaskStatus = Schema2.Literals([
41
49
  "draft",
@@ -85,9 +93,137 @@ var QueueEntry = Schema2.Struct({
85
93
  unblockCount: NonNegativeInt,
86
94
  position: NonNegativeInt
87
95
  });
96
+ var DependencyEdgeType = Schema2.Literals(["blocks", "parent-child", "related"]);
97
+ var DependencyEdge = Schema2.Struct({
98
+ fromTaskId: TaskId,
99
+ toTaskId: TaskId,
100
+ type: DependencyEdgeType
101
+ });
102
+ var BlockerClass = Schema2.Literals([
103
+ "not-blocked",
104
+ "task-blocked",
105
+ "human-decision",
106
+ "human-approval",
107
+ "external-input",
108
+ "unknown"
109
+ ]);
110
+ var ActionRiskTier = Schema2.Literals(["t1-read", "t2-reversible", "t3-external", "t4-irreversible"]);
111
+ var BlockerClassification = Schema2.Struct({
112
+ taskId: TaskId,
113
+ blockerClass: BlockerClass,
114
+ actionRiskTier: Schema2.NullOr(ActionRiskTier),
115
+ rationale: Schema2.String,
116
+ source: Schema2.Literals(["elimination", "label", "status", "llm"]),
117
+ autoApplied: Schema2.Boolean
118
+ });
119
+ var DependencyNode = Schema2.Struct({
120
+ taskId: TaskId,
121
+ title: TrimmedNonEmptyString,
122
+ status: TaskStatus,
123
+ priority: Schema2.NullOr(PositiveInt),
124
+ assignee: Schema2.NullOr(TrimmedNonEmptyString),
125
+ blockedBy: Schema2.Array(TaskId),
126
+ blocks: Schema2.Array(TaskId),
127
+ blockingDepth: NonNegativeInt,
128
+ blockerClass: Schema2.NullOr(BlockerClass),
129
+ actionRiskTier: Schema2.NullOr(ActionRiskTier),
130
+ epicKey: Schema2.NullOr(TrimmedNonEmptyString),
131
+ groupKey: Schema2.optional(Schema2.NullOr(TrimmedNonEmptyString)),
132
+ externalId: Schema2.optional(Schema2.NullOr(TrimmedNonEmptyString)),
133
+ sourceIssueId: Schema2.optional(Schema2.NullOr(TrimmedNonEmptyString)),
134
+ scope: Schema2.optional(Schema2.Array(TrimmedNonEmptyString)),
135
+ validationKeys: Schema2.optional(Schema2.Array(TrimmedNonEmptyString))
136
+ });
137
+ var TaskGraphLane = Schema2.Struct({
138
+ key: TrimmedNonEmptyString,
139
+ label: TrimmedNonEmptyString,
140
+ rowIndex: NonNegativeInt,
141
+ x: Schema2.Number,
142
+ y: Schema2.Number,
143
+ width: NonNegativeInt,
144
+ height: NonNegativeInt,
145
+ color: Schema2.String,
146
+ taskCount: NonNegativeInt
147
+ });
148
+ var TaskGraphStage = Schema2.Struct({
149
+ index: NonNegativeInt,
150
+ label: TrimmedNonEmptyString,
151
+ x: Schema2.Number,
152
+ width: NonNegativeInt
153
+ });
154
+ var TaskGraphNode = Schema2.Struct({
155
+ id: TrimmedNonEmptyString,
156
+ taskId: TaskId,
157
+ task: Schema2.optional(TaskSummary),
158
+ rowKey: TrimmedNonEmptyString,
159
+ rowLabel: TrimmedNonEmptyString,
160
+ rowIndex: NonNegativeInt,
161
+ stage: NonNegativeInt,
162
+ x: Schema2.Number,
163
+ y: Schema2.Number,
164
+ width: NonNegativeInt,
165
+ height: NonNegativeInt,
166
+ color: Schema2.optional(Schema2.String),
167
+ taskCode: Schema2.optional(Schema2.NullOr(Schema2.String)),
168
+ strippedTitle: Schema2.optional(Schema2.String),
169
+ depsIn: Schema2.optional(NonNegativeInt),
170
+ depsOut: Schema2.optional(NonNegativeInt),
171
+ runCount: Schema2.optional(NonNegativeInt),
172
+ hasApprovals: Schema2.optional(Schema2.Boolean),
173
+ hasPendingUserInput: Schema2.optional(Schema2.Boolean),
174
+ hasRejectedReview: Schema2.optional(Schema2.Boolean),
175
+ hasFailedValidations: Schema2.optional(Schema2.Boolean),
176
+ artifactCount: Schema2.optional(NonNegativeInt)
177
+ });
178
+ var TaskGraphEdge = Schema2.Struct({
179
+ id: TrimmedNonEmptyString,
180
+ sourceId: TrimmedNonEmptyString,
181
+ targetId: TrimmedNonEmptyString,
182
+ color: Schema2.String,
183
+ kind: Schema2.Literals(["blocking", "parent-child"])
184
+ });
185
+ var TaskGraphLayout = Schema2.Struct({
186
+ lanes: Schema2.Array(TaskGraphLane),
187
+ stages: Schema2.Array(TaskGraphStage),
188
+ nodes: Schema2.Array(TaskGraphNode),
189
+ edges: Schema2.Array(TaskGraphEdge),
190
+ totalWidth: NonNegativeInt,
191
+ totalHeight: NonNegativeInt,
192
+ taskCount: NonNegativeInt
193
+ });
194
+ var DependencyGraphModel = Schema2.Struct({
195
+ graphId: GraphId,
196
+ nodes: Schema2.Array(DependencyNode),
197
+ edges: Schema2.Array(DependencyEdge),
198
+ layout: TaskGraphLayout,
199
+ cycles: Schema2.Array(Schema2.Array(TaskId)),
200
+ unresolvedRefs: Schema2.Array(TrimmedNonEmptyString),
201
+ degraded: Schema2.Boolean,
202
+ generatedAt: IsoDateTime
203
+ });
204
+ var GRAPH_PROJECT_CAPABILITY_ID = "rig.graph.project";
205
+ var GRAPH_PROJECT = makeCapabilityId(GRAPH_PROJECT_CAPABILITY_ID);
206
+ var TASK_SELECTION_CAPABILITY_ID = "cap:task-selection";
207
+ var TASK_SELECTION = makeCapabilityId(TASK_SELECTION_CAPABILITY_ID);
88
208
  export {
89
209
  TaskSummary,
90
210
  TaskStatus,
211
+ TaskGraphStage,
212
+ TaskGraphNode,
213
+ TaskGraphLayout,
214
+ TaskGraphLane,
215
+ TaskGraphEdge,
216
+ TASK_SELECTION_CAPABILITY_ID,
217
+ TASK_SELECTION,
91
218
  QueueEntry,
92
- GraphSummary
219
+ GraphSummary,
220
+ GRAPH_PROJECT_CAPABILITY_ID,
221
+ GRAPH_PROJECT,
222
+ DependencyNode,
223
+ DependencyGraphModel,
224
+ DependencyEdgeType,
225
+ DependencyEdge,
226
+ BlockerClassification,
227
+ BlockerClass,
228
+ ActionRiskTier
93
229
  };
@@ -0,0 +1,111 @@
1
+ import type { PolicyMode } from "./policy";
2
+ export declare const POLICY_VERSION: 1;
3
+ export type PolicyVersion = typeof POLICY_VERSION;
4
+ export type { PolicyMode };
5
+ export type RuleCategory = "command" | "content" | "import" | "test-integrity";
6
+ export type RuleAction = "block" | "warn";
7
+ export type RuleAppliesTo = "test-files";
8
+ export type RuleMatch = {
9
+ pattern?: string;
10
+ regex?: string;
11
+ };
12
+ export type RuleUnless = {
13
+ regex?: string;
14
+ task_in?: string[];
15
+ };
16
+ export type PolicyRule = {
17
+ id: string;
18
+ category: RuleCategory;
19
+ description?: string;
20
+ match: RuleMatch;
21
+ unless?: RuleUnless;
22
+ action: RuleAction;
23
+ applies_to?: RuleAppliesTo;
24
+ compiledRegex?: RegExp;
25
+ compiledUnlessRegex?: RegExp;
26
+ };
27
+ export type ScopeConfig = {
28
+ fail_closed: boolean;
29
+ harness_paths_exempt: boolean;
30
+ runtime_paths_exempt: boolean;
31
+ };
32
+ export type SandboxConfig = {
33
+ mode: PolicyMode;
34
+ network: boolean;
35
+ read_deny: string[];
36
+ write_allow_from_runtime: boolean;
37
+ };
38
+ export type IsolationConfig = {
39
+ default_mode: "worktree";
40
+ repo_symlink_fallback: boolean;
41
+ strict_provisioning: boolean;
42
+ fail_closed_on_provision_error: boolean;
43
+ };
44
+ export type CompletionConfig = {
45
+ derive_checks_from_scope: boolean;
46
+ checks: string[];
47
+ typescript_config_probe: string[];
48
+ eslint_config_probe: string[];
49
+ };
50
+ export type RuntimeImageDeps = {
51
+ monorepo_install: boolean;
52
+ hp_next_install: boolean;
53
+ };
54
+ export type RuntimeImageConfig = {
55
+ deps: RuntimeImageDeps;
56
+ plugins_require_binaries: boolean;
57
+ };
58
+ export type RuntimeSnapshotConfig = {
59
+ enabled: boolean;
60
+ };
61
+ export type PolicyConfig = {
62
+ version: PolicyVersion;
63
+ mode: PolicyMode;
64
+ scope: ScopeConfig;
65
+ rules: PolicyRule[];
66
+ sandbox: SandboxConfig;
67
+ isolation: IsolationConfig;
68
+ completion: CompletionConfig;
69
+ runtime_image?: RuntimeImageConfig;
70
+ runtime_snapshot?: RuntimeSnapshotConfig;
71
+ };
72
+ export type ToolCallEvaluation = {
73
+ type: "tool-call";
74
+ tool_name: string;
75
+ tool_input: Record<string, unknown>;
76
+ };
77
+ export type CommandEvaluation = {
78
+ type: "command";
79
+ command: string;
80
+ };
81
+ export type ContentWriteEvaluation = {
82
+ type: "content-write";
83
+ file_path: string;
84
+ content: string;
85
+ };
86
+ export type FileAccessEvaluation = {
87
+ type: "file-access";
88
+ file_path: string;
89
+ access: "read" | "write";
90
+ };
91
+ export type GuardEvaluation = ToolCallEvaluation | CommandEvaluation | ContentWriteEvaluation | FileAccessEvaluation;
92
+ export type GuardContext = {
93
+ projectRoot: string;
94
+ monorepoRoot?: string;
95
+ taskId?: string;
96
+ taskScopes?: string[];
97
+ taskWorkspace?: string;
98
+ evaluation: GuardEvaluation;
99
+ };
100
+ export type MatchedRule = {
101
+ id: string;
102
+ category: RuleCategory;
103
+ description?: string;
104
+ reason: string;
105
+ };
106
+ export type GuardDecision = {
107
+ allowed: boolean;
108
+ matchedRules: MatchedRule[];
109
+ action: "allow" | "block" | "warn";
110
+ failClosed: boolean;
111
+ };
@@ -0,0 +1,6 @@
1
+ // @bun
2
+ // packages/contracts/src/guard.ts
3
+ var POLICY_VERSION = 1;
4
+ export {
5
+ POLICY_VERSION
6
+ };
@@ -0,0 +1,8 @@
1
+ export type HarnessEventType = "runtime.init" | "command.received" | "policy.decision" | "command.started" | "command.finished" | "command.failed" | "plugin.loaded" | "plugin.error" | "validator.started" | "validator.finished" | "queue.started" | "queue.task.started" | "queue.task.finished" | "queue.finished" | "memory.command.requested" | "memory.command.applied" | "memory.command.failed";
2
+ export type HarnessEvent<TPayload = Record<string, unknown>> = {
3
+ id: string;
4
+ runId: string;
5
+ timestamp: string;
6
+ type: HarnessEventType;
7
+ payload: TPayload;
8
+ };
@@ -0,0 +1 @@
1
+ // @bun