openlit 1.12.0 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -1
- package/dist/__tests__/manual-trace.test.js +118 -0
- package/dist/__tests__/manual-trace.test.js.map +1 -0
- package/dist/__tests__/register.test.js +90 -0
- package/dist/__tests__/register.test.js.map +1 -0
- package/dist/config.d.ts +7 -1
- package/dist/config.js +3 -1
- package/dist/config.js.map +1 -1
- package/dist/evals/__tests__/offline.test.js +418 -0
- package/dist/evals/__tests__/offline.test.js.map +1 -0
- package/dist/evals/index.d.ts +2 -5
- package/dist/evals/index.js +12 -26
- package/dist/evals/index.js.map +1 -1
- package/dist/evals/offline.d.ts +6 -0
- package/dist/evals/offline.js +347 -0
- package/dist/evals/offline.js.map +1 -0
- package/dist/evals/types.d.ts +69 -18
- package/dist/evals/types.js +20 -0
- package/dist/evals/types.js.map +1 -1
- package/dist/guard/__tests__/integration.test.js +178 -0
- package/dist/guard/__tests__/integration.test.js.map +1 -0
- package/dist/guard/__tests__/pii.test.js +109 -0
- package/dist/guard/__tests__/pii.test.js.map +1 -0
- package/dist/guard/__tests__/pipeline.test.js +162 -0
- package/dist/guard/__tests__/pipeline.test.js.map +1 -0
- package/dist/guard/__tests__/prompt-injection.test.js +92 -0
- package/dist/guard/__tests__/prompt-injection.test.js.map +1 -0
- package/dist/guard/base.d.ts +75 -14
- package/dist/guard/base.js +130 -53
- package/dist/guard/base.js.map +1 -1
- package/dist/guard/custom.d.ts +19 -0
- package/dist/guard/custom.js +46 -0
- package/dist/guard/custom.js.map +1 -0
- package/dist/guard/index.d.ts +24 -5
- package/dist/guard/index.js +39 -21
- package/dist/guard/index.js.map +1 -1
- package/dist/guard/integration.d.ts +32 -0
- package/dist/guard/integration.js +328 -0
- package/dist/guard/integration.js.map +1 -0
- package/dist/guard/moderation.d.ts +18 -0
- package/dist/guard/moderation.js +61 -0
- package/dist/guard/moderation.js.map +1 -0
- package/dist/guard/pii.d.ts +17 -0
- package/dist/guard/pii.js +94 -0
- package/dist/guard/pii.js.map +1 -0
- package/dist/guard/pipeline.d.ts +18 -0
- package/dist/guard/pipeline.js +96 -0
- package/dist/guard/pipeline.js.map +1 -0
- package/dist/guard/prompt-injection.d.ts +20 -6
- package/dist/guard/prompt-injection.js +59 -68
- package/dist/guard/prompt-injection.js.map +1 -1
- package/dist/guard/schema.d.ts +20 -0
- package/dist/guard/schema.js +99 -0
- package/dist/guard/schema.js.map +1 -0
- package/dist/guard/sensitive-topic.d.ts +22 -6
- package/dist/guard/sensitive-topic.js +78 -64
- package/dist/guard/sensitive-topic.js.map +1 -1
- package/dist/guard/topic-restriction.d.ts +21 -6
- package/dist/guard/topic-restriction.js +43 -64
- package/dist/guard/topic-restriction.js.map +1 -1
- package/dist/helpers.d.ts +133 -2
- package/dist/helpers.js +416 -5
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +54 -30
- package/dist/index.js +104 -22
- package/dist/index.js.map +1 -1
- package/dist/instrumentation/__tests__/ai21-rag-trace-comparison.test.d.ts +13 -0
- package/dist/instrumentation/__tests__/ai21-rag-trace-comparison.test.js +176 -0
- package/dist/instrumentation/__tests__/ai21-rag-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/ai21-trace-comparison.test.d.ts +10 -0
- package/dist/instrumentation/__tests__/ai21-trace-comparison.test.js +203 -0
- package/dist/instrumentation/__tests__/ai21-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/assemblyai-wrapper.test.js +262 -0
- package/dist/instrumentation/__tests__/assemblyai-wrapper.test.js.map +1 -0
- package/dist/instrumentation/__tests__/astra-trace-comparison.test.d.ts +7 -0
- package/dist/instrumentation/__tests__/astra-trace-comparison.test.js +160 -0
- package/dist/instrumentation/__tests__/astra-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/browser-use-wrapper.test.js +284 -0
- package/dist/instrumentation/__tests__/browser-use-wrapper.test.js.map +1 -0
- package/dist/instrumentation/__tests__/cache-pricing.test.d.ts +12 -0
- package/dist/instrumentation/__tests__/cache-pricing.test.js +95 -0
- package/dist/instrumentation/__tests__/cache-pricing.test.js.map +1 -0
- package/dist/instrumentation/__tests__/elevenlabs-wrapper.test.d.ts +1 -0
- package/dist/instrumentation/__tests__/elevenlabs-wrapper.test.js +282 -0
- package/dist/instrumentation/__tests__/elevenlabs-wrapper.test.js.map +1 -0
- package/dist/instrumentation/__tests__/firecrawl-wrapper.test.d.ts +1 -0
- package/dist/instrumentation/__tests__/firecrawl-wrapper.test.js +238 -0
- package/dist/instrumentation/__tests__/firecrawl-wrapper.test.js.map +1 -0
- package/dist/instrumentation/__tests__/gpu-collector.test.d.ts +1 -0
- package/dist/instrumentation/__tests__/gpu-collector.test.js +247 -0
- package/dist/instrumentation/__tests__/gpu-collector.test.js.map +1 -0
- package/dist/instrumentation/__tests__/gradient-trace-comparison.test.d.ts +11 -0
- package/dist/instrumentation/__tests__/gradient-trace-comparison.test.js +391 -0
- package/dist/instrumentation/__tests__/gradient-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/groq-trace-comparison.test.js +150 -0
- package/dist/instrumentation/__tests__/groq-trace-comparison.test.js.map +1 -1
- package/dist/instrumentation/__tests__/helpers-genai.test.d.ts +14 -0
- package/dist/instrumentation/__tests__/helpers-genai.test.js +347 -0
- package/dist/instrumentation/__tests__/helpers-genai.test.js.map +1 -0
- package/dist/instrumentation/__tests__/langchain-role-map.test.d.ts +1 -0
- package/dist/instrumentation/__tests__/langchain-role-map.test.js +19 -0
- package/dist/instrumentation/__tests__/langchain-role-map.test.js.map +1 -0
- package/dist/instrumentation/__tests__/mem0-trace-comparison.test.d.ts +13 -0
- package/dist/instrumentation/__tests__/mem0-trace-comparison.test.js +208 -0
- package/dist/instrumentation/__tests__/mem0-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/pg-trace-comparison.test.d.ts +21 -0
- package/dist/instrumentation/__tests__/pg-trace-comparison.test.js +455 -0
- package/dist/instrumentation/__tests__/pg-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/transformers-trace-comparison.test.d.ts +11 -0
- package/dist/instrumentation/__tests__/transformers-trace-comparison.test.js +214 -0
- package/dist/instrumentation/__tests__/transformers-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/vertexai-trace-comparison.test.d.ts +6 -0
- package/dist/instrumentation/__tests__/vertexai-trace-comparison.test.js +409 -0
- package/dist/instrumentation/__tests__/vertexai-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/vllm-trace-comparison.test.d.ts +1 -0
- package/dist/instrumentation/__tests__/vllm-trace-comparison.test.js +519 -0
- package/dist/instrumentation/__tests__/vllm-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/ai21/index.d.ts +11 -0
- package/dist/instrumentation/ai21/index.js +67 -0
- package/dist/instrumentation/ai21/index.js.map +1 -0
- package/dist/instrumentation/ai21/wrapper.d.ts +54 -0
- package/dist/instrumentation/ai21/wrapper.js +511 -0
- package/dist/instrumentation/ai21/wrapper.js.map +1 -0
- package/dist/instrumentation/anthropic/wrapper.js +56 -2
- package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
- package/dist/instrumentation/assemblyai/index.d.ts +12 -0
- package/dist/instrumentation/assemblyai/index.js +91 -0
- package/dist/instrumentation/assemblyai/index.js.map +1 -0
- package/dist/instrumentation/assemblyai/wrapper.d.ts +35 -0
- package/dist/instrumentation/assemblyai/wrapper.js +233 -0
- package/dist/instrumentation/assemblyai/wrapper.js.map +1 -0
- package/dist/instrumentation/astra/index.d.ts +11 -0
- package/dist/instrumentation/astra/index.js +87 -0
- package/dist/instrumentation/astra/index.js.map +1 -0
- package/dist/instrumentation/astra/wrapper.d.ts +39 -0
- package/dist/instrumentation/astra/wrapper.js +349 -0
- package/dist/instrumentation/astra/wrapper.js.map +1 -0
- package/dist/instrumentation/azure-ai-inference/wrapper.d.ts +13 -0
- package/dist/instrumentation/azure-ai-inference/wrapper.js +60 -1
- package/dist/instrumentation/azure-ai-inference/wrapper.js.map +1 -1
- package/dist/instrumentation/bedrock/wrapper.d.ts +13 -0
- package/dist/instrumentation/bedrock/wrapper.js +78 -2
- package/dist/instrumentation/bedrock/wrapper.js.map +1 -1
- package/dist/instrumentation/browser-use/index.d.ts +11 -0
- package/dist/instrumentation/browser-use/index.js +98 -0
- package/dist/instrumentation/browser-use/index.js.map +1 -0
- package/dist/instrumentation/browser-use/wrapper.d.ts +12 -0
- package/dist/instrumentation/browser-use/wrapper.js +706 -0
- package/dist/instrumentation/browser-use/wrapper.js.map +1 -0
- package/dist/instrumentation/claude-agent-sdk/wrapper.js +90 -4
- package/dist/instrumentation/claude-agent-sdk/wrapper.js.map +1 -1
- package/dist/instrumentation/cohere/wrapper.d.ts +13 -0
- package/dist/instrumentation/cohere/wrapper.js +59 -0
- package/dist/instrumentation/cohere/wrapper.js.map +1 -1
- package/dist/instrumentation/cursor-sdk/index.d.ts +21 -0
- package/dist/instrumentation/cursor-sdk/index.js +58 -0
- package/dist/instrumentation/cursor-sdk/index.js.map +1 -0
- package/dist/instrumentation/cursor-sdk/wrapper.d.ts +17 -0
- package/dist/instrumentation/cursor-sdk/wrapper.js +785 -0
- package/dist/instrumentation/cursor-sdk/wrapper.js.map +1 -0
- package/dist/instrumentation/elevenlabs/index.d.ts +12 -0
- package/dist/instrumentation/elevenlabs/index.js +92 -0
- package/dist/instrumentation/elevenlabs/index.js.map +1 -0
- package/dist/instrumentation/elevenlabs/wrapper.d.ts +34 -0
- package/dist/instrumentation/elevenlabs/wrapper.js +280 -0
- package/dist/instrumentation/elevenlabs/wrapper.js.map +1 -0
- package/dist/instrumentation/firecrawl/index.d.ts +13 -0
- package/dist/instrumentation/firecrawl/index.js +115 -0
- package/dist/instrumentation/firecrawl/index.js.map +1 -0
- package/dist/instrumentation/firecrawl/wrapper.d.ts +22 -0
- package/dist/instrumentation/firecrawl/wrapper.js +378 -0
- package/dist/instrumentation/firecrawl/wrapper.js.map +1 -0
- package/dist/instrumentation/google-ai/wrapper.d.ts +13 -0
- package/dist/instrumentation/google-ai/wrapper.js +85 -1
- package/dist/instrumentation/google-ai/wrapper.js.map +1 -1
- package/dist/instrumentation/gpu/index.d.ts +38 -0
- package/dist/instrumentation/gpu/index.js +233 -0
- package/dist/instrumentation/gpu/index.js.map +1 -0
- package/dist/instrumentation/gradient/index.d.ts +12 -0
- package/dist/instrumentation/gradient/index.js +74 -0
- package/dist/instrumentation/gradient/index.js.map +1 -0
- package/dist/instrumentation/gradient/utils.d.ts +14 -0
- package/dist/instrumentation/gradient/utils.js +119 -0
- package/dist/instrumentation/gradient/utils.js.map +1 -0
- package/dist/instrumentation/gradient/wrapper.d.ts +76 -0
- package/dist/instrumentation/gradient/wrapper.js +584 -0
- package/dist/instrumentation/gradient/wrapper.js.map +1 -0
- package/dist/instrumentation/groq/wrapper.js +42 -0
- package/dist/instrumentation/groq/wrapper.js.map +1 -1
- package/dist/instrumentation/huggingface/wrapper.d.ts +13 -0
- package/dist/instrumentation/huggingface/wrapper.js +66 -0
- package/dist/instrumentation/huggingface/wrapper.js.map +1 -1
- package/dist/instrumentation/index.js +28 -0
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/instrumentation/langchain/wrapper.js +5 -8
- package/dist/instrumentation/langchain/wrapper.js.map +1 -1
- package/dist/instrumentation/langgraph/wrapper.js +12 -11
- package/dist/instrumentation/langgraph/wrapper.js.map +1 -1
- package/dist/instrumentation/llamaindex/wrapper.d.ts +14 -1
- package/dist/instrumentation/llamaindex/wrapper.js +68 -0
- package/dist/instrumentation/llamaindex/wrapper.js.map +1 -1
- package/dist/instrumentation/mcp/index.d.ts +20 -0
- package/dist/instrumentation/mcp/index.js +282 -0
- package/dist/instrumentation/mcp/index.js.map +1 -0
- package/dist/instrumentation/mcp/wrapper.d.ts +72 -0
- package/dist/instrumentation/mcp/wrapper.js +571 -0
- package/dist/instrumentation/mcp/wrapper.js.map +1 -0
- package/dist/instrumentation/mem0/index.d.ts +17 -0
- package/dist/instrumentation/mem0/index.js +113 -0
- package/dist/instrumentation/mem0/index.js.map +1 -0
- package/dist/instrumentation/mem0/wrapper.d.ts +37 -0
- package/dist/instrumentation/mem0/wrapper.js +298 -0
- package/dist/instrumentation/mem0/wrapper.js.map +1 -0
- package/dist/instrumentation/mistral/wrapper.d.ts +13 -0
- package/dist/instrumentation/mistral/wrapper.js +60 -1
- package/dist/instrumentation/mistral/wrapper.js.map +1 -1
- package/dist/instrumentation/ollama/wrapper.d.ts +13 -0
- package/dist/instrumentation/ollama/wrapper.js +67 -1
- package/dist/instrumentation/ollama/wrapper.js.map +1 -1
- package/dist/instrumentation/openai/wrapper.d.ts +13 -0
- package/dist/instrumentation/openai/wrapper.js +89 -3
- package/dist/instrumentation/openai/wrapper.js.map +1 -1
- package/dist/instrumentation/pg/index.d.ts +20 -0
- package/dist/instrumentation/pg/index.js +74 -0
- package/dist/instrumentation/pg/index.js.map +1 -0
- package/dist/instrumentation/pg/wrapper.d.ts +66 -0
- package/dist/instrumentation/pg/wrapper.js +441 -0
- package/dist/instrumentation/pg/wrapper.js.map +1 -0
- package/dist/instrumentation/replicate/wrapper.d.ts +13 -0
- package/dist/instrumentation/replicate/wrapper.js +61 -0
- package/dist/instrumentation/replicate/wrapper.js.map +1 -1
- package/dist/instrumentation/strands/processor.d.ts +6 -0
- package/dist/instrumentation/strands/processor.js +73 -3
- package/dist/instrumentation/strands/processor.js.map +1 -1
- package/dist/instrumentation/strands/utils.d.ts +2 -2
- package/dist/instrumentation/strands/utils.js +15 -2
- package/dist/instrumentation/strands/utils.js.map +1 -1
- package/dist/instrumentation/together/wrapper.d.ts +13 -0
- package/dist/instrumentation/together/wrapper.js +59 -1
- package/dist/instrumentation/together/wrapper.js.map +1 -1
- package/dist/instrumentation/transformers/index.d.ts +35 -0
- package/dist/instrumentation/transformers/index.js +119 -0
- package/dist/instrumentation/transformers/index.js.map +1 -0
- package/dist/instrumentation/transformers/wrapper.d.ts +49 -0
- package/dist/instrumentation/transformers/wrapper.js +472 -0
- package/dist/instrumentation/transformers/wrapper.js.map +1 -0
- package/dist/instrumentation/vercel-ai/wrapper.d.ts +13 -0
- package/dist/instrumentation/vercel-ai/wrapper.js +106 -1
- package/dist/instrumentation/vercel-ai/wrapper.js.map +1 -1
- package/dist/instrumentation/vertexai/index.d.ts +11 -0
- package/dist/instrumentation/vertexai/index.js +70 -0
- package/dist/instrumentation/vertexai/index.js.map +1 -0
- package/dist/instrumentation/vertexai/wrapper.d.ts +67 -0
- package/dist/instrumentation/vertexai/wrapper.js +529 -0
- package/dist/instrumentation/vertexai/wrapper.js.map +1 -0
- package/dist/instrumentation/vllm/index.d.ts +13 -0
- package/dist/instrumentation/vllm/index.js +67 -0
- package/dist/instrumentation/vllm/index.js.map +1 -0
- package/dist/instrumentation/vllm/wrapper.d.ts +60 -0
- package/dist/instrumentation/vllm/wrapper.js +482 -0
- package/dist/instrumentation/vllm/wrapper.js.map +1 -0
- package/dist/llm/index.d.ts +9 -2
- package/dist/llm/index.js.map +1 -1
- package/dist/manual-trace.d.ts +40 -0
- package/dist/manual-trace.js +103 -0
- package/dist/manual-trace.js.map +1 -0
- package/dist/otel/metrics.d.ts +11 -0
- package/dist/otel/metrics.js +48 -0
- package/dist/otel/metrics.js.map +1 -1
- package/dist/register.d.ts +4 -0
- package/dist/register.js +52 -0
- package/dist/register.js.map +1 -0
- package/dist/score/__tests__/score.test.d.ts +1 -0
- package/dist/score/__tests__/score.test.js +143 -0
- package/dist/score/__tests__/score.test.js.map +1 -0
- package/dist/score/index.d.ts +2 -0
- package/dist/score/index.js +6 -0
- package/dist/score/index.js.map +1 -0
- package/dist/score/score.d.ts +15 -0
- package/dist/score/score.js +135 -0
- package/dist/score/score.js.map +1 -0
- package/dist/semantic-convention.d.ts +278 -0
- package/dist/semantic-convention.js +322 -0
- package/dist/semantic-convention.js.map +1 -1
- package/dist/types.d.ts +15 -1
- package/package.json +18 -1
- package/dist/evals/__tests__/anthropic.test.js +0 -9
- package/dist/evals/__tests__/anthropic.test.js.map +0 -1
- package/dist/evals/__tests__/base.test.js +0 -37
- package/dist/evals/__tests__/base.test.js.map +0 -1
- package/dist/evals/__tests__/core.test.js +0 -33
- package/dist/evals/__tests__/core.test.js.map +0 -1
- package/dist/evals/__tests__/metrics.test.js +0 -59
- package/dist/evals/__tests__/metrics.test.js.map +0 -1
- package/dist/evals/__tests__/openai.test.js +0 -9
- package/dist/evals/__tests__/openai.test.js.map +0 -1
- package/dist/evals/__tests__/providers.test.js +0 -14
- package/dist/evals/__tests__/providers.test.js.map +0 -1
- package/dist/evals/__tests__/utils.test.js +0 -46
- package/dist/evals/__tests__/utils.test.js.map +0 -1
- package/dist/evals/all.d.ts +0 -4
- package/dist/evals/all.js +0 -35
- package/dist/evals/all.js.map +0 -1
- package/dist/evals/base.d.ts +0 -15
- package/dist/evals/base.js +0 -51
- package/dist/evals/base.js.map +0 -1
- package/dist/evals/bias.d.ts +0 -4
- package/dist/evals/bias.js +0 -35
- package/dist/evals/bias.js.map +0 -1
- package/dist/evals/hallucination.d.ts +0 -4
- package/dist/evals/hallucination.js +0 -32
- package/dist/evals/hallucination.js.map +0 -1
- package/dist/evals/llm/anthropic.d.ts +0 -5
- package/dist/evals/llm/anthropic.js +0 -42
- package/dist/evals/llm/anthropic.js.map +0 -1
- package/dist/evals/llm/openai.d.ts +0 -6
- package/dist/evals/llm/openai.js +0 -28
- package/dist/evals/llm/openai.js.map +0 -1
- package/dist/evals/llm/providers.d.ts +0 -7
- package/dist/evals/llm/providers.js +0 -10
- package/dist/evals/llm/providers.js.map +0 -1
- package/dist/evals/metrics.d.ts +0 -9
- package/dist/evals/metrics.js +0 -38
- package/dist/evals/metrics.js.map +0 -1
- package/dist/evals/toxicity.d.ts +0 -4
- package/dist/evals/toxicity.js +0 -33
- package/dist/evals/toxicity.js.map +0 -1
- package/dist/evals/utils.d.ts +0 -4
- package/dist/evals/utils.js +0 -39
- package/dist/evals/utils.js.map +0 -1
- package/dist/guard/__tests__/gaurd.test.js +0 -136
- package/dist/guard/__tests__/gaurd.test.js.map +0 -1
- package/dist/guard/__tests__/utils.test.js +0 -64
- package/dist/guard/__tests__/utils.test.js.map +0 -1
- package/dist/guard/all.d.ts +0 -8
- package/dist/guard/all.js +0 -28
- package/dist/guard/all.js.map +0 -1
- package/dist/guard/types.d.ts +0 -26
- package/dist/guard/types.js +0 -4
- package/dist/guard/types.js.map +0 -1
- package/dist/guard/utils.d.ts +0 -13
- package/dist/guard/utils.js +0 -79
- package/dist/guard/utils.js.map +0 -1
- /package/dist/{evals/__tests__/anthropic.test.d.ts → __tests__/manual-trace.test.d.ts} +0 -0
- /package/dist/{evals/__tests__/metrics.test.d.ts → __tests__/register.test.d.ts} +0 -0
- /package/dist/evals/__tests__/{base.test.d.ts → offline.test.d.ts} +0 -0
- /package/dist/{evals/__tests__/core.test.d.ts → guard/__tests__/integration.test.d.ts} +0 -0
- /package/dist/{evals/__tests__/openai.test.d.ts → guard/__tests__/pii.test.d.ts} +0 -0
- /package/dist/{evals/__tests__/providers.test.d.ts → guard/__tests__/pipeline.test.d.ts} +0 -0
- /package/dist/{evals/__tests__/utils.test.d.ts → guard/__tests__/prompt-injection.test.d.ts} +0 -0
- /package/dist/{guard/__tests__/gaurd.test.d.ts → instrumentation/__tests__/assemblyai-wrapper.test.d.ts} +0 -0
- /package/dist/{guard/__tests__/utils.test.d.ts → instrumentation/__tests__/browser-use-wrapper.test.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -40,13 +40,18 @@ This project proudly follows and maintains the [Semantic Conventions](https://gi
|
|
|
40
40
|
| [✅ Groq](https://docs.openlit.io/latest/integrations/groq) |
|
|
41
41
|
| [✅ Mistral](https://docs.openlit.io/latest/integrations/mistral) |
|
|
42
42
|
| [✅ Google AI Studio](https://docs.openlit.io/latest/integrations/google-ai-studio) |
|
|
43
|
+
| [✅ Google Vertex AI](https://docs.openlit.io/latest/integrations/vertex-ai) *(via `@google-cloud/vertexai`)* |
|
|
43
44
|
| [✅ Together AI](https://docs.openlit.io/latest/integrations/together) |
|
|
44
45
|
| [✅ Ollama](https://docs.openlit.io/latest/integrations/ollama) |
|
|
45
46
|
| [✅ AWS Bedrock](https://docs.openlit.io/latest/integrations/bedrock) |
|
|
46
|
-
| [✅ Hugging Face](https://docs.openlit.io/latest/integrations/huggingface)
|
|
47
|
+
| [✅ Hugging Face](https://docs.openlit.io/latest/integrations/huggingface) *(Inference API + local Transformers.js)* |
|
|
47
48
|
| [✅ Replicate](https://docs.openlit.io/latest/integrations/replicate) |
|
|
48
49
|
| [✅ Azure OpenAI](https://docs.openlit.io/latest/integrations/azure-openai) *(via OpenAI SDK)* |
|
|
49
50
|
|
|
51
|
+
| Audio / Speech |
|
|
52
|
+
| ------------------------------------------------------------------------------------------- |
|
|
53
|
+
| [✅ ElevenLabs](https://docs.openlit.io/latest/sdk/integrations/elevenlabs) |
|
|
54
|
+
|
|
50
55
|
| Vector Databases |
|
|
51
56
|
| ------------------------------------------------------------------------------------------- |
|
|
52
57
|
| [✅ Chroma](https://docs.openlit.io/latest/integrations/chromadb) |
|
|
@@ -203,6 +208,7 @@ Below is a detailed overview of the configuration options available, allowing yo
|
|
|
203
208
|
| `disabledInstrumentations` | List of instrumentations to disable. | `undefined` | No |
|
|
204
209
|
| `instrumentations` | Object of instrumentation modules for manual patching | `undefined` | No |
|
|
205
210
|
| `pricingJson` | URL or file path of the pricing JSON file. | `https://github.com/openlit/openlit/blob/main/assets/pricing.json` | No |
|
|
211
|
+
| `collectGpuStats` | Flag to enable or disable GPU metrics collection (NVIDIA via `nvidia-smi`, AMD via `rocm-smi`). | `false` | No |
|
|
206
212
|
|
|
207
213
|
### OpenLIT Prompt Hub - `Openlit.getPrompt()`
|
|
208
214
|
|
|
@@ -268,6 +274,33 @@ if (!('err' in result)) {
|
|
|
268
274
|
}
|
|
269
275
|
```
|
|
270
276
|
|
|
277
|
+
### Score ingestion - `Openlit.logScore()`
|
|
278
|
+
|
|
279
|
+
Attach numeric, boolean, or categorical scores and user feedback to a GenAI span. When called inside an instrumented LLM request, the score auto-attaches to the active span.
|
|
280
|
+
|
|
281
|
+
| Parameter | Description |
|
|
282
|
+
|-----------|-------------|
|
|
283
|
+
| `name` | Score name, for example `user_feedback` or `quality`. |
|
|
284
|
+
| `value` | Numeric, boolean, or categorical score value. |
|
|
285
|
+
| `span` | Optional explicit OpenTelemetry span. |
|
|
286
|
+
| `traceId` | Optional trace ID for async feedback against a past trace. |
|
|
287
|
+
| `spanId` | Optional span ID for async feedback against a past trace. |
|
|
288
|
+
| `comment` | Optional explanation or reviewer comment. |
|
|
289
|
+
| `idempotencyKey` | Optional key to deduplicate score updates. |
|
|
290
|
+
| `metadata` | Optional object of extra event attributes. |
|
|
291
|
+
|
|
292
|
+
#### Example
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
import Openlit from 'openlit';
|
|
296
|
+
|
|
297
|
+
Openlit.init();
|
|
298
|
+
|
|
299
|
+
Openlit.logScore({ name: 'user_feedback', value: true, comment: 'Helpful response' });
|
|
300
|
+
Openlit.logScore({ name: 'quality', value: 0.85, metadata: { reviewer: 'human' } });
|
|
301
|
+
Openlit.logScore({ name: 'category', value: 'accurate' });
|
|
302
|
+
```
|
|
303
|
+
|
|
271
304
|
## 🌱 Contributing
|
|
272
305
|
|
|
273
306
|
Whether it's big or small, we love contributions 💚. Check out our [Contribution guide](../../CONTRIBUTING.md) to get started
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const api_1 = require("@opentelemetry/api");
|
|
7
|
+
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
8
|
+
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
|
|
9
|
+
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
10
|
+
const config_1 = __importDefault(require("../config"));
|
|
11
|
+
const semantic_convention_1 = __importDefault(require("../semantic-convention"));
|
|
12
|
+
const manual_trace_1 = require("../manual-trace");
|
|
13
|
+
describe('manual-trace', () => {
|
|
14
|
+
let exporter;
|
|
15
|
+
let provider;
|
|
16
|
+
beforeAll(() => {
|
|
17
|
+
exporter = new sdk_trace_base_1.InMemorySpanExporter();
|
|
18
|
+
provider = new sdk_trace_node_1.NodeTracerProvider({
|
|
19
|
+
spanProcessors: [new sdk_trace_base_1.SimpleSpanProcessor(exporter)],
|
|
20
|
+
});
|
|
21
|
+
provider.register();
|
|
22
|
+
config_1.default.updateConfig({
|
|
23
|
+
tracer: provider,
|
|
24
|
+
applicationName: 'TestApp',
|
|
25
|
+
environment: 'TestEnv',
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
beforeEach(() => {
|
|
29
|
+
exporter.reset();
|
|
30
|
+
});
|
|
31
|
+
afterAll(async () => {
|
|
32
|
+
await provider.shutdown();
|
|
33
|
+
});
|
|
34
|
+
it('startTrace nests child spans under the manual span', async () => {
|
|
35
|
+
await (0, manual_trace_1.startTrace)('parent-operation', async () => {
|
|
36
|
+
await api_1.trace.getTracer('openlit').startActiveSpan('child-llm', (child) => {
|
|
37
|
+
child.setAttribute('gen_ai.system', 'openai');
|
|
38
|
+
child.end();
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
const spans = exporter.getFinishedSpans();
|
|
42
|
+
expect(spans).toHaveLength(2);
|
|
43
|
+
const parentSpan = spans.find((s) => s.name === 'parent-operation');
|
|
44
|
+
const childSpan = spans.find((s) => s.name === 'child-llm');
|
|
45
|
+
expect(parentSpan).toBeDefined();
|
|
46
|
+
expect(childSpan).toBeDefined();
|
|
47
|
+
expect(childSpan.parentSpanContext?.spanId).toBe(parentSpan.spanContext().spanId);
|
|
48
|
+
expect(parentSpan.attributes[semantic_conventions_1.ATTR_SERVICE_NAME]).toBe('TestApp');
|
|
49
|
+
expect(parentSpan.attributes[semantic_convention_1.default.ATTR_DEPLOYMENT_ENVIRONMENT]).toBe('TestEnv');
|
|
50
|
+
expect(parentSpan.status.code).toBe(api_1.SpanStatusCode.OK);
|
|
51
|
+
});
|
|
52
|
+
it('startTrace nests child spans across await boundaries', async () => {
|
|
53
|
+
await (0, manual_trace_1.startTrace)('async-parent', async () => {
|
|
54
|
+
await Promise.resolve();
|
|
55
|
+
api_1.trace.getTracer('openlit').startActiveSpan('async-child', (child) => {
|
|
56
|
+
child.end();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
const spans = exporter.getFinishedSpans();
|
|
60
|
+
const parentSpan = spans.find((s) => s.name === 'async-parent');
|
|
61
|
+
const childSpan = spans.find((s) => s.name === 'async-child');
|
|
62
|
+
expect(childSpan.parentSpanContext?.spanId).toBe(parentSpan.spanContext().spanId);
|
|
63
|
+
});
|
|
64
|
+
it('startTrace setResult and setMetadata stamp attributes', async () => {
|
|
65
|
+
await (0, manual_trace_1.startTrace)('metadata-test', async (span) => {
|
|
66
|
+
span.setResult('hello');
|
|
67
|
+
span.setMetadata({ 'custom.key': 'value', count: 3 });
|
|
68
|
+
});
|
|
69
|
+
const finished = exporter.getFinishedSpans()[0];
|
|
70
|
+
expect(finished.attributes[semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES]).toBe('hello');
|
|
71
|
+
expect(finished.attributes['custom.key']).toBe('value');
|
|
72
|
+
expect(finished.attributes.count).toBe(3);
|
|
73
|
+
});
|
|
74
|
+
it('trace() ends span on sync success and nests children', () => {
|
|
75
|
+
const result = (0, manual_trace_1.trace)('sync-chain', (span) => {
|
|
76
|
+
api_1.trace.getTracer('openlit').startActiveSpan('sync-child', (child) => {
|
|
77
|
+
child.end();
|
|
78
|
+
});
|
|
79
|
+
span.setResult('done');
|
|
80
|
+
return 42;
|
|
81
|
+
});
|
|
82
|
+
expect(result).toBe(42);
|
|
83
|
+
const spans = exporter.getFinishedSpans();
|
|
84
|
+
const parentSpan = spans.find((s) => s.name === 'sync-chain');
|
|
85
|
+
const childSpan = spans.find((s) => s.name === 'sync-child');
|
|
86
|
+
expect(childSpan.parentSpanContext?.spanId).toBe(parentSpan.spanContext().spanId);
|
|
87
|
+
expect(parentSpan.attributes[semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES]).toBe('done');
|
|
88
|
+
expect(parentSpan.status.code).toBe(api_1.SpanStatusCode.OK);
|
|
89
|
+
});
|
|
90
|
+
it('trace() ends span on async success', async () => {
|
|
91
|
+
const result = await (0, manual_trace_1.trace)('async-chain', async (span) => {
|
|
92
|
+
await Promise.resolve();
|
|
93
|
+
span.setResult('async-done');
|
|
94
|
+
return 'ok';
|
|
95
|
+
});
|
|
96
|
+
expect(result).toBe('ok');
|
|
97
|
+
const parentSpan = exporter.getFinishedSpans().find((s) => s.name === 'async-chain');
|
|
98
|
+
expect(parentSpan.attributes[semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES]).toBe('async-done');
|
|
99
|
+
expect(parentSpan.status.code).toBe(api_1.SpanStatusCode.OK);
|
|
100
|
+
});
|
|
101
|
+
it('trace() records errors and sets ERROR status', () => {
|
|
102
|
+
expect(() => (0, manual_trace_1.trace)('failing-sync', () => {
|
|
103
|
+
throw new Error('boom');
|
|
104
|
+
})).toThrow('boom');
|
|
105
|
+
const parentSpan = exporter.getFinishedSpans().find((s) => s.name === 'failing-sync');
|
|
106
|
+
expect(parentSpan.status.code).toBe(api_1.SpanStatusCode.ERROR);
|
|
107
|
+
expect(parentSpan.events.some((e) => e.name === 'exception')).toBe(true);
|
|
108
|
+
});
|
|
109
|
+
it('trace() records async rejection', async () => {
|
|
110
|
+
await expect((0, manual_trace_1.trace)('failing-async', async () => {
|
|
111
|
+
await Promise.resolve();
|
|
112
|
+
throw new Error('async-boom');
|
|
113
|
+
})).rejects.toThrow('async-boom');
|
|
114
|
+
const parentSpan = exporter.getFinishedSpans().find((s) => s.name === 'failing-async');
|
|
115
|
+
expect(parentSpan.status.code).toBe(api_1.SpanStatusCode.ERROR);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=manual-trace.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manual-trace.test.js","sourceRoot":"","sources":["../../src/__tests__/manual-trace.test.ts"],"names":[],"mappings":";;;;;AAAA,4CAAwE;AACxE,kEAGuC;AACvC,kEAAmE;AACnE,8EAAwE;AACxE,uDAAsC;AACtC,iFAAwD;AACxD,kDAAoD;AAEpD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,QAA8B,CAAC;IACnC,IAAI,QAA4B,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,GAAG,IAAI,qCAAoB,EAAE,CAAC;QACtC,QAAQ,GAAG,IAAI,mCAAkB,CAAC;YAChC,cAAc,EAAE,CAAC,IAAI,oCAAmB,CAAC,QAAQ,CAAC,CAAC;SACpD,CAAC,CAAC;QACH,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,gBAAa,CAAC,YAAY,CAAC;YACzB,MAAM,EAAE,QAAe;YACvB,eAAe,EAAE,SAAS;YAC1B,WAAW,EAAE,SAAS;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,IAAA,yBAAU,EAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,WAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC1E,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;gBAC9C,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAC5D,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,CAAC,SAAU,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAW,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;QACpF,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,wCAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,6BAAkB,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CACjF,SAAS,CACV,CAAC;QACF,MAAM,CAAC,UAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAc,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,IAAA,yBAAU,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,WAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBACtE,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAU,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAW,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,IAAA,yBAAU,EAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,6BAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrF,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAA,oBAAK,EAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1C,WAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrE,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAC7D,MAAM,CAAC,SAAU,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAW,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;QACpF,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,6BAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvF,MAAM,CAAC,UAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAc,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAK,EAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACvD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QACrF,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,6BAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7F,MAAM,CAAC,UAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAc,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,GAAG,EAAE,CACV,IAAA,oBAAK,EAAC,cAAc,EAAE,GAAG,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CACH,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAElB,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QACtF,MAAM,CAAC,UAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAc,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,UAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,CACV,IAAA,oBAAK,EAAC,eAAe,EAAE,KAAK,IAAI,EAAE;YAChC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEhC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;QACvF,MAAM,CAAC,UAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAc,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
describe('openlit/register', () => {
|
|
36
|
+
const originalEnv = process.env;
|
|
37
|
+
const originalVersion = process.versions.node;
|
|
38
|
+
let initMock;
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
jest.resetModules();
|
|
41
|
+
initMock = jest.fn();
|
|
42
|
+
jest.doMock('../index', () => ({
|
|
43
|
+
__esModule: true,
|
|
44
|
+
default: { init: initMock },
|
|
45
|
+
}));
|
|
46
|
+
process.env = {
|
|
47
|
+
...originalEnv,
|
|
48
|
+
OTEL_SERVICE_NAME: 'node-ai-app',
|
|
49
|
+
OTEL_DEPLOYMENT_ENVIRONMENT: 'prod',
|
|
50
|
+
OTEL_RESOURCE_ATTRIBUTES: 'service.workload.key=k8s:demo,team=ai',
|
|
51
|
+
OPENLIT_DISABLED_INSTRUMENTORS: 'openai,anthropic',
|
|
52
|
+
};
|
|
53
|
+
delete globalThis.__openlit_register_initialized__;
|
|
54
|
+
});
|
|
55
|
+
afterEach(() => {
|
|
56
|
+
process.env = originalEnv;
|
|
57
|
+
Object.defineProperty(process.versions, 'node', {
|
|
58
|
+
value: originalVersion,
|
|
59
|
+
configurable: true,
|
|
60
|
+
});
|
|
61
|
+
delete globalThis.__openlit_register_initialized__;
|
|
62
|
+
jest.dontMock('../index');
|
|
63
|
+
});
|
|
64
|
+
it('initializes once with controller environment values', async () => {
|
|
65
|
+
await Promise.resolve().then(() => __importStar(require('../register')));
|
|
66
|
+
await Promise.resolve().then(() => __importStar(require('../register')));
|
|
67
|
+
expect(initMock).toHaveBeenCalledTimes(1);
|
|
68
|
+
expect(initMock).toHaveBeenCalledWith({
|
|
69
|
+
applicationName: 'node-ai-app',
|
|
70
|
+
environment: 'prod',
|
|
71
|
+
disabledInstrumentors: ['openai', 'anthropic'],
|
|
72
|
+
customSpanAttributes: {
|
|
73
|
+
'service.workload.key': 'k8s:demo',
|
|
74
|
+
team: 'ai',
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
it('skips unsupported Node.js versions', async () => {
|
|
79
|
+
Object.defineProperty(process.versions, 'node', {
|
|
80
|
+
value: '16.20.2',
|
|
81
|
+
configurable: true,
|
|
82
|
+
});
|
|
83
|
+
const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => { });
|
|
84
|
+
await Promise.resolve().then(() => __importStar(require('../register')));
|
|
85
|
+
expect(initMock).not.toHaveBeenCalled();
|
|
86
|
+
expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('requires Node.js 18 or newer'));
|
|
87
|
+
errorSpy.mockRestore();
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=register.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.test.js","sourceRoot":"","sources":["../../src/__tests__/register.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAChC,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9C,IAAI,QAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7B,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC5B,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,GAAG,GAAG;YACZ,GAAG,WAAW;YACd,iBAAiB,EAAE,aAAa;YAChC,2BAA2B,EAAE,MAAM;YACnC,wBAAwB,EAAE,uCAAuC;YACjE,8BAA8B,EAAE,kBAAkB;SACnD,CAAC;QACF,OAAQ,UAAkB,CAAC,gCAAgC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;QAC1B,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;YAC9C,KAAK,EAAE,eAAe;YACtB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAQ,UAAkB,CAAC,gCAAgC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,wDAAa,aAAa,GAAC,CAAC;QAC5B,wDAAa,aAAa,GAAC,CAAC;QAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC;YACpC,eAAe,EAAE,aAAa;YAC9B,WAAW,EAAE,MAAM;YACnB,qBAAqB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;YAC9C,oBAAoB,EAAE;gBACpB,sBAAsB,EAAE,UAAU;gBAClC,IAAI,EAAE,IAAI;aACX;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;YAC9C,KAAK,EAAE,SAAS;YAChB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE3E,wDAAa,aAAa,GAAC,CAAC;QAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CACnC,MAAM,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CACxD,CAAC;QACF,QAAQ,CAAC,WAAW,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { OpenlitConfigInterface, PricingObject } from './types';
|
|
2
|
+
import type { Pipeline } from './guard/pipeline';
|
|
2
3
|
export default class OpenlitConfig {
|
|
3
4
|
static environment: OpenlitConfigInterface['environment'];
|
|
4
5
|
static applicationName: OpenlitConfigInterface['applicationName'];
|
|
@@ -13,10 +14,15 @@ export default class OpenlitConfig {
|
|
|
13
14
|
static disableEvents?: boolean;
|
|
14
15
|
static maxContentLength?: number | null;
|
|
15
16
|
static customSpanAttributes?: Record<string, string> | null;
|
|
16
|
-
static
|
|
17
|
+
static openlitApiKey?: string;
|
|
18
|
+
static openlitUrl?: string;
|
|
19
|
+
static guardPipeline?: Pipeline;
|
|
20
|
+
static updateConfig({ environment, applicationName, tracer, otlpEndpoint, otlpHeaders, disableBatch, captureMessageContent, pricingJson, disableMetrics, disableEvents, maxContentLength, customSpanAttributes, openlitApiKey, openlitUrl, }: Partial<OpenlitConfigInterface> & {
|
|
17
21
|
disableMetrics?: boolean;
|
|
18
22
|
disableEvents?: boolean;
|
|
19
23
|
maxContentLength?: number | null;
|
|
20
24
|
customSpanAttributes?: Record<string, string> | null;
|
|
25
|
+
openlitApiKey?: string;
|
|
26
|
+
openlitUrl?: string;
|
|
21
27
|
}): void;
|
|
22
28
|
}
|
package/dist/config.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
class OpenlitConfig {
|
|
4
|
-
static updateConfig({ environment = 'default', applicationName = 'default', tracer, otlpEndpoint, otlpHeaders, disableBatch = false, captureMessageContent = true, pricingJson, disableMetrics = false, disableEvents = false, maxContentLength = null, customSpanAttributes = null, }) {
|
|
4
|
+
static updateConfig({ environment = 'default', applicationName = 'default', tracer, otlpEndpoint, otlpHeaders, disableBatch = false, captureMessageContent = true, pricingJson, disableMetrics = false, disableEvents = false, maxContentLength = null, customSpanAttributes = null, openlitApiKey, openlitUrl, }) {
|
|
5
5
|
this.environment = environment;
|
|
6
6
|
this.applicationName = applicationName;
|
|
7
7
|
this.tracer = tracer;
|
|
@@ -14,6 +14,8 @@ class OpenlitConfig {
|
|
|
14
14
|
this.disableEvents = disableEvents;
|
|
15
15
|
this.maxContentLength = maxContentLength;
|
|
16
16
|
this.customSpanAttributes = customSpanAttributes;
|
|
17
|
+
this.openlitApiKey = openlitApiKey;
|
|
18
|
+
this.openlitUrl = openlitUrl;
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
exports.default = OpenlitConfig;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAGA,MAAqB,aAAa;IAkBhC,MAAM,CAAC,YAAY,CAAC,EAClB,WAAW,GAAG,SAAS,EACvB,eAAe,GAAG,SAAS,EAC3B,MAAM,EACN,YAAY,EACZ,WAAW,EACX,YAAY,GAAG,KAAK,EACpB,qBAAqB,GAAG,IAAI,EAC5B,WAAW,EACX,cAAc,GAAG,KAAK,EACtB,aAAa,GAAG,KAAK,EACrB,gBAAgB,GAAG,IAAI,EACvB,oBAAoB,GAAG,IAAI,EAC3B,aAAa,EACb,UAAU,GAQX;QACC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAA0C,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAxDD,gCAwDC"}
|