@owlmeans/agent-common 0.1.18-rc.47 → 0.1.18-rc.49

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 (62) hide show
  1. package/README.md +174 -13
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/agent-common/SKILL.md +1 -1
  4. package/build/consts.d.ts +20 -0
  5. package/build/consts.d.ts.map +1 -1
  6. package/build/consts.js +103 -0
  7. package/build/consts.js.map +1 -1
  8. package/build/errors.d.ts +1 -1
  9. package/build/errors.js +1 -1
  10. package/build/helpers/conversation.d.ts +0 -9
  11. package/build/helpers/conversation.d.ts.map +1 -1
  12. package/build/helpers/conversation.js +0 -28
  13. package/build/helpers/conversation.js.map +1 -1
  14. package/build/helpers/truncate.d.ts +10 -0
  15. package/build/helpers/truncate.d.ts.map +1 -0
  16. package/build/helpers/truncate.js +29 -0
  17. package/build/helpers/truncate.js.map +1 -0
  18. package/build/index.d.ts +4 -1
  19. package/build/index.d.ts.map +1 -1
  20. package/build/index.js +2 -1
  21. package/build/index.js.map +1 -1
  22. package/build/models/pipeline-spec/types.d.ts +57 -0
  23. package/build/models/pipeline-spec/types.d.ts.map +1 -0
  24. package/build/models/pipeline-spec/types.js +2 -0
  25. package/build/models/pipeline-spec/types.js.map +1 -0
  26. package/build/models/pipeline-spec.d.ts +4 -0
  27. package/build/models/pipeline-spec.d.ts.map +1 -0
  28. package/build/models/pipeline-spec.js +171 -0
  29. package/build/models/pipeline-spec.js.map +1 -0
  30. package/build/pipeline.d.ts +4 -43
  31. package/build/pipeline.d.ts.map +1 -1
  32. package/build/pipeline.js +9 -205
  33. package/build/pipeline.js.map +1 -1
  34. package/build/results/types.d.ts +211 -0
  35. package/build/results/types.d.ts.map +1 -0
  36. package/build/results/types.js +2 -0
  37. package/build/results/types.js.map +1 -0
  38. package/build/results.d.ts +3 -55
  39. package/build/results.d.ts.map +1 -1
  40. package/build/results.js +202 -250
  41. package/build/results.js.map +1 -1
  42. package/build/types.d.ts +1 -137
  43. package/build/types.d.ts.map +1 -1
  44. package/package.json +5 -5
  45. package/src/consts.ts +113 -0
  46. package/src/errors.ts +1 -1
  47. package/src/helpers/conversation.ts +0 -32
  48. package/src/helpers/truncate.ts +31 -0
  49. package/src/index.ts +4 -1
  50. package/src/models/pipeline-spec/types.ts +58 -0
  51. package/src/models/pipeline-spec.ts +202 -0
  52. package/src/pipeline.ts +10 -231
  53. package/src/results/types.ts +221 -0
  54. package/src/results.ts +229 -274
  55. package/src/types.ts +2 -147
  56. package/tests/pipeline.spec.ts +26 -29
  57. package/tests/results.spec.ts +24 -26
  58. package/build/flows.d.ts +0 -21
  59. package/build/flows.d.ts.map +0 -1
  60. package/build/flows.js +0 -105
  61. package/build/flows.js.map +0 -1
  62. package/src/flows.ts +0 -113
package/build/results.js CHANGED
@@ -1,266 +1,218 @@
1
1
  import { DEFAULT_RESULT_COMPACT_CHARS, DEFAULT_RESULT_ENTRY_CHARS, DEFAULT_RESULT_SUMMARY_CHARS, RESULTS_EVERY_STEP, CumulativeFactKind, CumulativeResultSource } from './consts.js';
2
- import { truncateAt } from './helpers/conversation.js';
2
+ import { truncateAt } from './helpers/truncate.js';
3
3
  import { NAMES_ONLY, NOT_VERIFIED, PARTIAL_EMPTY, PARTIAL_WITH_FACTS, SEEDED, SUMMARY_ALONE, SUMMARY_LEFT_OUT, SUMMARY_WITH_FACTS } from './consts.local.js';
4
- /**
5
- * CUMULATIVE PIPELINE RESULTS — the contracts.
6
- *
7
- * After a step of a pipeline finishes, code reads what it produced — a type's shape, a file, an
8
- * endpoint's method, path and parameters, a resource's table — into a small list of FACTS, and the
9
- * later steps are told those facts instead of re-deriving them from the files. A later step that is
10
- * handed the authoritative names does not invent a second spelling of them, and that is the whole
11
- * point: it removes the class of errors that live BETWEEN steps.
12
- *
13
- * Everything here is data and pure functions. The runtime that extracts, stores and cuts the views
14
- * is `@owlmeans/agent`'s `cumulativeResultsPlugin`; the prompt block it lands in is
15
- * `@owlmeans/llm`'s. A backend or a browser bundle reads an entry without either.
16
- */
17
- const compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;
18
- const oneLine = (text) => text.replace(/\s+/g, ' ').trim();
19
- /**
20
- * The identity of a fact inside a ledger: what it is, what it is called and where it comes from.
21
- * Two facts with one key are one fact, owned by whichever entry produced it first.
22
- */
23
- export const factKey = (fact) => `${fact.kind}\u0000${fact.name}\u0000${fact.specifier ?? fact.path ?? ''}`;
24
- /** File facts last — a location is the first thing a budget can spare, a shape the last. */
25
- const kindRank = (kind) => kind === CumulativeFactKind.File ? 1 : 0;
26
- /**
27
- * Facts in the one order they are ever rendered in: by kind (file facts last), name and location,
28
- * with a code-unit comparison so every host sorts them alike.
29
- */
30
- export const sortFacts = (facts) => [...facts].sort((a, b) => kindRank(a.kind) - kindRank(b.kind)
31
- || compare(a.kind, b.kind)
32
- || compare(a.name, b.name)
33
- || compare(a.specifier ?? a.path ?? '', b.specifier ?? b.path ?? ''));
34
- /** One fact as one prompt line: kind and name, shape, scalars, pointer, and where it comes from. */
35
- export const renderResultFact = (fact) => {
36
- let line = `- ${fact.kind} \`${oneLine(fact.name)}\``;
37
- const shape = fact.signature != null && fact.signature.trim() !== ''
38
- ? oneLine(fact.signature)
39
- : fact.members != null && fact.members.length > 0
40
- ? `{ ${fact.members.map(oneLine).join(', ')} }`
41
- : '';
42
- if (shape !== '') {
43
- line += `: ${shape}`;
44
- }
45
- const attrs = Object.keys(fact.attrs ?? {}).sort(compare)
46
- .map(key => `${key}: ${oneLine(fact.attrs[key])}`);
47
- if (attrs.length > 0) {
48
- line += ` (${attrs.join(', ')})`;
49
- }
50
- if (fact.ref != null && fact.ref !== '') {
51
- line += ` → \`${oneLine(fact.ref)}\``;
52
- }
53
- if (fact.specifier != null && fact.specifier !== '') {
54
- line += ` — import from \`${fact.specifier}\``;
55
- }
56
- if (fact.path != null && fact.path !== '' && fact.path !== fact.name) {
57
- line += fact.specifier != null && fact.specifier !== ''
58
- ? ` (file \`${fact.path}\`)`
59
- : ` — file \`${fact.path}\``;
60
- }
61
- return line;
62
- };
63
- const moreFacts = (count) => `- … and ${count} more not listed here for space. They exist: check the files before creating anything similar.`;
64
- const moreNames = (count) => `- … and ${count} more`;
65
- const heading = (entry, compact) => {
66
- const notes = [];
67
- const hasFacts = entry.facts.length > 0;
68
- if (entry.partial === true) {
69
- notes.push(hasFacts ? PARTIAL_WITH_FACTS : PARTIAL_EMPTY);
70
- }
71
- if (entry.source === CumulativeResultSource.Seeded) {
72
- notes.push(SEEDED);
73
- }
74
- if (!hasFacts && entry.summary != null) {
75
- notes.push(NOT_VERIFIED);
76
- }
77
- if (compact && (hasFacts || entry.summary != null)) {
78
- notes.push(hasFacts ? NAMES_ONLY : SUMMARY_LEFT_OUT);
79
- }
80
- return `### ${entry.label}${notes.length > 0 ? ` (${notes.join('; ')})` : ''}`;
81
- };
82
- /** Lines under `head`, as many as fit in `max`, with `more(n)` saying how many did not. */
83
- const fit = (head, lines, tail, max, more) => {
84
- const total = (parts) => parts.join('\n').length;
85
- if (total([...head, ...lines, ...tail]) <= max) {
86
- return [...head, ...lines, ...tail].join('\n');
87
- }
88
- // Room for the "more" line is reserved at its widest, so adding it can never break the cap.
89
- const reserve = more(lines.length).length + 1;
90
- const kept = [];
91
- for (const line of lines) {
92
- if (total([...head, ...kept, line, ...tail]) + reserve > max) {
93
- break;
4
+ export const createCumulativeResultsHelper = () => {
5
+ const compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;
6
+ const oneLine = (text) => text.replace(/\s+/g, ' ').trim();
7
+ const factKey = (fact) => `${fact.kind}\u0000${fact.name}\u0000${fact.specifier ?? fact.path ?? ''}`;
8
+ /** File facts last — a location is the first thing a budget can spare, a shape the last. */
9
+ const kindRank = (kind) => kind === CumulativeFactKind.File ? 1 : 0;
10
+ const sortFacts = (facts) => [...facts].sort((a, b) => kindRank(a.kind) - kindRank(b.kind)
11
+ || compare(a.kind, b.kind)
12
+ || compare(a.name, b.name)
13
+ || compare(a.specifier ?? a.path ?? '', b.specifier ?? b.path ?? ''));
14
+ const renderResultFact = (fact) => {
15
+ let line = `- ${fact.kind} \`${oneLine(fact.name)}\``;
16
+ const shape = fact.signature != null && fact.signature.trim() !== ''
17
+ ? oneLine(fact.signature)
18
+ : fact.members != null && fact.members.length > 0
19
+ ? `{ ${fact.members.map(oneLine).join(', ')} }`
20
+ : '';
21
+ if (shape !== '') {
22
+ line += `: ${shape}`;
94
23
  }
95
- kept.push(line);
96
- }
97
- return [...head, ...kept, more(lines.length - kept.length), ...tail].join('\n');
98
- };
99
- /**
100
- * An entry's two renderings — in full, and as names only — or two empty strings when it has
101
- * nothing to say.
102
- *
103
- * Deterministic and free of anything that varies between two renderings of the same facts: no
104
- * timestamp, no run id, no revision. Over its cap an entry DROPS whole facts, in render order, and
105
- * says how many it dropped; it never cuts one fact's line, because half a signature is a wrong
106
- * signature. An empty entry that is not partial renders to nothing, so it costs a view nothing.
107
- */
108
- export const renderResultEntry = (entry, caps = {}) => {
109
- const maxChars = caps.maxChars ?? DEFAULT_RESULT_ENTRY_CHARS;
110
- const maxCompactChars = caps.maxCompactChars ?? DEFAULT_RESULT_COMPACT_CHARS;
111
- const facts = sortFacts(entry.facts);
112
- if (facts.length === 0 && entry.summary == null && entry.partial !== true) {
113
- return { full: '', compact: '' };
114
- }
115
- const summary = entry.summary != null && entry.summary.trim() !== ''
116
- ? [`${facts.length > 0 ? SUMMARY_WITH_FACTS : SUMMARY_ALONE} ${oneLine(entry.summary)}`]
117
- : [];
118
- const full = fit([heading(entry, false)], facts.map(renderResultFact), summary, maxChars, moreFacts);
119
- const byKind = new Map();
120
- for (const fact of facts) {
121
- const names = byKind.get(fact.kind) ?? [];
122
- if (!names.includes(fact.name)) {
123
- names.push(fact.name);
24
+ const attrs = Object.keys(fact.attrs ?? {}).sort(compare)
25
+ .map(key => `${key}: ${oneLine(fact.attrs[key])}`);
26
+ if (attrs.length > 0) {
27
+ line += ` (${attrs.join(', ')})`;
28
+ }
29
+ if (fact.ref != null && fact.ref !== '') {
30
+ line += ` → \`${oneLine(fact.ref)}\``;
31
+ }
32
+ if (fact.specifier != null && fact.specifier !== '') {
33
+ line += ` — import from \`${fact.specifier}\``;
34
+ }
35
+ if (fact.path != null && fact.path !== '' && fact.path !== fact.name) {
36
+ line += fact.specifier != null && fact.specifier !== ''
37
+ ? ` (file \`${fact.path}\`)`
38
+ : ` — file \`${fact.path}\``;
124
39
  }
125
- byKind.set(fact.kind, names);
126
- }
127
- // One line per kind while the names fit; the rest are counted, never cut.
128
- const compactHead = heading(entry, true);
129
- const namesWithin = (reserve) => {
130
- const lines = [];
131
- let left = 0;
132
- for (const [kind, names] of byKind) {
133
- let line = `- ${kind}:`;
134
- let taken = 0;
135
- for (const name of names) {
136
- const next = `${line}${taken > 0 ? ',' : ''} \`${oneLine(name)}\``;
137
- if (left > 0 || [compactHead, ...lines, next].join('\n').length + reserve > maxCompactChars) {
138
- left += 1;
139
- continue;
40
+ return line;
41
+ };
42
+ const moreFacts = (count) => `- … and ${count} more not listed here for space. They exist: check the files before creating anything similar.`;
43
+ const moreNames = (count) => `- … and ${count} more`;
44
+ const heading = (entry, compact) => {
45
+ const notes = [];
46
+ const hasFacts = entry.facts.length > 0;
47
+ if (entry.partial === true) {
48
+ notes.push(hasFacts ? PARTIAL_WITH_FACTS : PARTIAL_EMPTY);
49
+ }
50
+ if (entry.source === CumulativeResultSource.Seeded) {
51
+ notes.push(SEEDED);
52
+ }
53
+ if (!hasFacts && entry.summary != null) {
54
+ notes.push(NOT_VERIFIED);
55
+ }
56
+ if (compact && (hasFacts || entry.summary != null)) {
57
+ notes.push(hasFacts ? NAMES_ONLY : SUMMARY_LEFT_OUT);
58
+ }
59
+ return `### ${entry.label}${notes.length > 0 ? ` (${notes.join('; ')})` : ''}`;
60
+ };
61
+ /** Lines under `head`, as many as fit in `max`, with `more(n)` saying how many did not. */
62
+ const fit = (head, lines, tail, max, more) => {
63
+ const total = (parts) => parts.join('\n').length;
64
+ if (total([...head, ...lines, ...tail]) <= max) {
65
+ return [...head, ...lines, ...tail].join('\n');
66
+ }
67
+ // Room for the "more" line is reserved at its widest, so adding it can never break the cap.
68
+ const reserve = more(lines.length).length + 1;
69
+ const kept = [];
70
+ for (const line of lines) {
71
+ if (total([...head, ...kept, line, ...tail]) + reserve > max) {
72
+ break;
73
+ }
74
+ kept.push(line);
75
+ }
76
+ return [...head, ...kept, more(lines.length - kept.length), ...tail].join('\n');
77
+ };
78
+ const renderResultEntry = (entry, caps = {}) => {
79
+ const maxChars = caps.maxChars ?? DEFAULT_RESULT_ENTRY_CHARS;
80
+ const maxCompactChars = caps.maxCompactChars ?? DEFAULT_RESULT_COMPACT_CHARS;
81
+ const facts = sortFacts(entry.facts);
82
+ if (facts.length === 0 && entry.summary == null && entry.partial !== true) {
83
+ return { full: '', compact: '' };
84
+ }
85
+ const summary = entry.summary != null && entry.summary.trim() !== ''
86
+ ? [`${facts.length > 0 ? SUMMARY_WITH_FACTS : SUMMARY_ALONE} ${oneLine(entry.summary)}`]
87
+ : [];
88
+ const full = fit([heading(entry, false)], facts.map(renderResultFact), summary, maxChars, moreFacts);
89
+ const byKind = new Map();
90
+ for (const fact of facts) {
91
+ const names = byKind.get(fact.kind) ?? [];
92
+ if (!names.includes(fact.name)) {
93
+ names.push(fact.name);
94
+ }
95
+ byKind.set(fact.kind, names);
96
+ }
97
+ // One line per kind while the names fit; the rest are counted, never cut.
98
+ const compactHead = heading(entry, true);
99
+ const namesWithin = (reserve) => {
100
+ const lines = [];
101
+ let left = 0;
102
+ for (const [kind, names] of byKind) {
103
+ let line = `- ${kind}:`;
104
+ let taken = 0;
105
+ for (const name of names) {
106
+ const next = `${line}${taken > 0 ? ',' : ''} \`${oneLine(name)}\``;
107
+ if (left > 0 || [compactHead, ...lines, next].join('\n').length + reserve > maxCompactChars) {
108
+ left += 1;
109
+ continue;
110
+ }
111
+ line = next;
112
+ taken += 1;
113
+ }
114
+ if (taken > 0) {
115
+ lines.push(line);
140
116
  }
141
- line = next;
142
- taken += 1;
143
117
  }
144
- if (taken > 0) {
145
- lines.push(line);
118
+ return { lines, left };
119
+ };
120
+ let names = namesWithin(0);
121
+ if (names.left > 0) {
122
+ // Room for the "more" line is reserved at its widest, so adding it can never break the cap.
123
+ names = namesWithin(moreNames(facts.length).length + 1);
124
+ }
125
+ const compact = [
126
+ compactHead, ...names.lines, ...(names.left > 0 ? [moreNames(names.left)] : []),
127
+ ].join('\n');
128
+ return { full, compact };
129
+ };
130
+ const compareResultOrder = (a, b) => {
131
+ for (let i = 0; i < Math.min(a.length, b.length); ++i) {
132
+ if (a[i] !== b[i]) {
133
+ return a[i] - b[i];
146
134
  }
147
135
  }
148
- return { lines, left };
136
+ return b.length - a.length;
149
137
  };
150
- let names = namesWithin(0);
151
- if (names.left > 0) {
152
- // Room for the "more" line is reserved at its widest, so adding it can never break the cap.
153
- names = namesWithin(moreNames(facts.length).length + 1);
154
- }
155
- const compact = [
156
- compactHead, ...names.lines, ...(names.left > 0 ? [moreNames(names.left)] : []),
157
- ].join('\n');
158
- return { full, compact };
159
- };
160
- /**
161
- * Ledger order: element by element, and where one key is a prefix of the other, the LONGER one
162
- * first — an entry of a run composed under a step sorts ahead of that step's own entry, which is
163
- * written only once the composed run has finished.
164
- */
165
- export const compareResultOrder = (a, b) => {
166
- for (let i = 0; i < Math.min(a.length, b.length); ++i) {
167
- if (a[i] !== b[i]) {
168
- return a[i] - b[i];
138
+ const rootRunOf = (runId) => {
139
+ const at = runId.indexOf('/');
140
+ return at < 0 ? runId : runId.slice(0, at);
141
+ };
142
+ const resultLabel = (ledger, runId, step) => {
143
+ const path = runId === ledger
144
+ ? ''
145
+ : runId.startsWith(`${ledger}/`)
146
+ ? runId.slice(ledger.length + 1)
147
+ : runId.slice(rootRunOf(runId).length + 1);
148
+ return path !== '' ? `${path}/${step}` : step;
149
+ };
150
+ const flatten = (value) => {
151
+ if (value == null) {
152
+ return '';
153
+ }
154
+ if (typeof value === 'string') {
155
+ return oneLine(value);
156
+ }
157
+ if (typeof value === 'number' || typeof value === 'boolean') {
158
+ return String(value);
159
+ }
160
+ if (Array.isArray(value)) {
161
+ return value.map(flatten).filter(part => part !== '').join(', ');
162
+ }
163
+ if (typeof value === 'object') {
164
+ return Object.keys(value).sort(compare)
165
+ .map(key => [key, flatten(value[key])])
166
+ .filter(([, text]) => text !== '')
167
+ .map(([key, text]) => `${key}: ${text}`)
168
+ .join('; ');
169
169
  }
170
- }
171
- return b.length - a.length;
172
- };
173
- /** The root run of a composition — what a composed run's id (`<parent>/<step>`) starts with. */
174
- export const rootRunOf = (runId) => {
175
- const at = runId.indexOf('/');
176
- return at < 0 ? runId : runId.slice(0, at);
177
- };
178
- /**
179
- * How an entry is headed: the step, behind the path of composing steps between the ledger's root
180
- * run and the run that produced it. A root-run step is headed by its bare name.
181
- */
182
- export const resultLabel = (ledger, runId, step) => {
183
- const path = runId === ledger
184
- ? ''
185
- : runId.startsWith(`${ledger}/`)
186
- ? runId.slice(ledger.length + 1)
187
- : runId.slice(rootRunOf(runId).length + 1);
188
- return path !== '' ? `${path}/${step}` : step;
189
- };
190
- const flatten = (value) => {
191
- if (value == null) {
192
170
  return '';
193
- }
194
- if (typeof value === 'string') {
195
- return oneLine(value);
196
- }
197
- if (typeof value === 'number' || typeof value === 'boolean') {
198
- return String(value);
199
- }
200
- if (Array.isArray(value)) {
201
- return value.map(flatten).filter(part => part !== '').join(', ');
202
- }
203
- if (typeof value === 'object') {
204
- return Object.keys(value).sort(compare)
205
- .map(key => [key, flatten(value[key])])
206
- .filter(([, text]) => text !== '')
207
- .map(([key, text]) => `${key}: ${text}`)
208
- .join('; ');
209
- }
210
- return '';
211
- };
212
- /**
213
- * A model's schema-shaped summary as one capped line, the same bytes for the same answer.
214
- *
215
- * An object renders as `key: value` pairs in key order; one with a single key renders as that
216
- * value alone, so the default `{ summary }` answer reads as prose. The cap is applied here, after
217
- * the model answered — a cap in a prompt is a request.
218
- */
219
- export const renderResultSummary = (answer, maxChars = DEFAULT_RESULT_SUMMARY_CHARS) => {
220
- const single = typeof answer === 'object' && answer != null && !Array.isArray(answer)
221
- && Object.keys(answer).length === 1
222
- ? answer[Object.keys(answer)[0]]
223
- : answer;
224
- return truncateAt(flatten(single), maxChars);
225
- };
226
- const union = (left, right) => left == null && right == null ? undefined : [...new Set([...(left ?? []), ...(right ?? [])])];
227
- const mergeStep = (base, patch) => {
228
- const extractors = union(base?.extractors, patch.extractors);
229
- const omit = union(base?.omit, patch.omit);
230
- const full = base?.full === RESULTS_EVERY_STEP || patch.full === RESULTS_EVERY_STEP
231
- ? RESULTS_EVERY_STEP
232
- : union(base?.full, patch.full);
233
- return {
234
- ...base,
235
- ...patch,
236
- ...(extractors != null ? { extractors } : {}),
237
- ...(omit != null ? { omit } : {}),
238
- ...(full != null ? { full } : {}),
239
171
  };
240
- };
241
- /**
242
- * Several declarations as one — a pipeline's own, then any overlay (a variant, a deployment).
243
- *
244
- * Later declarations win field by field, except the lists: extractors, `full` consumers and `omit`
245
- * consumers ACCUMULATE, the way skills do down an execution chain, because an overlay that adds an
246
- * extractor is not asking to lose the ones the pipeline declared. `'*'` in `full` absorbs names.
247
- */
248
- export const mergeResultsSpecs = (...specs) => {
249
- const merged = {};
250
- for (const spec of specs) {
251
- if (spec == null) {
252
- continue;
253
- }
254
- const { steps, ...scalars } = spec;
255
- Object.assign(merged, scalars);
256
- if (steps != null) {
257
- const into = { ...merged.steps };
258
- for (const name of Object.keys(steps)) {
259
- into[name] = mergeStep(into[name], steps[name]);
172
+ const renderResultSummary = (answer, maxChars = DEFAULT_RESULT_SUMMARY_CHARS) => {
173
+ const single = typeof answer === 'object' && answer != null && !Array.isArray(answer)
174
+ && Object.keys(answer).length === 1
175
+ ? answer[Object.keys(answer)[0]]
176
+ : answer;
177
+ return truncateAt(flatten(single), maxChars);
178
+ };
179
+ const union = (left, right) => left == null && right == null ? undefined : [...new Set([...(left ?? []), ...(right ?? [])])];
180
+ const mergeStep = (base, patch) => {
181
+ const extractors = union(base?.extractors, patch.extractors);
182
+ const omit = union(base?.omit, patch.omit);
183
+ const full = base?.full === RESULTS_EVERY_STEP || patch.full === RESULTS_EVERY_STEP
184
+ ? RESULTS_EVERY_STEP
185
+ : union(base?.full, patch.full);
186
+ return {
187
+ ...base,
188
+ ...patch,
189
+ ...(extractors != null ? { extractors } : {}),
190
+ ...(omit != null ? { omit } : {}),
191
+ ...(full != null ? { full } : {}),
192
+ };
193
+ };
194
+ const mergeResultsSpecs = (...specs) => {
195
+ const merged = {};
196
+ for (const spec of specs) {
197
+ if (spec == null) {
198
+ continue;
199
+ }
200
+ const { steps, ...scalars } = spec;
201
+ Object.assign(merged, scalars);
202
+ if (steps != null) {
203
+ const into = { ...merged.steps };
204
+ for (const name of Object.keys(steps)) {
205
+ into[name] = mergeStep(into[name], steps[name]);
206
+ }
207
+ merged.steps = into;
260
208
  }
261
- merged.steps = into;
262
209
  }
263
- }
264
- return merged;
210
+ return merged;
211
+ };
212
+ return {
213
+ factKey, sortFacts, renderResultFact, renderResultEntry, compareResultOrder, rootRunOf, resultLabel,
214
+ renderResultSummary, mergeResultsSpecs,
215
+ };
265
216
  };
217
+ export const cumulativeResultsHelper = createCumulativeResultsHelper();
266
218
  //# sourceMappingURL=results.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"results.js","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpL,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAG5J;;;;;;;;;;;;GAYG;AAEH,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE5E,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AAE1E;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAA0B,EAAU,EAAE,CAC5D,GAAG,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAA;AAE5E,4FAA4F;AAC5F,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAsC,EAA0B,EAAE,CAC1F,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACvB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;OAChC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;OACvB,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;OACvB,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;AAEzE,oGAAoG;AACpG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAA0B,EAAU,EAAE;IACrE,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;QAClE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QACzB,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC/C,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC/C,CAAC,CAAC,EAAE,CAAA;IACR,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAA;IACtB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;SACtD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,KAAM,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAA;IACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IAClC,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QACxC,IAAI,IAAI,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA;IACvC,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE,CAAC;QACpD,IAAI,IAAI,oBAAoB,IAAI,CAAC,SAAS,IAAI,CAAA;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACrE,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE;YACrD,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,KAAK;YAC5B,CAAC,CAAC,aAAa,IAAI,CAAC,IAAI,IAAI,CAAA;IAChC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAGD,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAC1C,WAAW,KAAK,gGAAgG,CAAA;AAElH,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,WAAW,KAAK,OAAO,CAAA;AAEpE,MAAM,OAAO,GAAG,CAAC,KAA4B,EAAE,OAAgB,EAAU,EAAE;IACzE,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IACvC,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,sBAAsB,CAAC,MAAM,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpB,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAC1B,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,OAAO,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AAChF,CAAC,CAAA;AAED,2FAA2F;AAC3F,MAAM,GAAG,GAAG,CACV,IAAc,EAAE,KAAe,EAAE,IAAc,EAAE,GAAW,EAAE,IAA+B,EACrF,EAAE;IACV,MAAM,KAAK,GAAG,CAAC,KAAe,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;IAClE,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,4FAA4F;IAC5F,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,GAAG,GAAG,EAAE,CAAC;YAC7D,MAAK;QACP,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACjF,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAA4B,EAAE,IAAI,GAAqB,EAAE,EACtB,EAAE;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,0BAA0B,CAAA;IAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,4BAA4B,CAAA;IAC5E,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1E,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAClC,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAClE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxF,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;IAEpG,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IACD,0EAA0E;IAC1E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACxC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAqC,EAAE;QACzE,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YACnC,IAAI,IAAI,GAAG,KAAK,IAAI,GAAG,CAAA;YACvB,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA;gBAClE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,OAAO,GAAG,eAAe,EAAE,CAAC;oBAC5F,IAAI,IAAI,CAAC,CAAA;oBACT,SAAQ;gBACV,CAAC;gBACD,IAAI,GAAG,IAAI,CAAA;gBACX,KAAK,IAAI,CAAC,CAAA;YACZ,CAAC;YACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACxB,CAAC,CAAA;IACD,IAAI,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACnB,4FAA4F;QAC5F,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACzD,CAAC;IACD,MAAM,OAAO,GAAG;QACd,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAoB,EAAE,CAAoB,EAAU,EAAE;IACvF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;AAC5B,CAAC,CAAA;AAED,gGAAgG;AAChG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE;IACjD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAE7B,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC5C,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,IAAY,EAAU,EAAE;IACjF,MAAM,IAAI,GAAG,KAAK,KAAK,MAAM;QAC3B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC;YAC9B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAChC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAE9C,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,KAAc,EAAU,EAAE;IACzC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;aACpC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAU,CAAC;aAC5E,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC;aACvC,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAe,EAAE,QAAQ,GAAW,4BAA4B,EACxD,EAAE;IACV,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;WAChF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QACnC,CAAC,CAAE,MAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC;QAC9D,CAAC,CAAC,MAAM,CAAA;IAEV,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAA;AAC9C,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,CAAC,IAAmC,EAAE,KAAoC,EAAwB,EAAE,CAChH,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/F,MAAM,SAAS,GAAG,CAAC,IAAiC,EAAE,KAAsB,EAAmB,EAAE;IAC/F,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1C,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB;QACjF,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAA4B,EAAE,KAAK,CAAC,IAA4B,CAAC,CAAA;IAEjF,OAAO;QACL,GAAG,IAAI;QACP,GAAG,KAAK;QACR,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAA;AACH,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,GAAG,KAAsD,EAClC,EAAE;IACzB,MAAM,MAAM,GAA0B,EAAE,CAAA;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,SAAQ;QACV,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAA;QAClC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,GAAoC,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;YACjE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAE,CAAC,CAAA;YAClD,CAAC;YACD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;QACrB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"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"}