@llblab/pi-actors 0.41.1 → 0.42.1
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/AGENTS.md +11 -6
- package/BACKLOG.md +1 -65
- package/CHANGELOG.md +25 -0
- package/README.md +24 -4
- package/dist/index.js +25 -121
- package/dist/lib/async-runs.d.ts +37 -5
- package/dist/lib/async-runs.js +181 -51
- package/dist/lib/automatic-review-runtime.d.ts +18 -0
- package/dist/lib/automatic-review-runtime.js +96 -0
- package/dist/lib/command-templates.js +1 -1
- package/dist/lib/draft-consolidation-transaction.d.ts +65 -0
- package/dist/lib/draft-consolidation-transaction.js +610 -0
- package/dist/lib/draft-consolidation.d.ts +35 -0
- package/dist/lib/draft-consolidation.js +126 -0
- package/dist/lib/draft-review.d.ts +56 -0
- package/dist/lib/draft-review.js +254 -0
- package/dist/lib/draft-sleep.d.ts +65 -0
- package/dist/lib/draft-sleep.js +468 -0
- package/dist/lib/file-state.d.ts +8 -1
- package/dist/lib/file-state.js +115 -18
- package/dist/lib/inspector-actions.d.ts +16 -0
- package/dist/lib/inspector-actions.js +57 -0
- package/dist/lib/inspector-command.d.ts +7 -0
- package/dist/lib/inspector-command.js +37 -0
- package/dist/lib/inspector-overlay.d.ts +23 -3
- package/dist/lib/inspector-overlay.js +327 -70
- package/dist/lib/inspector.d.ts +9 -0
- package/dist/lib/inspector.js +49 -1
- package/dist/lib/observability.d.ts +13 -0
- package/dist/lib/observability.js +160 -6
- package/dist/lib/paths.d.ts +7 -0
- package/dist/lib/paths.js +28 -0
- package/dist/lib/recipes-discovery.js +32 -24
- package/dist/lib/recipes-usage.d.ts +18 -6
- package/dist/lib/recipes-usage.js +445 -34
- package/dist/lib/review-control.d.ts +14 -0
- package/dist/lib/review-control.js +111 -0
- package/dist/lib/review-diagnostics.d.ts +11 -0
- package/dist/lib/review-diagnostics.js +148 -0
- package/dist/lib/review-projection.d.ts +14 -0
- package/dist/lib/review-projection.js +170 -0
- package/dist/lib/run-ui-runtime.d.ts +18 -0
- package/dist/lib/run-ui-runtime.js +123 -0
- package/dist/lib/runs-artifacts.d.ts +1 -1
- package/dist/lib/runs-artifacts.js +1 -1
- package/dist/lib/runs-control.d.ts +10 -2
- package/dist/lib/runs-control.js +37 -7
- package/dist/lib/runs-identity.d.ts +1 -1
- package/dist/lib/runs-identity.js +1 -1
- package/dist/lib/runs-index.d.ts +11 -2
- package/dist/lib/runs-index.js +46 -23
- package/dist/lib/runs-mailbox.d.ts +1 -1
- package/dist/lib/runs-mailbox.js +1 -1
- package/dist/lib/runs-messages.d.ts +1 -1
- package/dist/lib/runs-messages.js +1 -1
- package/dist/lib/runs-outbox.d.ts +1 -1
- package/dist/lib/runs-outbox.js +1 -1
- package/dist/lib/runs-ownership.d.ts +1 -1
- package/dist/lib/runs-ownership.js +18 -4
- package/dist/lib/runs-parent-teardown.d.ts +51 -0
- package/dist/lib/runs-parent-teardown.js +172 -0
- package/dist/lib/runs-process.d.ts +1 -1
- package/dist/lib/runs-process.js +5 -4
- package/dist/lib/runs-retention.d.ts +1 -1
- package/dist/lib/runs-retention.js +1 -1
- package/dist/lib/runs-start.d.ts +5 -3
- package/dist/lib/runs-start.js +7 -48
- package/dist/lib/runs-status.d.ts +5 -3
- package/dist/lib/runs-status.js +7 -6
- package/dist/lib/runtime.d.ts +7 -1
- package/dist/lib/runtime.js +32 -18
- package/dist/lib/tool-review-lineage-transaction.d.ts +27 -0
- package/dist/lib/tool-review-lineage-transaction.js +597 -0
- package/dist/lib/tool-review-lineage.d.ts +24 -0
- package/dist/lib/tool-review-lineage.js +98 -0
- package/dist/lib/tool-review-scheduler.d.ts +80 -0
- package/dist/lib/tool-review-scheduler.js +494 -0
- package/dist/lib/tool-review-transaction.d.ts +50 -0
- package/dist/lib/tool-review-transaction.js +362 -0
- package/dist/lib/tool-review.d.ts +56 -0
- package/dist/lib/tool-review.js +197 -0
- package/dist/lib/tools-inspect.js +28 -4
- package/dist/lib/tools-local.js +21 -4
- package/dist/lib/tools-message.d.ts +1 -0
- package/dist/lib/tools-message.js +29 -17
- package/dist/lib/tools-spawn.js +14 -2
- package/dist/lib/tools.d.ts +1 -0
- package/dist/lib/tools.js +1 -0
- package/dist/recipes/draft-review.json +24 -0
- package/dist/recipes/tool-review.json +24 -0
- package/dist/scripts/async-runner.mjs +9 -9
- package/dist/scripts/build-dist.mjs +6 -1
- package/dist/scripts/conformance.mjs +6 -1
- package/dist/scripts/recipe-utils.mjs +3 -3
- package/dist/scripts/release-gates.mjs +165 -0
- package/dist/skills/actors/SKILL.md +9 -8
- package/dist/skills/swarm/SKILL.md +1 -1
- package/docs/actor-inspector.md +20 -11
- package/docs/async-runs.md +16 -2
- package/docs/recipe-library.md +7 -3
- package/docs/template-recipes.md +4 -11
- package/docs/tool-registry.md +13 -4
- package/index.ts +27 -142
- package/lib/async-runs.ts +283 -67
- package/lib/automatic-review-runtime.ts +135 -0
- package/lib/command-templates.ts +1 -1
- package/lib/draft-consolidation-transaction.ts +821 -0
- package/lib/draft-consolidation.ts +181 -0
- package/lib/draft-review.ts +325 -0
- package/lib/draft-sleep.ts +576 -0
- package/lib/file-state.ts +143 -19
- package/lib/inspector-actions.ts +79 -0
- package/lib/inspector-command.ts +54 -0
- package/lib/inspector-overlay.ts +377 -91
- package/lib/inspector.ts +73 -1
- package/lib/observability.ts +194 -5
- package/lib/paths.ts +43 -0
- package/lib/recipes-discovery.ts +34 -26
- package/lib/recipes-usage.ts +569 -40
- package/lib/review-control.ts +137 -0
- package/lib/review-diagnostics.ts +164 -0
- package/lib/review-projection.ts +200 -0
- package/lib/run-ui-runtime.ts +153 -0
- package/lib/runs-artifacts.ts +1 -1
- package/lib/runs-control.ts +69 -6
- package/lib/runs-identity.ts +1 -1
- package/lib/runs-index.ts +57 -21
- package/lib/runs-mailbox.ts +1 -1
- package/lib/runs-messages.ts +1 -1
- package/lib/runs-outbox.ts +1 -1
- package/lib/runs-ownership.ts +23 -4
- package/lib/runs-parent-teardown.ts +257 -0
- package/lib/runs-process.ts +5 -4
- package/lib/runs-retention.ts +1 -1
- package/lib/runs-start.ts +13 -68
- package/lib/runs-status.ts +17 -8
- package/lib/runtime.ts +34 -17
- package/lib/tool-review-lineage-transaction.ts +881 -0
- package/lib/tool-review-lineage.ts +145 -0
- package/lib/tool-review-scheduler.ts +635 -0
- package/lib/tool-review-transaction.ts +563 -0
- package/lib/tool-review.ts +270 -0
- package/lib/tools-inspect.ts +35 -4
- package/lib/tools-local.ts +29 -4
- package/lib/tools-message.ts +45 -30
- package/lib/tools-spawn.ts +22 -2
- package/lib/tools.ts +5 -0
- package/package.json +5 -3
- package/recipes/draft-review.json +24 -0
- package/recipes/tool-review.json +24 -0
- package/scripts/async-runner.mjs +9 -9
- package/scripts/build-dist.mjs +6 -1
- package/scripts/conformance.mjs +6 -1
- package/scripts/recipe-utils.mjs +3 -3
- package/scripts/release-gates.mjs +165 -0
- package/skills/actors/SKILL.md +9 -8
- package/skills/swarm/SKILL.md +1 -1
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-review lineage projection.
|
|
3
|
+
* Zones: approved source coverage, target ownership, lineage transition semantics
|
|
4
|
+
* Owns deterministic keep/evolve/replace/demote/merge/split grouping; filesystem mutation and recovery remain separate.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type {
|
|
8
|
+
ToolReviewApprovedPlan,
|
|
9
|
+
ToolReviewApprovedSource,
|
|
10
|
+
ToolReviewApprovedTarget,
|
|
11
|
+
} from "./tool-review-transaction.ts";
|
|
12
|
+
|
|
13
|
+
export type ToolReviewLineageOperation =
|
|
14
|
+
| {
|
|
15
|
+
action: "keep";
|
|
16
|
+
sources: [ToolReviewApprovedSource];
|
|
17
|
+
targets: [];
|
|
18
|
+
}
|
|
19
|
+
| {
|
|
20
|
+
action: "demote" | "evolve" | "replace";
|
|
21
|
+
sources: [ToolReviewApprovedSource];
|
|
22
|
+
targets: [ToolReviewApprovedTarget];
|
|
23
|
+
}
|
|
24
|
+
| {
|
|
25
|
+
action: "merge";
|
|
26
|
+
sources: ToolReviewApprovedSource[];
|
|
27
|
+
targets: [ToolReviewApprovedTarget];
|
|
28
|
+
}
|
|
29
|
+
| {
|
|
30
|
+
action: "split";
|
|
31
|
+
sources: [ToolReviewApprovedSource];
|
|
32
|
+
targets: ToolReviewApprovedTarget[];
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
function sameNames(actual: string[], expected: string[]): boolean {
|
|
36
|
+
return (
|
|
37
|
+
actual.length === expected.length &&
|
|
38
|
+
[...actual].sort().every((name, index) => name === [...expected].sort()[index])
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function projectToolReviewLineage(
|
|
43
|
+
plan: ToolReviewApprovedPlan,
|
|
44
|
+
): ToolReviewLineageOperation[] {
|
|
45
|
+
const sources = new Map<string, ToolReviewApprovedSource>();
|
|
46
|
+
for (const source of plan.sources) {
|
|
47
|
+
if (sources.has(source.name)) {
|
|
48
|
+
throw new Error(`Duplicate tool review lineage source: ${source.name}`);
|
|
49
|
+
}
|
|
50
|
+
sources.set(source.name, source);
|
|
51
|
+
}
|
|
52
|
+
const targetsBySource = new Map<string, ToolReviewApprovedTarget[]>();
|
|
53
|
+
for (const target of plan.targets) {
|
|
54
|
+
if (target.sources.length === 0 || new Set(target.sources).size !== target.sources.length) {
|
|
55
|
+
throw new Error(`Invalid tool review lineage target sources: ${target.name}`);
|
|
56
|
+
}
|
|
57
|
+
for (const sourceName of target.sources) {
|
|
58
|
+
if (!sources.has(sourceName)) {
|
|
59
|
+
throw new Error(`Unknown tool review lineage target source: ${sourceName}`);
|
|
60
|
+
}
|
|
61
|
+
const entries = targetsBySource.get(sourceName) ?? [];
|
|
62
|
+
entries.push(target);
|
|
63
|
+
targetsBySource.set(sourceName, entries);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const operations: ToolReviewLineageOperation[] = [];
|
|
68
|
+
const handled = new Set<string>();
|
|
69
|
+
for (const source of plan.sources) {
|
|
70
|
+
if (handled.has(source.name)) continue;
|
|
71
|
+
const targets = targetsBySource.get(source.name) ?? [];
|
|
72
|
+
if (source.action === "keep") {
|
|
73
|
+
if (targets.length > 0) {
|
|
74
|
+
throw new Error(`Kept tool owns lineage targets: ${source.name}`);
|
|
75
|
+
}
|
|
76
|
+
operations.push({ action: "keep", sources: [source], targets: [] });
|
|
77
|
+
handled.add(source.name);
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (
|
|
81
|
+
source.action === "demote" ||
|
|
82
|
+
source.action === "evolve" ||
|
|
83
|
+
source.action === "replace"
|
|
84
|
+
) {
|
|
85
|
+
if (
|
|
86
|
+
targets.length !== 1 ||
|
|
87
|
+
targets[0]!.lineage !== source.action ||
|
|
88
|
+
!sameNames(targets[0]!.sources, [source.name])
|
|
89
|
+
) {
|
|
90
|
+
throw new Error(`Invalid ${source.action} lineage target: ${source.name}`);
|
|
91
|
+
}
|
|
92
|
+
operations.push({
|
|
93
|
+
action: source.action,
|
|
94
|
+
sources: [source],
|
|
95
|
+
targets: [targets[0]!],
|
|
96
|
+
});
|
|
97
|
+
handled.add(source.name);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (source.action === "merge") {
|
|
101
|
+
if (targets.length !== 1 || targets[0]!.lineage !== "merge") {
|
|
102
|
+
throw new Error(`Invalid merge lineage target: ${source.name}`);
|
|
103
|
+
}
|
|
104
|
+
const target = targets[0]!;
|
|
105
|
+
const groupSources = target.sources.map((name) => sources.get(name)!);
|
|
106
|
+
if (
|
|
107
|
+
groupSources.length < 2 ||
|
|
108
|
+
groupSources.some((candidate) => candidate.action !== "merge") ||
|
|
109
|
+
!sameNames(
|
|
110
|
+
target.sources,
|
|
111
|
+
groupSources.map((candidate) => candidate.name),
|
|
112
|
+
)
|
|
113
|
+
) {
|
|
114
|
+
throw new Error(`Invalid merge lineage group: ${target.name}`);
|
|
115
|
+
}
|
|
116
|
+
operations.push({ action: "merge", sources: groupSources, targets: [target] });
|
|
117
|
+
for (const candidate of groupSources) handled.add(candidate.name);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (source.action === "split") {
|
|
121
|
+
if (
|
|
122
|
+
targets.length < 2 ||
|
|
123
|
+
targets.some(
|
|
124
|
+
(target) =>
|
|
125
|
+
target.lineage !== "split" ||
|
|
126
|
+
!sameNames(target.sources, [source.name]),
|
|
127
|
+
)
|
|
128
|
+
) {
|
|
129
|
+
throw new Error(`Invalid split lineage targets: ${source.name}`);
|
|
130
|
+
}
|
|
131
|
+
operations.push({
|
|
132
|
+
action: "split",
|
|
133
|
+
sources: [source],
|
|
134
|
+
targets: [...targets].sort((left, right) => left.name.localeCompare(right.name)),
|
|
135
|
+
});
|
|
136
|
+
handled.add(source.name);
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
throw new Error(`Unsupported tool review lineage action: ${source.action}`);
|
|
140
|
+
}
|
|
141
|
+
if (handled.size !== plan.sources.length) {
|
|
142
|
+
throw new Error("Tool review lineage projection does not cover every source.");
|
|
143
|
+
}
|
|
144
|
+
return operations;
|
|
145
|
+
}
|