langwatch 0.3.2 → 0.4.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.
Files changed (202) hide show
  1. package/dist/{add-LBBS4I3H.js → add-35QACTIV.js} +34 -28
  2. package/dist/add-35QACTIV.js.map +1 -0
  3. package/dist/{add-RD3ZKFAT.mjs → add-TRJAXM4D.mjs} +22 -16
  4. package/dist/add-TRJAXM4D.mjs.map +1 -0
  5. package/dist/chunk-4ZSSHX6F.js +636 -0
  6. package/dist/chunk-4ZSSHX6F.js.map +1 -0
  7. package/dist/chunk-5EVBOHJY.js +155 -0
  8. package/dist/chunk-5EVBOHJY.js.map +1 -0
  9. package/dist/{chunk-YN4436PK.mjs → chunk-CU3443HD.mjs} +14 -9
  10. package/dist/{chunk-2JU376G7.js → chunk-D2CSG4SJ.js} +4 -4
  11. package/dist/chunk-D2CSG4SJ.js.map +1 -0
  12. package/dist/chunk-DISMHYXC.js +184 -0
  13. package/dist/chunk-DISMHYXC.js.map +1 -0
  14. package/dist/{chunk-E7UE2MPD.mjs → chunk-ECUXLXFT.mjs} +2 -2
  15. package/dist/chunk-EJWJXTPU.mjs +626 -0
  16. package/dist/chunk-EJWJXTPU.mjs.map +1 -0
  17. package/dist/chunk-GQMDZ4GY.mjs +155 -0
  18. package/dist/chunk-GQMDZ4GY.mjs.map +1 -0
  19. package/dist/{chunk-3GKPQB4R.mjs → chunk-HUI45ULC.mjs} +4 -4
  20. package/dist/chunk-HUI45ULC.mjs.map +1 -0
  21. package/dist/{chunk-HJU67C7H.js → chunk-K64Y6YUG.js} +10 -10
  22. package/dist/{chunk-HJU67C7H.js.map → chunk-K64Y6YUG.js.map} +1 -1
  23. package/dist/chunk-LP76VXI3.mjs +636 -0
  24. package/dist/chunk-LP76VXI3.mjs.map +1 -0
  25. package/dist/chunk-M4VUHTT2.js +626 -0
  26. package/dist/chunk-M4VUHTT2.js.map +1 -0
  27. package/dist/{chunk-PR3JDWC3.mjs → chunk-N2V6J3U2.mjs} +28 -3
  28. package/dist/chunk-N2V6J3U2.mjs.map +1 -0
  29. package/dist/chunk-OUCVXP4G.js +258 -0
  30. package/dist/chunk-OUCVXP4G.js.map +1 -0
  31. package/dist/{chunk-FJLK5CFL.js → chunk-OXBO24RB.js} +13 -8
  32. package/dist/chunk-OXBO24RB.js.map +1 -0
  33. package/dist/chunk-PGWR3OQY.mjs +258 -0
  34. package/dist/chunk-PGWR3OQY.mjs.map +1 -0
  35. package/dist/{chunk-SMXXAVMB.js → chunk-SGNJDRCT.js} +2 -2
  36. package/dist/chunk-SGNJDRCT.js.map +1 -0
  37. package/dist/{chunk-W5ZEP3CI.mjs → chunk-SYMZPWZE.mjs} +2 -2
  38. package/dist/chunk-SYMZPWZE.mjs.map +1 -0
  39. package/dist/{chunk-KGDAENGD.js → chunk-YH5TIVK2.js} +28 -3
  40. package/dist/chunk-YH5TIVK2.js.map +1 -0
  41. package/dist/chunk-YNQ44U6D.mjs +184 -0
  42. package/dist/chunk-YNQ44U6D.mjs.map +1 -0
  43. package/dist/cli/index.js +8 -8
  44. package/dist/cli/index.mjs +8 -8
  45. package/dist/{create-G5MTGOOH.js → create-7K2CC4KQ.js} +11 -11
  46. package/dist/{create-G5MTGOOH.js.map → create-7K2CC4KQ.js.map} +1 -1
  47. package/dist/{create-QUZYBMQB.mjs → create-MK7NEGCM.mjs} +8 -8
  48. package/dist/implementation-C4lvooSg.d.mts +576 -0
  49. package/dist/implementation-CzemP9jY.d.ts +576 -0
  50. package/dist/index-DTEZr0Jn.d.mts +34 -0
  51. package/dist/index-DTEZr0Jn.d.ts +34 -0
  52. package/dist/index.d.mts +121 -47
  53. package/dist/index.d.ts +121 -47
  54. package/dist/index.js +16 -12
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.mjs +27 -23
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/init-GDKJICSS.js +16 -0
  59. package/dist/{init-XU2JFY6N.js.map → init-GDKJICSS.js.map} +1 -1
  60. package/dist/{init-H67RW22E.mjs → init-RINSTP4L.mjs} +5 -5
  61. package/dist/{list-7NPSX2E4.mjs → list-7L23G5DY.mjs} +28 -16
  62. package/dist/list-7L23G5DY.mjs.map +1 -0
  63. package/dist/{list-ZXFLAF52.js → list-OLLQ7XKZ.js} +29 -17
  64. package/dist/list-OLLQ7XKZ.js.map +1 -0
  65. package/dist/{login-EK4WVOI2.mjs → login-RCNKL5AM.mjs} +6 -5
  66. package/dist/login-RCNKL5AM.mjs.map +1 -0
  67. package/dist/{login-76NQIHKR.js → login-XF3BQQPV.js} +7 -6
  68. package/dist/login-XF3BQQPV.js.map +1 -0
  69. package/dist/observability-sdk/index.d.mts +134 -0
  70. package/dist/observability-sdk/index.d.ts +134 -0
  71. package/dist/observability-sdk/index.js +41 -0
  72. package/dist/observability-sdk/index.js.map +1 -0
  73. package/dist/observability-sdk/index.mjs +41 -0
  74. package/dist/observability-sdk/instrumentation/langchain/index.d.mts +69 -0
  75. package/dist/observability-sdk/instrumentation/langchain/index.d.ts +69 -0
  76. package/dist/observability-sdk/instrumentation/langchain/index.js +518 -0
  77. package/dist/observability-sdk/instrumentation/langchain/index.js.map +1 -0
  78. package/dist/observability-sdk/instrumentation/langchain/index.mjs +518 -0
  79. package/dist/observability-sdk/instrumentation/langchain/index.mjs.map +1 -0
  80. package/dist/observability-sdk/setup/node/index.d.mts +368 -0
  81. package/dist/observability-sdk/setup/node/index.d.ts +368 -0
  82. package/dist/observability-sdk/setup/node/index.js +276 -0
  83. package/dist/observability-sdk/setup/node/index.js.map +1 -0
  84. package/dist/observability-sdk/setup/node/index.mjs +276 -0
  85. package/dist/observability-sdk/setup/node/index.mjs.map +1 -0
  86. package/dist/{remove-SDJYEPAY.mjs → remove-3VLQNVHN.mjs} +11 -8
  87. package/dist/remove-3VLQNVHN.mjs.map +1 -0
  88. package/dist/{remove-XBNGIVMR.js → remove-L6JVJBWY.js} +18 -15
  89. package/dist/remove-L6JVJBWY.js.map +1 -0
  90. package/dist/{sync-ST2IWXSB.mjs → sync-DPMTUTVL.mjs} +39 -33
  91. package/dist/sync-DPMTUTVL.mjs.map +1 -0
  92. package/dist/{sync-EISKGPTL.js → sync-PSU3F5Z4.js} +52 -46
  93. package/dist/sync-PSU3F5Z4.js.map +1 -0
  94. package/dist/{prompt-D-jpMrLS.d.mts → types-1q5wIYP5.d.mts} +628 -14
  95. package/dist/{prompt-D-jpMrLS.d.ts → types-C9k5gGhU.d.ts} +628 -14
  96. package/dist/types-DRiQaKFG.d.mts +254 -0
  97. package/dist/types-DRiQaKFG.d.ts +254 -0
  98. package/dist/types-Dmazk5Bk.d.mts +44 -0
  99. package/dist/types-Dmazk5Bk.d.ts +44 -0
  100. package/package.json +39 -39
  101. package/dist/add-LBBS4I3H.js.map +0 -1
  102. package/dist/add-RD3ZKFAT.mjs.map +0 -1
  103. package/dist/chunk-2JU376G7.js.map +0 -1
  104. package/dist/chunk-2ODBGSBI.js +0 -4
  105. package/dist/chunk-2ODBGSBI.js.map +0 -1
  106. package/dist/chunk-3GKPQB4R.mjs.map +0 -1
  107. package/dist/chunk-52GXX3MA.js +0 -426
  108. package/dist/chunk-52GXX3MA.js.map +0 -1
  109. package/dist/chunk-5NC5ILKA.js +0 -94
  110. package/dist/chunk-5NC5ILKA.js.map +0 -1
  111. package/dist/chunk-AAROJADR.mjs +0 -49
  112. package/dist/chunk-AAROJADR.mjs.map +0 -1
  113. package/dist/chunk-DTEKFQ4U.js +0 -159
  114. package/dist/chunk-DTEKFQ4U.js.map +0 -1
  115. package/dist/chunk-F63YKTXA.mjs +0 -47
  116. package/dist/chunk-F63YKTXA.mjs.map +0 -1
  117. package/dist/chunk-FJLK5CFL.js.map +0 -1
  118. package/dist/chunk-GJSEBQXF.mjs +0 -392
  119. package/dist/chunk-GJSEBQXF.mjs.map +0 -1
  120. package/dist/chunk-IGHXIIIK.js +0 -49
  121. package/dist/chunk-IGHXIIIK.js.map +0 -1
  122. package/dist/chunk-J7ICRUU4.mjs +0 -426
  123. package/dist/chunk-J7ICRUU4.mjs.map +0 -1
  124. package/dist/chunk-KGDAENGD.js.map +0 -1
  125. package/dist/chunk-LD74LVRU.js +0 -47
  126. package/dist/chunk-LD74LVRU.js.map +0 -1
  127. package/dist/chunk-PCQVQ7SB.js +0 -45
  128. package/dist/chunk-PCQVQ7SB.js.map +0 -1
  129. package/dist/chunk-PR3JDWC3.mjs.map +0 -1
  130. package/dist/chunk-PWZBLTHR.js +0 -118
  131. package/dist/chunk-PWZBLTHR.js.map +0 -1
  132. package/dist/chunk-QEWDG5QE.mjs +0 -45
  133. package/dist/chunk-QEWDG5QE.mjs.map +0 -1
  134. package/dist/chunk-SMXXAVMB.js.map +0 -1
  135. package/dist/chunk-STV4ZVNA.mjs +0 -118
  136. package/dist/chunk-STV4ZVNA.mjs.map +0 -1
  137. package/dist/chunk-T5AZMMVS.mjs +0 -94
  138. package/dist/chunk-T5AZMMVS.mjs.map +0 -1
  139. package/dist/chunk-UU33HCCZ.mjs +0 -159
  140. package/dist/chunk-UU33HCCZ.mjs.map +0 -1
  141. package/dist/chunk-VGHLQXKB.js +0 -392
  142. package/dist/chunk-VGHLQXKB.js.map +0 -1
  143. package/dist/chunk-W5ZEP3CI.mjs.map +0 -1
  144. package/dist/chunk-Y666BJA5.mjs +0 -4
  145. package/dist/chunk-YN4436PK.mjs.map +0 -1
  146. package/dist/client-B2HqIKg6.d.ts +0 -51
  147. package/dist/client-XyCqclCi.d.mts +0 -51
  148. package/dist/client-browser.d.mts +0 -8
  149. package/dist/client-browser.d.ts +0 -8
  150. package/dist/client-browser.js +0 -88
  151. package/dist/client-browser.js.map +0 -1
  152. package/dist/client-browser.mjs +0 -88
  153. package/dist/client-browser.mjs.map +0 -1
  154. package/dist/client-node.d.mts +0 -8
  155. package/dist/client-node.d.ts +0 -8
  156. package/dist/client-node.js +0 -95
  157. package/dist/client-node.js.map +0 -1
  158. package/dist/client-node.mjs +0 -95
  159. package/dist/client-node.mjs.map +0 -1
  160. package/dist/evaluation/index.d.mts +0 -897
  161. package/dist/evaluation/index.d.ts +0 -897
  162. package/dist/evaluation/index.js +0 -14
  163. package/dist/evaluation/index.js.map +0 -1
  164. package/dist/evaluation/index.mjs +0 -14
  165. package/dist/filterable-batch-span-processor-zO5kcjBY.d.mts +0 -64
  166. package/dist/filterable-batch-span-processor-zO5kcjBY.d.ts +0 -64
  167. package/dist/init-XU2JFY6N.js +0 -16
  168. package/dist/list-7NPSX2E4.mjs.map +0 -1
  169. package/dist/list-ZXFLAF52.js.map +0 -1
  170. package/dist/login-76NQIHKR.js.map +0 -1
  171. package/dist/login-EK4WVOI2.mjs.map +0 -1
  172. package/dist/observability/index.d.mts +0 -260
  173. package/dist/observability/index.d.ts +0 -260
  174. package/dist/observability/index.js +0 -21
  175. package/dist/observability/index.js.map +0 -1
  176. package/dist/observability/index.mjs +0 -21
  177. package/dist/observability/index.mjs.map +0 -1
  178. package/dist/observability/instrumentation/langchain/index.d.mts +0 -40
  179. package/dist/observability/instrumentation/langchain/index.d.ts +0 -40
  180. package/dist/observability/instrumentation/langchain/index.js +0 -668
  181. package/dist/observability/instrumentation/langchain/index.js.map +0 -1
  182. package/dist/observability/instrumentation/langchain/index.mjs +0 -668
  183. package/dist/observability/instrumentation/langchain/index.mjs.map +0 -1
  184. package/dist/prompt/index.d.mts +0 -10
  185. package/dist/prompt/index.d.ts +0 -10
  186. package/dist/prompt/index.js +0 -22
  187. package/dist/prompt/index.js.map +0 -1
  188. package/dist/prompt/index.mjs +0 -22
  189. package/dist/prompt/index.mjs.map +0 -1
  190. package/dist/record-evaluation-CmxMXa-3.d.mts +0 -25
  191. package/dist/record-evaluation-CmxMXa-3.d.ts +0 -25
  192. package/dist/remove-SDJYEPAY.mjs.map +0 -1
  193. package/dist/remove-XBNGIVMR.js.map +0 -1
  194. package/dist/sync-EISKGPTL.js.map +0 -1
  195. package/dist/sync-ST2IWXSB.mjs.map +0 -1
  196. package/dist/trace-CqaKo0kZ.d.ts +0 -622
  197. package/dist/trace-DtVc5GhF.d.mts +0 -622
  198. /package/dist/{chunk-Y666BJA5.mjs.map → chunk-CU3443HD.mjs.map} +0 -0
  199. /package/dist/{chunk-E7UE2MPD.mjs.map → chunk-ECUXLXFT.mjs.map} +0 -0
  200. /package/dist/{create-QUZYBMQB.mjs.map → create-MK7NEGCM.mjs.map} +0 -0
  201. /package/dist/{init-H67RW22E.mjs.map → init-RINSTP4L.mjs.map} +0 -0
  202. /package/dist/{evaluation → observability-sdk}/index.mjs.map +0 -0
@@ -0,0 +1,626 @@
1
+ import {
2
+ ATTR_LANGWATCH_INPUT,
3
+ ATTR_LANGWATCH_METRICS,
4
+ ATTR_LANGWATCH_OUTPUT,
5
+ ATTR_LANGWATCH_PROMPT_ID,
6
+ ATTR_LANGWATCH_PROMPT_SELECTED_ID,
7
+ ATTR_LANGWATCH_PROMPT_VERSION_ID,
8
+ ATTR_LANGWATCH_PROMPT_VERSION_NUMBER,
9
+ ATTR_LANGWATCH_RAG_CONTEXTS,
10
+ ATTR_LANGWATCH_SPAN_TYPE
11
+ } from "./chunk-YNQ44U6D.mjs";
12
+
13
+ // src/observability-sdk/span/types.ts
14
+ var INPUT_OUTPUT_TYPES = [
15
+ "text",
16
+ "raw",
17
+ "chat_messages",
18
+ "list",
19
+ "json",
20
+ "guardrail_result",
21
+ "evaluation_result"
22
+ ];
23
+ var spanTypes = [
24
+ "span",
25
+ "llm",
26
+ "chain",
27
+ "tool",
28
+ "agent",
29
+ "guardrail",
30
+ "evaluation",
31
+ "rag",
32
+ "prompt",
33
+ "workflow",
34
+ "component",
35
+ "module",
36
+ "server",
37
+ "client",
38
+ "producer",
39
+ "consumer",
40
+ "task",
41
+ "unknown"
42
+ ];
43
+
44
+ // src/internal/generated/types/tracer.generated.ts
45
+ import { z } from "zod";
46
+ var chatRoleSchema = z.union([
47
+ z.literal("system"),
48
+ z.literal("user"),
49
+ z.literal("assistant"),
50
+ z.literal("function"),
51
+ z.literal("tool"),
52
+ z.literal("unknown")
53
+ ]);
54
+ var functionCallSchema = z.object({
55
+ name: z.string().optional(),
56
+ arguments: z.string().optional()
57
+ });
58
+ var toolCallSchema = z.object({
59
+ id: z.string(),
60
+ type: z.string(),
61
+ function: functionCallSchema
62
+ });
63
+ var rAGChunkSchema = z.object({
64
+ document_id: z.string().optional().nullable(),
65
+ chunk_id: z.string().optional().nullable(),
66
+ content: z.union([z.string(), z.record(z.string(), z.any()), z.array(z.any())])
67
+ });
68
+ var chatRichContentSchema = z.union([
69
+ z.object({
70
+ type: z.literal("text"),
71
+ text: z.string().optional()
72
+ }),
73
+ z.object({
74
+ text: z.string()
75
+ }),
76
+ z.object({
77
+ type: z.literal("image_url"),
78
+ image_url: z.object({
79
+ url: z.string(),
80
+ detail: z.union([z.literal("auto"), z.literal("low"), z.literal("high")]).optional()
81
+ }).optional()
82
+ }),
83
+ z.object({
84
+ type: z.literal("tool_call"),
85
+ toolName: z.string().optional(),
86
+ toolCallId: z.string().optional(),
87
+ args: z.string().optional()
88
+ }),
89
+ z.object({
90
+ type: z.literal("tool_result"),
91
+ toolName: z.string().optional(),
92
+ toolCallId: z.string().optional(),
93
+ result: z.any().optional()
94
+ })
95
+ ]);
96
+ var chatMessageSchema = z.object({
97
+ role: chatRoleSchema.optional(),
98
+ content: z.union([z.string(), z.array(chatRichContentSchema)]).optional().nullable(),
99
+ function_call: functionCallSchema.optional().nullable(),
100
+ tool_calls: z.array(toolCallSchema).optional().nullable(),
101
+ tool_call_id: z.string().optional().nullable(),
102
+ name: z.string().optional().nullable()
103
+ });
104
+ var typedValueTextSchema = z.object({
105
+ type: z.literal("text"),
106
+ value: z.string()
107
+ });
108
+ var typedValueRawSchema = z.object({
109
+ type: z.literal("raw"),
110
+ value: z.string()
111
+ });
112
+ var jSONSerializableSchema = z.union([
113
+ z.string(),
114
+ z.number(),
115
+ z.boolean(),
116
+ z.record(z.string(), z.any()),
117
+ z.array(z.any())
118
+ ]).nullable();
119
+ var typedValueJsonSchema = z.object({
120
+ type: z.literal("json"),
121
+ value: jSONSerializableSchema
122
+ });
123
+ var moneySchema = z.object({
124
+ currency: z.string(),
125
+ amount: z.number()
126
+ });
127
+ var evaluationResultSchema = z.object({
128
+ status: z.union([
129
+ z.literal("processed"),
130
+ z.literal("skipped"),
131
+ z.literal("error")
132
+ ]),
133
+ passed: z.boolean().optional().nullable(),
134
+ score: z.number().optional().nullable(),
135
+ label: z.string().optional().nullable(),
136
+ details: z.string().optional().nullable(),
137
+ cost: moneySchema.optional().nullable()
138
+ });
139
+ var typedValueGuardrailResultSchema = z.object({
140
+ type: z.literal("guardrail_result"),
141
+ value: evaluationResultSchema
142
+ });
143
+ var typedValueEvaluationResultSchema = z.object({
144
+ type: z.literal("evaluation_result"),
145
+ value: evaluationResultSchema
146
+ });
147
+ var typedValueChatMessagesSchema = z.object({
148
+ type: z.literal("chat_messages"),
149
+ value: z.array(chatMessageSchema)
150
+ });
151
+ var spanInputOutputSchema = z.lazy(
152
+ () => z.union([
153
+ typedValueTextSchema,
154
+ typedValueChatMessagesSchema,
155
+ typedValueGuardrailResultSchema,
156
+ typedValueEvaluationResultSchema,
157
+ typedValueJsonSchema,
158
+ typedValueRawSchema,
159
+ z.object({
160
+ type: z.literal("list"),
161
+ value: z.array(spanInputOutputSchema)
162
+ })
163
+ ])
164
+ );
165
+ var errorCaptureSchema = z.object({
166
+ has_error: z.literal(true),
167
+ message: z.string(),
168
+ stacktrace: z.array(z.string())
169
+ });
170
+ var spanMetricsSchema = z.object({
171
+ prompt_tokens: z.number().optional().nullable(),
172
+ completion_tokens: z.number().optional().nullable(),
173
+ tokens_estimated: z.boolean().optional().nullable(),
174
+ cost: z.number().optional().nullable()
175
+ });
176
+ var spanTimestampsSchema = z.object({
177
+ ignore_timestamps_on_write: z.boolean().optional().nullable(),
178
+ started_at: z.number(),
179
+ first_token_at: z.number().optional().nullable(),
180
+ finished_at: z.number()
181
+ });
182
+ var spanTypesSchema = z.union([
183
+ z.literal("span"),
184
+ z.literal("llm"),
185
+ z.literal("chain"),
186
+ z.literal("tool"),
187
+ z.literal("agent"),
188
+ z.literal("rag"),
189
+ z.literal("guardrail"),
190
+ z.literal("evaluation"),
191
+ z.literal("workflow"),
192
+ z.literal("component"),
193
+ z.literal("module"),
194
+ z.literal("server"),
195
+ z.literal("client"),
196
+ z.literal("producer"),
197
+ z.literal("consumer"),
198
+ z.literal("task"),
199
+ z.literal("unknown")
200
+ ]);
201
+ var spanInputOutputValidatorSchema = spanInputOutputSchema.and(
202
+ z.object({
203
+ value: z.any()
204
+ })
205
+ );
206
+ var traceInputSchema = z.object({
207
+ value: z.string(),
208
+ satisfaction_score: z.number().optional()
209
+ });
210
+ var traceOutputSchema = z.object({
211
+ value: z.string()
212
+ });
213
+ var primitiveTypeSchema = z.union([z.string(), z.number(), z.boolean(), z.undefined()]).nullable();
214
+ var reservedTraceMetadataSchema = z.object({
215
+ thread_id: z.string().optional().nullable(),
216
+ user_id: z.string().optional().nullable(),
217
+ customer_id: z.string().optional().nullable(),
218
+ labels: z.array(z.string()).optional().nullable(),
219
+ topic_id: z.string().optional().nullable(),
220
+ subtopic_id: z.string().optional().nullable(),
221
+ sdk_name: z.string().optional().nullable(),
222
+ sdk_version: z.string().optional().nullable(),
223
+ sdk_language: z.string().optional().nullable(),
224
+ telemetry_sdk_language: z.string().optional().nullable(),
225
+ telemetry_sdk_name: z.string().optional().nullable(),
226
+ telemetry_sdk_version: z.string().optional().nullable(),
227
+ prompt_ids: z.array(z.string()).optional().nullable(),
228
+ prompt_version_ids: z.array(z.string()).optional().nullable()
229
+ });
230
+ var evaluationStatusSchema = z.union([
231
+ z.literal("scheduled"),
232
+ z.literal("in_progress"),
233
+ z.literal("error"),
234
+ z.literal("skipped"),
235
+ z.literal("processed")
236
+ ]);
237
+ var evaluationSchema = z.object({
238
+ evaluation_id: z.string(),
239
+ evaluator_id: z.string(),
240
+ span_id: z.string().optional().nullable(),
241
+ name: z.string(),
242
+ type: z.string().optional().nullable(),
243
+ is_guardrail: z.boolean().optional().nullable(),
244
+ status: evaluationStatusSchema,
245
+ passed: z.boolean().optional().nullable(),
246
+ score: z.number().optional().nullable(),
247
+ label: z.string().optional().nullable(),
248
+ details: z.string().optional().nullable(),
249
+ error: errorCaptureSchema.optional().nullable(),
250
+ retries: z.number().optional().nullable(),
251
+ timestamps: z.object({
252
+ ignore_timestamps_on_write: z.boolean().optional().nullable(),
253
+ inserted_at: z.number().optional().nullable(),
254
+ started_at: z.number().optional().nullable(),
255
+ finished_at: z.number().optional().nullable(),
256
+ updated_at: z.number().optional().nullable()
257
+ })
258
+ });
259
+ var rESTEvaluationSchema = evaluationSchema.omit({
260
+ evaluation_id: true,
261
+ evaluator_id: true,
262
+ status: true,
263
+ timestamps: true,
264
+ retries: true
265
+ }).and(
266
+ z.object({
267
+ evaluation_id: z.string().optional().nullable(),
268
+ evaluator_id: z.string().optional().nullable(),
269
+ status: z.union([
270
+ z.literal("processed"),
271
+ z.literal("skipped"),
272
+ z.literal("error")
273
+ ]).optional().nullable(),
274
+ timestamps: z.object({
275
+ started_at: z.number().optional().nullable(),
276
+ finished_at: z.number().optional().nullable()
277
+ }).optional().nullable()
278
+ })
279
+ );
280
+ var contextsSchema = z.object({
281
+ traceId: z.string(),
282
+ contexts: z.array(rAGChunkSchema)
283
+ });
284
+
285
+ // src/observability-sdk/span/implementation.ts
286
+ import semconv from "@opentelemetry/semantic-conventions/incubating";
287
+
288
+ // src/observability-sdk/span/input-output.ts
289
+ import { z as z2 } from "zod";
290
+ var simpleChatMessageSchema = z2.object({
291
+ role: z2.string(),
292
+ content: z2.union([z2.string(), z2.array(z2.any())]).nullable().optional()
293
+ });
294
+ var simpleChatMessageArraySchema = z2.array(simpleChatMessageSchema);
295
+ function createSafeFallbackValue(value) {
296
+ if (typeof value === "object" && value !== null) {
297
+ return `[${typeof value}]`;
298
+ }
299
+ return String(value);
300
+ }
301
+ function createSafeSpanInputOutput(type, value) {
302
+ const safeValue = createSafeFallbackValue(value);
303
+ return { type, value: safeValue };
304
+ }
305
+ function isString(value) {
306
+ return typeof value === "string";
307
+ }
308
+ function isObject(value) {
309
+ return typeof value === "object" && value !== null && !Array.isArray(value);
310
+ }
311
+ function isChatMessage(value) {
312
+ if (!isObject(value)) return false;
313
+ return typeof value.role === "string" && (typeof value.content === "string" || value.content === null || value.content === void 0);
314
+ }
315
+ function isChatMessageArray(value) {
316
+ return Array.isArray(value) && value.every(isChatMessage);
317
+ }
318
+ function processChatMessages(value) {
319
+ const messages = Array.isArray(value) ? value : [value];
320
+ const strictResult = z2.array(chatMessageSchema).safeParse(messages);
321
+ if (strictResult.success) {
322
+ return { type: "chat_messages", value: strictResult.data };
323
+ }
324
+ const simpleResult = simpleChatMessageArraySchema.safeParse(messages);
325
+ if (simpleResult.success) {
326
+ return { type: "chat_messages", value: simpleResult.data };
327
+ }
328
+ return createSafeSpanInputOutput("text", JSON.stringify(messages));
329
+ }
330
+ function convertToSpanInputOutput(value) {
331
+ try {
332
+ if (value === null || value === void 0) {
333
+ return spanInputOutputSchema.parse({ type: "json", value: null });
334
+ }
335
+ if (isString(value)) {
336
+ return spanInputOutputSchema.parse({ type: "text", value });
337
+ }
338
+ if (isChatMessage(value) || Array.isArray(value) && value.length > 0 && isChatMessageArray(value)) {
339
+ return processChatMessages(value);
340
+ }
341
+ if (Array.isArray(value)) {
342
+ return spanInputOutputSchema.parse({
343
+ type: "list",
344
+ value: value.map((item) => convertToSpanInputOutput(item))
345
+ });
346
+ }
347
+ if (isObject(value)) {
348
+ try {
349
+ return spanInputOutputSchema.parse({ type: "json", value });
350
+ } catch (e) {
351
+ return createSafeSpanInputOutput("text", value);
352
+ }
353
+ }
354
+ return createSafeSpanInputOutput("text", value);
355
+ } catch (e) {
356
+ return createSafeSpanInputOutput("text", value);
357
+ }
358
+ }
359
+ function isValidInputOutputType(type) {
360
+ return INPUT_OUTPUT_TYPES.includes(type);
361
+ }
362
+ function validateValueForInputOutputType(type, value) {
363
+ switch (type) {
364
+ case "chat_messages": {
365
+ const messages = Array.isArray(value) ? value : [value];
366
+ const strictResult = z2.array(chatMessageSchema).safeParse(messages);
367
+ if (strictResult.success) {
368
+ return strictResult.data;
369
+ }
370
+ const simpleResult = simpleChatMessageArraySchema.safeParse(messages);
371
+ if (simpleResult.success) {
372
+ return simpleResult.data;
373
+ }
374
+ return [{ role: "user", content: createSafeFallbackValue(value) }];
375
+ }
376
+ case "list": {
377
+ const listResult = z2.array(spanInputOutputSchema).safeParse(value);
378
+ return listResult.success ? listResult.data : [{ type: "text", value: createSafeFallbackValue(value) }];
379
+ }
380
+ case "json": {
381
+ try {
382
+ JSON.stringify(value);
383
+ return value;
384
+ } catch (e) {
385
+ return createSafeFallbackValue(value);
386
+ }
387
+ }
388
+ case "text":
389
+ case "raw": {
390
+ const stringResult = z2.string().safeParse(value);
391
+ return stringResult.success ? stringResult.data : createSafeFallbackValue(value);
392
+ }
393
+ case "guardrail_result":
394
+ case "evaluation_result": {
395
+ try {
396
+ JSON.stringify(value);
397
+ return value;
398
+ } catch (e) {
399
+ return createSafeFallbackValue(value);
400
+ }
401
+ }
402
+ default:
403
+ return value;
404
+ }
405
+ }
406
+ function processSpanInputOutput(typeOrValue, value) {
407
+ try {
408
+ if (typeof typeOrValue === "string" && value !== void 0) {
409
+ const type = isValidInputOutputType(typeOrValue) ? typeOrValue : "json";
410
+ const validatedValue = validateValueForInputOutputType(type, value);
411
+ const result = spanInputOutputSchema.safeParse({ type, value: validatedValue });
412
+ return result.success ? result.data : createSafeSpanInputOutput("raw", validatedValue);
413
+ }
414
+ return convertToSpanInputOutput(typeOrValue);
415
+ } catch (e) {
416
+ return createSafeSpanInputOutput("text", typeOrValue);
417
+ }
418
+ }
419
+
420
+ // src/observability-sdk/span/implementation.ts
421
+ var LangWatchSpanInternal = class {
422
+ constructor(span) {
423
+ this.span = span;
424
+ }
425
+ setAttributes(attributes) {
426
+ this.span.setAttributes(attributes);
427
+ return this;
428
+ }
429
+ setAttribute(key, value) {
430
+ this.span.setAttribute(key, value);
431
+ return this;
432
+ }
433
+ addEvent(name, attributes) {
434
+ this.span.addEvent(name, attributes);
435
+ return this;
436
+ }
437
+ recordException(exception) {
438
+ this.span.recordException(exception);
439
+ return this;
440
+ }
441
+ setStatus(status) {
442
+ this.span.setStatus(status);
443
+ return this;
444
+ }
445
+ updateName(name) {
446
+ this.span.updateName(name);
447
+ return this;
448
+ }
449
+ end(endTime) {
450
+ this.span.end(endTime);
451
+ }
452
+ isRecording() {
453
+ return this.span.isRecording();
454
+ }
455
+ spanContext() {
456
+ return this.span.spanContext();
457
+ }
458
+ addLink(link) {
459
+ this.span.addLink(link);
460
+ return this;
461
+ }
462
+ addLinks(links) {
463
+ this.span.addLinks(links);
464
+ return this;
465
+ }
466
+ setType(type) {
467
+ return this.setAttribute(ATTR_LANGWATCH_SPAN_TYPE, type);
468
+ }
469
+ setSelectedPrompt(prompt) {
470
+ return this.setAttributes({
471
+ [ATTR_LANGWATCH_PROMPT_SELECTED_ID]: prompt.id,
472
+ [ATTR_LANGWATCH_PROMPT_ID]: prompt.id,
473
+ [ATTR_LANGWATCH_PROMPT_VERSION_ID]: prompt.versionId,
474
+ [ATTR_LANGWATCH_PROMPT_VERSION_NUMBER]: prompt.version
475
+ });
476
+ }
477
+ setRequestModel(model) {
478
+ return this.setAttribute(semconv.ATTR_GEN_AI_REQUEST_MODEL, model);
479
+ }
480
+ setResponseModel(model) {
481
+ return this.setAttribute(semconv.ATTR_GEN_AI_RESPONSE_MODEL, model);
482
+ }
483
+ setRAGContexts(ragContexts) {
484
+ return this.setAttribute(
485
+ ATTR_LANGWATCH_RAG_CONTEXTS,
486
+ JSON.stringify({
487
+ type: "json",
488
+ value: ragContexts
489
+ })
490
+ );
491
+ }
492
+ setRAGContext(ragContext) {
493
+ return this.setRAGContexts([ragContext]);
494
+ }
495
+ setMetrics(metrics) {
496
+ return this.setAttribute(
497
+ ATTR_LANGWATCH_METRICS,
498
+ JSON.stringify({
499
+ type: "json",
500
+ value: metrics
501
+ })
502
+ );
503
+ }
504
+ setInput(typeOrInput, input) {
505
+ const spanInput = processSpanInputOutput(typeOrInput, input);
506
+ return this.setAttribute(
507
+ ATTR_LANGWATCH_INPUT,
508
+ JSON.stringify(spanInput)
509
+ );
510
+ }
511
+ setOutput(typeOrOutput, output) {
512
+ const spanOutput = processSpanInputOutput(typeOrOutput, output);
513
+ return this.setAttribute(
514
+ ATTR_LANGWATCH_OUTPUT,
515
+ JSON.stringify(spanOutput)
516
+ );
517
+ }
518
+ };
519
+ function createLangWatchSpan(span) {
520
+ return new LangWatchSpanInternal(span);
521
+ }
522
+
523
+ // src/observability-sdk/tracer/implementation.ts
524
+ import {
525
+ SpanStatusCode,
526
+ trace
527
+ } from "@opentelemetry/api";
528
+ function getLangWatchTracer(name, version) {
529
+ return getLangWatchTracerFromProvider(
530
+ trace.getTracerProvider(),
531
+ name,
532
+ version
533
+ );
534
+ }
535
+ function getLangWatchTracerFromProvider(tracerProvider, name, version) {
536
+ const tracer = tracerProvider.getTracer(name, version);
537
+ let proxyInstance;
538
+ const handler = {
539
+ get(target, prop) {
540
+ switch (prop) {
541
+ case "startActiveSpan":
542
+ return (...args) => {
543
+ const spanArgs = normalizeSpanArgs(args);
544
+ const wrappedFn = (span, ...cbArgs) => spanArgs.fn(createLangWatchSpan(span), ...cbArgs);
545
+ if (spanArgs.context !== void 0)
546
+ return target.startActiveSpan(spanArgs.name, spanArgs.options, spanArgs.context, wrappedFn);
547
+ if (spanArgs.options !== void 0)
548
+ return target.startActiveSpan(spanArgs.name, spanArgs.options, wrappedFn);
549
+ return target.startActiveSpan(spanArgs.name, wrappedFn);
550
+ };
551
+ case "withActiveSpan":
552
+ return (...args) => {
553
+ const spanArgs = normalizeSpanArgs(args);
554
+ const cb = (span) => {
555
+ var _a;
556
+ const wrappedSpan = createLangWatchSpan(span);
557
+ try {
558
+ const result = spanArgs.fn(wrappedSpan);
559
+ if (result && typeof result.then === "function") {
560
+ return result.then((result2) => {
561
+ wrappedSpan.setStatus({
562
+ code: SpanStatusCode.OK
563
+ });
564
+ return result2;
565
+ }).catch((err) => {
566
+ var _a2;
567
+ wrappedSpan.setStatus({
568
+ code: SpanStatusCode.ERROR,
569
+ message: (err == null ? void 0 : err.message) || String(err)
570
+ });
571
+ (_a2 = wrappedSpan.recordException) == null ? void 0 : _a2.call(wrappedSpan, err);
572
+ throw err;
573
+ }).finally(() => {
574
+ wrappedSpan.end();
575
+ });
576
+ }
577
+ wrappedSpan.setStatus({
578
+ code: SpanStatusCode.OK
579
+ });
580
+ wrappedSpan.end();
581
+ return result;
582
+ } catch (err) {
583
+ wrappedSpan.setStatus({
584
+ code: SpanStatusCode.ERROR,
585
+ message: (err == null ? void 0 : err.message) || String(err)
586
+ });
587
+ (_a = wrappedSpan.recordException) == null ? void 0 : _a.call(wrappedSpan, err);
588
+ wrappedSpan.end();
589
+ throw err;
590
+ }
591
+ };
592
+ if (spanArgs.context !== void 0)
593
+ return target.startActiveSpan(spanArgs.name, spanArgs.options, spanArgs.context, cb);
594
+ if (spanArgs.options !== void 0)
595
+ return target.startActiveSpan(spanArgs.name, spanArgs.options, cb);
596
+ return target.startActiveSpan(spanArgs.name, cb);
597
+ };
598
+ case "startSpan":
599
+ return (name2, options, context) => createLangWatchSpan(target.startSpan(name2, options, context));
600
+ default: {
601
+ const value = target[prop];
602
+ return typeof value === "function" ? value.bind(target) : value;
603
+ }
604
+ }
605
+ }
606
+ };
607
+ proxyInstance = new Proxy(tracer, handler);
608
+ return proxyInstance;
609
+ }
610
+ function normalizeSpanArgs(args) {
611
+ const [name, arg2, arg3, arg4] = args;
612
+ if (typeof arg4 === "function")
613
+ return { name, options: arg2, context: arg3, fn: arg4 };
614
+ if (typeof arg3 === "function") return { name, options: arg2, fn: arg3 };
615
+ if (typeof arg2 === "function") return { name, fn: arg2 };
616
+ throw new Error("Expected a span callback as the last argument");
617
+ }
618
+
619
+ export {
620
+ spanTypes,
621
+ chatMessageSchema,
622
+ createLangWatchSpan,
623
+ getLangWatchTracer,
624
+ getLangWatchTracerFromProvider
625
+ };
626
+ //# sourceMappingURL=chunk-EJWJXTPU.mjs.map