@holokai/holo-sdk 1.6.0-rc.0 → 1.9.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/dist/client/builder.d.ts +39 -4
- package/dist/client/builder.d.ts.map +1 -1
- package/dist/client/builder.js +62 -11
- package/dist/client/builder.js.map +1 -1
- package/dist/client/client.d.ts +20 -4
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +68 -26
- package/dist/client/client.js.map +1 -1
- package/dist/client/errors.d.ts +10 -2
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +15 -3
- package/dist/client/errors.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/merge.d.ts +5 -0
- package/dist/client/merge.d.ts.map +1 -1
- package/dist/client/merge.js +13 -0
- package/dist/client/merge.js.map +1 -1
- package/dist/client/runner.d.ts +2 -0
- package/dist/client/runner.d.ts.map +1 -1
- package/dist/client/runner.js.map +1 -1
- package/dist/client/sse.d.ts.map +1 -1
- package/dist/client/sse.js +4 -0
- package/dist/client/sse.js.map +1 -1
- package/dist/client/stream.d.ts +11 -1
- package/dist/client/stream.d.ts.map +1 -1
- package/dist/client/stream.js +114 -12
- package/dist/client/stream.js.map +1 -1
- package/dist/client/transport.d.ts +11 -0
- package/dist/client/transport.d.ts.map +1 -1
- package/dist/client/transport.js +25 -9
- package/dist/client/transport.js.map +1 -1
- package/dist/client/types.d.ts +35 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/json-output.d.ts +36 -0
- package/dist/core/json-output.d.ts.map +1 -0
- package/dist/core/json-output.js +108 -0
- package/dist/core/json-output.js.map +1 -0
- package/dist/core/logger.d.ts +2 -2
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/redact-binary.d.ts +6 -0
- package/dist/core/redact-binary.d.ts.map +1 -0
- package/dist/core/redact-binary.js +23 -0
- package/dist/core/redact-binary.js.map +1 -0
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.d.ts.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/core/version.js.map +1 -1
- package/dist/plugin/base.d.ts +7 -10
- package/dist/plugin/base.d.ts.map +1 -1
- package/dist/plugin/base.js +11 -24
- package/dist/plugin/base.js.map +1 -1
- package/dist/plugin/index.d.ts +1 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +1 -0
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/pricing.d.ts +13 -0
- package/dist/plugin/pricing.d.ts.map +1 -0
- package/dist/plugin/pricing.js +70 -0
- package/dist/plugin/pricing.js.map +1 -0
- package/dist/provider/auditor/base.d.ts +10 -5
- package/dist/provider/auditor/base.d.ts.map +1 -1
- package/dist/provider/auditor/base.js +69 -16
- package/dist/provider/auditor/base.js.map +1 -1
- package/dist/provider/auditor/index.d.ts +2 -0
- package/dist/provider/auditor/index.d.ts.map +1 -1
- package/dist/provider/auditor/index.js +2 -0
- package/dist/provider/auditor/index.js.map +1 -1
- package/dist/provider/auditor/payload-shape.d.ts +2 -0
- package/dist/provider/auditor/payload-shape.d.ts.map +1 -0
- package/dist/provider/auditor/payload-shape.js +19 -0
- package/dist/provider/auditor/payload-shape.js.map +1 -0
- package/dist/provider/auditor/token-breakdown.d.ts +14 -0
- package/dist/provider/auditor/token-breakdown.d.ts.map +1 -0
- package/dist/provider/auditor/token-breakdown.js +50 -0
- package/dist/provider/auditor/token-breakdown.js.map +1 -0
- package/dist/provider/base.d.ts.map +1 -1
- package/dist/provider/base.js +54 -15
- package/dist/provider/base.js.map +1 -1
- package/dist/provider/index.d.ts +2 -0
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +2 -0
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/json-output.d.ts +22 -0
- package/dist/provider/json-output.d.ts.map +1 -0
- package/dist/provider/json-output.js +88 -0
- package/dist/provider/json-output.js.map +1 -0
- package/dist/provider/thinking.d.ts +79 -0
- package/dist/provider/thinking.d.ts.map +1 -0
- package/dist/provider/thinking.js +173 -0
- package/dist/provider/thinking.js.map +1 -0
- package/dist/provider/translator/translate-provider-events.d.ts.map +1 -1
- package/dist/provider/translator/translate-provider-events.js +11 -3
- package/dist/provider/translator/translate-provider-events.js.map +1 -1
- package/dist/provider/wire/holo.wire.adapter.d.ts.map +1 -1
- package/dist/provider/wire/holo.wire.adapter.js +5 -0
- package/dist/provider/wire/holo.wire.adapter.js.map +1 -1
- package/package.json +2 -3
- package/dist/core/tokenizer.d.ts +0 -2
- package/dist/core/tokenizer.d.ts.map +0 -1
- package/dist/core/tokenizer.js +0 -12
- package/dist/core/tokenizer.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/plugin/pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type HoloWorkerRequest, type ProviderDoneEvent, type ProviderEnvelope, type ProviderErrorEvent, type ProviderRequest, type ProviderResponse, ProviderResponseStatus, type WorkerRequestEnvelope, type WorkerResponseEnvelope } from '@holokai/holo-types';
|
|
1
|
+
import { type HoloWorkerRequest, type ProviderDoneEvent, type ProviderEnvelope, type ProviderErrorEvent, type ProviderRequest, type ProviderResponse, ProviderResponseStatus, type TokenBreakdown, type WorkerRequestEnvelope, type WorkerResponseEnvelope } from '@holokai/holo-types';
|
|
2
2
|
import type { HoloFinishReason, HoloUsage } from '@holokai/holo-types/holo';
|
|
3
3
|
import { ClassLogger } from '../../core/index.js';
|
|
4
|
-
import type { IAuditor
|
|
4
|
+
import type { IAuditor } from '@holokai/holo-types/provider';
|
|
5
5
|
import { type ProviderEvent } from '@holokai/holo-types/provider';
|
|
6
6
|
import type { FinishReason, ProviderResponseMetrics } from '@holokai/holo-types/entities';
|
|
7
7
|
export type PromptRole = 'user' | 'system';
|
|
@@ -23,18 +23,23 @@ export declare function extractTextContent(content: unknown): string | null;
|
|
|
23
23
|
export declare function extractPromptByRole<T extends RoleLike>(items: T[] | undefined, role: PromptRole, strategy: 'first' | 'last', getText: (item: T) => string | null): string | null;
|
|
24
24
|
/**
|
|
25
25
|
* For top-level system prompt-like fields.
|
|
26
|
-
* Returns string as-is, otherwise JSON stringifies structured values.
|
|
26
|
+
* Returns string as-is, joins text blocks, otherwise JSON stringifies structured values.
|
|
27
27
|
*/
|
|
28
28
|
export declare function extractTopLevelPrompt(value: unknown): string | null;
|
|
29
29
|
export declare abstract class BaseAuditor extends ClassLogger implements IAuditor {
|
|
30
30
|
abstract readonly provider: string;
|
|
31
31
|
mapFinishReason(nativeResponse: any, _protocolName?: string): HoloFinishReason;
|
|
32
|
-
|
|
32
|
+
abstract mapTokenBreakdown(usageRaw: Record<string, any>, protocolName?: string): TokenBreakdown;
|
|
33
|
+
/**
|
|
34
|
+
* The billing view of a response: the provider's own usage report, or nothing.
|
|
35
|
+
*/
|
|
36
|
+
protected resolveTokenBreakdown(usageRaw: Record<string, any> | undefined, protocolName: string): TokenBreakdown | undefined;
|
|
33
37
|
mapUsage(nativeResponse: any, _protocolName?: string): HoloUsage;
|
|
38
|
+
private resolveProviderEnvelope;
|
|
34
39
|
createWorkerRequestEnvelope(workerRequest: HoloWorkerRequest): Promise<WorkerRequestEnvelope>;
|
|
35
40
|
createWorkerResponseEnvelope(workerRequest: HoloWorkerRequest, workerId?: string): Promise<WorkerResponseEnvelope>;
|
|
36
41
|
auditRequest(workerRequest: HoloWorkerRequest): Promise<ProviderRequest>;
|
|
37
|
-
auditResponse(envelope: WorkerResponseEnvelope,
|
|
42
|
+
auditResponse(envelope: WorkerResponseEnvelope, wireEvent: ProviderDoneEvent | ProviderErrorEvent): Promise<ProviderResponse>;
|
|
38
43
|
protected mapResponseMetrics(providerEvent: ProviderDoneEvent | ProviderErrorEvent, protocolName: string): Promise<ProviderResponseMetrics>;
|
|
39
44
|
protected abstract mapProviderResponseMetrics(providerEvent: ProviderDoneEvent, protocolName: string): Promise<Partial<ProviderResponseMetrics>>;
|
|
40
45
|
protected mapResponseStatus(providerEvent: ProviderEvent, _envelope: WorkerResponseEnvelope): Promise<ProviderResponseStatus>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/provider/auditor/base.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/provider/auditor/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ProviderEventType, ProviderResponseStatus, } from '@holokai/holo-types';
|
|
2
|
-
import { capabilityToMetadata, ClassLogger,
|
|
2
|
+
import { capabilityToMetadata, ClassLogger, pickDefined, systemModelToMetadata } from '../../core/index.js';
|
|
3
|
+
import { completionTokens, hasBillableTokens, hasUsageValues, promptTokens, validateTokenBreakdown, } from './token-breakdown.js';
|
|
4
|
+
import { hasToolDeclarations } from './payload-shape.js';
|
|
3
5
|
import {} from '@holokai/holo-types/provider';
|
|
4
6
|
export function normalizeText(text) {
|
|
5
7
|
const trimmed = text.trim();
|
|
@@ -56,7 +58,7 @@ export function extractPromptByRole(items, role, strategy, getText) {
|
|
|
56
58
|
}
|
|
57
59
|
/**
|
|
58
60
|
* For top-level system prompt-like fields.
|
|
59
|
-
* Returns string as-is, otherwise JSON stringifies structured values.
|
|
61
|
+
* Returns string as-is, joins text blocks, otherwise JSON stringifies structured values.
|
|
60
62
|
*/
|
|
61
63
|
export function extractTopLevelPrompt(value) {
|
|
62
64
|
if (value == null)
|
|
@@ -64,6 +66,11 @@ export function extractTopLevelPrompt(value) {
|
|
|
64
66
|
if (typeof value === 'string') {
|
|
65
67
|
return normalizeText(value);
|
|
66
68
|
}
|
|
69
|
+
if (Array.isArray(value)) {
|
|
70
|
+
const text = extractTextContent(value);
|
|
71
|
+
if (text)
|
|
72
|
+
return text;
|
|
73
|
+
}
|
|
67
74
|
try {
|
|
68
75
|
return JSON.stringify(value);
|
|
69
76
|
}
|
|
@@ -71,6 +78,20 @@ export function extractTopLevelPrompt(value) {
|
|
|
71
78
|
return null;
|
|
72
79
|
}
|
|
73
80
|
}
|
|
81
|
+
/** Holo-native payloads are audited untranslated, so fill what the provider-shaped extraction missed. */
|
|
82
|
+
function fillHoloNativeEnvelope(workerRequest, envelope) {
|
|
83
|
+
if (!workerRequest.isHoloNative)
|
|
84
|
+
return envelope;
|
|
85
|
+
const payload = (workerRequest.payload ?? {});
|
|
86
|
+
return pickDefined({
|
|
87
|
+
...envelope,
|
|
88
|
+
access_model: envelope.access_model ?? payload.model,
|
|
89
|
+
system_prompt: envelope.system_prompt ?? extractTopLevelPrompt(payload.system) ?? undefined,
|
|
90
|
+
last_user_prompt: envelope.last_user_prompt ??
|
|
91
|
+
extractPromptByRole(payload.messages, 'user', 'last', m => extractTextContent(m.content)) ??
|
|
92
|
+
undefined,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
74
95
|
export class BaseAuditor extends ClassLogger {
|
|
75
96
|
mapFinishReason(nativeResponse, _protocolName) {
|
|
76
97
|
if (!nativeResponse)
|
|
@@ -92,8 +113,23 @@ export class BaseAuditor extends ClassLogger {
|
|
|
92
113
|
return 'stop';
|
|
93
114
|
}
|
|
94
115
|
}
|
|
95
|
-
|
|
96
|
-
|
|
116
|
+
/**
|
|
117
|
+
* The billing view of a response: the provider's own usage report, or nothing.
|
|
118
|
+
*/
|
|
119
|
+
resolveTokenBreakdown(usageRaw, protocolName) {
|
|
120
|
+
const breakdown = hasUsageValues(usageRaw) ? this.mapTokenBreakdown(usageRaw, protocolName) : undefined;
|
|
121
|
+
if (!breakdown || !hasBillableTokens(breakdown))
|
|
122
|
+
return undefined;
|
|
123
|
+
// An invalid breakdown is not recorded; the row is then unpriced rather than priced on a guess.
|
|
124
|
+
const problems = validateTokenBreakdown(breakdown);
|
|
125
|
+
if (problems.length) {
|
|
126
|
+
this.log.error(`token breakdown invalid for ${this.provider}/${protocolName}: ${problems.join('; ')}`, {
|
|
127
|
+
usage_raw: usageRaw,
|
|
128
|
+
token_breakdown: breakdown,
|
|
129
|
+
});
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
return breakdown;
|
|
97
133
|
}
|
|
98
134
|
mapUsage(nativeResponse, _protocolName) {
|
|
99
135
|
if (!nativeResponse)
|
|
@@ -110,12 +146,15 @@ export class BaseAuditor extends ClassLogger {
|
|
|
110
146
|
undefined),
|
|
111
147
|
});
|
|
112
148
|
}
|
|
149
|
+
async resolveProviderEnvelope(workerRequest) {
|
|
150
|
+
return fillHoloNativeEnvelope(workerRequest, await this.createProviderEnvelope(workerRequest));
|
|
151
|
+
}
|
|
113
152
|
async createWorkerRequestEnvelope(workerRequest) {
|
|
114
153
|
const logger = this.mlog(this.createWorkerRequestEnvelope);
|
|
115
154
|
if (!workerRequest.requestId) {
|
|
116
155
|
logger.error(`No requestId for workerRequest: ${JSON.stringify(workerRequest)}`);
|
|
117
156
|
}
|
|
118
|
-
const { access_model, system_prompt, last_user_prompt } = await this.
|
|
157
|
+
const { access_model, system_prompt, last_user_prompt } = await this.resolveProviderEnvelope(workerRequest);
|
|
119
158
|
const { httpRequestDetails } = workerRequest;
|
|
120
159
|
return pickDefined({
|
|
121
160
|
request_id: workerRequest.requestId,
|
|
@@ -126,7 +165,7 @@ export class BaseAuditor extends ClassLogger {
|
|
|
126
165
|
user_id: workerRequest.userId,
|
|
127
166
|
thread_id: workerRequest.threadId,
|
|
128
167
|
created_at: new Date(workerRequest.timestamp).toISOString(),
|
|
129
|
-
request_raw: workerRequest.payload,
|
|
168
|
+
request_raw: workerRequest.originalRequest ?? workerRequest.payload,
|
|
130
169
|
access_model,
|
|
131
170
|
system_prompt,
|
|
132
171
|
last_user_prompt,
|
|
@@ -139,7 +178,6 @@ export class BaseAuditor extends ClassLogger {
|
|
|
139
178
|
guard_result: workerRequest.guardResult,
|
|
140
179
|
token_type: workerRequest.tokenType,
|
|
141
180
|
is_translated: workerRequest.wireFamily ? true : undefined,
|
|
142
|
-
original_request: workerRequest.originalRequest,
|
|
143
181
|
original_plugin_id: workerRequest.originalPluginId,
|
|
144
182
|
original_protocol: workerRequest.wireProtocolName,
|
|
145
183
|
...capabilityToMetadata(workerRequest.capability),
|
|
@@ -148,7 +186,7 @@ export class BaseAuditor extends ClassLogger {
|
|
|
148
186
|
});
|
|
149
187
|
}
|
|
150
188
|
async createWorkerResponseEnvelope(workerRequest, workerId) {
|
|
151
|
-
const providerEnvelope = await this.
|
|
189
|
+
const providerEnvelope = await this.resolveProviderEnvelope(workerRequest);
|
|
152
190
|
return pickDefined({
|
|
153
191
|
source_id: workerRequest.sourceId,
|
|
154
192
|
request_id: workerRequest.requestId,
|
|
@@ -166,6 +204,8 @@ export class BaseAuditor extends ClassLogger {
|
|
|
166
204
|
wire_protocol_name: workerRequest.wireProtocolName,
|
|
167
205
|
original_plugin_id: workerRequest.originalPluginId,
|
|
168
206
|
capability: workerRequest.capability,
|
|
207
|
+
client_response: workerRequest.clientResponse,
|
|
208
|
+
provider_request: workerRequest.providerPayload,
|
|
169
209
|
...providerEnvelope,
|
|
170
210
|
});
|
|
171
211
|
}
|
|
@@ -195,7 +235,11 @@ export class BaseAuditor extends ClassLogger {
|
|
|
195
235
|
};
|
|
196
236
|
return pickDefined(providerRequest);
|
|
197
237
|
}
|
|
198
|
-
async auditResponse(envelope,
|
|
238
|
+
async auditResponse(envelope, wireEvent) {
|
|
239
|
+
// A translated call's `message` is the wire-family body the client got; audit the provider's own.
|
|
240
|
+
const providerEvent = wireEvent.type === ProviderEventType.DONE && wireEvent.providerMessage !== undefined
|
|
241
|
+
? { ...wireEvent, message: wireEvent.providerMessage }
|
|
242
|
+
: wireEvent;
|
|
199
243
|
const metrics = await this.mapResponseMetrics(providerEvent, envelope.protocol.name);
|
|
200
244
|
const responseRaw = providerEvent.type === ProviderEventType.DONE
|
|
201
245
|
? providerEvent.message
|
|
@@ -203,12 +247,17 @@ export class BaseAuditor extends ClassLogger {
|
|
|
203
247
|
? await this.extractNativeError(providerEvent)
|
|
204
248
|
: undefined;
|
|
205
249
|
const { usage_raw, input_tokens, output_tokens, total_tokens, time_to_first_token, total_processing_time } = metrics;
|
|
250
|
+
const breakdown = this.resolveTokenBreakdown(usage_raw, envelope.protocol.name);
|
|
251
|
+
// One meaning for every provider: tokens processed on the prompt side (cache included) and on
|
|
252
|
+
// the completion side (thinking included); the provider's own numbers stay in usage_raw.
|
|
253
|
+
const promptProcessed = breakdown ? promptTokens(breakdown) : input_tokens;
|
|
254
|
+
const completionProcessed = breakdown ? completionTokens(breakdown) : output_tokens;
|
|
206
255
|
const metadata = pickDefined({
|
|
256
|
+
token_breakdown: breakdown,
|
|
207
257
|
worker_id: envelope.worker_id,
|
|
208
258
|
is_translated: envelope.wire_family ? true : undefined,
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
: undefined,
|
|
259
|
+
translation_error: wireEvent.type === ProviderEventType.DONE ? wireEvent.translationError : undefined,
|
|
260
|
+
json_unwrapped: wireEvent.type === ProviderEventType.DONE && wireEvent.jsonUnwrapped ? true : undefined,
|
|
212
261
|
original_plugin_id: envelope.original_plugin_id,
|
|
213
262
|
original_protocol: envelope.wire_protocol_name,
|
|
214
263
|
...capabilityToMetadata(envelope.capability),
|
|
@@ -227,10 +276,14 @@ export class BaseAuditor extends ClassLogger {
|
|
|
227
276
|
finish_reason: await this.extractFinishReason(providerEvent, envelope),
|
|
228
277
|
response: providerEvent.text,
|
|
229
278
|
response_raw: responseRaw,
|
|
279
|
+
provider_request: envelope.provider_request,
|
|
280
|
+
client_response: envelope.client_response,
|
|
230
281
|
usage_raw,
|
|
231
|
-
input_tokens,
|
|
232
|
-
output_tokens,
|
|
233
|
-
total_tokens
|
|
282
|
+
input_tokens: promptProcessed,
|
|
283
|
+
output_tokens: completionProcessed,
|
|
284
|
+
total_tokens: promptProcessed !== undefined && completionProcessed !== undefined
|
|
285
|
+
? promptProcessed + completionProcessed
|
|
286
|
+
: total_tokens,
|
|
234
287
|
time_to_first_token,
|
|
235
288
|
total_processing_time,
|
|
236
289
|
cost: 0,
|
|
@@ -267,7 +320,7 @@ export class BaseAuditor extends ClassLogger {
|
|
|
267
320
|
}
|
|
268
321
|
}
|
|
269
322
|
hasTools(payload) {
|
|
270
|
-
return
|
|
323
|
+
return hasToolDeclarations(payload);
|
|
271
324
|
}
|
|
272
325
|
async extractNativeError(providerEvent) {
|
|
273
326
|
const err = providerEvent.error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/provider/auditor/base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/provider/auditor/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/provider/auditor/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/provider/auditor/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/provider/auditor/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/provider/auditor/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-shape.d.ts","sourceRoot":"","sources":["../../../src/provider/auditor/payload-shape.ts"],"names":[],"mappings":"AAgBA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAEtD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The first non-empty tool declaration list, wherever the family puts it: top-level `tools` or legacy
|
|
3
|
+
* `functions` (OpenAI, Claude, Ollama), `toolConfig.tools` (Bedrock), `config.tools` (Gemini).
|
|
4
|
+
* A tool-choice setting without declarations is not a declaration.
|
|
5
|
+
*/
|
|
6
|
+
function toolsOf(body) {
|
|
7
|
+
const candidates = [
|
|
8
|
+
body?.tools,
|
|
9
|
+
body?.functions,
|
|
10
|
+
body?.toolConfig?.tools,
|
|
11
|
+
body?.tool_config?.tools,
|
|
12
|
+
body?.config?.tools,
|
|
13
|
+
];
|
|
14
|
+
return candidates.find(value => Array.isArray(value) && value.length > 0);
|
|
15
|
+
}
|
|
16
|
+
export function hasToolDeclarations(body) {
|
|
17
|
+
return toolsOf(body) !== undefined;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=payload-shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-shape.js","sourceRoot":"","sources":["../../../src/provider/auditor/payload-shape.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,SAAS,OAAO,CAAC,IAAS;IACtB,MAAM,UAAU,GAAG;QACf,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,UAAU,EAAE,KAAK;QACvB,IAAI,EAAE,WAAW,EAAE,KAAK;QACxB,IAAI,EAAE,MAAM,EAAE,KAAK;KACtB,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAS;IACzC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TokenBreakdown } from '@holokai/holo-types/entities';
|
|
2
|
+
/** Buckets that are recorded for inspection but never priced or summed. */
|
|
3
|
+
export declare const INFORMATIONAL_BUCKETS: ReadonlySet<string>;
|
|
4
|
+
export declare function promptTokens(breakdown: TokenBreakdown): number;
|
|
5
|
+
/** Tokens the model produced: the answer plus any thinking it billed. */
|
|
6
|
+
export declare function completionTokens(breakdown: TokenBreakdown): number;
|
|
7
|
+
/** `[bucket, tokens]` for every priced bucket; `input` and `output` are always present, the rest only when non-zero. */
|
|
8
|
+
export declare function billableBuckets(breakdown: TokenBreakdown): Array<[string, number]>;
|
|
9
|
+
/** Problems with a breakdown as data (negative, non-finite, missing core buckets); empty when it is well-formed. */
|
|
10
|
+
export declare function validateTokenBreakdown(breakdown: TokenBreakdown | undefined): string[];
|
|
11
|
+
/** True when the provider actually reported something (a usage object with at least one value). */
|
|
12
|
+
export declare function hasUsageValues(usageRaw: Record<string, any> | null | undefined): usageRaw is Record<string, any>;
|
|
13
|
+
export declare function hasBillableTokens(breakdown: TokenBreakdown): boolean;
|
|
14
|
+
//# sourceMappingURL=token-breakdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-breakdown.d.ts","sourceRoot":"","sources":["../../../src/provider/auditor/token-breakdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAEjE,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAA0B,CAAC;AAKjF,wBAAgB,YAAY,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAE9D;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAElE;AAED,wHAAwH;AACxH,wBAAgB,eAAe,CAAC,SAAS,EAAE,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAQlF;AAED,oHAAoH;AACpH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,EAAE,CAYtF;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAEhH;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAEpE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** Buckets that are recorded for inspection but never priced or summed. */
|
|
2
|
+
export const INFORMATIONAL_BUCKETS = new Set(['reasoning']);
|
|
3
|
+
/** Buckets billed on the prompt side; their sum drives extended-context tiering. */
|
|
4
|
+
const PROMPT_BUCKETS = ['input', 'cache_read', 'cache_write', 'cache_write_1h'];
|
|
5
|
+
export function promptTokens(breakdown) {
|
|
6
|
+
return PROMPT_BUCKETS.reduce((sum, bucket) => sum + (breakdown[bucket] ?? 0), 0);
|
|
7
|
+
}
|
|
8
|
+
/** Tokens the model produced: the answer plus any thinking it billed. */
|
|
9
|
+
export function completionTokens(breakdown) {
|
|
10
|
+
return breakdown.output + (breakdown.thinking ?? 0);
|
|
11
|
+
}
|
|
12
|
+
/** `[bucket, tokens]` for every priced bucket; `input` and `output` are always present, the rest only when non-zero. */
|
|
13
|
+
export function billableBuckets(breakdown) {
|
|
14
|
+
const out = [];
|
|
15
|
+
for (const [bucket, tokens] of Object.entries(breakdown)) {
|
|
16
|
+
if (INFORMATIONAL_BUCKETS.has(bucket) || typeof tokens !== 'number')
|
|
17
|
+
continue;
|
|
18
|
+
if (tokens === 0 && bucket !== 'input' && bucket !== 'output')
|
|
19
|
+
continue;
|
|
20
|
+
out.push([bucket, tokens]);
|
|
21
|
+
}
|
|
22
|
+
return out;
|
|
23
|
+
}
|
|
24
|
+
/** Problems with a breakdown as data (negative, non-finite, missing core buckets); empty when it is well-formed. */
|
|
25
|
+
export function validateTokenBreakdown(breakdown) {
|
|
26
|
+
if (!breakdown)
|
|
27
|
+
return ['missing'];
|
|
28
|
+
const problems = [];
|
|
29
|
+
for (const core of ['input', 'output', 'cache_read', 'cache_write']) {
|
|
30
|
+
if (typeof breakdown[core] !== 'number')
|
|
31
|
+
problems.push(`${core} missing`);
|
|
32
|
+
}
|
|
33
|
+
for (const [bucket, tokens] of Object.entries(breakdown)) {
|
|
34
|
+
if (tokens === undefined)
|
|
35
|
+
continue;
|
|
36
|
+
if (typeof tokens !== 'number' || !Number.isFinite(tokens))
|
|
37
|
+
problems.push(`${bucket} is not a number`);
|
|
38
|
+
else if (tokens < 0)
|
|
39
|
+
problems.push(`${bucket} is negative (${tokens})`);
|
|
40
|
+
}
|
|
41
|
+
return problems;
|
|
42
|
+
}
|
|
43
|
+
/** True when the provider actually reported something (a usage object with at least one value). */
|
|
44
|
+
export function hasUsageValues(usageRaw) {
|
|
45
|
+
return !!usageRaw && Object.values(usageRaw).some(v => v !== undefined && v !== null);
|
|
46
|
+
}
|
|
47
|
+
export function hasBillableTokens(breakdown) {
|
|
48
|
+
return billableBuckets(breakdown).some(([, tokens]) => tokens > 0);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=token-breakdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-breakdown.js","sourceRoot":"","sources":["../../../src/provider/auditor/token-breakdown.ts"],"names":[],"mappings":"AAEA,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAEjF,oFAAoF;AACpF,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAU,CAAC;AAEzF,MAAM,UAAU,YAAY,CAAC,SAAyB;IAClD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,SAAyB;IACtD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,wHAAwH;AACxH,MAAM,UAAU,eAAe,CAAC,SAAyB;IACrD,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,IAAI,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,SAAS;QAC9E,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ;YAAE,SAAS;QACxE,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,oHAAoH;AACpH,MAAM,UAAU,sBAAsB,CAAC,SAAqC;IACxE,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC;QAClE,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC;IAC9E,CAAC;IACD,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,kBAAkB,CAAC,CAAC;aAClG,IAAI,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,iBAAiB,MAAM,GAAG,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,cAAc,CAAC,QAAgD;IAC3E,OAAO,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAyB;IACvD,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/provider/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/provider/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAC,MAAM,8BAA8B,CAAC;AACtG,OAAO,EAAC,KAAK,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAC,eAAe,EAAE,WAAW,EAA4B,MAAM,SAAS,CAAC;AAChF,OAAO,EAAoB,KAAK,eAAe,EAAE,KAAK,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAWzG,8BAAsB,YAAY,CAAC,cAAc,GAAG,GAAG,EAAE,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,CACtF,SAAQ,WACR,YAAW,SAAS;aASA,EAAE,EAAE,MAAM;aACV,IAAI,EAAE,MAAM;aACZ,MAAM,EAAE,eAAe;IACvC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG;IAVnC,SAAgB,OAAO,EAAE,QAAQ,CAAC;IAClC,SAAgB,UAAU,EAAE,mBAAmB,CAAC;IAChD,SAAgB,eAAe,EAAE,gBAAgB,CAAC;IAClD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAM;IACjD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAGtB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACpB,OAAO,EAAE,GAAG;IAUnC,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;IAEhE,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAE/C,YAAY,CAAC,aAAa,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIxE,aAAa,CACf,cAAc,EAAE,sBAAsB,EACtC,aAAa,EAAE,aAAa,GAC7B,OAAO,CAAC,gBAAgB,CAAC;IAItB,oBAAoB,CACtB,OAAO,EAAE,iBAAiB,EAC1B,IAAI,CAAC,EAAE;QAAC,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAC,GACjF,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAwR1C,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,cAAc;IAEjD,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ;IAE5C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,IAAI,mBAAmB;IAE1D,SAAS,CAAC,QAAQ,CAAC,qBAAqB,IAAI,gBAAgB;IAE5D,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExD,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAIvE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAClC,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,eAAe,GACrB,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;cAEjB,gBAAgB,CAC5B,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,OAAO,EAAE,GAAG,EACZ,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,GAAG,CAAC;IA0Bf,OAAO,CAAC,iBAAiB;CAM5B"}
|
package/dist/provider/base.js
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {} from '@holokai/holo-types/provider';
|
|
2
2
|
import {} from '@holokai/holo-types/worker';
|
|
3
3
|
import { ProtocolCapability } from '@holokai/holo-types/entities';
|
|
4
|
-
import { AsyncEventQueue, ClassLogger, pickDefined } from '../core/index.js';
|
|
4
|
+
import { AsyncEventQueue, ClassLogger, pickDefined, redactBinary } from '../core/index.js';
|
|
5
5
|
import {} from '@holokai/holo-types';
|
|
6
|
+
/** Plugins only ever rewrite top-level fields, so a top-level comparison tells whether the body was changed. */
|
|
7
|
+
function shallowEqual(a, b) {
|
|
8
|
+
if (a === b)
|
|
9
|
+
return true;
|
|
10
|
+
if (!a || !b || typeof a !== 'object' || typeof b !== 'object')
|
|
11
|
+
return false;
|
|
12
|
+
const keys = Object.keys(a);
|
|
13
|
+
return keys.length === Object.keys(b).length && keys.every(k => a[k] === b[k]);
|
|
14
|
+
}
|
|
6
15
|
export class BaseProvider extends ClassLogger {
|
|
7
16
|
id;
|
|
8
17
|
name;
|
|
@@ -33,9 +42,12 @@ export class BaseProvider extends ClassLogger {
|
|
|
33
42
|
async processWorkerRequest(request, opts) {
|
|
34
43
|
const q = new AsyncEventQueue();
|
|
35
44
|
const { requestId, protocol, payload, httpRequestDetails } = request;
|
|
36
|
-
|
|
37
|
-
|
|
45
|
+
// The plugin gets its own top-level object (a translator may hand the payload back as-is), so
|
|
46
|
+
// in-place sanitisation never reaches the audited client body.
|
|
47
|
+
const translated = request.isHoloNative
|
|
48
|
+
? await this.translatePayload(protocol?.capability, payload, protocol?.name)
|
|
38
49
|
: payload;
|
|
50
|
+
const requestPayload = (translated === payload && payload && typeof payload === 'object' ? { ...payload } : translated);
|
|
39
51
|
let fullText = '';
|
|
40
52
|
const metrics = {
|
|
41
53
|
startTime: Date.now(),
|
|
@@ -83,7 +95,6 @@ export class BaseProvider extends ClassLogger {
|
|
|
83
95
|
clearTimers();
|
|
84
96
|
metrics.endTime = Date.now();
|
|
85
97
|
metrics.totalProcessingTime = metrics.endTime - metrics.startTime;
|
|
86
|
-
metrics.outputTokens = this.auditor.countTokens(fullText, { type: TokenCountType.OUTPUT });
|
|
87
98
|
const reason = controller.signal.reason?.message ?? 'provider request aborted';
|
|
88
99
|
push({
|
|
89
100
|
type: 'error',
|
|
@@ -136,6 +147,21 @@ export class BaseProvider extends ClassLogger {
|
|
|
136
147
|
push({ type: 'text_delta', text });
|
|
137
148
|
}
|
|
138
149
|
},
|
|
150
|
+
// Reasoning counts toward time-to-first-token (it is the first sign of
|
|
151
|
+
// life from a thinking model) but never joins fullText — the final
|
|
152
|
+
// answer must not contain the thinking stream.
|
|
153
|
+
emitReasoningDelta: (text) => {
|
|
154
|
+
if (settled)
|
|
155
|
+
return;
|
|
156
|
+
armIdle();
|
|
157
|
+
if (metrics.timeToFirstToken === 0) {
|
|
158
|
+
metrics.firstTime = Date.now();
|
|
159
|
+
metrics.timeToFirstToken = metrics.firstTime - metrics.startTime;
|
|
160
|
+
}
|
|
161
|
+
if (text != null && text !== '') {
|
|
162
|
+
push({ type: 'reasoning_delta', text });
|
|
163
|
+
}
|
|
164
|
+
},
|
|
139
165
|
emitToolCallDelta: (index, delta) => {
|
|
140
166
|
if (settled)
|
|
141
167
|
return;
|
|
@@ -154,7 +180,6 @@ export class BaseProvider extends ClassLogger {
|
|
|
154
180
|
clearTimers();
|
|
155
181
|
metrics.endTime = Date.now();
|
|
156
182
|
metrics.totalProcessingTime = metrics.endTime - metrics.startTime;
|
|
157
|
-
metrics.outputTokens = this.auditor.countTokens(fullText, { type: TokenCountType.OUTPUT });
|
|
158
183
|
const handledError = await this.handleError(e);
|
|
159
184
|
push({
|
|
160
185
|
type: 'error',
|
|
@@ -168,6 +193,13 @@ export class BaseProvider extends ClassLogger {
|
|
|
168
193
|
q.end();
|
|
169
194
|
return q;
|
|
170
195
|
}
|
|
196
|
+
finally {
|
|
197
|
+
// What the provider actually received. Absent when it is the client body unchanged, so the
|
|
198
|
+
// audit stores no second copy.
|
|
199
|
+
if (!shallowEqual(requestPayload, payload)) {
|
|
200
|
+
request.providerPayload = redactBinary(requestPayload);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
171
203
|
// IMPORTANT: do not await here — return q immediately for streaming
|
|
172
204
|
void (async () => {
|
|
173
205
|
try {
|
|
@@ -185,24 +217,31 @@ export class BaseProvider extends ClassLogger {
|
|
|
185
217
|
const providerUsage = this.auditor.mapUsage(final, protocol?.name);
|
|
186
218
|
const model = this.plugin.getModelNameFromRequest(requestPayload, protocol?.name);
|
|
187
219
|
metrics.inputTokens = providerUsage.input_tokens ?? metrics.inputTokens;
|
|
188
|
-
metrics.outputTokens =
|
|
189
|
-
providerUsage.output_tokens ??
|
|
190
|
-
this.auditor.countTokens(fullText, {
|
|
191
|
-
type: TokenCountType.OUTPUT,
|
|
192
|
-
model,
|
|
193
|
-
});
|
|
220
|
+
metrics.outputTokens = providerUsage.output_tokens ?? metrics.outputTokens;
|
|
194
221
|
metrics.totalTokens = providerUsage.total_tokens ?? metrics.inputTokens + metrics.outputTokens;
|
|
195
222
|
if (request.isHoloNative &&
|
|
196
223
|
protocol?.capability === ProtocolCapability.EMBED &&
|
|
197
224
|
this.translator.toHoloEmbedResponse) {
|
|
198
225
|
const normalized = await this.translator.toHoloEmbedResponse(final);
|
|
199
|
-
push({
|
|
226
|
+
push({
|
|
227
|
+
type: 'done',
|
|
228
|
+
message: normalized,
|
|
229
|
+
providerMessage: final,
|
|
230
|
+
text: '',
|
|
231
|
+
metrics,
|
|
232
|
+
});
|
|
200
233
|
}
|
|
201
234
|
else if (request.isHoloNative &&
|
|
202
235
|
protocol?.capability === ProtocolCapability.RERANK &&
|
|
203
236
|
this.translator.toHoloRerankResponse) {
|
|
204
237
|
const normalized = await this.translator.toHoloRerankResponse(final);
|
|
205
|
-
push({
|
|
238
|
+
push({
|
|
239
|
+
type: 'done',
|
|
240
|
+
message: normalized,
|
|
241
|
+
providerMessage: final,
|
|
242
|
+
text: '',
|
|
243
|
+
metrics,
|
|
244
|
+
});
|
|
206
245
|
}
|
|
207
246
|
else {
|
|
208
247
|
let translatedOutput;
|
|
@@ -241,6 +280,7 @@ export class BaseProvider extends ClassLogger {
|
|
|
241
280
|
text: fullText,
|
|
242
281
|
holoResponse,
|
|
243
282
|
metrics,
|
|
283
|
+
chunksForwarded: runner.forwardsEveryChunk,
|
|
244
284
|
});
|
|
245
285
|
}
|
|
246
286
|
}
|
|
@@ -251,7 +291,6 @@ export class BaseProvider extends ClassLogger {
|
|
|
251
291
|
clearTimers();
|
|
252
292
|
metrics.endTime = Date.now();
|
|
253
293
|
metrics.totalProcessingTime = metrics.endTime - metrics.startTime;
|
|
254
|
-
metrics.outputTokens = this.auditor.countTokens(fullText, { type: TokenCountType.OUTPUT });
|
|
255
294
|
const handledError = await this.handleError(e);
|
|
256
295
|
push({
|
|
257
296
|
type: 'error',
|