@h-rig/supervisor-plugin 0.0.6-alpha.157 → 0.0.6-alpha.158
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/analysis/blockers.d.ts +35 -0
- package/dist/src/analysis/blockers.js +355 -0
- package/dist/src/analysis/taskGraphPrimitives.d.ts +58 -0
- package/dist/src/analysis/taskGraphPrimitives.js +528 -0
- package/dist/src/analysis/taskRanking.d.ts +24 -0
- package/dist/src/analysis/taskRanking.js +374 -0
- package/dist/src/analysis/taskScore.d.ts +17 -0
- package/dist/src/analysis/taskScore.js +49 -0
- package/dist/src/cli.d.ts +1 -7
- package/dist/src/cli.js +611 -91
- package/dist/src/index.js +682 -155
- package/dist/src/loop.d.ts +3 -5
- package/dist/src/loop.js +503 -23
- package/dist/src/plugin.js +655 -134
- package/dist/src/run-status.d.ts +2 -0
- package/dist/src/run-status.js +20 -0
- package/dist/src/supervisor.js +345 -6
- package/package.json +3 -7
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// packages/supervisor-plugin/src/run-status.ts
|
|
3
|
+
var KNOWN_RUN_STATUS = new Set([
|
|
4
|
+
"created",
|
|
5
|
+
"queued",
|
|
6
|
+
"preparing",
|
|
7
|
+
"running",
|
|
8
|
+
"validating",
|
|
9
|
+
"reviewing",
|
|
10
|
+
"closing-out",
|
|
11
|
+
"completed",
|
|
12
|
+
"failed",
|
|
13
|
+
"stopped"
|
|
14
|
+
]);
|
|
15
|
+
function coerceRunStatus(value, fallback) {
|
|
16
|
+
return KNOWN_RUN_STATUS.has(value) ? value : fallback;
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
coerceRunStatus
|
|
20
|
+
};
|
package/dist/src/supervisor.js
CHANGED
|
@@ -1,12 +1,351 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// packages/supervisor-plugin/src/
|
|
2
|
+
// packages/supervisor-plugin/src/analysis/taskGraphPrimitives.ts
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
disjointScope,
|
|
6
|
-
isTaskTerminalStatus,
|
|
7
|
-
readTaskScope
|
|
4
|
+
OPERATOR_INACTIVE_RUN_STATUSES
|
|
8
5
|
} from "@rig/contracts";
|
|
9
|
-
|
|
6
|
+
function isObjectRecord(value) {
|
|
7
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
8
|
+
}
|
|
9
|
+
function readStringList(value) {
|
|
10
|
+
return Array.isArray(value) ? value.filter((entry) => typeof entry === "string" && entry.length > 0) : [];
|
|
11
|
+
}
|
|
12
|
+
function unique(values) {
|
|
13
|
+
return Array.from(new Set(values));
|
|
14
|
+
}
|
|
15
|
+
function readTaskMetadataStringList(task, key) {
|
|
16
|
+
const taskRecord = task;
|
|
17
|
+
const topLevel = readStringList(taskRecord[key]);
|
|
18
|
+
if (topLevel.length > 0)
|
|
19
|
+
return topLevel;
|
|
20
|
+
const metadata = isObjectRecord(task.metadata) ? task.metadata : null;
|
|
21
|
+
const metadataList = readStringList(metadata?.[key]);
|
|
22
|
+
if (metadataList.length > 0)
|
|
23
|
+
return metadataList;
|
|
24
|
+
if (key === "dependencies") {
|
|
25
|
+
return readStringList(metadata?.deps);
|
|
26
|
+
}
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
function readTaskBlockingDependencyRefs(task) {
|
|
30
|
+
return readTaskMetadataStringList(task, "dependencies");
|
|
31
|
+
}
|
|
32
|
+
function readTaskSourceIssueId(task) {
|
|
33
|
+
if (typeof task.sourceIssueId === "string" && task.sourceIssueId.length > 0) {
|
|
34
|
+
return task.sourceIssueId;
|
|
35
|
+
}
|
|
36
|
+
const metadata = isObjectRecord(task.metadata) ? task.metadata : null;
|
|
37
|
+
if (typeof metadata?.sourceIssueId === "string" && metadata.sourceIssueId.length > 0) {
|
|
38
|
+
return metadata.sourceIssueId;
|
|
39
|
+
}
|
|
40
|
+
const rigMetadata = isObjectRecord(metadata?._rig) ? metadata._rig : null;
|
|
41
|
+
return typeof rigMetadata?.sourceIssueId === "string" && rigMetadata.sourceIssueId.length > 0 ? rigMetadata.sourceIssueId : null;
|
|
42
|
+
}
|
|
43
|
+
function readTaskScope(task) {
|
|
44
|
+
const taskRecord = task;
|
|
45
|
+
const topLevel = readStringList(taskRecord.scope);
|
|
46
|
+
if (topLevel.length > 0)
|
|
47
|
+
return unique(topLevel.map((entry) => entry.trim()).filter((entry) => entry.length > 0));
|
|
48
|
+
const metadata = isObjectRecord(task.metadata) ? task.metadata : null;
|
|
49
|
+
const metadataScope = readStringList(metadata?.scope);
|
|
50
|
+
if (metadataScope.length > 0)
|
|
51
|
+
return unique(metadataScope.map((entry) => entry.trim()).filter((entry) => entry.length > 0));
|
|
52
|
+
return unique([
|
|
53
|
+
...readStringList(metadata?.files),
|
|
54
|
+
...readStringList(metadata?.paths)
|
|
55
|
+
].map((entry) => entry.trim()).filter((entry) => entry.length > 0));
|
|
56
|
+
}
|
|
57
|
+
function isScopeList(input) {
|
|
58
|
+
return Array.isArray(input);
|
|
59
|
+
}
|
|
60
|
+
function normalizeScopeInput(input) {
|
|
61
|
+
return isScopeList(input) ? unique(input.map((entry) => entry.trim()).filter((entry) => entry.length > 0)) : readTaskScope(input);
|
|
62
|
+
}
|
|
63
|
+
function disjointScope(left, right) {
|
|
64
|
+
const leftScope = new Set(normalizeScopeInput(left));
|
|
65
|
+
if (leftScope.size === 0)
|
|
66
|
+
return true;
|
|
67
|
+
return normalizeScopeInput(right).every((entry) => !leftScope.has(entry));
|
|
68
|
+
}
|
|
69
|
+
function resolveTaskReference(ref, tasksById, taskIdByExternalRef, taskIdBySourceIssueId) {
|
|
70
|
+
if (tasksById.has(ref))
|
|
71
|
+
return ref;
|
|
72
|
+
return taskIdBySourceIssueId.get(ref) ?? taskIdByExternalRef.get(ref) ?? null;
|
|
73
|
+
}
|
|
74
|
+
function buildTaskReferenceIndex(tasks) {
|
|
75
|
+
return {
|
|
76
|
+
tasksById: new Map(tasks.map((task) => [task.id, task])),
|
|
77
|
+
taskIdByExternalRef: new Map(tasks.flatMap((task) => task.externalId ? [[task.externalId, task.id]] : [])),
|
|
78
|
+
taskIdBySourceIssueId: new Map(tasks.flatMap((task) => {
|
|
79
|
+
const sourceIssueId = readTaskSourceIssueId(task);
|
|
80
|
+
return sourceIssueId ? [[sourceIssueId, task.id]] : [];
|
|
81
|
+
}))
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function computeTaskBlockingDepths(tasks) {
|
|
85
|
+
const { tasksById, taskIdByExternalRef, taskIdBySourceIssueId } = buildTaskReferenceIndex(tasks);
|
|
86
|
+
const memo = new Map;
|
|
87
|
+
const visit = (taskId, stack) => {
|
|
88
|
+
const cached = memo.get(taskId);
|
|
89
|
+
if (cached !== undefined)
|
|
90
|
+
return cached;
|
|
91
|
+
if (stack.has(taskId))
|
|
92
|
+
return 0;
|
|
93
|
+
const task = tasksById.get(taskId);
|
|
94
|
+
if (!task)
|
|
95
|
+
return 0;
|
|
96
|
+
stack.add(taskId);
|
|
97
|
+
const blockers = readTaskBlockingDependencyRefs(task).map((ref) => resolveTaskReference(ref, tasksById, taskIdByExternalRef, taskIdBySourceIssueId)).filter((ref) => ref !== null && ref !== taskId);
|
|
98
|
+
const depth = blockers.length === 0 ? 0 : Math.max(...blockers.map((blockerId) => visit(blockerId, stack) + 1));
|
|
99
|
+
stack.delete(taskId);
|
|
100
|
+
memo.set(taskId, depth);
|
|
101
|
+
return depth;
|
|
102
|
+
};
|
|
103
|
+
for (const task of tasks) {
|
|
104
|
+
visit(task.id, new Set);
|
|
105
|
+
}
|
|
106
|
+
return memo;
|
|
107
|
+
}
|
|
108
|
+
function isTaskTerminalStatus(status) {
|
|
109
|
+
switch (status) {
|
|
110
|
+
case "closed":
|
|
111
|
+
case "completed":
|
|
112
|
+
case "done":
|
|
113
|
+
case "cancelled":
|
|
114
|
+
case "canceled":
|
|
115
|
+
return true;
|
|
116
|
+
default:
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function isTaskBlockedStatus(status) {
|
|
121
|
+
return status === "blocked";
|
|
122
|
+
}
|
|
123
|
+
function isTaskRunnableStatus(status) {
|
|
124
|
+
if (status === null || status === undefined || status === "")
|
|
125
|
+
return true;
|
|
126
|
+
if (isTaskTerminalStatus(status) || isTaskBlockedStatus(status))
|
|
127
|
+
return false;
|
|
128
|
+
switch (status) {
|
|
129
|
+
case "ready":
|
|
130
|
+
case "open":
|
|
131
|
+
case "failed":
|
|
132
|
+
return true;
|
|
133
|
+
default:
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function computeTaskDependencyBadges(tasks) {
|
|
138
|
+
const index = buildTaskReferenceIndex(tasks);
|
|
139
|
+
const blockingDepths = computeTaskBlockingDepths(tasks);
|
|
140
|
+
const dependencyIdsByTask = new Map;
|
|
141
|
+
const unresolvedRefsByTask = new Map;
|
|
142
|
+
const blocksByTask = new Map;
|
|
143
|
+
for (const task of tasks) {
|
|
144
|
+
const dependencyIds = [];
|
|
145
|
+
const unresolvedRefs = [];
|
|
146
|
+
for (const ref of readTaskBlockingDependencyRefs(task)) {
|
|
147
|
+
const dependencyId = resolveTaskReference(ref, index.tasksById, index.taskIdByExternalRef, index.taskIdBySourceIssueId);
|
|
148
|
+
if (dependencyId && dependencyId !== task.id) {
|
|
149
|
+
dependencyIds.push(dependencyId);
|
|
150
|
+
const blocks = blocksByTask.get(dependencyId);
|
|
151
|
+
if (blocks) {
|
|
152
|
+
blocks.push(task.id);
|
|
153
|
+
} else {
|
|
154
|
+
blocksByTask.set(dependencyId, [task.id]);
|
|
155
|
+
}
|
|
156
|
+
} else {
|
|
157
|
+
unresolvedRefs.push(ref);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
dependencyIdsByTask.set(task.id, unique(dependencyIds));
|
|
161
|
+
unresolvedRefsByTask.set(task.id, unique(unresolvedRefs));
|
|
162
|
+
}
|
|
163
|
+
const summaries = new Map;
|
|
164
|
+
for (const task of tasks) {
|
|
165
|
+
const dependencyIds = dependencyIdsByTask.get(task.id) ?? [];
|
|
166
|
+
const unresolvedDependencyRefs = unresolvedRefsByTask.get(task.id) ?? [];
|
|
167
|
+
const blockedBy = dependencyIds.filter((dependencyId) => {
|
|
168
|
+
const dependency = index.tasksById.get(dependencyId);
|
|
169
|
+
return dependency ? !isTaskTerminalStatus(dependency.status) : false;
|
|
170
|
+
});
|
|
171
|
+
const blocks = unique(blocksByTask.get(task.id) ?? []);
|
|
172
|
+
const blocked = isTaskBlockedStatus(task.status) || blockedBy.length > 0;
|
|
173
|
+
const ready = isTaskRunnableStatus(task.status) && !blocked;
|
|
174
|
+
const badges = [];
|
|
175
|
+
if (blocked) {
|
|
176
|
+
badges.push({
|
|
177
|
+
kind: "blocked",
|
|
178
|
+
label: blockedBy.length > 0 ? `blocked \xD7${blockedBy.length}` : "blocked",
|
|
179
|
+
description: blockedBy.length > 0 ? `Waiting on ${blockedBy.join(", ")}.` : "Task source marks this task blocked.",
|
|
180
|
+
...blockedBy.length > 0 ? { count: blockedBy.length } : {},
|
|
181
|
+
taskIds: blockedBy
|
|
182
|
+
});
|
|
183
|
+
} else if (ready) {
|
|
184
|
+
badges.push({
|
|
185
|
+
kind: "ready",
|
|
186
|
+
label: "ready",
|
|
187
|
+
description: "No open dependencies block this task."
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
if (dependencyIds.length > 0 || blocks.length > 0 || unresolvedDependencyRefs.length > 0) {
|
|
191
|
+
badges.push({
|
|
192
|
+
kind: "dependency",
|
|
193
|
+
label: `deps ${dependencyIds.length}/${blocks.length}`,
|
|
194
|
+
description: [
|
|
195
|
+
dependencyIds.length > 0 ? `Depends on ${dependencyIds.join(", ")}.` : null,
|
|
196
|
+
blocks.length > 0 ? `Blocks ${blocks.join(", ")}.` : null,
|
|
197
|
+
unresolvedDependencyRefs.length > 0 ? `Unresolved refs: ${unresolvedDependencyRefs.join(", ")}.` : null
|
|
198
|
+
].filter((part) => part !== null).join(" "),
|
|
199
|
+
count: dependencyIds.length + blocks.length,
|
|
200
|
+
taskIds: unique([...dependencyIds, ...blocks])
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
summaries.set(task.id, {
|
|
204
|
+
taskId: task.id,
|
|
205
|
+
blockingDepth: blockingDepths.get(task.id) ?? 0,
|
|
206
|
+
dependencyIds,
|
|
207
|
+
unresolvedDependencyRefs,
|
|
208
|
+
blockedBy,
|
|
209
|
+
blocks,
|
|
210
|
+
blocked,
|
|
211
|
+
ready,
|
|
212
|
+
dependencyCount: dependencyIds.length,
|
|
213
|
+
dependentCount: blocks.length,
|
|
214
|
+
badges
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
return summaries;
|
|
218
|
+
}
|
|
219
|
+
var TASK_STATUSES = new Set([
|
|
220
|
+
"draft",
|
|
221
|
+
"open",
|
|
222
|
+
"ready",
|
|
223
|
+
"queued",
|
|
224
|
+
"running",
|
|
225
|
+
"in_progress",
|
|
226
|
+
"under_review",
|
|
227
|
+
"blocked",
|
|
228
|
+
"unknown",
|
|
229
|
+
"completed",
|
|
230
|
+
"failed",
|
|
231
|
+
"cancelled",
|
|
232
|
+
"closed"
|
|
233
|
+
]);
|
|
234
|
+
|
|
235
|
+
// packages/supervisor-plugin/src/analysis/taskScore.ts
|
|
236
|
+
var ROLE_WEIGHT = {
|
|
237
|
+
architect: 25,
|
|
238
|
+
extractor: 10
|
|
239
|
+
};
|
|
240
|
+
var CRITICALITY_WEIGHT = {
|
|
241
|
+
core: 20,
|
|
242
|
+
high: 10,
|
|
243
|
+
normal: 0
|
|
244
|
+
};
|
|
245
|
+
function finiteNumber(value, fallback) {
|
|
246
|
+
return typeof value === "number" && Number.isFinite(value) ? value : fallback;
|
|
247
|
+
}
|
|
248
|
+
function scoreTask(input) {
|
|
249
|
+
const priority = finiteNumber(input.priority, 3);
|
|
250
|
+
const unblockCount = Math.max(0, finiteNumber(input.unblockCount, 0));
|
|
251
|
+
const roleWeight = input.role ? ROLE_WEIGHT[input.role] ?? 0 : 0;
|
|
252
|
+
const criticalityWeight = input.criticality ? CRITICALITY_WEIGHT[input.criticality] ?? 0 : 0;
|
|
253
|
+
const validationWeight = (input.validation ?? []).some((entry) => entry.includes("test-contract") || entry.includes("test-boundary")) ? 8 : 0;
|
|
254
|
+
const queueWeight = finiteNumber(input.queueWeight, 0);
|
|
255
|
+
return unblockCount * 100 + (10 - priority) + roleWeight + criticalityWeight + validationWeight + queueWeight;
|
|
256
|
+
}
|
|
257
|
+
function rankTasks(tasks, scoreInput, idOf) {
|
|
258
|
+
return tasks.map((task) => {
|
|
259
|
+
const input = scoreInput(task);
|
|
260
|
+
return {
|
|
261
|
+
task,
|
|
262
|
+
score: scoreTask(input),
|
|
263
|
+
priority: finiteNumber(input.priority, 3),
|
|
264
|
+
unblockCount: Math.max(0, finiteNumber(input.unblockCount, 0))
|
|
265
|
+
};
|
|
266
|
+
}).toSorted((left, right) => {
|
|
267
|
+
const scoreDelta = right.score - left.score;
|
|
268
|
+
if (scoreDelta !== 0)
|
|
269
|
+
return scoreDelta;
|
|
270
|
+
const unblockDelta = right.unblockCount - left.unblockCount;
|
|
271
|
+
if (unblockDelta !== 0)
|
|
272
|
+
return unblockDelta;
|
|
273
|
+
const priorityDelta = left.priority - right.priority;
|
|
274
|
+
if (priorityDelta !== 0)
|
|
275
|
+
return priorityDelta;
|
|
276
|
+
return idOf(left.task).localeCompare(idOf(right.task));
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// packages/supervisor-plugin/src/analysis/taskRanking.ts
|
|
281
|
+
function isObjectRecord2(value) {
|
|
282
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
283
|
+
}
|
|
284
|
+
function readStringList2(value) {
|
|
285
|
+
return Array.isArray(value) ? value.filter((entry) => typeof entry === "string" && entry.length > 0) : [];
|
|
286
|
+
}
|
|
287
|
+
function readTaskRole(task) {
|
|
288
|
+
if (typeof task.role === "string" && task.role.trim())
|
|
289
|
+
return task.role.trim();
|
|
290
|
+
const metadata = isObjectRecord2(task.metadata) ? task.metadata : null;
|
|
291
|
+
return typeof metadata?.role === "string" && metadata.role.trim() ? metadata.role.trim() : null;
|
|
292
|
+
}
|
|
293
|
+
function readTaskCriticality(task) {
|
|
294
|
+
const metadata = isObjectRecord2(task.metadata) ? task.metadata : null;
|
|
295
|
+
return typeof metadata?.criticality === "string" && metadata.criticality.trim() ? metadata.criticality.trim() : null;
|
|
296
|
+
}
|
|
297
|
+
function readTaskValidationKeys(task) {
|
|
298
|
+
const taskRecord = task;
|
|
299
|
+
const topLevel = readStringList2(taskRecord.validationKeys);
|
|
300
|
+
if (topLevel.length > 0)
|
|
301
|
+
return topLevel;
|
|
302
|
+
const metadata = isObjectRecord2(task.metadata) ? task.metadata : null;
|
|
303
|
+
return readStringList2(metadata?.validation);
|
|
304
|
+
}
|
|
305
|
+
function readTaskQueueWeight(task) {
|
|
306
|
+
const metadata = isObjectRecord2(task.metadata) ? task.metadata : null;
|
|
307
|
+
const queueWeight = metadata?.queueWeight ?? metadata?.queue_weight;
|
|
308
|
+
return typeof queueWeight === "number" && Number.isFinite(queueWeight) ? queueWeight : 0;
|
|
309
|
+
}
|
|
310
|
+
function scoreInputForTask(task, unblockCount) {
|
|
311
|
+
return {
|
|
312
|
+
priority: task.priority,
|
|
313
|
+
unblockCount,
|
|
314
|
+
role: readTaskRole(task),
|
|
315
|
+
criticality: readTaskCriticality(task),
|
|
316
|
+
validation: readTaskValidationKeys(task),
|
|
317
|
+
queueWeight: readTaskQueueWeight(task)
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
function rankReadyTasks(tasks, options = {}) {
|
|
321
|
+
const excluded = new Set(options.excludeTaskIds ?? []);
|
|
322
|
+
const activeTaskIds = new Set(options.activeTaskIds ?? []);
|
|
323
|
+
const badges = computeTaskDependencyBadges(tasks);
|
|
324
|
+
const tasksById = new Map(tasks.map((task) => [String(task.id), task]));
|
|
325
|
+
const openBlockCount = (task) => (badges.get(task.id)?.blocks ?? []).filter((blockedTaskId) => {
|
|
326
|
+
const blockedTask = tasksById.get(blockedTaskId);
|
|
327
|
+
return blockedTask ? !isTaskTerminalStatus(blockedTask.status) : false;
|
|
328
|
+
}).length;
|
|
329
|
+
const readyTasks = tasks.filter((task) => !excluded.has(task.id)).filter((task) => !activeTaskIds.has(task.id)).filter((task) => options.filter?.(task) ?? true).filter((task) => badges.get(task.id)?.ready === true);
|
|
330
|
+
const maxUnblockCount = Math.max(0, ...readyTasks.map(openBlockCount));
|
|
331
|
+
const selectedByMode = readyTasks.filter((task) => {
|
|
332
|
+
const unblockCount = openBlockCount(task);
|
|
333
|
+
if (options.selection === "blocking-only")
|
|
334
|
+
return unblockCount > 0;
|
|
335
|
+
if (options.selection === "max-unblock")
|
|
336
|
+
return maxUnblockCount > 0 && unblockCount === maxUnblockCount;
|
|
337
|
+
return true;
|
|
338
|
+
});
|
|
339
|
+
return rankTasks(selectedByMode, (task) => scoreInputForTask(task, openBlockCount(task)), (task) => task.id).map((entry) => ({
|
|
340
|
+
task: entry.task,
|
|
341
|
+
score: entry.score,
|
|
342
|
+
priority: entry.priority,
|
|
343
|
+
unblockCount: entry.unblockCount,
|
|
344
|
+
scope: readTaskScope(entry.task)
|
|
345
|
+
}));
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// packages/supervisor-plugin/src/supervisor.ts
|
|
10
349
|
var DEFAULT_STOP_WHEN = new Set(["all-done", "all-human-blocked", "source-error"]);
|
|
11
350
|
var HUMAN_BLOCKER_CLASS = {
|
|
12
351
|
"not-blocked": false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h-rig/supervisor-plugin",
|
|
3
|
-
"version": "0.0.6-alpha.
|
|
3
|
+
"version": "0.0.6-alpha.158",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "First-party autonomous supervisor loop plugin for Rig.",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -41,12 +41,8 @@
|
|
|
41
41
|
"module": "./dist/src/index.js",
|
|
42
42
|
"types": "./dist/src/index.d.ts",
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@rig/
|
|
45
|
-
"@rig/
|
|
46
|
-
"@rig/runtime": "npm:@h-rig/runtime@0.0.6-alpha.157",
|
|
47
|
-
"@rig/core": "npm:@h-rig/core@0.0.6-alpha.157",
|
|
48
|
-
"@rig/dependency-graph-plugin": "npm:@h-rig/dependency-graph-plugin@0.0.6-alpha.157",
|
|
49
|
-
"@rig/run-worker": "npm:@h-rig/run-worker@0.0.6-alpha.157",
|
|
44
|
+
"@rig/contracts": "npm:@h-rig/contracts@0.0.6-alpha.158",
|
|
45
|
+
"@rig/core": "npm:@h-rig/core@0.0.6-alpha.158",
|
|
50
46
|
"effect": "4.0.0-beta.90"
|
|
51
47
|
}
|
|
52
48
|
}
|