@sentrial/sdk 0.3.0 → 0.3.2
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/index.cjs +86 -76
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +86 -76
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1108,17 +1108,6 @@ function wrapStreamText(originalFn, client, config) {
|
|
|
1108
1108
|
const completionTokens = usage?.completionTokens || 0;
|
|
1109
1109
|
const totalTokens = usage?.totalTokens || promptTokens + completionTokens;
|
|
1110
1110
|
const cost = calculateCostForCall(provider, modelId, promptTokens, completionTokens);
|
|
1111
|
-
await client.trackEvent({
|
|
1112
|
-
sessionId: sid,
|
|
1113
|
-
eventType: "llm_call",
|
|
1114
|
-
eventData: {
|
|
1115
|
-
model: modelId,
|
|
1116
|
-
provider,
|
|
1117
|
-
prompt_tokens: promptTokens,
|
|
1118
|
-
completion_tokens: completionTokens,
|
|
1119
|
-
total_tokens: totalTokens
|
|
1120
|
-
}
|
|
1121
|
-
});
|
|
1122
1111
|
await client.completeSession({
|
|
1123
1112
|
sessionId: sid,
|
|
1124
1113
|
success: true,
|
|
@@ -1130,41 +1119,48 @@ function wrapStreamText(originalFn, client, config) {
|
|
|
1130
1119
|
totalTokens
|
|
1131
1120
|
});
|
|
1132
1121
|
}
|
|
1122
|
+
const originalTextStream = result.textStream;
|
|
1123
|
+
let wrappedTextStream = null;
|
|
1124
|
+
const proxied = new Proxy(result, {
|
|
1125
|
+
get(target, prop, receiver) {
|
|
1126
|
+
if (prop === "textStream") {
|
|
1127
|
+
if (!wrappedTextStream) {
|
|
1128
|
+
let fullText = "";
|
|
1129
|
+
wrappedTextStream = (async function* () {
|
|
1130
|
+
try {
|
|
1131
|
+
for await (const chunk of originalTextStream) {
|
|
1132
|
+
fullText += chunk;
|
|
1133
|
+
yield chunk;
|
|
1134
|
+
}
|
|
1135
|
+
await trackCompletion(fullText);
|
|
1136
|
+
} catch (error) {
|
|
1137
|
+
await trackCompletion(
|
|
1138
|
+
fullText,
|
|
1139
|
+
error instanceof Error ? error : new Error(String(error))
|
|
1140
|
+
);
|
|
1141
|
+
throw error;
|
|
1142
|
+
}
|
|
1143
|
+
})();
|
|
1144
|
+
}
|
|
1145
|
+
return wrappedTextStream;
|
|
1146
|
+
}
|
|
1147
|
+
return Reflect.get(target, prop, receiver);
|
|
1148
|
+
}
|
|
1149
|
+
});
|
|
1133
1150
|
const textProp = result.text;
|
|
1134
1151
|
if (typeof textProp === "string") {
|
|
1135
1152
|
trackCompletion(textProp).catch(() => {
|
|
1136
1153
|
});
|
|
1137
1154
|
} else if (textProp != null && typeof textProp.then === "function") {
|
|
1138
|
-
|
|
1139
|
-
result.text = originalTextPromise.then((text) => {
|
|
1155
|
+
textProp.then((text) => {
|
|
1140
1156
|
trackCompletion(text).catch(() => {
|
|
1141
1157
|
});
|
|
1142
|
-
return text;
|
|
1143
1158
|
}).catch((err) => {
|
|
1144
1159
|
trackCompletion("", err instanceof Error ? err : new Error(String(err))).catch(() => {
|
|
1145
1160
|
});
|
|
1146
|
-
throw err;
|
|
1147
1161
|
});
|
|
1148
|
-
} else {
|
|
1149
|
-
const originalTextStream = result.textStream;
|
|
1150
|
-
let fullText = "";
|
|
1151
|
-
result.textStream = (async function* () {
|
|
1152
|
-
try {
|
|
1153
|
-
for await (const chunk of originalTextStream) {
|
|
1154
|
-
fullText += chunk;
|
|
1155
|
-
yield chunk;
|
|
1156
|
-
}
|
|
1157
|
-
await trackCompletion(fullText);
|
|
1158
|
-
} catch (error) {
|
|
1159
|
-
await trackCompletion(
|
|
1160
|
-
"",
|
|
1161
|
-
error instanceof Error ? error : new Error(String(error))
|
|
1162
|
-
);
|
|
1163
|
-
throw error;
|
|
1164
|
-
}
|
|
1165
|
-
})();
|
|
1166
1162
|
}
|
|
1167
|
-
return
|
|
1163
|
+
return proxied;
|
|
1168
1164
|
};
|
|
1169
1165
|
}
|
|
1170
1166
|
function wrapGenerateObject(originalFn, client, config) {
|
|
@@ -1251,50 +1247,64 @@ function wrapStreamObject(originalFn, client, config) {
|
|
|
1251
1247
|
}
|
|
1252
1248
|
})();
|
|
1253
1249
|
const result = originalFn(params);
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1250
|
+
const originalObjectPromise = result.object;
|
|
1251
|
+
if (originalObjectPromise && typeof originalObjectPromise.then === "function") {
|
|
1252
|
+
let tracked = false;
|
|
1253
|
+
let wrappedObjectPromise = null;
|
|
1254
|
+
return new Proxy(result, {
|
|
1255
|
+
get(target, prop, receiver) {
|
|
1256
|
+
if (prop === "object") {
|
|
1257
|
+
if (!wrappedObjectPromise) {
|
|
1258
|
+
wrappedObjectPromise = originalObjectPromise.then(async (obj) => {
|
|
1259
|
+
if (tracked) return obj;
|
|
1260
|
+
tracked = true;
|
|
1261
|
+
const durationMs = Date.now() - startTime;
|
|
1262
|
+
const sid = await sessionPromise;
|
|
1263
|
+
if (!sid) return obj;
|
|
1264
|
+
let usage;
|
|
1265
|
+
try {
|
|
1266
|
+
usage = result.usage ? await result.usage : void 0;
|
|
1267
|
+
} catch {
|
|
1268
|
+
}
|
|
1269
|
+
const promptTokens = usage?.promptTokens || 0;
|
|
1270
|
+
const completionTokens = usage?.completionTokens || 0;
|
|
1271
|
+
const totalTokens = usage?.totalTokens || promptTokens + completionTokens;
|
|
1272
|
+
const cost = calculateCostForCall(provider, modelId, promptTokens, completionTokens);
|
|
1273
|
+
await client.completeSession({
|
|
1274
|
+
sessionId: sid,
|
|
1275
|
+
success: true,
|
|
1276
|
+
output: JSON.stringify(obj),
|
|
1277
|
+
durationMs,
|
|
1278
|
+
estimatedCost: cost,
|
|
1279
|
+
promptTokens,
|
|
1280
|
+
completionTokens,
|
|
1281
|
+
totalTokens
|
|
1282
|
+
});
|
|
1283
|
+
return obj;
|
|
1284
|
+
}).catch(async (error) => {
|
|
1285
|
+
if (tracked) throw error;
|
|
1286
|
+
tracked = true;
|
|
1287
|
+
const durationMs = Date.now() - startTime;
|
|
1288
|
+
const sid = await sessionPromise;
|
|
1289
|
+
if (!sid) throw error;
|
|
1290
|
+
await client.trackError({
|
|
1291
|
+
sessionId: sid,
|
|
1292
|
+
errorType: error instanceof Error ? error.name : "Error",
|
|
1293
|
+
errorMessage: error instanceof Error ? error.message : "Unknown error"
|
|
1294
|
+
});
|
|
1295
|
+
await client.completeSession({
|
|
1296
|
+
sessionId: sid,
|
|
1297
|
+
success: false,
|
|
1298
|
+
failureReason: error instanceof Error ? error.message : "Unknown error",
|
|
1299
|
+
durationMs
|
|
1300
|
+
});
|
|
1301
|
+
throw error;
|
|
1302
|
+
});
|
|
1303
|
+
}
|
|
1304
|
+
return wrappedObjectPromise;
|
|
1264
1305
|
}
|
|
1265
|
-
|
|
1266
|
-
const completionTokens = usage?.completionTokens || 0;
|
|
1267
|
-
const totalTokens = usage?.totalTokens || promptTokens + completionTokens;
|
|
1268
|
-
const cost = calculateCostForCall(provider, modelId, promptTokens, completionTokens);
|
|
1269
|
-
await client.completeSession({
|
|
1270
|
-
sessionId: sid,
|
|
1271
|
-
success: true,
|
|
1272
|
-
output: JSON.stringify(obj),
|
|
1273
|
-
durationMs,
|
|
1274
|
-
estimatedCost: cost,
|
|
1275
|
-
promptTokens,
|
|
1276
|
-
completionTokens,
|
|
1277
|
-
totalTokens
|
|
1278
|
-
});
|
|
1279
|
-
}
|
|
1280
|
-
return obj;
|
|
1281
|
-
}).catch(async (error) => {
|
|
1282
|
-
const durationMs = Date.now() - startTime;
|
|
1283
|
-
const sid = await sessionPromise;
|
|
1284
|
-
if (sid) {
|
|
1285
|
-
await client.trackError({
|
|
1286
|
-
sessionId: sid,
|
|
1287
|
-
errorType: error instanceof Error ? error.name : "Error",
|
|
1288
|
-
errorMessage: error instanceof Error ? error.message : "Unknown error"
|
|
1289
|
-
});
|
|
1290
|
-
await client.completeSession({
|
|
1291
|
-
sessionId: sid,
|
|
1292
|
-
success: false,
|
|
1293
|
-
failureReason: error instanceof Error ? error.message : "Unknown error",
|
|
1294
|
-
durationMs
|
|
1295
|
-
});
|
|
1306
|
+
return Reflect.get(target, prop, receiver);
|
|
1296
1307
|
}
|
|
1297
|
-
throw error;
|
|
1298
1308
|
});
|
|
1299
1309
|
}
|
|
1300
1310
|
return result;
|