@browserbasehq/orca 3.2.0-preview.5 → 3.2.1-preview.0
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/README.md +2 -2
- package/dist/cjs/lib/inference.js +1 -1
- package/dist/cjs/lib/inference.js.map +1 -1
- package/dist/cjs/lib/prompt.js +13 -16
- package/dist/cjs/lib/prompt.js.map +1 -1
- package/dist/cjs/lib/v3/agent/AgentProvider.js +1 -0
- package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.d.ts +3 -1
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +60 -9
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
- package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js +15 -0
- package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.d.ts +8 -2
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.js +103 -49
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.js.map +1 -1
- package/dist/cjs/lib/v3/agent/tools/index.js +1 -1
- package/dist/cjs/lib/v3/agent/tools/index.js.map +1 -1
- package/dist/cjs/lib/v3/agent/tools/keys.d.ts +2 -1
- package/dist/cjs/lib/v3/agent/tools/keys.js +57 -49
- package/dist/cjs/lib/v3/agent/tools/keys.js.map +1 -1
- package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js +3 -5
- package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js.map +1 -1
- package/dist/cjs/lib/v3/api.d.ts +5 -3
- package/dist/cjs/lib/v3/api.js +3 -6
- package/dist/cjs/lib/v3/api.js.map +1 -1
- package/dist/cjs/lib/v3/cache/AgentCache.js +5 -3
- package/dist/cjs/lib/v3/cache/AgentCache.js.map +1 -1
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +6 -15
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
- package/dist/cjs/lib/v3/index.d.ts +1 -1
- package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +5 -2
- package/dist/cjs/lib/v3/llm/LLMProvider.js +14 -6
- package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
- package/dist/cjs/lib/v3/llm/OpenAIClient.js +1 -0
- package/dist/cjs/lib/v3/llm/OpenAIClient.js.map +1 -1
- package/dist/cjs/lib/v3/llm/aisdk.d.ts +3 -1
- package/dist/cjs/lib/v3/llm/aisdk.js +67 -17
- package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/agent.d.ts +8 -3
- package/dist/cjs/lib/v3/types/public/agent.js +1 -0
- package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/api.d.ts +30 -0
- package/dist/cjs/lib/v3/types/public/api.js +6 -2
- package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/model.d.ts +32 -2
- package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
- package/dist/cjs/lib/v3/understudy/context.js +11 -3
- package/dist/cjs/lib/v3/understudy/context.js.map +1 -1
- package/dist/cjs/lib/v3/understudy/page.js +1 -1
- package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
- package/dist/cjs/lib/v3/v3.d.ts +18 -2
- package/dist/cjs/lib/v3/v3.js +92 -9
- package/dist/cjs/lib/v3/v3.js.map +1 -1
- package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +56 -0
- package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +1 -0
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +56 -0
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +1 -1
- package/dist/cjs/tests/unit/agent-metrics.test.d.ts +1 -0
- package/dist/cjs/tests/unit/agent-metrics.test.js +112 -0
- package/dist/cjs/tests/unit/agent-metrics.test.js.map +1 -0
- package/dist/cjs/tests/unit/aisdk-clients.test.d.ts +1 -0
- package/dist/cjs/tests/unit/aisdk-clients.test.js +90 -0
- package/dist/cjs/tests/unit/aisdk-clients.test.js.map +1 -0
- package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +1 -0
- package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js +250 -0
- package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +1 -0
- package/dist/cjs/tests/unit/api-optional-model-api-key.test.d.ts +1 -0
- package/dist/cjs/tests/unit/api-optional-model-api-key.test.js +95 -0
- package/dist/cjs/tests/unit/api-optional-model-api-key.test.js.map +1 -0
- package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +20 -0
- package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +1 -1
- package/dist/cjs/tests/unit/llm-middleware.test.d.ts +1 -0
- package/dist/cjs/tests/unit/llm-middleware.test.js +495 -0
- package/dist/cjs/tests/unit/llm-middleware.test.js.map +1 -0
- package/dist/cjs/tests/unit/microsoft-cua-client.test.d.ts +1 -0
- package/dist/cjs/tests/unit/microsoft-cua-client.test.js +86 -0
- package/dist/cjs/tests/unit/microsoft-cua-client.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +1 -0
- package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +1 -1
- package/dist/esm/lib/inference.js +1 -1
- package/dist/esm/lib/inference.js.map +1 -1
- package/dist/esm/lib/prompt.js +13 -16
- package/dist/esm/lib/prompt.js.map +1 -1
- package/dist/esm/lib/v3/agent/AgentProvider.js +1 -0
- package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.d.ts +3 -1
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +60 -9
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +15 -0
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/OpenAICUAClient.d.ts +8 -2
- package/dist/esm/lib/v3/agent/OpenAICUAClient.js +103 -49
- package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/index.js +1 -1
- package/dist/esm/lib/v3/agent/tools/index.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/keys.d.ts +2 -1
- package/dist/esm/lib/v3/agent/tools/keys.js +57 -49
- package/dist/esm/lib/v3/agent/tools/keys.js.map +1 -1
- package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js +3 -5
- package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js.map +1 -1
- package/dist/esm/lib/v3/api.d.ts +5 -3
- package/dist/esm/lib/v3/api.js +3 -6
- package/dist/esm/lib/v3/api.js.map +1 -1
- package/dist/esm/lib/v3/cache/AgentCache.js +5 -3
- package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -1
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +6 -15
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
- package/dist/esm/lib/v3/index.d.ts +1 -1
- package/dist/esm/lib/v3/llm/LLMProvider.d.ts +5 -2
- package/dist/esm/lib/v3/llm/LLMProvider.js +15 -7
- package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
- package/dist/esm/lib/v3/llm/OpenAIClient.js +1 -0
- package/dist/esm/lib/v3/llm/OpenAIClient.js.map +1 -1
- package/dist/esm/lib/v3/llm/aisdk.d.ts +3 -1
- package/dist/esm/lib/v3/llm/aisdk.js +67 -17
- package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/esm/lib/v3/types/public/agent.d.ts +8 -3
- package/dist/esm/lib/v3/types/public/agent.js +1 -0
- package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
- package/dist/esm/lib/v3/types/public/api.d.ts +30 -0
- package/dist/esm/lib/v3/types/public/api.js +6 -2
- package/dist/esm/lib/v3/types/public/api.js.map +1 -1
- package/dist/esm/lib/v3/types/public/model.d.ts +32 -2
- package/dist/esm/lib/v3/types/public/model.js.map +1 -1
- package/dist/esm/lib/v3/understudy/context.js +11 -3
- package/dist/esm/lib/v3/understudy/context.js.map +1 -1
- package/dist/esm/lib/v3/understudy/page.js +1 -1
- package/dist/esm/lib/v3/understudy/page.js.map +1 -1
- package/dist/esm/lib/v3/v3.d.ts +18 -2
- package/dist/esm/lib/v3/v3.js +92 -10
- package/dist/esm/lib/v3/v3.js.map +1 -1
- package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +1 -0
- package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +54 -0
- package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +1 -0
- package/dist/esm/tests/unit/agent-captcha-hooks.test.js +56 -0
- package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +1 -1
- package/dist/esm/tests/unit/agent-metrics.test.d.ts +1 -0
- package/dist/esm/tests/unit/agent-metrics.test.js +110 -0
- package/dist/esm/tests/unit/agent-metrics.test.js.map +1 -0
- package/dist/esm/tests/unit/aisdk-clients.test.d.ts +1 -0
- package/dist/esm/tests/unit/aisdk-clients.test.js +88 -0
- package/dist/esm/tests/unit/aisdk-clients.test.js.map +1 -0
- package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +1 -0
- package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js +245 -0
- package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +1 -0
- package/dist/esm/tests/unit/api-optional-model-api-key.test.d.ts +1 -0
- package/dist/esm/tests/unit/api-optional-model-api-key.test.js +93 -0
- package/dist/esm/tests/unit/api-optional-model-api-key.test.js.map +1 -0
- package/dist/esm/tests/unit/browserbase-session-accessors.test.js +20 -0
- package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +1 -1
- package/dist/esm/tests/unit/llm-middleware.test.d.ts +1 -0
- package/dist/esm/tests/unit/llm-middleware.test.js +460 -0
- package/dist/esm/tests/unit/llm-middleware.test.js.map +1 -0
- package/dist/esm/tests/unit/microsoft-cua-client.test.d.ts +1 -0
- package/dist/esm/tests/unit/microsoft-cua-client.test.js +84 -0
- package/dist/esm/tests/unit/microsoft-cua-client.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +1 -0
- package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +1 -1
- package/package.json +4 -8
- package/dist/cjs/lib/v3/dom/build/rerender-index.js +0 -1
- package/dist/cjs/lib/v3/dom/build/v3-index.js +0 -1
- package/dist/esm/lib/v3/dom/build/rerender-index.js +0 -1
- package/dist/esm/lib/v3/dom/build/v3-index.js +0 -1
package/dist/cjs/lib/v3/v3.d.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
|
+
import type { LanguageModelV2Middleware } from "@ai-sdk/provider";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
import { InferStagehandSchema, StagehandZodSchema } from "./zodCompat.js";
|
|
3
4
|
import { LLMClient } from "./llm/LLMClient.js";
|
|
4
5
|
import { AgentReplayStep } from "./types/private/index.js";
|
|
5
|
-
import { AgentConfig, AgentExecuteOptions, AgentStreamExecuteOptions, AgentResult, LogLine, StagehandMetrics, Action, ActOptions, ActResult, defaultExtractSchema, ExtractOptions, HistoryEntry, ObserveOptions, pageTextSchema, V3FunctionName, V3Options, AgentStreamResult } from "./types/public/index.js";
|
|
6
|
+
import { AgentConfig, AgentExecuteOptions, AgentStreamExecuteOptions, AgentResult, LogLine, StagehandMetrics, Action, ActOptions, ActResult, defaultExtractSchema, ExtractOptions, HistoryEntry, ObserveOptions, pageTextSchema, V3FunctionName, AvailableModel, ClientOptions, V3Options, AgentStreamResult } from "./types/public/index.js";
|
|
6
7
|
import { V3Context } from "./understudy/context.js";
|
|
7
8
|
import { type FlowLoggerContext } from "./flowlogger/FlowLogger.js";
|
|
8
9
|
import { EventEmitterWithWildcardSupport } from "./flowlogger/EventEmitter.js";
|
|
9
10
|
import { EventStore } from "./flowlogger/EventStore.js";
|
|
11
|
+
type ResolvedModelConfiguration = {
|
|
12
|
+
modelName: AvailableModel;
|
|
13
|
+
clientOptions?: ClientOptions;
|
|
14
|
+
middleware?: LanguageModelV2Middleware;
|
|
15
|
+
};
|
|
16
|
+
export declare function resolveModelConfiguration(model?: V3Options["model"]): ResolvedModelConfiguration;
|
|
10
17
|
/**
|
|
11
18
|
* V3
|
|
12
19
|
*
|
|
@@ -57,7 +64,13 @@ export declare class V3 {
|
|
|
57
64
|
*/
|
|
58
65
|
get isCaptchaAutoSolveEnabled(): boolean;
|
|
59
66
|
/**
|
|
60
|
-
* Returns true if
|
|
67
|
+
* Returns true if Browserbase Verified mode is enabled in settings.
|
|
68
|
+
* Legacy `advancedStealth` is treated as equivalent for backwards compatibility.
|
|
69
|
+
*/
|
|
70
|
+
get isVerified(): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Backwards-compatible alias for Browserbase managed fingerprinting mode.
|
|
73
|
+
* @deprecated Use `isVerified` instead. This alias will be removed in a future version.
|
|
61
74
|
*/
|
|
62
75
|
get isAdvancedStealth(): boolean;
|
|
63
76
|
/**
|
|
@@ -95,6 +108,8 @@ export declare class V3 {
|
|
|
95
108
|
* When using API mode, fetches metrics from the API. Otherwise returns local metrics.
|
|
96
109
|
*/
|
|
97
110
|
get metrics(): Promise<StagehandMetrics>;
|
|
111
|
+
private mergeAgentMetricsWithLocalFallback;
|
|
112
|
+
private updateAgentMetricsFromUsage;
|
|
98
113
|
private resolveLlmClient;
|
|
99
114
|
private beginAgentReplayRecording;
|
|
100
115
|
private endAgentReplayRecording;
|
|
@@ -204,3 +219,4 @@ export declare class V3 {
|
|
|
204
219
|
execute: (instructionOrOptions: string | AgentExecuteOptions) => Promise<AgentResult>;
|
|
205
220
|
};
|
|
206
221
|
}
|
|
222
|
+
export {};
|
package/dist/cjs/lib/v3/v3.js
CHANGED
|
@@ -71,6 +71,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
71
71
|
};
|
|
72
72
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
73
73
|
exports.V3 = void 0;
|
|
74
|
+
exports.resolveModelConfiguration = resolveModelConfiguration;
|
|
74
75
|
const fs_1 = __importDefault(require("fs"));
|
|
75
76
|
const os_1 = __importDefault(require("os"));
|
|
76
77
|
const path_1 = __importDefault(require("path"));
|
|
@@ -118,13 +119,14 @@ function resolveModelConfiguration(model) {
|
|
|
118
119
|
return { modelName: model };
|
|
119
120
|
}
|
|
120
121
|
if (model && typeof model === "object") {
|
|
121
|
-
const { modelName, ...clientOptions } = model;
|
|
122
|
+
const { modelName, middleware, ...clientOptions } = model;
|
|
122
123
|
if (!modelName) {
|
|
123
124
|
throw new index_js_1.StagehandInvalidArgumentError("model.modelName is required when providing client options.");
|
|
124
125
|
}
|
|
125
126
|
return {
|
|
126
127
|
modelName,
|
|
127
128
|
clientOptions: clientOptions,
|
|
129
|
+
middleware,
|
|
128
130
|
};
|
|
129
131
|
}
|
|
130
132
|
return { modelName: DEFAULT_MODEL_NAME };
|
|
@@ -212,11 +214,20 @@ let V3 = (() => {
|
|
|
212
214
|
?.solveCaptchas !== false);
|
|
213
215
|
}
|
|
214
216
|
/**
|
|
215
|
-
* Returns true if
|
|
217
|
+
* Returns true if Browserbase Verified mode is enabled in settings.
|
|
218
|
+
* Legacy `advancedStealth` is treated as equivalent for backwards compatibility.
|
|
219
|
+
*/
|
|
220
|
+
get isVerified() {
|
|
221
|
+
const browserSettings = this.opts.browserbaseSessionCreateParams?.browserSettings;
|
|
222
|
+
return (browserSettings?.verified === true ||
|
|
223
|
+
browserSettings?.advancedStealth === true);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Backwards-compatible alias for Browserbase managed fingerprinting mode.
|
|
227
|
+
* @deprecated Use `isVerified` instead. This alias will be removed in a future version.
|
|
216
228
|
*/
|
|
217
229
|
get isAdvancedStealth() {
|
|
218
|
-
return
|
|
219
|
-
?.advancedStealth === true);
|
|
230
|
+
return this.isVerified;
|
|
220
231
|
}
|
|
221
232
|
/**
|
|
222
233
|
* Returns the configured viewport dimensions from launch options.
|
|
@@ -328,11 +339,11 @@ let V3 = (() => {
|
|
|
328
339
|
catch {
|
|
329
340
|
// ignore
|
|
330
341
|
}
|
|
331
|
-
const { modelName, clientOptions } = resolveModelConfiguration(opts.model);
|
|
342
|
+
const { modelName, clientOptions, middleware } = resolveModelConfiguration(opts.model);
|
|
332
343
|
this.modelName = modelName;
|
|
333
344
|
this.experimental = opts.experimental ?? false;
|
|
334
345
|
this.logInferenceToFile = opts.logInferenceToFile ?? false;
|
|
335
|
-
this.llmProvider = new LLMProvider_js_1.LLMProvider(this.logger);
|
|
346
|
+
this.llmProvider = new LLMProvider_js_1.LLMProvider(this.logger, middleware);
|
|
336
347
|
this.domSettleTimeoutMs = opts.domSettleTimeout;
|
|
337
348
|
this.disableAPI = opts.disableAPI ?? false;
|
|
338
349
|
const baseClientOptions = clientOptions
|
|
@@ -414,7 +425,10 @@ let V3 = (() => {
|
|
|
414
425
|
get metrics() {
|
|
415
426
|
if (this.apiClient) {
|
|
416
427
|
// Fetch metrics from the API
|
|
417
|
-
return this.apiClient
|
|
428
|
+
return this.apiClient
|
|
429
|
+
.getReplayMetrics()
|
|
430
|
+
.then((metrics) => this.mergeAgentMetricsWithLocalFallback(metrics))
|
|
431
|
+
.catch((error) => {
|
|
418
432
|
this.logger({
|
|
419
433
|
category: "metrics",
|
|
420
434
|
message: `Failed to fetch metrics from API: ${error}`,
|
|
@@ -427,21 +441,78 @@ let V3 = (() => {
|
|
|
427
441
|
// Return local metrics wrapped in a Promise for consistency
|
|
428
442
|
return Promise.resolve(this.stagehandMetrics);
|
|
429
443
|
}
|
|
444
|
+
mergeAgentMetricsWithLocalFallback(remoteMetrics) {
|
|
445
|
+
// In API mode, agent.execute() is the only path that returns trusted inline
|
|
446
|
+
// usage today, so only repair the agent bucket from local state.
|
|
447
|
+
const agentPromptTokens = Math.max(remoteMetrics.agentPromptTokens, this.stagehandMetrics.agentPromptTokens);
|
|
448
|
+
const agentCompletionTokens = Math.max(remoteMetrics.agentCompletionTokens, this.stagehandMetrics.agentCompletionTokens);
|
|
449
|
+
const agentReasoningTokens = Math.max(remoteMetrics.agentReasoningTokens, this.stagehandMetrics.agentReasoningTokens);
|
|
450
|
+
const agentCachedInputTokens = Math.max(remoteMetrics.agentCachedInputTokens, this.stagehandMetrics.agentCachedInputTokens);
|
|
451
|
+
const agentInferenceTimeMs = Math.max(remoteMetrics.agentInferenceTimeMs, this.stagehandMetrics.agentInferenceTimeMs);
|
|
452
|
+
const metrics = {
|
|
453
|
+
...remoteMetrics,
|
|
454
|
+
agentPromptTokens,
|
|
455
|
+
agentCompletionTokens,
|
|
456
|
+
agentReasoningTokens,
|
|
457
|
+
agentCachedInputTokens,
|
|
458
|
+
agentInferenceTimeMs,
|
|
459
|
+
totalPromptTokens: 0,
|
|
460
|
+
totalCompletionTokens: 0,
|
|
461
|
+
totalReasoningTokens: 0,
|
|
462
|
+
totalCachedInputTokens: 0,
|
|
463
|
+
totalInferenceTimeMs: 0,
|
|
464
|
+
};
|
|
465
|
+
metrics.totalPromptTokens =
|
|
466
|
+
metrics.actPromptTokens +
|
|
467
|
+
metrics.extractPromptTokens +
|
|
468
|
+
metrics.observePromptTokens +
|
|
469
|
+
metrics.agentPromptTokens;
|
|
470
|
+
metrics.totalCompletionTokens =
|
|
471
|
+
metrics.actCompletionTokens +
|
|
472
|
+
metrics.extractCompletionTokens +
|
|
473
|
+
metrics.observeCompletionTokens +
|
|
474
|
+
metrics.agentCompletionTokens;
|
|
475
|
+
metrics.totalReasoningTokens =
|
|
476
|
+
metrics.actReasoningTokens +
|
|
477
|
+
metrics.extractReasoningTokens +
|
|
478
|
+
metrics.observeReasoningTokens +
|
|
479
|
+
metrics.agentReasoningTokens;
|
|
480
|
+
metrics.totalCachedInputTokens =
|
|
481
|
+
metrics.actCachedInputTokens +
|
|
482
|
+
metrics.extractCachedInputTokens +
|
|
483
|
+
metrics.observeCachedInputTokens +
|
|
484
|
+
metrics.agentCachedInputTokens;
|
|
485
|
+
metrics.totalInferenceTimeMs =
|
|
486
|
+
metrics.actInferenceTimeMs +
|
|
487
|
+
metrics.extractInferenceTimeMs +
|
|
488
|
+
metrics.observeInferenceTimeMs +
|
|
489
|
+
metrics.agentInferenceTimeMs;
|
|
490
|
+
return metrics;
|
|
491
|
+
}
|
|
492
|
+
updateAgentMetricsFromUsage(usage) {
|
|
493
|
+
if (!usage) {
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
this.updateMetrics(index_js_1.V3FunctionName.AGENT, usage.input_tokens, usage.output_tokens, usage.reasoning_tokens ?? 0, usage.cached_input_tokens ?? 0, usage.inference_time_ms);
|
|
497
|
+
}
|
|
430
498
|
resolveLlmClient(model) {
|
|
431
499
|
if (!model) {
|
|
432
500
|
return this.llmClient;
|
|
433
501
|
}
|
|
434
502
|
let modelName;
|
|
435
503
|
let clientOptions;
|
|
504
|
+
let perCallMiddleware;
|
|
436
505
|
if (typeof model === "string") {
|
|
437
506
|
modelName = model;
|
|
438
507
|
}
|
|
439
508
|
else {
|
|
440
|
-
const { modelName: overrideModelName, ...rest } = model;
|
|
509
|
+
const { modelName: overrideModelName, middleware, ...rest } = model;
|
|
441
510
|
modelName = overrideModelName;
|
|
442
511
|
clientOptions = rest;
|
|
512
|
+
perCallMiddleware = middleware;
|
|
443
513
|
}
|
|
444
514
|
if (modelName === this.modelName &&
|
|
515
|
+
!perCallMiddleware &&
|
|
445
516
|
(!clientOptions || Object.keys(clientOptions).length === 0)) {
|
|
446
517
|
return this.llmClient;
|
|
447
518
|
}
|
|
@@ -458,6 +529,13 @@ let V3 = (() => {
|
|
|
458
529
|
mergedOptions.apiKey = apiKey;
|
|
459
530
|
}
|
|
460
531
|
}
|
|
532
|
+
if (perCallMiddleware) {
|
|
533
|
+
return this.llmProvider.getClient(modelName, mergedOptions, {
|
|
534
|
+
experimental: this.experimental,
|
|
535
|
+
disableAPI: this.disableAPI,
|
|
536
|
+
middleware: perCallMiddleware,
|
|
537
|
+
});
|
|
538
|
+
}
|
|
461
539
|
const cacheKey = JSON.stringify({
|
|
462
540
|
modelName,
|
|
463
541
|
clientOptions: mergedOptions,
|
|
@@ -466,7 +544,10 @@ let V3 = (() => {
|
|
|
466
544
|
if (cached) {
|
|
467
545
|
return cached;
|
|
468
546
|
}
|
|
469
|
-
const client = this.llmProvider.getClient(modelName, mergedOptions, {
|
|
547
|
+
const client = this.llmProvider.getClient(modelName, mergedOptions, {
|
|
548
|
+
experimental: this.experimental,
|
|
549
|
+
disableAPI: this.disableAPI,
|
|
550
|
+
});
|
|
470
551
|
this.overrideLlmClients.set(cacheKey, client);
|
|
471
552
|
return client;
|
|
472
553
|
}
|
|
@@ -1543,6 +1624,7 @@ let V3 = (() => {
|
|
|
1543
1624
|
if (this.apiClient && !this.experimental) {
|
|
1544
1625
|
const page = await this.ctx.awaitActivePage();
|
|
1545
1626
|
result = await this.apiClient.agentExecute(options, resolvedOptions, page.mainFrameId(), !!cacheContext);
|
|
1627
|
+
this.updateAgentMetricsFromUsage(result.usage);
|
|
1546
1628
|
if (cacheContext) {
|
|
1547
1629
|
const transferredEntry = this.apiClient.consumeLatestAgentCacheEntry();
|
|
1548
1630
|
await this.agentCache.storeTransferredEntry(transferredEntry);
|
|
@@ -1626,6 +1708,7 @@ let V3 = (() => {
|
|
|
1626
1708
|
if (this.apiClient && !this.experimental) {
|
|
1627
1709
|
const page = await this.ctx.awaitActivePage();
|
|
1628
1710
|
result = await this.apiClient.agentExecute(options ?? {}, resolvedOptions, page.mainFrameId(), !!cacheContext);
|
|
1711
|
+
this.updateAgentMetricsFromUsage(result.usage);
|
|
1629
1712
|
if (cacheContext) {
|
|
1630
1713
|
const transferredEntry = this.apiClient.consumeLatestAgentCacheEntry();
|
|
1631
1714
|
await this.agentCache.storeTransferredEntry(transferredEntry);
|