@juspay/neurolink 9.24.0 → 9.25.1
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/CHANGELOG.md +12 -0
- package/dist/adapters/tts/googleTTSHandler.js +26 -1
- package/dist/adapters/video/vertexVideoHandler.js +23 -17
- package/dist/cli/commands/config.d.ts +3 -3
- package/dist/cli/commands/observability.d.ts +53 -0
- package/dist/cli/commands/observability.js +453 -0
- package/dist/cli/commands/telemetry.d.ts +63 -0
- package/dist/cli/commands/telemetry.js +689 -0
- package/dist/cli/factories/commandFactory.js +29 -15
- package/dist/cli/parser.js +6 -9
- package/dist/cli/utils/formatters.d.ts +13 -0
- package/dist/cli/utils/formatters.js +23 -0
- package/dist/constants/contextWindows.js +6 -0
- package/dist/constants/enums.d.ts +6 -0
- package/dist/constants/enums.js +8 -2
- package/dist/context/budgetChecker.js +75 -48
- package/dist/context/contextCompactor.js +135 -127
- package/dist/core/baseProvider.d.ts +5 -0
- package/dist/core/baseProvider.js +117 -110
- package/dist/core/conversationMemoryInitializer.js +7 -4
- package/dist/core/conversationMemoryManager.d.ts +2 -0
- package/dist/core/conversationMemoryManager.js +6 -2
- package/dist/core/modules/GenerationHandler.d.ts +2 -2
- package/dist/core/modules/GenerationHandler.js +12 -12
- package/dist/evaluation/ragasEvaluator.js +39 -19
- package/dist/evaluation/scoring.js +46 -20
- package/dist/features/ppt/presentationOrchestrator.js +23 -0
- package/dist/features/ppt/slideGenerator.js +13 -0
- package/dist/features/ppt/slideRenderers.d.ts +1 -1
- package/dist/features/ppt/slideRenderers.js +6 -4
- package/dist/features/ppt/slideTypeInference.d.ts +1 -1
- package/dist/features/ppt/slideTypeInference.js +75 -73
- package/dist/files/fileTools.d.ts +6 -6
- package/dist/index.d.ts +46 -12
- package/dist/index.js +79 -17
- package/dist/lib/adapters/tts/googleTTSHandler.js +26 -1
- package/dist/lib/adapters/video/vertexVideoHandler.js +23 -17
- package/dist/lib/constants/contextWindows.js +6 -0
- package/dist/lib/constants/enums.d.ts +6 -0
- package/dist/lib/constants/enums.js +8 -2
- package/dist/lib/context/budgetChecker.js +75 -48
- package/dist/lib/context/contextCompactor.js +135 -127
- package/dist/lib/core/baseProvider.d.ts +5 -0
- package/dist/lib/core/baseProvider.js +117 -110
- package/dist/lib/core/conversationMemoryInitializer.js +7 -4
- package/dist/lib/core/conversationMemoryManager.d.ts +2 -0
- package/dist/lib/core/conversationMemoryManager.js +6 -2
- package/dist/lib/core/modules/GenerationHandler.d.ts +2 -2
- package/dist/lib/core/modules/GenerationHandler.js +12 -12
- package/dist/lib/evaluation/ragasEvaluator.js +39 -19
- package/dist/lib/evaluation/scoring.js +46 -20
- package/dist/lib/features/ppt/presentationOrchestrator.js +23 -0
- package/dist/lib/features/ppt/slideGenerator.js +13 -0
- package/dist/lib/features/ppt/slideRenderers.d.ts +1 -1
- package/dist/lib/features/ppt/slideRenderers.js +6 -4
- package/dist/lib/features/ppt/slideTypeInference.d.ts +1 -1
- package/dist/lib/features/ppt/slideTypeInference.js +75 -73
- package/dist/lib/files/fileTools.d.ts +6 -6
- package/dist/lib/index.d.ts +46 -12
- package/dist/lib/index.js +79 -17
- package/dist/lib/mcp/httpRateLimiter.js +39 -12
- package/dist/lib/mcp/httpRetryHandler.js +22 -1
- package/dist/lib/mcp/mcpClientFactory.js +13 -15
- package/dist/lib/memory/memoryRetrievalTools.js +22 -0
- package/dist/lib/neurolink.d.ts +64 -72
- package/dist/lib/neurolink.js +1007 -564
- package/dist/lib/observability/exporterRegistry.d.ts +152 -0
- package/dist/lib/observability/exporterRegistry.js +414 -0
- package/dist/lib/observability/exporters/arizeExporter.d.ts +32 -0
- package/dist/lib/observability/exporters/arizeExporter.js +139 -0
- package/dist/lib/observability/exporters/baseExporter.d.ts +117 -0
- package/dist/lib/observability/exporters/baseExporter.js +191 -0
- package/dist/lib/observability/exporters/braintrustExporter.d.ts +30 -0
- package/dist/lib/observability/exporters/braintrustExporter.js +155 -0
- package/dist/lib/observability/exporters/datadogExporter.d.ts +37 -0
- package/dist/lib/observability/exporters/datadogExporter.js +197 -0
- package/dist/lib/observability/exporters/index.d.ts +13 -0
- package/dist/lib/observability/exporters/index.js +14 -0
- package/dist/lib/observability/exporters/laminarExporter.d.ts +48 -0
- package/dist/lib/observability/exporters/laminarExporter.js +303 -0
- package/dist/lib/observability/exporters/langfuseExporter.d.ts +47 -0
- package/dist/lib/observability/exporters/langfuseExporter.js +204 -0
- package/dist/lib/observability/exporters/langsmithExporter.d.ts +26 -0
- package/dist/lib/observability/exporters/langsmithExporter.js +124 -0
- package/dist/lib/observability/exporters/otelExporter.d.ts +39 -0
- package/dist/lib/observability/exporters/otelExporter.js +165 -0
- package/dist/lib/observability/exporters/posthogExporter.d.ts +48 -0
- package/dist/lib/observability/exporters/posthogExporter.js +288 -0
- package/dist/lib/observability/exporters/sentryExporter.d.ts +32 -0
- package/dist/lib/observability/exporters/sentryExporter.js +166 -0
- package/dist/lib/observability/index.d.ts +25 -0
- package/dist/lib/observability/index.js +32 -0
- package/dist/lib/observability/metricsAggregator.d.ts +260 -0
- package/dist/lib/observability/metricsAggregator.js +557 -0
- package/dist/lib/observability/otelBridge.d.ts +49 -0
- package/dist/lib/observability/otelBridge.js +132 -0
- package/dist/lib/observability/retryPolicy.d.ts +192 -0
- package/dist/lib/observability/retryPolicy.js +384 -0
- package/dist/lib/observability/sampling/index.d.ts +4 -0
- package/dist/lib/observability/sampling/index.js +5 -0
- package/dist/lib/observability/sampling/samplers.d.ts +116 -0
- package/dist/lib/observability/sampling/samplers.js +217 -0
- package/dist/lib/observability/spanProcessor.d.ts +129 -0
- package/dist/lib/observability/spanProcessor.js +304 -0
- package/dist/lib/observability/tokenTracker.d.ts +156 -0
- package/dist/lib/observability/tokenTracker.js +414 -0
- package/dist/lib/observability/types/exporterTypes.d.ts +250 -0
- package/dist/lib/observability/types/exporterTypes.js +6 -0
- package/dist/lib/observability/types/index.d.ts +6 -0
- package/dist/lib/observability/types/index.js +5 -0
- package/dist/lib/observability/types/spanTypes.d.ts +244 -0
- package/dist/lib/observability/types/spanTypes.js +93 -0
- package/dist/lib/observability/utils/index.d.ts +4 -0
- package/dist/lib/observability/utils/index.js +5 -0
- package/dist/lib/observability/utils/safeMetadata.d.ts +10 -0
- package/dist/lib/observability/utils/safeMetadata.js +26 -0
- package/dist/lib/observability/utils/spanSerializer.d.ts +115 -0
- package/dist/lib/observability/utils/spanSerializer.js +291 -0
- package/dist/lib/providers/amazonSagemaker.d.ts +5 -4
- package/dist/lib/providers/amazonSagemaker.js +3 -4
- package/dist/lib/providers/googleVertex.d.ts +7 -0
- package/dist/lib/providers/googleVertex.js +76 -2
- package/dist/lib/rag/pipeline/RAGPipeline.d.ts +0 -5
- package/dist/lib/rag/pipeline/RAGPipeline.js +122 -87
- package/dist/lib/rag/ragIntegration.js +30 -0
- package/dist/lib/rag/retrieval/hybridSearch.js +22 -0
- package/dist/lib/server/abstract/baseServerAdapter.js +51 -19
- package/dist/lib/server/middleware/common.js +44 -12
- package/dist/lib/services/server/ai/observability/instrumentation.d.ts +2 -2
- package/dist/lib/services/server/ai/observability/instrumentation.js +10 -5
- package/dist/lib/types/conversationMemoryInterface.d.ts +2 -0
- package/dist/lib/types/modelTypes.d.ts +18 -18
- package/dist/lib/types/providers.d.ts +5 -0
- package/dist/lib/utils/pricing.js +25 -1
- package/dist/lib/utils/ttsProcessor.js +74 -59
- package/dist/lib/workflow/config.d.ts +36 -36
- package/dist/lib/workflow/core/ensembleExecutor.js +10 -0
- package/dist/lib/workflow/core/judgeScorer.js +20 -2
- package/dist/lib/workflow/core/workflowRunner.js +34 -1
- package/dist/mcp/httpRateLimiter.js +39 -12
- package/dist/mcp/httpRetryHandler.js +22 -1
- package/dist/mcp/mcpClientFactory.js +13 -15
- package/dist/memory/memoryRetrievalTools.js +22 -0
- package/dist/neurolink.d.ts +64 -72
- package/dist/neurolink.js +1007 -564
- package/dist/observability/FEATURE-STATUS.md +269 -0
- package/dist/observability/exporterRegistry.d.ts +152 -0
- package/dist/observability/exporterRegistry.js +413 -0
- package/dist/observability/exporters/arizeExporter.d.ts +32 -0
- package/dist/observability/exporters/arizeExporter.js +138 -0
- package/dist/observability/exporters/baseExporter.d.ts +117 -0
- package/dist/observability/exporters/baseExporter.js +190 -0
- package/dist/observability/exporters/braintrustExporter.d.ts +30 -0
- package/dist/observability/exporters/braintrustExporter.js +154 -0
- package/dist/observability/exporters/datadogExporter.d.ts +37 -0
- package/dist/observability/exporters/datadogExporter.js +196 -0
- package/dist/observability/exporters/index.d.ts +13 -0
- package/dist/observability/exporters/index.js +13 -0
- package/dist/observability/exporters/laminarExporter.d.ts +48 -0
- package/dist/observability/exporters/laminarExporter.js +302 -0
- package/dist/observability/exporters/langfuseExporter.d.ts +47 -0
- package/dist/observability/exporters/langfuseExporter.js +203 -0
- package/dist/observability/exporters/langsmithExporter.d.ts +26 -0
- package/dist/observability/exporters/langsmithExporter.js +123 -0
- package/dist/observability/exporters/otelExporter.d.ts +39 -0
- package/dist/observability/exporters/otelExporter.js +164 -0
- package/dist/observability/exporters/posthogExporter.d.ts +48 -0
- package/dist/observability/exporters/posthogExporter.js +287 -0
- package/dist/observability/exporters/sentryExporter.d.ts +32 -0
- package/dist/observability/exporters/sentryExporter.js +165 -0
- package/dist/observability/index.d.ts +25 -0
- package/dist/observability/index.js +31 -0
- package/dist/observability/metricsAggregator.d.ts +260 -0
- package/dist/observability/metricsAggregator.js +556 -0
- package/dist/observability/otelBridge.d.ts +49 -0
- package/dist/observability/otelBridge.js +131 -0
- package/dist/observability/retryPolicy.d.ts +192 -0
- package/dist/observability/retryPolicy.js +383 -0
- package/dist/observability/sampling/index.d.ts +4 -0
- package/dist/observability/sampling/index.js +4 -0
- package/dist/observability/sampling/samplers.d.ts +116 -0
- package/dist/observability/sampling/samplers.js +216 -0
- package/dist/observability/spanProcessor.d.ts +129 -0
- package/dist/observability/spanProcessor.js +303 -0
- package/dist/observability/tokenTracker.d.ts +156 -0
- package/dist/observability/tokenTracker.js +413 -0
- package/dist/observability/types/exporterTypes.d.ts +250 -0
- package/dist/observability/types/exporterTypes.js +5 -0
- package/dist/observability/types/index.d.ts +6 -0
- package/dist/observability/types/index.js +4 -0
- package/dist/observability/types/spanTypes.d.ts +244 -0
- package/dist/observability/types/spanTypes.js +92 -0
- package/dist/observability/utils/index.d.ts +4 -0
- package/dist/observability/utils/index.js +4 -0
- package/dist/observability/utils/safeMetadata.d.ts +10 -0
- package/dist/observability/utils/safeMetadata.js +25 -0
- package/dist/observability/utils/spanSerializer.d.ts +115 -0
- package/dist/observability/utils/spanSerializer.js +290 -0
- package/dist/providers/amazonSagemaker.d.ts +5 -4
- package/dist/providers/amazonSagemaker.js +3 -4
- package/dist/providers/googleVertex.d.ts +7 -0
- package/dist/providers/googleVertex.js +76 -2
- package/dist/rag/pipeline/RAGPipeline.d.ts +0 -5
- package/dist/rag/pipeline/RAGPipeline.js +122 -87
- package/dist/rag/ragIntegration.js +30 -0
- package/dist/rag/retrieval/hybridSearch.js +22 -0
- package/dist/server/abstract/baseServerAdapter.js +51 -19
- package/dist/server/middleware/common.js +44 -12
- package/dist/services/server/ai/observability/instrumentation.d.ts +2 -2
- package/dist/services/server/ai/observability/instrumentation.js +10 -5
- package/dist/types/conversationMemoryInterface.d.ts +2 -0
- package/dist/types/providers.d.ts +5 -0
- package/dist/utils/pricing.js +25 -1
- package/dist/utils/ttsProcessor.js +74 -59
- package/dist/workflow/config.d.ts +52 -52
- package/dist/workflow/core/ensembleExecutor.js +10 -0
- package/dist/workflow/core/judgeScorer.js +20 -2
- package/dist/workflow/core/workflowRunner.js +34 -1
- package/package.json +1 -1
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI-specific span types and data structures
|
|
3
|
+
* Following OpenTelemetry GenAI semantic conventions
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Span types for AI operations
|
|
7
|
+
* Following Mastra's span categorization and OTel GenAI conventions
|
|
8
|
+
*/
|
|
9
|
+
export declare enum SpanType {
|
|
10
|
+
/** Agent execution run (reserved for future multi-agent support) */
|
|
11
|
+
AGENT_RUN = "agent.run",
|
|
12
|
+
/** Workflow step execution (reserved for future workflow engine) */
|
|
13
|
+
WORKFLOW_STEP = "workflow.step",
|
|
14
|
+
/** Tool/function call */
|
|
15
|
+
TOOL_CALL = "tool.call",
|
|
16
|
+
/** LLM generation request */
|
|
17
|
+
MODEL_GENERATION = "model.generation",
|
|
18
|
+
/** Embedding generation (reserved for future embedding API) */
|
|
19
|
+
EMBEDDING = "embedding",
|
|
20
|
+
/** Retrieval operation (reserved for future RAG support) */
|
|
21
|
+
RETRIEVAL = "retrieval",
|
|
22
|
+
/** Memory operation */
|
|
23
|
+
MEMORY = "memory",
|
|
24
|
+
/** Context compaction operation */
|
|
25
|
+
CONTEXT_COMPACTION = "context.compaction",
|
|
26
|
+
/** RAG pipeline operation */
|
|
27
|
+
RAG = "rag",
|
|
28
|
+
/** Evaluation/scoring operation */
|
|
29
|
+
EVALUATION = "evaluation",
|
|
30
|
+
/** MCP transport operation */
|
|
31
|
+
MCP_TRANSPORT = "mcp.transport",
|
|
32
|
+
/** Media generation (image/video) */
|
|
33
|
+
MEDIA_GENERATION = "media.generation",
|
|
34
|
+
/** PPT/presentation generation */
|
|
35
|
+
PPT_GENERATION = "ppt.generation",
|
|
36
|
+
/** Workflow execution */
|
|
37
|
+
WORKFLOW = "workflow",
|
|
38
|
+
/** TTS synthesis */
|
|
39
|
+
TTS = "tts",
|
|
40
|
+
/** Server adapter request */
|
|
41
|
+
SERVER_REQUEST = "server.request",
|
|
42
|
+
/** Custom span */
|
|
43
|
+
CUSTOM = "custom"
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Span status codes (following OTel conventions)
|
|
47
|
+
*/
|
|
48
|
+
export declare enum SpanStatus {
|
|
49
|
+
UNSET = 0,
|
|
50
|
+
OK = 1,
|
|
51
|
+
ERROR = 2
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* OpenTelemetry GenAI semantic conventions
|
|
55
|
+
* @see https://opentelemetry.io/docs/specs/semconv/gen-ai/
|
|
56
|
+
*/
|
|
57
|
+
export declare const GENAI_ATTRIBUTES: {
|
|
58
|
+
readonly GEN_AI_SYSTEM: "gen_ai.system";
|
|
59
|
+
readonly GEN_AI_REQUEST_MODEL: "gen_ai.request.model";
|
|
60
|
+
readonly GEN_AI_RESPONSE_MODEL: "gen_ai.response.model";
|
|
61
|
+
readonly GEN_AI_USAGE_INPUT_TOKENS: "gen_ai.usage.input_tokens";
|
|
62
|
+
readonly GEN_AI_USAGE_OUTPUT_TOKENS: "gen_ai.usage.output_tokens";
|
|
63
|
+
readonly GEN_AI_USAGE_TOTAL_TOKENS: "gen_ai.usage.total_tokens";
|
|
64
|
+
readonly GEN_AI_REQUEST_TEMPERATURE: "gen_ai.request.temperature";
|
|
65
|
+
readonly GEN_AI_REQUEST_TOP_P: "gen_ai.request.top_p";
|
|
66
|
+
readonly GEN_AI_REQUEST_MAX_TOKENS: "gen_ai.request.max_tokens";
|
|
67
|
+
readonly GEN_AI_REQUEST_STOP_SEQUENCES: "gen_ai.request.stop_sequences";
|
|
68
|
+
readonly GEN_AI_RESPONSE_FINISH_REASON: "gen_ai.response.finish_reasons";
|
|
69
|
+
readonly GEN_AI_RESPONSE_ID: "gen_ai.response.id";
|
|
70
|
+
readonly GEN_AI_TOOL_NAME: "gen_ai.tool.name";
|
|
71
|
+
readonly GEN_AI_TOOL_CALL_ID: "gen_ai.tool.call_id";
|
|
72
|
+
readonly GEN_AI_PROMPT: "gen_ai.prompt";
|
|
73
|
+
readonly GEN_AI_COMPLETION: "gen_ai.completion";
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Agent-specific conventions (emerging standard)
|
|
77
|
+
*/
|
|
78
|
+
export declare const AGENT_ATTRIBUTES: {
|
|
79
|
+
readonly AGENT_NAME: "gen_ai.agent.name";
|
|
80
|
+
readonly AGENT_STEP_TYPE: "gen_ai.agent.step_type";
|
|
81
|
+
readonly AGENT_TOOL_CALLS: "gen_ai.agent.tool_calls";
|
|
82
|
+
readonly AGENT_MEMORY_ACCESS: "gen_ai.agent.memory_access";
|
|
83
|
+
readonly AGENT_REASONING_TRACE: "gen_ai.agent.reasoning_trace";
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Span attributes with AI-specific fields
|
|
87
|
+
*/
|
|
88
|
+
export type SpanAttributes = {
|
|
89
|
+
"service.name"?: string;
|
|
90
|
+
"service.version"?: string;
|
|
91
|
+
"deployment.environment"?: string;
|
|
92
|
+
"user.id"?: string;
|
|
93
|
+
"session.id"?: string;
|
|
94
|
+
"ai.provider"?: string;
|
|
95
|
+
"ai.model"?: string;
|
|
96
|
+
"ai.model.version"?: string;
|
|
97
|
+
"ai.tokens.input"?: number;
|
|
98
|
+
"ai.tokens.output"?: number;
|
|
99
|
+
"ai.tokens.total"?: number;
|
|
100
|
+
"ai.tokens.cache_read"?: number;
|
|
101
|
+
"ai.tokens.cache_creation"?: number;
|
|
102
|
+
"ai.tokens.reasoning"?: number;
|
|
103
|
+
"ai.cost.input"?: number;
|
|
104
|
+
"ai.cost.output"?: number;
|
|
105
|
+
"ai.cost.total"?: number;
|
|
106
|
+
"ai.cost.currency"?: string;
|
|
107
|
+
"ai.temperature"?: number;
|
|
108
|
+
"ai.max_tokens"?: number;
|
|
109
|
+
"ai.top_p"?: number;
|
|
110
|
+
"ai.stop_sequences"?: string[];
|
|
111
|
+
"tool.name"?: string;
|
|
112
|
+
"tool.server"?: string;
|
|
113
|
+
"tool.success"?: boolean;
|
|
114
|
+
"error.type"?: string;
|
|
115
|
+
"error.message"?: string;
|
|
116
|
+
"error.stack"?: string;
|
|
117
|
+
error?: boolean;
|
|
118
|
+
input?: unknown;
|
|
119
|
+
output?: unknown;
|
|
120
|
+
expected?: unknown;
|
|
121
|
+
scores?: Record<string, number>;
|
|
122
|
+
[key: string]: unknown;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Span event for recording discrete occurrences
|
|
126
|
+
*/
|
|
127
|
+
export type SpanEvent = {
|
|
128
|
+
name: string;
|
|
129
|
+
timestamp: string;
|
|
130
|
+
attributes?: Record<string, unknown>;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Link to related span
|
|
134
|
+
*/
|
|
135
|
+
export type SpanLink = {
|
|
136
|
+
traceId: string;
|
|
137
|
+
spanId: string;
|
|
138
|
+
attributes?: Record<string, unknown>;
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Complete span data structure
|
|
142
|
+
*/
|
|
143
|
+
export type SpanData = {
|
|
144
|
+
/** Unique span identifier */
|
|
145
|
+
spanId: string;
|
|
146
|
+
/** Trace identifier for distributed tracing */
|
|
147
|
+
traceId: string;
|
|
148
|
+
/** Parent span ID for nested operations */
|
|
149
|
+
parentSpanId?: string;
|
|
150
|
+
/** Span type category */
|
|
151
|
+
type: SpanType;
|
|
152
|
+
/** Human-readable span name */
|
|
153
|
+
name: string;
|
|
154
|
+
/** Start timestamp (ISO 8601) */
|
|
155
|
+
startTime: string;
|
|
156
|
+
/** End timestamp (ISO 8601) */
|
|
157
|
+
endTime?: string;
|
|
158
|
+
/** Duration in milliseconds */
|
|
159
|
+
durationMs?: number;
|
|
160
|
+
/** Span status */
|
|
161
|
+
status: SpanStatus;
|
|
162
|
+
/** Status message (for errors) */
|
|
163
|
+
statusMessage?: string;
|
|
164
|
+
/** Span attributes/tags */
|
|
165
|
+
attributes: SpanAttributes;
|
|
166
|
+
/** Events within the span */
|
|
167
|
+
events: SpanEvent[];
|
|
168
|
+
/** Links to related spans */
|
|
169
|
+
links: SpanLink[];
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Langfuse-specific span format
|
|
173
|
+
*/
|
|
174
|
+
export type LangfuseSpan = {
|
|
175
|
+
id: string;
|
|
176
|
+
traceId: string;
|
|
177
|
+
parentObservationId?: string;
|
|
178
|
+
name: string;
|
|
179
|
+
startTime: string;
|
|
180
|
+
endTime?: string;
|
|
181
|
+
metadata: Record<string, unknown>;
|
|
182
|
+
level: "DEBUG" | "DEFAULT" | "WARNING" | "ERROR";
|
|
183
|
+
statusMessage?: string;
|
|
184
|
+
input?: unknown;
|
|
185
|
+
output?: unknown;
|
|
186
|
+
usage?: {
|
|
187
|
+
promptTokens?: number;
|
|
188
|
+
completionTokens?: number;
|
|
189
|
+
totalTokens?: number;
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* LangSmith-specific run format
|
|
194
|
+
*/
|
|
195
|
+
export type LangSmithRun = {
|
|
196
|
+
id: string;
|
|
197
|
+
trace_id: string;
|
|
198
|
+
parent_run_id?: string;
|
|
199
|
+
name: string;
|
|
200
|
+
run_type: "llm" | "chain" | "tool" | "retriever" | "embedding";
|
|
201
|
+
start_time: string;
|
|
202
|
+
end_time?: string;
|
|
203
|
+
extra: Record<string, unknown>;
|
|
204
|
+
error?: string;
|
|
205
|
+
inputs?: unknown;
|
|
206
|
+
outputs?: unknown;
|
|
207
|
+
tags?: string[];
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* OpenTelemetry span format
|
|
211
|
+
*/
|
|
212
|
+
export type OtelSpan = {
|
|
213
|
+
traceId: string;
|
|
214
|
+
spanId: string;
|
|
215
|
+
parentSpanId?: string;
|
|
216
|
+
name: string;
|
|
217
|
+
kind: number;
|
|
218
|
+
startTimeUnixNano: number;
|
|
219
|
+
endTimeUnixNano?: number;
|
|
220
|
+
attributes: Array<{
|
|
221
|
+
key: string;
|
|
222
|
+
value: {
|
|
223
|
+
stringValue?: string;
|
|
224
|
+
intValue?: number;
|
|
225
|
+
boolValue?: boolean;
|
|
226
|
+
};
|
|
227
|
+
}>;
|
|
228
|
+
status: {
|
|
229
|
+
code: number;
|
|
230
|
+
message?: string;
|
|
231
|
+
};
|
|
232
|
+
events: Array<{
|
|
233
|
+
name: string;
|
|
234
|
+
timeUnixNano: number;
|
|
235
|
+
attributes: Array<{
|
|
236
|
+
key: string;
|
|
237
|
+
value: {
|
|
238
|
+
stringValue?: string;
|
|
239
|
+
intValue?: number;
|
|
240
|
+
boolValue?: boolean;
|
|
241
|
+
};
|
|
242
|
+
}>;
|
|
243
|
+
}>;
|
|
244
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI-specific span types and data structures
|
|
3
|
+
* Following OpenTelemetry GenAI semantic conventions
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Span types for AI operations
|
|
7
|
+
* Following Mastra's span categorization and OTel GenAI conventions
|
|
8
|
+
*/
|
|
9
|
+
export var SpanType;
|
|
10
|
+
(function (SpanType) {
|
|
11
|
+
/** Agent execution run (reserved for future multi-agent support) */
|
|
12
|
+
SpanType["AGENT_RUN"] = "agent.run";
|
|
13
|
+
/** Workflow step execution (reserved for future workflow engine) */
|
|
14
|
+
SpanType["WORKFLOW_STEP"] = "workflow.step";
|
|
15
|
+
/** Tool/function call */
|
|
16
|
+
SpanType["TOOL_CALL"] = "tool.call";
|
|
17
|
+
/** LLM generation request */
|
|
18
|
+
SpanType["MODEL_GENERATION"] = "model.generation";
|
|
19
|
+
/** Embedding generation (reserved for future embedding API) */
|
|
20
|
+
SpanType["EMBEDDING"] = "embedding";
|
|
21
|
+
/** Retrieval operation (reserved for future RAG support) */
|
|
22
|
+
SpanType["RETRIEVAL"] = "retrieval";
|
|
23
|
+
/** Memory operation */
|
|
24
|
+
SpanType["MEMORY"] = "memory";
|
|
25
|
+
/** Context compaction operation */
|
|
26
|
+
SpanType["CONTEXT_COMPACTION"] = "context.compaction";
|
|
27
|
+
/** RAG pipeline operation */
|
|
28
|
+
SpanType["RAG"] = "rag";
|
|
29
|
+
/** Evaluation/scoring operation */
|
|
30
|
+
SpanType["EVALUATION"] = "evaluation";
|
|
31
|
+
/** MCP transport operation */
|
|
32
|
+
SpanType["MCP_TRANSPORT"] = "mcp.transport";
|
|
33
|
+
/** Media generation (image/video) */
|
|
34
|
+
SpanType["MEDIA_GENERATION"] = "media.generation";
|
|
35
|
+
/** PPT/presentation generation */
|
|
36
|
+
SpanType["PPT_GENERATION"] = "ppt.generation";
|
|
37
|
+
/** Workflow execution */
|
|
38
|
+
SpanType["WORKFLOW"] = "workflow";
|
|
39
|
+
/** TTS synthesis */
|
|
40
|
+
SpanType["TTS"] = "tts";
|
|
41
|
+
/** Server adapter request */
|
|
42
|
+
SpanType["SERVER_REQUEST"] = "server.request";
|
|
43
|
+
/** Custom span */
|
|
44
|
+
SpanType["CUSTOM"] = "custom";
|
|
45
|
+
})(SpanType || (SpanType = {}));
|
|
46
|
+
/**
|
|
47
|
+
* Span status codes (following OTel conventions)
|
|
48
|
+
*/
|
|
49
|
+
export var SpanStatus;
|
|
50
|
+
(function (SpanStatus) {
|
|
51
|
+
SpanStatus[SpanStatus["UNSET"] = 0] = "UNSET";
|
|
52
|
+
SpanStatus[SpanStatus["OK"] = 1] = "OK";
|
|
53
|
+
SpanStatus[SpanStatus["ERROR"] = 2] = "ERROR";
|
|
54
|
+
})(SpanStatus || (SpanStatus = {}));
|
|
55
|
+
/**
|
|
56
|
+
* OpenTelemetry GenAI semantic conventions
|
|
57
|
+
* @see https://opentelemetry.io/docs/specs/semconv/gen-ai/
|
|
58
|
+
*/
|
|
59
|
+
export const GENAI_ATTRIBUTES = {
|
|
60
|
+
// System and model identification
|
|
61
|
+
GEN_AI_SYSTEM: "gen_ai.system",
|
|
62
|
+
GEN_AI_REQUEST_MODEL: "gen_ai.request.model",
|
|
63
|
+
GEN_AI_RESPONSE_MODEL: "gen_ai.response.model",
|
|
64
|
+
// Token usage
|
|
65
|
+
GEN_AI_USAGE_INPUT_TOKENS: "gen_ai.usage.input_tokens",
|
|
66
|
+
GEN_AI_USAGE_OUTPUT_TOKENS: "gen_ai.usage.output_tokens",
|
|
67
|
+
GEN_AI_USAGE_TOTAL_TOKENS: "gen_ai.usage.total_tokens",
|
|
68
|
+
// Request parameters
|
|
69
|
+
GEN_AI_REQUEST_TEMPERATURE: "gen_ai.request.temperature",
|
|
70
|
+
GEN_AI_REQUEST_TOP_P: "gen_ai.request.top_p",
|
|
71
|
+
GEN_AI_REQUEST_MAX_TOKENS: "gen_ai.request.max_tokens",
|
|
72
|
+
GEN_AI_REQUEST_STOP_SEQUENCES: "gen_ai.request.stop_sequences",
|
|
73
|
+
// Response metadata
|
|
74
|
+
GEN_AI_RESPONSE_FINISH_REASON: "gen_ai.response.finish_reasons",
|
|
75
|
+
GEN_AI_RESPONSE_ID: "gen_ai.response.id",
|
|
76
|
+
// Tool/function calling
|
|
77
|
+
GEN_AI_TOOL_NAME: "gen_ai.tool.name",
|
|
78
|
+
GEN_AI_TOOL_CALL_ID: "gen_ai.tool.call_id",
|
|
79
|
+
// Prompts and completions (optional, privacy-sensitive)
|
|
80
|
+
GEN_AI_PROMPT: "gen_ai.prompt",
|
|
81
|
+
GEN_AI_COMPLETION: "gen_ai.completion",
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Agent-specific conventions (emerging standard)
|
|
85
|
+
*/
|
|
86
|
+
export const AGENT_ATTRIBUTES = {
|
|
87
|
+
AGENT_NAME: "gen_ai.agent.name",
|
|
88
|
+
AGENT_STEP_TYPE: "gen_ai.agent.step_type",
|
|
89
|
+
AGENT_TOOL_CALLS: "gen_ai.agent.tool_calls",
|
|
90
|
+
AGENT_MEMORY_ACCESS: "gen_ai.agent.memory_access",
|
|
91
|
+
AGENT_REASONING_TRACE: "gen_ai.agent.reasoning_trace",
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=spanTypes.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe metadata filtering for observability exporters.
|
|
3
|
+
*
|
|
4
|
+
* Only these attribute keys are forwarded to third-party backends as trace
|
|
5
|
+
* metadata. User prompts (input), LLM responses (output), error stacks, and
|
|
6
|
+
* any other potentially sensitive data are excluded to prevent PII leaks.
|
|
7
|
+
*/
|
|
8
|
+
import type { SpanAttributes } from "../types/spanTypes.js";
|
|
9
|
+
export declare const SAFE_METADATA_KEYS: Set<string>;
|
|
10
|
+
export declare function filterSafeMetadata(attributes: SpanAttributes): Record<string, unknown>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe metadata filtering for observability exporters.
|
|
3
|
+
*
|
|
4
|
+
* Only these attribute keys are forwarded to third-party backends as trace
|
|
5
|
+
* metadata. User prompts (input), LLM responses (output), error stacks, and
|
|
6
|
+
* any other potentially sensitive data are excluded to prevent PII leaks.
|
|
7
|
+
*/
|
|
8
|
+
// Only ai.* keys are forwarded as metadata. Stream metrics (chunk_count,
|
|
9
|
+
// content_length) should be accessed via span attributes directly, not via
|
|
10
|
+
// metadata sent to third-party backends.
|
|
11
|
+
export const SAFE_METADATA_KEYS = new Set([
|
|
12
|
+
"ai.provider",
|
|
13
|
+
"ai.model",
|
|
14
|
+
"ai.temperature",
|
|
15
|
+
"ai.max_tokens",
|
|
16
|
+
]);
|
|
17
|
+
export function filterSafeMetadata(attributes) {
|
|
18
|
+
const filtered = {};
|
|
19
|
+
for (const key of SAFE_METADATA_KEYS) {
|
|
20
|
+
if (attributes[key] !== undefined) {
|
|
21
|
+
filtered[key] = attributes[key];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return filtered;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=safeMetadata.js.map
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility class for span creation and serialization
|
|
3
|
+
* Handles conversion between NeuroLink's span format and platform-specific formats
|
|
4
|
+
*/
|
|
5
|
+
import { type LangfuseSpan, type LangSmithRun, type OtelSpan, type SpanAttributes, type SpanData, SpanStatus, SpanType } from "../types/index.js";
|
|
6
|
+
/**
|
|
7
|
+
* Utility class for span creation and serialization
|
|
8
|
+
*/
|
|
9
|
+
export declare class SpanSerializer {
|
|
10
|
+
/**
|
|
11
|
+
* Create a new span with generated IDs
|
|
12
|
+
*/
|
|
13
|
+
static createSpan(type: SpanType, name: string, attributes?: Partial<SpanAttributes>, parentSpanId?: string, traceId?: string): SpanData;
|
|
14
|
+
/**
|
|
15
|
+
* End a span with status
|
|
16
|
+
*/
|
|
17
|
+
static endSpan(span: SpanData, status?: SpanStatus, statusMessage?: string): SpanData;
|
|
18
|
+
/**
|
|
19
|
+
* Add event to span
|
|
20
|
+
*/
|
|
21
|
+
static addEvent(span: SpanData, name: string, attributes?: Record<string, unknown>): SpanData;
|
|
22
|
+
/**
|
|
23
|
+
* Update span attributes
|
|
24
|
+
*/
|
|
25
|
+
static updateAttributes(span: SpanData, attributes: Partial<SpanAttributes>): SpanData;
|
|
26
|
+
/**
|
|
27
|
+
* Serialize span to JSON for export
|
|
28
|
+
*/
|
|
29
|
+
static toJSON(span: SpanData): string;
|
|
30
|
+
/**
|
|
31
|
+
* Instance method to serialize a span object to JSON string
|
|
32
|
+
* @param span - The span data to serialize (can be partial span data)
|
|
33
|
+
* @returns JSON string representation of the span
|
|
34
|
+
*/
|
|
35
|
+
serialize(span: Partial<SpanData> | Record<string, unknown>): string;
|
|
36
|
+
/**
|
|
37
|
+
* Instance method to deserialize a JSON string to span data
|
|
38
|
+
* @param json - The JSON string to parse
|
|
39
|
+
* @returns Parsed span data
|
|
40
|
+
*/
|
|
41
|
+
deserialize(json: string): SpanData;
|
|
42
|
+
/**
|
|
43
|
+
* Parse span from JSON
|
|
44
|
+
*/
|
|
45
|
+
static fromJSON(json: string): SpanData;
|
|
46
|
+
/**
|
|
47
|
+
* Serialize span for Langfuse format
|
|
48
|
+
*/
|
|
49
|
+
static toLangfuseFormat(span: SpanData): LangfuseSpan;
|
|
50
|
+
/**
|
|
51
|
+
* Serialize span for LangSmith format
|
|
52
|
+
*/
|
|
53
|
+
static toLangSmithFormat(span: SpanData): LangSmithRun;
|
|
54
|
+
/**
|
|
55
|
+
* Serialize span for OpenTelemetry format
|
|
56
|
+
*/
|
|
57
|
+
static toOtelFormat(span: SpanData): OtelSpan;
|
|
58
|
+
/**
|
|
59
|
+
* Convert value to OTel attribute value format
|
|
60
|
+
*/
|
|
61
|
+
private static toOtelAttributeValue;
|
|
62
|
+
/**
|
|
63
|
+
* Map NeuroLink span type to LangSmith run type
|
|
64
|
+
*/
|
|
65
|
+
private static mapSpanTypeToLangSmithRunType;
|
|
66
|
+
/**
|
|
67
|
+
* Extract tags from span attributes for LangSmith
|
|
68
|
+
*/
|
|
69
|
+
private static extractTags;
|
|
70
|
+
/**
|
|
71
|
+
* Create a generation span with AI-specific attributes
|
|
72
|
+
*/
|
|
73
|
+
static createGenerationSpan(params: {
|
|
74
|
+
provider: string;
|
|
75
|
+
model: string;
|
|
76
|
+
name?: string;
|
|
77
|
+
parentSpanId?: string;
|
|
78
|
+
traceId?: string;
|
|
79
|
+
temperature?: number;
|
|
80
|
+
maxTokens?: number;
|
|
81
|
+
input?: unknown;
|
|
82
|
+
userId?: string;
|
|
83
|
+
sessionId?: string;
|
|
84
|
+
}): SpanData;
|
|
85
|
+
/**
|
|
86
|
+
* Create a tool call span
|
|
87
|
+
*/
|
|
88
|
+
static createToolCallSpan(params: {
|
|
89
|
+
toolName: string;
|
|
90
|
+
server?: string;
|
|
91
|
+
input?: unknown;
|
|
92
|
+
parentSpanId?: string;
|
|
93
|
+
traceId?: string;
|
|
94
|
+
}): SpanData;
|
|
95
|
+
/**
|
|
96
|
+
* Enrich span with token usage
|
|
97
|
+
*/
|
|
98
|
+
static enrichWithTokenUsage(span: SpanData, usage: {
|
|
99
|
+
promptTokens?: number;
|
|
100
|
+
completionTokens?: number;
|
|
101
|
+
totalTokens?: number;
|
|
102
|
+
cacheCreationTokens?: number;
|
|
103
|
+
cacheReadTokens?: number;
|
|
104
|
+
reasoningTokens?: number;
|
|
105
|
+
}): SpanData;
|
|
106
|
+
/**
|
|
107
|
+
* Enrich span with cost information
|
|
108
|
+
*/
|
|
109
|
+
static enrichWithCost(span: SpanData, cost: {
|
|
110
|
+
inputCost?: number;
|
|
111
|
+
outputCost?: number;
|
|
112
|
+
totalCost: number;
|
|
113
|
+
currency?: string;
|
|
114
|
+
}): SpanData;
|
|
115
|
+
}
|