@elaraai/e3-ui-components 1.0.12 → 1.0.13

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.
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Plain-language **guidance** for every explainable element of the Experiment
7
+ * surface — so a domain expert (e.g. a marketer) can hover any heading, control
8
+ * or result and understand it without a statistician's vocabulary.
9
+ *
10
+ * This is a **built-in glossary**: the *concepts* are universal across every
11
+ * experiment, so they're authored once here, never per-experiment and never by
12
+ * the developer who drops in `<Experiment>`. The only per-experiment part is the
13
+ * **nouns** — `{treatment}` / `{outcome}` / `{feature}` are interpolated from the
14
+ * (ran) config's column names (run through `columns` labels), and `{subject}` /
15
+ * `{subjects}` is the neutral noun for a row (`record(s)` — the component is
16
+ * generic over any causal-analytics dataset, so it never assumes customers /
17
+ * batches / patients). Result *specifics* (the actual numbers) stay derived at
18
+ * the call site; here we only explain what a thing *means*.
19
+ *
20
+ * Each entry is three tiers of depth, shown stacked in the hover card:
21
+ * - `gist` — Tier 1: one jargon-free sentence (what it is).
22
+ * - `detail` — Tier 2: why it matters / what to do with it.
23
+ * - `jargon` — Tier 3: the technical name, muted, for trust + the curious.
24
+ */
25
+ /** One glossary entry — three tiers of depth. */
26
+ export interface HelpEntry {
27
+ /** The heading/term (the card title). */
28
+ term: string;
29
+ /** Tier 1 — one plain sentence. */
30
+ gist: string;
31
+ /** Tier 2 — why it matters / what to do. */
32
+ detail: string;
33
+ /** Tier 3 — the technical name it maps to (for the curious). */
34
+ jargon?: string;
35
+ }
36
+ /** Substitute `{treatment}` / `{outcome}` / `{feature}` (and any extra) tokens. */
37
+ export declare function fillHelp(entry: HelpEntry, vars: Record<string, string>): HelpEntry;
38
+ /** The glossary, keyed by stable element id. */
39
+ export declare const HELP: {
40
+ readonly guidance: {
41
+ readonly term: "Guidance";
42
+ readonly gist: "Plain-language explainers for everything on this surface.";
43
+ readonly detail: "While this is on, hover any heading, value or chart label to see what it means — in business terms, with the statistical name underneath. Click to turn it off.";
44
+ };
45
+ readonly header: {
46
+ readonly term: "The question";
47
+ readonly gist: "You’re asking whether {treatment} actually moved {outcome}.";
48
+ readonly detail: "Pick the lever you changed and the result you cared about, then hit Run — the surface answers whether the change is real and trustworthy.";
49
+ readonly jargon: "a binary-treatment causal effect";
50
+ };
51
+ readonly step_treatment: {
52
+ readonly term: "What did you change?";
53
+ readonly gist: "The lever you’re testing — a yes/no flag on each {subject}.";
54
+ readonly detail: "It splits {subjects} into a “did” group and a “didn’t” group; the whole experiment compares those two.";
55
+ readonly jargon: "the treatment (binary)";
56
+ };
57
+ readonly step_outcome: {
58
+ readonly term: "What did you want it to improve?";
59
+ readonly gist: "The result you’re hoping {treatment} moved.";
60
+ readonly detail: "A number measured on each {subject} (revenue, a duration, a score, …). The effect is the change in this we can credit to the lever.";
61
+ readonly jargon: "the outcome";
62
+ };
63
+ readonly step_confounders: {
64
+ readonly term: "What else was different?";
65
+ readonly gist: "Things about the “did” group that could also explain the change.";
66
+ readonly detail: "If the {subjects} you treated already differed on something that matters — bigger, older, higher-value — that, not the lever, could be moving the result. We level the playing field on each of these so the comparison is fair. Add the ones you suspect.";
67
+ readonly jargon: "confounders / the backdoor adjustment set";
68
+ };
69
+ readonly step_population: {
70
+ readonly term: "Which {subjects}?";
71
+ readonly gist: "Narrow the experiment to a slice of the {subjects}.";
72
+ readonly detail: "Filter to a subset you care about — a region, a period, a category — before measuring, so the answer is about the {subjects} that matter.";
73
+ readonly jargon: "population / cohort filter";
74
+ };
75
+ readonly adv_method: {
76
+ readonly term: "How to compare";
77
+ readonly gist: "The maths used to make the like-for-like comparison.";
78
+ readonly detail: "“Regression” fits a line through the confounders; “re-weighting” up-weights rare look-alikes. They usually agree — if they don’t, treat the result with care.";
79
+ readonly jargon: "estimator: linear regression vs propensity-score weighting";
80
+ };
81
+ readonly adv_estimand: {
82
+ readonly term: "Answer for";
83
+ readonly gist: "Who the effect is reported for.";
84
+ readonly detail: "“All” averages over everyone; “only treated” asks what the lever did for the {subjects} you actually treated — useful when you’d only ever apply it to them.";
85
+ readonly jargon: "estimand: ATE vs ATT";
86
+ };
87
+ readonly confounder_imbalance: {
88
+ readonly term: "How lopsided this one was";
89
+ readonly gist: "How different the two groups were on this factor, before adjusting.";
90
+ readonly detail: "A long bar means the treated and untreated {subjects} started far apart here — exactly the kind of gap the adjustment has to close.";
91
+ readonly jargon: "standardised mean difference (SMD)";
92
+ };
93
+ readonly tab_answer: {
94
+ readonly term: "Answer";
95
+ readonly gist: "The headline: did {treatment} move {outcome}, and by how much?";
96
+ readonly detail: "Shows the raw gap, the fair like-for-like estimate, and an honest verdict.";
97
+ };
98
+ readonly tab_trust: {
99
+ readonly term: "Can we trust it?";
100
+ readonly gist: "The stress tests we ran to try to break the answer.";
101
+ readonly detail: "Each check probes a way the result could be a fluke; green means it held up.";
102
+ };
103
+ readonly tab_dose: {
104
+ readonly term: "How much?";
105
+ readonly gist: "How the result changes as a factor goes up or down.";
106
+ readonly detail: "Not just yes/no — the shape of the response, so you can find the sweet spot.";
107
+ };
108
+ readonly answer_effect: {
109
+ readonly term: "Like-for-like effect";
110
+ readonly gist: "The change in {outcome} we can credit to {treatment}.";
111
+ readonly detail: "It compares treated vs untreated {subjects} who were otherwise similar — so it strips out “who you targeted” and leaves the lever’s real impact.";
112
+ readonly jargon: "the backdoor-adjusted average treatment effect";
113
+ };
114
+ readonly answer_ci: {
115
+ readonly term: "95% range";
116
+ readonly gist: "Where the true effect most likely sits.";
117
+ readonly detail: "If this range doesn’t cross 0, the effect is real, not noise. The wider it is, the less certain — usually because of fewer {subjects}.";
118
+ readonly jargon: "95% confidence interval";
119
+ };
120
+ readonly answer_flip: {
121
+ readonly term: "Raw and like-for-like disagree";
122
+ readonly gist: "The plain average points one way; the fair comparison points the other.";
123
+ readonly detail: "This happens when the treated group differed sharply on a confounder. Trust the like-for-like number — the raw gap is misleading here.";
124
+ readonly jargon: "confounding / Simpson’s-paradox sign flip";
125
+ };
126
+ readonly answer_cautious: {
127
+ readonly term: "Treat this as provisional";
128
+ readonly gist: "We got a number, but a trust check failed.";
129
+ readonly detail: "The estimate may still be driven by something we didn’t adjust for. See “Can we trust it?” before acting on it.";
130
+ readonly jargon: "adjustment_insufficient verdict";
131
+ };
132
+ readonly forest_plot: {
133
+ readonly term: "Raw average vs. like-for-like";
134
+ readonly gist: "The misleading number next to the fair one.";
135
+ readonly detail: "Each bar is an estimate with its uncertainty range; the dashed line is “no effect”. A bar clear of that line is a real change.";
136
+ readonly jargon: "a forest plot of naive vs adjusted estimates";
137
+ };
138
+ readonly forest_naive: {
139
+ readonly term: "Raw average";
140
+ readonly gist: "The plain difference, with no adjusting.";
141
+ readonly detail: "Just treated-minus-untreated. It mixes in who you targeted, so it can mislead — it’s here only as the “before” picture.";
142
+ readonly jargon: "the unadjusted mean difference";
143
+ };
144
+ readonly forest_adjusted: {
145
+ readonly term: "Like-for-like";
146
+ readonly gist: "The fair comparison after levelling the confounders.";
147
+ readonly detail: "This is the number to act on — what {treatment} did among otherwise-similar {subjects}.";
148
+ readonly jargon: "the adjusted effect";
149
+ };
150
+ readonly balance: {
151
+ readonly term: "How unbalanced each one was";
152
+ readonly gist: "How far apart the two groups started on each factor.";
153
+ readonly detail: "Big bars are the factors the adjustment had to work hardest to correct — and the ones most worth double-checking.";
154
+ readonly jargon: "pre-adjustment covariate balance (SMD)";
155
+ };
156
+ readonly counts: {
157
+ readonly term: "The {subject} counts";
158
+ readonly gist: "How many {subjects} went into the comparison.";
159
+ readonly detail: "“Compared like-for-like” are the ones with a fair match on the other side; “no fair match” were set aside because nobody comparable existed.";
160
+ readonly jargon: "n total / on-support / off-support";
161
+ };
162
+ readonly overlap_histogram: {
163
+ readonly term: "Do the two groups overlap?";
164
+ readonly gist: "Whether treated and untreated {subjects} actually look alike anywhere.";
165
+ readonly detail: "Each bar is how many {subjects} sit at a given “likelihood of being treated”. Where the two arms both have bars, a fair comparison exists; if they barely meet, there’s nothing to compare.";
166
+ readonly jargon: "propensity-score overlap / common support";
167
+ };
168
+ readonly refusal_positivity: {
169
+ readonly term: "No like-for-like comparison exists";
170
+ readonly gist: "The treated and untreated {subjects} are too different to compare.";
171
+ readonly detail: "For almost every treated {subject} there’s no similar untreated one (or vice-versa), so there’s no fair “other side”. We refuse rather than extrapolate into thin air. Try fewer or different confounders.";
172
+ readonly jargon: "positivity / overlap violation";
173
+ };
174
+ readonly refusal_not_estimable: {
175
+ readonly term: "Can’t be estimated";
176
+ readonly gist: "Almost every {subject} is on one side of {treatment}, so there’s no comparison group.";
177
+ readonly detail: "Measuring an effect needs a decent number of {subjects} who got the lever AND who didn’t. When one side is just a handful, we refuse to guess rather than read too much into a few people.";
178
+ readonly jargon: "no treatment variation";
179
+ };
180
+ readonly trust_intro: {
181
+ readonly term: "Can we trust it?";
182
+ readonly gist: "Before believing the answer, we tried to break it.";
183
+ readonly detail: "Each row is a different way the result could be a fluke; colour shows whether it held up (pass) or wobbled (caution).";
184
+ };
185
+ readonly check_shuffle: {
186
+ readonly term: "Shuffle test";
187
+ readonly gist: "We randomly re-label who got {treatment} and re-measure.";
188
+ readonly detail: "On fake labels a genuine effect should collapse to nothing. If a “fake” effect still appears, the real one isn’t trustworthy.";
189
+ readonly jargon: "placebo / permutation refuter";
190
+ };
191
+ readonly check_dropsome: {
192
+ readonly term: "Drop-some test";
193
+ readonly gist: "We re-run on random slices of the {subjects}.";
194
+ readonly detail: "A trustworthy effect barely moves when you drop some data; a jumpy one is resting on a few {subjects}.";
195
+ readonly jargon: "data-subset refuter";
196
+ };
197
+ readonly check_decoy: {
198
+ readonly term: "Decoy factor";
199
+ readonly gist: "We add a totally random extra factor and re-measure.";
200
+ readonly detail: "A made-up factor shouldn’t change the answer. If it does, the model is over-reacting to noise.";
201
+ readonly jargon: "random-common-cause refuter";
202
+ };
203
+ readonly check_hidden: {
204
+ readonly term: "Hidden cause";
205
+ readonly gist: "How strong an unrecorded cause would have to be to overturn the result.";
206
+ readonly detail: "Something you didn’t measure could drive both who got {treatment} and {outcome}. “Holds throughout” means only an implausibly strong hidden cause could flip it.";
207
+ readonly jargon: "unobserved-confounding sensitivity / E-value";
208
+ };
209
+ readonly sensitivity: {
210
+ readonly term: "Effect as a hidden cause gets stronger";
211
+ readonly gist: "What happens to the effect if an unrecorded cause is dialled up.";
212
+ readonly detail: "The line is the estimate as a simulated hidden cause grows. The point where it crosses 0 is how much hidden bias it would take to erase the result.";
213
+ readonly jargon: "sensitivity (tipping-point) curve";
214
+ };
215
+ readonly dose_curve: {
216
+ readonly term: "{outcome} gained vs. {feature}";
217
+ readonly gist: "How {outcome} responds as {feature} goes up.";
218
+ readonly detail: "The line is the average change in {outcome} at each level of {feature}, with its uncertainty band — the shape tells you where more pays off and where it flattens.";
219
+ readonly jargon: "accumulated local effects (ALE) dose-response";
220
+ };
221
+ readonly dose_here: {
222
+ readonly term: "You are here";
223
+ readonly gist: "Where most of your {subjects} currently sit on {feature}.";
224
+ readonly detail: "The busiest level today — your starting point for deciding whether to push higher or lower.";
225
+ readonly jargon: "the modal bin";
226
+ };
227
+ readonly dose_sweet: {
228
+ readonly term: "Sweet spot";
229
+ readonly gist: "Where the gains are solid and start to flatten.";
230
+ readonly detail: "Past here, pushing {feature} higher buys little extra {outcome} — a sensible target.";
231
+ readonly jargon: "the diminishing-returns knee";
232
+ };
233
+ readonly dose_reco: {
234
+ readonly term: "Recommended";
235
+ readonly gist: "The level of {feature} we’d aim for.";
236
+ readonly detail: "The sweet-spot level and the {outcome} you’d expect there, with its range — and the trade-off of going one step further.";
237
+ readonly jargon: "the recommended operating point";
238
+ };
239
+ readonly dose_marginal: {
240
+ readonly term: "Extra {outcome} per step";
241
+ readonly gist: "What each additional step of {feature} buys you.";
242
+ readonly detail: "Tall early bars then short ones is the classic diminishing-returns shape — spend effort where the bars are tall.";
243
+ readonly jargon: "marginal / incremental effect per bin";
244
+ };
245
+ readonly verdict_causal: {
246
+ readonly term: "Causal";
247
+ readonly gist: "A real change you can credit to {treatment} — and it held up.";
248
+ readonly detail: "The like-for-like effect is clear, sizeable, and survived the trust checks. Safe to act on.";
249
+ readonly jargon: "a robust, identified effect";
250
+ };
251
+ readonly verdict_modest: {
252
+ readonly term: "Modest / unclear";
253
+ readonly gist: "There may be an effect, but it’s small or fuzzy.";
254
+ readonly detail: "The fair comparison can’t cleanly separate it from no-effect (the range straddles 0, or it’s tiny). Don’t bet much on it.";
255
+ readonly jargon: "effect CI spans zero / below materiality";
256
+ };
257
+ readonly verdict_adjustment_insufficient: {
258
+ readonly term: "Not trustworthy yet";
259
+ readonly gist: "We got a number, but a trust check failed.";
260
+ readonly detail: "Likely something we didn’t adjust for is still in play. Treat as provisional and look at “Can we trust it?”.";
261
+ readonly jargon: "placebo / robustness failure";
262
+ };
263
+ readonly verdict_non_identifiable_positivity: {
264
+ readonly term: "No fair comparison";
265
+ readonly gist: "Treated and untreated {subjects} don’t overlap enough to compare.";
266
+ readonly detail: "There’s no like-for-like “other side”, so any number would be extrapolation. See the overlap chart.";
267
+ readonly jargon: "positivity / overlap violation";
268
+ };
269
+ readonly verdict_not_estimable: {
270
+ readonly term: "Can’t be estimated";
271
+ readonly gist: "Almost everyone is on one side of {treatment} — no comparison group.";
272
+ readonly detail: "One arm is just a handful of {subjects}, so we won’t guess an effect from it.";
273
+ readonly jargon: "no treatment variation";
274
+ };
275
+ readonly tab_validate: {
276
+ readonly term: "Validate";
277
+ readonly gist: "The real experiment you’d run to prove this — for sure.";
278
+ readonly detail: "This analysis adjusted for what it could measure. A controlled trial — assigning {treatment} at random — removes any leftover doubt. This tab sizes that trial.";
279
+ };
280
+ readonly validate_size: {
281
+ readonly term: "How many to run";
282
+ readonly gist: "The number of {subjects} the trial needs.";
283
+ readonly detail: "Enough to spot a change this size if it’s real. A bigger or cleaner effect needs fewer; a small or noisy one needs many more.";
284
+ readonly jargon: "required sample size at the target power";
285
+ };
286
+ readonly validate_split: {
287
+ readonly term: "How to split them";
288
+ readonly gist: "How many get {treatment} versus are left alone.";
289
+ readonly detail: "Assign at random — that’s what makes the two groups comparable with no adjusting. An even split is the most efficient; treating fewer needs a larger total.";
290
+ readonly jargon: "randomised allocation between arms";
291
+ };
292
+ readonly validate_match: {
293
+ readonly term: "Match the groups on";
294
+ readonly gist: "Keep both groups balanced on these — they were lopsided last time.";
295
+ readonly detail: "Give each group the same mix of these factors when you split, so neither one starts ahead. These are the factors that muddied the original comparison most.";
296
+ readonly jargon: "stratified / blocked randomisation on the high-imbalance covariates";
297
+ };
298
+ readonly validate_power: {
299
+ readonly term: "Chance of detecting it";
300
+ readonly gist: "How likely the trial is to catch the effect, by size.";
301
+ readonly detail: "More {subjects} means a better chance of a clear result. The marker shows where today’s data sits — usually well short of a confident answer.";
302
+ readonly jargon: "statistical power vs sample size";
303
+ };
304
+ readonly validate_holdback: {
305
+ readonly term: "Hold back a control";
306
+ readonly gist: "Keep a random group untreated to compare against.";
307
+ readonly detail: "Right now almost everything got {treatment}, so there’s nothing to compare to. Next time, leave a random sample untreated — that group becomes the fair baseline.";
308
+ readonly jargon: "a randomised control arm";
309
+ };
310
+ readonly journal: {
311
+ readonly term: "Committed experiments";
312
+ readonly gist: "A log of the questions you’ve saved.";
313
+ readonly detail: "Each row is a framing you committed — its verdict and headline effect — so the team can see what’s been tried and what held up.";
314
+ readonly jargon: "the experiment journal";
315
+ };
316
+ };
317
+ /** Every valid help id. */
318
+ export type HelpId = keyof typeof HELP;
319
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/experiment/help.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACtB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAQlF;AAED,gDAAgD;AAChD,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0SP,CAAC;AAEX,2BAA2B;AAC3B,MAAM,MAAM,MAAM,GAAG,MAAM,OAAO,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/experiment/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH,OAAO,EAA6E,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5H,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AA0BrD,KAAK,iBAAiB,GAAG,WAAW,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAqEzE,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,oBAAoB,iEAyWxB,CAAC;AAgHH,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/experiment/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAkCH,OAAO,EAAuF,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACtI,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAwCrD,KAAK,iBAAiB,GAAG,WAAW,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAkJzE,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACtB;AAOD,QAAA,MAAM,oBAAoB,iEAgd6E,CAAC;AAoTxG,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,6 +1,13 @@
1
1
  import { EastType } from '@elaraai/east';
2
2
  /** Lifecycle of the most recent call on a bound function's channel. */
3
3
  export type FuncStatus = 'idle' | 'running' | 'succeeded' | 'failed' | 'cancelled';
4
+ /** A failed call's detail (the runner's outcome + captured output tails). */
5
+ export interface FuncCallError {
6
+ kind: string;
7
+ message: string;
8
+ stdout: string;
9
+ stderr: string;
10
+ }
4
11
  /** What {@link useFuncCall} returns for one bound function. */
5
12
  export interface FuncCall<R> {
6
13
  /** Launch the call, fire-and-forget (latest-wins). No-op when not ready. */
@@ -11,6 +18,8 @@ export interface FuncCall<R> {
11
18
  status: FuncStatus;
12
19
  /** True while a call is in flight. */
13
20
  pending: boolean;
21
+ /** Failure detail when the most recent call failed, else `null`. */
22
+ error: FuncCallError | null;
14
23
  }
15
24
  /**
16
25
  * Build + observe a reactive call handle for a named workspace function.
@@ -1 +1 @@
1
- {"version":3,"file":"run-runtime.d.ts","sourceRoot":"","sources":["../../src/experiment/run-runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQ/D,uEAAuE;AACvE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEnF,+DAA+D;AAC/D,MAAM,WAAW,QAAQ,CAAC,CAAC;IACvB,4EAA4E;IAC5E,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,iEAAiE;IACjE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,yCAAyC;IACzC,MAAM,EAAE,UAAU,CAAC;IACnB,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;CACpB;AAWD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,EACzB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EACzB,MAAM,EAAE,QAAQ,GACjB,QAAQ,CAAC,CAAC,CAAC,CA6Cb"}
1
+ {"version":3,"file":"run-runtime.d.ts","sourceRoot":"","sources":["../../src/experiment/run-runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQ/D,uEAAuE;AACvE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEnF,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAEhG,+DAA+D;AAC/D,MAAM,WAAW,QAAQ,CAAC,CAAC;IACvB,4EAA4E;IAC5E,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,iEAAiE;IACjE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,yCAAyC;IACzC,MAAM,EAAE,UAAU,CAAC;IACnB,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CAC/B;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,EACzB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EACzB,MAAM,EAAE,QAAQ,GACjB,QAAQ,CAAC,CAAC,CAAC,CAmDb"}