@owlmeans/agent 0.1.18-rc.39 → 0.1.18-rc.40
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/README.md +1 -1
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/agent/SKILL.md +96 -9
- package/build/model.d.ts.map +1 -1
- package/build/model.js +4 -1
- package/build/model.js.map +1 -1
- package/build/pipeline/index.d.ts +1 -0
- package/build/pipeline/index.d.ts.map +1 -1
- package/build/pipeline/index.js +1 -0
- package/build/pipeline/index.js.map +1 -1
- package/build/pipeline/results.d.ts +121 -0
- package/build/pipeline/results.d.ts.map +1 -0
- package/build/pipeline/results.js +572 -0
- package/build/pipeline/results.js.map +1 -0
- package/build/pipeline/runner.d.ts.map +1 -1
- package/build/pipeline/runner.js +170 -15
- package/build/pipeline/runner.js.map +1 -1
- package/build/pipeline/types.d.ts +140 -2
- package/build/pipeline/types.d.ts.map +1 -1
- package/build/runtime/checkpoint.d.ts +37 -0
- package/build/runtime/checkpoint.d.ts.map +1 -0
- package/build/runtime/checkpoint.js +52 -0
- package/build/runtime/checkpoint.js.map +1 -0
- package/build/stores/memory.d.ts +10 -1
- package/build/stores/memory.d.ts.map +1 -1
- package/build/stores/memory.js +0 -0
- package/build/stores/memory.js.map +1 -1
- package/build/stores/types.d.ts +23 -1
- package/build/stores/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/model.ts +4 -1
- package/src/pipeline/index.ts +1 -0
- package/src/pipeline/results.ts +827 -0
- package/src/pipeline/runner.ts +184 -15
- package/src/pipeline/types.ts +155 -2
- package/src/stores/memory.ts +0 -0
- package/src/stores/types.ts +24 -1
- package/tests/pipeline-compat.spec.ts +195 -0
- package/tests/pipeline-plugins.spec.ts +194 -0
- package/tests/pipeline-results.spec.ts +456 -0
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
import { CumulativeResultSource, DEFAULT_RESULT_SUMMARY_CHARS, DEFAULT_RESULTS_MAX_CHARS, DEFAULT_RESULTS_WINDOW, RESULTS_EVERY_STEP, ResultViewMode, compareResultOrder, factKey, orderPipelineSteps, pipelineAncestry, renderResultEntry, renderResultFact, renderResultSummary, resultLabel, rootRunOf, sortFacts, } from '@owlmeans/agent-common';
|
|
2
|
+
import { prefixHash } from '@owlmeans/llm';
|
|
3
|
+
import { createMemoryCumulativeResultStore } from '../stores/memory.js';
|
|
4
|
+
/** The plugin's alias. Seated under it, so wiring it twice replaces rather than doubles. */
|
|
5
|
+
export const CUMULATIVE_RESULTS_PLUGIN = 'cumulative-results';
|
|
6
|
+
/** The answer shape a summary is asked for when its declaration names none. */
|
|
7
|
+
export const DEFAULT_RESULT_SUMMARY_SCHEMA = {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: { summary: { type: 'string' } },
|
|
10
|
+
required: ['summary'],
|
|
11
|
+
additionalProperties: false,
|
|
12
|
+
};
|
|
13
|
+
const SEPARATOR = '\n\n';
|
|
14
|
+
const compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
15
|
+
const keyOf = (runId, step) => `${runId}\u0000${step}`;
|
|
16
|
+
const normalizePath = (path) => path.trim().replace(/\\/g, '/').replace(/^(\.\/)+/, '').replace(/\/{2,}/g, '/');
|
|
17
|
+
const uniqueSorted = (paths) => [...new Set([...paths].map(normalizePath).filter(path => path !== ''))].sort(compare);
|
|
18
|
+
const pathsOf = (facts) => facts.flatMap(fact => fact.path != null && fact.path !== '' ? [fact.path] : []);
|
|
19
|
+
/** First occurrence of each fact key wins — a step's own recorded facts come first. */
|
|
20
|
+
const dedupe = (facts) => {
|
|
21
|
+
const seen = new Set();
|
|
22
|
+
return facts.filter(fact => {
|
|
23
|
+
const key = factKey(fact);
|
|
24
|
+
if (seen.has(key)) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
seen.add(key);
|
|
28
|
+
return true;
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
const copyFact = (fact) => ({
|
|
32
|
+
...fact,
|
|
33
|
+
...(fact.members != null ? { members: [...fact.members] } : {}),
|
|
34
|
+
...(fact.attrs != null ? { attrs: { ...fact.attrs } } : {}),
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Deep-frozen, because an entry is handed out by reference — to every view that shows it and to
|
|
38
|
+
* every caller of `entries()` — and one caller editing it in place would edit all of them.
|
|
39
|
+
*/
|
|
40
|
+
const freezeEntry = (entry) => Object.freeze({
|
|
41
|
+
...entry,
|
|
42
|
+
order: Object.freeze([...entry.order]),
|
|
43
|
+
files: Object.freeze([...entry.files]),
|
|
44
|
+
facts: Object.freeze(entry.facts.map(fact => Object.freeze(copyFact(fact)))),
|
|
45
|
+
...(Array.isArray(entry.fullFor) ? { fullFor: Object.freeze([...entry.fullFor]) } : {}),
|
|
46
|
+
...(entry.omitFor != null ? { omitFor: Object.freeze([...entry.omitFor]) } : {}),
|
|
47
|
+
});
|
|
48
|
+
const hasExtractors = (spec) => (spec?.extractors?.length ?? 0) > 0;
|
|
49
|
+
const extractFn = (extractor) => typeof extractor === 'function' ? extractor : extractor.extract;
|
|
50
|
+
const summaryPrompt = (spec, label, facts, files, maxChars) => [
|
|
51
|
+
spec.instructions.trim(),
|
|
52
|
+
`The step "${label}" has just finished. For the later steps of the same work, summarize what it `
|
|
53
|
+
+ 'decided or produced that the facts below do not already say. Do not repeat the facts and do not '
|
|
54
|
+
+ `guess at anything not shown. At most ${maxChars} characters.`,
|
|
55
|
+
`# Facts read from the files after the step finished\n${facts.map(renderResultFact).join('\n') || '(none)'}`,
|
|
56
|
+
`# Files the step answers for\n${files.map(file => `- ${file}`).join('\n') || '(none)'}`,
|
|
57
|
+
].join(SEPARATOR);
|
|
58
|
+
/**
|
|
59
|
+
* CUMULATIVE PIPELINE RESULTS: every step is told, in its prompt and through a typed query, what
|
|
60
|
+
* the steps before it produced — read from the files by code, not recalled by a model.
|
|
61
|
+
*
|
|
62
|
+
* - `enter` decides the LEDGER the run's entries belong to (its parent's for a composed run, else
|
|
63
|
+
* the root run's id). A fresh start or a restart forgets the run's own earlier entries; a
|
|
64
|
+
* continuation loads them and silently REBUILDS any that are missing from the finished steps'
|
|
65
|
+
* durable inputs — so a resume never depends on the ledger having survived, only the quality
|
|
66
|
+
* of what the next step is told does.
|
|
67
|
+
* - `beforeStep` cuts the step's VIEW once: every predecessor's entry, full within the window or
|
|
68
|
+
* when the producer names the step, names only otherwise, inside a character budget that drops
|
|
69
|
+
* the oldest entries to names only and then out — never cutting an entry's own text.
|
|
70
|
+
* - `afterStep` extracts the step's entry from its durable scope and what it recorded, leaves any
|
|
71
|
+
* fact an earlier entry already owns to that entry, re-extracts earlier entries whose files the
|
|
72
|
+
* step rewrote, and persists — all before the runner marks the step complete.
|
|
73
|
+
* - `passStep` gives a skipped step the entry its files still support, and an optional step that
|
|
74
|
+
* failed a partial one.
|
|
75
|
+
*
|
|
76
|
+
* Everything here is an enhancement. A store that fails, an extractor that throws or a summary
|
|
77
|
+
* that cannot be had costs a step some context and is logged; it never fails the run.
|
|
78
|
+
*/
|
|
79
|
+
export const cumulativeResultsPlugin = (options) => {
|
|
80
|
+
const alias = options.alias ?? CUMULATIVE_RESULTS_PLUGIN;
|
|
81
|
+
const store = options.store ?? createMemoryCumulativeResultStore();
|
|
82
|
+
const trace = options.trace ?? (() => undefined);
|
|
83
|
+
const runs = new Map();
|
|
84
|
+
const warn = (what, e) => {
|
|
85
|
+
console.warn(`Cumulative results (${alias}): ${what}`, ...(e != null ? [e] : []));
|
|
86
|
+
};
|
|
87
|
+
const say = (run, line) => {
|
|
88
|
+
trace(`[results:${run.spec.alias}:${run.runId}] ${line}`);
|
|
89
|
+
};
|
|
90
|
+
const orderOf = (run, step) => [...run.trail, run.index.get(step) ?? 0];
|
|
91
|
+
/**
|
|
92
|
+
* The ledger as the store holds it — except this run's own entries, which only this plugin writes
|
|
93
|
+
* and whose in-memory copy is therefore never older than the stored one (a failed `put` leaves
|
|
94
|
+
* the store behind, never ahead). A store that cannot be read leaves what is held untouched.
|
|
95
|
+
*/
|
|
96
|
+
const reload = async (run) => {
|
|
97
|
+
let listed;
|
|
98
|
+
try {
|
|
99
|
+
listed = await store.list(run.ledger);
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
warn(`could not read ledger ${run.ledger}`, e);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const next = new Map();
|
|
106
|
+
for (const entry of listed) {
|
|
107
|
+
next.set(keyOf(entry.runId, entry.step), freezeEntry(entry));
|
|
108
|
+
}
|
|
109
|
+
for (const [key, entry] of run.entries) {
|
|
110
|
+
if (entry.runId === run.runId) {
|
|
111
|
+
next.set(key, entry);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
run.entries = next;
|
|
115
|
+
};
|
|
116
|
+
const persist = async (run, entry) => {
|
|
117
|
+
run.entries.set(keyOf(entry.runId, entry.step), entry);
|
|
118
|
+
try {
|
|
119
|
+
// A plain copy: a store adapter may annotate what it is given (an `_id`), and the held entry
|
|
120
|
+
// is frozen.
|
|
121
|
+
await store.put(JSON.parse(JSON.stringify(entry)));
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
warn(`could not store ${entry.label}; a resume will rebuild it`, e);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
/** The step of THIS run an entry belongs to: its own step, or the step a composed run ran under. */
|
|
128
|
+
const anchorOf = (run, entry) => {
|
|
129
|
+
if (entry.runId === run.runId) {
|
|
130
|
+
return entry.step;
|
|
131
|
+
}
|
|
132
|
+
if (entry.runId.startsWith(`${run.runId}/`)) {
|
|
133
|
+
return entry.runId.slice(run.runId.length + 1).split('/')[0] ?? null;
|
|
134
|
+
}
|
|
135
|
+
return null;
|
|
136
|
+
};
|
|
137
|
+
const modeFor = (run, entry, consumer, depth) => {
|
|
138
|
+
if (entry.omitFor?.includes(consumer) === true) {
|
|
139
|
+
return { mode: ResultViewMode.Omitted, explicit: false };
|
|
140
|
+
}
|
|
141
|
+
if (entry.fullFor === RESULTS_EVERY_STEP) {
|
|
142
|
+
return { mode: ResultViewMode.Full, explicit: false };
|
|
143
|
+
}
|
|
144
|
+
if (Array.isArray(entry.fullFor) && entry.fullFor.includes(consumer)) {
|
|
145
|
+
return { mode: ResultViewMode.Full, explicit: true };
|
|
146
|
+
}
|
|
147
|
+
const window = entry.window ?? run.results.window ?? DEFAULT_RESULTS_WINDOW;
|
|
148
|
+
return { mode: depth <= window ? ResultViewMode.Full : ResultViewMode.Compact, explicit: false };
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Every entry a step can see, oldest first, as its producer's declaration shows it: what the run
|
|
152
|
+
* was handed by the step it is composed under, the seeds, then every predecessor's entry and the
|
|
153
|
+
* entries of runs composed under a predecessor. Nothing else — a sibling branch has not
|
|
154
|
+
* necessarily run, so what it says cannot be what a step relies on.
|
|
155
|
+
*/
|
|
156
|
+
const visibleTo = (run, step) => {
|
|
157
|
+
const depths = new Map(pipelineAncestry(run.spec, step).map(({ step: name, depth }) => [name, depth]));
|
|
158
|
+
const items = [
|
|
159
|
+
...run.upstream.map(visible => ({
|
|
160
|
+
entry: visible.entry, mode: visible.mode, explicit: false, dropped: visible.dropped === true,
|
|
161
|
+
})),
|
|
162
|
+
...run.seeds.map(entry => ({ entry, mode: ResultViewMode.Full, explicit: false, dropped: false })),
|
|
163
|
+
];
|
|
164
|
+
for (const entry of run.entries.values()) {
|
|
165
|
+
const anchor = anchorOf(run, entry);
|
|
166
|
+
const depth = anchor != null ? depths.get(anchor) : undefined;
|
|
167
|
+
if (depth != null) {
|
|
168
|
+
items.push({ entry, ...modeFor(run, entry, step, depth), dropped: false });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return items.sort((a, b) => compareResultOrder(a.entry.order, b.entry.order) || compare(a.entry.label, b.entry.label));
|
|
172
|
+
};
|
|
173
|
+
const textOf = (item) => item.mode === ResultViewMode.Full
|
|
174
|
+
? item.entry.full
|
|
175
|
+
: item.mode === ResultViewMode.Compact ? item.entry.compact : '';
|
|
176
|
+
/** The step's view, inside the budget. See the plugin's own description for the order of cuts. */
|
|
177
|
+
const cut = (run, step) => {
|
|
178
|
+
const items = visibleTo(run, step);
|
|
179
|
+
const maxChars = run.results.maxChars ?? DEFAULT_RESULTS_MAX_CHARS;
|
|
180
|
+
const measure = () => items.map(textOf).filter(text => text !== '').join(SEPARATOR).length;
|
|
181
|
+
let total = measure();
|
|
182
|
+
const downgrade = (explicit, from) => {
|
|
183
|
+
for (const item of items) {
|
|
184
|
+
if (total <= maxChars) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (item.explicit !== explicit || item.mode !== from || textOf(item) === '') {
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if (from === ResultViewMode.Full) {
|
|
191
|
+
item.mode = ResultViewMode.Compact;
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
item.mode = ResultViewMode.Omitted;
|
|
195
|
+
item.dropped = true;
|
|
196
|
+
}
|
|
197
|
+
total = measure();
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
// Oldest first, and whatever a producer has not named this step for goes before what it has.
|
|
201
|
+
downgrade(false, ResultViewMode.Full);
|
|
202
|
+
downgrade(false, ResultViewMode.Compact);
|
|
203
|
+
downgrade(true, ResultViewMode.Full);
|
|
204
|
+
downgrade(true, ResultViewMode.Compact);
|
|
205
|
+
const sections = items
|
|
206
|
+
.filter(item => textOf(item) !== '')
|
|
207
|
+
.map(item => Object.freeze({ step: item.entry.label, text: textOf(item) }));
|
|
208
|
+
const omitted = items
|
|
209
|
+
.filter(item => item.mode === ResultViewMode.Omitted && item.dropped && item.entry.full !== '')
|
|
210
|
+
.map(item => item.entry.label);
|
|
211
|
+
const joined = sections.map(section => section.text).join(SEPARATOR);
|
|
212
|
+
const view = Object.freeze({
|
|
213
|
+
step: resultLabel(run.ledger, run.runId, step),
|
|
214
|
+
sections: Object.freeze(sections),
|
|
215
|
+
omitted: Object.freeze(omitted),
|
|
216
|
+
chars: joined.length,
|
|
217
|
+
digest: prefixHash(`${joined}\u0000${omitted.join('\u0000')}`),
|
|
218
|
+
});
|
|
219
|
+
const visible = Object.freeze(items.map(item => Object.freeze({
|
|
220
|
+
entry: item.entry, mode: item.mode, ...(item.dropped ? { dropped: true } : {}),
|
|
221
|
+
})));
|
|
222
|
+
say(run, `${step} view · sections=${sections.length} chars=${view.chars}`
|
|
223
|
+
+ ` omitted=${omitted.length} digest=${view.digest}`);
|
|
224
|
+
const results = {
|
|
225
|
+
ledger: run.ledger,
|
|
226
|
+
order: Object.freeze(orderOf(run, step)),
|
|
227
|
+
view,
|
|
228
|
+
entries: () => visible,
|
|
229
|
+
facts: (query = {}) => visible.flatMap(({ entry }) => query.step == null || entry.step === query.step || entry.label === query.step
|
|
230
|
+
? entry.facts
|
|
231
|
+
.filter(fact => (query.kind == null || fact.kind === query.kind)
|
|
232
|
+
&& (query.name == null || fact.name === query.name))
|
|
233
|
+
.map(copyFact)
|
|
234
|
+
: []),
|
|
235
|
+
record: input => {
|
|
236
|
+
const buffer = run.recorded.get(step) ?? { files: new Set(), facts: [] };
|
|
237
|
+
for (const file of input.files ?? []) {
|
|
238
|
+
buffer.files.add(normalizePath(file));
|
|
239
|
+
}
|
|
240
|
+
buffer.facts.push(...(input.facts ?? []).map(copyFact));
|
|
241
|
+
run.recorded.set(step, buffer);
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
return Object.freeze(results);
|
|
245
|
+
};
|
|
246
|
+
const take = (run, step) => {
|
|
247
|
+
const buffer = run.recorded.get(step) ?? { files: new Set(), facts: [] };
|
|
248
|
+
run.recorded.delete(step);
|
|
249
|
+
return buffer;
|
|
250
|
+
};
|
|
251
|
+
const scopeOf = async (run, step, state) => {
|
|
252
|
+
const files = [];
|
|
253
|
+
for (const name of run.results.steps?.[step]?.extractors ?? []) {
|
|
254
|
+
const extractor = options.extractors?.[name];
|
|
255
|
+
if (extractor == null || typeof extractor === 'function' || extractor.scope == null) {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
try {
|
|
259
|
+
files.push(...await extractor.scope({
|
|
260
|
+
pipeline: run.spec.alias, runId: run.runId, step, state, deps: run.deps,
|
|
261
|
+
}));
|
|
262
|
+
}
|
|
263
|
+
catch (e) {
|
|
264
|
+
warn(`scope of extractor ${name} failed for ${step}`, e);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return uniqueSorted(files);
|
|
268
|
+
};
|
|
269
|
+
const extract = async (run, step, state, files, changed) => {
|
|
270
|
+
const facts = [];
|
|
271
|
+
for (const name of run.results.steps?.[step]?.extractors ?? []) {
|
|
272
|
+
const extractor = options.extractors?.[name];
|
|
273
|
+
if (extractor == null) {
|
|
274
|
+
warn(`step ${step} names an extractor nobody registered: ${name}`);
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
try {
|
|
278
|
+
facts.push(...(await extractFn(extractor)({
|
|
279
|
+
pipeline: run.spec.alias, runId: run.runId, step, state, deps: run.deps, files, changed,
|
|
280
|
+
}) ?? []));
|
|
281
|
+
}
|
|
282
|
+
catch (e) {
|
|
283
|
+
warn(`extractor ${name} failed for ${step}`, e);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return facts;
|
|
287
|
+
};
|
|
288
|
+
/**
|
|
289
|
+
* Facts no earlier entry already owns. "Earlier" is what the step can see, plus the runs composed
|
|
290
|
+
* under the step itself, whose entries are written before the step's own.
|
|
291
|
+
*/
|
|
292
|
+
const unowned = (run, step, facts) => {
|
|
293
|
+
const owned = new Set();
|
|
294
|
+
for (const item of visibleTo(run, step)) {
|
|
295
|
+
for (const fact of item.entry.facts) {
|
|
296
|
+
owned.add(factKey(fact));
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
for (const entry of run.entries.values()) {
|
|
300
|
+
if (entry.runId.startsWith(`${run.runId}/${step}`) && anchorOf(run, entry) === step) {
|
|
301
|
+
for (const fact of entry.facts) {
|
|
302
|
+
owned.add(factKey(fact));
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return facts.filter(fact => !owned.has(factKey(fact)));
|
|
307
|
+
};
|
|
308
|
+
/** A step's facts and files, from its durable scope, what it recorded, and its extractors. */
|
|
309
|
+
const collect = async (run, step, state, changed, recorded) => {
|
|
310
|
+
const files = uniqueSorted([...await scopeOf(run, step, state), ...changed]);
|
|
311
|
+
const facts = unowned(run, step, dedupe([...recorded, ...await extract(run, step, state, files, changed)]));
|
|
312
|
+
return { facts, files: uniqueSorted([...files, ...pathsOf(facts)]) };
|
|
313
|
+
};
|
|
314
|
+
const compose = (run, step, parts) => {
|
|
315
|
+
const previous = run.entries.get(keyOf(run.runId, step));
|
|
316
|
+
const label = resultLabel(run.ledger, run.runId, step);
|
|
317
|
+
const source = parts.facts.length === 0 && parts.summary != null
|
|
318
|
+
? CumulativeResultSource.Summarized
|
|
319
|
+
: parts.source;
|
|
320
|
+
const facts = sortFacts(parts.facts);
|
|
321
|
+
const rendered = renderResultEntry({ label, source, facts, ...(parts.partial === true ? { partial: true } : {}), ...(parts.summary != null ? { summary: parts.summary } : {}) }, {
|
|
322
|
+
maxChars: parts.spec?.maxChars ?? run.results.maxEntryChars,
|
|
323
|
+
maxCompactChars: parts.spec?.maxCompactChars ?? run.results.maxCompactChars,
|
|
324
|
+
});
|
|
325
|
+
return freezeEntry({
|
|
326
|
+
ledger: run.ledger,
|
|
327
|
+
pipeline: run.spec.alias,
|
|
328
|
+
runId: run.runId,
|
|
329
|
+
step,
|
|
330
|
+
label,
|
|
331
|
+
order: parts.order,
|
|
332
|
+
revision: (previous?.revision ?? 0) + 1,
|
|
333
|
+
source,
|
|
334
|
+
...(parts.partial === true ? { partial: true } : {}),
|
|
335
|
+
facts,
|
|
336
|
+
files: parts.files,
|
|
337
|
+
...(parts.summary != null ? { summary: parts.summary } : {}),
|
|
338
|
+
full: rendered.full,
|
|
339
|
+
compact: rendered.compact,
|
|
340
|
+
...(parts.spec?.full != null ? { fullFor: parts.spec.full } : {}),
|
|
341
|
+
...(parts.spec?.omit != null ? { omitFor: parts.spec.omit } : {}),
|
|
342
|
+
...(parts.spec?.window != null ? { window: parts.spec.window } : {}),
|
|
343
|
+
updatedAt: new Date().toISOString(),
|
|
344
|
+
});
|
|
345
|
+
};
|
|
346
|
+
/**
|
|
347
|
+
* Re-read every earlier entry of this run whose files the step just rewrote — a repair of an
|
|
348
|
+
* earlier step's output would otherwise leave that step's entry describing a file that no longer
|
|
349
|
+
* says it. The refreshed entry keeps what its extractors find now, plus its earlier facts about
|
|
350
|
+
* files the step did not touch.
|
|
351
|
+
*/
|
|
352
|
+
const refreshEarlier = async (run, step, changed, state) => {
|
|
353
|
+
if (changed.length === 0) {
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
const mine = orderOf(run, step);
|
|
357
|
+
const earlier = [...run.entries.values()]
|
|
358
|
+
.filter(entry => entry.runId === run.runId && entry.step !== step
|
|
359
|
+
&& compareResultOrder(entry.order, mine) < 0)
|
|
360
|
+
.sort((a, b) => compareResultOrder(a.order, b.order));
|
|
361
|
+
for (const entry of earlier) {
|
|
362
|
+
const spec = run.results.steps?.[entry.step];
|
|
363
|
+
if (!hasExtractors(spec) || (spec?.refresh ?? run.results.refresh ?? true) === false) {
|
|
364
|
+
continue;
|
|
365
|
+
}
|
|
366
|
+
const overlap = entry.files.filter(file => changed.includes(file));
|
|
367
|
+
if (overlap.length === 0) {
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
370
|
+
const fresh = await extract(run, entry.step, state, entry.files, overlap);
|
|
371
|
+
const freshKeys = new Set(fresh.map(factKey));
|
|
372
|
+
const kept = entry.facts.filter(fact => !freshKeys.has(factKey(fact))
|
|
373
|
+
&& (fact.path == null || !overlap.includes(normalizePath(fact.path))));
|
|
374
|
+
const facts = unowned(run, entry.step, dedupe([...fresh, ...kept]));
|
|
375
|
+
const refreshed = compose(run, entry.step, {
|
|
376
|
+
facts,
|
|
377
|
+
files: uniqueSorted([...entry.files, ...pathsOf(facts)]),
|
|
378
|
+
source: entry.source === CumulativeResultSource.Summarized
|
|
379
|
+
? CumulativeResultSource.Extracted
|
|
380
|
+
: entry.source,
|
|
381
|
+
order: [...entry.order],
|
|
382
|
+
...(spec != null ? { spec } : {}),
|
|
383
|
+
...(entry.partial === true ? { partial: true } : {}),
|
|
384
|
+
...(entry.summary != null ? { summary: entry.summary } : {}),
|
|
385
|
+
});
|
|
386
|
+
await persist(run, refreshed);
|
|
387
|
+
say(run, `${step} rewrote ${overlap.length} file(s) of ${entry.label} · revision=${refreshed.revision}`);
|
|
388
|
+
}
|
|
389
|
+
};
|
|
390
|
+
const summaryOf = async (run, step, ctx, state, facts, files) => {
|
|
391
|
+
const spec = run.results.steps?.[step]?.summary;
|
|
392
|
+
if (spec == null || options.summarize == null) {
|
|
393
|
+
return undefined;
|
|
394
|
+
}
|
|
395
|
+
const maxChars = spec.maxChars ?? DEFAULT_RESULT_SUMMARY_CHARS;
|
|
396
|
+
const label = resultLabel(run.ledger, run.runId, step);
|
|
397
|
+
try {
|
|
398
|
+
const answer = await options.summarize({
|
|
399
|
+
...spec,
|
|
400
|
+
schema: spec.schema ?? DEFAULT_RESULT_SUMMARY_SCHEMA,
|
|
401
|
+
maxChars,
|
|
402
|
+
pipeline: run.spec.alias,
|
|
403
|
+
runId: run.runId,
|
|
404
|
+
step,
|
|
405
|
+
label,
|
|
406
|
+
facts,
|
|
407
|
+
files,
|
|
408
|
+
state,
|
|
409
|
+
deps: run.deps,
|
|
410
|
+
signal: ctx.signal,
|
|
411
|
+
prompt: summaryPrompt(spec, label, facts, files, maxChars),
|
|
412
|
+
});
|
|
413
|
+
const text = renderResultSummary(answer, maxChars);
|
|
414
|
+
return text !== '' ? text : undefined;
|
|
415
|
+
}
|
|
416
|
+
catch (e) {
|
|
417
|
+
// A summary is the unverified extra. Without it the step's facts still stand.
|
|
418
|
+
warn(`summary of ${step} failed; the entry goes without one`, e);
|
|
419
|
+
return undefined;
|
|
420
|
+
}
|
|
421
|
+
};
|
|
422
|
+
return {
|
|
423
|
+
alias,
|
|
424
|
+
...(options.order != null ? { order: options.order } : {}),
|
|
425
|
+
enter: async (event) => {
|
|
426
|
+
runs.delete(event.runId);
|
|
427
|
+
const info = {
|
|
428
|
+
pipeline: event.spec.alias,
|
|
429
|
+
spec: event.spec,
|
|
430
|
+
runId: event.runId,
|
|
431
|
+
scope: event.scope,
|
|
432
|
+
...(event.entityId != null ? { entityId: event.entityId } : {}),
|
|
433
|
+
deps: event.deps,
|
|
434
|
+
state: event.state,
|
|
435
|
+
mode: event.mode,
|
|
436
|
+
...(event.parent != null ? { parent: event.parent } : {}),
|
|
437
|
+
};
|
|
438
|
+
const declared = typeof options.spec === 'function' ? await options.spec(info) : options.spec;
|
|
439
|
+
if (declared == null || declared === false) {
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
442
|
+
const parent = event.parent?.results;
|
|
443
|
+
const ledger = options.ledger?.(info) ?? parent?.ledger ?? rootRunOf(event.runId);
|
|
444
|
+
const run = {
|
|
445
|
+
results: declared,
|
|
446
|
+
spec: event.spec,
|
|
447
|
+
runId: event.runId,
|
|
448
|
+
ledger,
|
|
449
|
+
trail: parent != null ? [...parent.order] : [],
|
|
450
|
+
index: new Map(orderPipelineSteps(event.spec).map((step, at) => [step, at + 1])),
|
|
451
|
+
entries: new Map(),
|
|
452
|
+
upstream: parent != null ? parent.entries() : [],
|
|
453
|
+
seeds: [],
|
|
454
|
+
views: new Map(),
|
|
455
|
+
recorded: new Map(),
|
|
456
|
+
deps: event.deps,
|
|
457
|
+
};
|
|
458
|
+
if (event.mode !== 'continue') {
|
|
459
|
+
try {
|
|
460
|
+
await store.clear(ledger, event.runId);
|
|
461
|
+
}
|
|
462
|
+
catch (e) {
|
|
463
|
+
warn(`could not clear the earlier entries of ${event.runId}`, e);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
await reload(run);
|
|
467
|
+
for (const name of Object.keys(options.seeds ?? {}).sort(compare)) {
|
|
468
|
+
try {
|
|
469
|
+
const facts = dedupe(await options.seeds[name](info));
|
|
470
|
+
run.seeds.push(compose(run, name, {
|
|
471
|
+
facts, files: uniqueSorted(pathsOf(facts)), source: CumulativeResultSource.Seeded,
|
|
472
|
+
order: [...run.trail, 0],
|
|
473
|
+
}));
|
|
474
|
+
}
|
|
475
|
+
catch (e) {
|
|
476
|
+
warn(`seed ${name} failed`, e);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
runs.set(event.runId, run);
|
|
480
|
+
// A continuation's finished steps must have their entries, whether or not the ledger kept
|
|
481
|
+
// them — a store outage, an expiry, a crash between a fact and its `put`. They are read again
|
|
482
|
+
// from the steps' DURABLE inputs; never from what a step once recorded, which is gone.
|
|
483
|
+
let rebuilt = 0;
|
|
484
|
+
for (const step of event.inherited) {
|
|
485
|
+
if (run.entries.has(keyOf(run.runId, step)) || !hasExtractors(run.results.steps?.[step])) {
|
|
486
|
+
continue;
|
|
487
|
+
}
|
|
488
|
+
const collected = await collect(run, step, event.state, [], []);
|
|
489
|
+
await persist(run, compose(run, step, {
|
|
490
|
+
...collected, source: CumulativeResultSource.Rebuilt, order: orderOf(run, step),
|
|
491
|
+
...(run.results.steps?.[step] != null ? { spec: run.results.steps[step] } : {}),
|
|
492
|
+
}));
|
|
493
|
+
rebuilt += 1;
|
|
494
|
+
}
|
|
495
|
+
say(run, `enter ${event.mode} · ledger=${ledger} entries=${run.entries.size} rebuilt=${rebuilt}`);
|
|
496
|
+
},
|
|
497
|
+
beforeStep: async ({ step, ctx }) => {
|
|
498
|
+
const run = runs.get(ctx.runId);
|
|
499
|
+
if (run == null) {
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
const memo = run.views.get(step);
|
|
503
|
+
if (memo != null) {
|
|
504
|
+
return { results: memo };
|
|
505
|
+
}
|
|
506
|
+
// A run composed under an earlier step wrote its entries through its own plugin instance.
|
|
507
|
+
await reload(run);
|
|
508
|
+
const results = cut(run, step);
|
|
509
|
+
run.views.set(step, results);
|
|
510
|
+
return { results };
|
|
511
|
+
},
|
|
512
|
+
afterStep: async ({ step, ctx, state }) => {
|
|
513
|
+
const run = runs.get(ctx.runId);
|
|
514
|
+
if (run == null) {
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
const buffer = take(run, step);
|
|
518
|
+
const spec = run.results.steps?.[step];
|
|
519
|
+
if (spec == null && buffer.files.size === 0 && buffer.facts.length === 0
|
|
520
|
+
&& !run.entries.has(keyOf(run.runId, step))) {
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
await reload(run);
|
|
524
|
+
const changed = uniqueSorted(buffer.files);
|
|
525
|
+
await refreshEarlier(run, step, changed, state);
|
|
526
|
+
const collected = await collect(run, step, state, changed, buffer.facts);
|
|
527
|
+
const summary = await summaryOf(run, step, ctx, state, collected.facts, collected.files);
|
|
528
|
+
const entry = compose(run, step, {
|
|
529
|
+
...collected, source: CumulativeResultSource.Extracted, order: orderOf(run, step),
|
|
530
|
+
...(spec != null ? { spec } : {}), ...(summary != null ? { summary } : {}),
|
|
531
|
+
});
|
|
532
|
+
await persist(run, entry);
|
|
533
|
+
say(run, `${step} entry · facts=${entry.facts.length} files=${entry.files.length} revision=${entry.revision}`);
|
|
534
|
+
},
|
|
535
|
+
passStep: async ({ step, ctx, state, reason }) => {
|
|
536
|
+
const run = runs.get(ctx.runId);
|
|
537
|
+
if (run == null) {
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
const buffer = take(run, step);
|
|
541
|
+
const spec = run.results.steps?.[step];
|
|
542
|
+
await reload(run);
|
|
543
|
+
if (reason === 'skipped') {
|
|
544
|
+
// A guard that skips is saying the work is already there. What its files support is what
|
|
545
|
+
// the step's entry is; what a real earlier run stored stands as it is.
|
|
546
|
+
if (run.entries.has(keyOf(run.runId, step)) || !hasExtractors(spec)) {
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
const collected = await collect(run, step, state, [], []);
|
|
550
|
+
await persist(run, compose(run, step, {
|
|
551
|
+
...collected, source: CumulativeResultSource.Rebuilt, order: orderOf(run, step),
|
|
552
|
+
...(spec != null ? { spec } : {}),
|
|
553
|
+
}));
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
if (spec == null && buffer.files.size === 0 && buffer.facts.length === 0) {
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
const changed = uniqueSorted(buffer.files);
|
|
560
|
+
await refreshEarlier(run, step, changed, state);
|
|
561
|
+
const collected = await collect(run, step, state, changed, buffer.facts);
|
|
562
|
+
await persist(run, compose(run, step, {
|
|
563
|
+
...collected, source: CumulativeResultSource.Extracted, order: orderOf(run, step),
|
|
564
|
+
partial: true, ...(spec != null ? { spec } : {}),
|
|
565
|
+
}));
|
|
566
|
+
},
|
|
567
|
+
exit: async ({ runId }) => {
|
|
568
|
+
runs.delete(runId);
|
|
569
|
+
},
|
|
570
|
+
};
|
|
571
|
+
};
|
|
572
|
+
//# sourceMappingURL=results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/pipeline/results.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACyC,YAAY,EAAE,aAAa,EAC/E,MAAM,wBAAwB,CAAA;AAG/B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACyC,YAAY,EAAE,aAAa,EAC/E,MAAM,wBAAwB,CAAA;AAG/B,OAAO,KAAK,EAC6B,aAAa,EAAE,eAAe,EAGtE,MAAM,YAAY,CAAA;AA+EnB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,aAAa,EAAE,CAAC,QAC/C,YAAY,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,KACjD,aAAa,CAAC,CAAC,EAAE,CAAC,CAwwBpB,CAAA"}
|