inferock-bench 0.1.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/LICENSE ADDED
@@ -0,0 +1,5 @@
1
+ inferock-bench License
2
+
3
+ SPDX-License-Identifier: FSL-1.1-Apache-2.0
4
+
5
+ This local benchmark app is licensed under the Functional Source License, Version 1.1, with Apache-2.0 as the Future License after two years.
@@ -0,0 +1,481 @@
1
+ // Copied from apps/proxy/src/adapters/anthropic.ts for inferock-bench Track C.
2
+ // Reuse approved by .claude/plans/oss-wave-2026-07.md "Track C Reuse Boundary".
3
+ import { canonicalAttempts, canonicalRequest, canonicalTiming, createStreamTimingCapture, providerRequestIdFromHeaders, recordStreamChunk, recordStreamToken, sanitizedProviderHeaders, streamTiming, } from "./canonical-v2.js";
4
+ import { asRecord, collectRateLimitHeaders, compactRecord, isRecord, joinUrl, numberValue, parseJsonRecord, stringValue, textFromContent, } from "../record.js";
5
+ import { SseAccumulator } from "../sse.js";
6
+ const DEFAULT_MAX_TOKENS = 1024;
7
+ export const ANTHROPIC_VERSION = "2023-06-01";
8
+ /**
9
+ * @contract-id anthropic-adapter
10
+ */
11
+ export const anthropicAdapter = {
12
+ provider: "anthropic",
13
+ buildRequest(input) {
14
+ return {
15
+ url: joinUrl(input.baseUrl, "/messages"),
16
+ init: {
17
+ method: "POST",
18
+ headers: {
19
+ "anthropic-version": ANTHROPIC_VERSION,
20
+ "content-type": "application/json",
21
+ "x-api-key": input.apiKey,
22
+ },
23
+ body: JSON.stringify(openAiToAnthropicRequest(input.body)),
24
+ },
25
+ };
26
+ },
27
+ toCanonicalEvent(input) {
28
+ return mapAnthropicResponseToCanonical(input);
29
+ },
30
+ observeStream(input) {
31
+ return observeAnthropicStream(input);
32
+ },
33
+ };
34
+ export function mapAnthropicResponseToCanonical(input) {
35
+ const parsed = parseJsonRecord(input.responseBody);
36
+ const rateLimitHeaders = collectRateLimitHeaders(input.headers);
37
+ const providerRequestId = providerRequestIdFromHeaders(input.headers);
38
+ const sanitizedHeaders = sanitizedProviderHeaders(input.headers);
39
+ if (!parsed || input.statusCode >= 400 || isRecord(parsed.error)) {
40
+ const error = asRecord(parsed?.error);
41
+ const errorType = stringValue(error?.type) ?? stringValue(parsed?.type) ?? "provider_error";
42
+ const errorCode = stringValue(error?.code);
43
+ const errorMessage = stringValue(error?.message) ?? "";
44
+ const servedModel = stringValue(parsed?.model) ?? input.requestModel;
45
+ const errorClass = `http_${input.statusCode}:${errorType}`;
46
+ return {
47
+ rateLimitHeaders,
48
+ event: {
49
+ schemaVersion: "v2",
50
+ request: canonicalRequest(input, "anthropic", "anthropic_messages"),
51
+ response: {
52
+ statusCode: input.statusCode,
53
+ finishReason: "error",
54
+ content: errorMessage,
55
+ servedModel,
56
+ ...(providerRequestId ? { providerRequestId } : {}),
57
+ ...(sanitizedHeaders ? { sanitizedHeaders } : {}),
58
+ rawErrorType: errorType,
59
+ ...(errorCode ? { rawErrorCode: errorCode } : {}),
60
+ providerSafety: anthropicErrorSafety(errorType, errorCode),
61
+ errorClass,
62
+ },
63
+ usage: anthropicUsageToCanonical({ input: 0, output: 0 }),
64
+ timing: canonicalTiming(input.startedAt, input.endedAt, "error"),
65
+ attempts: canonicalAttempts(input, "anthropic", servedModel, input.endedAt, "error", errorClass),
66
+ },
67
+ };
68
+ }
69
+ const content = Array.isArray(parsed.content) ? parsed.content : [];
70
+ const toolCalls = content.filter((item) => {
71
+ return isRecord(item) && item.type === "tool_use";
72
+ });
73
+ const usage = readAnthropicUsage(asRecord(parsed.usage));
74
+ const servedModel = stringValue(parsed.model) ?? input.requestModel;
75
+ const providerResponseId = stringValue(parsed.id);
76
+ const stopDetails = asRecord(parsed.stop_details);
77
+ return {
78
+ rateLimitHeaders,
79
+ event: {
80
+ schemaVersion: "v2",
81
+ request: canonicalRequest(input, "anthropic", "anthropic_messages"),
82
+ response: {
83
+ statusCode: input.statusCode,
84
+ finishReason: stringValue(parsed.stop_reason) ?? "",
85
+ content: textFromContent(content),
86
+ servedModel,
87
+ ...(toolCalls.length > 0 ? { toolCalls } : {}),
88
+ ...(toolCalls.length > 0 ? { rawToolCalls: toolCalls } : {}),
89
+ ...(providerRequestId ? { providerRequestId } : {}),
90
+ ...(providerResponseId ? { providerResponseId, rawObjectId: providerResponseId } : {}),
91
+ ...(sanitizedHeaders ? { sanitizedHeaders } : {}),
92
+ ...(stopDetails ? { stopDetails } : {}),
93
+ ...optionalAnthropicSafety(parsed),
94
+ },
95
+ usage: anthropicUsageToCanonical(usage),
96
+ timing: canonicalTiming(input.startedAt, input.endedAt, "complete"),
97
+ attempts: canonicalAttempts(input, "anthropic", servedModel, input.endedAt, "success"),
98
+ },
99
+ };
100
+ }
101
+ function observeAnthropicStream(input) {
102
+ const decoder = new TextDecoder();
103
+ const parser = new SseAccumulator();
104
+ const state = {
105
+ content: "",
106
+ finishReason: "",
107
+ usage: { input: 0, output: 0 },
108
+ toolCalls: new Map(),
109
+ observedTerminalMarker: false,
110
+ providerSafety: [],
111
+ timing: createStreamTimingCapture(),
112
+ };
113
+ return input.body.pipeThrough(new TransformStream({
114
+ transform(chunk, controller) {
115
+ const observedAt = new Date();
116
+ let observedContentDelta = false;
117
+ for (const message of parser.push(decoder.decode(chunk, { stream: true }))) {
118
+ observedContentDelta = applyAnthropicStreamMessage(state, message.data, input.statusCode, observedAt) || observedContentDelta;
119
+ }
120
+ if (observedContentDelta)
121
+ recordStreamToken(state.timing, observedAt);
122
+ controller.enqueue(chunk);
123
+ },
124
+ flush() {
125
+ const observedAt = new Date();
126
+ const tail = decoder.decode();
127
+ for (const message of [...parser.push(tail), ...parser.end()]) {
128
+ if (applyAnthropicStreamMessage(state, message.data, input.statusCode, observedAt)) {
129
+ recordStreamToken(state.timing, observedAt);
130
+ }
131
+ }
132
+ if (state.timing.terminalStatus === "unknown") {
133
+ if (state.errorClass || input.statusCode >= 400) {
134
+ state.timing.terminalStatus = "error";
135
+ }
136
+ else {
137
+ state.timing.terminalStatus = state.observedTerminalMarker ? "complete" : "aborted";
138
+ }
139
+ }
140
+ input.onTerminal(finalizeAnthropicStream(input, state));
141
+ },
142
+ }));
143
+ }
144
+ function applyAnthropicStreamMessage(state, data, statusCode, observedAt) {
145
+ const parsed = parseJsonRecord(data);
146
+ if (!parsed)
147
+ return false;
148
+ if (parsed.type === "ping")
149
+ return false;
150
+ recordStreamChunk(state.timing, observedAt);
151
+ if (isRecord(parsed.error)) {
152
+ const errorType = stringValue(parsed.error.type) ?? "provider_error";
153
+ const errorCode = stringValue(parsed.error.code);
154
+ state.errorClass = `http_${statusCode}:${errorType}`;
155
+ state.rawErrorType = errorType;
156
+ state.rawErrorCode = errorCode;
157
+ state.finishReason = "error";
158
+ state.providerSafety.push(...(anthropicErrorSafety(errorType, errorCode) ?? []));
159
+ state.timing.terminalStatus = "error";
160
+ return false;
161
+ }
162
+ if (parsed.type === "message_stop") {
163
+ state.observedTerminalMarker = true;
164
+ state.timing.terminalStatus = state.errorClass ? "error" : "complete";
165
+ return false;
166
+ }
167
+ const message = asRecord(parsed.message);
168
+ const messageId = stringValue(message?.id);
169
+ if (messageId)
170
+ state.providerResponseId = messageId;
171
+ const model = stringValue(message?.model);
172
+ if (model)
173
+ state.model = model;
174
+ const messageUsage = readAnthropicUsage(asRecord(message?.usage));
175
+ if (messageUsage.raw)
176
+ state.usage = mergeAnthropicUsage(state.usage, messageUsage);
177
+ applyAnthropicToolCallStreamMessage(state.toolCalls, parsed);
178
+ const delta = asRecord(parsed.delta);
179
+ const text = stringValue(delta?.text);
180
+ const observedTextDelta = delta?.type === "text_delta" && Boolean(text);
181
+ if (observedTextDelta && text)
182
+ state.content += text;
183
+ const stopReason = stringValue(delta?.stop_reason);
184
+ const stopDetails = asRecord(delta?.stop_details) ?? asRecord(parsed.stop_details);
185
+ if (stopDetails)
186
+ state.stopDetails = stopDetails;
187
+ if (stopReason) {
188
+ state.finishReason = stopReason;
189
+ state.providerSafety.push(...(anthropicSafety(stopReason, stopDetails) ?? []));
190
+ }
191
+ const usage = readAnthropicUsage(asRecord(parsed.usage));
192
+ if (usage.raw)
193
+ state.usage = mergeAnthropicUsage(state.usage, usage);
194
+ return observedTextDelta;
195
+ }
196
+ function finalizeAnthropicStream(input, state) {
197
+ const endedAt = new Date();
198
+ const servedModel = state.model ?? input.requestModel;
199
+ const providerRequestId = providerRequestIdFromHeaders(input.headers);
200
+ const sanitizedHeaders = sanitizedProviderHeaders(input.headers);
201
+ const terminalStatus = state.errorClass || input.statusCode >= 400 ? "error" : "success";
202
+ const toolCalls = anthropicToolCallsFromAccumulators(state.toolCalls);
203
+ const response = {
204
+ statusCode: input.statusCode,
205
+ finishReason: state.finishReason,
206
+ content: state.content,
207
+ servedModel,
208
+ ...(toolCalls.length > 0 ? { toolCalls } : {}),
209
+ ...(toolCalls.length > 0 ? { rawToolCalls: toolCalls } : {}),
210
+ ...(providerRequestId ? { providerRequestId } : {}),
211
+ ...(state.providerResponseId ? { providerResponseId: state.providerResponseId, rawObjectId: state.providerResponseId } : {}),
212
+ ...(sanitizedHeaders ? { sanitizedHeaders } : {}),
213
+ ...(state.stopDetails ? { stopDetails: state.stopDetails } : {}),
214
+ ...(state.rawErrorType ? { rawErrorType: state.rawErrorType } : {}),
215
+ ...(state.rawErrorCode ? { rawErrorCode: state.rawErrorCode } : {}),
216
+ ...(state.providerSafety.length > 0 ? { providerSafety: state.providerSafety } : {}),
217
+ ...(state.errorClass ? { errorClass: state.errorClass } : {}),
218
+ };
219
+ return {
220
+ rateLimitHeaders: collectRateLimitHeaders(input.headers),
221
+ event: {
222
+ schemaVersion: "v2",
223
+ request: canonicalRequest(input, "anthropic", "anthropic_messages"),
224
+ response,
225
+ usage: anthropicUsageToCanonical(state.usage),
226
+ timing: streamTiming(input.startedAt, endedAt, state.timing),
227
+ attempts: canonicalAttempts(input, "anthropic", servedModel, endedAt, terminalStatus, state.errorClass),
228
+ },
229
+ };
230
+ }
231
+ function applyAnthropicToolCallStreamMessage(accumulators, parsed) {
232
+ const messageType = stringValue(parsed.type);
233
+ const index = numberValue(parsed.index);
234
+ if (index === undefined)
235
+ return false;
236
+ if (messageType === "content_block_start") {
237
+ const contentBlock = asRecord(parsed.content_block);
238
+ if (contentBlock?.type !== "tool_use")
239
+ return false;
240
+ const accumulator = accumulators.get(index) ?? {
241
+ index,
242
+ inputJsonPartials: [],
243
+ };
244
+ const id = stringValue(contentBlock.id);
245
+ if (id)
246
+ accumulator.id = id;
247
+ const name = stringValue(contentBlock.name);
248
+ if (name)
249
+ accumulator.name = name;
250
+ if (Object.prototype.hasOwnProperty.call(contentBlock, "input")) {
251
+ accumulator.input = contentBlock.input;
252
+ }
253
+ accumulators.set(index, accumulator);
254
+ return true;
255
+ }
256
+ if (messageType === "content_block_stop") {
257
+ const accumulator = accumulators.get(index);
258
+ if (!accumulator)
259
+ return false;
260
+ accumulator.stopped = true;
261
+ return true;
262
+ }
263
+ if (messageType !== "content_block_delta")
264
+ return false;
265
+ const delta = asRecord(parsed.delta);
266
+ if (delta?.type !== "input_json_delta")
267
+ return false;
268
+ const partialJson = stringValue(delta.partial_json);
269
+ if (partialJson === undefined)
270
+ return false;
271
+ const accumulator = accumulators.get(index) ?? {
272
+ index,
273
+ inputJsonPartials: [],
274
+ };
275
+ accumulator.inputJsonPartials.push(partialJson);
276
+ accumulators.set(index, accumulator);
277
+ return true;
278
+ }
279
+ function anthropicToolCallsFromAccumulators(accumulators) {
280
+ return [...accumulators.values()]
281
+ .sort((left, right) => left.index - right.index)
282
+ .map(anthropicToolCallFromAccumulator);
283
+ }
284
+ function anthropicToolCallFromAccumulator(accumulator) {
285
+ const base = {
286
+ type: "tool_use",
287
+ index: accumulator.index,
288
+ ...(accumulator.id ? { id: accumulator.id } : {}),
289
+ ...(accumulator.name ? { name: accumulator.name } : {}),
290
+ ...(accumulator.stopped ? { contentBlockStopped: true } : {}),
291
+ };
292
+ if (accumulator.inputJsonPartials.length === 0) {
293
+ if (accumulator.input !== undefined)
294
+ base.input = accumulator.input;
295
+ return base;
296
+ }
297
+ const inputJson = accumulator.inputJsonPartials.join("");
298
+ const inputParseResult = parseResult(inputJson);
299
+ return {
300
+ ...base,
301
+ ...(inputParseResult.ok === true ? { input: JSON.parse(inputJson) } : {}),
302
+ inputJson,
303
+ inputJsonPartials: accumulator.inputJsonPartials,
304
+ inputParseResult,
305
+ };
306
+ }
307
+ function parseResult(text) {
308
+ try {
309
+ JSON.parse(text);
310
+ return { ok: true };
311
+ }
312
+ catch {
313
+ return { ok: false, reason: "invalid_json" };
314
+ }
315
+ }
316
+ function openAiToAnthropicRequest(body) {
317
+ const messages = Array.isArray(body.messages) ? body.messages : [];
318
+ const systemMessages = [];
319
+ const anthropicMessages = [];
320
+ for (const message of messages) {
321
+ if (!isRecord(message))
322
+ continue;
323
+ const role = stringValue(message.role);
324
+ const content = normalizeAnthropicContent(message.content);
325
+ if (role === "system") {
326
+ const systemText = textFromContent(content);
327
+ if (systemText)
328
+ systemMessages.push(systemText);
329
+ continue;
330
+ }
331
+ if (role === "user" || role === "assistant") {
332
+ anthropicMessages.push({ role, content });
333
+ }
334
+ }
335
+ const maxTokens = numberValue(body.max_tokens)
336
+ ?? numberValue(body.max_completion_tokens)
337
+ ?? DEFAULT_MAX_TOKENS;
338
+ return compactRecord({
339
+ model: body.model,
340
+ messages: anthropicMessages,
341
+ system: systemMessages.length > 0 ? systemMessages.join("\n\n") : undefined,
342
+ max_tokens: maxTokens,
343
+ stream: body.stream,
344
+ temperature: body.temperature,
345
+ top_p: body.top_p,
346
+ stop_sequences: body.stop,
347
+ tools: body.tools,
348
+ tool_choice: body.tool_choice,
349
+ });
350
+ }
351
+ function normalizeAnthropicContent(content) {
352
+ if (typeof content === "string")
353
+ return content;
354
+ if (!Array.isArray(content))
355
+ return "";
356
+ return content.map((item) => {
357
+ if (!isRecord(item))
358
+ return item;
359
+ if (item.type === "text") {
360
+ return { type: "text", text: stringValue(item.text) ?? "" };
361
+ }
362
+ return item;
363
+ });
364
+ }
365
+ function readAnthropicUsage(usage) {
366
+ const outputDetails = asRecord(usage?.output_tokens_details);
367
+ const cacheCreation = asRecord(usage?.cache_creation);
368
+ return {
369
+ input: numberValue(usage?.input_tokens) ?? 0,
370
+ output: numberValue(usage?.output_tokens) ?? 0,
371
+ cacheRead: numberValue(usage?.cache_read_input_tokens),
372
+ cacheCreation: numberValue(usage?.cache_creation_input_tokens),
373
+ cacheCreationEphemeral5m: numberValue(cacheCreation?.ephemeral_5m_input_tokens),
374
+ cacheCreationEphemeral1h: numberValue(cacheCreation?.ephemeral_1h_input_tokens),
375
+ thinkingTokens: numberValue(outputDetails?.thinking_tokens),
376
+ serviceTier: stringValue(usage?.service_tier),
377
+ inferenceGeo: stringValue(usage?.inference_geo),
378
+ iterations: numberValue(usage?.iterations),
379
+ ...(usage ? { raw: usage } : {}),
380
+ };
381
+ }
382
+ function mergeAnthropicUsage(current, next) {
383
+ return {
384
+ input: next.input > 0 ? next.input : current.input,
385
+ output: next.output > 0 ? next.output : current.output,
386
+ cacheRead: next.cacheRead ?? current.cacheRead,
387
+ cacheCreation: next.cacheCreation ?? current.cacheCreation,
388
+ cacheCreationEphemeral5m: next.cacheCreationEphemeral5m ?? current.cacheCreationEphemeral5m,
389
+ cacheCreationEphemeral1h: next.cacheCreationEphemeral1h ?? current.cacheCreationEphemeral1h,
390
+ thinkingTokens: next.thinkingTokens ?? current.thinkingTokens,
391
+ serviceTier: next.serviceTier ?? current.serviceTier,
392
+ inferenceGeo: next.inferenceGeo ?? current.inferenceGeo,
393
+ iterations: next.iterations ?? current.iterations,
394
+ ...mergeAnthropicRawUsage(current.raw, next.raw),
395
+ };
396
+ }
397
+ function mergeAnthropicRawUsage(current, next) {
398
+ if (!current && !next)
399
+ return {};
400
+ return { raw: { ...(current ?? {}), ...(next ?? {}) } };
401
+ }
402
+ function anthropicUsageToCanonical(usage) {
403
+ const cache = compactRecord({
404
+ read: usage.cacheRead,
405
+ creation: usage.cacheCreation,
406
+ });
407
+ return {
408
+ input: usage.input,
409
+ output: usage.output,
410
+ ...(Object.keys(cache).length > 0 ? { cache } : {}),
411
+ ...(usage.raw ? { raw: usage.raw } : {}),
412
+ categories: anthropicUsageCategories(usage),
413
+ usageSource: usage.raw ? "provider" : "missing",
414
+ ...(usage.serviceTier ? { serviceTier: usage.serviceTier } : {}),
415
+ ...(usage.inferenceGeo ? { inferenceGeo: usage.inferenceGeo } : {}),
416
+ ...(usage.iterations !== undefined ? { iterations: usage.iterations } : {}),
417
+ };
418
+ }
419
+ function anthropicUsageCategories(usage) {
420
+ return [
421
+ { category: "input", tokens: usage.input, sourceField: "input_tokens" },
422
+ { category: "output", tokens: usage.output, sourceField: "output_tokens" },
423
+ ...optionalCategory("cached", usage.cacheRead, "cache_read_input_tokens"),
424
+ ...optionalCategory("anthropic_cache_creation", usage.cacheCreation, "cache_creation_input_tokens"),
425
+ ...optionalCategory("reasoning", usage.thinkingTokens, "output_tokens_details.thinking_tokens"),
426
+ ...providerSpecificCategories("anthropic", usage.raw),
427
+ ];
428
+ }
429
+ function optionalAnthropicSafety(parsed) {
430
+ const stopReason = stringValue(parsed.stop_reason);
431
+ const providerSafety = stopReason
432
+ ? anthropicSafety(stopReason, asRecord(parsed.stop_details))
433
+ : undefined;
434
+ return providerSafety ? { providerSafety } : {};
435
+ }
436
+ function anthropicSafety(stopReason, stopDetails) {
437
+ if (stopReason !== "refusal")
438
+ return undefined;
439
+ return [{
440
+ kind: "refusal",
441
+ source: "provider",
442
+ reason: stopReason,
443
+ ...(stopDetails
444
+ ? {
445
+ raw: {
446
+ fieldPath: "stop_details",
447
+ stopDetails,
448
+ },
449
+ }
450
+ : {}),
451
+ }];
452
+ }
453
+ function anthropicErrorSafety(errorType, errorCode) {
454
+ const evidence = `${errorType}:${errorCode ?? ""}`;
455
+ if (!/policy|safety|moderation|content_filter|refusal/.test(evidence))
456
+ return undefined;
457
+ return [{ kind: "safety", source: "provider", reason: errorCode ?? errorType }];
458
+ }
459
+ function optionalCategory(category, value, sourceField) {
460
+ return value === undefined ? [] : [{ category, tokens: value, sourceField }];
461
+ }
462
+ function providerSpecificCategories(provider, raw, prefix = "") {
463
+ if (!raw)
464
+ return [];
465
+ const categories = [];
466
+ for (const [key, value] of Object.entries(raw)) {
467
+ const path = prefix ? `${prefix}.${key}` : key;
468
+ if (path === "iterations")
469
+ continue;
470
+ const numeric = numberValue(value);
471
+ if (numeric !== undefined) {
472
+ categories.push({ category: `provider:${provider}:${path}`, tokens: numeric, sourceField: path });
473
+ continue;
474
+ }
475
+ const nested = asRecord(value);
476
+ if (nested)
477
+ categories.push(...providerSpecificCategories(provider, nested, path));
478
+ }
479
+ return categories;
480
+ }
481
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/adapters/anthropic.ts"],"names":[],"mappings":"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"}