braintrust 0.0.71 → 0.0.73

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,6 @@
1
+ /// <reference types="node" />
2
+ import type { AsyncLocalStorage as NodeAsyncLocalStorage } from "async_hooks";
3
+ declare global {
4
+ var AsyncLocalStorage: typeof NodeAsyncLocalStorage;
5
+ }
6
+ export declare function configureBrowser(): void;
package/dist/browser.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from "./logger";
2
+ export * from "./oai";
package/dist/browser.js CHANGED
@@ -1,3 +1,27 @@
1
+ // src/isomorph.ts
2
+ var DefaultAsyncLocalStorage = class {
3
+ constructor() {
4
+ }
5
+ enterWith(_) {
6
+ }
7
+ run(_, callback) {
8
+ return callback();
9
+ }
10
+ getStore() {
11
+ return void 0;
12
+ }
13
+ };
14
+ var iso = {
15
+ getRepoStatus: async () => void 0,
16
+ getPastNAncestors: async () => [],
17
+ getEnv: (_name) => void 0,
18
+ getCallerLocation: () => void 0,
19
+ newAsyncLocalStorage: () => new DefaultAsyncLocalStorage(),
20
+ processOn: (_0, _1) => {
21
+ }
22
+ };
23
+ var isomorph_default = iso;
24
+
1
25
  // node_modules/uuid/dist/esm-browser/rng.js
2
26
  var getRandomValues;
3
27
  var rnds8 = new Uint8Array(16);
@@ -46,30 +70,6 @@ function v4(options, buf, offset) {
46
70
  }
47
71
  var v4_default = v4;
48
72
 
49
- // src/isomorph.ts
50
- var DefaultAsyncLocalStorage = class {
51
- constructor() {
52
- }
53
- enterWith(_) {
54
- }
55
- run(_, callback) {
56
- return callback();
57
- }
58
- getStore() {
59
- return void 0;
60
- }
61
- };
62
- var iso = {
63
- getRepoStatus: async () => void 0,
64
- getPastNAncestors: async () => [],
65
- getEnv: (_name) => void 0,
66
- getCallerLocation: () => void 0,
67
- newAsyncLocalStorage: () => new DefaultAsyncLocalStorage(),
68
- processOn: (_0, _1) => {
69
- }
70
- };
71
- var isomorph_default = iso;
72
-
73
73
  // src/util.ts
74
74
  var TRANSACTION_ID_FIELD = "_xact_id";
75
75
  var IS_MERGE_FIELD = "_is_merge";
@@ -398,7 +398,7 @@ var Logger = class {
398
398
  * @param event.expected: The ground truth value (an arbitrary, JSON serializable object) that you'd compare to `output` to determine if your `output` value is correct or not. Braintrust currently does not compare `output` to `expected` for you, since there are so many different ways to do that correctly. Instead, these values are just used to help you navigate while digging into analyses. However, we may later use these values to re-score outputs or fine-tune your models.
399
399
  * @param event.scores: A dictionary of numeric values (between 0 and 1) to log. The scores should give you a variety of signals that help you determine how accurate the outputs are compared to what you expect and diagnose failures. For example, a summarization app might have one score that tells you how accurate the summary is, and another that measures the word similarity between the generated and grouth truth summary. The word similarity score could help you determine whether the summarization was covering similar concepts or not. You can use these scores to help you sort, filter, and compare logs.
400
400
  * @param event.metadata: (Optional) a dictionary with additional data about the test example, model outputs, or just about anything else that's relevant, that you can use to help find and analyze examples later. For example, you could log the `prompt`, example's `id`, or anything else that would be useful to slice/dice later. The values in `metadata` can be any JSON-serializable type, but its keys must be strings.
401
- * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically and should not be specified: "start", "end".
401
+ * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically: "start", "end", "caller_functionname", "caller_filename", "caller_lineno".
402
402
  * @param event.id: (Optional) a unique identifier for the event. If you don't provide one, BrainTrust will generate one for you.
403
403
  * :returns: The `id` of the logged event.
404
404
  */
@@ -660,7 +660,7 @@ async function login(options = {}) {
660
660
  const {
661
661
  apiUrl = isomorph_default.getEnv("BRAINTRUST_API_URL") || "https://www.braintrustdata.com",
662
662
  apiKey = isomorph_default.getEnv("BRAINTRUST_API_KEY"),
663
- orgName = void 0,
663
+ orgName = isomorph_default.getEnv("BRAINTRUST_ORG_NAME"),
664
664
  disableCache = false
665
665
  } = options || {};
666
666
  let { forceLogin = false } = options || {};
@@ -729,6 +729,11 @@ function startSpan(args) {
729
729
  const { name: nameOpt, ...argsRest } = args ?? {};
730
730
  const name = (nameOpt ?? isomorph_default.getCallerLocation()?.caller_functionname) || "root";
731
731
  const parentSpan = currentSpan();
732
+ if (!parentSpan) {
733
+ throw new Error(
734
+ "Cannot call startSpan() from outside a trace. Please wrap this code in a traced() callback."
735
+ );
736
+ }
732
737
  if (!Object.is(parentSpan, noopSpan)) {
733
738
  return parentSpan.startSpan(name, argsRest);
734
739
  }
@@ -822,17 +827,6 @@ function validateAndSanitizeExperimentLogPartialArgs(event) {
822
827
  throw new Error("metric keys must be strings");
823
828
  }
824
829
  }
825
- for (const forbiddenKey of [
826
- "start",
827
- "end",
828
- "caller_functionname",
829
- "caller_filename",
830
- "caller_lineno"
831
- ]) {
832
- if (forbiddenKey in event.metrics) {
833
- throw new Error(`Key ${forbiddenKey} may not be specified in metrics`);
834
- }
835
- }
836
830
  }
837
831
  if ("input" in event && event.input && "inputs" in event && event.inputs) {
838
832
  throw new Error(
@@ -906,7 +900,20 @@ async function _initExperiment(projectName, {
906
900
  if (isPublic !== void 0) {
907
901
  args["public"] = isPublic;
908
902
  }
909
- const response = await _state.apiConn().post_json("api/experiment/register", args);
903
+ let response = null;
904
+ while (true) {
905
+ try {
906
+ response = await _state.apiConn().post_json("api/experiment/register", args);
907
+ break;
908
+ } catch (e) {
909
+ if (args["base_experiment"] && `${"data" in e && e.data}`.includes("base experiment")) {
910
+ console.warn(`Base experiment ${args["base_experiment"]} not found.`);
911
+ delete args["base_experiment"];
912
+ } else {
913
+ throw e;
914
+ }
915
+ }
916
+ }
910
917
  const project = response.project;
911
918
  const experiment = response.experiment;
912
919
  return new Experiment(project, experiment.id, experiment.name, dataset);
@@ -933,7 +940,7 @@ var Experiment = class {
933
940
  * @param event.expected: The ground truth value (an arbitrary, JSON serializable object) that you'd compare to `output` to determine if your `output` value is correct or not. Braintrust currently does not compare `output` to `expected` for you, since there are so many different ways to do that correctly. Instead, these values are just used to help you navigate your experiments while digging into analyses. However, we may later use these values to re-score outputs or fine-tune your models.
934
941
  * @param event.scores: A dictionary of numeric values (between 0 and 1) to log. The scores should give you a variety of signals that help you determine how accurate the outputs are compared to what you expect and diagnose failures. For example, a summarization app might have one score that tells you how accurate the summary is, and another that measures the word similarity between the generated and grouth truth summary. The word similarity score could help you determine whether the summarization was covering similar concepts or not. You can use these scores to help you sort, filter, and compare experiments.
935
942
  * @param event.metadata: (Optional) a dictionary with additional data about the test example, model outputs, or just about anything else that's relevant, that you can use to help find and analyze examples later. For example, you could log the `prompt`, example's `id`, or anything else that would be useful to slice/dice later. The values in `metadata` can be any JSON-serializable type, but its keys must be strings.
936
- * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically and should not be specified: "start", "end".
943
+ * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically: "start", "end", "caller_functionname", "caller_filename", "caller_lineno".
937
944
  * @param event.id: (Optional) a unique identifier for the event. If you don't provide one, BrainTrust will generate one for you.
938
945
  * @param event.dataset_record_id: (Optional) the id of the dataset record that this event is associated with. This field is required if and only if the experiment is associated with a dataset.
939
946
  * @param event.inputs: (Deprecated) the same as `input` (will be removed in a future version).
@@ -994,6 +1001,7 @@ var Experiment = class {
994
1001
  )}/p/${encodeURIComponent(this.project.name)}`;
995
1002
  const experimentUrl = `${projectUrl}/${encodeURIComponent(this.name)}`;
996
1003
  let scores = void 0;
1004
+ let metrics = void 0;
997
1005
  let comparisonExperimentName = void 0;
998
1006
  if (summarizeScores) {
999
1007
  if (comparisonExperimentId === void 0) {
@@ -1008,14 +1016,16 @@ var Experiment = class {
1008
1016
  }
1009
1017
  }
1010
1018
  if (comparisonExperimentId !== void 0) {
1011
- scores = await _state.logConn().get_json(
1012
- "/experiment-comparison",
1019
+ const results = await _state.logConn().get_json(
1020
+ "/experiment-comparison2",
1013
1021
  {
1014
1022
  experiment_id: this.id,
1015
1023
  base_experiment_id: comparisonExperimentId
1016
1024
  },
1017
1025
  3
1018
1026
  );
1027
+ scores = results["scores"];
1028
+ metrics = results["metrics"];
1019
1029
  }
1020
1030
  }
1021
1031
  return {
@@ -1024,7 +1034,8 @@ var Experiment = class {
1024
1034
  projectUrl,
1025
1035
  experimentUrl,
1026
1036
  comparisonExperimentName,
1027
- scores
1037
+ scores,
1038
+ metrics
1028
1039
  };
1029
1040
  }
1030
1041
  /**
@@ -1053,6 +1064,7 @@ var SpanImpl = class _SpanImpl {
1053
1064
  constructor(args) {
1054
1065
  this.kind = "span";
1055
1066
  this.finished = false;
1067
+ this.loggedEndTime = void 0;
1056
1068
  this.bgLogger = args.bgLogger;
1057
1069
  const callerLocation = isomorph_default.getCallerLocation();
1058
1070
  this.internalData = {
@@ -1060,54 +1072,66 @@ var SpanImpl = class _SpanImpl {
1060
1072
  start: args.startTime ?? getCurrentUnixTimestamp(),
1061
1073
  ...callerLocation
1062
1074
  },
1063
- span_attributes: { ...args.spanAttributes, name: args.name }
1075
+ span_attributes: { ...args.spanAttributes, name: args.name },
1076
+ created: (/* @__PURE__ */ new Date()).toISOString()
1064
1077
  };
1065
- this.id = args.event?.id ?? v4_default();
1066
- this.span_id = v4_default();
1078
+ const id = args.event?.id ?? v4_default();
1079
+ const span_id = v4_default();
1067
1080
  if ("rootExperiment" in args) {
1068
- this.root_span_id = this.span_id;
1069
1081
  this._object_info = {
1082
+ id,
1083
+ span_id,
1084
+ root_span_id: span_id,
1070
1085
  project_id: args.rootExperiment.project.id,
1071
1086
  experiment_id: args.rootExperiment.id
1072
1087
  };
1073
- this.internalData = Object.assign(this.internalData, {
1074
- created: (/* @__PURE__ */ new Date()).toISOString()
1075
- });
1076
1088
  } else if ("rootProject" in args) {
1077
- this.root_span_id = this.span_id;
1078
1089
  this._object_info = {
1090
+ id,
1091
+ span_id,
1092
+ root_span_id: span_id,
1079
1093
  org_id: _state.orgId,
1080
1094
  project_id: args.rootProject.id,
1081
1095
  log_id: "g"
1082
1096
  };
1083
- this.internalData = Object.assign(this.internalData, {
1084
- created: (/* @__PURE__ */ new Date()).toISOString()
1085
- });
1086
1097
  } else if ("parentSpan" in args) {
1087
- this.root_span_id = args.parentSpan.root_span_id;
1088
- this._object_info = args.parentSpan._object_info;
1098
+ this._object_info = {
1099
+ ...args.parentSpan._object_info,
1100
+ id,
1101
+ span_id
1102
+ };
1089
1103
  this.internalData.span_parents = [args.parentSpan.span_id];
1090
1104
  } else {
1091
1105
  throw new Error("Must provide either 'rootExperiment' or 'parentSpan'");
1092
1106
  }
1093
1107
  this.isMerge = false;
1094
- const { id, ...eventRest } = args.event ?? {};
1108
+ const { id: _id, ...eventRest } = args.event ?? {};
1095
1109
  this.log(eventRest);
1096
1110
  this.isMerge = true;
1097
1111
  unterminatedObjects.addUnterminated(this, callerLocation);
1098
1112
  }
1113
+ get id() {
1114
+ return this._object_info.id;
1115
+ }
1116
+ get span_id() {
1117
+ return this._object_info.span_id;
1118
+ }
1119
+ get root_span_id() {
1120
+ return this._object_info.root_span_id;
1121
+ }
1099
1122
  log(event) {
1100
1123
  this.checkNotFinished();
1101
1124
  const sanitized = validateAndSanitizeExperimentLogPartialArgs(event);
1125
+ const sanitizedAndInternalData = { ...this.internalData };
1126
+ mergeDicts(sanitizedAndInternalData, sanitized);
1102
1127
  const record = {
1103
- ...sanitized,
1104
- ...this.internalData,
1105
- id: this.id,
1106
- span_id: this.span_id,
1107
- root_span_id: this.root_span_id,
1128
+ ...sanitizedAndInternalData,
1108
1129
  ...this._object_info,
1109
1130
  [IS_MERGE_FIELD]: this.isMerge
1110
1131
  };
1132
+ if (record.metrics?.end) {
1133
+ this.loggedEndTime = record.metrics?.end;
1134
+ }
1111
1135
  this.internalData = {};
1112
1136
  this.bgLogger.log([record]);
1113
1137
  }
@@ -1136,8 +1160,13 @@ var SpanImpl = class _SpanImpl {
1136
1160
  }
1137
1161
  end(args) {
1138
1162
  this.checkNotFinished();
1139
- const endTime = args?.endTime ?? getCurrentUnixTimestamp();
1140
- this.internalData = { metrics: { end: endTime } };
1163
+ let endTime;
1164
+ if (!this.loggedEndTime) {
1165
+ endTime = args?.endTime ?? getCurrentUnixTimestamp();
1166
+ this.internalData = { metrics: { end: endTime } };
1167
+ } else {
1168
+ endTime = this.loggedEndTime;
1169
+ }
1141
1170
  this.log({});
1142
1171
  this.finished = true;
1143
1172
  unterminatedObjects.removeUnterminated(this);
@@ -1363,8 +1392,130 @@ var Dataset = class {
1363
1392
  }
1364
1393
  };
1365
1394
 
1395
+ // src/browser-config.ts
1396
+ var browserConfigured = false;
1397
+ function configureBrowser() {
1398
+ if (browserConfigured) {
1399
+ return;
1400
+ }
1401
+ try {
1402
+ isomorph_default.newAsyncLocalStorage = () => new AsyncLocalStorage();
1403
+ } catch {
1404
+ }
1405
+ _internalSetInitialState();
1406
+ browserConfigured = true;
1407
+ }
1408
+
1409
+ // src/oai.ts
1410
+ function wrapOpenAI(openai) {
1411
+ if (openai?.chat?.completions?.create) {
1412
+ return wrapOpenAIv4(openai);
1413
+ } else {
1414
+ console.warn("Unsupported OpenAI library (potentially v3). Not wrapping.");
1415
+ return openai;
1416
+ }
1417
+ }
1418
+ function wrapOpenAIv4(openai) {
1419
+ let completionProxy = new Proxy(openai.chat.completions, {
1420
+ get(target, name, receiver) {
1421
+ const baseVal = Reflect.get(target, name, receiver);
1422
+ if (name === "create") {
1423
+ return wrapChatCompletion(baseVal.bind(target));
1424
+ }
1425
+ return baseVal;
1426
+ }
1427
+ });
1428
+ let chatProxy = new Proxy(openai.chat, {
1429
+ get(target, name, receiver) {
1430
+ if (name === "completions") {
1431
+ return completionProxy;
1432
+ }
1433
+ return Reflect.get(target, name, receiver);
1434
+ }
1435
+ });
1436
+ let proxy = new Proxy(openai, {
1437
+ get(target, name, receiver) {
1438
+ if (name === "chat") {
1439
+ return chatProxy;
1440
+ }
1441
+ return Reflect.get(target, name, receiver);
1442
+ }
1443
+ });
1444
+ return proxy;
1445
+ }
1446
+ function wrapChatCompletion(completion) {
1447
+ return async (params) => {
1448
+ const { messages, ...rest } = params;
1449
+ const span = startSpan({
1450
+ name: "OpenAI Chat Completion",
1451
+ event: {
1452
+ input: messages,
1453
+ metadata: {
1454
+ ...rest
1455
+ }
1456
+ }
1457
+ });
1458
+ if (params.stream) {
1459
+ const startTime = getCurrentUnixTimestamp();
1460
+ const ret = await completion(params);
1461
+ return new WrapperStream(span, startTime, ret);
1462
+ } else {
1463
+ try {
1464
+ const ret = await completion(params);
1465
+ const { messages: messages2, ...rest2 } = params;
1466
+ span.log({
1467
+ input: messages2,
1468
+ metadata: {
1469
+ ...rest2
1470
+ },
1471
+ output: ret.choices[0],
1472
+ metrics: {
1473
+ tokens: ret.usage?.total_tokens,
1474
+ prompt_tokens: ret.usage?.prompt_tokens,
1475
+ completion_tokens: ret.usage?.completion_tokens
1476
+ }
1477
+ });
1478
+ return ret;
1479
+ } finally {
1480
+ span.end();
1481
+ }
1482
+ }
1483
+ };
1484
+ }
1485
+ var WrapperStream = class {
1486
+ constructor(span, startTime, iter) {
1487
+ this.span = span;
1488
+ this.iter = iter;
1489
+ this.startTime = startTime;
1490
+ }
1491
+ async *[Symbol.asyncIterator]() {
1492
+ let first = true;
1493
+ let allResults = [];
1494
+ try {
1495
+ for await (const item of this.iter) {
1496
+ if (first) {
1497
+ const now2 = getCurrentUnixTimestamp();
1498
+ this.span.log({
1499
+ metrics: {
1500
+ time_to_first_token: now2 - this.startTime
1501
+ }
1502
+ });
1503
+ first = false;
1504
+ }
1505
+ allResults.push(item);
1506
+ yield item;
1507
+ }
1508
+ this.span.log({
1509
+ output: allResults
1510
+ });
1511
+ } finally {
1512
+ this.span.end();
1513
+ }
1514
+ }
1515
+ };
1516
+
1366
1517
  // src/browser.ts
1367
- _internalSetInitialState();
1518
+ configureBrowser();
1368
1519
  export {
1369
1520
  Dataset,
1370
1521
  Experiment,
@@ -1388,5 +1539,7 @@ export {
1388
1539
  withCurrent,
1389
1540
  withDataset,
1390
1541
  withExperiment,
1391
- withLogger
1542
+ withLogger,
1543
+ wrapOpenAI,
1544
+ wrapOpenAIv4
1392
1545
  };
package/dist/cli.js CHANGED
@@ -8955,7 +8955,7 @@ var require_package = __commonJS({
8955
8955
  "package.json"(exports2, module2) {
8956
8956
  module2.exports = {
8957
8957
  name: "braintrust",
8958
- version: "0.0.71",
8958
+ version: "0.0.73",
8959
8959
  description: "SDK for integrating Braintrust",
8960
8960
  main: "./dist/index.js",
8961
8961
  browser: {
@@ -10826,7 +10826,7 @@ async function login(options = {}) {
10826
10826
  const {
10827
10827
  apiUrl = isomorph_default.getEnv("BRAINTRUST_API_URL") || "https://www.braintrustdata.com",
10828
10828
  apiKey = isomorph_default.getEnv("BRAINTRUST_API_KEY"),
10829
- orgName = void 0,
10829
+ orgName = isomorph_default.getEnv("BRAINTRUST_ORG_NAME"),
10830
10830
  disableCache = false
10831
10831
  } = options || {};
10832
10832
  let { forceLogin = false } = options || {};
@@ -10881,6 +10881,11 @@ function startSpan(args) {
10881
10881
  const { name: nameOpt, ...argsRest } = args ?? {};
10882
10882
  const name = (nameOpt ?? isomorph_default.getCallerLocation()?.caller_functionname) || "root";
10883
10883
  const parentSpan = currentSpan();
10884
+ if (!parentSpan) {
10885
+ throw new Error(
10886
+ "Cannot call startSpan() from outside a trace. Please wrap this code in a traced() callback."
10887
+ );
10888
+ }
10884
10889
  if (!Object.is(parentSpan, noopSpan)) {
10885
10890
  return parentSpan.startSpan(name, argsRest);
10886
10891
  }
@@ -10974,17 +10979,6 @@ function validateAndSanitizeExperimentLogPartialArgs(event) {
10974
10979
  throw new Error("metric keys must be strings");
10975
10980
  }
10976
10981
  }
10977
- for (const forbiddenKey of [
10978
- "start",
10979
- "end",
10980
- "caller_functionname",
10981
- "caller_filename",
10982
- "caller_lineno"
10983
- ]) {
10984
- if (forbiddenKey in event.metrics) {
10985
- throw new Error(`Key ${forbiddenKey} may not be specified in metrics`);
10986
- }
10987
- }
10988
10982
  }
10989
10983
  if ("input" in event && event.input && "inputs" in event && event.inputs) {
10990
10984
  throw new Error(
@@ -11058,7 +11052,20 @@ async function _initExperiment(projectName, {
11058
11052
  if (isPublic !== void 0) {
11059
11053
  args["public"] = isPublic;
11060
11054
  }
11061
- const response = await _state.apiConn().post_json("api/experiment/register", args);
11055
+ let response = null;
11056
+ while (true) {
11057
+ try {
11058
+ response = await _state.apiConn().post_json("api/experiment/register", args);
11059
+ break;
11060
+ } catch (e) {
11061
+ if (args["base_experiment"] && `${"data" in e && e.data}`.includes("base experiment")) {
11062
+ console.warn(`Base experiment ${args["base_experiment"]} not found.`);
11063
+ delete args["base_experiment"];
11064
+ } else {
11065
+ throw e;
11066
+ }
11067
+ }
11068
+ }
11062
11069
  const project = response.project;
11063
11070
  const experiment = response.experiment;
11064
11071
  return new Experiment(project, experiment.id, experiment.name, dataset);
@@ -11085,7 +11092,7 @@ var Experiment = class {
11085
11092
  * @param event.expected: The ground truth value (an arbitrary, JSON serializable object) that you'd compare to `output` to determine if your `output` value is correct or not. Braintrust currently does not compare `output` to `expected` for you, since there are so many different ways to do that correctly. Instead, these values are just used to help you navigate your experiments while digging into analyses. However, we may later use these values to re-score outputs or fine-tune your models.
11086
11093
  * @param event.scores: A dictionary of numeric values (between 0 and 1) to log. The scores should give you a variety of signals that help you determine how accurate the outputs are compared to what you expect and diagnose failures. For example, a summarization app might have one score that tells you how accurate the summary is, and another that measures the word similarity between the generated and grouth truth summary. The word similarity score could help you determine whether the summarization was covering similar concepts or not. You can use these scores to help you sort, filter, and compare experiments.
11087
11094
  * @param event.metadata: (Optional) a dictionary with additional data about the test example, model outputs, or just about anything else that's relevant, that you can use to help find and analyze examples later. For example, you could log the `prompt`, example's `id`, or anything else that would be useful to slice/dice later. The values in `metadata` can be any JSON-serializable type, but its keys must be strings.
11088
- * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically and should not be specified: "start", "end".
11095
+ * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically: "start", "end", "caller_functionname", "caller_filename", "caller_lineno".
11089
11096
  * @param event.id: (Optional) a unique identifier for the event. If you don't provide one, BrainTrust will generate one for you.
11090
11097
  * @param event.dataset_record_id: (Optional) the id of the dataset record that this event is associated with. This field is required if and only if the experiment is associated with a dataset.
11091
11098
  * @param event.inputs: (Deprecated) the same as `input` (will be removed in a future version).
@@ -11146,6 +11153,7 @@ var Experiment = class {
11146
11153
  )}/p/${encodeURIComponent(this.project.name)}`;
11147
11154
  const experimentUrl = `${projectUrl}/${encodeURIComponent(this.name)}`;
11148
11155
  let scores = void 0;
11156
+ let metrics = void 0;
11149
11157
  let comparisonExperimentName = void 0;
11150
11158
  if (summarizeScores) {
11151
11159
  if (comparisonExperimentId === void 0) {
@@ -11160,14 +11168,16 @@ var Experiment = class {
11160
11168
  }
11161
11169
  }
11162
11170
  if (comparisonExperimentId !== void 0) {
11163
- scores = await _state.logConn().get_json(
11164
- "/experiment-comparison",
11171
+ const results = await _state.logConn().get_json(
11172
+ "/experiment-comparison2",
11165
11173
  {
11166
11174
  experiment_id: this.id,
11167
11175
  base_experiment_id: comparisonExperimentId
11168
11176
  },
11169
11177
  3
11170
11178
  );
11179
+ scores = results["scores"];
11180
+ metrics = results["metrics"];
11171
11181
  }
11172
11182
  }
11173
11183
  return {
@@ -11176,7 +11186,8 @@ var Experiment = class {
11176
11186
  projectUrl,
11177
11187
  experimentUrl,
11178
11188
  comparisonExperimentName,
11179
- scores
11189
+ scores,
11190
+ metrics
11180
11191
  };
11181
11192
  }
11182
11193
  /**
@@ -11205,6 +11216,7 @@ var SpanImpl = class _SpanImpl {
11205
11216
  constructor(args) {
11206
11217
  this.kind = "span";
11207
11218
  this.finished = false;
11219
+ this.loggedEndTime = void 0;
11208
11220
  this.bgLogger = args.bgLogger;
11209
11221
  const callerLocation = isomorph_default.getCallerLocation();
11210
11222
  this.internalData = {
@@ -11212,54 +11224,66 @@ var SpanImpl = class _SpanImpl {
11212
11224
  start: args.startTime ?? getCurrentUnixTimestamp(),
11213
11225
  ...callerLocation
11214
11226
  },
11215
- span_attributes: { ...args.spanAttributes, name: args.name }
11227
+ span_attributes: { ...args.spanAttributes, name: args.name },
11228
+ created: (/* @__PURE__ */ new Date()).toISOString()
11216
11229
  };
11217
- this.id = args.event?.id ?? v4_default();
11218
- this.span_id = v4_default();
11230
+ const id = args.event?.id ?? v4_default();
11231
+ const span_id = v4_default();
11219
11232
  if ("rootExperiment" in args) {
11220
- this.root_span_id = this.span_id;
11221
11233
  this._object_info = {
11234
+ id,
11235
+ span_id,
11236
+ root_span_id: span_id,
11222
11237
  project_id: args.rootExperiment.project.id,
11223
11238
  experiment_id: args.rootExperiment.id
11224
11239
  };
11225
- this.internalData = Object.assign(this.internalData, {
11226
- created: (/* @__PURE__ */ new Date()).toISOString()
11227
- });
11228
11240
  } else if ("rootProject" in args) {
11229
- this.root_span_id = this.span_id;
11230
11241
  this._object_info = {
11242
+ id,
11243
+ span_id,
11244
+ root_span_id: span_id,
11231
11245
  org_id: _state.orgId,
11232
11246
  project_id: args.rootProject.id,
11233
11247
  log_id: "g"
11234
11248
  };
11235
- this.internalData = Object.assign(this.internalData, {
11236
- created: (/* @__PURE__ */ new Date()).toISOString()
11237
- });
11238
11249
  } else if ("parentSpan" in args) {
11239
- this.root_span_id = args.parentSpan.root_span_id;
11240
- this._object_info = args.parentSpan._object_info;
11250
+ this._object_info = {
11251
+ ...args.parentSpan._object_info,
11252
+ id,
11253
+ span_id
11254
+ };
11241
11255
  this.internalData.span_parents = [args.parentSpan.span_id];
11242
11256
  } else {
11243
11257
  throw new Error("Must provide either 'rootExperiment' or 'parentSpan'");
11244
11258
  }
11245
11259
  this.isMerge = false;
11246
- const { id, ...eventRest } = args.event ?? {};
11260
+ const { id: _id, ...eventRest } = args.event ?? {};
11247
11261
  this.log(eventRest);
11248
11262
  this.isMerge = true;
11249
11263
  unterminatedObjects.addUnterminated(this, callerLocation);
11250
11264
  }
11265
+ get id() {
11266
+ return this._object_info.id;
11267
+ }
11268
+ get span_id() {
11269
+ return this._object_info.span_id;
11270
+ }
11271
+ get root_span_id() {
11272
+ return this._object_info.root_span_id;
11273
+ }
11251
11274
  log(event) {
11252
11275
  this.checkNotFinished();
11253
11276
  const sanitized = validateAndSanitizeExperimentLogPartialArgs(event);
11277
+ const sanitizedAndInternalData = { ...this.internalData };
11278
+ mergeDicts(sanitizedAndInternalData, sanitized);
11254
11279
  const record = {
11255
- ...sanitized,
11256
- ...this.internalData,
11257
- id: this.id,
11258
- span_id: this.span_id,
11259
- root_span_id: this.root_span_id,
11280
+ ...sanitizedAndInternalData,
11260
11281
  ...this._object_info,
11261
11282
  [IS_MERGE_FIELD]: this.isMerge
11262
11283
  };
11284
+ if (record.metrics?.end) {
11285
+ this.loggedEndTime = record.metrics?.end;
11286
+ }
11263
11287
  this.internalData = {};
11264
11288
  this.bgLogger.log([record]);
11265
11289
  }
@@ -11288,8 +11312,13 @@ var SpanImpl = class _SpanImpl {
11288
11312
  }
11289
11313
  end(args) {
11290
11314
  this.checkNotFinished();
11291
- const endTime = args?.endTime ?? getCurrentUnixTimestamp();
11292
- this.internalData = { metrics: { end: endTime } };
11315
+ let endTime;
11316
+ if (!this.loggedEndTime) {
11317
+ endTime = args?.endTime ?? getCurrentUnixTimestamp();
11318
+ this.internalData = { metrics: { end: endTime } };
11319
+ } else {
11320
+ endTime = this.loggedEndTime;
11321
+ }
11293
11322
  this.log({});
11294
11323
  this.finished = true;
11295
11324
  unterminatedObjects.removeUnterminated(this);
@@ -15826,24 +15855,22 @@ async function getRepoStatus() {
15826
15855
  let tag = void 0;
15827
15856
  let branch = void 0;
15828
15857
  const dirty = (await git.diffSummary()).files.length > 0;
15829
- if (!dirty) {
15830
- commit = await attempt(async () => await git.revparse(["HEAD"]));
15831
- commit_message = await attempt(
15832
- async () => (await git.raw(["log", "-1", "--pretty=%B"])).trim()
15833
- );
15834
- commit_time = await attempt(
15835
- async () => (await git.raw(["log", "-1", "--pretty=%cI"])).trim()
15836
- );
15837
- author_name = await attempt(
15838
- async () => (await git.raw(["log", "-1", "--pretty=%aN"])).trim()
15839
- );
15840
- author_email = await attempt(
15841
- async () => (await git.raw(["log", "-1", "--pretty=%aE"])).trim()
15842
- );
15843
- tag = await attempt(
15844
- async () => (await git.raw(["describe", "--tags", "--exact-match", "--always"])).trim()
15845
- );
15846
- }
15858
+ commit = await attempt(async () => await git.revparse(["HEAD"]));
15859
+ commit_message = await attempt(
15860
+ async () => (await git.raw(["log", "-1", "--pretty=%B"])).trim()
15861
+ );
15862
+ commit_time = await attempt(
15863
+ async () => (await git.raw(["log", "-1", "--pretty=%cI"])).trim()
15864
+ );
15865
+ author_name = await attempt(
15866
+ async () => (await git.raw(["log", "-1", "--pretty=%aN"])).trim()
15867
+ );
15868
+ author_email = await attempt(
15869
+ async () => (await git.raw(["log", "-1", "--pretty=%aE"])).trim()
15870
+ );
15871
+ tag = await attempt(
15872
+ async () => (await git.raw(["describe", "--tags", "--exact-match", "--always"])).trim()
15873
+ );
15847
15874
  branch = await attempt(
15848
15875
  async () => (await git.raw(["rev-parse", "--abbrev-ref", "HEAD"])).trim()
15849
15876
  );
@@ -16031,7 +16058,9 @@ async function initFile(inFile, outFile, opts, args) {
16031
16058
  function updateEvaluators(evaluators, buildResults, opts) {
16032
16059
  for (const result of buildResults) {
16033
16060
  if (result.type === "failure") {
16034
- if (opts.verbose) {
16061
+ if (opts.terminateOnFailure) {
16062
+ throw result.error;
16063
+ } else if (opts.verbose) {
16035
16064
  console.warn(`Failed to compile ${result.sourceFile}`);
16036
16065
  console.warn(result.error);
16037
16066
  } else {
@@ -16242,6 +16271,7 @@ async function run(args) {
16242
16271
  orgName: args.org_name,
16243
16272
  apiUrl: args.api_url,
16244
16273
  noSendLogs: !!args.no_send_logs,
16274
+ terminateOnFailure: !!args.terminate_on_failure,
16245
16275
  watch: !!args.watch,
16246
16276
  progressReporter: args.no_progress_bars ? new SimpleProgressReporter() : new BarProgressReporter(),
16247
16277
  filters: args.filter ? parseFilters(args.filter) : []
@@ -16309,6 +16339,10 @@ async function main() {
16309
16339
  action: "store_true",
16310
16340
  help: "Do not show progress bars when processing evaluators."
16311
16341
  });
16342
+ parser_run.add_argument("--terminate-on-failure", {
16343
+ action: "store_true",
16344
+ help: "If provided, terminates on a failing eval, instead of the default (moving onto the next one)."
16345
+ });
16312
16346
  parser_run.add_argument("files", {
16313
16347
  nargs: "*",
16314
16348
  help: "A list of files or directories to run. If no files are specified, the current directory is used."
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * An isomorphic JS library for logging data to Braintrust.
2
+ * An isomorphic JS library for logging data to Braintrust. `braintrust` is distributed as a [library on NPM](https://www.npmjs.com/package/braintrust).
3
3
  *
4
4
  * ### Quickstart
5
5
  *
package/dist/index.js CHANGED
@@ -7595,24 +7595,22 @@ async function getRepoStatus() {
7595
7595
  let tag = void 0;
7596
7596
  let branch = void 0;
7597
7597
  const dirty = (await git.diffSummary()).files.length > 0;
7598
- if (!dirty) {
7599
- commit = await attempt(async () => await git.revparse(["HEAD"]));
7600
- commit_message = await attempt(
7601
- async () => (await git.raw(["log", "-1", "--pretty=%B"])).trim()
7602
- );
7603
- commit_time = await attempt(
7604
- async () => (await git.raw(["log", "-1", "--pretty=%cI"])).trim()
7605
- );
7606
- author_name = await attempt(
7607
- async () => (await git.raw(["log", "-1", "--pretty=%aN"])).trim()
7608
- );
7609
- author_email = await attempt(
7610
- async () => (await git.raw(["log", "-1", "--pretty=%aE"])).trim()
7611
- );
7612
- tag = await attempt(
7613
- async () => (await git.raw(["describe", "--tags", "--exact-match", "--always"])).trim()
7614
- );
7615
- }
7598
+ commit = await attempt(async () => await git.revparse(["HEAD"]));
7599
+ commit_message = await attempt(
7600
+ async () => (await git.raw(["log", "-1", "--pretty=%B"])).trim()
7601
+ );
7602
+ commit_time = await attempt(
7603
+ async () => (await git.raw(["log", "-1", "--pretty=%cI"])).trim()
7604
+ );
7605
+ author_name = await attempt(
7606
+ async () => (await git.raw(["log", "-1", "--pretty=%aN"])).trim()
7607
+ );
7608
+ author_email = await attempt(
7609
+ async () => (await git.raw(["log", "-1", "--pretty=%aE"])).trim()
7610
+ );
7611
+ tag = await attempt(
7612
+ async () => (await git.raw(["describe", "--tags", "--exact-match", "--always"])).trim()
7613
+ );
7616
7614
  branch = await attempt(
7617
7615
  async () => (await git.raw(["rev-parse", "--abbrev-ref", "HEAD"])).trim()
7618
7616
  );
@@ -8047,7 +8045,7 @@ var Logger = class {
8047
8045
  * @param event.expected: The ground truth value (an arbitrary, JSON serializable object) that you'd compare to `output` to determine if your `output` value is correct or not. Braintrust currently does not compare `output` to `expected` for you, since there are so many different ways to do that correctly. Instead, these values are just used to help you navigate while digging into analyses. However, we may later use these values to re-score outputs or fine-tune your models.
8048
8046
  * @param event.scores: A dictionary of numeric values (between 0 and 1) to log. The scores should give you a variety of signals that help you determine how accurate the outputs are compared to what you expect and diagnose failures. For example, a summarization app might have one score that tells you how accurate the summary is, and another that measures the word similarity between the generated and grouth truth summary. The word similarity score could help you determine whether the summarization was covering similar concepts or not. You can use these scores to help you sort, filter, and compare logs.
8049
8047
  * @param event.metadata: (Optional) a dictionary with additional data about the test example, model outputs, or just about anything else that's relevant, that you can use to help find and analyze examples later. For example, you could log the `prompt`, example's `id`, or anything else that would be useful to slice/dice later. The values in `metadata` can be any JSON-serializable type, but its keys must be strings.
8050
- * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically and should not be specified: "start", "end".
8048
+ * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically: "start", "end", "caller_functionname", "caller_filename", "caller_lineno".
8051
8049
  * @param event.id: (Optional) a unique identifier for the event. If you don't provide one, BrainTrust will generate one for you.
8052
8050
  * :returns: The `id` of the logged event.
8053
8051
  */
@@ -8309,7 +8307,7 @@ async function login(options = {}) {
8309
8307
  const {
8310
8308
  apiUrl = isomorph_default.getEnv("BRAINTRUST_API_URL") || "https://www.braintrustdata.com",
8311
8309
  apiKey = isomorph_default.getEnv("BRAINTRUST_API_KEY"),
8312
- orgName = void 0,
8310
+ orgName = isomorph_default.getEnv("BRAINTRUST_ORG_NAME"),
8313
8311
  disableCache = false
8314
8312
  } = options || {};
8315
8313
  let { forceLogin = false } = options || {};
@@ -8378,6 +8376,11 @@ function startSpan(args) {
8378
8376
  const { name: nameOpt, ...argsRest } = args ?? {};
8379
8377
  const name = (nameOpt ?? isomorph_default.getCallerLocation()?.caller_functionname) || "root";
8380
8378
  const parentSpan = currentSpan();
8379
+ if (!parentSpan) {
8380
+ throw new Error(
8381
+ "Cannot call startSpan() from outside a trace. Please wrap this code in a traced() callback."
8382
+ );
8383
+ }
8381
8384
  if (!Object.is(parentSpan, noopSpan)) {
8382
8385
  return parentSpan.startSpan(name, argsRest);
8383
8386
  }
@@ -8471,17 +8474,6 @@ function validateAndSanitizeExperimentLogPartialArgs(event) {
8471
8474
  throw new Error("metric keys must be strings");
8472
8475
  }
8473
8476
  }
8474
- for (const forbiddenKey of [
8475
- "start",
8476
- "end",
8477
- "caller_functionname",
8478
- "caller_filename",
8479
- "caller_lineno"
8480
- ]) {
8481
- if (forbiddenKey in event.metrics) {
8482
- throw new Error(`Key ${forbiddenKey} may not be specified in metrics`);
8483
- }
8484
- }
8485
8477
  }
8486
8478
  if ("input" in event && event.input && "inputs" in event && event.inputs) {
8487
8479
  throw new Error(
@@ -8555,7 +8547,20 @@ async function _initExperiment(projectName, {
8555
8547
  if (isPublic !== void 0) {
8556
8548
  args["public"] = isPublic;
8557
8549
  }
8558
- const response = await _state.apiConn().post_json("api/experiment/register", args);
8550
+ let response = null;
8551
+ while (true) {
8552
+ try {
8553
+ response = await _state.apiConn().post_json("api/experiment/register", args);
8554
+ break;
8555
+ } catch (e) {
8556
+ if (args["base_experiment"] && `${"data" in e && e.data}`.includes("base experiment")) {
8557
+ console.warn(`Base experiment ${args["base_experiment"]} not found.`);
8558
+ delete args["base_experiment"];
8559
+ } else {
8560
+ throw e;
8561
+ }
8562
+ }
8563
+ }
8559
8564
  const project = response.project;
8560
8565
  const experiment = response.experiment;
8561
8566
  return new Experiment(project, experiment.id, experiment.name, dataset);
@@ -8582,7 +8587,7 @@ var Experiment = class {
8582
8587
  * @param event.expected: The ground truth value (an arbitrary, JSON serializable object) that you'd compare to `output` to determine if your `output` value is correct or not. Braintrust currently does not compare `output` to `expected` for you, since there are so many different ways to do that correctly. Instead, these values are just used to help you navigate your experiments while digging into analyses. However, we may later use these values to re-score outputs or fine-tune your models.
8583
8588
  * @param event.scores: A dictionary of numeric values (between 0 and 1) to log. The scores should give you a variety of signals that help you determine how accurate the outputs are compared to what you expect and diagnose failures. For example, a summarization app might have one score that tells you how accurate the summary is, and another that measures the word similarity between the generated and grouth truth summary. The word similarity score could help you determine whether the summarization was covering similar concepts or not. You can use these scores to help you sort, filter, and compare experiments.
8584
8589
  * @param event.metadata: (Optional) a dictionary with additional data about the test example, model outputs, or just about anything else that's relevant, that you can use to help find and analyze examples later. For example, you could log the `prompt`, example's `id`, or anything else that would be useful to slice/dice later. The values in `metadata` can be any JSON-serializable type, but its keys must be strings.
8585
- * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically and should not be specified: "start", "end".
8590
+ * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically: "start", "end", "caller_functionname", "caller_filename", "caller_lineno".
8586
8591
  * @param event.id: (Optional) a unique identifier for the event. If you don't provide one, BrainTrust will generate one for you.
8587
8592
  * @param event.dataset_record_id: (Optional) the id of the dataset record that this event is associated with. This field is required if and only if the experiment is associated with a dataset.
8588
8593
  * @param event.inputs: (Deprecated) the same as `input` (will be removed in a future version).
@@ -8643,6 +8648,7 @@ var Experiment = class {
8643
8648
  )}/p/${encodeURIComponent(this.project.name)}`;
8644
8649
  const experimentUrl = `${projectUrl}/${encodeURIComponent(this.name)}`;
8645
8650
  let scores = void 0;
8651
+ let metrics = void 0;
8646
8652
  let comparisonExperimentName = void 0;
8647
8653
  if (summarizeScores) {
8648
8654
  if (comparisonExperimentId === void 0) {
@@ -8657,14 +8663,16 @@ var Experiment = class {
8657
8663
  }
8658
8664
  }
8659
8665
  if (comparisonExperimentId !== void 0) {
8660
- scores = await _state.logConn().get_json(
8661
- "/experiment-comparison",
8666
+ const results = await _state.logConn().get_json(
8667
+ "/experiment-comparison2",
8662
8668
  {
8663
8669
  experiment_id: this.id,
8664
8670
  base_experiment_id: comparisonExperimentId
8665
8671
  },
8666
8672
  3
8667
8673
  );
8674
+ scores = results["scores"];
8675
+ metrics = results["metrics"];
8668
8676
  }
8669
8677
  }
8670
8678
  return {
@@ -8673,7 +8681,8 @@ var Experiment = class {
8673
8681
  projectUrl,
8674
8682
  experimentUrl,
8675
8683
  comparisonExperimentName,
8676
- scores
8684
+ scores,
8685
+ metrics
8677
8686
  };
8678
8687
  }
8679
8688
  /**
@@ -8702,6 +8711,7 @@ var SpanImpl = class _SpanImpl {
8702
8711
  constructor(args) {
8703
8712
  this.kind = "span";
8704
8713
  this.finished = false;
8714
+ this.loggedEndTime = void 0;
8705
8715
  this.bgLogger = args.bgLogger;
8706
8716
  const callerLocation = isomorph_default.getCallerLocation();
8707
8717
  this.internalData = {
@@ -8709,54 +8719,66 @@ var SpanImpl = class _SpanImpl {
8709
8719
  start: args.startTime ?? getCurrentUnixTimestamp(),
8710
8720
  ...callerLocation
8711
8721
  },
8712
- span_attributes: { ...args.spanAttributes, name: args.name }
8722
+ span_attributes: { ...args.spanAttributes, name: args.name },
8723
+ created: (/* @__PURE__ */ new Date()).toISOString()
8713
8724
  };
8714
- this.id = args.event?.id ?? v4_default();
8715
- this.span_id = v4_default();
8725
+ const id = args.event?.id ?? v4_default();
8726
+ const span_id = v4_default();
8716
8727
  if ("rootExperiment" in args) {
8717
- this.root_span_id = this.span_id;
8718
8728
  this._object_info = {
8729
+ id,
8730
+ span_id,
8731
+ root_span_id: span_id,
8719
8732
  project_id: args.rootExperiment.project.id,
8720
8733
  experiment_id: args.rootExperiment.id
8721
8734
  };
8722
- this.internalData = Object.assign(this.internalData, {
8723
- created: (/* @__PURE__ */ new Date()).toISOString()
8724
- });
8725
8735
  } else if ("rootProject" in args) {
8726
- this.root_span_id = this.span_id;
8727
8736
  this._object_info = {
8737
+ id,
8738
+ span_id,
8739
+ root_span_id: span_id,
8728
8740
  org_id: _state.orgId,
8729
8741
  project_id: args.rootProject.id,
8730
8742
  log_id: "g"
8731
8743
  };
8732
- this.internalData = Object.assign(this.internalData, {
8733
- created: (/* @__PURE__ */ new Date()).toISOString()
8734
- });
8735
8744
  } else if ("parentSpan" in args) {
8736
- this.root_span_id = args.parentSpan.root_span_id;
8737
- this._object_info = args.parentSpan._object_info;
8745
+ this._object_info = {
8746
+ ...args.parentSpan._object_info,
8747
+ id,
8748
+ span_id
8749
+ };
8738
8750
  this.internalData.span_parents = [args.parentSpan.span_id];
8739
8751
  } else {
8740
8752
  throw new Error("Must provide either 'rootExperiment' or 'parentSpan'");
8741
8753
  }
8742
8754
  this.isMerge = false;
8743
- const { id, ...eventRest } = args.event ?? {};
8755
+ const { id: _id, ...eventRest } = args.event ?? {};
8744
8756
  this.log(eventRest);
8745
8757
  this.isMerge = true;
8746
8758
  unterminatedObjects.addUnterminated(this, callerLocation);
8747
8759
  }
8760
+ get id() {
8761
+ return this._object_info.id;
8762
+ }
8763
+ get span_id() {
8764
+ return this._object_info.span_id;
8765
+ }
8766
+ get root_span_id() {
8767
+ return this._object_info.root_span_id;
8768
+ }
8748
8769
  log(event) {
8749
8770
  this.checkNotFinished();
8750
8771
  const sanitized = validateAndSanitizeExperimentLogPartialArgs(event);
8772
+ const sanitizedAndInternalData = { ...this.internalData };
8773
+ mergeDicts(sanitizedAndInternalData, sanitized);
8751
8774
  const record = {
8752
- ...sanitized,
8753
- ...this.internalData,
8754
- id: this.id,
8755
- span_id: this.span_id,
8756
- root_span_id: this.root_span_id,
8775
+ ...sanitizedAndInternalData,
8757
8776
  ...this._object_info,
8758
8777
  [IS_MERGE_FIELD]: this.isMerge
8759
8778
  };
8779
+ if (record.metrics?.end) {
8780
+ this.loggedEndTime = record.metrics?.end;
8781
+ }
8760
8782
  this.internalData = {};
8761
8783
  this.bgLogger.log([record]);
8762
8784
  }
@@ -8785,8 +8807,13 @@ var SpanImpl = class _SpanImpl {
8785
8807
  }
8786
8808
  end(args) {
8787
8809
  this.checkNotFinished();
8788
- const endTime = args?.endTime ?? getCurrentUnixTimestamp();
8789
- this.internalData = { metrics: { end: endTime } };
8810
+ let endTime;
8811
+ if (!this.loggedEndTime) {
8812
+ endTime = args?.endTime ?? getCurrentUnixTimestamp();
8813
+ this.internalData = { metrics: { end: endTime } };
8814
+ } else {
8815
+ endTime = this.loggedEndTime;
8816
+ }
8790
8817
  this.log({});
8791
8818
  this.finished = true;
8792
8819
  unterminatedObjects.removeUnterminated(this);
package/dist/logger.d.ts CHANGED
@@ -161,7 +161,7 @@ export declare class Logger {
161
161
  * @param event.expected: The ground truth value (an arbitrary, JSON serializable object) that you'd compare to `output` to determine if your `output` value is correct or not. Braintrust currently does not compare `output` to `expected` for you, since there are so many different ways to do that correctly. Instead, these values are just used to help you navigate while digging into analyses. However, we may later use these values to re-score outputs or fine-tune your models.
162
162
  * @param event.scores: A dictionary of numeric values (between 0 and 1) to log. The scores should give you a variety of signals that help you determine how accurate the outputs are compared to what you expect and diagnose failures. For example, a summarization app might have one score that tells you how accurate the summary is, and another that measures the word similarity between the generated and grouth truth summary. The word similarity score could help you determine whether the summarization was covering similar concepts or not. You can use these scores to help you sort, filter, and compare logs.
163
163
  * @param event.metadata: (Optional) a dictionary with additional data about the test example, model outputs, or just about anything else that's relevant, that you can use to help find and analyze examples later. For example, you could log the `prompt`, example's `id`, or anything else that would be useful to slice/dice later. The values in `metadata` can be any JSON-serializable type, but its keys must be strings.
164
- * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically and should not be specified: "start", "end".
164
+ * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically: "start", "end", "caller_functionname", "caller_filename", "caller_lineno".
165
165
  * @param event.id: (Optional) a unique identifier for the event. If you don't provide one, BrainTrust will generate one for you.
166
166
  * :returns: The `id` of the logged event.
167
167
  */
@@ -448,7 +448,7 @@ export declare class Experiment {
448
448
  * @param event.expected: The ground truth value (an arbitrary, JSON serializable object) that you'd compare to `output` to determine if your `output` value is correct or not. Braintrust currently does not compare `output` to `expected` for you, since there are so many different ways to do that correctly. Instead, these values are just used to help you navigate your experiments while digging into analyses. However, we may later use these values to re-score outputs or fine-tune your models.
449
449
  * @param event.scores: A dictionary of numeric values (between 0 and 1) to log. The scores should give you a variety of signals that help you determine how accurate the outputs are compared to what you expect and diagnose failures. For example, a summarization app might have one score that tells you how accurate the summary is, and another that measures the word similarity between the generated and grouth truth summary. The word similarity score could help you determine whether the summarization was covering similar concepts or not. You can use these scores to help you sort, filter, and compare experiments.
450
450
  * @param event.metadata: (Optional) a dictionary with additional data about the test example, model outputs, or just about anything else that's relevant, that you can use to help find and analyze examples later. For example, you could log the `prompt`, example's `id`, or anything else that would be useful to slice/dice later. The values in `metadata` can be any JSON-serializable type, but its keys must be strings.
451
- * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically and should not be specified: "start", "end".
451
+ * @param event.metrics: (Optional) a dictionary of metrics to log. The following keys are populated automatically: "start", "end", "caller_functionname", "caller_filename", "caller_lineno".
452
452
  * @param event.id: (Optional) a unique identifier for the event. If you don't provide one, BrainTrust will generate one for you.
453
453
  * @param event.dataset_record_id: (Optional) the id of the dataset record that this event is associated with. This field is required if and only if the experiment is associated with a dataset.
454
454
  * @param event.inputs: (Deprecated) the same as `input` (will be removed in a future version).
@@ -497,9 +497,7 @@ export declare class SpanImpl implements Span {
497
497
  private bgLogger;
498
498
  private internalData;
499
499
  private isMerge;
500
- id: string;
501
- span_id: string;
502
- root_span_id: string;
500
+ private loggedEndTime;
503
501
  private readonly _object_info;
504
502
  kind: "span";
505
503
  constructor(args: {
@@ -516,6 +514,9 @@ export declare class SpanImpl implements Span {
516
514
  } | {
517
515
  parentSpan: SpanImpl;
518
516
  }));
517
+ get id(): string;
518
+ get span_id(): string;
519
+ get root_span_id(): string;
519
520
  log(event: ExperimentLogPartialArgs): void;
520
521
  startSpan(name: string, args?: StartSpanArgs): Span;
521
522
  traced<R>(name: string, callback: (span: Span) => R, args?: StartSpanArgs & SetCurrentArg): R;
@@ -628,6 +629,23 @@ export interface ScoreSummary {
628
629
  improvements: number;
629
630
  regressions: number;
630
631
  }
632
+ /**
633
+ * Summary of a metric's performance.
634
+ * @property name Name of the metric.
635
+ * @property metric Average metric across all examples.
636
+ * @property unit Unit label for the metric.
637
+ * @property diff Difference in metric between the current and reference experiment.
638
+ * @property improvements Number of improvements in the metric.
639
+ * @property regressions Number of regressions in the metric.
640
+ */
641
+ export interface MetricSummary {
642
+ name: string;
643
+ metric: number;
644
+ unit: string;
645
+ diff: number;
646
+ improvements: number;
647
+ regressions: number;
648
+ }
631
649
  /**
632
650
  * Summary of an experiment's scores and metadata.
633
651
  * @property projectName Name of the project that the experiment belongs to.
@@ -644,6 +662,7 @@ export interface ExperimentSummary {
644
662
  experimentUrl: string;
645
663
  comparisonExperimentName: string | undefined;
646
664
  scores: Record<string, ScoreSummary> | undefined;
665
+ metrics: Record<string, MetricSummary> | undefined;
647
666
  }
648
667
  /**
649
668
  * Summary of a dataset's data.
@@ -1 +1 @@
1
- {"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@types/uuid/index.d.ts","../src/isomorph.ts","../src/util.ts","../src/merge_row_batch.ts","../src/logger.ts","../src/browser.ts","../src/cache.ts","../node_modules/esbuild/lib/main.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@nodelib/fs.stat/out/types/index.d.ts","../node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts","../node_modules/@nodelib/fs.stat/out/settings.d.ts","../node_modules/@nodelib/fs.stat/out/providers/async.d.ts","../node_modules/@nodelib/fs.stat/out/index.d.ts","../node_modules/@nodelib/fs.scandir/out/types/index.d.ts","../node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts","../node_modules/@nodelib/fs.scandir/out/settings.d.ts","../node_modules/@nodelib/fs.scandir/out/providers/async.d.ts","../node_modules/@nodelib/fs.scandir/out/index.d.ts","../node_modules/@nodelib/fs.walk/out/types/index.d.ts","../node_modules/@nodelib/fs.walk/out/settings.d.ts","../node_modules/@nodelib/fs.walk/out/readers/reader.d.ts","../node_modules/@nodelib/fs.walk/out/readers/async.d.ts","../node_modules/@nodelib/fs.walk/out/providers/async.d.ts","../node_modules/@nodelib/fs.walk/out/index.d.ts","../node_modules/minimatch/dist/cjs/ast.d.ts","../node_modules/minimatch/dist/cjs/escape.d.ts","../node_modules/minimatch/dist/cjs/unescape.d.ts","../node_modules/minimatch/dist/cjs/index.d.ts","../node_modules/@types/argparse/index.d.ts","../node_modules/@types/pluralize/index.d.ts","../node_modules/@types/cli-progress/index.d.ts","../src/progress.ts","../node_modules/@types/graceful-fs/index.d.ts","../src/jest/tryrealpath.ts","../src/jest/nodemodulespaths.ts","../node_modules/chalk/index.d.ts","../node_modules/autoevals/jsdist/base.d.ts","../node_modules/autoevals/jsdist/oai.d.ts","../node_modules/autoevals/jsdist/templates.d.ts","../node_modules/autoevals/jsdist/llm.d.ts","../node_modules/autoevals/jsdist/string.d.ts","../node_modules/autoevals/jsdist/number.d.ts","../node_modules/autoevals/jsdist/json.d.ts","../node_modules/autoevals/jsdist/index.d.ts","../src/framework.ts","../node_modules/simple-git/dist/src/lib/tasks/task.d.ts","../node_modules/simple-git/dist/src/lib/types/tasks.d.ts","../node_modules/simple-git/dist/src/lib/errors/git-error.d.ts","../node_modules/simple-git/dist/src/lib/types/handlers.d.ts","../node_modules/simple-git/dist/src/lib/types/index.d.ts","../node_modules/simple-git/dist/src/lib/tasks/log.d.ts","../node_modules/simple-git/dist/typings/response.d.ts","../node_modules/simple-git/dist/src/lib/responses/getremotesummary.d.ts","../node_modules/simple-git/dist/src/lib/args/pathspec.d.ts","../node_modules/simple-git/dist/src/lib/tasks/apply-patch.d.ts","../node_modules/simple-git/dist/src/lib/tasks/check-is-repo.d.ts","../node_modules/simple-git/dist/src/lib/tasks/clean.d.ts","../node_modules/simple-git/dist/src/lib/tasks/clone.d.ts","../node_modules/simple-git/dist/src/lib/tasks/config.d.ts","../node_modules/simple-git/dist/src/lib/tasks/grep.d.ts","../node_modules/simple-git/dist/src/lib/tasks/reset.d.ts","../node_modules/simple-git/dist/src/lib/tasks/version.d.ts","../node_modules/simple-git/dist/typings/types.d.ts","../node_modules/simple-git/dist/src/lib/errors/git-construct-error.d.ts","../node_modules/simple-git/dist/src/lib/errors/git-plugin-error.d.ts","../node_modules/simple-git/dist/src/lib/errors/git-response-error.d.ts","../node_modules/simple-git/dist/src/lib/errors/task-configuration-error.d.ts","../node_modules/simple-git/dist/typings/errors.d.ts","../node_modules/simple-git/dist/typings/simple-git.d.ts","../node_modules/simple-git/dist/typings/index.d.ts","../src/gitutil.ts","../src/stackutil.ts","../src/node.ts","../src/cli.ts","../src/oai.ts","../src/index.ts","../node_modules/form-data/index.d.ts","../node_modules/@types/node-fetch/externals.d.ts","../node_modules/@types/node-fetch/index.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"3dda5344576193a4ae48b8d03f105c86f20b2f2aff0a1d1fd7935f5d68649654","affectsGlobalScope":true},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"95c617b16c4765ff6de307629b6918181908bee82a59fca0b2c95f170a4be7ea",{"version":"e3e7b677e8ad626f8a801ed3f7b49ca3bfc17e869d265a489518b5c5558fd0fa","signature":"f31a68039c0234a972bc0bc4d9388907ece056e3f76c6b9e880313639baa40d7"},{"version":"4e9b0c5aa6c1a4398ee938ebf7bf7649bc85846a5ed6d4140891974e37414bc4","signature":"5456a8d48cefa83fc107de753209d543a8368092fa8da262875d935033e7c9f2"},{"version":"bcafb63b317100f6a35c18a3c513493a141ae524ff78e49134c6dbf9f9be5398","signature":"1deac3c94c91ac1b2e60d29a14b4d4eb1e2964d005b7614a372c9eded6a40f92"},{"version":"c68947f54d1b5428d44c44e762e6130b69f03b80c0000da47549b4f69993854e","signature":"fb6a0346bbdb091efba1e6f1dbb1059aec789214c914454289d68e059a0e1780","affectsGlobalScope":true},{"version":"0cba65fb8472cad9f3a75664388174e8e174294e30ab6f2dfccc199edd1fd6e2","signature":"c967d7ca4d2ecc37d4a12833fad823f02e935542f6be307214ea7d2a9af02995"},{"version":"43361e6b831db1ef828f60d9219c09bfc43acb1b75ce86ead48f557a0935c0d2","signature":"b4324240466cc26262b0a4876ba6e405a8ad714cd15d4e309b765a3b41d90fb9"},"850040826cfa77593d44f44487133af21917f4f21507258bd4269501b80d32f0","587f13f1e8157bd8cec0adda0de4ef558bb8573daa9d518d1e2af38e87ecc91f","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"bce910d9164785c9f0d4dcea4be359f5f92130c7c7833dea6138ab1db310a1f9","affectsGlobalScope":true},"7a435e0c814f58f23e9a0979045ec0ef5909aac95a70986e8bcce30c27dff228",{"version":"c81c51f43e343b6d89114b17341fb9d381c4ccbb25e0ee77532376052c801ba7","affectsGlobalScope":true},"db71be322f07f769200108aa19b79a75dd19a187c9dca2a30c4537b233aa2863","57135ce61976a8b1dadd01bb412406d1805b90db6e8ecb726d0d78e0b5f76050",{"version":"49479e21a040c0177d1b1bc05a124c0383df7a08a0726ad4d9457619642e875a","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","f302f3a47d7758f67f2afc753b9375d6504dde05d2e6ecdb1df50abbb131fc89","3690133deae19c8127c5505fcb67b04bdc9eb053796008538a9b9abbb70d85aa","5b1c0a23f464f894e7c2b2b6c56df7b9afa60ed48c5345f8618d389a636b2108","be2b092f2765222757c6441b86c53a5ea8dfed47bbc43eab4c5fe37942c866b3","8e6b05abc98adba15e1ac78e137c64576c74002e301d682e66feb77a23907ab8","1ca735bb3d407b2af4fbee7665f3a0a83be52168c728cc209755060ba7ed67bd",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"8d74c73e21579ffe9f77ce969bc0317470c63797bd4719c8895a60ce6ae6a263","affectsGlobalScope":true},"7a2ba0c9af860ac3e77b35ed01fd96d15986f17aa22fe40f188ae556fb1070df","765f9f91293be0c057d5bf2b59494e1eac70efae55ff1c27c6e47c359bc889d2","55709608060f77965c270ac10ac646286589f1bd1cb174fff1778a2dd9a7ef31","3122a3f1136508a27a229e0e4e2848299028300ffa11d0cdfe99df90c492fe20","42b40e40f2a358cda332456214fad311e1806a6abf3cebaaac72496e07556642","354612fe1d49ecc9551ea3a27d94eef2887b64ef4a71f72ca444efe0f2f0ba80",{"version":"ac0c77cd7db52b3c278bdd1452ce754014835493d05b84535f46854fdc2063b2","affectsGlobalScope":true},"b9f36877501f2ce0e276e993c93cd2cf325e78d0409ec4612b1eb9d6a537e60b","5e2b91328a540a0933ab5c2203f4358918e6f0fe7505d22840a891a6117735f1","3abc3512fa04aa0230f59ea1019311fd8667bd935d28306311dccc8b17e79d5d",{"version":"5810080a0da989a944d3b691b7b479a4a13c75947fb538abb8070710baa5ccee","affectsGlobalScope":true},{"version":"19da7150ca062323b1db6311a6ef058c9b0a39cc64d836b5e9b75d301869653b","affectsGlobalScope":true},"1349077576abb41f0e9c78ec30762ff75b710208aff77f5fdcc6a8c8ce6289dd","e2ce82603102b5c0563f59fb40314cc1ff95a4d521a66ad14146e130ea80d89c","a3e0395220255a350aa9c6d56f882bfcb5b85c19fddf5419ec822cf22246a26d","c27b01e8ddff5cd280711af5e13aecd9a3228d1c256ea797dd64f8fdec5f7df5","898840e876dfd21843db9f2aa6ae38ba2eab550eb780ff62b894b9fbfebfae6b","c58642af30c06a8e250d248a747ceb045af9a92d8cab22478d80c3bef276bfd5","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","785e5be57d4f20f290a20e7b0c6263f6c57fd6e51283050756cef07d6d651c68","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","164deb2409ac5f4da3cd139dbcee7f7d66753d90363a4d7e2db8d8874f272270",{"version":"13a50542a358c093fee2d204915241f85ca4f571262ea159960610c21a644f8a","affectsGlobalScope":true},{"version":"ab294c4b7279318ee2a8fdf681305457ecc05970c94108d304933f18823eeac1","affectsGlobalScope":true},"ad08154d9602429522cac965a715fde27d421d69b24756c5d291877dda75353e","5bc85813bfcb6907cc3a960fec8734a29d7884e0e372515147720c5991b8bc22","812b25f798033c202baedf386a1ccc41f9191b122f089bffd10fdccce99fba11","993325544790073f77e945bee046d53988c0bc3ac5695c9cf8098166feb82661",{"version":"4d06f3abc2a6aae86f1be39e397372f74fb6e7964f594d645926b4a3419cc15d","affectsGlobalScope":true},{"version":"0e08c360c9b5961ecb0537b703e253842b3ded53151ee07024148219b61a8baf","affectsGlobalScope":true},"2ce2210032ccaff7710e2abf6a722e62c54960458e73e356b6a365c93ab6ca66","92db194ef7d208d5e4b6242a3434573fd142a621ff996d84cc9dbba3553277d0","16a3080e885ed52d4017c902227a8d0d8daf723d062bec9e45627c6fdcd6699b",{"version":"0bd9543cd8fc0959c76fb8f4f5a26626c2ed62ef4be98fd857bce268066db0a2","affectsGlobalScope":true},"1ca6858a0cbcd74d7db72d7b14c5360a928d1d16748a55ecfa6bfaff8b83071b",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"562e1951bb48e89df7b821d998bfcd9458d93b0afd06cf6db8286606da5f21fd","46324183533e34fad2461b51174132e8e0e4b3ac1ceb5032e4952992739d1eab","d3fa0530dfb1df408f0abd76486de39def69ca47683d4a3529b2d22fce27c693","d9be977c415df16e4defe4995caeca96e637eeef9d216d0d90cdba6fc617e97e","98e0c2b48d855a844099123e8ec20fe383ecd1c5877f3895b048656befe268d0","ff53802a97b7d11ab3c4395aa052baa14cd12d2b1ed236b520a833fdd2a15003","fce9262f840a74118112caf685b725e1cc86cd2b0927311511113d90d87cc61e","d7a7cac49af2a3bfc208fe68831fbfa569864f74a7f31cc3a607f641e6c583fd","9a80e3322d08274f0e41b77923c91fe67b2c8a5134a5278c2cb60a330441554e","2460af41191009298d931c592fb6d4151beea320f1f25b73605e2211e53e4e88","2f87ea988d84d1c617afdeba9d151435473ab24cd5fc456510c8db26d8bd1581","b7336c1c536e3deaedbda956739c6250ac2d0dd171730c42cb57b10368f38a14","6fb67d664aaab2f1d1ad4613b58548aecb4b4703b9e4c5dba6b865b31bd14722","4414644199b1a047b4234965e07d189781a92b578707c79c3933918d67cd9d85","04a4b38c6a1682059eac00e7d0948d99c46642b57003d61d0fe9ccc9df442887","f12ea658b060da1752c65ae4f1e4c248587f6cd4cb4acabbf79a110b6b02ff75","011b2857871a878d5eae463bedc4b3dd14755dc3a67d5d10f8fbb7823d119294","c56ef8201a294d65d1132160ebc76ed0c0a98dcf983d20775c8c8c0912210572","de0199a112f75809a7f80ec071495159dcf3e434bc021347e0175627398264c3","1a2bed55cfa62b4649485df27c0e560b04d4da4911e3a9f0475468721495563f","854045924626ba585f454b53531c42aed4365f02301aa8eca596423f4675b71f","dac69319e7c96790211dd55fbb25831b7bf6e63f7645297a2c8f46247d44d889","5adf3c3c7204b3614dbc585681a33ef598c68df387298859f9a2521cfb449437","6d8c708a5237a8508ee8553f22143a6d2fb60807de0574b41622c1e281b04c6d",{"version":"d096d550acd00bd6d66825d9a4e572121bd854b28edc5ae2c1d4e80d51a147a9","signature":"46966a0da8f681c479166dd3060b63d3cafc3d5e9e218157490f3697122a3e57"},"bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e",{"version":"c0b4084226d4ad0a3c78580c50f85985f4a3e808eb59a15c9fb389c8349f9056","signature":"f155bcfea5ae8b647b26fef54caf159a514950ac9cb3c192dcfab787d4588eec"},{"version":"0f3a9fccbf341d90a4be583161e6415c8c0543f5dd180419ea13e3db991ccca0","signature":"d4cb0878684926011f20ef763f982c78e1b0b699c0faefee31d2a7bdcf44a7bb"},"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","26ed2b3579b00785d7b8028002d5e638444e32e1fad135100a2419e48e5fb458","41274c6cc805d2945895a3654a9fc6bfd2339f2feb647ab5c5f4df664a04cf53","e725e4e013e946cccba3ec0fb642af7b5b9bd7872357b435ffe551dd80d552bc","b8dcce8ae07139e9f4c6019db31d3d1105806025d41e04a40f38cdd0d2dab92f","209dc81a1af545c80808f08403929d4a28791b0c059f3a4dd5b0724bf142fe03","1f6c6d022f61fe4e98a6fc773e400cead9988bf2353290472d7205dec0604b8f","4abcc60b395352b0b1400e3ee5e4b345c54daa6bd86a6ef39bfb3a66bea3daf0","f1535d688ff92c7f16fcd4ff415413edef056ab63008cbec0ac1a1abbefd8f6b",{"version":"d78a4fff1aa078a06b2b231e76b8fef7d6aedf2c19af2049b2ac66e667debc57","signature":"5f0652ab87ae48561321f15f3c8556a615a224ecb4e1ce914be5e5a37f380830","affectsGlobalScope":true},"82c661f1f20d29212d2e0408bee2e0f54bf8930cdcdd88f23ef8e03e4618afb4","d53d8a71b9525be3fb65c331f20db99b826edfa922703578af284736dc780db5","6256cf36c8ae7e82bff606595af8fe08a06f8478140fcf304ee2f10c7716ddc8","2ba0457b958954b9b2041077df992fad015e85c615dc1ccebeddb561d4ab89cf","81c4fd49117bc25b8aac796a345db4315cc31861f61772da6bd405989ede0f79","1f8d4c8257ba50385865ce887940c8fdc745bcf3cea2dc09173bc8d3320b6efe","8459a11cb29556837148a3f82ccff6f3d9745070c3ed77264e279e7fe35ed0b7","7c774169686976056434799723bd7a48348df9d2204b928a0b77920505585214","5e95379e81e2d373e5235cedc4579938e39db274a32cfa32f8906e7ff6698763","d3c8a891b0554f4319651b5c89c2d91a442a792bf84afcbc399be033b96b4abd","8758b438b12ea50fb8b678d29ab0ef42d77abfb801cec481596ce6002b537a6f","88074e936d33e224b83f81eebbaf835467e1c0a6ba1239b950e6476dd7f73356","c895675912a8b2d0dcb13d24433757d233de16a3bb5c60f7d903099d96d61ea8","f73cf81342d2a25b65179c262ca7c38df023969129094607d0eb52510a56f10f","e7d7e67bd66b30f2216e4678b97bb09629a2b31766a79119acaa30e3005ef5fb","4a7b9005bef99460ba60da67219f0aff852cfd44038f17626bf59a6b5c6960b5","e137f087bda0256410b28743ef9a1bf57a4cafd43ffa6b62d5c17a8f5a08b3b5","fa8d9c5ea6ad2a5d3d6ee7703cfe1ddd962f1e4da08a370c6db642b1a1a091b8","af504042a6db047c40cc0aeb14550bbc954f194f2b8c5ad8944f2da502f45bf5","5b25b6ab5ad6c17f90b592162b2e9978ad8d81edf24cd3957306eb6e5edb89a9","24693bd77ac3be0b16e564d0ab498a397feb758ce7f4ed9f13478d566e3aafde","208dad548b895c7d02465de6ba79064b7c67bc4d94e5227b09f21d58790e634c","048c0ced65fa41fbf4bcc3d5e8e5b6f6c7f27335ceb54d401be654e821adbc08","f1c7ab18a927d1a9e3a452ef9b5d2d636dc7f39a116add1a48b0b78a323f19eb","9a57d654b0a0e4bf56a8eb0aa3ede1c7d349cec6220e36b5288c26626c8688ed",{"version":"2109980c9242bf443fa8937715fea2e5c39f6c85f9ed144106e2b693013c6070","signature":"68212fb8e2c0dae39c22959cf18904f22a1315a856c20173484371cbb74addbf"},{"version":"282c7c74d33d5ec6a9067728647227358018bf878a6c381973efd5be87f0d2a8","signature":"eef6c9e9e2ced98a276734cb82f81b12d154026659e84128ad42a3a69caced38"},{"version":"c1887ec121feae4f6a72ec295ad8cc2acd12e37b278672d1c1aa53d6ebba076c","signature":"1518a19a9cb02ce4439e1bd5d07e5dd4f496d4598142ff82264b40785ba28789"},{"version":"d6c51d936d7270ad0c4639a52f325806bc8454220b9429fda21a0e84444265e6","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012"},{"version":"d2b71a94c6597ebe5bc4a28d9068c99eff353919f6b446fcea4afb44455a73f1","signature":"bdc58c2249d6acc63f6fb5acecd4219ee8c7c7ed57c4f87d57e7ac9e84a7e7d8"},{"version":"412e201f9eb70f671b3acb8399d718d8e7d0129166e970ceb78abb5f1db959b5","signature":"fecb7d5df25d549d9b7f94ba017910397c361a144b4aa369bf6402b7bdf81b4f"},"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","4340936f4e937c452ae783514e7c7bbb7fc06d0c97993ff4865370d0962bb9cf","5009c081fd8ca3fcd6f3adcd071a1c79a933a400532b897822aad0943688a1f1"],"root":[[46,51],130,132,133,143,[169,174]],"options":{"declaration":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":1,"outDir":"./","skipLibCheck":true,"strict":true,"target":2},"fileIdsList":[[99,111,112],[99,112,113,114,115],[99,106,112,114],[99,111,113],[70,99,106],[70,99,106,107],[99,107,108,109,110],[99,107,109],[99,108],[87,99,106,116,117,118,121],[99,117,118,120],[69,99,106,116,117,118,119],[99,118],[99,116,117],[99,106,116],[99],[69,99,106],[72,98,99,106,175,176],[53,99],[56,99],[57,62,90,99],[58,69,70,77,87,98,99],[58,59,69,77,99],[60,99],[61,62,70,78,99],[62,87,95,99],[63,65,69,77,99],[64,99],[65,66,99],[69,99],[67,69,99],[69,70,71,87,98,99],[69,70,71,84,87,90,99],[99,103],[65,69,72,77,87,98,99],[69,70,72,73,77,87,95,98,99],[72,74,87,95,98,99],[53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105],[69,75,99],[76,98,99],[65,69,77,87,99],[78,99],[79,99],[56,80,99],[81,97,99,103],[82,99],[83,99],[69,84,85,99],[84,86,99,101],[57,69,87,88,89,90,99],[57,87,89,99],[87,88,99],[90,99],[91,99],[56,87,99],[69,93,94,99],[93,94,99],[62,77,87,95,99],[96,99],[77,97,99],[57,72,83,98,99],[62,99],[87,99,100],[99,101],[99,102],[57,62,69,71,80,87,98,99,101,103],[87,99,104],[99,135,137,138,139,140,141],[99,135],[99,135,136,137],[72,87,99,106],[99,126],[99,123,124,125],[99,146,148],[99,148],[99,146],[99,144,148,168],[99,144,148],[99,168],[99,148,168],[58,99,106,145,147],[99,106,144,148],[99,146,162,163,164,165],[99,150,161,166,167],[99,149],[99,150,161,166],[99,148,149,151,152,153,154,155,156,157,158,159,160],[49,99],[78,79,99],[45,49,52,70,78,79,99,122,126,127,128,130,133,143,171],[49,99,128,130,134,142],[49,99,143,171,173],[79,99,132],[99,131],[45,46,47,48,99],[47,99],[46,49,56,99,169,170],[47,49,99],[99,129],[46,79,99],[49],[49,130,134,142],[168],[49,143,173],[46,47],[46]],"referencedMap":[[113,1],[116,2],[115,3],[114,4],[112,5],[108,6],[111,7],[110,8],[109,9],[107,5],[122,10],[121,11],[120,12],[119,13],[118,14],[117,15],[127,16],[129,17],[131,5],[176,16],[177,18],[53,19],[54,19],[56,20],[57,21],[58,22],[59,23],[60,24],[61,25],[62,26],[63,27],[64,28],[65,29],[66,29],[68,30],[67,31],[69,30],[70,32],[71,33],[55,34],[105,16],[72,35],[73,36],[74,37],[106,38],[75,39],[76,40],[77,41],[78,42],[79,43],[80,44],[81,45],[82,46],[83,47],[84,48],[85,48],[86,49],[87,50],[89,51],[88,52],[90,53],[91,54],[92,55],[93,56],[94,57],[95,58],[96,59],[97,60],[98,61],[99,62],[100,63],[101,64],[102,65],[103,66],[104,67],[128,16],[45,16],[135,16],[142,68],[141,69],[138,70],[140,69],[136,16],[139,69],[137,16],[134,16],[52,16],[175,71],[123,72],[124,72],[126,73],[125,72],[152,16],[162,74],[146,75],[163,74],[164,76],[165,76],[151,16],[153,75],[154,75],[155,77],[156,78],[157,79],[158,79],[149,80],[159,75],[144,75],[160,79],[147,76],[148,81],[145,82],[166,83],[168,84],[150,85],[167,86],[161,87],[43,16],[44,16],[8,16],[10,16],[9,16],[2,16],[11,16],[12,16],[13,16],[14,16],[15,16],[16,16],[17,16],[18,16],[3,16],[4,16],[22,16],[19,16],[20,16],[21,16],[23,16],[24,16],[25,16],[5,16],[26,16],[27,16],[28,16],[29,16],[6,16],[33,16],[30,16],[31,16],[32,16],[34,16],[7,16],[35,16],[40,16],[41,16],[36,16],[37,16],[38,16],[39,16],[1,16],[42,16],[50,88],[51,89],[172,90],[143,91],[169,79],[174,92],[46,16],[133,93],[132,94],[49,95],[48,96],[171,97],[173,98],[130,99],[170,100],[47,16]],"exportedModulesMap":[[113,1],[116,2],[115,3],[114,4],[112,5],[108,6],[111,7],[110,8],[109,9],[107,5],[122,10],[121,11],[120,12],[119,13],[118,14],[117,15],[127,16],[129,17],[131,5],[176,16],[177,18],[53,19],[54,19],[56,20],[57,21],[58,22],[59,23],[60,24],[61,25],[62,26],[63,27],[64,28],[65,29],[66,29],[68,30],[67,31],[69,30],[70,32],[71,33],[55,34],[105,16],[72,35],[73,36],[74,37],[106,38],[75,39],[76,40],[77,41],[78,42],[79,43],[80,44],[81,45],[82,46],[83,47],[84,48],[85,48],[86,49],[87,50],[89,51],[88,52],[90,53],[91,54],[92,55],[93,56],[94,57],[95,58],[96,59],[97,60],[98,61],[99,62],[100,63],[101,64],[102,65],[103,66],[104,67],[128,16],[45,16],[135,16],[142,68],[141,69],[138,70],[140,69],[136,16],[139,69],[137,16],[134,16],[52,16],[175,71],[123,72],[124,72],[126,73],[125,72],[152,16],[162,74],[146,75],[163,74],[164,76],[165,76],[151,16],[153,75],[154,75],[155,77],[156,78],[157,79],[158,79],[149,80],[159,75],[144,75],[160,79],[147,76],[148,81],[145,82],[166,83],[168,84],[150,85],[167,86],[161,87],[43,16],[44,16],[8,16],[10,16],[9,16],[2,16],[11,16],[12,16],[13,16],[14,16],[15,16],[16,16],[17,16],[18,16],[3,16],[4,16],[22,16],[19,16],[20,16],[21,16],[23,16],[24,16],[25,16],[5,16],[26,16],[27,16],[28,16],[29,16],[6,16],[33,16],[30,16],[31,16],[32,16],[34,16],[7,16],[35,16],[40,16],[41,16],[36,16],[37,16],[38,16],[39,16],[1,16],[42,16],[50,101],[143,102],[169,103],[174,104],[49,105],[170,106]],"semanticDiagnosticsPerFile":[113,116,115,114,112,108,111,110,109,107,122,121,120,119,118,117,127,129,131,176,177,53,54,56,57,58,59,60,61,62,63,64,65,66,68,67,69,70,71,55,105,72,73,74,106,75,76,77,78,79,80,81,82,83,84,85,86,87,89,88,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,128,45,135,142,141,138,140,136,139,137,134,52,175,123,124,126,125,152,162,146,163,164,165,151,153,154,155,156,157,158,149,159,144,160,147,148,145,166,168,150,167,161,43,44,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,34,7,35,40,41,36,37,38,39,1,42,50,51,172,143,169,174,46,133,132,49,48,171,173,130,170,47]},"version":"5.1.6"}
1
+ {"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/isomorph.ts","../node_modules/@types/uuid/index.d.ts","../src/util.ts","../src/merge_row_batch.ts","../src/logger.ts","../src/browser-config.ts","../src/oai.ts","../src/browser.ts","../src/cache.ts","../node_modules/esbuild/lib/main.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@nodelib/fs.stat/out/types/index.d.ts","../node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts","../node_modules/@nodelib/fs.stat/out/settings.d.ts","../node_modules/@nodelib/fs.stat/out/providers/async.d.ts","../node_modules/@nodelib/fs.stat/out/index.d.ts","../node_modules/@nodelib/fs.scandir/out/types/index.d.ts","../node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts","../node_modules/@nodelib/fs.scandir/out/settings.d.ts","../node_modules/@nodelib/fs.scandir/out/providers/async.d.ts","../node_modules/@nodelib/fs.scandir/out/index.d.ts","../node_modules/@nodelib/fs.walk/out/types/index.d.ts","../node_modules/@nodelib/fs.walk/out/settings.d.ts","../node_modules/@nodelib/fs.walk/out/readers/reader.d.ts","../node_modules/@nodelib/fs.walk/out/readers/async.d.ts","../node_modules/@nodelib/fs.walk/out/providers/async.d.ts","../node_modules/@nodelib/fs.walk/out/index.d.ts","../node_modules/minimatch/dist/cjs/ast.d.ts","../node_modules/minimatch/dist/cjs/escape.d.ts","../node_modules/minimatch/dist/cjs/unescape.d.ts","../node_modules/minimatch/dist/cjs/index.d.ts","../node_modules/@types/argparse/index.d.ts","../node_modules/@types/pluralize/index.d.ts","../node_modules/@types/cli-progress/index.d.ts","../src/progress.ts","../node_modules/@types/graceful-fs/index.d.ts","../src/jest/tryrealpath.ts","../src/jest/nodemodulespaths.ts","../node_modules/chalk/index.d.ts","../node_modules/autoevals/jsdist/base.d.ts","../node_modules/autoevals/jsdist/oai.d.ts","../node_modules/autoevals/jsdist/templates.d.ts","../node_modules/autoevals/jsdist/llm.d.ts","../node_modules/autoevals/jsdist/string.d.ts","../node_modules/autoevals/jsdist/number.d.ts","../node_modules/autoevals/jsdist/json.d.ts","../node_modules/autoevals/jsdist/index.d.ts","../src/framework.ts","../node_modules/simple-git/dist/src/lib/tasks/task.d.ts","../node_modules/simple-git/dist/src/lib/types/tasks.d.ts","../node_modules/simple-git/dist/src/lib/errors/git-error.d.ts","../node_modules/simple-git/dist/src/lib/types/handlers.d.ts","../node_modules/simple-git/dist/src/lib/types/index.d.ts","../node_modules/simple-git/dist/src/lib/tasks/log.d.ts","../node_modules/simple-git/dist/typings/response.d.ts","../node_modules/simple-git/dist/src/lib/responses/getremotesummary.d.ts","../node_modules/simple-git/dist/src/lib/args/pathspec.d.ts","../node_modules/simple-git/dist/src/lib/tasks/apply-patch.d.ts","../node_modules/simple-git/dist/src/lib/tasks/check-is-repo.d.ts","../node_modules/simple-git/dist/src/lib/tasks/clean.d.ts","../node_modules/simple-git/dist/src/lib/tasks/clone.d.ts","../node_modules/simple-git/dist/src/lib/tasks/config.d.ts","../node_modules/simple-git/dist/src/lib/tasks/grep.d.ts","../node_modules/simple-git/dist/src/lib/tasks/reset.d.ts","../node_modules/simple-git/dist/src/lib/tasks/version.d.ts","../node_modules/simple-git/dist/typings/types.d.ts","../node_modules/simple-git/dist/src/lib/errors/git-construct-error.d.ts","../node_modules/simple-git/dist/src/lib/errors/git-plugin-error.d.ts","../node_modules/simple-git/dist/src/lib/errors/git-response-error.d.ts","../node_modules/simple-git/dist/src/lib/errors/task-configuration-error.d.ts","../node_modules/simple-git/dist/typings/errors.d.ts","../node_modules/simple-git/dist/typings/simple-git.d.ts","../node_modules/simple-git/dist/typings/index.d.ts","../src/gitutil.ts","../src/stackutil.ts","../src/node.ts","../src/cli.ts","../src/index.ts","../node_modules/form-data/index.d.ts","../node_modules/@types/node-fetch/externals.d.ts","../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/command-line-args/index.d.ts","../../../node_modules/@types/command-line-usage/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/js-levenshtein/index.d.ts","../../../node_modules/@types/js-yaml/index.d.ts","../../../node_modules/@types/mustache/index.d.ts","../../../node_modules/@types/pad-left/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"3dda5344576193a4ae48b8d03f105c86f20b2f2aff0a1d1fd7935f5d68649654","affectsGlobalScope":true},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"e3e7b677e8ad626f8a801ed3f7b49ca3bfc17e869d265a489518b5c5558fd0fa","signature":"f31a68039c0234a972bc0bc4d9388907ece056e3f76c6b9e880313639baa40d7"},"95c617b16c4765ff6de307629b6918181908bee82a59fca0b2c95f170a4be7ea",{"version":"4e9b0c5aa6c1a4398ee938ebf7bf7649bc85846a5ed6d4140891974e37414bc4","signature":"5456a8d48cefa83fc107de753209d543a8368092fa8da262875d935033e7c9f2"},{"version":"bcafb63b317100f6a35c18a3c513493a141ae524ff78e49134c6dbf9f9be5398","signature":"1deac3c94c91ac1b2e60d29a14b4d4eb1e2964d005b7614a372c9eded6a40f92"},{"version":"7f6b7be299e289d1419ac6c9237bd7d594ccd8a8ddb0c26913f3be0bee6ff57e","signature":"e914a6a25044eaf79aaaca7ae8c3bc2c6d246ab294e483b178f92ecf36d2100e","affectsGlobalScope":true},{"version":"b5f12e5d3f2153df039e2fbd4fe445a54b39d59527093cd3d99d93d822125e1b","signature":"443148657b934a070c73ec27dfbbc63d3fcfdb703009ed36d997337abc2290e4","affectsGlobalScope":true},{"version":"984b4f2569e713a2f41b81685e4d40549ce279a4c8035be0eabc103a9c14c5c9","signature":"bdc58c2249d6acc63f6fb5acecd4219ee8c7c7ed57c4f87d57e7ac9e84a7e7d8"},{"version":"ddf00d2734715528ba52cfaebaff7d70bbc5663688139efd7ffe0d0476688ff5","signature":"82f11771b6ef70327d9a7a1d43aa3e13dfa2825671bb591c7edeb954335b05e1"},{"version":"43361e6b831db1ef828f60d9219c09bfc43acb1b75ce86ead48f557a0935c0d2","signature":"b4324240466cc26262b0a4876ba6e405a8ad714cd15d4e309b765a3b41d90fb9"},"850040826cfa77593d44f44487133af21917f4f21507258bd4269501b80d32f0","587f13f1e8157bd8cec0adda0de4ef558bb8573daa9d518d1e2af38e87ecc91f","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"bce910d9164785c9f0d4dcea4be359f5f92130c7c7833dea6138ab1db310a1f9","affectsGlobalScope":true},"7a435e0c814f58f23e9a0979045ec0ef5909aac95a70986e8bcce30c27dff228",{"version":"c81c51f43e343b6d89114b17341fb9d381c4ccbb25e0ee77532376052c801ba7","affectsGlobalScope":true},"db71be322f07f769200108aa19b79a75dd19a187c9dca2a30c4537b233aa2863","57135ce61976a8b1dadd01bb412406d1805b90db6e8ecb726d0d78e0b5f76050",{"version":"49479e21a040c0177d1b1bc05a124c0383df7a08a0726ad4d9457619642e875a","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","f302f3a47d7758f67f2afc753b9375d6504dde05d2e6ecdb1df50abbb131fc89","3690133deae19c8127c5505fcb67b04bdc9eb053796008538a9b9abbb70d85aa","5b1c0a23f464f894e7c2b2b6c56df7b9afa60ed48c5345f8618d389a636b2108","be2b092f2765222757c6441b86c53a5ea8dfed47bbc43eab4c5fe37942c866b3","8e6b05abc98adba15e1ac78e137c64576c74002e301d682e66feb77a23907ab8","1ca735bb3d407b2af4fbee7665f3a0a83be52168c728cc209755060ba7ed67bd",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"8d74c73e21579ffe9f77ce969bc0317470c63797bd4719c8895a60ce6ae6a263","affectsGlobalScope":true},"7a2ba0c9af860ac3e77b35ed01fd96d15986f17aa22fe40f188ae556fb1070df","765f9f91293be0c057d5bf2b59494e1eac70efae55ff1c27c6e47c359bc889d2","55709608060f77965c270ac10ac646286589f1bd1cb174fff1778a2dd9a7ef31","3122a3f1136508a27a229e0e4e2848299028300ffa11d0cdfe99df90c492fe20","42b40e40f2a358cda332456214fad311e1806a6abf3cebaaac72496e07556642","354612fe1d49ecc9551ea3a27d94eef2887b64ef4a71f72ca444efe0f2f0ba80",{"version":"ac0c77cd7db52b3c278bdd1452ce754014835493d05b84535f46854fdc2063b2","affectsGlobalScope":true},"b9f36877501f2ce0e276e993c93cd2cf325e78d0409ec4612b1eb9d6a537e60b","5e2b91328a540a0933ab5c2203f4358918e6f0fe7505d22840a891a6117735f1","3abc3512fa04aa0230f59ea1019311fd8667bd935d28306311dccc8b17e79d5d",{"version":"5810080a0da989a944d3b691b7b479a4a13c75947fb538abb8070710baa5ccee","affectsGlobalScope":true},{"version":"19da7150ca062323b1db6311a6ef058c9b0a39cc64d836b5e9b75d301869653b","affectsGlobalScope":true},"1349077576abb41f0e9c78ec30762ff75b710208aff77f5fdcc6a8c8ce6289dd","e2ce82603102b5c0563f59fb40314cc1ff95a4d521a66ad14146e130ea80d89c","a3e0395220255a350aa9c6d56f882bfcb5b85c19fddf5419ec822cf22246a26d","c27b01e8ddff5cd280711af5e13aecd9a3228d1c256ea797dd64f8fdec5f7df5","898840e876dfd21843db9f2aa6ae38ba2eab550eb780ff62b894b9fbfebfae6b","c58642af30c06a8e250d248a747ceb045af9a92d8cab22478d80c3bef276bfd5","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","785e5be57d4f20f290a20e7b0c6263f6c57fd6e51283050756cef07d6d651c68","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","164deb2409ac5f4da3cd139dbcee7f7d66753d90363a4d7e2db8d8874f272270",{"version":"13a50542a358c093fee2d204915241f85ca4f571262ea159960610c21a644f8a","affectsGlobalScope":true},{"version":"ab294c4b7279318ee2a8fdf681305457ecc05970c94108d304933f18823eeac1","affectsGlobalScope":true},"ad08154d9602429522cac965a715fde27d421d69b24756c5d291877dda75353e","5bc85813bfcb6907cc3a960fec8734a29d7884e0e372515147720c5991b8bc22","812b25f798033c202baedf386a1ccc41f9191b122f089bffd10fdccce99fba11","993325544790073f77e945bee046d53988c0bc3ac5695c9cf8098166feb82661",{"version":"4d06f3abc2a6aae86f1be39e397372f74fb6e7964f594d645926b4a3419cc15d","affectsGlobalScope":true},{"version":"0e08c360c9b5961ecb0537b703e253842b3ded53151ee07024148219b61a8baf","affectsGlobalScope":true},"2ce2210032ccaff7710e2abf6a722e62c54960458e73e356b6a365c93ab6ca66","92db194ef7d208d5e4b6242a3434573fd142a621ff996d84cc9dbba3553277d0","16a3080e885ed52d4017c902227a8d0d8daf723d062bec9e45627c6fdcd6699b",{"version":"0bd9543cd8fc0959c76fb8f4f5a26626c2ed62ef4be98fd857bce268066db0a2","affectsGlobalScope":true},"1ca6858a0cbcd74d7db72d7b14c5360a928d1d16748a55ecfa6bfaff8b83071b",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"562e1951bb48e89df7b821d998bfcd9458d93b0afd06cf6db8286606da5f21fd","46324183533e34fad2461b51174132e8e0e4b3ac1ceb5032e4952992739d1eab","d3fa0530dfb1df408f0abd76486de39def69ca47683d4a3529b2d22fce27c693","d9be977c415df16e4defe4995caeca96e637eeef9d216d0d90cdba6fc617e97e","98e0c2b48d855a844099123e8ec20fe383ecd1c5877f3895b048656befe268d0","ff53802a97b7d11ab3c4395aa052baa14cd12d2b1ed236b520a833fdd2a15003","fce9262f840a74118112caf685b725e1cc86cd2b0927311511113d90d87cc61e","d7a7cac49af2a3bfc208fe68831fbfa569864f74a7f31cc3a607f641e6c583fd","9a80e3322d08274f0e41b77923c91fe67b2c8a5134a5278c2cb60a330441554e","2460af41191009298d931c592fb6d4151beea320f1f25b73605e2211e53e4e88","2f87ea988d84d1c617afdeba9d151435473ab24cd5fc456510c8db26d8bd1581","b7336c1c536e3deaedbda956739c6250ac2d0dd171730c42cb57b10368f38a14","6fb67d664aaab2f1d1ad4613b58548aecb4b4703b9e4c5dba6b865b31bd14722","4414644199b1a047b4234965e07d189781a92b578707c79c3933918d67cd9d85","04a4b38c6a1682059eac00e7d0948d99c46642b57003d61d0fe9ccc9df442887","f12ea658b060da1752c65ae4f1e4c248587f6cd4cb4acabbf79a110b6b02ff75","011b2857871a878d5eae463bedc4b3dd14755dc3a67d5d10f8fbb7823d119294","c56ef8201a294d65d1132160ebc76ed0c0a98dcf983d20775c8c8c0912210572","de0199a112f75809a7f80ec071495159dcf3e434bc021347e0175627398264c3","1a2bed55cfa62b4649485df27c0e560b04d4da4911e3a9f0475468721495563f","854045924626ba585f454b53531c42aed4365f02301aa8eca596423f4675b71f","dac69319e7c96790211dd55fbb25831b7bf6e63f7645297a2c8f46247d44d889","5adf3c3c7204b3614dbc585681a33ef598c68df387298859f9a2521cfb449437","6d8c708a5237a8508ee8553f22143a6d2fb60807de0574b41622c1e281b04c6d",{"version":"d096d550acd00bd6d66825d9a4e572121bd854b28edc5ae2c1d4e80d51a147a9","signature":"46966a0da8f681c479166dd3060b63d3cafc3d5e9e218157490f3697122a3e57"},"bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e",{"version":"c0b4084226d4ad0a3c78580c50f85985f4a3e808eb59a15c9fb389c8349f9056","signature":"f155bcfea5ae8b647b26fef54caf159a514950ac9cb3c192dcfab787d4588eec"},{"version":"0f3a9fccbf341d90a4be583161e6415c8c0543f5dd180419ea13e3db991ccca0","signature":"d4cb0878684926011f20ef763f982c78e1b0b699c0faefee31d2a7bdcf44a7bb"},"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","26ed2b3579b00785d7b8028002d5e638444e32e1fad135100a2419e48e5fb458","41274c6cc805d2945895a3654a9fc6bfd2339f2feb647ab5c5f4df664a04cf53","e725e4e013e946cccba3ec0fb642af7b5b9bd7872357b435ffe551dd80d552bc","b8dcce8ae07139e9f4c6019db31d3d1105806025d41e04a40f38cdd0d2dab92f","209dc81a1af545c80808f08403929d4a28791b0c059f3a4dd5b0724bf142fe03","1f6c6d022f61fe4e98a6fc773e400cead9988bf2353290472d7205dec0604b8f","4abcc60b395352b0b1400e3ee5e4b345c54daa6bd86a6ef39bfb3a66bea3daf0","f1535d688ff92c7f16fcd4ff415413edef056ab63008cbec0ac1a1abbefd8f6b",{"version":"d78a4fff1aa078a06b2b231e76b8fef7d6aedf2c19af2049b2ac66e667debc57","signature":"5f0652ab87ae48561321f15f3c8556a615a224ecb4e1ce914be5e5a37f380830","affectsGlobalScope":true},"82c661f1f20d29212d2e0408bee2e0f54bf8930cdcdd88f23ef8e03e4618afb4","d53d8a71b9525be3fb65c331f20db99b826edfa922703578af284736dc780db5","6256cf36c8ae7e82bff606595af8fe08a06f8478140fcf304ee2f10c7716ddc8","2ba0457b958954b9b2041077df992fad015e85c615dc1ccebeddb561d4ab89cf","81c4fd49117bc25b8aac796a345db4315cc31861f61772da6bd405989ede0f79","1f8d4c8257ba50385865ce887940c8fdc745bcf3cea2dc09173bc8d3320b6efe","8459a11cb29556837148a3f82ccff6f3d9745070c3ed77264e279e7fe35ed0b7","7c774169686976056434799723bd7a48348df9d2204b928a0b77920505585214","5e95379e81e2d373e5235cedc4579938e39db274a32cfa32f8906e7ff6698763","d3c8a891b0554f4319651b5c89c2d91a442a792bf84afcbc399be033b96b4abd","8758b438b12ea50fb8b678d29ab0ef42d77abfb801cec481596ce6002b537a6f","88074e936d33e224b83f81eebbaf835467e1c0a6ba1239b950e6476dd7f73356","c895675912a8b2d0dcb13d24433757d233de16a3bb5c60f7d903099d96d61ea8","f73cf81342d2a25b65179c262ca7c38df023969129094607d0eb52510a56f10f","e7d7e67bd66b30f2216e4678b97bb09629a2b31766a79119acaa30e3005ef5fb","4a7b9005bef99460ba60da67219f0aff852cfd44038f17626bf59a6b5c6960b5","e137f087bda0256410b28743ef9a1bf57a4cafd43ffa6b62d5c17a8f5a08b3b5","fa8d9c5ea6ad2a5d3d6ee7703cfe1ddd962f1e4da08a370c6db642b1a1a091b8","af504042a6db047c40cc0aeb14550bbc954f194f2b8c5ad8944f2da502f45bf5","5b25b6ab5ad6c17f90b592162b2e9978ad8d81edf24cd3957306eb6e5edb89a9","24693bd77ac3be0b16e564d0ab498a397feb758ce7f4ed9f13478d566e3aafde","208dad548b895c7d02465de6ba79064b7c67bc4d94e5227b09f21d58790e634c","048c0ced65fa41fbf4bcc3d5e8e5b6f6c7f27335ceb54d401be654e821adbc08","f1c7ab18a927d1a9e3a452ef9b5d2d636dc7f39a116add1a48b0b78a323f19eb","9a57d654b0a0e4bf56a8eb0aa3ede1c7d349cec6220e36b5288c26626c8688ed",{"version":"5ab9a7f3ffc9b232597a079ff9aa17e8cafaffccfe66ac96cc892e7623bb2d97","signature":"68212fb8e2c0dae39c22959cf18904f22a1315a856c20173484371cbb74addbf"},{"version":"282c7c74d33d5ec6a9067728647227358018bf878a6c381973efd5be87f0d2a8","signature":"eef6c9e9e2ced98a276734cb82f81b12d154026659e84128ad42a3a69caced38"},{"version":"c1887ec121feae4f6a72ec295ad8cc2acd12e37b278672d1c1aa53d6ebba076c","signature":"1518a19a9cb02ce4439e1bd5d07e5dd4f496d4598142ff82264b40785ba28789"},{"version":"84b8f4bbd52cb52123a7e274419cc0745fdcdf3417b0d9ab557a6c4f08a89988","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012"},{"version":"1fb79997b88eae2ba6d1f4306832f059ed04453ecb9a368f8733fa53f636daf5","signature":"88c1a4ef1d377f95ba49cb68a724b921ad33861d14bf2fc4f47b3ad683314e41"},"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","4340936f4e937c452ae783514e7c7bbb7fc06d0c97993ff4865370d0962bb9cf","5009c081fd8ca3fcd6f3adcd071a1c79a933a400532b897822aad0943688a1f1","f713064ca751dc588bc13832137c418cb70cf0446de92ade60ad631071558fca","7a1f3d0b8dd0e869c58b44848d9f0be3592c3ff6dc77091e7130306f6d2907ed","96c23535f4f9dd15beb767e070559ea672f6a35f103152836a67100605136a96","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","29a46d003ca3c721e6405f00dee7e3de91b14e09701eba5d887bf76fb2d47d38","3df59a50b6fdd703016b81e254633080b3fa1e9035a462e730235876470d0012","629766229f541d92210f30a92b6038568ec165fab14b7ee53bdf13667da37ca3","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec",{"version":"7607da500c00af67a93aacb928552afd08d519f8e68eca30d4c624a69fd28ee9","affectsGlobalScope":true},"a8d630427635fa316e57fa4949132acde9cf23aa067220bffea30612497824cc","7a1dd1e9c8bf5e23129495b10718b280340c7500570e0cfe5cffcdee51e13e48","b58c81d4cc365d3986aee6c2a86592edc50f141b796899079196ffb103047390","b92ae8263cac4e5a79f55fe6cb63c030b096679b98f603fbc13963c30ab7da5e","ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","8495c63868f001b156fdeb6382ddd63dc6b2c9b91529ce08019caf312da37c59"],"root":[45,[47,53],132,134,135,145,[171,175]],"options":{"declaration":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":1,"outDir":"./","skipLibCheck":true,"strict":true,"target":2},"fileIdsList":[[101,179],[101],[101,192],[101,179,180,181,182,183],[101,179,181],[101,187],[101,188],[101,194,197],[101,204],[101,190,196],[101,194],[101,136,195],[101,193],[101,113,114],[101,114,115,116,117],[101,108,114,116],[101,113,115],[72,101,108],[72,101,108,109],[101,109,110,111,112],[101,109,111],[101,110],[89,101,108,118,119,120,123],[101,119,120,122],[71,101,108,118,119,120,121],[101,120],[101,118,119],[101,108,118],[71,101,108],[74,100,101,108,176,177],[55,101],[58,101],[59,64,92,101],[60,71,72,79,89,100,101],[60,61,71,79,101],[62,101],[63,64,72,80,101],[64,89,97,101],[65,67,71,79,101],[66,101],[67,68,101],[71,101],[69,71,101],[71,72,73,89,100,101],[71,72,73,86,89,92,101],[101,105],[67,71,74,79,89,100,101],[71,72,74,75,79,89,97,100,101],[74,76,89,97,100,101],[55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107],[71,77,101],[78,100,101],[67,71,79,89,101],[80,101],[81,101],[58,82,101],[83,99,101,105],[84,101],[85,101],[71,86,87,101],[86,88,101,103],[59,71,89,90,91,92,101],[59,89,91,101],[89,90,101],[92,101],[93,101],[58,89,101],[71,95,96,101],[95,96,101],[64,79,89,97,101],[98,101],[79,99,101],[59,74,85,100,101],[64,101],[89,101,102],[101,103],[101,104],[59,64,71,73,82,89,100,101,103,105],[89,101,106],[101,137,139,140,141,142,143],[101,137],[101,137,138,139],[74,89,101,108],[101,128],[101,125,126,127],[101,148,150],[101,150],[101,148],[101,146,150,170],[101,146,150],[101,170],[101,150,170],[60,101,108,147,149],[101,108,146,150],[101,148,164,165,166,167],[101,152,163,168,169],[101,151],[101,152,163,168],[101,150,151,153,154,155,156,157,158,159,160,161,162],[45,49,58,101],[49,50,51,101],[80,81,101],[46,49,54,72,80,81,101,124,128,129,130,132,135,145,173],[49,101,130,132,136,144],[49,51,101,145,173],[81,101,134],[101,133],[45,46,47,48,101],[47,101],[45,49,58,101,171,172],[47,49,101],[101,131],[45,81,101],[58],[49,51],[49,132,136,144],[170],[49,51,145],[45,47],[45]],"referencedMap":[[181,1],[179,2],[190,2],[193,3],[192,2],[184,4],[180,1],[182,5],[183,1],[185,2],[186,2],[187,2],[188,6],[189,7],[198,8],[199,2],[200,2],[201,2],[202,2],[203,2],[204,2],[205,9],[191,2],[197,10],[195,11],[196,12],[194,13],[115,14],[118,15],[117,16],[116,17],[114,18],[110,19],[113,20],[112,21],[111,22],[109,18],[124,23],[123,24],[122,25],[121,26],[120,27],[119,28],[129,2],[131,29],[133,18],[177,2],[178,30],[55,31],[56,31],[58,32],[59,33],[60,34],[61,35],[62,36],[63,37],[64,38],[65,39],[66,40],[67,41],[68,41],[70,42],[69,43],[71,42],[72,44],[73,45],[57,46],[107,2],[74,47],[75,48],[76,49],[108,50],[77,51],[78,52],[79,53],[80,54],[81,55],[82,56],[83,57],[84,58],[85,59],[86,60],[87,60],[88,61],[89,62],[91,63],[90,64],[92,65],[93,66],[94,67],[95,68],[96,69],[97,70],[98,71],[99,72],[100,73],[101,74],[102,75],[103,76],[104,77],[105,78],[106,79],[130,2],[46,2],[137,2],[144,80],[143,81],[140,82],[142,81],[138,2],[141,81],[139,2],[136,2],[54,2],[176,83],[125,84],[126,84],[128,85],[127,84],[154,2],[164,86],[148,87],[165,86],[166,88],[167,88],[153,2],[155,87],[156,87],[157,89],[158,90],[159,91],[160,91],[151,92],[161,87],[146,87],[162,91],[149,88],[150,93],[147,94],[168,95],[170,96],[152,97],[169,98],[163,99],[43,2],[44,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[33,2],[30,2],[31,2],[32,2],[34,2],[7,2],[35,2],[40,2],[41,2],[36,2],[37,2],[38,2],[39,2],[1,2],[42,2],[50,100],[52,101],[53,102],[174,103],[145,104],[171,91],[175,105],[45,2],[135,106],[134,107],[49,108],[48,109],[173,110],[51,111],[132,112],[172,113],[47,2]],"exportedModulesMap":[[181,1],[179,2],[190,2],[193,3],[192,2],[184,4],[180,1],[182,5],[183,1],[185,2],[186,2],[187,2],[188,6],[189,7],[198,8],[199,2],[200,2],[201,2],[202,2],[203,2],[204,2],[205,9],[191,2],[197,10],[195,11],[196,12],[194,13],[115,14],[118,15],[117,16],[116,17],[114,18],[110,19],[113,20],[112,21],[111,22],[109,18],[124,23],[123,24],[122,25],[121,26],[120,27],[119,28],[129,2],[131,29],[133,18],[177,2],[178,30],[55,31],[56,31],[58,32],[59,33],[60,34],[61,35],[62,36],[63,37],[64,38],[65,39],[66,40],[67,41],[68,41],[70,42],[69,43],[71,42],[72,44],[73,45],[57,46],[107,2],[74,47],[75,48],[76,49],[108,50],[77,51],[78,52],[79,53],[80,54],[81,55],[82,56],[83,57],[84,58],[85,59],[86,60],[87,60],[88,61],[89,62],[91,63],[90,64],[92,65],[93,66],[94,67],[95,68],[96,69],[97,70],[98,71],[99,72],[100,73],[101,74],[102,75],[103,76],[104,77],[105,78],[106,79],[130,2],[46,2],[137,2],[144,80],[143,81],[140,82],[142,81],[138,2],[141,81],[139,2],[136,2],[54,2],[176,83],[125,84],[126,84],[128,85],[127,84],[154,2],[164,86],[148,87],[165,86],[166,88],[167,88],[153,2],[155,87],[156,87],[157,89],[158,90],[159,91],[160,91],[151,92],[161,87],[146,87],[162,91],[149,88],[150,93],[147,94],[168,95],[170,96],[152,97],[169,98],[163,99],[43,2],[44,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[33,2],[30,2],[31,2],[32,2],[34,2],[7,2],[35,2],[40,2],[41,2],[36,2],[37,2],[38,2],[39,2],[1,2],[42,2],[50,114],[52,115],[145,116],[171,117],[175,118],[49,119],[172,120]],"semanticDiagnosticsPerFile":[181,179,190,193,192,184,180,182,183,185,186,187,188,189,198,199,200,201,202,203,204,205,191,197,195,196,194,115,118,117,116,114,110,113,112,111,109,124,123,122,121,120,119,129,131,133,177,178,55,56,58,59,60,61,62,63,64,65,66,67,68,70,69,71,72,73,57,107,74,75,76,108,77,78,79,80,81,82,83,84,85,86,87,88,89,91,90,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,130,46,137,144,143,140,142,138,141,139,136,54,176,125,126,128,127,154,164,148,165,166,167,153,155,156,157,158,159,160,151,161,146,162,149,150,147,168,170,152,169,163,43,44,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,34,7,35,40,41,36,37,38,39,1,42,50,52,53,174,145,171,175,45,135,134,49,48,173,51,132,172,47]},"version":"5.1.6"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "braintrust",
3
- "version": "0.0.71",
3
+ "version": "0.0.73",
4
4
  "description": "SDK for integrating Braintrust",
5
5
  "main": "./dist/index.js",
6
6
  "browser": {