langwatch 0.7.4 → 0.8.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/README.md +48 -0
- package/dist/{add-XLEUNNZI.mjs → add-3MRUJN46.mjs} +5 -5
- package/dist/{add-Y543UEBX.js → add-S6GXVJE5.js} +10 -10
- package/dist/{add-Y543UEBX.js.map → add-S6GXVJE5.js.map} +1 -1
- package/dist/{chunk-VMI2XPCC.mjs → chunk-2BFLRROK.mjs} +2 -2
- package/dist/{chunk-VMI2XPCC.mjs.map → chunk-2BFLRROK.mjs.map} +1 -1
- package/dist/{chunk-BKVMRI32.js → chunk-4NB5C6GH.js} +2 -2
- package/dist/{chunk-BKVMRI32.js.map → chunk-4NB5C6GH.js.map} +1 -1
- package/dist/{chunk-MZ2O5ZJL.js → chunk-4XNHIYPE.js} +121 -32
- package/dist/chunk-4XNHIYPE.js.map +1 -0
- package/dist/{chunk-GC7VHCU5.js → chunk-BYG3QS2X.js} +35 -72
- package/dist/chunk-BYG3QS2X.js.map +1 -0
- package/dist/{chunk-HRPIRC67.mjs → chunk-LW62ZSAR.mjs} +109 -20
- package/dist/chunk-LW62ZSAR.mjs.map +1 -0
- package/dist/{chunk-QPHTXDJ5.mjs → chunk-M57C3BU5.mjs} +2 -2
- package/dist/{chunk-J4YLJUX5.js → chunk-PQZCGMWT.js} +9 -9
- package/dist/{chunk-J4YLJUX5.js.map → chunk-PQZCGMWT.js.map} +1 -1
- package/dist/{chunk-MBXENFRR.mjs → chunk-W3V3NX7P.mjs} +34 -71
- package/dist/chunk-W3V3NX7P.mjs.map +1 -0
- package/dist/cli/index.js +7 -7
- package/dist/cli/index.mjs +7 -7
- package/dist/{create-YUOTG2TS.mjs → create-KEEZMNMH.mjs} +2 -2
- package/dist/{create-ACGBGFVO.js → create-SWMCGN2Y.js} +3 -3
- package/dist/{create-ACGBGFVO.js.map → create-SWMCGN2Y.js.map} +1 -1
- package/dist/{implementation-JKO2kHPl.d.ts → implementation-TF91Gn0l.d.ts} +154 -20
- package/dist/{implementation-BhgBtqp4.d.mts → implementation-pq0g2B5y.d.mts} +154 -20
- package/dist/index.d.mts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +11 -11
- package/dist/index.mjs +3 -3
- package/dist/{init-UFZF26SF.js → init-DWQKRJV4.js} +3 -3
- package/dist/{init-UFZF26SF.js.map → init-DWQKRJV4.js.map} +1 -1
- package/dist/{init-ED3OW3TK.mjs → init-EHVUZ7TR.mjs} +2 -2
- package/dist/{list-LULA2BWM.js → list-HV2QUNQG.js} +7 -7
- package/dist/{list-LULA2BWM.js.map → list-HV2QUNQG.js.map} +1 -1
- package/dist/{list-5C6V2OEO.mjs → list-XDVFYGVF.mjs} +4 -4
- package/dist/{login-XY2RAXYR.mjs → login-AVTZS3NG.mjs} +2 -2
- package/dist/{login-RUMQOHW4.js → login-CHJE7P5F.js} +3 -3
- package/dist/{login-RUMQOHW4.js.map → login-CHJE7P5F.js.map} +1 -1
- package/dist/observability-sdk/index.d.mts +4 -3
- package/dist/observability-sdk/index.d.ts +4 -3
- package/dist/observability-sdk/index.js +3 -3
- package/dist/observability-sdk/index.mjs +2 -2
- package/dist/observability-sdk/instrumentation/langchain/index.d.mts +1 -1
- package/dist/observability-sdk/instrumentation/langchain/index.d.ts +1 -1
- package/dist/observability-sdk/setup/node/index.js +10 -10
- package/dist/observability-sdk/setup/node/index.mjs +2 -2
- package/dist/{remove-GA3OQ5AQ.mjs → remove-5W3I5SID.mjs} +4 -4
- package/dist/{remove-NIEHQCQN.js → remove-XUWNNMPS.js} +6 -6
- package/dist/{remove-NIEHQCQN.js.map → remove-XUWNNMPS.js.map} +1 -1
- package/dist/{sync-J2FH4OZC.js → sync-DK52GMDG.js} +8 -8
- package/dist/{sync-J2FH4OZC.js.map → sync-DK52GMDG.js.map} +1 -1
- package/dist/{sync-X3KE2DNE.mjs → sync-DRZDUADJ.mjs} +5 -5
- package/dist/{types-DOVKZCnN.d.ts → types-CAQOMGrf.d.ts} +141 -33
- package/dist/{types-DoNHhlm6.d.mts → types-DhEYjnRD.d.mts} +141 -33
- package/package.json +1 -1
- package/dist/chunk-GC7VHCU5.js.map +0 -1
- package/dist/chunk-HRPIRC67.mjs.map +0 -1
- package/dist/chunk-MBXENFRR.mjs.map +0 -1
- package/dist/chunk-MZ2O5ZJL.js.map +0 -1
- /package/dist/{add-XLEUNNZI.mjs.map → add-3MRUJN46.mjs.map} +0 -0
- /package/dist/{chunk-QPHTXDJ5.mjs.map → chunk-M57C3BU5.mjs.map} +0 -0
- /package/dist/{create-YUOTG2TS.mjs.map → create-KEEZMNMH.mjs.map} +0 -0
- /package/dist/{init-ED3OW3TK.mjs.map → init-EHVUZ7TR.mjs.map} +0 -0
- /package/dist/{list-5C6V2OEO.mjs.map → list-XDVFYGVF.mjs.map} +0 -0
- /package/dist/{login-XY2RAXYR.mjs.map → login-AVTZS3NG.mjs.map} +0 -0
- /package/dist/{remove-GA3OQ5AQ.mjs.map → remove-5W3I5SID.mjs.map} +0 -0
- /package/dist/{sync-X3KE2DNE.mjs.map → sync-DRZDUADJ.mjs.map} +0 -0
|
@@ -1045,8 +1045,9 @@ interface operations {
|
|
|
1045
1045
|
[key: string]: string[];
|
|
1046
1046
|
};
|
|
1047
1047
|
columnTypes: {
|
|
1048
|
+
id?: string;
|
|
1048
1049
|
name: string;
|
|
1049
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1050
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1050
1051
|
}[];
|
|
1051
1052
|
};
|
|
1052
1053
|
};
|
|
@@ -1061,8 +1062,9 @@ interface operations {
|
|
|
1061
1062
|
[key: string]: string[];
|
|
1062
1063
|
};
|
|
1063
1064
|
columnTypes: {
|
|
1065
|
+
id?: string;
|
|
1064
1066
|
name: string;
|
|
1065
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1067
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1066
1068
|
}[];
|
|
1067
1069
|
};
|
|
1068
1070
|
};
|
|
@@ -1114,6 +1116,18 @@ interface operations {
|
|
|
1114
1116
|
};
|
|
1115
1117
|
};
|
|
1116
1118
|
};
|
|
1119
|
+
/** @description Unprocessable Entity */
|
|
1120
|
+
422: {
|
|
1121
|
+
headers: {
|
|
1122
|
+
[name: string]: unknown;
|
|
1123
|
+
};
|
|
1124
|
+
content: {
|
|
1125
|
+
"application/json": {
|
|
1126
|
+
error: string;
|
|
1127
|
+
message?: string;
|
|
1128
|
+
};
|
|
1129
|
+
};
|
|
1130
|
+
};
|
|
1117
1131
|
/** @description Internal Server Error */
|
|
1118
1132
|
500: {
|
|
1119
1133
|
headers: {
|
|
@@ -1140,11 +1154,10 @@ interface operations {
|
|
|
1140
1154
|
requestBody?: {
|
|
1141
1155
|
content: {
|
|
1142
1156
|
"application/json": {
|
|
1143
|
-
handle?: string;
|
|
1144
1157
|
model?: string;
|
|
1145
1158
|
temperature?: number;
|
|
1146
1159
|
maxTokens?: number;
|
|
1147
|
-
commitMessage
|
|
1160
|
+
commitMessage: string;
|
|
1148
1161
|
authorId?: string;
|
|
1149
1162
|
prompt?: string;
|
|
1150
1163
|
messages?: {
|
|
@@ -1171,6 +1184,7 @@ interface operations {
|
|
|
1171
1184
|
schemaVersion?: "1.0";
|
|
1172
1185
|
/** @enum {string} */
|
|
1173
1186
|
scope?: "ORGANIZATION" | "PROJECT";
|
|
1187
|
+
handle?: string;
|
|
1174
1188
|
};
|
|
1175
1189
|
};
|
|
1176
1190
|
};
|
|
@@ -1228,8 +1242,9 @@ interface operations {
|
|
|
1228
1242
|
[key: string]: string[];
|
|
1229
1243
|
};
|
|
1230
1244
|
columnTypes: {
|
|
1245
|
+
id?: string;
|
|
1231
1246
|
name: string;
|
|
1232
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1247
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1233
1248
|
}[];
|
|
1234
1249
|
};
|
|
1235
1250
|
};
|
|
@@ -1244,8 +1259,9 @@ interface operations {
|
|
|
1244
1259
|
[key: string]: string[];
|
|
1245
1260
|
};
|
|
1246
1261
|
columnTypes: {
|
|
1262
|
+
id?: string;
|
|
1247
1263
|
name: string;
|
|
1248
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1264
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1249
1265
|
}[];
|
|
1250
1266
|
};
|
|
1251
1267
|
};
|
|
@@ -1393,6 +1409,18 @@ interface operations {
|
|
|
1393
1409
|
};
|
|
1394
1410
|
};
|
|
1395
1411
|
};
|
|
1412
|
+
/** @description Unprocessable Entity */
|
|
1413
|
+
422: {
|
|
1414
|
+
headers: {
|
|
1415
|
+
[name: string]: unknown;
|
|
1416
|
+
};
|
|
1417
|
+
content: {
|
|
1418
|
+
"application/json": {
|
|
1419
|
+
error: string;
|
|
1420
|
+
message?: string;
|
|
1421
|
+
};
|
|
1422
|
+
};
|
|
1423
|
+
};
|
|
1396
1424
|
/** @description Internal Server Error */
|
|
1397
1425
|
500: {
|
|
1398
1426
|
headers: {
|
|
@@ -1471,8 +1499,9 @@ interface operations {
|
|
|
1471
1499
|
[key: string]: string[];
|
|
1472
1500
|
};
|
|
1473
1501
|
columnTypes: {
|
|
1502
|
+
id?: string;
|
|
1474
1503
|
name: string;
|
|
1475
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1504
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1476
1505
|
}[];
|
|
1477
1506
|
};
|
|
1478
1507
|
};
|
|
@@ -1487,8 +1516,9 @@ interface operations {
|
|
|
1487
1516
|
[key: string]: string[];
|
|
1488
1517
|
};
|
|
1489
1518
|
columnTypes: {
|
|
1519
|
+
id?: string;
|
|
1490
1520
|
name: string;
|
|
1491
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1521
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1492
1522
|
}[];
|
|
1493
1523
|
};
|
|
1494
1524
|
};
|
|
@@ -1540,6 +1570,18 @@ interface operations {
|
|
|
1540
1570
|
};
|
|
1541
1571
|
};
|
|
1542
1572
|
};
|
|
1573
|
+
/** @description Unprocessable Entity */
|
|
1574
|
+
422: {
|
|
1575
|
+
headers: {
|
|
1576
|
+
[name: string]: unknown;
|
|
1577
|
+
};
|
|
1578
|
+
content: {
|
|
1579
|
+
"application/json": {
|
|
1580
|
+
error: string;
|
|
1581
|
+
message?: string;
|
|
1582
|
+
};
|
|
1583
|
+
};
|
|
1584
|
+
};
|
|
1543
1585
|
/** @description Internal Server Error */
|
|
1544
1586
|
500: {
|
|
1545
1587
|
headers: {
|
|
@@ -1600,8 +1642,9 @@ interface operations {
|
|
|
1600
1642
|
[key: string]: string[];
|
|
1601
1643
|
};
|
|
1602
1644
|
columnTypes: {
|
|
1645
|
+
id?: string;
|
|
1603
1646
|
name: string;
|
|
1604
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1647
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1605
1648
|
}[];
|
|
1606
1649
|
};
|
|
1607
1650
|
};
|
|
@@ -1616,8 +1659,9 @@ interface operations {
|
|
|
1616
1659
|
[key: string]: string[];
|
|
1617
1660
|
};
|
|
1618
1661
|
columnTypes: {
|
|
1662
|
+
id?: string;
|
|
1619
1663
|
name: string;
|
|
1620
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1664
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1621
1665
|
}[];
|
|
1622
1666
|
};
|
|
1623
1667
|
};
|
|
@@ -1693,8 +1737,9 @@ interface operations {
|
|
|
1693
1737
|
[key: string]: string[];
|
|
1694
1738
|
};
|
|
1695
1739
|
columnTypes: {
|
|
1740
|
+
id?: string;
|
|
1696
1741
|
name: string;
|
|
1697
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1742
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1698
1743
|
}[];
|
|
1699
1744
|
};
|
|
1700
1745
|
};
|
|
@@ -1709,8 +1754,9 @@ interface operations {
|
|
|
1709
1754
|
[key: string]: string[];
|
|
1710
1755
|
};
|
|
1711
1756
|
columnTypes: {
|
|
1757
|
+
id?: string;
|
|
1712
1758
|
name: string;
|
|
1713
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1759
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1714
1760
|
}[];
|
|
1715
1761
|
};
|
|
1716
1762
|
};
|
|
@@ -1762,8 +1808,9 @@ interface operations {
|
|
|
1762
1808
|
[key: string]: string[];
|
|
1763
1809
|
};
|
|
1764
1810
|
columnTypes: {
|
|
1811
|
+
id?: string;
|
|
1765
1812
|
name: string;
|
|
1766
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1813
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1767
1814
|
}[];
|
|
1768
1815
|
};
|
|
1769
1816
|
};
|
|
@@ -1778,8 +1825,9 @@ interface operations {
|
|
|
1778
1825
|
[key: string]: string[];
|
|
1779
1826
|
};
|
|
1780
1827
|
columnTypes: {
|
|
1828
|
+
id?: string;
|
|
1781
1829
|
name: string;
|
|
1782
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
1830
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
1783
1831
|
}[];
|
|
1784
1832
|
};
|
|
1785
1833
|
};
|
|
@@ -1821,6 +1869,18 @@ interface operations {
|
|
|
1821
1869
|
};
|
|
1822
1870
|
};
|
|
1823
1871
|
};
|
|
1872
|
+
/** @description Unprocessable Entity */
|
|
1873
|
+
422: {
|
|
1874
|
+
headers: {
|
|
1875
|
+
[name: string]: unknown;
|
|
1876
|
+
};
|
|
1877
|
+
content: {
|
|
1878
|
+
"application/json": {
|
|
1879
|
+
error: string;
|
|
1880
|
+
message?: string;
|
|
1881
|
+
};
|
|
1882
|
+
};
|
|
1883
|
+
};
|
|
1824
1884
|
/** @description Internal Server Error */
|
|
1825
1885
|
500: {
|
|
1826
1886
|
headers: {
|
|
@@ -1889,9 +1949,8 @@ interface operations {
|
|
|
1889
1949
|
};
|
|
1890
1950
|
content: {
|
|
1891
1951
|
"application/json": {
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
message: string;
|
|
1952
|
+
error: string;
|
|
1953
|
+
message?: string;
|
|
1895
1954
|
};
|
|
1896
1955
|
};
|
|
1897
1956
|
};
|
|
@@ -1902,9 +1961,8 @@ interface operations {
|
|
|
1902
1961
|
};
|
|
1903
1962
|
content: {
|
|
1904
1963
|
"application/json": {
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
message: string;
|
|
1964
|
+
error: string;
|
|
1965
|
+
message?: string;
|
|
1908
1966
|
};
|
|
1909
1967
|
};
|
|
1910
1968
|
};
|
|
@@ -1915,9 +1973,8 @@ interface operations {
|
|
|
1915
1973
|
};
|
|
1916
1974
|
content: {
|
|
1917
1975
|
"application/json": {
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
message: string;
|
|
1976
|
+
error: string;
|
|
1977
|
+
message?: string;
|
|
1921
1978
|
};
|
|
1922
1979
|
};
|
|
1923
1980
|
};
|
|
@@ -1928,9 +1985,8 @@ interface operations {
|
|
|
1928
1985
|
};
|
|
1929
1986
|
content: {
|
|
1930
1987
|
"application/json": {
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
message: string;
|
|
1988
|
+
error: string;
|
|
1989
|
+
message?: string;
|
|
1934
1990
|
};
|
|
1935
1991
|
};
|
|
1936
1992
|
};
|
|
@@ -1941,9 +1997,8 @@ interface operations {
|
|
|
1941
1997
|
};
|
|
1942
1998
|
content: {
|
|
1943
1999
|
"application/json": {
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
message: string;
|
|
2000
|
+
error: string;
|
|
2001
|
+
message?: string;
|
|
1947
2002
|
};
|
|
1948
2003
|
};
|
|
1949
2004
|
};
|
|
@@ -2011,8 +2066,9 @@ interface operations {
|
|
|
2011
2066
|
[key: string]: string[];
|
|
2012
2067
|
};
|
|
2013
2068
|
columnTypes: {
|
|
2069
|
+
id?: string;
|
|
2014
2070
|
name: string;
|
|
2015
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
2071
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
2016
2072
|
}[];
|
|
2017
2073
|
};
|
|
2018
2074
|
};
|
|
@@ -2027,8 +2083,9 @@ interface operations {
|
|
|
2027
2083
|
[key: string]: string[];
|
|
2028
2084
|
};
|
|
2029
2085
|
columnTypes: {
|
|
2086
|
+
id?: string;
|
|
2030
2087
|
name: string;
|
|
2031
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
2088
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
2032
2089
|
}[];
|
|
2033
2090
|
};
|
|
2034
2091
|
};
|
|
@@ -2068,6 +2125,18 @@ interface operations {
|
|
|
2068
2125
|
};
|
|
2069
2126
|
};
|
|
2070
2127
|
};
|
|
2128
|
+
/** @description Unprocessable Entity */
|
|
2129
|
+
422: {
|
|
2130
|
+
headers: {
|
|
2131
|
+
[name: string]: unknown;
|
|
2132
|
+
};
|
|
2133
|
+
content: {
|
|
2134
|
+
"application/json": {
|
|
2135
|
+
error: string;
|
|
2136
|
+
message?: string;
|
|
2137
|
+
};
|
|
2138
|
+
};
|
|
2139
|
+
};
|
|
2071
2140
|
/** @description Internal Server Error */
|
|
2072
2141
|
500: {
|
|
2073
2142
|
headers: {
|
|
@@ -2183,8 +2252,9 @@ interface operations {
|
|
|
2183
2252
|
[key: string]: string[];
|
|
2184
2253
|
};
|
|
2185
2254
|
columnTypes: {
|
|
2255
|
+
id?: string;
|
|
2186
2256
|
name: string;
|
|
2187
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
2257
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
2188
2258
|
}[];
|
|
2189
2259
|
};
|
|
2190
2260
|
};
|
|
@@ -2199,8 +2269,9 @@ interface operations {
|
|
|
2199
2269
|
[key: string]: string[];
|
|
2200
2270
|
};
|
|
2201
2271
|
columnTypes: {
|
|
2272
|
+
id?: string;
|
|
2202
2273
|
name: string;
|
|
2203
|
-
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations";
|
|
2274
|
+
type: "string" | "boolean" | "number" | "date" | "list" | "json" | "spans" | "rag_contexts" | "chat_messages" | "annotations" | "evaluations" | "image";
|
|
2204
2275
|
}[];
|
|
2205
2276
|
};
|
|
2206
2277
|
};
|
|
@@ -2252,6 +2323,18 @@ interface operations {
|
|
|
2252
2323
|
};
|
|
2253
2324
|
};
|
|
2254
2325
|
};
|
|
2326
|
+
/** @description Unprocessable Entity */
|
|
2327
|
+
422: {
|
|
2328
|
+
headers: {
|
|
2329
|
+
[name: string]: unknown;
|
|
2330
|
+
};
|
|
2331
|
+
content: {
|
|
2332
|
+
"application/json": {
|
|
2333
|
+
error: string;
|
|
2334
|
+
message?: string;
|
|
2335
|
+
};
|
|
2336
|
+
};
|
|
2337
|
+
};
|
|
2255
2338
|
/** @description Internal Server Error */
|
|
2256
2339
|
500: {
|
|
2257
2340
|
headers: {
|
|
@@ -2353,6 +2436,7 @@ interface operations {
|
|
|
2353
2436
|
/** @constant */
|
|
2354
2437
|
role: "tool";
|
|
2355
2438
|
toolCallId: string;
|
|
2439
|
+
error?: string;
|
|
2356
2440
|
}) | {
|
|
2357
2441
|
role?: "system" | "user" | "assistant" | "function" | "tool" | "unknown";
|
|
2358
2442
|
content?: string | ({
|
|
@@ -2443,6 +2527,18 @@ interface operations {
|
|
|
2443
2527
|
};
|
|
2444
2528
|
};
|
|
2445
2529
|
};
|
|
2530
|
+
/** @description Unprocessable Entity */
|
|
2531
|
+
422: {
|
|
2532
|
+
headers: {
|
|
2533
|
+
[name: string]: unknown;
|
|
2534
|
+
};
|
|
2535
|
+
content: {
|
|
2536
|
+
"application/json": {
|
|
2537
|
+
error: string;
|
|
2538
|
+
message?: string;
|
|
2539
|
+
};
|
|
2540
|
+
};
|
|
2541
|
+
};
|
|
2446
2542
|
/** @description Internal Server Error */
|
|
2447
2543
|
500: {
|
|
2448
2544
|
headers: {
|
|
@@ -2502,6 +2598,18 @@ interface operations {
|
|
|
2502
2598
|
};
|
|
2503
2599
|
};
|
|
2504
2600
|
};
|
|
2601
|
+
/** @description Unprocessable Entity */
|
|
2602
|
+
422: {
|
|
2603
|
+
headers: {
|
|
2604
|
+
[name: string]: unknown;
|
|
2605
|
+
};
|
|
2606
|
+
content: {
|
|
2607
|
+
"application/json": {
|
|
2608
|
+
error: string;
|
|
2609
|
+
message?: string;
|
|
2610
|
+
};
|
|
2611
|
+
};
|
|
2612
|
+
};
|
|
2505
2613
|
/** @description Internal Server Error */
|
|
2506
2614
|
500: {
|
|
2507
2615
|
headers: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "langwatch",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "LangWatch TypeScript/JavaScript SDK. Interact with the full LangWatch API and use the LangWatch OpenTelemetry SDK to instrument your application. For more information, see https://docs.langwatch.ai/integration/typescript/guide",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-GC7VHCU5.js","../src/cli/utils/init.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACJA,uFAA0B;AAC1B,4EAAkB;AAGlB,IAAM,WAAA,EAAa,CAAC,QAAA,EAAA,GAAsC;AACxD,EAAA,MAAM,GAAA,EAAc,QAAA,CAAA,eAAA,CAAgB;AAAA,IAClC,KAAA,EAAO,OAAA,CAAQ,KAAA;AAAA,IACf,MAAA,EAAQ,OAAA,CAAQ;AAAA,EAClB,CAAC,CAAA;AAED,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAA,GAAY;AAC9B,IAAA,EAAA,CAAG,QAAA,CAAS,QAAA,EAAU,CAAC,MAAA,EAAA,GAAW;AAChC,MAAA,EAAA,CAAG,KAAA,CAAM,CAAA;AACT,MAAA,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,CAAA,CAAE,WAAA,CAAY,CAAC,CAAA;AAAA,IACrC,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AACH,CAAA;AAEO,IAAM,kBAAA,EAAoB,MAAA,CAAA,EAAA,GAA2B;AAC1D,EAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAM,IAAA,CAAK,2CAA2C,CAAC,CAAA;AAGnE,EAAA,MAAM,aAAA,EAAe,4BAAA,CAAY,uBAAA,CAAwB,CAAA;AACzD,EAAA,GAAA,CAAI,YAAA,CAAa,OAAA,EAAS;AACxB,IAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAM,KAAA,CAAM,CAAA,eAAA,EAAa,eAAA,CAAM,IAAA,CAAK,gBAAgB,CAAC,CAAA,CAAA;AAGhC,IAAA;AACkC,MAAA;AACnE,IAAA;AAKE,IAAA;AAEoC,MAAA;AAClC,QAAA;AACF,MAAA;AAC2B,MAAA;AACI,QAAA;AACnB,UAAA;AACA,YAAA;AACa,cAAA;AACf,gBAAA;AACD,cAAA;AACH,YAAA;AACF,UAAA;AACK,QAAA;AACG,UAAA;AACA,YAAA;AAC+B,cAAA;AACjC,gBAAA;AACD,cAAA;AACH,YAAA;AACF,UAAA;AACF,QAAA;AACK,MAAA;AACG,QAAA;AACA,UAAA;AACoC,YAAA;AAC1C,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACK,EAAA;AACkD,IAAA;AACzD,EAAA;AAGqD,EAAA;AAC7B,EAAA;AAC0B,IAAA;AAC3C,EAAA;AACuD,IAAA;AAC9D,EAAA;AAG8B,EAAA;AACtB,EAAA;AAC2C,IAAA;AACnD,EAAA;AAEQ,EAAA;AACM,IAAA;AACd,EAAA;AACuD,EAAA;AACzD;AAIgE;AAEL,EAAA;AAC/B,EAAA;AAEA,EAAA;AACyC,IAAA;AAGX,IAAA;AAC9B,MAAA;AACW,MAAA;AACkC,QAAA;AACnE,MAAA;AAKE,MAAA;AAEoC,QAAA;AAClC,UAAA;AACF,QAAA;AAC2B,QAAA;AACI,UAAA;AACnB,YAAA;AACA,cAAA;AACa,gBAAA;AACf,kBAAA;AACD,gBAAA;AACH,cAAA;AACF,YAAA;AACK,UAAA;AACG,YAAA;AACA,cAAA;AAC+B,gBAAA;AACjC,kBAAA;AACD,gBAAA;AACH,cAAA;AACF,YAAA;AACF,UAAA;AACK,QAAA;AACG,UAAA;AACA,YAAA;AACoC,cAAA;AAC1C,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AAGqD,EAAA;AAC7B,EAAA;AAC0B,IAAA;AAClD,EAAA;AAG8B,EAAA;AAEvB,EAAA;AACuB,IAAA;AACJ,IAAA;AAC1B,EAAA;AACF;AD7B2E;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-GC7VHCU5.js","sourcesContent":[null,"import * as readline from \"readline\";\nimport chalk from \"chalk\";\nimport { FileManager } from \"./fileManager\";\n\nconst promptUser = (question: string): Promise<string> => {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim().toLowerCase());\n });\n });\n};\n\nexport const initializeProject = async (): Promise<void> => {\n console.log(chalk.blue(\"Initializing LangWatch prompts project...\"));\n\n // Initialize prompts.json\n const configResult = FileManager.initializePromptsConfig();\n if (configResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts.json\")}`));\n\n // Ask about .gitignore\n const shouldAddGitignore = await promptUser(\n chalk.yellow(\"Add 'prompts/.materialized' to .gitignore? [Y/n]: \"),\n );\n\n if (\n shouldAddGitignore === \"\" ||\n shouldAddGitignore === \"y\" ||\n shouldAddGitignore === \"yes\"\n ) {\n const gitignoreResult = FileManager.addToGitignore(\n \"prompts/.materialized\",\n );\n if (gitignoreResult.added) {\n if (gitignoreResult.existed) {\n console.log(\n chalk.green(\n `✓ Added ${chalk.gray(\n \"prompts/.materialized\",\n )} to existing .gitignore`,\n ),\n );\n } else {\n console.log(\n chalk.green(\n `✓ Created .gitignore with ${chalk.gray(\n \"prompts/.materialized\",\n )}`,\n ),\n );\n }\n } else {\n console.log(\n chalk.gray(\n `• ${chalk.gray(\"prompts/.materialized\")} already in .gitignore`,\n ),\n );\n }\n }\n } else {\n console.log(chalk.gray(`• prompts.json already exists`));\n }\n\n // Initialize lock file\n const lockResult = FileManager.initializePromptsLock();\n if (lockResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts-lock.json\")}`));\n } else {\n console.log(chalk.gray(`• prompts-lock.json already exists`));\n }\n\n // Ensure directories exist\n FileManager.ensureDirectories();\n console.log(\n chalk.green(`✓ Created ${chalk.gray(\"./prompts/\")} directory structure`),\n );\n\n console.log(\n chalk.green(\"\\n✨ Project initialized! You can now add prompts with:\"),\n );\n console.log(chalk.gray(\" langwatch prompt add <name>\"));\n};\n\nexport const ensureProjectInitialized = async (\n shouldPromptForGitignore = true,\n): Promise<{ configCreated: boolean; lockCreated: boolean }> => {\n // Initialize prompts.json\n const configResult = FileManager.initializePromptsConfig();\n let askedAboutGitignore = false;\n\n if (configResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts.json\")}`));\n\n // Ask about .gitignore only if we should prompt and haven't asked yet\n if (shouldPromptForGitignore && !askedAboutGitignore) {\n askedAboutGitignore = true;\n const shouldAddGitignore = await promptUser(\n chalk.yellow(\"Add 'prompts/.materialized' to .gitignore? [Y/n]: \"),\n );\n\n if (\n shouldAddGitignore === \"\" ||\n shouldAddGitignore === \"y\" ||\n shouldAddGitignore === \"yes\"\n ) {\n const gitignoreResult = FileManager.addToGitignore(\n \"prompts/.materialized\",\n );\n if (gitignoreResult.added) {\n if (gitignoreResult.existed) {\n console.log(\n chalk.green(\n `✓ Added ${chalk.gray(\n \"prompts/.materialized\",\n )} to existing .gitignore`,\n ),\n );\n } else {\n console.log(\n chalk.green(\n `✓ Created .gitignore with ${chalk.gray(\n \"prompts/.materialized\",\n )}`,\n ),\n );\n }\n } else {\n console.log(\n chalk.gray(\n `• ${chalk.gray(\"prompts/.materialized\")} already in .gitignore`,\n ),\n );\n }\n }\n }\n }\n\n // Initialize lock file\n const lockResult = FileManager.initializePromptsLock();\n if (lockResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts-lock.json\")}`));\n }\n\n // Ensure directories exist\n FileManager.ensureDirectories();\n\n return {\n configCreated: configResult.created,\n lockCreated: lockResult.created,\n };\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/observability-sdk/exporters/langwatch-trace-exporter.ts","../src/observability-sdk/exporters/langwatch-logs-exporter.ts","../src/observability-sdk/semconv/events.ts","../src/observability-sdk/logger/index.ts","../src/observability-sdk/logger/implementation.ts"],"sourcesContent":["import { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport {\n DEFAULT_ENDPOINT,\n LANGWATCH_SDK_LANGUAGE,\n LANGWATCH_SDK_NAME_OBSERVABILITY,\n LANGWATCH_SDK_RUNTIME,\n LANGWATCH_SDK_VERSION,\n TRACES_PATH,\n} from \"../../internal/constants\";\n\nexport interface LangWatchTraceExporterOptions {\n endpoint?: string;\n apiKey?: string;\n includeAllSpans?: boolean;\n debug?: boolean;\n}\n\n/**\n * LangWatchTraceExporter extends the OpenTelemetry OTLP HTTP trace exporter\n * to send trace data to LangWatch with proper authentication and metadata headers.\n *\n * This exporter automatically configures:\n * - Authorization headers using the provided API key or environment variables/fallback\n * - SDK version and language identification headers\n * - Proper endpoint configuration for LangWatch ingestion using provided URL or environment variables/fallback\n *\n * @example\n * ```typescript\n * import { LangWatchTraceExporter } from '@langwatch/observability';\n *\n * // Using environment variables/fallback configuration\n * const exporter = new LangWatchTraceExporter();\n *\n * // Using custom options\n * const exporter = new LangWatchTraceExporter({\n * apiKey: 'your-api-key',\n * endpoint: 'https://custom.langwatch.com'\n * });\n * ```\n */\nexport class LangWatchTraceExporter extends OTLPTraceExporter {\n /**\n * Creates a new LangWatchExporter instance.\n *\n * @param opts - Optional configuration options for the exporter\n * @param opts.apiKey - Optional API key for LangWatch authentication. If not provided,\n * will use environment variables or fallback configuration.\n * @param opts.endpoint - Optional custom endpoint URL for LangWatch ingestion.\n * If not provided, will use environment variables or fallback configuration.\n * @param opts.includeAllSpans - Deprecated: This option is deprecated and will be removed in a future version\n * @param opts.debug - Deprecated: This option is deprecated and will be removed in a future version\n */\n constructor(opts?: LangWatchTraceExporterOptions) {\n const apiKey = opts?.apiKey ?? process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint =\n opts?.endpoint ??\n process.env.LANGWATCH_ENDPOINT ??\n DEFAULT_ENDPOINT;\n\n if (opts && opts.includeAllSpans !== void 0) {\n console.warn(\n \"[LangWatchExporter] The behavior of `includeAllSpans` is deprecated and will be removed in a future version\",\n );\n }\n if (opts && opts.debug !== void 0) {\n console.warn(\n \"[LangWatchExporter] The behavior of `debug` is deprecated and will be removed in a future version\",\n );\n }\n\n const url = new URL(TRACES_PATH, endpoint);\n const otelEndpoint = url.toString();\n\n super({\n headers: {\n \"x-langwatch-sdk-name\": LANGWATCH_SDK_NAME_OBSERVABILITY,\n \"x-langwatch-sdk-language\": LANGWATCH_SDK_LANGUAGE,\n \"x-langwatch-sdk-version\": LANGWATCH_SDK_VERSION,\n \"x-langwatch-sdk-runtime\": LANGWATCH_SDK_RUNTIME(),\n ...(apiKey ? { authorization: `Bearer ${apiKey}` } : {}),\n },\n url: otelEndpoint.toString(),\n });\n }\n}\n","import { OTLPLogExporter } from \"@opentelemetry/exporter-logs-otlp-http\";\nimport {\n DEFAULT_ENDPOINT,\n LANGWATCH_SDK_LANGUAGE,\n LANGWATCH_SDK_NAME_OBSERVABILITY,\n LANGWATCH_SDK_RUNTIME,\n LANGWATCH_SDK_VERSION,\n LOGS_PATH,\n} from \"../../internal/constants\";\n\nexport interface LangWatchLogsExporterOptions {\n endpoint?: string;\n apiKey?: string;\n}\n\n/**\n * LangWatchLogsExporter extends the OpenTelemetry OTLP HTTP logs exporter\n * to send logs to LangWatch with proper authentication and metadata headers.\n *\n * This exporter automatically configures:\n * - Authorization headers using the provided API key or environment variables/fallback\n * - SDK version and language identification headers\n * - Proper endpoint configuration for LangWatch ingestion using provided URL or environment variables/fallback\n *\n * @example\n * ```typescript\n * import { LangWatchLogsExporter } from '@langwatch/observability';\n *\n * // Using environment variables/fallback configuration\n * const exporter = new LangWatchLogsExporter();\n *\n * // Using custom options\n * const exporter = new LangWatchLogsExporter({\n * apiKey: 'your-api-key',\n * endpoint: 'https://custom.langwatch.com'\n * });\n * ```\n */\nexport class LangWatchLogsExporter extends OTLPLogExporter {\n /**\n * Creates a new LangWatchLogsExporter instance.\n *\n * @param opts - Optional configuration options for the exporter.\n * @param opts.apiKey - Optional API key for LangWatch authentication. If not provided,\n * will use environment variables or fallback configuration.\n * @param opts.endpoint - Optional custom endpoint URL for LangWatch ingestion.\n * If not provided, will use environment variables or fallback configuration.\n */\n constructor(opts?: LangWatchLogsExporterOptions) {\n const apiKey = opts?.apiKey ?? process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint =\n opts?.endpoint ??\n process.env.LANGWATCH_ENDPOINT ??\n DEFAULT_ENDPOINT;\n\n const url = new URL(LOGS_PATH, endpoint);\n const otelEndpoint = url.toString();\n\n super({\n headers: {\n \"x-langwatch-sdk-name\": LANGWATCH_SDK_NAME_OBSERVABILITY,\n \"x-langwatch-sdk-language\": LANGWATCH_SDK_LANGUAGE,\n \"x-langwatch-sdk-version\": LANGWATCH_SDK_VERSION,\n \"x-langwatch-sdk-runtime\": LANGWATCH_SDK_RUNTIME(),\n ...(apiKey ? { authorization: `Bearer ${apiKey}` } : {}),\n },\n url: otelEndpoint.toString(),\n });\n }\n}\n","/*\n This file contains the values for the OpenTelemetry semantic conventions for GenAI log\n record event names.\n\n 👉 https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-events/\n*/\n\n/**\n * GenAI system message event name\n * Used for log records representing system messages in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_SYSTEM_MESSAGE = \"gen.ai.system_message\";\n\n/**\n * GenAI user message event name\n * Used for log records representing user messages in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_USER_MESSAGE = \"gen.ai.user_message\";\n\n/**\n * GenAI assistant message event name\n * Used for log records representing assistant responses in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_ASSISTANT_MESSAGE = \"gen.ai.assistant_message\";\n\n/**\n * GenAI tool message event name\n * Used for log records representing tool calls or responses in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_TOOL_MESSAGE = \"gen.ai.tool_message\";\n\n/**\n * GenAI choice event name\n * Used for log records representing choices made by AI models\n */\nexport const LOG_EVNT_GEN_AI_CHOICE = \"gen.ai.choice\";\n\n/**\n * LangWatch LangChain callback event name\n * Used for log records representing LangChain callback events\n */\nexport const EVNT_LANGWATCH_LANGCHAIN_CALLBACK = \"langwatch.langchain.callback\";\n","import {\n type Logger,\n type LoggerProvider,\n NoopLoggerProvider,\n} from \"@opentelemetry/api-logs\";\nimport {\n type LangWatchLogger,\n} from \"./types\";\nimport { LangWatchLoggerInternal } from \"./implementation\";\n\n/**\n * The LangWatch-specific global logger provider. It may not be the same as the current\n * OpenTelemetry global logger provider, but it's the last one the `setupObservability`\n * knows about.\n * @internal\n */\nlet currentLoggerProvider: LoggerProvider = new NoopLoggerProvider();\n\n/**\n * @module observability/logger\n * @description\n * Provides LangWatch logger integration with OpenTelemetry, including logger provider\n * management and logger creation utilities.\n *\n * @remarks\n * This module allows you to set a global logger provider, retrieve LangWatch loggers,\n * and wrap OpenTelemetry loggers with LangWatch-specific functionality.\n *\n * @see {@link setLangWatchLoggerProvider}\n * @see {@link getLangWatchLogger}\n * @see {@link getLangWatchLoggerFromProvider}\n * @see {@link createLangWatchLogger}\n */\nexport function setLangWatchLoggerProvider(\n loggerProvider: LoggerProvider,\n): void {\n currentLoggerProvider = loggerProvider;\n}\n\n/**\n * Retrieves a LangWatch logger with the specified name and optional version.\n *\n * @param name - The name of the logger (typically your service or module name).\n * @param version - (Optional) The version of the logger.\n * @returns A {@link LangWatchLogger} instance.\n *\n * @remarks\n * Uses the logger provider set during observability setup. If no provider is set, returns\n * a NoOp logger.\n *\n * @example\n * ```ts\n * const logger = getLangWatchLogger(\"my-service\");\n * logger.info(\"Service started\");\n * ```\n *\n * @see {@link setLangWatchLoggerProvider}\n */\nexport function getLangWatchLogger(\n name: string,\n version?: string,\n): LangWatchLogger {\n return getLangWatchLoggerFromProvider(currentLoggerProvider, name, version);\n}\n\n/**\n * Retrieves a LangWatch logger from a specific OpenTelemetry logger provider.\n *\n * @param loggerProvider - The OpenTelemetry logger provider to use.\n * @param name - The name of the logger.\n * @param version - (Optional) The version of the logger.\n * @returns A {@link LangWatchLogger} instance.\n *\n * @remarks\n * Use this function if you want to use a custom logger provider instead of the global one.\n *\n * @example\n * ```ts\n * const customProvider = new LoggerProvider();\n * const logger = getLangWatchLoggerFromProvider(customProvider, \"custom-service\");\n * ```\n */\nexport function getLangWatchLoggerFromProvider(\n loggerProvider: LoggerProvider,\n name: string,\n version?: string,\n): LangWatchLogger {\n return createLangWatchLogger(loggerProvider.getLogger(name, version));\n}\n\n/**\n * Wraps an OpenTelemetry logger as a LangWatch logger.\n *\n * @param logger - The OpenTelemetry logger to wrap.\n * @returns A {@link LangWatchLogger} instance.\n *\n * @example\n * ```ts\n * import { Logger } from \"@opentelemetry/api-logs\";\n * const otelLogger = new Logger();\n * const lwLogger = createLangWatchLogger(otelLogger);\n * lwLogger.info(\"Wrapped logger\");\n * ```\n */\nexport function createLangWatchLogger(logger: Logger): LangWatchLogger {\n return new LangWatchLoggerInternal(logger);\n}\n\n// Export types and implementation\nexport * from \"./types\";\nexport * from \"./implementation\";\n","import {\n type AnyValue,\n type Logger,\n} from \"@opentelemetry/api-logs\";\nimport {\n type EmitOptions,\n type LangWatchLogger,\n type LangWatchLogRecord,\n type LangWatchSpanGenAIAssistantMessageEventBody,\n type LangWatchSpanGenAIChoiceEventBody,\n type LangWatchSpanGenAISystemMessageEventBody,\n type LangWatchSpanGenAIToolMessageEventBody,\n type LangWatchSpanGenAIUserMessageEventBody,\n} from \"./types\";\nimport { shouldCaptureOutput } from \"../config\";\nimport * as intSemconv from \"../semconv\";\nimport { type SemConvLogRecordAttributes } from \"../semconv\";\nimport { context } from \"@opentelemetry/api\";\n\n/**\n * Internal implementation of {@link LangWatchLogger}.\n *\n * @remarks\n * This class wraps an OpenTelemetry logger and adds LangWatch-specific functionality for\n * structured logging and event emission.\n * Not intended for direct use; use {@link getLangWatchLogger} or\n * {@link createLangWatchLogger} instead.\n */\nexport class LangWatchLoggerInternal implements LangWatchLogger {\n constructor(private logger: Logger) {}\n\n emit(logRecord: LangWatchLogRecord, options?: EmitOptions): void {\n // Handle output capture configuration\n if (!shouldCaptureOutput()) {\n logRecord.body = void 0;\n }\n\n // Set context if not provided and not explicitly excluded\n if (!logRecord.context && !options?.excludeContext) {\n logRecord.context = context.active();\n }\n\n // Emit the log record through the underlying OpenTelemetry logger\n this.logger.emit(logRecord);\n }\n\n emitGenAISystemMessageEvent(\n body: LangWatchSpanGenAISystemMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ): void {\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_SYSTEM_MESSAGE,\n { ...body, role: body.role ?? \"system\" } satisfies LangWatchSpanGenAISystemMessageEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIUserMessageEvent(\n body: LangWatchSpanGenAIUserMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_USER_MESSAGE,\n { ...body, role: body.role ?? \"user\" } satisfies LangWatchSpanGenAIUserMessageEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIAssistantMessageEvent(\n body: LangWatchSpanGenAIAssistantMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_ASSISTANT_MESSAGE,\n { ...body, role: body.role ?? \"assistant\" } satisfies LangWatchSpanGenAIAssistantMessageEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIToolMessageEvent(\n body: LangWatchSpanGenAIToolMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n if (body.role === void 0) {\n body.role = \"tool\";\n }\n\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_TOOL_MESSAGE,\n { ...body },\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIChoiceEvent(\n body: LangWatchSpanGenAIChoiceEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n if (body.message && body.message.role === void 0) {\n body.message.role = \"assistant\";\n }\n\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_CHOICE,\n {\n ...body,\n message: { ...body.message, role: body.message?.role ?? \"assistant\" },\n } satisfies LangWatchSpanGenAIChoiceEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n private emitGenAIEvent(\n eventName: string,\n body: AnyValue,\n attributes?: SemConvLogRecordAttributes,\n ): void {\n this.emit({\n eventName,\n context: context.active(),\n attributes: { ...attributes },\n body: shouldCaptureOutput() ? body : void 0,\n observedTimestamp: new Date().getTime(),\n });\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/utils/init.ts"],"sourcesContent":["import * as readline from \"readline\";\nimport chalk from \"chalk\";\nimport { FileManager } from \"./fileManager\";\n\nconst promptUser = (question: string): Promise<string> => {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim().toLowerCase());\n });\n });\n};\n\nexport const initializeProject = async (): Promise<void> => {\n console.log(chalk.blue(\"Initializing LangWatch prompts project...\"));\n\n // Initialize prompts.json\n const configResult = FileManager.initializePromptsConfig();\n if (configResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts.json\")}`));\n\n // Ask about .gitignore\n const shouldAddGitignore = await promptUser(\n chalk.yellow(\"Add 'prompts/.materialized' to .gitignore? [Y/n]: \"),\n );\n\n if (\n shouldAddGitignore === \"\" ||\n shouldAddGitignore === \"y\" ||\n shouldAddGitignore === \"yes\"\n ) {\n const gitignoreResult = FileManager.addToGitignore(\n \"prompts/.materialized\",\n );\n if (gitignoreResult.added) {\n if (gitignoreResult.existed) {\n console.log(\n chalk.green(\n `✓ Added ${chalk.gray(\n \"prompts/.materialized\",\n )} to existing .gitignore`,\n ),\n );\n } else {\n console.log(\n chalk.green(\n `✓ Created .gitignore with ${chalk.gray(\n \"prompts/.materialized\",\n )}`,\n ),\n );\n }\n } else {\n console.log(\n chalk.gray(\n `• ${chalk.gray(\"prompts/.materialized\")} already in .gitignore`,\n ),\n );\n }\n }\n } else {\n console.log(chalk.gray(`• prompts.json already exists`));\n }\n\n // Initialize lock file\n const lockResult = FileManager.initializePromptsLock();\n if (lockResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts-lock.json\")}`));\n } else {\n console.log(chalk.gray(`• prompts-lock.json already exists`));\n }\n\n // Ensure directories exist\n FileManager.ensureDirectories();\n console.log(\n chalk.green(`✓ Created ${chalk.gray(\"./prompts/\")} directory structure`),\n );\n\n console.log(\n chalk.green(\"\\n✨ Project initialized! You can now add prompts with:\"),\n );\n console.log(chalk.gray(\" langwatch prompt add <name>\"));\n};\n\nexport const ensureProjectInitialized = async (\n shouldPromptForGitignore = true,\n): Promise<{ configCreated: boolean; lockCreated: boolean }> => {\n // Initialize prompts.json\n const configResult = FileManager.initializePromptsConfig();\n let askedAboutGitignore = false;\n\n if (configResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts.json\")}`));\n\n // Ask about .gitignore only if we should prompt and haven't asked yet\n if (shouldPromptForGitignore && !askedAboutGitignore) {\n askedAboutGitignore = true;\n const shouldAddGitignore = await promptUser(\n chalk.yellow(\"Add 'prompts/.materialized' to .gitignore? [Y/n]: \"),\n );\n\n if (\n shouldAddGitignore === \"\" ||\n shouldAddGitignore === \"y\" ||\n shouldAddGitignore === \"yes\"\n ) {\n const gitignoreResult = FileManager.addToGitignore(\n \"prompts/.materialized\",\n );\n if (gitignoreResult.added) {\n if (gitignoreResult.existed) {\n console.log(\n chalk.green(\n `✓ Added ${chalk.gray(\n \"prompts/.materialized\",\n )} to existing .gitignore`,\n ),\n );\n } else {\n console.log(\n chalk.green(\n `✓ Created .gitignore with ${chalk.gray(\n \"prompts/.materialized\",\n )}`,\n ),\n );\n }\n } else {\n console.log(\n chalk.gray(\n `• ${chalk.gray(\"prompts/.materialized\")} already in .gitignore`,\n ),\n );\n }\n }\n }\n }\n\n // Initialize lock file\n const lockResult = FileManager.initializePromptsLock();\n if (lockResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts-lock.json\")}`));\n }\n\n // Ensure directories exist\n FileManager.ensureDirectories();\n\n return {\n configCreated: configResult.created,\n lockCreated: lockResult.created,\n };\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-MZ2O5ZJL.js","../src/observability-sdk/exporters/langwatch-trace-exporter.ts","../src/observability-sdk/exporters/langwatch-logs-exporter.ts","../src/observability-sdk/semconv/events.ts","../src/observability-sdk/logger/index.ts","../src/observability-sdk/logger/implementation.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-MZ2O5ZJL.js","sourcesContent":[null,"import { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport {\n DEFAULT_ENDPOINT,\n LANGWATCH_SDK_LANGUAGE,\n LANGWATCH_SDK_NAME_OBSERVABILITY,\n LANGWATCH_SDK_RUNTIME,\n LANGWATCH_SDK_VERSION,\n TRACES_PATH,\n} from \"../../internal/constants\";\n\nexport interface LangWatchTraceExporterOptions {\n endpoint?: string;\n apiKey?: string;\n includeAllSpans?: boolean;\n debug?: boolean;\n}\n\n/**\n * LangWatchTraceExporter extends the OpenTelemetry OTLP HTTP trace exporter\n * to send trace data to LangWatch with proper authentication and metadata headers.\n *\n * This exporter automatically configures:\n * - Authorization headers using the provided API key or environment variables/fallback\n * - SDK version and language identification headers\n * - Proper endpoint configuration for LangWatch ingestion using provided URL or environment variables/fallback\n *\n * @example\n * ```typescript\n * import { LangWatchTraceExporter } from '@langwatch/observability';\n *\n * // Using environment variables/fallback configuration\n * const exporter = new LangWatchTraceExporter();\n *\n * // Using custom options\n * const exporter = new LangWatchTraceExporter({\n * apiKey: 'your-api-key',\n * endpoint: 'https://custom.langwatch.com'\n * });\n * ```\n */\nexport class LangWatchTraceExporter extends OTLPTraceExporter {\n /**\n * Creates a new LangWatchExporter instance.\n *\n * @param opts - Optional configuration options for the exporter\n * @param opts.apiKey - Optional API key for LangWatch authentication. If not provided,\n * will use environment variables or fallback configuration.\n * @param opts.endpoint - Optional custom endpoint URL for LangWatch ingestion.\n * If not provided, will use environment variables or fallback configuration.\n * @param opts.includeAllSpans - Deprecated: This option is deprecated and will be removed in a future version\n * @param opts.debug - Deprecated: This option is deprecated and will be removed in a future version\n */\n constructor(opts?: LangWatchTraceExporterOptions) {\n const apiKey = opts?.apiKey ?? process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint =\n opts?.endpoint ??\n process.env.LANGWATCH_ENDPOINT ??\n DEFAULT_ENDPOINT;\n\n if (opts && opts.includeAllSpans !== void 0) {\n console.warn(\n \"[LangWatchExporter] The behavior of `includeAllSpans` is deprecated and will be removed in a future version\",\n );\n }\n if (opts && opts.debug !== void 0) {\n console.warn(\n \"[LangWatchExporter] The behavior of `debug` is deprecated and will be removed in a future version\",\n );\n }\n\n const url = new URL(TRACES_PATH, endpoint);\n const otelEndpoint = url.toString();\n\n super({\n headers: {\n \"x-langwatch-sdk-name\": LANGWATCH_SDK_NAME_OBSERVABILITY,\n \"x-langwatch-sdk-language\": LANGWATCH_SDK_LANGUAGE,\n \"x-langwatch-sdk-version\": LANGWATCH_SDK_VERSION,\n \"x-langwatch-sdk-runtime\": LANGWATCH_SDK_RUNTIME(),\n ...(apiKey ? { authorization: `Bearer ${apiKey}` } : {}),\n },\n url: otelEndpoint.toString(),\n });\n }\n}\n","import { OTLPLogExporter } from \"@opentelemetry/exporter-logs-otlp-http\";\nimport {\n DEFAULT_ENDPOINT,\n LANGWATCH_SDK_LANGUAGE,\n LANGWATCH_SDK_NAME_OBSERVABILITY,\n LANGWATCH_SDK_RUNTIME,\n LANGWATCH_SDK_VERSION,\n LOGS_PATH,\n} from \"../../internal/constants\";\n\nexport interface LangWatchLogsExporterOptions {\n endpoint?: string;\n apiKey?: string;\n}\n\n/**\n * LangWatchLogsExporter extends the OpenTelemetry OTLP HTTP logs exporter\n * to send logs to LangWatch with proper authentication and metadata headers.\n *\n * This exporter automatically configures:\n * - Authorization headers using the provided API key or environment variables/fallback\n * - SDK version and language identification headers\n * - Proper endpoint configuration for LangWatch ingestion using provided URL or environment variables/fallback\n *\n * @example\n * ```typescript\n * import { LangWatchLogsExporter } from '@langwatch/observability';\n *\n * // Using environment variables/fallback configuration\n * const exporter = new LangWatchLogsExporter();\n *\n * // Using custom options\n * const exporter = new LangWatchLogsExporter({\n * apiKey: 'your-api-key',\n * endpoint: 'https://custom.langwatch.com'\n * });\n * ```\n */\nexport class LangWatchLogsExporter extends OTLPLogExporter {\n /**\n * Creates a new LangWatchLogsExporter instance.\n *\n * @param opts - Optional configuration options for the exporter.\n * @param opts.apiKey - Optional API key for LangWatch authentication. If not provided,\n * will use environment variables or fallback configuration.\n * @param opts.endpoint - Optional custom endpoint URL for LangWatch ingestion.\n * If not provided, will use environment variables or fallback configuration.\n */\n constructor(opts?: LangWatchLogsExporterOptions) {\n const apiKey = opts?.apiKey ?? process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint =\n opts?.endpoint ??\n process.env.LANGWATCH_ENDPOINT ??\n DEFAULT_ENDPOINT;\n\n const url = new URL(LOGS_PATH, endpoint);\n const otelEndpoint = url.toString();\n\n super({\n headers: {\n \"x-langwatch-sdk-name\": LANGWATCH_SDK_NAME_OBSERVABILITY,\n \"x-langwatch-sdk-language\": LANGWATCH_SDK_LANGUAGE,\n \"x-langwatch-sdk-version\": LANGWATCH_SDK_VERSION,\n \"x-langwatch-sdk-runtime\": LANGWATCH_SDK_RUNTIME(),\n ...(apiKey ? { authorization: `Bearer ${apiKey}` } : {}),\n },\n url: otelEndpoint.toString(),\n });\n }\n}\n","/*\n This file contains the values for the OpenTelemetry semantic conventions for GenAI log\n record event names.\n\n 👉 https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-events/\n*/\n\n/**\n * GenAI system message event name\n * Used for log records representing system messages in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_SYSTEM_MESSAGE = \"gen.ai.system_message\";\n\n/**\n * GenAI user message event name\n * Used for log records representing user messages in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_USER_MESSAGE = \"gen.ai.user_message\";\n\n/**\n * GenAI assistant message event name\n * Used for log records representing assistant responses in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_ASSISTANT_MESSAGE = \"gen.ai.assistant_message\";\n\n/**\n * GenAI tool message event name\n * Used for log records representing tool calls or responses in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_TOOL_MESSAGE = \"gen.ai.tool_message\";\n\n/**\n * GenAI choice event name\n * Used for log records representing choices made by AI models\n */\nexport const LOG_EVNT_GEN_AI_CHOICE = \"gen.ai.choice\";\n\n/**\n * LangWatch LangChain callback event name\n * Used for log records representing LangChain callback events\n */\nexport const EVNT_LANGWATCH_LANGCHAIN_CALLBACK = \"langwatch.langchain.callback\";\n","import {\n type Logger,\n type LoggerProvider,\n NoopLoggerProvider,\n} from \"@opentelemetry/api-logs\";\nimport {\n type LangWatchLogger,\n} from \"./types\";\nimport { LangWatchLoggerInternal } from \"./implementation\";\n\n/**\n * The LangWatch-specific global logger provider. It may not be the same as the current\n * OpenTelemetry global logger provider, but it's the last one the `setupObservability`\n * knows about.\n * @internal\n */\nlet currentLoggerProvider: LoggerProvider = new NoopLoggerProvider();\n\n/**\n * @module observability/logger\n * @description\n * Provides LangWatch logger integration with OpenTelemetry, including logger provider\n * management and logger creation utilities.\n *\n * @remarks\n * This module allows you to set a global logger provider, retrieve LangWatch loggers,\n * and wrap OpenTelemetry loggers with LangWatch-specific functionality.\n *\n * @see {@link setLangWatchLoggerProvider}\n * @see {@link getLangWatchLogger}\n * @see {@link getLangWatchLoggerFromProvider}\n * @see {@link createLangWatchLogger}\n */\nexport function setLangWatchLoggerProvider(\n loggerProvider: LoggerProvider,\n): void {\n currentLoggerProvider = loggerProvider;\n}\n\n/**\n * Retrieves a LangWatch logger with the specified name and optional version.\n *\n * @param name - The name of the logger (typically your service or module name).\n * @param version - (Optional) The version of the logger.\n * @returns A {@link LangWatchLogger} instance.\n *\n * @remarks\n * Uses the logger provider set during observability setup. If no provider is set, returns\n * a NoOp logger.\n *\n * @example\n * ```ts\n * const logger = getLangWatchLogger(\"my-service\");\n * logger.info(\"Service started\");\n * ```\n *\n * @see {@link setLangWatchLoggerProvider}\n */\nexport function getLangWatchLogger(\n name: string,\n version?: string,\n): LangWatchLogger {\n return getLangWatchLoggerFromProvider(currentLoggerProvider, name, version);\n}\n\n/**\n * Retrieves a LangWatch logger from a specific OpenTelemetry logger provider.\n *\n * @param loggerProvider - The OpenTelemetry logger provider to use.\n * @param name - The name of the logger.\n * @param version - (Optional) The version of the logger.\n * @returns A {@link LangWatchLogger} instance.\n *\n * @remarks\n * Use this function if you want to use a custom logger provider instead of the global one.\n *\n * @example\n * ```ts\n * const customProvider = new LoggerProvider();\n * const logger = getLangWatchLoggerFromProvider(customProvider, \"custom-service\");\n * ```\n */\nexport function getLangWatchLoggerFromProvider(\n loggerProvider: LoggerProvider,\n name: string,\n version?: string,\n): LangWatchLogger {\n return createLangWatchLogger(loggerProvider.getLogger(name, version));\n}\n\n/**\n * Wraps an OpenTelemetry logger as a LangWatch logger.\n *\n * @param logger - The OpenTelemetry logger to wrap.\n * @returns A {@link LangWatchLogger} instance.\n *\n * @example\n * ```ts\n * import { Logger } from \"@opentelemetry/api-logs\";\n * const otelLogger = new Logger();\n * const lwLogger = createLangWatchLogger(otelLogger);\n * lwLogger.info(\"Wrapped logger\");\n * ```\n */\nexport function createLangWatchLogger(logger: Logger): LangWatchLogger {\n return new LangWatchLoggerInternal(logger);\n}\n\n// Export types and implementation\nexport * from \"./types\";\nexport * from \"./implementation\";\n","import {\n type AnyValue,\n type Logger,\n} from \"@opentelemetry/api-logs\";\nimport {\n type EmitOptions,\n type LangWatchLogger,\n type LangWatchLogRecord,\n type LangWatchSpanGenAIAssistantMessageEventBody,\n type LangWatchSpanGenAIChoiceEventBody,\n type LangWatchSpanGenAISystemMessageEventBody,\n type LangWatchSpanGenAIToolMessageEventBody,\n type LangWatchSpanGenAIUserMessageEventBody,\n} from \"./types\";\nimport { shouldCaptureOutput } from \"../config\";\nimport * as intSemconv from \"../semconv\";\nimport { type SemConvLogRecordAttributes } from \"../semconv\";\nimport { context } from \"@opentelemetry/api\";\n\n/**\n * Internal implementation of {@link LangWatchLogger}.\n *\n * @remarks\n * This class wraps an OpenTelemetry logger and adds LangWatch-specific functionality for\n * structured logging and event emission.\n * Not intended for direct use; use {@link getLangWatchLogger} or\n * {@link createLangWatchLogger} instead.\n */\nexport class LangWatchLoggerInternal implements LangWatchLogger {\n constructor(private logger: Logger) {}\n\n emit(logRecord: LangWatchLogRecord, options?: EmitOptions): void {\n // Handle output capture configuration\n if (!shouldCaptureOutput()) {\n logRecord.body = void 0;\n }\n\n // Set context if not provided and not explicitly excluded\n if (!logRecord.context && !options?.excludeContext) {\n logRecord.context = context.active();\n }\n\n // Emit the log record through the underlying OpenTelemetry logger\n this.logger.emit(logRecord);\n }\n\n emitGenAISystemMessageEvent(\n body: LangWatchSpanGenAISystemMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ): void {\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_SYSTEM_MESSAGE,\n { ...body, role: body.role ?? \"system\" } satisfies LangWatchSpanGenAISystemMessageEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIUserMessageEvent(\n body: LangWatchSpanGenAIUserMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_USER_MESSAGE,\n { ...body, role: body.role ?? \"user\" } satisfies LangWatchSpanGenAIUserMessageEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIAssistantMessageEvent(\n body: LangWatchSpanGenAIAssistantMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_ASSISTANT_MESSAGE,\n { ...body, role: body.role ?? \"assistant\" } satisfies LangWatchSpanGenAIAssistantMessageEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIToolMessageEvent(\n body: LangWatchSpanGenAIToolMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n if (body.role === void 0) {\n body.role = \"tool\";\n }\n\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_TOOL_MESSAGE,\n { ...body },\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIChoiceEvent(\n body: LangWatchSpanGenAIChoiceEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n if (body.message && body.message.role === void 0) {\n body.message.role = \"assistant\";\n }\n\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_CHOICE,\n {\n ...body,\n message: { ...body.message, role: body.message?.role ?? \"assistant\" },\n } satisfies LangWatchSpanGenAIChoiceEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n private emitGenAIEvent(\n eventName: string,\n body: AnyValue,\n attributes?: SemConvLogRecordAttributes,\n ): void {\n this.emit({\n eventName,\n context: context.active(),\n attributes: { ...attributes },\n body: shouldCaptureOutput() ? body : void 0,\n observedTimestamp: new Date().getTime(),\n });\n }\n}\n"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|