@bitfab/sdk 0.20.0 → 0.21.1
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/dist/{chunk-IUZIGC6T.js → chunk-75LZO6JS.js} +97 -9
- package/dist/chunk-75LZO6JS.js.map +1 -0
- package/dist/index.cjs +96 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +79 -2
- package/dist/index.d.ts +79 -2
- package/dist/index.js +3 -1
- package/dist/node.cjs +96 -7
- 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 -1
- package/dist/node.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-IUZIGC6T.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -482,6 +482,7 @@ __export(index_exports, {
|
|
|
482
482
|
ReplayEnvironment: () => ReplayEnvironment,
|
|
483
483
|
SUPPORTED_PROVIDERS: () => SUPPORTED_PROVIDERS,
|
|
484
484
|
__version__: () => __version__,
|
|
485
|
+
finalizers: () => finalizers,
|
|
485
486
|
flushTraces: () => flushTraces,
|
|
486
487
|
getCurrentSpan: () => getCurrentSpan,
|
|
487
488
|
getCurrentTrace: () => getCurrentTrace
|
|
@@ -489,7 +490,7 @@ __export(index_exports, {
|
|
|
489
490
|
module.exports = __toCommonJS(index_exports);
|
|
490
491
|
|
|
491
492
|
// src/version.generated.ts
|
|
492
|
-
var __version__ = "0.
|
|
493
|
+
var __version__ = "0.21.1";
|
|
493
494
|
|
|
494
495
|
// src/constants.ts
|
|
495
496
|
var DEFAULT_SERVICE_URL = "https://bitfab.ai";
|
|
@@ -2422,9 +2423,15 @@ var BitfabOpenAITracingProcessor = class {
|
|
|
2422
2423
|
* Extract and add input/response to serialized span, updating errors list.
|
|
2423
2424
|
*/
|
|
2424
2425
|
extractSpanInputResponse(span, serializedSpan, errors) {
|
|
2426
|
+
if (span.spanData?.type !== "response") {
|
|
2427
|
+
return;
|
|
2428
|
+
}
|
|
2425
2429
|
const spanData = serializedSpan.span_data;
|
|
2426
2430
|
try {
|
|
2427
|
-
|
|
2431
|
+
const input = span.spanData?._input;
|
|
2432
|
+
if (input !== void 0) {
|
|
2433
|
+
spanData.input = input;
|
|
2434
|
+
}
|
|
2428
2435
|
} catch (error) {
|
|
2429
2436
|
errors.push({
|
|
2430
2437
|
source: "sdk",
|
|
@@ -2433,7 +2440,10 @@ var BitfabOpenAITracingProcessor = class {
|
|
|
2433
2440
|
});
|
|
2434
2441
|
}
|
|
2435
2442
|
try {
|
|
2436
|
-
|
|
2443
|
+
const response = span.spanData?._response;
|
|
2444
|
+
if (response !== void 0) {
|
|
2445
|
+
spanData.response = response;
|
|
2446
|
+
}
|
|
2437
2447
|
} catch (error) {
|
|
2438
2448
|
errors.push({
|
|
2439
2449
|
source: "sdk",
|
|
@@ -3147,11 +3157,11 @@ var Bitfab = class {
|
|
|
3147
3157
|
startedAt,
|
|
3148
3158
|
spanType: options.type ?? "custom"
|
|
3149
3159
|
};
|
|
3150
|
-
const sendSpan = async (params) => {
|
|
3160
|
+
const sendSpan = async (params, spanOpts) => {
|
|
3151
3161
|
const replayCtx = getReplayContext();
|
|
3152
3162
|
const persistenceCollector = isRootSpan ? replayCtx?.pendingPersistence : void 0;
|
|
3153
3163
|
let resolvePersistence;
|
|
3154
|
-
if (persistenceCollector) {
|
|
3164
|
+
if (persistenceCollector && !spanOpts?.skipPersistenceRegistration) {
|
|
3155
3165
|
persistenceCollector.push(
|
|
3156
3166
|
new Promise((resolve) => {
|
|
3157
3167
|
resolvePersistence = resolve;
|
|
@@ -3251,11 +3261,41 @@ var Bitfab = class {
|
|
|
3251
3261
|
}
|
|
3252
3262
|
}
|
|
3253
3263
|
}
|
|
3264
|
+
const recordSpan = (result) => {
|
|
3265
|
+
if (options.finalize) {
|
|
3266
|
+
const replayCtx = getReplayContext();
|
|
3267
|
+
const persistenceCollector = isRootSpan ? replayCtx?.pendingPersistence : void 0;
|
|
3268
|
+
let resolvePersistence;
|
|
3269
|
+
if (persistenceCollector) {
|
|
3270
|
+
persistenceCollector.push(
|
|
3271
|
+
new Promise((resolve) => {
|
|
3272
|
+
resolvePersistence = resolve;
|
|
3273
|
+
})
|
|
3274
|
+
);
|
|
3275
|
+
}
|
|
3276
|
+
void Promise.resolve().then(() => options.finalize(result)).then(
|
|
3277
|
+
(output) => sendSpan(
|
|
3278
|
+
{ result: output },
|
|
3279
|
+
{ skipPersistenceRegistration: true }
|
|
3280
|
+
)
|
|
3281
|
+
).catch(
|
|
3282
|
+
(error) => sendSpan(
|
|
3283
|
+
{
|
|
3284
|
+
result: void 0,
|
|
3285
|
+
error: error instanceof Error ? `finalize failed: ${error.message}` : `finalize failed: ${String(error)}`
|
|
3286
|
+
},
|
|
3287
|
+
{ skipPersistenceRegistration: true }
|
|
3288
|
+
)
|
|
3289
|
+
).finally(() => resolvePersistence?.());
|
|
3290
|
+
} else {
|
|
3291
|
+
void sendSpan({ result });
|
|
3292
|
+
}
|
|
3293
|
+
};
|
|
3254
3294
|
const executeWithContext = () => {
|
|
3255
3295
|
const result = fn(...args);
|
|
3256
3296
|
if (result instanceof Promise) {
|
|
3257
3297
|
return result.then((resolvedResult) => {
|
|
3258
|
-
|
|
3298
|
+
recordSpan(resolvedResult);
|
|
3259
3299
|
return resolvedResult;
|
|
3260
3300
|
}).catch((error) => {
|
|
3261
3301
|
void sendSpan({
|
|
@@ -3268,7 +3308,7 @@ var Bitfab = class {
|
|
|
3268
3308
|
if (isAsyncGenerator(result)) {
|
|
3269
3309
|
return wrapAsyncGenerator(result, newStack, sendSpan);
|
|
3270
3310
|
}
|
|
3271
|
-
|
|
3311
|
+
recordSpan(result);
|
|
3272
3312
|
return result;
|
|
3273
3313
|
};
|
|
3274
3314
|
return runWithSpanStack(newStack, executeWithContext);
|
|
@@ -3551,6 +3591,54 @@ var BitfabFunction = class {
|
|
|
3551
3591
|
);
|
|
3552
3592
|
}
|
|
3553
3593
|
};
|
|
3594
|
+
|
|
3595
|
+
// src/finalizers.ts
|
|
3596
|
+
async function settle(value) {
|
|
3597
|
+
try {
|
|
3598
|
+
return await value;
|
|
3599
|
+
} catch {
|
|
3600
|
+
return void 0;
|
|
3601
|
+
}
|
|
3602
|
+
}
|
|
3603
|
+
async function aiSdk(result) {
|
|
3604
|
+
const r = result ?? {};
|
|
3605
|
+
const [text, usage, totalUsage, finishReason, toolCalls, toolResults] = await Promise.all([
|
|
3606
|
+
settle(r.text),
|
|
3607
|
+
settle(r.usage),
|
|
3608
|
+
settle(r.totalUsage),
|
|
3609
|
+
settle(r.finishReason),
|
|
3610
|
+
settle(r.toolCalls),
|
|
3611
|
+
settle(r.toolResults)
|
|
3612
|
+
]);
|
|
3613
|
+
return {
|
|
3614
|
+
text,
|
|
3615
|
+
usage: totalUsage ?? usage,
|
|
3616
|
+
finishReason,
|
|
3617
|
+
toolCalls,
|
|
3618
|
+
toolResults
|
|
3619
|
+
};
|
|
3620
|
+
}
|
|
3621
|
+
async function readableStream(stream, onLive) {
|
|
3622
|
+
const [live, copy] = stream.tee();
|
|
3623
|
+
onLive(live);
|
|
3624
|
+
const chunks = [];
|
|
3625
|
+
const reader = copy.getReader();
|
|
3626
|
+
try {
|
|
3627
|
+
for (; ; ) {
|
|
3628
|
+
const { done, value } = await reader.read();
|
|
3629
|
+
if (done) {
|
|
3630
|
+
break;
|
|
3631
|
+
}
|
|
3632
|
+
chunks.push(value);
|
|
3633
|
+
}
|
|
3634
|
+
} catch {
|
|
3635
|
+
}
|
|
3636
|
+
return { chunks };
|
|
3637
|
+
}
|
|
3638
|
+
var finalizers = {
|
|
3639
|
+
aiSdk,
|
|
3640
|
+
readableStream
|
|
3641
|
+
};
|
|
3554
3642
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3555
3643
|
0 && (module.exports = {
|
|
3556
3644
|
Bitfab,
|
|
@@ -3564,6 +3652,7 @@ var BitfabFunction = class {
|
|
|
3564
3652
|
ReplayEnvironment,
|
|
3565
3653
|
SUPPORTED_PROVIDERS,
|
|
3566
3654
|
__version__,
|
|
3655
|
+
finalizers,
|
|
3567
3656
|
flushTraces,
|
|
3568
3657
|
getCurrentSpan,
|
|
3569
3658
|
getCurrentTrace
|