@copilotkit/aimock 1.45.1 → 1.46.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +13 -0
- package/README.md +7 -1
- package/dist/agui-mock.cjs +25 -25
- package/dist/agui-mock.cjs.map +1 -1
- package/dist/agui-mock.d.cts.map +1 -1
- package/dist/agui-mock.d.ts.map +1 -1
- package/dist/agui-mock.js +25 -25
- package/dist/agui-mock.js.map +1 -1
- package/dist/agui-types.d.cts.map +1 -1
- package/dist/aimock-cli.cjs +15 -1
- package/dist/aimock-cli.cjs.map +1 -1
- package/dist/aimock-cli.d.cts.map +1 -1
- package/dist/aimock-cli.d.ts.map +1 -1
- package/dist/aimock-cli.js +16 -2
- package/dist/aimock-cli.js.map +1 -1
- package/dist/api-key-auth.cjs +10 -9
- package/dist/api-key-auth.cjs.map +1 -1
- package/dist/api-key-auth.d.cts.map +1 -1
- package/dist/api-key-auth.d.ts.map +1 -1
- package/dist/api-key-auth.js +11 -10
- package/dist/api-key-auth.js.map +1 -1
- package/dist/batches.cjs +2 -4
- package/dist/batches.cjs.map +1 -1
- package/dist/batches.d.cts.map +1 -1
- package/dist/batches.d.ts.map +1 -1
- package/dist/batches.js +2 -4
- package/dist/batches.js.map +1 -1
- package/dist/bedrock-converse.cjs +61 -80
- package/dist/bedrock-converse.cjs.map +1 -1
- package/dist/bedrock-converse.d.cts.map +1 -1
- package/dist/bedrock-converse.d.ts.map +1 -1
- package/dist/bedrock-converse.js +58 -77
- package/dist/bedrock-converse.js.map +1 -1
- package/dist/bedrock.cjs +65 -97
- package/dist/bedrock.cjs.map +1 -1
- package/dist/bedrock.d.cts.map +1 -1
- package/dist/bedrock.d.ts.map +1 -1
- package/dist/bedrock.js +62 -94
- package/dist/bedrock.js.map +1 -1
- package/dist/byteplus-video.cjs +11 -10
- package/dist/byteplus-video.cjs.map +1 -1
- package/dist/byteplus-video.d.cts.map +1 -1
- package/dist/byteplus-video.d.ts.map +1 -1
- package/dist/byteplus-video.js +5 -4
- package/dist/byteplus-video.js.map +1 -1
- package/dist/chaos.cjs +5 -4
- package/dist/chaos.cjs.map +1 -1
- package/dist/chaos.d.cts.map +1 -1
- package/dist/chaos.d.ts.map +1 -1
- package/dist/chaos.js +5 -4
- package/dist/chaos.js.map +1 -1
- package/dist/cli.cjs +15 -0
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +15 -0
- package/dist/cli.js.map +1 -1
- package/dist/cohere.cjs +49 -74
- package/dist/cohere.cjs.map +1 -1
- package/dist/cohere.d.cts.map +1 -1
- package/dist/cohere.d.ts.map +1 -1
- package/dist/cohere.js +47 -72
- package/dist/cohere.js.map +1 -1
- package/dist/config-loader.cjs +29 -1
- package/dist/config-loader.cjs.map +1 -1
- package/dist/config-loader.d.cts +7 -1
- package/dist/config-loader.d.cts.map +1 -1
- package/dist/config-loader.d.ts +7 -1
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/config-loader.js +29 -2
- package/dist/config-loader.js.map +1 -1
- package/dist/count-tokens.cjs +146 -0
- package/dist/count-tokens.cjs.map +1 -0
- package/dist/count-tokens.js +146 -0
- package/dist/count-tokens.js.map +1 -0
- package/dist/elevenlabs-audio.cjs +36 -34
- package/dist/elevenlabs-audio.cjs.map +1 -1
- package/dist/elevenlabs-audio.d.cts.map +1 -1
- package/dist/elevenlabs-audio.d.ts.map +1 -1
- package/dist/elevenlabs-audio.js +33 -31
- package/dist/elevenlabs-audio.js.map +1 -1
- package/dist/elevenlabs-voice.cjs +38 -37
- package/dist/elevenlabs-voice.cjs.map +1 -1
- package/dist/elevenlabs-voice.d.cts.map +1 -1
- package/dist/elevenlabs-voice.d.ts.map +1 -1
- package/dist/elevenlabs-voice.js +33 -32
- package/dist/elevenlabs-voice.js.map +1 -1
- package/dist/embedding-request.cjs +16 -0
- package/dist/embedding-request.cjs.map +1 -0
- package/dist/embedding-request.js +14 -0
- package/dist/embedding-request.js.map +1 -0
- package/dist/embeddings.cjs +30 -20
- package/dist/embeddings.cjs.map +1 -1
- package/dist/embeddings.d.cts.map +1 -1
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +30 -20
- package/dist/embeddings.js.map +1 -1
- package/dist/fal-audio.cjs +45 -43
- package/dist/fal-audio.cjs.map +1 -1
- package/dist/fal-audio.d.cts.map +1 -1
- package/dist/fal-audio.d.ts.map +1 -1
- package/dist/fal-audio.js +42 -40
- package/dist/fal-audio.js.map +1 -1
- package/dist/fal.cjs +17 -15
- package/dist/fal.cjs.map +1 -1
- package/dist/fal.js +16 -14
- package/dist/fal.js.map +1 -1
- package/dist/files.cjs +2 -4
- package/dist/files.cjs.map +1 -1
- package/dist/files.d.cts.map +1 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +2 -4
- package/dist/files.js.map +1 -1
- package/dist/fine-tuning.cjs +2 -4
- package/dist/fine-tuning.cjs.map +1 -1
- package/dist/fine-tuning.d.cts.map +1 -1
- package/dist/fine-tuning.d.ts.map +1 -1
- package/dist/fine-tuning.js +2 -4
- package/dist/fine-tuning.js.map +1 -1
- package/dist/fixture-loader.cjs +37 -42
- package/dist/fixture-loader.cjs.map +1 -1
- package/dist/fixture-loader.d.cts.map +1 -1
- package/dist/fixture-loader.d.ts.map +1 -1
- package/dist/fixture-loader.js +37 -42
- package/dist/fixture-loader.js.map +1 -1
- package/dist/gemini-embeddings.cjs +26 -24
- package/dist/gemini-embeddings.cjs.map +1 -1
- package/dist/gemini-embeddings.js +26 -24
- package/dist/gemini-embeddings.js.map +1 -1
- package/dist/gemini-interactions.cjs +50 -35
- package/dist/gemini-interactions.cjs.map +1 -1
- package/dist/gemini-interactions.d.cts +0 -1
- package/dist/gemini-interactions.d.cts.map +1 -1
- package/dist/gemini-interactions.d.ts +0 -1
- package/dist/gemini-interactions.d.ts.map +1 -1
- package/dist/gemini-interactions.js +49 -34
- package/dist/gemini-interactions.js.map +1 -1
- package/dist/gemini.cjs +57 -67
- package/dist/gemini.cjs.map +1 -1
- package/dist/gemini.d.cts.map +1 -1
- package/dist/gemini.d.ts.map +1 -1
- package/dist/gemini.js +56 -67
- package/dist/gemini.js.map +1 -1
- package/dist/grok-video.cjs +14 -12
- package/dist/grok-video.cjs.map +1 -1
- package/dist/grok-video.d.cts.map +1 -1
- package/dist/grok-video.d.ts.map +1 -1
- package/dist/grok-video.js +8 -6
- package/dist/grok-video.js.map +1 -1
- package/dist/helpers.cjs +11 -68
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.cts.map +1 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +12 -67
- package/dist/helpers.js.map +1 -1
- package/dist/images.cjs +30 -28
- package/dist/images.cjs.map +1 -1
- package/dist/images.d.cts.map +1 -1
- package/dist/images.d.ts.map +1 -1
- package/dist/images.js +27 -25
- package/dist/images.js.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/journal.cjs +3 -1
- package/dist/journal.cjs.map +1 -1
- package/dist/journal.d.cts.map +1 -1
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +2 -1
- package/dist/journal.js.map +1 -1
- package/dist/llmock.cjs +3 -0
- package/dist/llmock.cjs.map +1 -1
- package/dist/llmock.d.cts.map +1 -1
- package/dist/llmock.d.ts.map +1 -1
- package/dist/llmock.js +3 -0
- package/dist/llmock.js.map +1 -1
- package/dist/mcp-handler.cjs +7 -3
- package/dist/mcp-handler.cjs.map +1 -1
- package/dist/mcp-handler.js +7 -3
- package/dist/mcp-handler.js.map +1 -1
- package/dist/mcp-recorder.cjs +2 -1
- package/dist/mcp-recorder.cjs.map +1 -1
- package/dist/mcp-recorder.js +3 -2
- package/dist/mcp-recorder.js.map +1 -1
- package/dist/messages.cjs +111 -96
- package/dist/messages.cjs.map +1 -1
- package/dist/messages.d.cts.map +1 -1
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +109 -95
- package/dist/messages.js.map +1 -1
- package/dist/metrics.cjs +5 -2
- package/dist/metrics.cjs.map +1 -1
- package/dist/metrics.d.cts.map +1 -1
- package/dist/metrics.d.ts.map +1 -1
- package/dist/metrics.js +6 -3
- package/dist/metrics.js.map +1 -1
- package/dist/model-utils.cjs +1 -0
- package/dist/model-utils.cjs.map +1 -1
- package/dist/model-utils.js +1 -1
- package/dist/model-utils.js.map +1 -1
- package/dist/moderation.cjs +15 -12
- package/dist/moderation.cjs.map +1 -1
- package/dist/moderation.js +14 -11
- package/dist/moderation.js.map +1 -1
- package/dist/ollama.cjs +128 -68
- package/dist/ollama.cjs.map +1 -1
- package/dist/ollama.d.cts.map +1 -1
- package/dist/ollama.d.ts.map +1 -1
- package/dist/ollama.js +124 -64
- package/dist/ollama.js.map +1 -1
- package/dist/openapi.cjs +323 -3
- package/dist/openapi.cjs.map +1 -1
- package/dist/openapi.d.cts.map +1 -1
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +324 -4
- package/dist/openapi.js.map +1 -1
- package/dist/openrouter-chat.cjs +11 -155
- package/dist/openrouter-chat.cjs.map +1 -1
- package/dist/openrouter-chat.js +11 -155
- package/dist/openrouter-chat.js.map +1 -1
- package/dist/openrouter-video.cjs +51 -74
- package/dist/openrouter-video.cjs.map +1 -1
- package/dist/openrouter-video.d.cts.map +1 -1
- package/dist/openrouter-video.d.ts.map +1 -1
- package/dist/openrouter-video.js +37 -60
- package/dist/openrouter-video.js.map +1 -1
- package/dist/recorder.cjs +176 -95
- package/dist/recorder.cjs.map +1 -1
- package/dist/recorder.d.cts.map +1 -1
- package/dist/recorder.d.ts.map +1 -1
- package/dist/recorder.js +176 -95
- package/dist/recorder.js.map +1 -1
- package/dist/rerank.cjs +13 -11
- package/dist/rerank.cjs.map +1 -1
- package/dist/rerank.js +12 -10
- package/dist/rerank.js.map +1 -1
- package/dist/response/catalog/anthropic-page.cjs +39 -0
- package/dist/response/catalog/anthropic-page.cjs.map +1 -0
- package/dist/response/catalog/anthropic-page.js +38 -0
- package/dist/response/catalog/anthropic-page.js.map +1 -0
- package/dist/response/catalog/collect.cjs +61 -0
- package/dist/response/catalog/collect.cjs.map +1 -0
- package/dist/response/catalog/collect.js +59 -0
- package/dist/response/catalog/collect.js.map +1 -0
- package/dist/response/catalog/gemini-page.cjs +25 -0
- package/dist/response/catalog/gemini-page.cjs.map +1 -0
- package/dist/response/catalog/gemini-page.js +24 -0
- package/dist/response/catalog/gemini-page.js.map +1 -0
- package/dist/response/catalog/render.cjs +182 -0
- package/dist/response/catalog/render.cjs.map +1 -0
- package/dist/response/catalog/render.js +171 -0
- package/dist/response/catalog/render.js.map +1 -0
- package/dist/response/errors.cjs +225 -0
- package/dist/response/errors.cjs.map +1 -0
- package/dist/response/errors.js +224 -0
- package/dist/response/errors.js.map +1 -0
- package/dist/response/finish.cjs +39 -0
- package/dist/response/finish.cjs.map +1 -0
- package/dist/response/finish.js +35 -0
- package/dist/response/finish.js.map +1 -0
- package/dist/response/policy.cjs +126 -0
- package/dist/response/policy.cjs.map +1 -0
- package/dist/response/policy.js +120 -0
- package/dist/response/policy.js.map +1 -0
- package/dist/response/profiles.cjs +69 -0
- package/dist/response/profiles.cjs.map +1 -0
- package/dist/response/profiles.js +65 -0
- package/dist/response/profiles.js.map +1 -0
- package/dist/response/usage/codecs/anthropic.cjs +52 -0
- package/dist/response/usage/codecs/anthropic.cjs.map +1 -0
- package/dist/response/usage/codecs/anthropic.js +50 -0
- package/dist/response/usage/codecs/anthropic.js.map +1 -0
- package/dist/response/usage/codecs/cohere.cjs +36 -0
- package/dist/response/usage/codecs/cohere.cjs.map +1 -0
- package/dist/response/usage/codecs/cohere.js +35 -0
- package/dist/response/usage/codecs/cohere.js.map +1 -0
- package/dist/response/usage/codecs/converse.cjs +16 -0
- package/dist/response/usage/codecs/converse.cjs.map +1 -0
- package/dist/response/usage/codecs/converse.js +15 -0
- package/dist/response/usage/codecs/converse.js.map +1 -0
- package/dist/response/usage/codecs/gemini.cjs +31 -0
- package/dist/response/usage/codecs/gemini.cjs.map +1 -0
- package/dist/response/usage/codecs/gemini.js +31 -0
- package/dist/response/usage/codecs/gemini.js.map +1 -0
- package/dist/response/usage/codecs/interactions.cjs +22 -0
- package/dist/response/usage/codecs/interactions.cjs.map +1 -0
- package/dist/response/usage/codecs/interactions.js +21 -0
- package/dist/response/usage/codecs/interactions.js.map +1 -0
- package/dist/response/usage/codecs/ollama.cjs +17 -0
- package/dist/response/usage/codecs/ollama.cjs.map +1 -0
- package/dist/response/usage/codecs/ollama.js +17 -0
- package/dist/response/usage/codecs/ollama.js.map +1 -0
- package/dist/response/usage/codecs/openai.cjs +52 -0
- package/dist/response/usage/codecs/openai.cjs.map +1 -0
- package/dist/response/usage/codecs/openai.js +50 -0
- package/dist/response/usage/codecs/openai.js.map +1 -0
- package/dist/response/usage/codecs/openrouter.cjs +68 -0
- package/dist/response/usage/codecs/openrouter.cjs.map +1 -0
- package/dist/response/usage/codecs/openrouter.js +67 -0
- package/dist/response/usage/codecs/openrouter.js.map +1 -0
- package/dist/response/usage/codecs/realtime.cjs +19 -0
- package/dist/response/usage/codecs/realtime.cjs.map +1 -0
- package/dist/response/usage/codecs/realtime.js +18 -0
- package/dist/response/usage/codecs/realtime.js.map +1 -0
- package/dist/response/usage/codecs/responses.cjs +21 -0
- package/dist/response/usage/codecs/responses.cjs.map +1 -0
- package/dist/response/usage/codecs/responses.js +20 -0
- package/dist/response/usage/codecs/responses.js.map +1 -0
- package/dist/response/usage/estimate.cjs +23 -0
- package/dist/response/usage/estimate.cjs.map +1 -0
- package/dist/response/usage/estimate.js +21 -0
- package/dist/response/usage/estimate.js.map +1 -0
- package/dist/response/usage/fields.cjs +72 -0
- package/dist/response/usage/fields.cjs.map +1 -0
- package/dist/response/usage/fields.js +70 -0
- package/dist/response/usage/fields.js.map +1 -0
- package/dist/response/usage/recording.cjs +52 -0
- package/dist/response/usage/recording.cjs.map +1 -0
- package/dist/response/usage/recording.js +52 -0
- package/dist/response/usage/recording.js.map +1 -0
- package/dist/responses.cjs +45 -58
- package/dist/responses.cjs.map +1 -1
- package/dist/responses.d.cts.map +1 -1
- package/dist/responses.d.ts.map +1 -1
- package/dist/responses.js +44 -57
- package/dist/responses.js.map +1 -1
- package/dist/route-registry.cjs +45 -0
- package/dist/route-registry.cjs.map +1 -1
- package/dist/route-registry.d.cts.map +1 -1
- package/dist/route-registry.d.ts.map +1 -1
- package/dist/route-registry.js +41 -1
- package/dist/route-registry.js.map +1 -1
- package/dist/router.cjs +4 -0
- package/dist/router.cjs.map +1 -1
- package/dist/router.d.cts.map +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +3 -0
- package/dist/router.js.map +1 -1
- package/dist/search.cjs +13 -11
- package/dist/search.cjs.map +1 -1
- package/dist/search.js +12 -10
- package/dist/search.js.map +1 -1
- package/dist/server.cjs +222 -146
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +223 -147
- package/dist/server.js.map +1 -1
- package/dist/speech.cjs +20 -18
- package/dist/speech.cjs.map +1 -1
- package/dist/speech.d.cts.map +1 -1
- package/dist/speech.d.ts.map +1 -1
- package/dist/speech.js +19 -17
- package/dist/speech.js.map +1 -1
- package/dist/sse-writer.cjs +7 -0
- package/dist/sse-writer.cjs.map +1 -1
- package/dist/sse-writer.d.cts.map +1 -1
- package/dist/sse-writer.d.ts.map +1 -1
- package/dist/sse-writer.js +7 -1
- package/dist/sse-writer.js.map +1 -1
- package/dist/stream-collapse.cjs +118 -11
- package/dist/stream-collapse.cjs.map +1 -1
- package/dist/stream-collapse.d.cts +10 -9
- package/dist/stream-collapse.d.cts.map +1 -1
- package/dist/stream-collapse.d.ts +10 -9
- package/dist/stream-collapse.d.ts.map +1 -1
- package/dist/stream-collapse.js +118 -11
- package/dist/stream-collapse.js.map +1 -1
- package/dist/transcription.cjs +12 -10
- package/dist/transcription.cjs.map +1 -1
- package/dist/transcription.d.cts.map +1 -1
- package/dist/transcription.d.ts.map +1 -1
- package/dist/transcription.js +11 -9
- package/dist/transcription.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +62 -3
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +62 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vector-mock.cjs +3 -8
- package/dist/vector-mock.cjs.map +1 -1
- package/dist/vector-mock.d.cts.map +1 -1
- package/dist/vector-mock.d.ts.map +1 -1
- package/dist/vector-mock.js +3 -8
- package/dist/vector-mock.js.map +1 -1
- package/dist/vector-stores.cjs +2 -4
- package/dist/vector-stores.cjs.map +1 -1
- package/dist/vector-stores.d.cts.map +1 -1
- package/dist/vector-stores.d.ts.map +1 -1
- package/dist/vector-stores.js +2 -4
- package/dist/vector-stores.js.map +1 -1
- package/dist/veo-video.cjs +16 -14
- package/dist/veo-video.cjs.map +1 -1
- package/dist/veo-video.js +10 -8
- package/dist/veo-video.js.map +1 -1
- package/dist/video.cjs +21 -19
- package/dist/video.cjs.map +1 -1
- package/dist/video.d.cts.map +1 -1
- package/dist/video.d.ts.map +1 -1
- package/dist/video.js +20 -18
- package/dist/video.js.map +1 -1
- package/dist/ws-gemini-live.cjs +11 -3
- package/dist/ws-gemini-live.cjs.map +1 -1
- package/dist/ws-gemini-live.d.cts +0 -1
- package/dist/ws-gemini-live.d.cts.map +1 -1
- package/dist/ws-gemini-live.d.ts +0 -1
- package/dist/ws-gemini-live.d.ts.map +1 -1
- package/dist/ws-gemini-live.js +10 -2
- package/dist/ws-gemini-live.js.map +1 -1
- package/dist/ws-live.cjs +6 -5
- package/dist/ws-live.cjs.map +1 -1
- package/dist/ws-live.js +5 -4
- package/dist/ws-live.js.map +1 -1
- package/dist/ws-realtime.cjs +28 -54
- package/dist/ws-realtime.cjs.map +1 -1
- package/dist/ws-realtime.d.cts.map +1 -1
- package/dist/ws-realtime.d.ts.map +1 -1
- package/dist/ws-realtime.js +25 -51
- package/dist/ws-realtime.js.map +1 -1
- package/dist/ws-responses.cjs +8 -6
- package/dist/ws-responses.cjs.map +1 -1
- package/dist/ws-responses.js +7 -5
- package/dist/ws-responses.js.map +1 -1
- package/package.json +4 -1
- package/skills/write-fixtures/SKILL.md +25 -16
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/response/profiles.ts
|
|
3
|
+
/** Inbound HTTP auth uses only provider-owned paths; shared routes stay legacy. */
|
|
4
|
+
function authErrorDialectForPath(pathname) {
|
|
5
|
+
if (pathname === "/v1/messages" || pathname === "/v1/messages/count_tokens") return "messages";
|
|
6
|
+
if (pathname.startsWith("/v1beta/") || /^\/v1\/projects\/[^/]+\/locations\/[^/]+\/publishers\/google\//.test(pathname)) return "gemini";
|
|
7
|
+
return "openai";
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Shared catalog response dialect. The list route uses it only under
|
|
11
|
+
* `policy.modelCatalog: "native"`. Auth retains its pathname-selected dialect.
|
|
12
|
+
*/
|
|
13
|
+
function isAnthropicModelRequest(headers) {
|
|
14
|
+
return headers["anthropic-version"] !== void 0 || headers["x-api-key"] !== void 0 && headers.authorization === void 0;
|
|
15
|
+
}
|
|
16
|
+
/** Static wire facts only. Status selection and transport behavior belong to callers. */
|
|
17
|
+
const errorProfiles = {
|
|
18
|
+
openai: {
|
|
19
|
+
fixtureType: "server_error",
|
|
20
|
+
validationType: "invalid_request_error"
|
|
21
|
+
},
|
|
22
|
+
messages: {
|
|
23
|
+
fixtureType: "api_error",
|
|
24
|
+
validationType: "invalid_request_error",
|
|
25
|
+
requiredHeaders: ["anthropic-version"]
|
|
26
|
+
},
|
|
27
|
+
bedrock: {
|
|
28
|
+
fixtureType: "api_error",
|
|
29
|
+
validationType: "invalid_request_error",
|
|
30
|
+
toolArgumentType: "InternalServerException"
|
|
31
|
+
},
|
|
32
|
+
"bedrock-converse": {
|
|
33
|
+
fixtureType: "api_error",
|
|
34
|
+
validationType: "invalid_request_error",
|
|
35
|
+
toolArgumentType: "InternalServerException"
|
|
36
|
+
},
|
|
37
|
+
ollama: {
|
|
38
|
+
fixtureType: "server_error",
|
|
39
|
+
validationType: "invalid_request_error"
|
|
40
|
+
},
|
|
41
|
+
"ollama-embed": {
|
|
42
|
+
fixtureType: "server_error",
|
|
43
|
+
validationType: "invalid_request_error"
|
|
44
|
+
},
|
|
45
|
+
cohere: {
|
|
46
|
+
fixtureType: "server_error",
|
|
47
|
+
validationType: "invalid_request_error"
|
|
48
|
+
},
|
|
49
|
+
interactions: {
|
|
50
|
+
fixtureType: "server_error",
|
|
51
|
+
validationType: "invalid_request_error"
|
|
52
|
+
},
|
|
53
|
+
gemini: {
|
|
54
|
+
fixtureType: "server_error",
|
|
55
|
+
validationType: "invalid_request_error"
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
/** Bedrock's body-level version and other wire families have no header requirement. */
|
|
59
|
+
function missingRequiredHeader(wire, headers) {
|
|
60
|
+
if (wire !== "messages") return;
|
|
61
|
+
return errorProfiles.messages.requiredHeaders.find((name) => headers[name] === void 0);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
//#endregion
|
|
65
|
+
exports.authErrorDialectForPath = authErrorDialectForPath;
|
|
66
|
+
exports.errorProfiles = errorProfiles;
|
|
67
|
+
exports.isAnthropicModelRequest = isAnthropicModelRequest;
|
|
68
|
+
exports.missingRequiredHeader = missingRequiredHeader;
|
|
69
|
+
//# sourceMappingURL=profiles.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.cjs","names":[],"sources":["../../src/response/profiles.ts"],"sourcesContent":["import type { IncomingHttpHeaders } from \"node:http\";\n\n/** Inbound HTTP auth uses only provider-owned paths; shared routes stay legacy. */\nexport function authErrorDialectForPath(pathname: string): \"messages\" | \"gemini\" | \"openai\" {\n if (pathname === \"/v1/messages\" || pathname === \"/v1/messages/count_tokens\") return \"messages\";\n if (\n pathname.startsWith(\"/v1beta/\") ||\n /^\\/v1\\/projects\\/[^/]+\\/locations\\/[^/]+\\/publishers\\/google\\//.test(pathname)\n )\n return \"gemini\";\n return \"openai\";\n}\n\n/**\n * Shared catalog response dialect. The list route uses it only under\n * `policy.modelCatalog: \"native\"`. Auth retains its pathname-selected dialect.\n */\nexport function isAnthropicModelRequest(headers: IncomingHttpHeaders): boolean {\n return (\n headers[\"anthropic-version\"] !== undefined ||\n (headers[\"x-api-key\"] !== undefined && headers.authorization === undefined)\n );\n}\n\n/** Static wire facts only. Status selection and transport behavior belong to callers. */\nexport const errorProfiles = {\n openai: { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n messages: {\n fixtureType: \"api_error\",\n validationType: \"invalid_request_error\",\n requiredHeaders: [\"anthropic-version\"],\n },\n bedrock: {\n fixtureType: \"api_error\",\n validationType: \"invalid_request_error\",\n toolArgumentType: \"InternalServerException\",\n },\n \"bedrock-converse\": {\n fixtureType: \"api_error\",\n validationType: \"invalid_request_error\",\n toolArgumentType: \"InternalServerException\",\n },\n ollama: { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n \"ollama-embed\": { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n cohere: { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n interactions: { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n gemini: { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n} as const;\n\nexport type ErrorWire = keyof typeof errorProfiles;\n\n/** Bedrock's body-level version and other wire families have no header requirement. */\nexport function missingRequiredHeader(\n wire: ErrorWire,\n headers: IncomingHttpHeaders,\n): string | undefined {\n if (wire !== \"messages\") return;\n return errorProfiles.messages.requiredHeaders.find((name) => headers[name] === undefined);\n}\n"],"mappings":";;;AAGA,SAAgB,wBAAwB,UAAoD;AAC1F,KAAI,aAAa,kBAAkB,aAAa,4BAA6B,QAAO;AACpF,KACE,SAAS,WAAW,WAAW,IAC/B,iEAAiE,KAAK,SAAS,CAE/E,QAAO;AACT,QAAO;;;;;;AAOT,SAAgB,wBAAwB,SAAuC;AAC7E,QACE,QAAQ,yBAAyB,UAChC,QAAQ,iBAAiB,UAAa,QAAQ,kBAAkB;;;AAKrE,MAAa,gBAAgB;CAC3B,QAAQ;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CAChF,UAAU;EACR,aAAa;EACb,gBAAgB;EAChB,iBAAiB,CAAC,oBAAoB;EACvC;CACD,SAAS;EACP,aAAa;EACb,gBAAgB;EAChB,kBAAkB;EACnB;CACD,oBAAoB;EAClB,aAAa;EACb,gBAAgB;EAChB,kBAAkB;EACnB;CACD,QAAQ;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CAChF,gBAAgB;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CACxF,QAAQ;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CAChF,cAAc;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CACtF,QAAQ;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CACjF;;AAKD,SAAgB,sBACd,MACA,SACoB;AACpB,KAAI,SAAS,WAAY;AACzB,QAAO,cAAc,SAAS,gBAAgB,MAAM,SAAS,QAAQ,UAAU,OAAU"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
//#region src/response/profiles.ts
|
|
2
|
+
/** Inbound HTTP auth uses only provider-owned paths; shared routes stay legacy. */
|
|
3
|
+
function authErrorDialectForPath(pathname) {
|
|
4
|
+
if (pathname === "/v1/messages" || pathname === "/v1/messages/count_tokens") return "messages";
|
|
5
|
+
if (pathname.startsWith("/v1beta/") || /^\/v1\/projects\/[^/]+\/locations\/[^/]+\/publishers\/google\//.test(pathname)) return "gemini";
|
|
6
|
+
return "openai";
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Shared catalog response dialect. The list route uses it only under
|
|
10
|
+
* `policy.modelCatalog: "native"`. Auth retains its pathname-selected dialect.
|
|
11
|
+
*/
|
|
12
|
+
function isAnthropicModelRequest(headers) {
|
|
13
|
+
return headers["anthropic-version"] !== void 0 || headers["x-api-key"] !== void 0 && headers.authorization === void 0;
|
|
14
|
+
}
|
|
15
|
+
/** Static wire facts only. Status selection and transport behavior belong to callers. */
|
|
16
|
+
const errorProfiles = {
|
|
17
|
+
openai: {
|
|
18
|
+
fixtureType: "server_error",
|
|
19
|
+
validationType: "invalid_request_error"
|
|
20
|
+
},
|
|
21
|
+
messages: {
|
|
22
|
+
fixtureType: "api_error",
|
|
23
|
+
validationType: "invalid_request_error",
|
|
24
|
+
requiredHeaders: ["anthropic-version"]
|
|
25
|
+
},
|
|
26
|
+
bedrock: {
|
|
27
|
+
fixtureType: "api_error",
|
|
28
|
+
validationType: "invalid_request_error",
|
|
29
|
+
toolArgumentType: "InternalServerException"
|
|
30
|
+
},
|
|
31
|
+
"bedrock-converse": {
|
|
32
|
+
fixtureType: "api_error",
|
|
33
|
+
validationType: "invalid_request_error",
|
|
34
|
+
toolArgumentType: "InternalServerException"
|
|
35
|
+
},
|
|
36
|
+
ollama: {
|
|
37
|
+
fixtureType: "server_error",
|
|
38
|
+
validationType: "invalid_request_error"
|
|
39
|
+
},
|
|
40
|
+
"ollama-embed": {
|
|
41
|
+
fixtureType: "server_error",
|
|
42
|
+
validationType: "invalid_request_error"
|
|
43
|
+
},
|
|
44
|
+
cohere: {
|
|
45
|
+
fixtureType: "server_error",
|
|
46
|
+
validationType: "invalid_request_error"
|
|
47
|
+
},
|
|
48
|
+
interactions: {
|
|
49
|
+
fixtureType: "server_error",
|
|
50
|
+
validationType: "invalid_request_error"
|
|
51
|
+
},
|
|
52
|
+
gemini: {
|
|
53
|
+
fixtureType: "server_error",
|
|
54
|
+
validationType: "invalid_request_error"
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
/** Bedrock's body-level version and other wire families have no header requirement. */
|
|
58
|
+
function missingRequiredHeader(wire, headers) {
|
|
59
|
+
if (wire !== "messages") return;
|
|
60
|
+
return errorProfiles.messages.requiredHeaders.find((name) => headers[name] === void 0);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
//#endregion
|
|
64
|
+
export { authErrorDialectForPath, errorProfiles, isAnthropicModelRequest, missingRequiredHeader };
|
|
65
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","names":[],"sources":["../../src/response/profiles.ts"],"sourcesContent":["import type { IncomingHttpHeaders } from \"node:http\";\n\n/** Inbound HTTP auth uses only provider-owned paths; shared routes stay legacy. */\nexport function authErrorDialectForPath(pathname: string): \"messages\" | \"gemini\" | \"openai\" {\n if (pathname === \"/v1/messages\" || pathname === \"/v1/messages/count_tokens\") return \"messages\";\n if (\n pathname.startsWith(\"/v1beta/\") ||\n /^\\/v1\\/projects\\/[^/]+\\/locations\\/[^/]+\\/publishers\\/google\\//.test(pathname)\n )\n return \"gemini\";\n return \"openai\";\n}\n\n/**\n * Shared catalog response dialect. The list route uses it only under\n * `policy.modelCatalog: \"native\"`. Auth retains its pathname-selected dialect.\n */\nexport function isAnthropicModelRequest(headers: IncomingHttpHeaders): boolean {\n return (\n headers[\"anthropic-version\"] !== undefined ||\n (headers[\"x-api-key\"] !== undefined && headers.authorization === undefined)\n );\n}\n\n/** Static wire facts only. Status selection and transport behavior belong to callers. */\nexport const errorProfiles = {\n openai: { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n messages: {\n fixtureType: \"api_error\",\n validationType: \"invalid_request_error\",\n requiredHeaders: [\"anthropic-version\"],\n },\n bedrock: {\n fixtureType: \"api_error\",\n validationType: \"invalid_request_error\",\n toolArgumentType: \"InternalServerException\",\n },\n \"bedrock-converse\": {\n fixtureType: \"api_error\",\n validationType: \"invalid_request_error\",\n toolArgumentType: \"InternalServerException\",\n },\n ollama: { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n \"ollama-embed\": { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n cohere: { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n interactions: { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n gemini: { fixtureType: \"server_error\", validationType: \"invalid_request_error\" },\n} as const;\n\nexport type ErrorWire = keyof typeof errorProfiles;\n\n/** Bedrock's body-level version and other wire families have no header requirement. */\nexport function missingRequiredHeader(\n wire: ErrorWire,\n headers: IncomingHttpHeaders,\n): string | undefined {\n if (wire !== \"messages\") return;\n return errorProfiles.messages.requiredHeaders.find((name) => headers[name] === undefined);\n}\n"],"mappings":";;AAGA,SAAgB,wBAAwB,UAAoD;AAC1F,KAAI,aAAa,kBAAkB,aAAa,4BAA6B,QAAO;AACpF,KACE,SAAS,WAAW,WAAW,IAC/B,iEAAiE,KAAK,SAAS,CAE/E,QAAO;AACT,QAAO;;;;;;AAOT,SAAgB,wBAAwB,SAAuC;AAC7E,QACE,QAAQ,yBAAyB,UAChC,QAAQ,iBAAiB,UAAa,QAAQ,kBAAkB;;;AAKrE,MAAa,gBAAgB;CAC3B,QAAQ;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CAChF,UAAU;EACR,aAAa;EACb,gBAAgB;EAChB,iBAAiB,CAAC,oBAAoB;EACvC;CACD,SAAS;EACP,aAAa;EACb,gBAAgB;EAChB,kBAAkB;EACnB;CACD,oBAAoB;EAClB,aAAa;EACb,gBAAgB;EAChB,kBAAkB;EACnB;CACD,QAAQ;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CAChF,gBAAgB;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CACxF,QAAQ;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CAChF,cAAc;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CACtF,QAAQ;EAAE,aAAa;EAAgB,gBAAgB;EAAyB;CACjF;;AAKD,SAAgB,sBACd,MACA,SACoB;AACpB,KAAI,SAAS,WAAY;AACzB,QAAO,cAAc,SAAS,gBAAgB,MAAM,SAAS,QAAQ,UAAU,OAAU"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const require_fields = require('../fields.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/response/usage/codecs/anthropic.ts
|
|
4
|
+
/** Retain native supplied values and insertion order alongside the serving counts. */
|
|
5
|
+
function resolve(overrides, estimates) {
|
|
6
|
+
const native = overrides?.usage;
|
|
7
|
+
return {
|
|
8
|
+
native,
|
|
9
|
+
supplied: native !== void 0,
|
|
10
|
+
inputTokens: estimates?.inputTokens ?? native?.input_tokens ?? native?.prompt_tokens ?? 0,
|
|
11
|
+
outputTokens: estimates?.outputTokens ?? native?.output_tokens ?? native?.completion_tokens ?? 0
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function render(resolved, position, variant = "ordinary") {
|
|
15
|
+
const cache = {};
|
|
16
|
+
if (variant === "ordinary") {
|
|
17
|
+
const native = resolved.native;
|
|
18
|
+
if (native?.cache_read_input_tokens !== void 0) cache.cache_read_input_tokens = native.cache_read_input_tokens;
|
|
19
|
+
if (native?.cache_creation_input_tokens !== void 0) cache.cache_creation_input_tokens = native.cache_creation_input_tokens;
|
|
20
|
+
const creation = native?.cache_creation;
|
|
21
|
+
if (position !== "messages-delta" && position !== "bedrock-delta" && typeof creation === "object" && creation !== null && !Array.isArray(creation)) {
|
|
22
|
+
const members = creation;
|
|
23
|
+
cache.cache_creation = {
|
|
24
|
+
ephemeral_5m_input_tokens: typeof members.ephemeral_5m_input_tokens === "number" ? members.ephemeral_5m_input_tokens : 0,
|
|
25
|
+
ephemeral_1h_input_tokens: typeof members.ephemeral_1h_input_tokens === "number" ? members.ephemeral_1h_input_tokens : 0
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (position === "messages-delta" || position === "bedrock-delta") return {
|
|
30
|
+
output_tokens: position === "bedrock-delta" && variant === "ordinary" ? 0 : resolved.outputTokens,
|
|
31
|
+
...cache
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
input_tokens: resolved.inputTokens,
|
|
35
|
+
output_tokens: resolved.outputTokens,
|
|
36
|
+
...cache
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Numeric observations replace earlier counts; null never erases a start value. */
|
|
40
|
+
function capture(previous, observation, position = "final") {
|
|
41
|
+
if (typeof observation !== "object" || observation === null || Array.isArray(observation)) return previous;
|
|
42
|
+
const merged = { ...previous };
|
|
43
|
+
for (const [key, value] of Object.entries(observation)) if (typeof value === "number") merged[key] = value;
|
|
44
|
+
else if (key === "cache_creation" && position !== "delta" && typeof value === "object" && value !== null && !Array.isArray(value)) merged[key] = value;
|
|
45
|
+
return require_fields.sanitizeUsage(merged);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
//#endregion
|
|
49
|
+
exports.capture = capture;
|
|
50
|
+
exports.render = render;
|
|
51
|
+
exports.resolve = resolve;
|
|
52
|
+
//# sourceMappingURL=anthropic.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.cjs","names":["sanitizeUsage"],"sources":["../../../../src/response/usage/codecs/anthropic.ts"],"sourcesContent":["import type { ResponseOverrides } from \"../../../types.js\";\nimport { sanitizeUsage } from \"../fields.js\";\n\ntype CacheUsage = {\n cache_read_input_tokens?: unknown;\n cache_creation_input_tokens?: unknown;\n cache_creation?: { ephemeral_5m_input_tokens: number; ephemeral_1h_input_tokens: number };\n};\ntype AnthropicUsage = { input_tokens: number; output_tokens: number } & CacheUsage;\ntype AnthropicDeltaUsage = { output_tokens: number } & CacheUsage;\ntype FinalPosition = \"messages-final\" | \"messages-start\" | \"bedrock-final\" | \"bedrock-start\";\ntype DeltaPosition = \"messages-delta\" | \"bedrock-delta\";\ntype Variant = \"ordinary\" | \"applied-misbehavior\";\n\n/** Retain native supplied values and insertion order alongside the serving counts. */\nexport function resolve(\n overrides?: ResponseOverrides,\n estimates?: { inputTokens: number; outputTokens: number },\n) {\n const native = overrides?.usage;\n return {\n native,\n supplied: native !== undefined,\n inputTokens: estimates?.inputTokens ?? native?.input_tokens ?? native?.prompt_tokens ?? 0,\n outputTokens:\n estimates?.outputTokens ?? native?.output_tokens ?? native?.completion_tokens ?? 0,\n };\n}\n\nexport function render(\n resolved: ReturnType<typeof resolve>,\n position: FinalPosition,\n variant?: Variant,\n): AnthropicUsage;\nexport function render(\n resolved: ReturnType<typeof resolve>,\n position: DeltaPosition,\n variant?: Variant,\n): AnthropicDeltaUsage;\nexport function render(\n resolved: ReturnType<typeof resolve>,\n position: FinalPosition | DeltaPosition,\n variant: Variant = \"ordinary\",\n): AnthropicUsage | AnthropicDeltaUsage {\n const cache: CacheUsage = {};\n if (variant === \"ordinary\") {\n const native = resolved.native;\n if (native?.cache_read_input_tokens !== undefined)\n cache.cache_read_input_tokens = native.cache_read_input_tokens;\n if (native?.cache_creation_input_tokens !== undefined)\n cache.cache_creation_input_tokens = native.cache_creation_input_tokens;\n const creation = native?.cache_creation;\n if (\n position !== \"messages-delta\" &&\n position !== \"bedrock-delta\" &&\n typeof creation === \"object\" &&\n creation !== null &&\n !Array.isArray(creation)\n ) {\n const members = creation as Record<string, unknown>;\n cache.cache_creation = {\n ephemeral_5m_input_tokens:\n typeof members.ephemeral_5m_input_tokens === \"number\"\n ? members.ephemeral_5m_input_tokens\n : 0,\n ephemeral_1h_input_tokens:\n typeof members.ephemeral_1h_input_tokens === \"number\"\n ? members.ephemeral_1h_input_tokens\n : 0,\n };\n }\n }\n if (position === \"messages-delta\" || position === \"bedrock-delta\") {\n return {\n output_tokens:\n position === \"bedrock-delta\" && variant === \"ordinary\" ? 0 : resolved.outputTokens,\n ...cache,\n };\n }\n return { input_tokens: resolved.inputTokens, output_tokens: resolved.outputTokens, ...cache };\n}\n\n/** Numeric observations replace earlier counts; null never erases a start value. */\nexport function capture(\n previous: ResponseOverrides[\"usage\"],\n observation: unknown,\n position: \"start\" | \"delta\" | \"final\" = \"final\",\n): ResponseOverrides[\"usage\"] | undefined {\n if (typeof observation !== \"object\" || observation === null || Array.isArray(observation))\n return previous;\n const merged: Record<string, unknown> = { ...previous };\n for (const [key, value] of Object.entries(observation)) {\n if (typeof value === \"number\") merged[key] = value;\n else if (\n key === \"cache_creation\" &&\n position !== \"delta\" &&\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value)\n )\n merged[key] = value;\n }\n return sanitizeUsage(merged);\n}\n"],"mappings":";;;;AAeA,SAAgB,QACd,WACA,WACA;CACA,MAAM,SAAS,WAAW;AAC1B,QAAO;EACL;EACA,UAAU,WAAW;EACrB,aAAa,WAAW,eAAe,QAAQ,gBAAgB,QAAQ,iBAAiB;EACxF,cACE,WAAW,gBAAgB,QAAQ,iBAAiB,QAAQ,qBAAqB;EACpF;;AAaH,SAAgB,OACd,UACA,UACA,UAAmB,YACmB;CACtC,MAAM,QAAoB,EAAE;AAC5B,KAAI,YAAY,YAAY;EAC1B,MAAM,SAAS,SAAS;AACxB,MAAI,QAAQ,4BAA4B,OACtC,OAAM,0BAA0B,OAAO;AACzC,MAAI,QAAQ,gCAAgC,OAC1C,OAAM,8BAA8B,OAAO;EAC7C,MAAM,WAAW,QAAQ;AACzB,MACE,aAAa,oBACb,aAAa,mBACb,OAAO,aAAa,YACpB,aAAa,QACb,CAAC,MAAM,QAAQ,SAAS,EACxB;GACA,MAAM,UAAU;AAChB,SAAM,iBAAiB;IACrB,2BACE,OAAO,QAAQ,8BAA8B,WACzC,QAAQ,4BACR;IACN,2BACE,OAAO,QAAQ,8BAA8B,WACzC,QAAQ,4BACR;IACP;;;AAGL,KAAI,aAAa,oBAAoB,aAAa,gBAChD,QAAO;EACL,eACE,aAAa,mBAAmB,YAAY,aAAa,IAAI,SAAS;EACxE,GAAG;EACJ;AAEH,QAAO;EAAE,cAAc,SAAS;EAAa,eAAe,SAAS;EAAc,GAAG;EAAO;;;AAI/F,SAAgB,QACd,UACA,aACA,WAAwC,SACA;AACxC,KAAI,OAAO,gBAAgB,YAAY,gBAAgB,QAAQ,MAAM,QAAQ,YAAY,CACvF,QAAO;CACT,MAAM,SAAkC,EAAE,GAAG,UAAU;AACvD,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,YAAY,CACpD,KAAI,OAAO,UAAU,SAAU,QAAO,OAAO;UAE3C,QAAQ,oBACR,aAAa,WACb,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,MAAM,CAErB,QAAO,OAAO;AAElB,QAAOA,6BAAc,OAAO"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { sanitizeUsage } from "../fields.js";
|
|
2
|
+
|
|
3
|
+
//#region src/response/usage/codecs/anthropic.ts
|
|
4
|
+
/** Retain native supplied values and insertion order alongside the serving counts. */
|
|
5
|
+
function resolve(overrides, estimates) {
|
|
6
|
+
const native = overrides?.usage;
|
|
7
|
+
return {
|
|
8
|
+
native,
|
|
9
|
+
supplied: native !== void 0,
|
|
10
|
+
inputTokens: estimates?.inputTokens ?? native?.input_tokens ?? native?.prompt_tokens ?? 0,
|
|
11
|
+
outputTokens: estimates?.outputTokens ?? native?.output_tokens ?? native?.completion_tokens ?? 0
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function render(resolved, position, variant = "ordinary") {
|
|
15
|
+
const cache = {};
|
|
16
|
+
if (variant === "ordinary") {
|
|
17
|
+
const native = resolved.native;
|
|
18
|
+
if (native?.cache_read_input_tokens !== void 0) cache.cache_read_input_tokens = native.cache_read_input_tokens;
|
|
19
|
+
if (native?.cache_creation_input_tokens !== void 0) cache.cache_creation_input_tokens = native.cache_creation_input_tokens;
|
|
20
|
+
const creation = native?.cache_creation;
|
|
21
|
+
if (position !== "messages-delta" && position !== "bedrock-delta" && typeof creation === "object" && creation !== null && !Array.isArray(creation)) {
|
|
22
|
+
const members = creation;
|
|
23
|
+
cache.cache_creation = {
|
|
24
|
+
ephemeral_5m_input_tokens: typeof members.ephemeral_5m_input_tokens === "number" ? members.ephemeral_5m_input_tokens : 0,
|
|
25
|
+
ephemeral_1h_input_tokens: typeof members.ephemeral_1h_input_tokens === "number" ? members.ephemeral_1h_input_tokens : 0
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (position === "messages-delta" || position === "bedrock-delta") return {
|
|
30
|
+
output_tokens: position === "bedrock-delta" && variant === "ordinary" ? 0 : resolved.outputTokens,
|
|
31
|
+
...cache
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
input_tokens: resolved.inputTokens,
|
|
35
|
+
output_tokens: resolved.outputTokens,
|
|
36
|
+
...cache
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Numeric observations replace earlier counts; null never erases a start value. */
|
|
40
|
+
function capture(previous, observation, position = "final") {
|
|
41
|
+
if (typeof observation !== "object" || observation === null || Array.isArray(observation)) return previous;
|
|
42
|
+
const merged = { ...previous };
|
|
43
|
+
for (const [key, value] of Object.entries(observation)) if (typeof value === "number") merged[key] = value;
|
|
44
|
+
else if (key === "cache_creation" && position !== "delta" && typeof value === "object" && value !== null && !Array.isArray(value)) merged[key] = value;
|
|
45
|
+
return sanitizeUsage(merged);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
//#endregion
|
|
49
|
+
export { capture, render, resolve };
|
|
50
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","names":[],"sources":["../../../../src/response/usage/codecs/anthropic.ts"],"sourcesContent":["import type { ResponseOverrides } from \"../../../types.js\";\nimport { sanitizeUsage } from \"../fields.js\";\n\ntype CacheUsage = {\n cache_read_input_tokens?: unknown;\n cache_creation_input_tokens?: unknown;\n cache_creation?: { ephemeral_5m_input_tokens: number; ephemeral_1h_input_tokens: number };\n};\ntype AnthropicUsage = { input_tokens: number; output_tokens: number } & CacheUsage;\ntype AnthropicDeltaUsage = { output_tokens: number } & CacheUsage;\ntype FinalPosition = \"messages-final\" | \"messages-start\" | \"bedrock-final\" | \"bedrock-start\";\ntype DeltaPosition = \"messages-delta\" | \"bedrock-delta\";\ntype Variant = \"ordinary\" | \"applied-misbehavior\";\n\n/** Retain native supplied values and insertion order alongside the serving counts. */\nexport function resolve(\n overrides?: ResponseOverrides,\n estimates?: { inputTokens: number; outputTokens: number },\n) {\n const native = overrides?.usage;\n return {\n native,\n supplied: native !== undefined,\n inputTokens: estimates?.inputTokens ?? native?.input_tokens ?? native?.prompt_tokens ?? 0,\n outputTokens:\n estimates?.outputTokens ?? native?.output_tokens ?? native?.completion_tokens ?? 0,\n };\n}\n\nexport function render(\n resolved: ReturnType<typeof resolve>,\n position: FinalPosition,\n variant?: Variant,\n): AnthropicUsage;\nexport function render(\n resolved: ReturnType<typeof resolve>,\n position: DeltaPosition,\n variant?: Variant,\n): AnthropicDeltaUsage;\nexport function render(\n resolved: ReturnType<typeof resolve>,\n position: FinalPosition | DeltaPosition,\n variant: Variant = \"ordinary\",\n): AnthropicUsage | AnthropicDeltaUsage {\n const cache: CacheUsage = {};\n if (variant === \"ordinary\") {\n const native = resolved.native;\n if (native?.cache_read_input_tokens !== undefined)\n cache.cache_read_input_tokens = native.cache_read_input_tokens;\n if (native?.cache_creation_input_tokens !== undefined)\n cache.cache_creation_input_tokens = native.cache_creation_input_tokens;\n const creation = native?.cache_creation;\n if (\n position !== \"messages-delta\" &&\n position !== \"bedrock-delta\" &&\n typeof creation === \"object\" &&\n creation !== null &&\n !Array.isArray(creation)\n ) {\n const members = creation as Record<string, unknown>;\n cache.cache_creation = {\n ephemeral_5m_input_tokens:\n typeof members.ephemeral_5m_input_tokens === \"number\"\n ? members.ephemeral_5m_input_tokens\n : 0,\n ephemeral_1h_input_tokens:\n typeof members.ephemeral_1h_input_tokens === \"number\"\n ? members.ephemeral_1h_input_tokens\n : 0,\n };\n }\n }\n if (position === \"messages-delta\" || position === \"bedrock-delta\") {\n return {\n output_tokens:\n position === \"bedrock-delta\" && variant === \"ordinary\" ? 0 : resolved.outputTokens,\n ...cache,\n };\n }\n return { input_tokens: resolved.inputTokens, output_tokens: resolved.outputTokens, ...cache };\n}\n\n/** Numeric observations replace earlier counts; null never erases a start value. */\nexport function capture(\n previous: ResponseOverrides[\"usage\"],\n observation: unknown,\n position: \"start\" | \"delta\" | \"final\" = \"final\",\n): ResponseOverrides[\"usage\"] | undefined {\n if (typeof observation !== \"object\" || observation === null || Array.isArray(observation))\n return previous;\n const merged: Record<string, unknown> = { ...previous };\n for (const [key, value] of Object.entries(observation)) {\n if (typeof value === \"number\") merged[key] = value;\n else if (\n key === \"cache_creation\" &&\n position !== \"delta\" &&\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value)\n )\n merged[key] = value;\n }\n return sanitizeUsage(merged);\n}\n"],"mappings":";;;;AAeA,SAAgB,QACd,WACA,WACA;CACA,MAAM,SAAS,WAAW;AAC1B,QAAO;EACL;EACA,UAAU,WAAW;EACrB,aAAa,WAAW,eAAe,QAAQ,gBAAgB,QAAQ,iBAAiB;EACxF,cACE,WAAW,gBAAgB,QAAQ,iBAAiB,QAAQ,qBAAqB;EACpF;;AAaH,SAAgB,OACd,UACA,UACA,UAAmB,YACmB;CACtC,MAAM,QAAoB,EAAE;AAC5B,KAAI,YAAY,YAAY;EAC1B,MAAM,SAAS,SAAS;AACxB,MAAI,QAAQ,4BAA4B,OACtC,OAAM,0BAA0B,OAAO;AACzC,MAAI,QAAQ,gCAAgC,OAC1C,OAAM,8BAA8B,OAAO;EAC7C,MAAM,WAAW,QAAQ;AACzB,MACE,aAAa,oBACb,aAAa,mBACb,OAAO,aAAa,YACpB,aAAa,QACb,CAAC,MAAM,QAAQ,SAAS,EACxB;GACA,MAAM,UAAU;AAChB,SAAM,iBAAiB;IACrB,2BACE,OAAO,QAAQ,8BAA8B,WACzC,QAAQ,4BACR;IACN,2BACE,OAAO,QAAQ,8BAA8B,WACzC,QAAQ,4BACR;IACP;;;AAGL,KAAI,aAAa,oBAAoB,aAAa,gBAChD,QAAO;EACL,eACE,aAAa,mBAAmB,YAAY,aAAa,IAAI,SAAS;EACxE,GAAG;EACJ;AAEH,QAAO;EAAE,cAAc,SAAS;EAAa,eAAe,SAAS;EAAc,GAAG;EAAO;;;AAI/F,SAAgB,QACd,UACA,aACA,WAAwC,SACA;AACxC,KAAI,OAAO,gBAAgB,YAAY,gBAAgB,QAAQ,MAAM,QAAQ,YAAY,CACvF,QAAO;CACT,MAAM,SAAkC,EAAE,GAAG,UAAU;AACvD,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,YAAY,CACpD,KAAI,OAAO,UAAU,SAAU,QAAO,OAAO;UAE3C,QAAQ,oBACR,aAAa,WACb,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,MAAM,CAErB,QAAO,OAAO;AAElB,QAAO,cAAc,OAAO"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/response/usage/codecs/cohere.ts
|
|
3
|
+
const ZERO_USAGE = {
|
|
4
|
+
billed_units: {
|
|
5
|
+
input_tokens: 0,
|
|
6
|
+
output_tokens: 0,
|
|
7
|
+
search_units: 0,
|
|
8
|
+
classifications: 0
|
|
9
|
+
},
|
|
10
|
+
tokens: {
|
|
11
|
+
input_tokens: 0,
|
|
12
|
+
output_tokens: 0
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
/** Cohere repeats its selected counts and keeps the other billed dimensions zero. */
|
|
16
|
+
function render(overrides) {
|
|
17
|
+
if (!overrides?.usage) return ZERO_USAGE;
|
|
18
|
+
const inputTokens = overrides.usage.input_tokens ?? overrides.usage.prompt_tokens ?? 0;
|
|
19
|
+
const outputTokens = overrides.usage.output_tokens ?? overrides.usage.completion_tokens ?? 0;
|
|
20
|
+
return {
|
|
21
|
+
billed_units: {
|
|
22
|
+
input_tokens: inputTokens,
|
|
23
|
+
output_tokens: outputTokens,
|
|
24
|
+
search_units: 0,
|
|
25
|
+
classifications: 0
|
|
26
|
+
},
|
|
27
|
+
tokens: {
|
|
28
|
+
input_tokens: inputTokens,
|
|
29
|
+
output_tokens: outputTokens
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
//#endregion
|
|
35
|
+
exports.render = render;
|
|
36
|
+
//# sourceMappingURL=cohere.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cohere.cjs","names":[],"sources":["../../../../src/response/usage/codecs/cohere.ts"],"sourcesContent":["import type { ResponseOverrides } from \"../../../types.js\";\n\nconst ZERO_USAGE = {\n billed_units: { input_tokens: 0, output_tokens: 0, search_units: 0, classifications: 0 },\n tokens: { input_tokens: 0, output_tokens: 0 },\n};\n\n/** Cohere repeats its selected counts and keeps the other billed dimensions zero. */\nexport function render(overrides?: ResponseOverrides): typeof ZERO_USAGE {\n if (!overrides?.usage) return ZERO_USAGE;\n const inputTokens = overrides.usage.input_tokens ?? overrides.usage.prompt_tokens ?? 0;\n const outputTokens = overrides.usage.output_tokens ?? overrides.usage.completion_tokens ?? 0;\n return {\n billed_units: {\n input_tokens: inputTokens,\n output_tokens: outputTokens,\n search_units: 0,\n classifications: 0,\n },\n tokens: { input_tokens: inputTokens, output_tokens: outputTokens },\n };\n}\n"],"mappings":";;AAEA,MAAM,aAAa;CACjB,cAAc;EAAE,cAAc;EAAG,eAAe;EAAG,cAAc;EAAG,iBAAiB;EAAG;CACxF,QAAQ;EAAE,cAAc;EAAG,eAAe;EAAG;CAC9C;;AAGD,SAAgB,OAAO,WAAkD;AACvE,KAAI,CAAC,WAAW,MAAO,QAAO;CAC9B,MAAM,cAAc,UAAU,MAAM,gBAAgB,UAAU,MAAM,iBAAiB;CACrF,MAAM,eAAe,UAAU,MAAM,iBAAiB,UAAU,MAAM,qBAAqB;AAC3F,QAAO;EACL,cAAc;GACZ,cAAc;GACd,eAAe;GACf,cAAc;GACd,iBAAiB;GAClB;EACD,QAAQ;GAAE,cAAc;GAAa,eAAe;GAAc;EACnE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/response/usage/codecs/cohere.ts
|
|
2
|
+
const ZERO_USAGE = {
|
|
3
|
+
billed_units: {
|
|
4
|
+
input_tokens: 0,
|
|
5
|
+
output_tokens: 0,
|
|
6
|
+
search_units: 0,
|
|
7
|
+
classifications: 0
|
|
8
|
+
},
|
|
9
|
+
tokens: {
|
|
10
|
+
input_tokens: 0,
|
|
11
|
+
output_tokens: 0
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
/** Cohere repeats its selected counts and keeps the other billed dimensions zero. */
|
|
15
|
+
function render(overrides) {
|
|
16
|
+
if (!overrides?.usage) return ZERO_USAGE;
|
|
17
|
+
const inputTokens = overrides.usage.input_tokens ?? overrides.usage.prompt_tokens ?? 0;
|
|
18
|
+
const outputTokens = overrides.usage.output_tokens ?? overrides.usage.completion_tokens ?? 0;
|
|
19
|
+
return {
|
|
20
|
+
billed_units: {
|
|
21
|
+
input_tokens: inputTokens,
|
|
22
|
+
output_tokens: outputTokens,
|
|
23
|
+
search_units: 0,
|
|
24
|
+
classifications: 0
|
|
25
|
+
},
|
|
26
|
+
tokens: {
|
|
27
|
+
input_tokens: inputTokens,
|
|
28
|
+
output_tokens: outputTokens
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
export { render };
|
|
35
|
+
//# sourceMappingURL=cohere.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cohere.js","names":[],"sources":["../../../../src/response/usage/codecs/cohere.ts"],"sourcesContent":["import type { ResponseOverrides } from \"../../../types.js\";\n\nconst ZERO_USAGE = {\n billed_units: { input_tokens: 0, output_tokens: 0, search_units: 0, classifications: 0 },\n tokens: { input_tokens: 0, output_tokens: 0 },\n};\n\n/** Cohere repeats its selected counts and keeps the other billed dimensions zero. */\nexport function render(overrides?: ResponseOverrides): typeof ZERO_USAGE {\n if (!overrides?.usage) return ZERO_USAGE;\n const inputTokens = overrides.usage.input_tokens ?? overrides.usage.prompt_tokens ?? 0;\n const outputTokens = overrides.usage.output_tokens ?? overrides.usage.completion_tokens ?? 0;\n return {\n billed_units: {\n input_tokens: inputTokens,\n output_tokens: outputTokens,\n search_units: 0,\n classifications: 0,\n },\n tokens: { input_tokens: inputTokens, output_tokens: outputTokens },\n };\n}\n"],"mappings":";AAEA,MAAM,aAAa;CACjB,cAAc;EAAE,cAAc;EAAG,eAAe;EAAG,cAAc;EAAG,iBAAiB;EAAG;CACxF,QAAQ;EAAE,cAAc;EAAG,eAAe;EAAG;CAC9C;;AAGD,SAAgB,OAAO,WAAkD;AACvE,KAAI,CAAC,WAAW,MAAO,QAAO;CAC9B,MAAM,cAAc,UAAU,MAAM,gBAAgB,UAAU,MAAM,iBAAiB;CACrF,MAAM,eAAe,UAAU,MAAM,iBAAiB,UAAU,MAAM,qBAAqB;AAC3F,QAAO;EACL,cAAc;GACZ,cAAc;GACd,eAAe;GACf,cAAc;GACd,iBAAiB;GAClB;EACD,QAAQ;GAAE,cAAc;GAAa,eAAe;GAAc;EACnE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/response/usage/codecs/converse.ts
|
|
3
|
+
/** Converse always computes its total; applied estimates remain caller-owned. */
|
|
4
|
+
function render(overrides, estimates) {
|
|
5
|
+
const inputTokens = estimates?.input ?? overrides?.usage?.input_tokens ?? overrides?.usage?.prompt_tokens ?? 0;
|
|
6
|
+
const outputTokens = estimates?.output ?? overrides?.usage?.output_tokens ?? overrides?.usage?.completion_tokens ?? 0;
|
|
7
|
+
return {
|
|
8
|
+
inputTokens,
|
|
9
|
+
outputTokens,
|
|
10
|
+
totalTokens: inputTokens + outputTokens
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
exports.render = render;
|
|
16
|
+
//# sourceMappingURL=converse.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converse.cjs","names":[],"sources":["../../../../src/response/usage/codecs/converse.ts"],"sourcesContent":["import type { ResponseOverrides } from \"../../../types.js\";\n\n/** Converse always computes its total; applied estimates remain caller-owned. */\nexport function render(\n overrides?: ResponseOverrides,\n estimates?: { input: number; output: number },\n): { inputTokens: number; outputTokens: number; totalTokens: number } {\n const inputTokens =\n estimates?.input ?? overrides?.usage?.input_tokens ?? overrides?.usage?.prompt_tokens ?? 0;\n const outputTokens =\n estimates?.output ??\n overrides?.usage?.output_tokens ??\n overrides?.usage?.completion_tokens ??\n 0;\n return { inputTokens, outputTokens, totalTokens: inputTokens + outputTokens };\n}\n"],"mappings":";;;AAGA,SAAgB,OACd,WACA,WACoE;CACpE,MAAM,cACJ,WAAW,SAAS,WAAW,OAAO,gBAAgB,WAAW,OAAO,iBAAiB;CAC3F,MAAM,eACJ,WAAW,UACX,WAAW,OAAO,iBAClB,WAAW,OAAO,qBAClB;AACF,QAAO;EAAE;EAAa;EAAc,aAAa,cAAc;EAAc"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/response/usage/codecs/converse.ts
|
|
2
|
+
/** Converse always computes its total; applied estimates remain caller-owned. */
|
|
3
|
+
function render(overrides, estimates) {
|
|
4
|
+
const inputTokens = estimates?.input ?? overrides?.usage?.input_tokens ?? overrides?.usage?.prompt_tokens ?? 0;
|
|
5
|
+
const outputTokens = estimates?.output ?? overrides?.usage?.output_tokens ?? overrides?.usage?.completion_tokens ?? 0;
|
|
6
|
+
return {
|
|
7
|
+
inputTokens,
|
|
8
|
+
outputTokens,
|
|
9
|
+
totalTokens: inputTokens + outputTokens
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
export { render };
|
|
15
|
+
//# sourceMappingURL=converse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converse.js","names":[],"sources":["../../../../src/response/usage/codecs/converse.ts"],"sourcesContent":["import type { ResponseOverrides } from \"../../../types.js\";\n\n/** Converse always computes its total; applied estimates remain caller-owned. */\nexport function render(\n overrides?: ResponseOverrides,\n estimates?: { input: number; output: number },\n): { inputTokens: number; outputTokens: number; totalTokens: number } {\n const inputTokens =\n estimates?.input ?? overrides?.usage?.input_tokens ?? overrides?.usage?.prompt_tokens ?? 0;\n const outputTokens =\n estimates?.output ??\n overrides?.usage?.output_tokens ??\n overrides?.usage?.completion_tokens ??\n 0;\n return { inputTokens, outputTokens, totalTokens: inputTokens + outputTokens };\n}\n"],"mappings":";;AAGA,SAAgB,OACd,WACA,WACoE;CACpE,MAAM,cACJ,WAAW,SAAS,WAAW,OAAO,gBAAgB,WAAW,OAAO,iBAAiB;CAC3F,MAAM,eACJ,WAAW,UACX,WAAW,OAAO,iBAClB,WAAW,OAAO,qBAClB;AACF,QAAO;EAAE;EAAa;EAAc,aAAa,cAAc;EAAc"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const require_estimate = require('../estimate.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/response/usage/codecs/gemini.ts
|
|
4
|
+
/** Gemini and Vertex share native precedence; only the native total overrides the sum. */
|
|
5
|
+
function render(overrides, variant = { kind: "ordinary" }) {
|
|
6
|
+
if (variant.kind === "applied-misbehavior") {
|
|
7
|
+
const prompt = require_estimate.estimateTokens(variant.promptText || "x");
|
|
8
|
+
const candidates = require_estimate.estimateTokens(variant.completionText || "x");
|
|
9
|
+
return {
|
|
10
|
+
promptTokenCount: prompt,
|
|
11
|
+
candidatesTokenCount: candidates,
|
|
12
|
+
totalTokenCount: prompt + candidates
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
if (!overrides?.usage) return {
|
|
16
|
+
promptTokenCount: 0,
|
|
17
|
+
candidatesTokenCount: 0,
|
|
18
|
+
totalTokenCount: 0
|
|
19
|
+
};
|
|
20
|
+
const prompt = overrides.usage.promptTokenCount ?? overrides.usage.prompt_tokens ?? overrides.usage.input_tokens ?? 0;
|
|
21
|
+
const candidates = overrides.usage.candidatesTokenCount ?? overrides.usage.completion_tokens ?? overrides.usage.output_tokens ?? 0;
|
|
22
|
+
return {
|
|
23
|
+
promptTokenCount: prompt,
|
|
24
|
+
candidatesTokenCount: candidates,
|
|
25
|
+
totalTokenCount: overrides.usage.totalTokenCount ?? prompt + candidates
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.render = render;
|
|
31
|
+
//# sourceMappingURL=gemini.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.cjs","names":["estimateTokens"],"sources":["../../../../src/response/usage/codecs/gemini.ts"],"sourcesContent":["import type { ResponseOverrides } from \"../../../types.js\";\nimport { estimateTokens } from \"../estimate.js\";\n\ntype GeminiUsage = {\n promptTokenCount: number;\n candidatesTokenCount: number;\n totalTokenCount: number;\n};\ntype Variant =\n | { kind: \"ordinary\" }\n | { kind: \"applied-misbehavior\"; promptText: string; completionText: string };\n\n/** Gemini and Vertex share native precedence; only the native total overrides the sum. */\nexport function render(\n overrides?: ResponseOverrides,\n variant: Variant = { kind: \"ordinary\" },\n): GeminiUsage {\n if (variant.kind === \"applied-misbehavior\") {\n const prompt = estimateTokens(variant.promptText || \"x\");\n const candidates = estimateTokens(variant.completionText || \"x\");\n return {\n promptTokenCount: prompt,\n candidatesTokenCount: candidates,\n totalTokenCount: prompt + candidates,\n };\n }\n if (!overrides?.usage)\n return { promptTokenCount: 0, candidatesTokenCount: 0, totalTokenCount: 0 };\n const prompt =\n overrides.usage.promptTokenCount ??\n overrides.usage.prompt_tokens ??\n overrides.usage.input_tokens ??\n 0;\n const candidates =\n overrides.usage.candidatesTokenCount ??\n overrides.usage.completion_tokens ??\n overrides.usage.output_tokens ??\n 0;\n return {\n promptTokenCount: prompt,\n candidatesTokenCount: candidates,\n totalTokenCount: overrides.usage.totalTokenCount ?? prompt + candidates,\n };\n}\n"],"mappings":";;;;AAaA,SAAgB,OACd,WACA,UAAmB,EAAE,MAAM,YAAY,EAC1B;AACb,KAAI,QAAQ,SAAS,uBAAuB;EAC1C,MAAM,SAASA,gCAAe,QAAQ,cAAc,IAAI;EACxD,MAAM,aAAaA,gCAAe,QAAQ,kBAAkB,IAAI;AAChE,SAAO;GACL,kBAAkB;GAClB,sBAAsB;GACtB,iBAAiB,SAAS;GAC3B;;AAEH,KAAI,CAAC,WAAW,MACd,QAAO;EAAE,kBAAkB;EAAG,sBAAsB;EAAG,iBAAiB;EAAG;CAC7E,MAAM,SACJ,UAAU,MAAM,oBAChB,UAAU,MAAM,iBAChB,UAAU,MAAM,gBAChB;CACF,MAAM,aACJ,UAAU,MAAM,wBAChB,UAAU,MAAM,qBAChB,UAAU,MAAM,iBAChB;AACF,QAAO;EACL,kBAAkB;EAClB,sBAAsB;EACtB,iBAAiB,UAAU,MAAM,mBAAmB,SAAS;EAC9D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { estimateTokens } from "../estimate.js";
|
|
2
|
+
|
|
3
|
+
//#region src/response/usage/codecs/gemini.ts
|
|
4
|
+
/** Gemini and Vertex share native precedence; only the native total overrides the sum. */
|
|
5
|
+
function render(overrides, variant = { kind: "ordinary" }) {
|
|
6
|
+
if (variant.kind === "applied-misbehavior") {
|
|
7
|
+
const prompt = estimateTokens(variant.promptText || "x");
|
|
8
|
+
const candidates = estimateTokens(variant.completionText || "x");
|
|
9
|
+
return {
|
|
10
|
+
promptTokenCount: prompt,
|
|
11
|
+
candidatesTokenCount: candidates,
|
|
12
|
+
totalTokenCount: prompt + candidates
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
if (!overrides?.usage) return {
|
|
16
|
+
promptTokenCount: 0,
|
|
17
|
+
candidatesTokenCount: 0,
|
|
18
|
+
totalTokenCount: 0
|
|
19
|
+
};
|
|
20
|
+
const prompt = overrides.usage.promptTokenCount ?? overrides.usage.prompt_tokens ?? overrides.usage.input_tokens ?? 0;
|
|
21
|
+
const candidates = overrides.usage.candidatesTokenCount ?? overrides.usage.completion_tokens ?? overrides.usage.output_tokens ?? 0;
|
|
22
|
+
return {
|
|
23
|
+
promptTokenCount: prompt,
|
|
24
|
+
candidatesTokenCount: candidates,
|
|
25
|
+
totalTokenCount: overrides.usage.totalTokenCount ?? prompt + candidates
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
export { render };
|
|
31
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","names":[],"sources":["../../../../src/response/usage/codecs/gemini.ts"],"sourcesContent":["import type { ResponseOverrides } from \"../../../types.js\";\nimport { estimateTokens } from \"../estimate.js\";\n\ntype GeminiUsage = {\n promptTokenCount: number;\n candidatesTokenCount: number;\n totalTokenCount: number;\n};\ntype Variant =\n | { kind: \"ordinary\" }\n | { kind: \"applied-misbehavior\"; promptText: string; completionText: string };\n\n/** Gemini and Vertex share native precedence; only the native total overrides the sum. */\nexport function render(\n overrides?: ResponseOverrides,\n variant: Variant = { kind: \"ordinary\" },\n): GeminiUsage {\n if (variant.kind === \"applied-misbehavior\") {\n const prompt = estimateTokens(variant.promptText || \"x\");\n const candidates = estimateTokens(variant.completionText || \"x\");\n return {\n promptTokenCount: prompt,\n candidatesTokenCount: candidates,\n totalTokenCount: prompt + candidates,\n };\n }\n if (!overrides?.usage)\n return { promptTokenCount: 0, candidatesTokenCount: 0, totalTokenCount: 0 };\n const prompt =\n overrides.usage.promptTokenCount ??\n overrides.usage.prompt_tokens ??\n overrides.usage.input_tokens ??\n 0;\n const candidates =\n overrides.usage.candidatesTokenCount ??\n overrides.usage.completion_tokens ??\n overrides.usage.output_tokens ??\n 0;\n return {\n promptTokenCount: prompt,\n candidatesTokenCount: candidates,\n totalTokenCount: overrides.usage.totalTokenCount ?? prompt + candidates,\n };\n}\n"],"mappings":";;;;AAaA,SAAgB,OACd,WACA,UAAmB,EAAE,MAAM,YAAY,EAC1B;AACb,KAAI,QAAQ,SAAS,uBAAuB;EAC1C,MAAM,SAAS,eAAe,QAAQ,cAAc,IAAI;EACxD,MAAM,aAAa,eAAe,QAAQ,kBAAkB,IAAI;AAChE,SAAO;GACL,kBAAkB;GAClB,sBAAsB;GACtB,iBAAiB,SAAS;GAC3B;;AAEH,KAAI,CAAC,WAAW,MACd,QAAO;EAAE,kBAAkB;EAAG,sBAAsB;EAAG,iBAAiB;EAAG;CAC7E,MAAM,SACJ,UAAU,MAAM,oBAChB,UAAU,MAAM,iBAChB,UAAU,MAAM,gBAChB;CACF,MAAM,aACJ,UAAU,MAAM,wBAChB,UAAU,MAAM,qBAChB,UAAU,MAAM,iBAChB;AACF,QAAO;EACL,kBAAkB;EAClB,sBAAsB;EACtB,iBAAiB,UAAU,MAAM,mBAAmB,SAAS;EAC9D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/response/usage/codecs/interactions.ts
|
|
3
|
+
/** Interactions prefers input/output aliases and its snake-case total before Gemini aliases. */
|
|
4
|
+
function render(overrides, variant = "ordinary") {
|
|
5
|
+
const input = overrides?.usage?.input_tokens ?? overrides?.usage?.prompt_tokens ?? overrides?.usage?.promptTokenCount ?? 0;
|
|
6
|
+
const output = overrides?.usage?.output_tokens ?? overrides?.usage?.completion_tokens ?? overrides?.usage?.candidatesTokenCount ?? 0;
|
|
7
|
+
const usage = {
|
|
8
|
+
total_input_tokens: input,
|
|
9
|
+
total_output_tokens: output,
|
|
10
|
+
total_tokens: overrides?.usage?.total_tokens ?? overrides?.usage?.totalTokenCount ?? input + output
|
|
11
|
+
};
|
|
12
|
+
if (variant === "applied-reasoning-only") return {
|
|
13
|
+
...usage,
|
|
14
|
+
total_output_tokens: 0,
|
|
15
|
+
total_thought_tokens: overrides?.usage?.completion_tokens ?? 0
|
|
16
|
+
};
|
|
17
|
+
return usage;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
exports.render = render;
|
|
22
|
+
//# sourceMappingURL=interactions.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.cjs","names":[],"sources":["../../../../src/response/usage/codecs/interactions.ts"],"sourcesContent":["import type { ResponseOverrides } from \"../../../types.js\";\n\ntype InteractionsUsage = {\n total_input_tokens: number;\n total_output_tokens: number;\n total_tokens: number;\n};\ntype InteractionsThoughtUsage = InteractionsUsage & { total_thought_tokens: number };\n\nexport function render(overrides?: ResponseOverrides, variant?: \"ordinary\"): InteractionsUsage;\nexport function render(\n overrides: ResponseOverrides | undefined,\n variant: \"applied-reasoning-only\",\n): InteractionsThoughtUsage;\n/** Interactions prefers input/output aliases and its snake-case total before Gemini aliases. */\nexport function render(\n overrides?: ResponseOverrides,\n variant: \"ordinary\" | \"applied-reasoning-only\" = \"ordinary\",\n): InteractionsUsage | InteractionsThoughtUsage {\n const input =\n overrides?.usage?.input_tokens ??\n overrides?.usage?.prompt_tokens ??\n overrides?.usage?.promptTokenCount ??\n 0;\n const output =\n overrides?.usage?.output_tokens ??\n overrides?.usage?.completion_tokens ??\n overrides?.usage?.candidatesTokenCount ??\n 0;\n const usage = {\n total_input_tokens: input,\n total_output_tokens: output,\n total_tokens:\n overrides?.usage?.total_tokens ?? overrides?.usage?.totalTokenCount ?? input + output,\n };\n if (variant === \"applied-reasoning-only\")\n return {\n ...usage,\n total_output_tokens: 0,\n total_thought_tokens: overrides?.usage?.completion_tokens ?? 0,\n };\n return usage;\n}\n"],"mappings":";;;AAeA,SAAgB,OACd,WACA,UAAiD,YACH;CAC9C,MAAM,QACJ,WAAW,OAAO,gBAClB,WAAW,OAAO,iBAClB,WAAW,OAAO,oBAClB;CACF,MAAM,SACJ,WAAW,OAAO,iBAClB,WAAW,OAAO,qBAClB,WAAW,OAAO,wBAClB;CACF,MAAM,QAAQ;EACZ,oBAAoB;EACpB,qBAAqB;EACrB,cACE,WAAW,OAAO,gBAAgB,WAAW,OAAO,mBAAmB,QAAQ;EAClF;AACD,KAAI,YAAY,yBACd,QAAO;EACL,GAAG;EACH,qBAAqB;EACrB,sBAAsB,WAAW,OAAO,qBAAqB;EAC9D;AACH,QAAO"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/response/usage/codecs/interactions.ts
|
|
2
|
+
/** Interactions prefers input/output aliases and its snake-case total before Gemini aliases. */
|
|
3
|
+
function render(overrides, variant = "ordinary") {
|
|
4
|
+
const input = overrides?.usage?.input_tokens ?? overrides?.usage?.prompt_tokens ?? overrides?.usage?.promptTokenCount ?? 0;
|
|
5
|
+
const output = overrides?.usage?.output_tokens ?? overrides?.usage?.completion_tokens ?? overrides?.usage?.candidatesTokenCount ?? 0;
|
|
6
|
+
const usage = {
|
|
7
|
+
total_input_tokens: input,
|
|
8
|
+
total_output_tokens: output,
|
|
9
|
+
total_tokens: overrides?.usage?.total_tokens ?? overrides?.usage?.totalTokenCount ?? input + output
|
|
10
|
+
};
|
|
11
|
+
if (variant === "applied-reasoning-only") return {
|
|
12
|
+
...usage,
|
|
13
|
+
total_output_tokens: 0,
|
|
14
|
+
total_thought_tokens: overrides?.usage?.completion_tokens ?? 0
|
|
15
|
+
};
|
|
16
|
+
return usage;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { render };
|
|
21
|
+
//# sourceMappingURL=interactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.js","names":[],"sources":["../../../../src/response/usage/codecs/interactions.ts"],"sourcesContent":["import type { ResponseOverrides } from \"../../../types.js\";\n\ntype InteractionsUsage = {\n total_input_tokens: number;\n total_output_tokens: number;\n total_tokens: number;\n};\ntype InteractionsThoughtUsage = InteractionsUsage & { total_thought_tokens: number };\n\nexport function render(overrides?: ResponseOverrides, variant?: \"ordinary\"): InteractionsUsage;\nexport function render(\n overrides: ResponseOverrides | undefined,\n variant: \"applied-reasoning-only\",\n): InteractionsThoughtUsage;\n/** Interactions prefers input/output aliases and its snake-case total before Gemini aliases. */\nexport function render(\n overrides?: ResponseOverrides,\n variant: \"ordinary\" | \"applied-reasoning-only\" = \"ordinary\",\n): InteractionsUsage | InteractionsThoughtUsage {\n const input =\n overrides?.usage?.input_tokens ??\n overrides?.usage?.prompt_tokens ??\n overrides?.usage?.promptTokenCount ??\n 0;\n const output =\n overrides?.usage?.output_tokens ??\n overrides?.usage?.completion_tokens ??\n overrides?.usage?.candidatesTokenCount ??\n 0;\n const usage = {\n total_input_tokens: input,\n total_output_tokens: output,\n total_tokens:\n overrides?.usage?.total_tokens ?? overrides?.usage?.totalTokenCount ?? input + output,\n };\n if (variant === \"applied-reasoning-only\")\n return {\n ...usage,\n total_output_tokens: 0,\n total_thought_tokens: overrides?.usage?.completion_tokens ?? 0,\n };\n return usage;\n}\n"],"mappings":";;AAeA,SAAgB,OACd,WACA,UAAiD,YACH;CAC9C,MAAM,QACJ,WAAW,OAAO,gBAClB,WAAW,OAAO,iBAClB,WAAW,OAAO,oBAClB;CACF,MAAM,SACJ,WAAW,OAAO,iBAClB,WAAW,OAAO,qBAClB,WAAW,OAAO,wBAClB;CACF,MAAM,QAAQ;EACZ,oBAAoB;EACpB,qBAAqB;EACrB,cACE,WAAW,OAAO,gBAAgB,WAAW,OAAO,mBAAmB,QAAQ;EAClF;AACD,KAAI,YAAY,yBACd,QAAO;EACL,GAAG;EACH,qBAAqB;EACrB,sBAAsB,WAAW,OAAO,qBAAqB;EAC9D;AACH,QAAO"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const require_estimate = require('../estimate.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/response/usage/codecs/ollama.ts
|
|
4
|
+
function render(variant, position = "both") {
|
|
5
|
+
const promptCount = variant.kind === "ordinary-zero" ? 0 : require_estimate.estimatePromptTokens(variant.messages);
|
|
6
|
+
const completionCount = variant.kind === "ordinary-zero" ? 0 : require_estimate.estimateTokens(variant.completion);
|
|
7
|
+
if (position === "prompt") return { prompt_eval_count: promptCount };
|
|
8
|
+
if (position === "completion") return { eval_count: completionCount };
|
|
9
|
+
return {
|
|
10
|
+
prompt_eval_count: promptCount,
|
|
11
|
+
eval_count: completionCount
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
exports.render = render;
|
|
17
|
+
//# sourceMappingURL=ollama.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.cjs","names":["estimatePromptTokens","estimateTokens"],"sources":["../../../../src/response/usage/codecs/ollama.ts"],"sourcesContent":["import type { ChatCompletionRequest } from \"../../../types.js\";\nimport { estimatePromptTokens, estimateTokens } from \"../estimate.js\";\n\ntype CountVariant =\n | { kind: \"ordinary-zero\" }\n | {\n kind: \"applied-chat-estimate\";\n messages: ChatCompletionRequest[\"messages\"];\n completion: string;\n };\n\n/** Render counts only; callers retain duration fields and their insertion order. */\nexport function render(\n variant: CountVariant,\n position?: \"both\",\n): {\n prompt_eval_count: number;\n eval_count: number;\n};\nexport function render(variant: CountVariant, position: \"prompt\"): { prompt_eval_count: number };\nexport function render(variant: CountVariant, position: \"completion\"): { eval_count: number };\nexport function render(variant: CountVariant, position: \"prompt\" | \"completion\" | \"both\" = \"both\") {\n const promptCount = variant.kind === \"ordinary-zero\" ? 0 : estimatePromptTokens(variant.messages);\n const completionCount = variant.kind === \"ordinary-zero\" ? 0 : estimateTokens(variant.completion);\n if (position === \"prompt\") return { prompt_eval_count: promptCount };\n if (position === \"completion\") return { eval_count: completionCount };\n return { prompt_eval_count: promptCount, eval_count: completionCount };\n}\n"],"mappings":";;;AAqBA,SAAgB,OAAO,SAAuB,WAA6C,QAAQ;CACjG,MAAM,cAAc,QAAQ,SAAS,kBAAkB,IAAIA,sCAAqB,QAAQ,SAAS;CACjG,MAAM,kBAAkB,QAAQ,SAAS,kBAAkB,IAAIC,gCAAe,QAAQ,WAAW;AACjG,KAAI,aAAa,SAAU,QAAO,EAAE,mBAAmB,aAAa;AACpE,KAAI,aAAa,aAAc,QAAO,EAAE,YAAY,iBAAiB;AACrE,QAAO;EAAE,mBAAmB;EAAa,YAAY;EAAiB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { estimatePromptTokens, estimateTokens } from "../estimate.js";
|
|
2
|
+
|
|
3
|
+
//#region src/response/usage/codecs/ollama.ts
|
|
4
|
+
function render(variant, position = "both") {
|
|
5
|
+
const promptCount = variant.kind === "ordinary-zero" ? 0 : estimatePromptTokens(variant.messages);
|
|
6
|
+
const completionCount = variant.kind === "ordinary-zero" ? 0 : estimateTokens(variant.completion);
|
|
7
|
+
if (position === "prompt") return { prompt_eval_count: promptCount };
|
|
8
|
+
if (position === "completion") return { eval_count: completionCount };
|
|
9
|
+
return {
|
|
10
|
+
prompt_eval_count: promptCount,
|
|
11
|
+
eval_count: completionCount
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { render };
|
|
17
|
+
//# sourceMappingURL=ollama.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.js","names":[],"sources":["../../../../src/response/usage/codecs/ollama.ts"],"sourcesContent":["import type { ChatCompletionRequest } from \"../../../types.js\";\nimport { estimatePromptTokens, estimateTokens } from \"../estimate.js\";\n\ntype CountVariant =\n | { kind: \"ordinary-zero\" }\n | {\n kind: \"applied-chat-estimate\";\n messages: ChatCompletionRequest[\"messages\"];\n completion: string;\n };\n\n/** Render counts only; callers retain duration fields and their insertion order. */\nexport function render(\n variant: CountVariant,\n position?: \"both\",\n): {\n prompt_eval_count: number;\n eval_count: number;\n};\nexport function render(variant: CountVariant, position: \"prompt\"): { prompt_eval_count: number };\nexport function render(variant: CountVariant, position: \"completion\"): { eval_count: number };\nexport function render(variant: CountVariant, position: \"prompt\" | \"completion\" | \"both\" = \"both\") {\n const promptCount = variant.kind === \"ordinary-zero\" ? 0 : estimatePromptTokens(variant.messages);\n const completionCount = variant.kind === \"ordinary-zero\" ? 0 : estimateTokens(variant.completion);\n if (position === \"prompt\") return { prompt_eval_count: promptCount };\n if (position === \"completion\") return { eval_count: completionCount };\n return { prompt_eval_count: promptCount, eval_count: completionCount };\n}\n"],"mappings":";;;AAqBA,SAAgB,OAAO,SAAuB,WAA6C,QAAQ;CACjG,MAAM,cAAc,QAAQ,SAAS,kBAAkB,IAAI,qBAAqB,QAAQ,SAAS;CACjG,MAAM,kBAAkB,QAAQ,SAAS,kBAAkB,IAAI,eAAe,QAAQ,WAAW;AACjG,KAAI,aAAa,SAAU,QAAO,EAAE,mBAAmB,aAAa;AACpE,KAAI,aAAa,aAAc,QAAO,EAAE,YAAY,iBAAiB;AACrE,QAAO;EAAE,mBAAmB;EAAa,YAAY;EAAiB"}
|