@superblocksteam/telemetry 2.0.83-next.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.
Files changed (227) hide show
  1. package/LICENSE.txt +87 -0
  2. package/README.md +155 -0
  3. package/dist/browser/index.d.ts +8 -0
  4. package/dist/browser/index.d.ts.map +1 -0
  5. package/dist/browser/index.js +19 -0
  6. package/dist/browser/index.js.map +1 -0
  7. package/dist/browser/init.d.ts +75 -0
  8. package/dist/browser/init.d.ts.map +1 -0
  9. package/dist/browser/init.js +169 -0
  10. package/dist/browser/init.js.map +1 -0
  11. package/dist/browser/resilient-exporter.d.ts +43 -0
  12. package/dist/browser/resilient-exporter.d.ts.map +1 -0
  13. package/dist/browser/resilient-exporter.js +88 -0
  14. package/dist/browser/resilient-exporter.js.map +1 -0
  15. package/dist/common/contracts/tier2-traces.d.ts +75 -0
  16. package/dist/common/contracts/tier2-traces.d.ts.map +1 -0
  17. package/dist/common/contracts/tier2-traces.js +186 -0
  18. package/dist/common/contracts/tier2-traces.js.map +1 -0
  19. package/dist/common/deployment-type.d.ts +18 -0
  20. package/dist/common/deployment-type.d.ts.map +1 -0
  21. package/dist/common/deployment-type.js +30 -0
  22. package/dist/common/deployment-type.js.map +1 -0
  23. package/dist/common/guardrails.d.ts +116 -0
  24. package/dist/common/guardrails.d.ts.map +1 -0
  25. package/dist/common/guardrails.js +189 -0
  26. package/dist/common/guardrails.js.map +1 -0
  27. package/dist/common/index.d.ts +16 -0
  28. package/dist/common/index.d.ts.map +1 -0
  29. package/dist/common/index.js +32 -0
  30. package/dist/common/index.js.map +1 -0
  31. package/dist/common/log-sanitizer.d.ts +78 -0
  32. package/dist/common/log-sanitizer.d.ts.map +1 -0
  33. package/dist/common/log-sanitizer.js +340 -0
  34. package/dist/common/log-sanitizer.js.map +1 -0
  35. package/dist/common/policy-evaluator.d.ts +103 -0
  36. package/dist/common/policy-evaluator.d.ts.map +1 -0
  37. package/dist/common/policy-evaluator.js +200 -0
  38. package/dist/common/policy-evaluator.js.map +1 -0
  39. package/dist/common/resource.d.ts +62 -0
  40. package/dist/common/resource.d.ts.map +1 -0
  41. package/dist/common/resource.js +106 -0
  42. package/dist/common/resource.js.map +1 -0
  43. package/dist/common/tier-hints.d.ts +182 -0
  44. package/dist/common/tier-hints.d.ts.map +1 -0
  45. package/dist/common/tier-hints.js +209 -0
  46. package/dist/common/tier-hints.js.map +1 -0
  47. package/dist/index.d.ts +43 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +76 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/lint/forbidden-attributes.d.ts +149 -0
  52. package/dist/lint/forbidden-attributes.d.ts.map +1 -0
  53. package/dist/lint/forbidden-attributes.js +214 -0
  54. package/dist/lint/forbidden-attributes.js.map +1 -0
  55. package/dist/lint/index.d.ts +9 -0
  56. package/dist/lint/index.d.ts.map +1 -0
  57. package/dist/lint/index.js +16 -0
  58. package/dist/lint/index.js.map +1 -0
  59. package/dist/llmobs/index.d.ts +22 -0
  60. package/dist/llmobs/index.d.ts.map +1 -0
  61. package/dist/llmobs/index.js +29 -0
  62. package/dist/llmobs/index.js.map +1 -0
  63. package/dist/llmobs/tier1-exporter.d.ts +146 -0
  64. package/dist/llmobs/tier1-exporter.d.ts.map +1 -0
  65. package/dist/llmobs/tier1-exporter.js +196 -0
  66. package/dist/llmobs/tier1-exporter.js.map +1 -0
  67. package/dist/llmobs/tier2-summarizer.d.ts +268 -0
  68. package/dist/llmobs/tier2-summarizer.d.ts.map +1 -0
  69. package/dist/llmobs/tier2-summarizer.js +650 -0
  70. package/dist/llmobs/tier2-summarizer.js.map +1 -0
  71. package/dist/node/exporters/resilient-exporter.d.ts +77 -0
  72. package/dist/node/exporters/resilient-exporter.d.ts.map +1 -0
  73. package/dist/node/exporters/resilient-exporter.js +129 -0
  74. package/dist/node/exporters/resilient-exporter.js.map +1 -0
  75. package/dist/node/index.d.ts +11 -0
  76. package/dist/node/index.d.ts.map +1 -0
  77. package/dist/node/index.js +24 -0
  78. package/dist/node/index.js.map +1 -0
  79. package/dist/node/init.d.ts +75 -0
  80. package/dist/node/init.d.ts.map +1 -0
  81. package/dist/node/init.js +245 -0
  82. package/dist/node/init.js.map +1 -0
  83. package/dist/node/log-processor.d.ts +83 -0
  84. package/dist/node/log-processor.d.ts.map +1 -0
  85. package/dist/node/log-processor.js +266 -0
  86. package/dist/node/log-processor.js.map +1 -0
  87. package/dist/node/metrics-client.d.ts +66 -0
  88. package/dist/node/metrics-client.d.ts.map +1 -0
  89. package/dist/node/metrics-client.js +193 -0
  90. package/dist/node/metrics-client.js.map +1 -0
  91. package/dist/node/traced-socket.d.ts +76 -0
  92. package/dist/node/traced-socket.d.ts.map +1 -0
  93. package/dist/node/traced-socket.js +261 -0
  94. package/dist/node/traced-socket.js.map +1 -0
  95. package/dist/testing/in-memory-exporter.d.ts +179 -0
  96. package/dist/testing/in-memory-exporter.d.ts.map +1 -0
  97. package/dist/testing/in-memory-exporter.js +254 -0
  98. package/dist/testing/in-memory-exporter.js.map +1 -0
  99. package/dist/testing/index.d.ts +8 -0
  100. package/dist/testing/index.d.ts.map +1 -0
  101. package/dist/testing/index.js +19 -0
  102. package/dist/testing/index.js.map +1 -0
  103. package/dist/testing/test-init.d.ts +80 -0
  104. package/dist/testing/test-init.d.ts.map +1 -0
  105. package/dist/testing/test-init.js +144 -0
  106. package/dist/testing/test-init.js.map +1 -0
  107. package/dist/types/index.d.ts +40 -0
  108. package/dist/types/index.d.ts.map +1 -0
  109. package/dist/types/index.js +23 -0
  110. package/dist/types/index.js.map +1 -0
  111. package/dist/types/policy.d.ts +92 -0
  112. package/dist/types/policy.d.ts.map +1 -0
  113. package/dist/types/policy.js +125 -0
  114. package/dist/types/policy.js.map +1 -0
  115. package/dist-esm/browser/index.d.ts +8 -0
  116. package/dist-esm/browser/index.d.ts.map +1 -0
  117. package/dist-esm/browser/index.js +9 -0
  118. package/dist-esm/browser/index.js.map +1 -0
  119. package/dist-esm/browser/init.d.ts +75 -0
  120. package/dist-esm/browser/init.d.ts.map +1 -0
  121. package/dist-esm/browser/init.js +162 -0
  122. package/dist-esm/browser/init.js.map +1 -0
  123. package/dist-esm/browser/resilient-exporter.d.ts +43 -0
  124. package/dist-esm/browser/resilient-exporter.d.ts.map +1 -0
  125. package/dist-esm/browser/resilient-exporter.js +84 -0
  126. package/dist-esm/browser/resilient-exporter.js.map +1 -0
  127. package/dist-esm/common/contracts/tier2-traces.d.ts +75 -0
  128. package/dist-esm/common/contracts/tier2-traces.d.ts.map +1 -0
  129. package/dist-esm/common/contracts/tier2-traces.js +178 -0
  130. package/dist-esm/common/contracts/tier2-traces.js.map +1 -0
  131. package/dist-esm/common/deployment-type.d.ts +18 -0
  132. package/dist-esm/common/deployment-type.d.ts.map +1 -0
  133. package/dist-esm/common/deployment-type.js +27 -0
  134. package/dist-esm/common/deployment-type.js.map +1 -0
  135. package/dist-esm/common/guardrails.d.ts +116 -0
  136. package/dist-esm/common/guardrails.d.ts.map +1 -0
  137. package/dist-esm/common/guardrails.js +179 -0
  138. package/dist-esm/common/guardrails.js.map +1 -0
  139. package/dist-esm/common/index.d.ts +16 -0
  140. package/dist-esm/common/index.d.ts.map +1 -0
  141. package/dist-esm/common/index.js +16 -0
  142. package/dist-esm/common/index.js.map +1 -0
  143. package/dist-esm/common/log-sanitizer.d.ts +78 -0
  144. package/dist-esm/common/log-sanitizer.d.ts.map +1 -0
  145. package/dist-esm/common/log-sanitizer.js +331 -0
  146. package/dist-esm/common/log-sanitizer.js.map +1 -0
  147. package/dist-esm/common/policy-evaluator.d.ts +103 -0
  148. package/dist-esm/common/policy-evaluator.d.ts.map +1 -0
  149. package/dist-esm/common/policy-evaluator.js +196 -0
  150. package/dist-esm/common/policy-evaluator.js.map +1 -0
  151. package/dist-esm/common/resource.d.ts +62 -0
  152. package/dist-esm/common/resource.d.ts.map +1 -0
  153. package/dist-esm/common/resource.js +100 -0
  154. package/dist-esm/common/resource.js.map +1 -0
  155. package/dist-esm/common/tier-hints.d.ts +182 -0
  156. package/dist-esm/common/tier-hints.d.ts.map +1 -0
  157. package/dist-esm/common/tier-hints.js +199 -0
  158. package/dist-esm/common/tier-hints.js.map +1 -0
  159. package/dist-esm/index.d.ts +43 -0
  160. package/dist-esm/index.d.ts.map +1 -0
  161. package/dist-esm/index.js +53 -0
  162. package/dist-esm/index.js.map +1 -0
  163. package/dist-esm/lint/forbidden-attributes.d.ts +149 -0
  164. package/dist-esm/lint/forbidden-attributes.d.ts.map +1 -0
  165. package/dist-esm/lint/forbidden-attributes.js +209 -0
  166. package/dist-esm/lint/forbidden-attributes.js.map +1 -0
  167. package/dist-esm/lint/index.d.ts +9 -0
  168. package/dist-esm/lint/index.d.ts.map +1 -0
  169. package/dist-esm/lint/index.js +9 -0
  170. package/dist-esm/lint/index.js.map +1 -0
  171. package/dist-esm/llmobs/index.d.ts +22 -0
  172. package/dist-esm/llmobs/index.d.ts.map +1 -0
  173. package/dist-esm/llmobs/index.js +22 -0
  174. package/dist-esm/llmobs/index.js.map +1 -0
  175. package/dist-esm/llmobs/tier1-exporter.d.ts +146 -0
  176. package/dist-esm/llmobs/tier1-exporter.d.ts.map +1 -0
  177. package/dist-esm/llmobs/tier1-exporter.js +190 -0
  178. package/dist-esm/llmobs/tier1-exporter.js.map +1 -0
  179. package/dist-esm/llmobs/tier2-summarizer.d.ts +268 -0
  180. package/dist-esm/llmobs/tier2-summarizer.d.ts.map +1 -0
  181. package/dist-esm/llmobs/tier2-summarizer.js +646 -0
  182. package/dist-esm/llmobs/tier2-summarizer.js.map +1 -0
  183. package/dist-esm/node/exporters/resilient-exporter.d.ts +77 -0
  184. package/dist-esm/node/exporters/resilient-exporter.d.ts.map +1 -0
  185. package/dist-esm/node/exporters/resilient-exporter.js +125 -0
  186. package/dist-esm/node/exporters/resilient-exporter.js.map +1 -0
  187. package/dist-esm/node/index.d.ts +11 -0
  188. package/dist-esm/node/index.d.ts.map +1 -0
  189. package/dist-esm/node/index.js +11 -0
  190. package/dist-esm/node/index.js.map +1 -0
  191. package/dist-esm/node/init.d.ts +75 -0
  192. package/dist-esm/node/init.d.ts.map +1 -0
  193. package/dist-esm/node/init.js +239 -0
  194. package/dist-esm/node/init.js.map +1 -0
  195. package/dist-esm/node/log-processor.d.ts +83 -0
  196. package/dist-esm/node/log-processor.d.ts.map +1 -0
  197. package/dist-esm/node/log-processor.js +261 -0
  198. package/dist-esm/node/log-processor.js.map +1 -0
  199. package/dist-esm/node/metrics-client.d.ts +66 -0
  200. package/dist-esm/node/metrics-client.d.ts.map +1 -0
  201. package/dist-esm/node/metrics-client.js +189 -0
  202. package/dist-esm/node/metrics-client.js.map +1 -0
  203. package/dist-esm/node/traced-socket.d.ts +76 -0
  204. package/dist-esm/node/traced-socket.d.ts.map +1 -0
  205. package/dist-esm/node/traced-socket.js +257 -0
  206. package/dist-esm/node/traced-socket.js.map +1 -0
  207. package/dist-esm/testing/in-memory-exporter.d.ts +179 -0
  208. package/dist-esm/testing/in-memory-exporter.d.ts.map +1 -0
  209. package/dist-esm/testing/in-memory-exporter.js +248 -0
  210. package/dist-esm/testing/in-memory-exporter.js.map +1 -0
  211. package/dist-esm/testing/index.d.ts +8 -0
  212. package/dist-esm/testing/index.d.ts.map +1 -0
  213. package/dist-esm/testing/index.js +8 -0
  214. package/dist-esm/testing/index.js.map +1 -0
  215. package/dist-esm/testing/test-init.d.ts +80 -0
  216. package/dist-esm/testing/test-init.d.ts.map +1 -0
  217. package/dist-esm/testing/test-init.js +137 -0
  218. package/dist-esm/testing/test-init.js.map +1 -0
  219. package/dist-esm/types/index.d.ts +40 -0
  220. package/dist-esm/types/index.d.ts.map +1 -0
  221. package/dist-esm/types/index.js +7 -0
  222. package/dist-esm/types/index.js.map +1 -0
  223. package/dist-esm/types/policy.d.ts +92 -0
  224. package/dist-esm/types/policy.d.ts.map +1 -0
  225. package/dist-esm/types/policy.js +122 -0
  226. package/dist-esm/types/policy.js.map +1 -0
  227. package/package.json +101 -0
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Tier 2 LLMObs Summarizer
3
+ *
4
+ * Extracts operational metrics from LLMObs spans for Tier 2 export.
5
+ * CRITICAL: This emits metrics WITHOUT any sensitive content.
6
+ *
7
+ * Tier 2 metrics include:
8
+ * - LLM latency by provider/model
9
+ * - Token usage (input, output, cached, reasoning)
10
+ * - Success/failure rates by error category
11
+ * - Cost aggregates
12
+ *
13
+ * EXPLICITLY EXCLUDED:
14
+ * - Prompts, code, tool IO
15
+ * - File paths, stack traces
16
+ * - User identifiers
17
+ */
18
+ import type { ReadableSpan } from "@opentelemetry/sdk-trace-base";
19
+ /**
20
+ * Error categories aligned with tier2-metrics.v0.1.0.json contract.
21
+ */
22
+ export type LLMErrorCategory = "none" | "rate_limit" | "context_length" | "content_filter" | "quota" | "network" | "timeout" | "auth_error" | "api_error" | "validation_error" | "aborted" | "unknown";
23
+ /**
24
+ * Finish reason aligned with tier2-metrics.v0.2.0.json contract.
25
+ */
26
+ export type LLMFinishReason = "stop" | "length" | "content_filter" | "tool_calls" | "error";
27
+ /**
28
+ * Operation name aligned with OTEL gen_ai.operation.name semantic convention.
29
+ * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-metrics/
30
+ */
31
+ export type GenAIOperationName = "chat" | "text_completion" | "embeddings" | "execute_tool" | "invoke_agent" | "generate_content";
32
+ /**
33
+ * Tool error categories aligned with tier2-metrics.v0.2.0.json contract.
34
+ */
35
+ export type ToolErrorCategory = "none" | "timeout" | "execution_error" | "validation_error" | "permission_denied" | "not_found" | "unknown";
36
+ /**
37
+ * Provider names aligned with tier2-metrics.v0.1.0.json contract.
38
+ */
39
+ export type LLMProvider = "openai" | "anthropic" | "azure" | "bedrock" | "google" | "cohere" | "mistral";
40
+ /**
41
+ * Metric labels for LLM requests.
42
+ * These are the ONLY labels allowed per tier2-metrics.v0.1.0.json.
43
+ */
44
+ export interface LLMRequestMetricLabels {
45
+ provider: LLMProvider;
46
+ model: string;
47
+ status: "success" | "error";
48
+ error_category?: LLMErrorCategory;
49
+ finish_reason?: LLMFinishReason;
50
+ }
51
+ /**
52
+ * Token metric labels.
53
+ */
54
+ export interface TokenMetricLabels {
55
+ provider: LLMProvider;
56
+ model: string;
57
+ token_type: "input" | "output" | "reasoning" | "cached";
58
+ }
59
+ /**
60
+ * Tool call metric labels.
61
+ */
62
+ export interface ToolCallMetricLabels {
63
+ tool_name: string;
64
+ status: "success" | "error";
65
+ }
66
+ /**
67
+ * Summary of an LLM span extracted for Tier 2 metrics.
68
+ * Contains NO sensitive data.
69
+ */
70
+ export interface LLMSpanSummary {
71
+ provider: LLMProvider;
72
+ /** OTEL canonical provider name (e.g., aws.bedrock, azure.ai.openai) */
73
+ providerOtel: string;
74
+ model: string;
75
+ /** Response model if different from request model */
76
+ responseModel?: string;
77
+ status: "success" | "error";
78
+ durationMs: number;
79
+ inputTokens: number;
80
+ outputTokens: number;
81
+ totalTokens: number;
82
+ reasoningTokens: number;
83
+ cachedTokens: number;
84
+ errorCategory: LLMErrorCategory;
85
+ finishReason?: LLMFinishReason;
86
+ estimatedCost: number;
87
+ /** OTEL operation name (chat, text_completion, etc.) */
88
+ operationName: GenAIOperationName;
89
+ /** Time to first token in milliseconds (streaming only) */
90
+ timeToFirstTokenMs?: number;
91
+ }
92
+ /**
93
+ * Tool span summary for metrics.
94
+ */
95
+ export interface ToolSpanSummary {
96
+ toolName: string;
97
+ status: "success" | "error";
98
+ durationMs: number;
99
+ /** Error category for tool failures (added in v0.2.0) */
100
+ errorCategory: ToolErrorCategory;
101
+ }
102
+ /**
103
+ * Metrics client interface for emitting Tier 2 metrics.
104
+ * Matches OTEL Metrics API patterns.
105
+ */
106
+ export interface Tier2MetricsClient {
107
+ recordHistogram(name: string, value: number, labels: Record<string, string>): void;
108
+ incrementCounter(name: string, value: number, labels: Record<string, string>): void;
109
+ }
110
+ /**
111
+ * LLMObs Tier 2 Summarizer.
112
+ *
113
+ * Processes Tier 1 LLMObs spans and emits Tier 2 metrics.
114
+ * CRITICAL: Ensures NO prompts, code, tool IO appear in metrics.
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * const summarizer = new LLMObsTier2Summarizer(metricsClient);
119
+ *
120
+ * // Process each LLMObs span
121
+ * for (const span of llmobsSpans) {
122
+ * summarizer.summarize(span);
123
+ * }
124
+ * ```
125
+ */
126
+ export declare class LLMObsTier2Summarizer {
127
+ private readonly metricsClient;
128
+ private readonly pricing;
129
+ /**
130
+ * Create a Tier 2 summarizer.
131
+ *
132
+ * @param metricsClient - Client for emitting metrics
133
+ * @param customPricing - Optional custom pricing per model
134
+ */
135
+ constructor(metricsClient: Tier2MetricsClient, customPricing?: Map<string, {
136
+ input: number;
137
+ output: number;
138
+ }>);
139
+ /**
140
+ * Process a Tier 1 LLMObs span and emit Tier 2 metrics.
141
+ *
142
+ * @param span - The span to summarize
143
+ */
144
+ summarize(span: ReadableSpan): void;
145
+ /**
146
+ * Extract a summary from an LLM span (for testing/debugging).
147
+ * Contains NO sensitive data.
148
+ *
149
+ * @param span - The span to extract from
150
+ * @returns Summary with safe metrics only
151
+ */
152
+ extractLLMSummary(span: ReadableSpan): LLMSpanSummary;
153
+ /**
154
+ * Extract a summary from a tool span.
155
+ *
156
+ * @param span - The span to extract from
157
+ * @returns Tool summary with safe metrics only
158
+ */
159
+ extractToolSummary(span: ReadableSpan): ToolSpanSummary;
160
+ /**
161
+ * Emit LLM span metrics.
162
+ * Emits BOTH legacy (llm_*) and OTEL-aligned (gen_ai.*) metrics for migration.
163
+ */
164
+ private summarizeLLMSpan;
165
+ /**
166
+ * Emit tool span metrics.
167
+ * Uses OTEL-aligned naming with gen_ai.operation.name = "execute_tool".
168
+ */
169
+ private summarizeToolSpan;
170
+ /**
171
+ * Check if span is an LLM span by name pattern.
172
+ */
173
+ private isLLMSpan;
174
+ /**
175
+ * Check if span is a tool span by name pattern.
176
+ */
177
+ private isToolSpan;
178
+ /**
179
+ * Extract span status.
180
+ */
181
+ private extractStatus;
182
+ /**
183
+ * Categorize error from span attributes.
184
+ * CRITICAL: Does NOT expose error messages or stack traces.
185
+ */
186
+ private categorizeError;
187
+ /**
188
+ * Extract finish reason.
189
+ * Handles gen_ai.response.finish_reasons as array per OTEL semantic conventions.
190
+ */
191
+ private extractFinishReason;
192
+ /**
193
+ * Normalize provider name to allowed values.
194
+ * Defensive: handles non-string inputs gracefully.
195
+ */
196
+ private normalizeProvider;
197
+ /**
198
+ * Normalize provider to OTEL canonical names.
199
+ * Maps legacy names to OTEL gen_ai.provider.name values.
200
+ * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-metrics/
201
+ */
202
+ private normalizeProviderOtel;
203
+ /**
204
+ * Extract operation name from span attributes.
205
+ * Maps span kind and attributes to OTEL gen_ai.operation.name values.
206
+ */
207
+ private extractOperationName;
208
+ /**
209
+ * Extract time to first token from span attributes.
210
+ * Checks multiple attribute names for compatibility.
211
+ * Returns value in MILLISECONDS for consistent internal handling.
212
+ *
213
+ * IMPORTANT: Different attributes use different units:
214
+ * - gen_ai.client.time_to_first_token: SECONDS (OTEL spec)
215
+ * - llm.time_to_first_token_ms: MILLISECONDS
216
+ * - llmobs.metrics.time_to_first_token_ms: MILLISECONDS
217
+ * - timeToFirstTokenMs: MILLISECONDS
218
+ */
219
+ private extractTimeToFirstToken;
220
+ /**
221
+ * Categorize tool errors.
222
+ * CRITICAL: Does NOT expose error messages or stack traces.
223
+ */
224
+ private categorizeToolError;
225
+ /**
226
+ * Validate operation name is in the allowed enum.
227
+ */
228
+ private isValidOperationName;
229
+ /**
230
+ * Validate tool error category is in the allowed enum.
231
+ */
232
+ private isValidToolErrorCategory;
233
+ /**
234
+ * Normalize model name with strict sanitization.
235
+ * SECURITY: Only allows alphanumeric, dots, hyphens to prevent data injection.
236
+ * Attacker-controlled model names could otherwise leak sensitive data to Tier 2.
237
+ */
238
+ private normalizeModel;
239
+ /**
240
+ * Normalize tool name with strict sanitization.
241
+ * SECURITY: Only allows alphanumeric, underscores, hyphens to prevent data injection.
242
+ * Attacker-controlled tool names could otherwise leak sensitive data to Tier 2.
243
+ */
244
+ private normalizeToolName;
245
+ /**
246
+ * Get span duration in milliseconds, clamped to non-negative.
247
+ * Handles clock skew or corrupted data gracefully.
248
+ */
249
+ private getDurationMs;
250
+ /**
251
+ * Validate error category is in the allowed enum.
252
+ */
253
+ private isValidErrorCategory;
254
+ /**
255
+ * Validate finish reason is in the allowed enum.
256
+ */
257
+ private isValidFinishReason;
258
+ /**
259
+ * Estimate cost based on model and token counts.
260
+ * Uses rough estimates - actual costs should be calculated server-side.
261
+ */
262
+ private estimateCost;
263
+ /**
264
+ * Get default pricing per 1000 tokens (in USD).
265
+ */
266
+ private getDefaultPricing;
267
+ }
268
+ //# sourceMappingURL=tier2-summarizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tier2-summarizer.d.ts","sourceRoot":"","sources":["../../src/llmobs/tier2-summarizer.ts"],"names":[],"mappings":"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"}