@bitfab/sdk 0.64.15 → 0.64.17
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 +282 -24
- package/dist/{chunk-NYLVYTBO.js → chunk-G5BYSZLD.js} +30 -6
- package/dist/chunk-G5BYSZLD.js.map +1 -0
- package/dist/{chunk-Z4DIFZTO.js → chunk-I3LSDFMN.js} +2 -2
- package/dist/{chunk-Z4DIFZTO.js.map → chunk-I3LSDFMN.js.map} +1 -1
- package/dist/chunk-PQ6ABBRQ.js +1905 -0
- package/dist/chunk-PQ6ABBRQ.js.map +1 -0
- package/dist/{chunk-7ZJ7KXEV.js → chunk-QZFVHNQE.js} +2 -2
- package/dist/{chunk-2MHRNZH5.js → chunk-WLGH45CM.js} +204 -89
- package/dist/chunk-WLGH45CM.js.map +1 -0
- package/dist/{chunk-KVGRTCIE.js → chunk-YHKFC7XZ.js} +16 -2
- package/dist/{chunk-KVGRTCIE.js.map → chunk-YHKFC7XZ.js.map} +1 -1
- package/dist/{http-36VJ3FFM.js → http-AYZZNM2L.js} +2 -2
- package/dist/{http-IQ2AC36B.js → http-DAQLSTUN.js} +2 -2
- package/dist/index.cjs +25 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +99 -2
- package/dist/index.d.ts +99 -2
- package/dist/index.js +3 -3
- package/dist/node.cjs +25 -1
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.cts +1 -1
- package/dist/node.d.ts +1 -1
- package/dist/node.js +3 -3
- package/dist/replay-ARKSPOVK.js +28 -0
- package/dist/{replay-2QFPGFS7.js → replay-FFNEMPGO.js} +3 -3
- package/dist/replay-FFNEMPGO.js.map +1 -0
- package/dist/replayCli.js +3 -2
- package/dist/replayCli.js.map +1 -1
- package/dist/seedCli.js +3 -2
- package/dist/seedCli.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-2MHRNZH5.js.map +0 -1
- package/dist/chunk-NYLVYTBO.js.map +0 -1
- /package/dist/{chunk-7ZJ7KXEV.js.map → chunk-QZFVHNQE.js.map} +0 -0
- /package/dist/{http-36VJ3FFM.js.map → http-AYZZNM2L.js.map} +0 -0
- /package/dist/{http-IQ2AC36B.js.map → http-DAQLSTUN.js.map} +0 -0
- /package/dist/{replay-2QFPGFS7.js.map → replay-ARKSPOVK.js.map} +0 -0
|
@@ -1,104 +1,208 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ReplayError,
|
|
3
|
+
canonicalCliFlag,
|
|
4
|
+
describeReplayInterrupt,
|
|
5
|
+
reportReplayProgress,
|
|
6
|
+
serializeReplayResult,
|
|
7
|
+
warnJudgeAssertionsDeprecated,
|
|
8
|
+
withCliFlags
|
|
9
|
+
} from "./chunk-PQ6ABBRQ.js";
|
|
1
10
|
import {
|
|
2
11
|
BitfabError,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
// src/codeChange.ts
|
|
8
|
-
var NUL = String.fromCharCode(0);
|
|
12
|
+
asyncStorageReady,
|
|
13
|
+
createAsyncLocalStorage,
|
|
14
|
+
warnOnce
|
|
15
|
+
} from "./chunk-YHKFC7XZ.js";
|
|
9
16
|
|
|
10
|
-
// src/
|
|
11
|
-
|
|
17
|
+
// src/autoTrace.ts
|
|
18
|
+
var autoTraceGlobal = globalThis;
|
|
19
|
+
var autoTraceState = autoTraceGlobal.__bitfabAutoTraceStateV4 ?? {
|
|
20
|
+
storage: null,
|
|
21
|
+
browserScope: void 0,
|
|
22
|
+
capturePolicies: /* @__PURE__ */ new WeakMap(),
|
|
23
|
+
activeRoots: 0
|
|
24
|
+
};
|
|
25
|
+
autoTraceGlobal.__bitfabAutoTraceStateV4 = autoTraceState;
|
|
12
26
|
|
|
13
|
-
// src/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
27
|
+
// src/commitRef.ts
|
|
28
|
+
var EXPLICIT_SHA_ENV = "BITFAB_COMMIT_SHA";
|
|
29
|
+
var DISABLE_ENV = "BITFAB_DISABLE_COMMIT_REF";
|
|
30
|
+
var GIT_MAX_BUFFER = 1024 * 1024;
|
|
31
|
+
var VERCEL_PROVIDER_HOSTS = {
|
|
32
|
+
github: "github.com",
|
|
33
|
+
gitlab: "gitlab.com",
|
|
34
|
+
bitbucket: "bitbucket.org"
|
|
35
|
+
};
|
|
36
|
+
function read(env, name) {
|
|
37
|
+
if (name === null) {
|
|
38
|
+
return null;
|
|
17
39
|
}
|
|
18
|
-
|
|
40
|
+
const value = env(name)?.trim();
|
|
41
|
+
return value ? value : null;
|
|
19
42
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return CLI_FLAG_ALIASES[name] ?? name;
|
|
43
|
+
function remoteFrom(...names) {
|
|
44
|
+
return (env) => {
|
|
45
|
+
const parts = names.map((name) => read(env, name));
|
|
46
|
+
if (parts.some((part) => part === null)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return normalizeRemote(parts.join("/"));
|
|
50
|
+
};
|
|
29
51
|
}
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
52
|
+
function vercelRemote(env) {
|
|
53
|
+
const provider = read(env, "VERCEL_GIT_PROVIDER")?.toLowerCase() ?? "";
|
|
54
|
+
const host = VERCEL_PROVIDER_HOSTS[provider];
|
|
55
|
+
const owner = read(env, "VERCEL_GIT_REPO_OWNER");
|
|
56
|
+
const slug = read(env, "VERCEL_GIT_REPO_SLUG");
|
|
57
|
+
if (!host || !owner || !slug) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return `${host}/${owner}/${slug}`;
|
|
61
|
+
}
|
|
62
|
+
function noRemote() {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
var PLATFORM_ENVS = [
|
|
66
|
+
["VERCEL_GIT_COMMIT_SHA", "VERCEL_GIT_COMMIT_REF", vercelRemote],
|
|
67
|
+
[
|
|
68
|
+
"GITHUB_SHA",
|
|
69
|
+
"GITHUB_REF_NAME",
|
|
70
|
+
remoteFrom("GITHUB_SERVER_URL", "GITHUB_REPOSITORY")
|
|
71
|
+
],
|
|
72
|
+
["RAILWAY_GIT_COMMIT_SHA", "RAILWAY_GIT_BRANCH", noRemote],
|
|
73
|
+
["RENDER_GIT_COMMIT", "RENDER_GIT_BRANCH", noRemote],
|
|
74
|
+
["SOURCE_VERSION", null, noRemote],
|
|
75
|
+
["CF_PAGES_COMMIT_SHA", "CF_PAGES_BRANCH", noRemote],
|
|
76
|
+
["CI_COMMIT_SHA", "CI_COMMIT_REF_NAME", remoteFrom("CI_REPOSITORY_URL")],
|
|
77
|
+
[
|
|
78
|
+
"BUILD_SOURCEVERSION",
|
|
79
|
+
"BUILD_SOURCEBRANCHNAME",
|
|
80
|
+
remoteFrom("BUILD_REPOSITORY_URI")
|
|
81
|
+
],
|
|
82
|
+
["CIRCLE_SHA1", "CIRCLE_BRANCH", remoteFrom("CIRCLE_REPOSITORY_URL")]
|
|
83
|
+
];
|
|
84
|
+
var COMMIT_REF_ENV_NAMES = [
|
|
85
|
+
EXPLICIT_SHA_ENV,
|
|
86
|
+
DISABLE_ENV,
|
|
87
|
+
...PLATFORM_ENVS.flatMap(
|
|
88
|
+
([sha, branch]) => branch === null ? [sha] : [sha, branch]
|
|
89
|
+
),
|
|
90
|
+
"GITHUB_SERVER_URL",
|
|
91
|
+
"GITHUB_REPOSITORY",
|
|
92
|
+
"CI_REPOSITORY_URL",
|
|
93
|
+
"BUILD_REPOSITORY_URI",
|
|
94
|
+
"CIRCLE_REPOSITORY_URL",
|
|
95
|
+
"VERCEL_GIT_PROVIDER",
|
|
96
|
+
"VERCEL_GIT_REPO_OWNER",
|
|
97
|
+
"VERCEL_GIT_REPO_SLUG"
|
|
98
|
+
];
|
|
99
|
+
function normalizeRemote(raw) {
|
|
100
|
+
const value = raw?.trim();
|
|
101
|
+
if (!value) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
let host = "";
|
|
105
|
+
let path = value;
|
|
106
|
+
if (value.includes("://")) {
|
|
107
|
+
try {
|
|
108
|
+
const parsed = new URL(value);
|
|
109
|
+
host = parsed.hostname;
|
|
110
|
+
path = parsed.pathname;
|
|
111
|
+
} catch {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
} else {
|
|
115
|
+
const separator = value.indexOf(":");
|
|
116
|
+
if (separator !== -1) {
|
|
117
|
+
const head = value.slice(0, separator);
|
|
118
|
+
host = head.slice(head.lastIndexOf("@") + 1);
|
|
119
|
+
path = value.slice(separator + 1);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
path = path.replace(/^\/+|\/+$/g, "");
|
|
123
|
+
if (path.endsWith(".git")) {
|
|
124
|
+
path = path.slice(0, -".git".length).replace(/\/+$/, "");
|
|
125
|
+
}
|
|
126
|
+
if (!host) {
|
|
127
|
+
return path || null;
|
|
128
|
+
}
|
|
129
|
+
return path ? `${host}/${path}` : host;
|
|
36
130
|
}
|
|
131
|
+
var settled = Promise.resolve();
|
|
37
132
|
|
|
38
|
-
// src/
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
133
|
+
// src/openaiAgentsSpanContext.ts
|
|
134
|
+
var spanGlobal = globalThis;
|
|
135
|
+
var state = spanGlobal.__bitfabOpenAiAgentsSpansV1 ?? {
|
|
136
|
+
bitfabTraceIds: /* @__PURE__ */ new Map(),
|
|
137
|
+
endedSpanIds: /* @__PURE__ */ new Map()
|
|
138
|
+
};
|
|
139
|
+
spanGlobal.__bitfabOpenAiAgentsSpansV1 = state;
|
|
140
|
+
|
|
141
|
+
// src/rivetContext.ts
|
|
142
|
+
var storage = null;
|
|
143
|
+
var STORAGE_SYMBOL = /* @__PURE__ */ Symbol.for("bitfab.rivetContextStorage");
|
|
144
|
+
function initializeStorage() {
|
|
145
|
+
if (storage) {
|
|
43
146
|
return;
|
|
44
147
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
148
|
+
const shared = globalThis;
|
|
149
|
+
const existing = shared[STORAGE_SYMBOL];
|
|
150
|
+
if (existing) {
|
|
151
|
+
storage = existing;
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const created = createAsyncLocalStorage();
|
|
155
|
+
if (created) {
|
|
156
|
+
shared[STORAGE_SYMBOL] = created;
|
|
157
|
+
storage = created;
|
|
51
158
|
}
|
|
52
159
|
}
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
160
|
+
var rivetContextReady = asyncStorageReady.then(() => {
|
|
161
|
+
initializeStorage();
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
// src/seedContext.ts
|
|
165
|
+
var seedContextStorage = null;
|
|
166
|
+
var SEED_CONTEXT_STORAGE_SYMBOL = /* @__PURE__ */ Symbol.for("bitfab.seedContextStorage");
|
|
167
|
+
var seedContextReady = asyncStorageReady.then(() => {
|
|
168
|
+
const shared = globalThis;
|
|
169
|
+
const existing = shared[SEED_CONTEXT_STORAGE_SYMBOL];
|
|
170
|
+
if (existing) {
|
|
171
|
+
seedContextStorage = existing;
|
|
172
|
+
return;
|
|
63
173
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
this.code = code;
|
|
69
|
-
this.originalTraceId = originalTraceId;
|
|
70
|
-
this.cause = cause;
|
|
71
|
-
this.name = "DbBranchReplayError";
|
|
174
|
+
const created = createAsyncLocalStorage();
|
|
175
|
+
if (created) {
|
|
176
|
+
shared[SEED_CONTEXT_STORAGE_SYMBOL] = created;
|
|
177
|
+
seedContextStorage = created;
|
|
72
178
|
}
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (value instanceof DbBranchReplayError) {
|
|
82
|
-
serialized.code = value.code;
|
|
83
|
-
serialized.originalTraceId = value.originalTraceId;
|
|
84
|
-
if (value.cause !== void 0) {
|
|
85
|
-
serialized.cause = value.cause;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return serialized;
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// src/client.ts
|
|
182
|
+
var asyncLocalStorage = null;
|
|
183
|
+
var SPAN_CONTEXT_STORAGE_SYMBOL = /* @__PURE__ */ Symbol.for("bitfab.spanContextStorage");
|
|
184
|
+
var initializeAsyncContext = () => {
|
|
185
|
+
if (asyncLocalStorage) {
|
|
186
|
+
return;
|
|
89
187
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
188
|
+
const shared = globalThis;
|
|
189
|
+
const existing = shared[SPAN_CONTEXT_STORAGE_SYMBOL];
|
|
190
|
+
if (existing) {
|
|
191
|
+
asyncLocalStorage = existing;
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const created = createAsyncLocalStorage();
|
|
195
|
+
if (created) {
|
|
196
|
+
shared[SPAN_CONTEXT_STORAGE_SYMBOL] = created;
|
|
197
|
+
asyncLocalStorage = created;
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
var asyncLocalStorageReady = asyncStorageReady.then(() => {
|
|
201
|
+
initializeAsyncContext();
|
|
202
|
+
});
|
|
203
|
+
function _resolvedApiKey(client) {
|
|
204
|
+
const keyed = client;
|
|
205
|
+
return keyed.findApiKey(true) ?? null;
|
|
102
206
|
}
|
|
103
207
|
|
|
104
208
|
// src/replayRegistry.ts
|
|
@@ -349,8 +453,8 @@ async function seedFromRegistry(registry, pipeline, cases, options = {}) {
|
|
|
349
453
|
sessionId: seedCase.sessionId
|
|
350
454
|
})
|
|
351
455
|
);
|
|
352
|
-
const { flushTraces
|
|
353
|
-
await
|
|
456
|
+
const { flushTraces } = await import("./http-AYZZNM2L.js");
|
|
457
|
+
await flushTraces(3e4);
|
|
354
458
|
return { pipeline, traceFunctionKey, traceIds };
|
|
355
459
|
}
|
|
356
460
|
var SEED_USAGE = `Usage: bitfab-seed --registry <path> <pipeline> --from-trace <id>[,<id>...]
|
|
@@ -785,10 +889,21 @@ function reportReplayError(error, stderr) {
|
|
|
785
889
|
);
|
|
786
890
|
}
|
|
787
891
|
}
|
|
892
|
+
var API_KEY_LINE_PREFIX = "@@bitfab:api-key ";
|
|
893
|
+
var PRINT_API_KEY_FLAG = "--print-api-key";
|
|
788
894
|
async function runReplayCli(registry, argv = typeof process === "undefined" ? [] : process.argv.slice(2), io = {}, registryPath) {
|
|
789
895
|
const stdout = io.stdout ?? console.log;
|
|
790
896
|
const stderr = io.stderr ?? console.error;
|
|
791
|
-
const
|
|
897
|
+
const printApiKey = argv.includes(PRINT_API_KEY_FLAG);
|
|
898
|
+
const args = parseReplayCliArgs(
|
|
899
|
+
registry,
|
|
900
|
+
argv.filter((arg) => arg !== PRINT_API_KEY_FLAG)
|
|
901
|
+
);
|
|
902
|
+
if (printApiKey) {
|
|
903
|
+
const apiKey = _resolvedApiKey(registry[args.pipeline].client);
|
|
904
|
+
stdout(`${API_KEY_LINE_PREFIX}${JSON.stringify({ apiKey })}`);
|
|
905
|
+
return null;
|
|
906
|
+
}
|
|
792
907
|
if (args.judgeAssertionsFlag) {
|
|
793
908
|
warnJudgeAssertionsDeprecated(stderr);
|
|
794
909
|
}
|
|
@@ -1047,4 +1162,4 @@ export {
|
|
|
1047
1162
|
runRegistryMain,
|
|
1048
1163
|
runIfEntrypoint
|
|
1049
1164
|
};
|
|
1050
|
-
//# sourceMappingURL=chunk-
|
|
1165
|
+
//# sourceMappingURL=chunk-WLGH45CM.js.map
|