@browserbasehq/stagehand 3.0.2 → 3.0.3-alpha-c76ade009ef81208accae6475ec4707d3906e566
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.d.ts +13 -1
- package/dist/index.js +149 -40
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1132,6 +1132,8 @@ interface AgentResult {
|
|
|
1132
1132
|
usage?: {
|
|
1133
1133
|
input_tokens: number;
|
|
1134
1134
|
output_tokens: number;
|
|
1135
|
+
reasoning_tokens?: number;
|
|
1136
|
+
cached_input_tokens?: number;
|
|
1135
1137
|
inference_time_ms: number;
|
|
1136
1138
|
};
|
|
1137
1139
|
}
|
|
@@ -1346,18 +1348,28 @@ declare enum V3FunctionName {
|
|
|
1346
1348
|
interface StagehandMetrics {
|
|
1347
1349
|
actPromptTokens: number;
|
|
1348
1350
|
actCompletionTokens: number;
|
|
1351
|
+
actReasoningTokens: number;
|
|
1352
|
+
actCachedInputTokens: number;
|
|
1349
1353
|
actInferenceTimeMs: number;
|
|
1350
1354
|
extractPromptTokens: number;
|
|
1351
1355
|
extractCompletionTokens: number;
|
|
1356
|
+
extractReasoningTokens: number;
|
|
1357
|
+
extractCachedInputTokens: number;
|
|
1352
1358
|
extractInferenceTimeMs: number;
|
|
1353
1359
|
observePromptTokens: number;
|
|
1354
1360
|
observeCompletionTokens: number;
|
|
1361
|
+
observeReasoningTokens: number;
|
|
1362
|
+
observeCachedInputTokens: number;
|
|
1355
1363
|
observeInferenceTimeMs: number;
|
|
1356
1364
|
agentPromptTokens: number;
|
|
1357
1365
|
agentCompletionTokens: number;
|
|
1366
|
+
agentReasoningTokens: number;
|
|
1367
|
+
agentCachedInputTokens: number;
|
|
1358
1368
|
agentInferenceTimeMs: number;
|
|
1359
1369
|
totalPromptTokens: number;
|
|
1360
1370
|
totalCompletionTokens: number;
|
|
1371
|
+
totalReasoningTokens: number;
|
|
1372
|
+
totalCachedInputTokens: number;
|
|
1361
1373
|
totalInferenceTimeMs: number;
|
|
1362
1374
|
}
|
|
1363
1375
|
|
|
@@ -1898,7 +1910,7 @@ declare class V3 {
|
|
|
1898
1910
|
*/
|
|
1899
1911
|
get history(): Promise<ReadonlyArray<HistoryEntry>>;
|
|
1900
1912
|
addToHistory(method: HistoryEntry["method"], parameters: unknown, result?: unknown): void;
|
|
1901
|
-
updateMetrics(functionName: V3FunctionName, promptTokens: number, completionTokens: number, inferenceTimeMs: number): void;
|
|
1913
|
+
updateMetrics(functionName: V3FunctionName, promptTokens: number, completionTokens: number, reasoningTokens: number, cachedInputTokens: number, inferenceTimeMs: number): void;
|
|
1902
1914
|
private updateTotalMetrics;
|
|
1903
1915
|
private _immediateShutdown;
|
|
1904
1916
|
private static _installProcessGuards;
|
package/dist/index.js
CHANGED
|
@@ -85,7 +85,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
85
85
|
var STAGEHAND_VERSION;
|
|
86
86
|
var init_version = __esm({
|
|
87
87
|
"lib/version.ts"() {
|
|
88
|
-
STAGEHAND_VERSION = "3.0.
|
|
88
|
+
STAGEHAND_VERSION = "3.0.3-alpha-c76ade009ef81208accae6475ec4707d3906e566";
|
|
89
89
|
}
|
|
90
90
|
});
|
|
91
91
|
|
|
@@ -8983,6 +8983,8 @@ var AgentCache = class {
|
|
|
8983
8983
|
result.usage = {
|
|
8984
8984
|
input_tokens: 0,
|
|
8985
8985
|
output_tokens: 0,
|
|
8986
|
+
reasoning_tokens: 0,
|
|
8987
|
+
cached_input_tokens: 0,
|
|
8986
8988
|
inference_time_ms: 0
|
|
8987
8989
|
};
|
|
8988
8990
|
result.metadata = __spreadProps(__spreadValues({}, (_b = result.metadata) != null ? _b : {}), {
|
|
@@ -9457,7 +9459,7 @@ function extract(_0) {
|
|
|
9457
9459
|
userProvidedInstructions,
|
|
9458
9460
|
logInferenceToFile = false
|
|
9459
9461
|
}) {
|
|
9460
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
9462
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
|
|
9461
9463
|
const metadataSchema = import_v32.z.object({
|
|
9462
9464
|
progress: import_v32.z.string().describe(
|
|
9463
9465
|
"progress of what has been extracted so far, as concise as possible"
|
|
@@ -9521,6 +9523,8 @@ function extract(_0) {
|
|
|
9521
9523
|
LLM_output_file: extractResponseFile,
|
|
9522
9524
|
prompt_tokens: (_a = extractUsage == null ? void 0 : extractUsage.prompt_tokens) != null ? _a : 0,
|
|
9523
9525
|
completion_tokens: (_b = extractUsage == null ? void 0 : extractUsage.completion_tokens) != null ? _b : 0,
|
|
9526
|
+
reasoning_tokens: (_c = extractUsage == null ? void 0 : extractUsage.reasoning_tokens) != null ? _c : 0,
|
|
9527
|
+
cached_input_tokens: (_d = extractUsage == null ? void 0 : extractUsage.cached_input_tokens) != null ? _d : 0,
|
|
9524
9528
|
inference_time_ms: extractEndTime - extractStartTime
|
|
9525
9529
|
});
|
|
9526
9530
|
}
|
|
@@ -9582,14 +9586,18 @@ function extract(_0) {
|
|
|
9582
9586
|
timestamp: metadataCallTimestamp,
|
|
9583
9587
|
LLM_input_file: metadataCallFile,
|
|
9584
9588
|
LLM_output_file: metadataResponseFile,
|
|
9585
|
-
prompt_tokens: (
|
|
9586
|
-
completion_tokens: (
|
|
9589
|
+
prompt_tokens: (_e = metadataResponseUsage == null ? void 0 : metadataResponseUsage.prompt_tokens) != null ? _e : 0,
|
|
9590
|
+
completion_tokens: (_f = metadataResponseUsage == null ? void 0 : metadataResponseUsage.completion_tokens) != null ? _f : 0,
|
|
9591
|
+
reasoning_tokens: (_g = metadataResponseUsage == null ? void 0 : metadataResponseUsage.reasoning_tokens) != null ? _g : 0,
|
|
9592
|
+
cached_input_tokens: (_h = metadataResponseUsage == null ? void 0 : metadataResponseUsage.cached_input_tokens) != null ? _h : 0,
|
|
9587
9593
|
inference_time_ms: metadataEndTime - metadataStartTime
|
|
9588
9594
|
});
|
|
9589
9595
|
}
|
|
9590
|
-
const totalPromptTokens = ((
|
|
9591
|
-
const totalCompletionTokens = ((
|
|
9596
|
+
const totalPromptTokens = ((_i = extractUsage == null ? void 0 : extractUsage.prompt_tokens) != null ? _i : 0) + ((_j = metadataResponseUsage == null ? void 0 : metadataResponseUsage.prompt_tokens) != null ? _j : 0);
|
|
9597
|
+
const totalCompletionTokens = ((_k = extractUsage == null ? void 0 : extractUsage.completion_tokens) != null ? _k : 0) + ((_l = metadataResponseUsage == null ? void 0 : metadataResponseUsage.completion_tokens) != null ? _l : 0);
|
|
9592
9598
|
const totalInferenceTimeMs = extractEndTime - extractStartTime + (metadataEndTime - metadataStartTime);
|
|
9599
|
+
const totalReasoningTokens = ((_m = extractUsage == null ? void 0 : extractUsage.reasoning_tokens) != null ? _m : 0) + ((_n = metadataResponseUsage == null ? void 0 : metadataResponseUsage.reasoning_tokens) != null ? _n : 0);
|
|
9600
|
+
const totalCachedInputTokens = ((_o = extractUsage == null ? void 0 : extractUsage.cached_input_tokens) != null ? _o : 0) + ((_p = metadataResponseUsage == null ? void 0 : metadataResponseUsage.cached_input_tokens) != null ? _p : 0);
|
|
9593
9601
|
return __spreadProps(__spreadValues({}, extractedData), {
|
|
9594
9602
|
metadata: {
|
|
9595
9603
|
completed: metadataResponseCompleted,
|
|
@@ -9597,6 +9605,8 @@ function extract(_0) {
|
|
|
9597
9605
|
},
|
|
9598
9606
|
prompt_tokens: totalPromptTokens,
|
|
9599
9607
|
completion_tokens: totalCompletionTokens,
|
|
9608
|
+
reasoning_tokens: totalReasoningTokens,
|
|
9609
|
+
cached_input_tokens: totalCachedInputTokens,
|
|
9600
9610
|
inference_time_ms: totalInferenceTimeMs
|
|
9601
9611
|
});
|
|
9602
9612
|
});
|
|
@@ -9610,7 +9620,7 @@ function observe(_0) {
|
|
|
9610
9620
|
logger,
|
|
9611
9621
|
logInferenceToFile = false
|
|
9612
9622
|
}) {
|
|
9613
|
-
var _a, _b, _c, _d;
|
|
9623
|
+
var _a, _b, _c, _d, _e, _f;
|
|
9614
9624
|
const isGPT5 = llmClient.modelName.includes("gpt-5");
|
|
9615
9625
|
const observeSchema = import_v32.z.object({
|
|
9616
9626
|
elements: import_v32.z.array(
|
|
@@ -9670,6 +9680,8 @@ function observe(_0) {
|
|
|
9670
9680
|
const { data: observeData, usage: observeUsage } = rawResponse;
|
|
9671
9681
|
const promptTokens = (_a = observeUsage == null ? void 0 : observeUsage.prompt_tokens) != null ? _a : 0;
|
|
9672
9682
|
const completionTokens = (_b = observeUsage == null ? void 0 : observeUsage.completion_tokens) != null ? _b : 0;
|
|
9683
|
+
const reasoningTokens = (_c = observeUsage == null ? void 0 : observeUsage.reasoning_tokens) != null ? _c : 0;
|
|
9684
|
+
const cachedInputTokens = (_d = observeUsage == null ? void 0 : observeUsage.cached_input_tokens) != null ? _d : 0;
|
|
9673
9685
|
let responseFile = "";
|
|
9674
9686
|
if (logInferenceToFile) {
|
|
9675
9687
|
const { fileName: responseFileName } = writeTimestampedTxtFile(
|
|
@@ -9688,10 +9700,12 @@ function observe(_0) {
|
|
|
9688
9700
|
LLM_output_file: responseFile,
|
|
9689
9701
|
prompt_tokens: promptTokens,
|
|
9690
9702
|
completion_tokens: completionTokens,
|
|
9703
|
+
reasoning_tokens: reasoningTokens,
|
|
9704
|
+
cached_input_tokens: cachedInputTokens,
|
|
9691
9705
|
inference_time_ms: usageTimeMs
|
|
9692
9706
|
});
|
|
9693
9707
|
}
|
|
9694
|
-
const parsedElements = (
|
|
9708
|
+
const parsedElements = (_f = (_e = observeData.elements) == null ? void 0 : _e.map((el) => {
|
|
9695
9709
|
const base = {
|
|
9696
9710
|
elementId: el.elementId,
|
|
9697
9711
|
description: String(el.description),
|
|
@@ -9699,11 +9713,13 @@ function observe(_0) {
|
|
|
9699
9713
|
arguments: el.arguments
|
|
9700
9714
|
};
|
|
9701
9715
|
return base;
|
|
9702
|
-
})) != null ?
|
|
9716
|
+
})) != null ? _f : [];
|
|
9703
9717
|
return {
|
|
9704
9718
|
elements: parsedElements,
|
|
9705
9719
|
prompt_tokens: promptTokens,
|
|
9706
9720
|
completion_tokens: completionTokens,
|
|
9721
|
+
reasoning_tokens: reasoningTokens,
|
|
9722
|
+
cached_input_tokens: cachedInputTokens,
|
|
9707
9723
|
inference_time_ms: usageTimeMs
|
|
9708
9724
|
};
|
|
9709
9725
|
});
|
|
@@ -9717,7 +9733,7 @@ function act(_0) {
|
|
|
9717
9733
|
logger,
|
|
9718
9734
|
logInferenceToFile = false
|
|
9719
9735
|
}) {
|
|
9720
|
-
var _a, _b;
|
|
9736
|
+
var _a, _b, _c, _d;
|
|
9721
9737
|
const isGPT5 = llmClient.modelName.includes("gpt-5");
|
|
9722
9738
|
const actSchema = import_v32.z.object({
|
|
9723
9739
|
elementId: import_v32.z.string().describe(
|
|
@@ -9772,6 +9788,8 @@ function act(_0) {
|
|
|
9772
9788
|
const { data: actData, usage: actUsage } = rawResponse;
|
|
9773
9789
|
const promptTokens = (_a = actUsage == null ? void 0 : actUsage.prompt_tokens) != null ? _a : 0;
|
|
9774
9790
|
const completionTokens = (_b = actUsage == null ? void 0 : actUsage.completion_tokens) != null ? _b : 0;
|
|
9791
|
+
const reasoningTokens = (_c = actUsage == null ? void 0 : actUsage.reasoning_tokens) != null ? _c : 0;
|
|
9792
|
+
const cachedInputTokens = (_d = actUsage == null ? void 0 : actUsage.cached_input_tokens) != null ? _d : 0;
|
|
9775
9793
|
let responseFile = "";
|
|
9776
9794
|
if (logInferenceToFile) {
|
|
9777
9795
|
const { fileName: responseFileName } = writeTimestampedTxtFile(
|
|
@@ -9790,6 +9808,8 @@ function act(_0) {
|
|
|
9790
9808
|
LLM_output_file: responseFile,
|
|
9791
9809
|
prompt_tokens: promptTokens,
|
|
9792
9810
|
completion_tokens: completionTokens,
|
|
9811
|
+
reasoning_tokens: reasoningTokens,
|
|
9812
|
+
cached_input_tokens: cachedInputTokens,
|
|
9793
9813
|
inference_time_ms: usageTimeMs
|
|
9794
9814
|
});
|
|
9795
9815
|
}
|
|
@@ -9803,6 +9823,8 @@ function act(_0) {
|
|
|
9803
9823
|
element: parsedElement,
|
|
9804
9824
|
prompt_tokens: promptTokens,
|
|
9805
9825
|
completion_tokens: completionTokens,
|
|
9826
|
+
reasoning_tokens: reasoningTokens,
|
|
9827
|
+
cached_input_tokens: cachedInputTokens,
|
|
9806
9828
|
inference_time_ms: usageTimeMs,
|
|
9807
9829
|
twoStep: actData.twoStep
|
|
9808
9830
|
};
|
|
@@ -10493,7 +10515,7 @@ var ActHandler = class {
|
|
|
10493
10515
|
const { instruction, page, variables, timeout, model } = params;
|
|
10494
10516
|
const llmClient = this.resolveLlmClient(model);
|
|
10495
10517
|
const doObserveAndAct = () => __async(this, null, function* () {
|
|
10496
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
10518
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
|
10497
10519
|
yield waitForDomNetworkQuiet(
|
|
10498
10520
|
page.mainFrame(),
|
|
10499
10521
|
this.defaultDomSettleTimeoutMs
|
|
@@ -10518,12 +10540,16 @@ var ActHandler = class {
|
|
|
10518
10540
|
});
|
|
10519
10541
|
const actPromptTokens = (_b = actInferenceResponse.prompt_tokens) != null ? _b : 0;
|
|
10520
10542
|
const actCompletionTokens = (_c = actInferenceResponse.completion_tokens) != null ? _c : 0;
|
|
10521
|
-
const
|
|
10522
|
-
(_e =
|
|
10543
|
+
const actReasoningTokens = (_d = actInferenceResponse.reasoning_tokens) != null ? _d : 0;
|
|
10544
|
+
const actCachedInputTokens = (_e = actInferenceResponse.cached_input_tokens) != null ? _e : 0;
|
|
10545
|
+
const actInferenceTimeMs = (_f = actInferenceResponse.inference_time_ms) != null ? _f : 0;
|
|
10546
|
+
(_g = this.onMetrics) == null ? void 0 : _g.call(
|
|
10523
10547
|
this,
|
|
10524
10548
|
"ACT" /* ACT */,
|
|
10525
10549
|
actPromptTokens,
|
|
10526
10550
|
actCompletionTokens,
|
|
10551
|
+
actReasoningTokens,
|
|
10552
|
+
actCachedInputTokens,
|
|
10527
10553
|
actInferenceTimeMs
|
|
10528
10554
|
);
|
|
10529
10555
|
const raw = actInferenceResponse.element;
|
|
@@ -10588,7 +10614,7 @@ var ActHandler = class {
|
|
|
10588
10614
|
if (!diffedTree.trim()) {
|
|
10589
10615
|
diffedTree = combinedTree2;
|
|
10590
10616
|
}
|
|
10591
|
-
const combinedXpathMap2 = (
|
|
10617
|
+
const combinedXpathMap2 = (_h = secondSnapshot.combinedXpathMap) != null ? _h : {};
|
|
10592
10618
|
const previousAction = `method: ${chosen.method}, description: ${chosen.description}, arguments: ${chosen.arguments}`;
|
|
10593
10619
|
const stepTwoInstructions = buildStepTwoPrompt(
|
|
10594
10620
|
instruction,
|
|
@@ -10606,12 +10632,14 @@ var ActHandler = class {
|
|
|
10606
10632
|
logger: v3Logger,
|
|
10607
10633
|
logInferenceToFile: this.logInferenceToFile
|
|
10608
10634
|
});
|
|
10609
|
-
(
|
|
10635
|
+
(_n = this.onMetrics) == null ? void 0 : _n.call(
|
|
10610
10636
|
this,
|
|
10611
10637
|
"ACT" /* ACT */,
|
|
10612
|
-
(
|
|
10613
|
-
(
|
|
10614
|
-
(
|
|
10638
|
+
(_i = action2.prompt_tokens) != null ? _i : 0,
|
|
10639
|
+
(_j = action2.completion_tokens) != null ? _j : 0,
|
|
10640
|
+
(_k = action2.reasoning_tokens) != null ? _k : 0,
|
|
10641
|
+
(_l = action2.cached_input_tokens) != null ? _l : 0,
|
|
10642
|
+
(_m = action2.inference_time_ms) != null ? _m : 0
|
|
10615
10643
|
);
|
|
10616
10644
|
const raw2 = action2.element;
|
|
10617
10645
|
const result2 = (() => {
|
|
@@ -10679,7 +10707,7 @@ var ActHandler = class {
|
|
|
10679
10707
|
}
|
|
10680
10708
|
actFromObserveResult(action, page, domSettleTimeoutMs, llmClientOverride) {
|
|
10681
10709
|
return __async(this, null, function* () {
|
|
10682
|
-
var _a, _b, _c, _d, _e, _f;
|
|
10710
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
10683
10711
|
const settleTimeout = domSettleTimeoutMs != null ? domSettleTimeoutMs : this.defaultDomSettleTimeoutMs;
|
|
10684
10712
|
const effectiveClient = llmClientOverride != null ? llmClientOverride : this.llmClient;
|
|
10685
10713
|
const method = (_a = action.method) == null ? void 0 : _a.trim();
|
|
@@ -10756,12 +10784,14 @@ var ActHandler = class {
|
|
|
10756
10784
|
logger: v3Logger,
|
|
10757
10785
|
logInferenceToFile: this.logInferenceToFile
|
|
10758
10786
|
});
|
|
10759
|
-
(
|
|
10787
|
+
(_g = this.onMetrics) == null ? void 0 : _g.call(
|
|
10760
10788
|
this,
|
|
10761
10789
|
"ACT" /* ACT */,
|
|
10762
10790
|
(_b = actInferenceResponse.prompt_tokens) != null ? _b : 0,
|
|
10763
10791
|
(_c = actInferenceResponse.completion_tokens) != null ? _c : 0,
|
|
10764
|
-
(_d = actInferenceResponse.
|
|
10792
|
+
(_d = actInferenceResponse.reasoning_tokens) != null ? _d : 0,
|
|
10793
|
+
(_e = actInferenceResponse.cached_input_tokens) != null ? _e : 0,
|
|
10794
|
+
(_f = actInferenceResponse.inference_time_ms) != null ? _f : 0
|
|
10765
10795
|
);
|
|
10766
10796
|
const fallback = actInferenceResponse.element;
|
|
10767
10797
|
if (!fallback) {
|
|
@@ -10775,7 +10805,7 @@ var ActHandler = class {
|
|
|
10775
10805
|
let newSelector = action.selector;
|
|
10776
10806
|
if (typeof fallback.elementId === "string") {
|
|
10777
10807
|
const enc = fallback.elementId;
|
|
10778
|
-
const rawXp = ((
|
|
10808
|
+
const rawXp = ((_h = snapshot.combinedXpathMap) != null ? _h : {})[enc];
|
|
10779
10809
|
const trimmed = trimTrailingTextNode(rawXp);
|
|
10780
10810
|
if (trimmed) newSelector = `xpath=${trimmed}`;
|
|
10781
10811
|
}
|
|
@@ -10894,11 +10924,15 @@ var ExtractHandler = class {
|
|
|
10894
10924
|
metadata: { completed },
|
|
10895
10925
|
prompt_tokens,
|
|
10896
10926
|
completion_tokens,
|
|
10927
|
+
reasoning_tokens = 0,
|
|
10928
|
+
cached_input_tokens = 0,
|
|
10897
10929
|
inference_time_ms
|
|
10898
10930
|
} = _d, rest = __objRest(_d, [
|
|
10899
10931
|
"metadata",
|
|
10900
10932
|
"prompt_tokens",
|
|
10901
10933
|
"completion_tokens",
|
|
10934
|
+
"reasoning_tokens",
|
|
10935
|
+
"cached_input_tokens",
|
|
10902
10936
|
"inference_time_ms"
|
|
10903
10937
|
]);
|
|
10904
10938
|
let output = rest;
|
|
@@ -10923,6 +10957,8 @@ var ExtractHandler = class {
|
|
|
10923
10957
|
"EXTRACT" /* EXTRACT */,
|
|
10924
10958
|
prompt_tokens,
|
|
10925
10959
|
completion_tokens,
|
|
10960
|
+
reasoning_tokens,
|
|
10961
|
+
cached_input_tokens,
|
|
10926
10962
|
inference_time_ms
|
|
10927
10963
|
);
|
|
10928
10964
|
const idToUrl = combinedUrlMap != null ? combinedUrlMap : {};
|
|
@@ -11007,6 +11043,8 @@ var ObserveHandler = class {
|
|
|
11007
11043
|
const {
|
|
11008
11044
|
prompt_tokens = 0,
|
|
11009
11045
|
completion_tokens = 0,
|
|
11046
|
+
reasoning_tokens = 0,
|
|
11047
|
+
cached_input_tokens = 0,
|
|
11010
11048
|
inference_time_ms = 0
|
|
11011
11049
|
} = observationResponse;
|
|
11012
11050
|
(_c = this.onMetrics) == null ? void 0 : _c.call(
|
|
@@ -11014,6 +11052,8 @@ var ObserveHandler = class {
|
|
|
11014
11052
|
"OBSERVE" /* OBSERVE */,
|
|
11015
11053
|
prompt_tokens,
|
|
11016
11054
|
completion_tokens,
|
|
11055
|
+
reasoning_tokens,
|
|
11056
|
+
cached_input_tokens,
|
|
11017
11057
|
inference_time_ms
|
|
11018
11058
|
);
|
|
11019
11059
|
const elementsWithSelectors = (yield Promise.all(
|
|
@@ -11724,6 +11764,8 @@ var V3AgentHandler = class {
|
|
|
11724
11764
|
"AGENT" /* AGENT */,
|
|
11725
11765
|
result.usage.inputTokens || 0,
|
|
11726
11766
|
result.usage.outputTokens || 0,
|
|
11767
|
+
result.usage.reasoningTokens || 0,
|
|
11768
|
+
result.usage.cachedInputTokens || 0,
|
|
11727
11769
|
inferenceTimeMs
|
|
11728
11770
|
);
|
|
11729
11771
|
}
|
|
@@ -11735,6 +11777,8 @@ var V3AgentHandler = class {
|
|
|
11735
11777
|
usage: result.usage ? {
|
|
11736
11778
|
input_tokens: result.usage.inputTokens || 0,
|
|
11737
11779
|
output_tokens: result.usage.outputTokens || 0,
|
|
11780
|
+
reasoning_tokens: result.usage.reasoningTokens || 0,
|
|
11781
|
+
cached_input_tokens: result.usage.cachedInputTokens || 0,
|
|
11738
11782
|
inference_time_ms: inferenceTimeMs
|
|
11739
11783
|
} : void 0
|
|
11740
11784
|
};
|
|
@@ -14091,6 +14135,7 @@ var V3CuaAgentHandler = class {
|
|
|
14091
14135
|
}
|
|
14092
14136
|
execute(optionsOrInstruction) {
|
|
14093
14137
|
return __async(this, null, function* () {
|
|
14138
|
+
var _a, _b;
|
|
14094
14139
|
const options = typeof optionsOrInstruction === "string" ? { instruction: optionsOrInstruction } : optionsOrInstruction;
|
|
14095
14140
|
this.highlightCursor = options.highlightCursor !== false;
|
|
14096
14141
|
const page = yield this.v3.context.awaitActivePage();
|
|
@@ -14123,6 +14168,8 @@ var V3CuaAgentHandler = class {
|
|
|
14123
14168
|
"AGENT" /* AGENT */,
|
|
14124
14169
|
result.usage.input_tokens,
|
|
14125
14170
|
result.usage.output_tokens,
|
|
14171
|
+
(_a = result.usage.reasoning_tokens) != null ? _a : 0,
|
|
14172
|
+
(_b = result.usage.cached_input_tokens) != null ? _b : 0,
|
|
14126
14173
|
inferenceTimeMs
|
|
14127
14174
|
);
|
|
14128
14175
|
}
|
|
@@ -15672,7 +15719,7 @@ var AISdkClient = class extends LLMClient {
|
|
|
15672
15719
|
return __async(this, arguments, function* ({
|
|
15673
15720
|
options
|
|
15674
15721
|
}) {
|
|
15675
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
15722
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s;
|
|
15676
15723
|
(_a = this.logger) == null ? void 0 : _a.call(this, {
|
|
15677
15724
|
category: "aisdk",
|
|
15678
15725
|
message: "creating chat completion",
|
|
@@ -15803,10 +15850,12 @@ var AISdkClient = class extends LLMClient {
|
|
|
15803
15850
|
usage: {
|
|
15804
15851
|
prompt_tokens: (_h = objectResponse.usage.inputTokens) != null ? _h : 0,
|
|
15805
15852
|
completion_tokens: (_i = objectResponse.usage.outputTokens) != null ? _i : 0,
|
|
15806
|
-
|
|
15853
|
+
reasoning_tokens: (_j = objectResponse.usage.reasoningTokens) != null ? _j : 0,
|
|
15854
|
+
cached_input_tokens: (_k = objectResponse.usage.cachedInputTokens) != null ? _k : 0,
|
|
15855
|
+
total_tokens: (_l = objectResponse.usage.totalTokens) != null ? _l : 0
|
|
15807
15856
|
}
|
|
15808
15857
|
};
|
|
15809
|
-
(
|
|
15858
|
+
(_m = this.logger) == null ? void 0 : _m.call(this, {
|
|
15810
15859
|
category: "aisdk",
|
|
15811
15860
|
message: "response",
|
|
15812
15861
|
level: 1,
|
|
@@ -15871,12 +15920,14 @@ var AISdkClient = class extends LLMClient {
|
|
|
15871
15920
|
}
|
|
15872
15921
|
],
|
|
15873
15922
|
usage: {
|
|
15874
|
-
prompt_tokens: (
|
|
15875
|
-
completion_tokens: (
|
|
15876
|
-
|
|
15923
|
+
prompt_tokens: (_n = textResponse.usage.inputTokens) != null ? _n : 0,
|
|
15924
|
+
completion_tokens: (_o = textResponse.usage.outputTokens) != null ? _o : 0,
|
|
15925
|
+
reasoning_tokens: (_p = textResponse.usage.reasoningTokens) != null ? _p : 0,
|
|
15926
|
+
cached_input_tokens: (_q = textResponse.usage.cachedInputTokens) != null ? _q : 0,
|
|
15927
|
+
total_tokens: (_r = textResponse.usage.totalTokens) != null ? _r : 0
|
|
15877
15928
|
}
|
|
15878
15929
|
};
|
|
15879
|
-
(
|
|
15930
|
+
(_s = this.logger) == null ? void 0 : _s.call(this, {
|
|
15880
15931
|
category: "aisdk",
|
|
15881
15932
|
message: "response",
|
|
15882
15933
|
level: 2,
|
|
@@ -38723,7 +38774,7 @@ var AISdkClient2 = class extends LLMClient {
|
|
|
38723
38774
|
return __async(this, arguments, function* ({
|
|
38724
38775
|
options
|
|
38725
38776
|
}) {
|
|
38726
|
-
var _a, _b, _c, _d, _e, _f;
|
|
38777
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
38727
38778
|
const formattedMessages = options.messages.map(
|
|
38728
38779
|
(message) => {
|
|
38729
38780
|
if (Array.isArray(message.content)) {
|
|
@@ -38784,7 +38835,9 @@ var AISdkClient2 = class extends LLMClient {
|
|
|
38784
38835
|
usage: {
|
|
38785
38836
|
prompt_tokens: (_a = response2.usage.inputTokens) != null ? _a : 0,
|
|
38786
38837
|
completion_tokens: (_b = response2.usage.outputTokens) != null ? _b : 0,
|
|
38787
|
-
|
|
38838
|
+
reasoning_tokens: (_c = response2.usage.reasoningTokens) != null ? _c : 0,
|
|
38839
|
+
cached_input_tokens: (_d = response2.usage.cachedInputTokens) != null ? _d : 0,
|
|
38840
|
+
total_tokens: (_e = response2.usage.totalTokens) != null ? _e : 0
|
|
38788
38841
|
}
|
|
38789
38842
|
};
|
|
38790
38843
|
}
|
|
@@ -38803,9 +38856,11 @@ var AISdkClient2 = class extends LLMClient {
|
|
|
38803
38856
|
return {
|
|
38804
38857
|
data: response.text,
|
|
38805
38858
|
usage: {
|
|
38806
|
-
prompt_tokens: (
|
|
38807
|
-
completion_tokens: (
|
|
38808
|
-
|
|
38859
|
+
prompt_tokens: (_f = response.usage.inputTokens) != null ? _f : 0,
|
|
38860
|
+
completion_tokens: (_g = response.usage.outputTokens) != null ? _g : 0,
|
|
38861
|
+
reasoning_tokens: (_h = response.usage.reasoningTokens) != null ? _h : 0,
|
|
38862
|
+
cached_input_tokens: (_i = response.usage.cachedInputTokens) != null ? _i : 0,
|
|
38863
|
+
total_tokens: (_j = response.usage.totalTokens) != null ? _j : 0
|
|
38809
38864
|
}
|
|
38810
38865
|
};
|
|
38811
38866
|
});
|
|
@@ -39879,18 +39934,28 @@ var StagehandAPIClient = class {
|
|
|
39879
39934
|
const metrics = {
|
|
39880
39935
|
actPromptTokens: 0,
|
|
39881
39936
|
actCompletionTokens: 0,
|
|
39937
|
+
actReasoningTokens: 0,
|
|
39938
|
+
actCachedInputTokens: 0,
|
|
39882
39939
|
actInferenceTimeMs: 0,
|
|
39883
39940
|
extractPromptTokens: 0,
|
|
39884
39941
|
extractCompletionTokens: 0,
|
|
39942
|
+
extractReasoningTokens: 0,
|
|
39943
|
+
extractCachedInputTokens: 0,
|
|
39885
39944
|
extractInferenceTimeMs: 0,
|
|
39886
39945
|
observePromptTokens: 0,
|
|
39887
39946
|
observeCompletionTokens: 0,
|
|
39947
|
+
observeReasoningTokens: 0,
|
|
39948
|
+
observeCachedInputTokens: 0,
|
|
39888
39949
|
observeInferenceTimeMs: 0,
|
|
39889
39950
|
agentPromptTokens: 0,
|
|
39890
39951
|
agentCompletionTokens: 0,
|
|
39952
|
+
agentReasoningTokens: 0,
|
|
39953
|
+
agentCachedInputTokens: 0,
|
|
39891
39954
|
agentInferenceTimeMs: 0,
|
|
39892
39955
|
totalPromptTokens: 0,
|
|
39893
39956
|
totalCompletionTokens: 0,
|
|
39957
|
+
totalReasoningTokens: 0,
|
|
39958
|
+
totalCachedInputTokens: 0,
|
|
39894
39959
|
totalInferenceTimeMs: 0
|
|
39895
39960
|
};
|
|
39896
39961
|
const pages = apiData.pages || [];
|
|
@@ -39902,26 +39967,38 @@ var StagehandAPIClient = class {
|
|
|
39902
39967
|
if (tokenUsage) {
|
|
39903
39968
|
const inputTokens = tokenUsage.inputTokens || 0;
|
|
39904
39969
|
const outputTokens = tokenUsage.outputTokens || 0;
|
|
39970
|
+
const reasoningTokens = tokenUsage.reasoningTokens || 0;
|
|
39971
|
+
const cachedInputTokens = tokenUsage.cachedInputTokens || 0;
|
|
39905
39972
|
const timeMs = tokenUsage.timeMs || 0;
|
|
39906
39973
|
if (method === "act") {
|
|
39907
39974
|
metrics.actPromptTokens += inputTokens;
|
|
39908
39975
|
metrics.actCompletionTokens += outputTokens;
|
|
39976
|
+
metrics.actReasoningTokens += reasoningTokens;
|
|
39977
|
+
metrics.actCachedInputTokens += cachedInputTokens;
|
|
39909
39978
|
metrics.actInferenceTimeMs += timeMs;
|
|
39910
39979
|
} else if (method === "extract") {
|
|
39911
39980
|
metrics.extractPromptTokens += inputTokens;
|
|
39912
39981
|
metrics.extractCompletionTokens += outputTokens;
|
|
39982
|
+
metrics.extractReasoningTokens += reasoningTokens;
|
|
39983
|
+
metrics.extractCachedInputTokens += cachedInputTokens;
|
|
39913
39984
|
metrics.extractInferenceTimeMs += timeMs;
|
|
39914
39985
|
} else if (method === "observe") {
|
|
39915
39986
|
metrics.observePromptTokens += inputTokens;
|
|
39916
39987
|
metrics.observeCompletionTokens += outputTokens;
|
|
39988
|
+
metrics.observeReasoningTokens += reasoningTokens;
|
|
39989
|
+
metrics.observeCachedInputTokens += cachedInputTokens;
|
|
39917
39990
|
metrics.observeInferenceTimeMs += timeMs;
|
|
39918
39991
|
} else if (method === "agent") {
|
|
39919
39992
|
metrics.agentPromptTokens += inputTokens;
|
|
39920
39993
|
metrics.agentCompletionTokens += outputTokens;
|
|
39994
|
+
metrics.agentReasoningTokens += reasoningTokens;
|
|
39995
|
+
metrics.agentCachedInputTokens += cachedInputTokens;
|
|
39921
39996
|
metrics.agentInferenceTimeMs += timeMs;
|
|
39922
39997
|
}
|
|
39923
39998
|
metrics.totalPromptTokens += inputTokens;
|
|
39924
39999
|
metrics.totalCompletionTokens += outputTokens;
|
|
40000
|
+
metrics.totalReasoningTokens += reasoningTokens;
|
|
40001
|
+
metrics.totalCachedInputTokens += cachedInputTokens;
|
|
39925
40002
|
metrics.totalInferenceTimeMs += timeMs;
|
|
39926
40003
|
}
|
|
39927
40004
|
}
|
|
@@ -40090,18 +40167,28 @@ var _V3 = class _V3 {
|
|
|
40090
40167
|
this.stagehandMetrics = {
|
|
40091
40168
|
actPromptTokens: 0,
|
|
40092
40169
|
actCompletionTokens: 0,
|
|
40170
|
+
actReasoningTokens: 0,
|
|
40171
|
+
actCachedInputTokens: 0,
|
|
40093
40172
|
actInferenceTimeMs: 0,
|
|
40094
40173
|
extractPromptTokens: 0,
|
|
40095
40174
|
extractCompletionTokens: 0,
|
|
40175
|
+
extractReasoningTokens: 0,
|
|
40176
|
+
extractCachedInputTokens: 0,
|
|
40096
40177
|
extractInferenceTimeMs: 0,
|
|
40097
40178
|
observePromptTokens: 0,
|
|
40098
40179
|
observeCompletionTokens: 0,
|
|
40180
|
+
observeReasoningTokens: 0,
|
|
40181
|
+
observeCachedInputTokens: 0,
|
|
40099
40182
|
observeInferenceTimeMs: 0,
|
|
40100
40183
|
agentPromptTokens: 0,
|
|
40101
40184
|
agentCompletionTokens: 0,
|
|
40185
|
+
agentReasoningTokens: 0,
|
|
40186
|
+
agentCachedInputTokens: 0,
|
|
40102
40187
|
agentInferenceTimeMs: 0,
|
|
40103
40188
|
totalPromptTokens: 0,
|
|
40104
40189
|
totalCompletionTokens: 0,
|
|
40190
|
+
totalReasoningTokens: 0,
|
|
40191
|
+
totalCachedInputTokens: 0,
|
|
40105
40192
|
totalInferenceTimeMs: 0
|
|
40106
40193
|
};
|
|
40107
40194
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
@@ -40285,34 +40372,50 @@ var _V3 = class _V3 {
|
|
|
40285
40372
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
40286
40373
|
});
|
|
40287
40374
|
}
|
|
40288
|
-
updateMetrics(functionName, promptTokens, completionTokens, inferenceTimeMs) {
|
|
40375
|
+
updateMetrics(functionName, promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs) {
|
|
40289
40376
|
switch (functionName) {
|
|
40290
40377
|
case "ACT" /* ACT */:
|
|
40291
40378
|
this.stagehandMetrics.actPromptTokens += promptTokens;
|
|
40292
40379
|
this.stagehandMetrics.actCompletionTokens += completionTokens;
|
|
40380
|
+
this.stagehandMetrics.actReasoningTokens += reasoningTokens;
|
|
40381
|
+
this.stagehandMetrics.actCachedInputTokens += cachedInputTokens;
|
|
40293
40382
|
this.stagehandMetrics.actInferenceTimeMs += inferenceTimeMs;
|
|
40294
40383
|
break;
|
|
40295
40384
|
case "EXTRACT" /* EXTRACT */:
|
|
40296
40385
|
this.stagehandMetrics.extractPromptTokens += promptTokens;
|
|
40297
40386
|
this.stagehandMetrics.extractCompletionTokens += completionTokens;
|
|
40387
|
+
this.stagehandMetrics.extractReasoningTokens += reasoningTokens;
|
|
40388
|
+
this.stagehandMetrics.extractCachedInputTokens += cachedInputTokens;
|
|
40298
40389
|
this.stagehandMetrics.extractInferenceTimeMs += inferenceTimeMs;
|
|
40299
40390
|
break;
|
|
40300
40391
|
case "OBSERVE" /* OBSERVE */:
|
|
40301
40392
|
this.stagehandMetrics.observePromptTokens += promptTokens;
|
|
40302
40393
|
this.stagehandMetrics.observeCompletionTokens += completionTokens;
|
|
40394
|
+
this.stagehandMetrics.observeReasoningTokens += reasoningTokens;
|
|
40395
|
+
this.stagehandMetrics.observeCachedInputTokens += cachedInputTokens;
|
|
40303
40396
|
this.stagehandMetrics.observeInferenceTimeMs += inferenceTimeMs;
|
|
40304
40397
|
break;
|
|
40305
40398
|
case "AGENT" /* AGENT */:
|
|
40306
40399
|
this.stagehandMetrics.agentPromptTokens += promptTokens;
|
|
40307
40400
|
this.stagehandMetrics.agentCompletionTokens += completionTokens;
|
|
40401
|
+
this.stagehandMetrics.agentReasoningTokens += reasoningTokens;
|
|
40402
|
+
this.stagehandMetrics.agentCachedInputTokens += cachedInputTokens;
|
|
40308
40403
|
this.stagehandMetrics.agentInferenceTimeMs += inferenceTimeMs;
|
|
40309
40404
|
break;
|
|
40310
40405
|
}
|
|
40311
|
-
this.updateTotalMetrics(
|
|
40406
|
+
this.updateTotalMetrics(
|
|
40407
|
+
promptTokens,
|
|
40408
|
+
completionTokens,
|
|
40409
|
+
reasoningTokens,
|
|
40410
|
+
cachedInputTokens,
|
|
40411
|
+
inferenceTimeMs
|
|
40412
|
+
);
|
|
40312
40413
|
}
|
|
40313
|
-
updateTotalMetrics(promptTokens, completionTokens, inferenceTimeMs) {
|
|
40414
|
+
updateTotalMetrics(promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs) {
|
|
40314
40415
|
this.stagehandMetrics.totalPromptTokens += promptTokens;
|
|
40315
40416
|
this.stagehandMetrics.totalCompletionTokens += completionTokens;
|
|
40417
|
+
this.stagehandMetrics.totalReasoningTokens += reasoningTokens;
|
|
40418
|
+
this.stagehandMetrics.totalCachedInputTokens += cachedInputTokens;
|
|
40316
40419
|
this.stagehandMetrics.totalInferenceTimeMs += inferenceTimeMs;
|
|
40317
40420
|
}
|
|
40318
40421
|
_immediateShutdown(reason) {
|
|
@@ -40405,10 +40508,12 @@ var _V3 = class _V3 {
|
|
|
40405
40508
|
(_a = this.opts.systemPrompt) != null ? _a : "",
|
|
40406
40509
|
this.logInferenceToFile,
|
|
40407
40510
|
(_b = this.opts.selfHeal) != null ? _b : true,
|
|
40408
|
-
(functionName, promptTokens, completionTokens, inferenceTimeMs) => this.updateMetrics(
|
|
40511
|
+
(functionName, promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs) => this.updateMetrics(
|
|
40409
40512
|
functionName,
|
|
40410
40513
|
promptTokens,
|
|
40411
40514
|
completionTokens,
|
|
40515
|
+
reasoningTokens,
|
|
40516
|
+
cachedInputTokens,
|
|
40412
40517
|
inferenceTimeMs
|
|
40413
40518
|
),
|
|
40414
40519
|
this.domSettleTimeoutMs
|
|
@@ -40421,10 +40526,12 @@ var _V3 = class _V3 {
|
|
|
40421
40526
|
(_c = this.opts.systemPrompt) != null ? _c : "",
|
|
40422
40527
|
this.logInferenceToFile,
|
|
40423
40528
|
this.experimental,
|
|
40424
|
-
(functionName, promptTokens, completionTokens, inferenceTimeMs) => this.updateMetrics(
|
|
40529
|
+
(functionName, promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs) => this.updateMetrics(
|
|
40425
40530
|
functionName,
|
|
40426
40531
|
promptTokens,
|
|
40427
40532
|
completionTokens,
|
|
40533
|
+
reasoningTokens,
|
|
40534
|
+
cachedInputTokens,
|
|
40428
40535
|
inferenceTimeMs
|
|
40429
40536
|
)
|
|
40430
40537
|
);
|
|
@@ -40436,10 +40543,12 @@ var _V3 = class _V3 {
|
|
|
40436
40543
|
(_d = this.opts.systemPrompt) != null ? _d : "",
|
|
40437
40544
|
this.logInferenceToFile,
|
|
40438
40545
|
this.experimental,
|
|
40439
|
-
(functionName, promptTokens, completionTokens, inferenceTimeMs) => this.updateMetrics(
|
|
40546
|
+
(functionName, promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs) => this.updateMetrics(
|
|
40440
40547
|
functionName,
|
|
40441
40548
|
promptTokens,
|
|
40442
40549
|
completionTokens,
|
|
40550
|
+
reasoningTokens,
|
|
40551
|
+
cachedInputTokens,
|
|
40443
40552
|
inferenceTimeMs
|
|
40444
40553
|
)
|
|
40445
40554
|
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@browserbasehq/stagehand",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.3-alpha-c76ade009ef81208accae6475ec4707d3906e566",
|
|
4
4
|
"description": "An AI web browsing framework focused on simplicity and extensibility.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|