bitfab 0.64.6 → 0.64.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cloudReplay.py +3 -0
- package/dist/{chunk-6NUSTEQ6.js → chunk-DIOPUOV3.js} +6 -6
- package/dist/{chunk-6NUSTEQ6.js.map → chunk-DIOPUOV3.js.map} +1 -1
- package/dist/{chunk-J342BFLH.js → chunk-FZ7SSJ7S.js} +39 -4
- package/dist/chunk-FZ7SSJ7S.js.map +1 -0
- package/dist/{chunk-MS3GWCJB.js → chunk-RYZO7Q3P.js} +6 -3
- package/dist/{chunk-MS3GWCJB.js.map → chunk-RYZO7Q3P.js.map} +1 -1
- package/dist/{chunk-B363XZTL.js → chunk-SZVZU3F6.js} +150 -3
- package/dist/chunk-SZVZU3F6.js.map +1 -0
- package/dist/{chunk-ROZEHSGO.js → chunk-TAGNRN6F.js} +6 -3
- package/dist/chunk-TAGNRN6F.js.map +1 -0
- package/dist/{http-BD3WK3FL.js → http-QVLMJVZT.js} +2 -2
- package/dist/{http-2UZ6CM3K.js → http-YUNQFRQY.js} +2 -2
- package/dist/index.cjs +162 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -2
- package/dist/index.d.ts +14 -2
- package/dist/index.js +3 -3
- package/dist/node.cjs +162 -4
- package/dist/node.cjs.map +1 -1
- package/dist/node.js +3 -3
- package/dist/{replay-KQCLQRJT.js → replay-PN6MNLGK.js} +3 -3
- package/dist/replayCli.js +2 -2
- package/dist/seedCli.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-B363XZTL.js.map +0 -1
- package/dist/chunk-J342BFLH.js.map +0 -1
- package/dist/chunk-ROZEHSGO.js.map +0 -1
- /package/dist/{http-2UZ6CM3K.js.map → http-QVLMJVZT.js.map} +0 -0
- /package/dist/{http-BD3WK3FL.js.map → http-YUNQFRQY.js.map} +0 -0
- /package/dist/{replay-KQCLQRJT.js.map → replay-PN6MNLGK.js.map} +0 -0
package/dist/index.cjs
CHANGED
|
@@ -51,7 +51,7 @@ var __version__, __packageName__;
|
|
|
51
51
|
var init_version_generated = __esm({
|
|
52
52
|
"src/version.generated.ts"() {
|
|
53
53
|
"use strict";
|
|
54
|
-
__version__ = "0.64.
|
|
54
|
+
__version__ = "0.64.7";
|
|
55
55
|
__packageName__ = "bitfab";
|
|
56
56
|
}
|
|
57
57
|
});
|
|
@@ -2904,7 +2904,7 @@ var init_http = __esm({
|
|
|
2904
2904
|
* Start a replay session by fetching historical traces.
|
|
2905
2905
|
* Blocking call - creates an experiment and returns lightweight item references.
|
|
2906
2906
|
*/
|
|
2907
|
-
async startReplay(traceFunctionKey, limit, traceIds, name, codeChangeDescription, codeChangeFiles, includeDbBranchLease, experimentGroupId, datasetIds, graderIds, dbBranchSettings, attempts, includeOriginalMetadata, onlyWithAssertions, skipAssertionJudging, experimentalSelectiveReplay, notes, metadata, dryRun) {
|
|
2907
|
+
async startReplay(traceFunctionKey, limit, traceIds, name, codeChangeDescription, codeChangeFiles, includeDbBranchLease, experimentGroupId, datasetIds, graderIds, dbBranchSettings, attempts, includeOriginalMetadata, onlyWithAssertions, skipAssertionJudging, experimentalSelectiveReplay, notes, metadata, dryRun, invocation) {
|
|
2908
2908
|
const payload = { traceFunctionKey };
|
|
2909
2909
|
if (experimentalSelectiveReplay !== void 0) {
|
|
2910
2910
|
payload.experimentalSelectiveReplay = experimentalSelectiveReplay;
|
|
@@ -2965,6 +2965,9 @@ var init_http = __esm({
|
|
|
2965
2965
|
if (dryRun) {
|
|
2966
2966
|
payload.dryRun = true;
|
|
2967
2967
|
}
|
|
2968
|
+
if (invocation !== void 0) {
|
|
2969
|
+
payload.invocation = invocation;
|
|
2970
|
+
}
|
|
2968
2971
|
const git = await resolvedGitState();
|
|
2969
2972
|
if (git && !isEmptyGitState(git)) {
|
|
2970
2973
|
payload.git = git;
|
|
@@ -3760,6 +3763,113 @@ var init_replayInterrupt = __esm({
|
|
|
3760
3763
|
}
|
|
3761
3764
|
});
|
|
3762
3765
|
|
|
3766
|
+
// src/replayInvocation.ts
|
|
3767
|
+
function replayEnvironment() {
|
|
3768
|
+
if (readEnv(REPLAY_EXECUTION_TARGET_ENV) === HOSTED_EXECUTION_TARGET) {
|
|
3769
|
+
return "cloud_replay";
|
|
3770
|
+
}
|
|
3771
|
+
if (CI_TRUE_VALUES.has((readEnv(CI_ENV) ?? "").toLowerCase())) {
|
|
3772
|
+
return "ci";
|
|
3773
|
+
}
|
|
3774
|
+
if (CI_PRESENCE_ENV_VARS.some((name) => (readEnv(name) ?? "") !== "")) {
|
|
3775
|
+
return "ci";
|
|
3776
|
+
}
|
|
3777
|
+
return "local";
|
|
3778
|
+
}
|
|
3779
|
+
function flagScalar(value) {
|
|
3780
|
+
if (typeof value === "string") {
|
|
3781
|
+
return value.slice(0, MAX_FLAG_STRING_LENGTH);
|
|
3782
|
+
}
|
|
3783
|
+
if (typeof value === "number") {
|
|
3784
|
+
return Number.isFinite(value) ? value : void 0;
|
|
3785
|
+
}
|
|
3786
|
+
if (typeof value === "boolean" || value === null) {
|
|
3787
|
+
return value;
|
|
3788
|
+
}
|
|
3789
|
+
return void 0;
|
|
3790
|
+
}
|
|
3791
|
+
function flagValue(value) {
|
|
3792
|
+
if (Array.isArray(value)) {
|
|
3793
|
+
const items = value.slice(0, MAX_FLAG_LIST_LENGTH).map(flagScalar);
|
|
3794
|
+
return items.every((item) => item !== void 0) ? items : true;
|
|
3795
|
+
}
|
|
3796
|
+
const scalar = flagScalar(value);
|
|
3797
|
+
return scalar === void 0 ? true : scalar;
|
|
3798
|
+
}
|
|
3799
|
+
function optionFlagName(option) {
|
|
3800
|
+
return OPTION_FLAG_NAMES[option] ?? option.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
|
|
3801
|
+
}
|
|
3802
|
+
function metadataKeys(value) {
|
|
3803
|
+
const keys = Array.isArray(value) ? value.map((pair) => String(pair).split("=")[0]) : typeof value === "object" && value !== null ? Object.keys(value) : void 0;
|
|
3804
|
+
return keys === void 0 ? true : [...new Set(keys)].sort();
|
|
3805
|
+
}
|
|
3806
|
+
function invocationFlags(entries) {
|
|
3807
|
+
const flags = {};
|
|
3808
|
+
const seen = /* @__PURE__ */ new Set();
|
|
3809
|
+
for (const [name, value] of entries) {
|
|
3810
|
+
if (seen.size >= MAX_FLAGS) {
|
|
3811
|
+
break;
|
|
3812
|
+
}
|
|
3813
|
+
if (value === void 0 || seen.has(name) || name.length === 0 || name.length > MAX_FLAG_NAME_LENGTH || SECRET_FLAG_NAME.test(name)) {
|
|
3814
|
+
continue;
|
|
3815
|
+
}
|
|
3816
|
+
flags[name] = flagValue(
|
|
3817
|
+
name === METADATA_FLAG ? metadataKeys(value) : value
|
|
3818
|
+
);
|
|
3819
|
+
seen.add(name);
|
|
3820
|
+
}
|
|
3821
|
+
return flags;
|
|
3822
|
+
}
|
|
3823
|
+
function buildReplayInvocation(entries = []) {
|
|
3824
|
+
return {
|
|
3825
|
+
flags: invocationFlags(entries),
|
|
3826
|
+
sdk: { language: "typescript", version: __version__ },
|
|
3827
|
+
environment: replayEnvironment()
|
|
3828
|
+
};
|
|
3829
|
+
}
|
|
3830
|
+
function safeReplayInvocation(build) {
|
|
3831
|
+
try {
|
|
3832
|
+
return build();
|
|
3833
|
+
} catch {
|
|
3834
|
+
return void 0;
|
|
3835
|
+
}
|
|
3836
|
+
}
|
|
3837
|
+
function cliFlags(options) {
|
|
3838
|
+
return options?.[CLI_FLAGS];
|
|
3839
|
+
}
|
|
3840
|
+
var REPLAY_EXECUTION_TARGET_ENV, HOSTED_EXECUTION_TARGET, CI_ENV, CI_TRUE_VALUES, CI_PRESENCE_ENV_VARS, MAX_FLAGS, MAX_FLAG_NAME_LENGTH, MAX_FLAG_STRING_LENGTH, MAX_FLAG_LIST_LENGTH, SECRET_FLAG_NAME, CLI_FLAGS, METADATA_FLAG, OPTION_FLAG_NAMES;
|
|
3841
|
+
var init_replayInvocation = __esm({
|
|
3842
|
+
"src/replayInvocation.ts"() {
|
|
3843
|
+
"use strict";
|
|
3844
|
+
init_constants();
|
|
3845
|
+
init_readEnv();
|
|
3846
|
+
REPLAY_EXECUTION_TARGET_ENV = "BITFAB_REPLAY_EXECUTION_TARGET";
|
|
3847
|
+
HOSTED_EXECUTION_TARGET = "hosted";
|
|
3848
|
+
CI_ENV = "CI";
|
|
3849
|
+
CI_TRUE_VALUES = /* @__PURE__ */ new Set(["true", "1"]);
|
|
3850
|
+
CI_PRESENCE_ENV_VARS = [
|
|
3851
|
+
"GITHUB_ACTIONS",
|
|
3852
|
+
"GITLAB_CI",
|
|
3853
|
+
"CIRCLECI",
|
|
3854
|
+
"BUILDKITE",
|
|
3855
|
+
"JENKINS_URL",
|
|
3856
|
+
"TF_BUILD"
|
|
3857
|
+
];
|
|
3858
|
+
MAX_FLAGS = 100;
|
|
3859
|
+
MAX_FLAG_NAME_LENGTH = 100;
|
|
3860
|
+
MAX_FLAG_STRING_LENGTH = 1e3;
|
|
3861
|
+
MAX_FLAG_LIST_LENGTH = 100;
|
|
3862
|
+
SECRET_FLAG_NAME = /key|token|secret|password/i;
|
|
3863
|
+
CLI_FLAGS = /* @__PURE__ */ Symbol("bitfab.replayCliFlags");
|
|
3864
|
+
METADATA_FLAG = "metadata";
|
|
3865
|
+
OPTION_FLAG_NAMES = {
|
|
3866
|
+
maxConcurrency: "concurrency",
|
|
3867
|
+
datasetId: "dataset-ids",
|
|
3868
|
+
datasetIds: "dataset-ids"
|
|
3869
|
+
};
|
|
3870
|
+
}
|
|
3871
|
+
});
|
|
3872
|
+
|
|
3763
3873
|
// src/selectiveReplay.ts
|
|
3764
3874
|
function replayNodeKey(node) {
|
|
3765
3875
|
return JSON.stringify([node.traceFunctionKey, node.spanName]);
|
|
@@ -4189,6 +4299,16 @@ function resolveDbBranchSettings(dbBranch) {
|
|
|
4189
4299
|
};
|
|
4190
4300
|
return Object.keys(settings).length === 0 ? void 0 : settings;
|
|
4191
4301
|
}
|
|
4302
|
+
function explicitReplayOptions(options) {
|
|
4303
|
+
var _a;
|
|
4304
|
+
const explicit = {};
|
|
4305
|
+
for (const name of REPLAY_OPTION_NAMES) {
|
|
4306
|
+
if (options?.[name] !== void 0) {
|
|
4307
|
+
explicit[_a = optionFlagName(name)] ?? (explicit[_a] = options[name]);
|
|
4308
|
+
}
|
|
4309
|
+
}
|
|
4310
|
+
return explicit;
|
|
4311
|
+
}
|
|
4192
4312
|
function reportReplayProgress(progress) {
|
|
4193
4313
|
const stderr = typeof process !== "undefined" ? process.stderr : void 0;
|
|
4194
4314
|
if (!stderr) {
|
|
@@ -4700,7 +4820,12 @@ async function replay(httpClient, serviceUrl, traceFunctionKey, fn, options, reg
|
|
|
4700
4820
|
options?.experimentalSelectiveReplay,
|
|
4701
4821
|
options?.notes,
|
|
4702
4822
|
options?.metadata,
|
|
4703
|
-
options?.dryRun === true
|
|
4823
|
+
options?.dryRun === true,
|
|
4824
|
+
safeReplayInvocation(
|
|
4825
|
+
() => buildReplayInvocation(
|
|
4826
|
+
Object.entries(cliFlags(options) ?? explicitReplayOptions(options))
|
|
4827
|
+
)
|
|
4828
|
+
)
|
|
4704
4829
|
);
|
|
4705
4830
|
if (started.items.length === 0) {
|
|
4706
4831
|
try {
|
|
@@ -5092,7 +5217,7 @@ async function writeReplayResultFile(result) {
|
|
|
5092
5217
|
}
|
|
5093
5218
|
}
|
|
5094
5219
|
}
|
|
5095
|
-
var REPLAY_PERSISTENCE_TIMEOUT_MS, MAX_REPLAY_ATTEMPTS, RESUME_CONFLICTING_OPTIONS, CARRIED_OVER_ERROR, BITFAB_PROGRESS_PREFIX, ReplayError, DbBranchReplayError, JUDGE_ASSERTIONS_DEPRECATION_WARNING;
|
|
5220
|
+
var REPLAY_PERSISTENCE_TIMEOUT_MS, MAX_REPLAY_ATTEMPTS, RESUME_CONFLICTING_OPTIONS, CARRIED_OVER_ERROR, REPLAY_OPTION_NAMES, BITFAB_PROGRESS_PREFIX, ReplayError, DbBranchReplayError, JUDGE_ASSERTIONS_DEPRECATION_WARNING;
|
|
5096
5221
|
var init_replay = __esm({
|
|
5097
5222
|
"src/replay.ts"() {
|
|
5098
5223
|
"use strict";
|
|
@@ -5105,6 +5230,7 @@ var init_replay = __esm({
|
|
|
5105
5230
|
init_replayContext();
|
|
5106
5231
|
init_replayHeartbeat();
|
|
5107
5232
|
init_replayInterrupt();
|
|
5233
|
+
init_replayInvocation();
|
|
5108
5234
|
init_selectiveReplayRuntime();
|
|
5109
5235
|
init_serialize();
|
|
5110
5236
|
init_warnOnce();
|
|
@@ -5122,6 +5248,37 @@ var init_replay = __esm({
|
|
|
5122
5248
|
"experimentalSelectiveReplay"
|
|
5123
5249
|
];
|
|
5124
5250
|
CARRIED_OVER_ERROR = "This item errored in an earlier run of this experiment, before it was resumed.";
|
|
5251
|
+
REPLAY_OPTION_NAMES = [
|
|
5252
|
+
"experimentalSelectiveReplay",
|
|
5253
|
+
"limit",
|
|
5254
|
+
"attempts",
|
|
5255
|
+
"traceIds",
|
|
5256
|
+
"name",
|
|
5257
|
+
"notes",
|
|
5258
|
+
"metadata",
|
|
5259
|
+
"maxConcurrency",
|
|
5260
|
+
"codeChangeDescription",
|
|
5261
|
+
"codeChangeFiles",
|
|
5262
|
+
"mock",
|
|
5263
|
+
"mockOverride",
|
|
5264
|
+
"dbBranch",
|
|
5265
|
+
"experimentGroupId",
|
|
5266
|
+
"datasetId",
|
|
5267
|
+
"datasetIds",
|
|
5268
|
+
"graderIds",
|
|
5269
|
+
"onlyWithAssertions",
|
|
5270
|
+
"skipAssertionJudging",
|
|
5271
|
+
"judgeAssertions",
|
|
5272
|
+
"adaptInputs",
|
|
5273
|
+
"dryRun",
|
|
5274
|
+
"onItemFinish",
|
|
5275
|
+
"onProgress",
|
|
5276
|
+
"onItemStart",
|
|
5277
|
+
"onExperimentStart",
|
|
5278
|
+
"onInterrupt",
|
|
5279
|
+
"resume",
|
|
5280
|
+
"force"
|
|
5281
|
+
];
|
|
5125
5282
|
BITFAB_PROGRESS_PREFIX = "@@bitfab:progress ";
|
|
5126
5283
|
ReplayError = class extends BitfabError {
|
|
5127
5284
|
constructor(message, items, experimentId, experimentUrl, cause) {
|
|
@@ -11972,6 +12129,7 @@ init_replay();
|
|
|
11972
12129
|
init_errors();
|
|
11973
12130
|
init_replay();
|
|
11974
12131
|
init_replayInterrupt();
|
|
12132
|
+
init_replayInvocation();
|
|
11975
12133
|
init_warnOnce();
|
|
11976
12134
|
function defineReplayRegistry(registry) {
|
|
11977
12135
|
validateReplayRegistry(registry);
|