langwatch 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/{chunk-AP23NJ57.mjs → chunk-OVS4NSDE.mjs} +373 -2
  2. package/dist/chunk-OVS4NSDE.mjs.map +1 -0
  3. package/dist/index.d.mts +44 -2
  4. package/dist/index.d.ts +44 -2
  5. package/dist/index.js +6256 -472
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +325 -351
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/{utils-DDcm0z9v.d.mts → utils-K-jSEpnZ.d.mts} +4 -3
  10. package/dist/{utils-DDcm0z9v.d.ts → utils-K-jSEpnZ.d.ts} +4 -3
  11. package/dist/utils.d.mts +1 -1
  12. package/dist/utils.d.ts +1 -1
  13. package/dist/utils.js +370 -0
  14. package/dist/utils.js.map +1 -1
  15. package/dist/utils.mjs +3 -1
  16. package/example/README.md +3 -1
  17. package/example/app/(chat)/chat/[id]/page.tsx +1 -1
  18. package/example/app/(chat)/page.tsx +10 -5
  19. package/example/app/langchain/page.tsx +27 -0
  20. package/example/app/langchain-rag/page.tsx +28 -0
  21. package/example/app/share/[id]/page.tsx +1 -1
  22. package/example/components/chat-list.tsx +1 -1
  23. package/example/components/chat-panel.tsx +1 -1
  24. package/example/components/header.tsx +35 -13
  25. package/example/components/prompt-form.tsx +1 -1
  26. package/example/components/stocks/stock-purchase.tsx +1 -1
  27. package/example/components/stocks/stocks.tsx +1 -1
  28. package/example/lib/chat/langchain-rag.tsx +191 -0
  29. package/example/lib/chat/langchain.tsx +112 -0
  30. package/example/package-lock.json +285 -3
  31. package/example/package.json +1 -0
  32. package/package.json +11 -2
  33. package/src/index.ts +12 -3
  34. package/src/langchain.ts +557 -0
  35. package/src/types.ts +1 -1
  36. package/src/utils.ts +28 -1
  37. package/dist/chunk-AP23NJ57.mjs.map +0 -1
  38. /package/example/lib/chat/{actions.tsx → vercel-ai.tsx} +0 -0
  39. /package/src/{helpers.ts → typeUtils.ts} +0 -0
@@ -6,6 +6,7 @@
6
6
  "": {
7
7
  "dependencies": {
8
8
  "@ai-sdk/openai": "^0.0.9",
9
+ "@langchain/openai": "^0.1.3",
9
10
  "@radix-ui/react-alert-dialog": "^1.0.5",
10
11
  "@radix-ui/react-dialog": "^1.0.5",
11
12
  "@radix-ui/react-dropdown-menu": "^2.0.6",
@@ -72,6 +73,7 @@
72
73
  "version": "0.1.0",
73
74
  "license": "Apache-2.0",
74
75
  "dependencies": {
76
+ "@langchain/core": "^0.2.7",
75
77
  "ai": "^3.1.23",
76
78
  "llm-cost": "^1.0.4",
77
79
  "nanoid": "^5.0.7",
@@ -505,6 +507,90 @@
505
507
  "@jridgewell/sourcemap-codec": "^1.4.14"
506
508
  }
507
509
  },
510
+ "node_modules/@langchain/core": {
511
+ "version": "0.2.7",
512
+ "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.2.7.tgz",
513
+ "integrity": "sha512-FdFiNWhszFuUyAhYdY+l5DtPnAnWCAjXMnkLmUJ1J54NeUiUm7gy26Hnd4bkvaOQJ8ddHH/EX03ZwdoYfLv1jw==",
514
+ "dependencies": {
515
+ "ansi-styles": "^5.0.0",
516
+ "camelcase": "6",
517
+ "decamelize": "1.2.0",
518
+ "js-tiktoken": "^1.0.12",
519
+ "langsmith": "~0.1.30",
520
+ "ml-distance": "^4.0.0",
521
+ "mustache": "^4.2.0",
522
+ "p-queue": "^6.6.2",
523
+ "p-retry": "4",
524
+ "uuid": "^9.0.0",
525
+ "zod": "^3.22.4",
526
+ "zod-to-json-schema": "^3.22.3"
527
+ },
528
+ "engines": {
529
+ "node": ">=18"
530
+ }
531
+ },
532
+ "node_modules/@langchain/core/node_modules/ansi-styles": {
533
+ "version": "5.2.0",
534
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
535
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
536
+ "engines": {
537
+ "node": ">=10"
538
+ },
539
+ "funding": {
540
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
541
+ }
542
+ },
543
+ "node_modules/@langchain/core/node_modules/commander": {
544
+ "version": "10.0.1",
545
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
546
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
547
+ "engines": {
548
+ "node": ">=14"
549
+ }
550
+ },
551
+ "node_modules/@langchain/core/node_modules/langsmith": {
552
+ "version": "0.1.32",
553
+ "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.1.32.tgz",
554
+ "integrity": "sha512-EUWHIH6fiOCGRYdzgwGoXwJxCMyUrL+bmUcxoVmkXoXoAGDOVinz8bqJLKbxotsQWqM64NKKsW85OTIutgNaMQ==",
555
+ "dependencies": {
556
+ "@types/uuid": "^9.0.1",
557
+ "commander": "^10.0.1",
558
+ "p-queue": "^6.6.2",
559
+ "p-retry": "4",
560
+ "uuid": "^9.0.0"
561
+ },
562
+ "peerDependencies": {
563
+ "@langchain/core": "*",
564
+ "langchain": "*",
565
+ "openai": "*"
566
+ },
567
+ "peerDependenciesMeta": {
568
+ "@langchain/core": {
569
+ "optional": true
570
+ },
571
+ "langchain": {
572
+ "optional": true
573
+ },
574
+ "openai": {
575
+ "optional": true
576
+ }
577
+ }
578
+ },
579
+ "node_modules/@langchain/openai": {
580
+ "version": "0.1.3",
581
+ "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.1.3.tgz",
582
+ "integrity": "sha512-riv/JC9x2A8b7GcHu8sx+mlZJ8KAwSSi231IPTlcciYnKozmrQ5H0vrtiD31fxiDbaRsk7tyCpkSBIOQEo7CyQ==",
583
+ "dependencies": {
584
+ "@langchain/core": ">=0.2.5 <0.3.0",
585
+ "js-tiktoken": "^1.0.12",
586
+ "openai": "^4.49.1",
587
+ "zod": "^3.22.4",
588
+ "zod-to-json-schema": "^3.22.3"
589
+ },
590
+ "engines": {
591
+ "node": ">=18"
592
+ }
593
+ },
508
594
  "node_modules/@next/env": {
509
595
  "version": "14.2.3",
510
596
  "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz",
@@ -1681,11 +1767,21 @@
1681
1767
  "@types/react": "*"
1682
1768
  }
1683
1769
  },
1770
+ "node_modules/@types/retry": {
1771
+ "version": "0.12.0",
1772
+ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
1773
+ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="
1774
+ },
1684
1775
  "node_modules/@types/unist": {
1685
1776
  "version": "2.0.10",
1686
1777
  "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
1687
1778
  "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
1688
1779
  },
1780
+ "node_modules/@types/uuid": {
1781
+ "version": "9.0.8",
1782
+ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
1783
+ "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA=="
1784
+ },
1689
1785
  "node_modules/@typescript-eslint/parser": {
1690
1786
  "version": "6.21.0",
1691
1787
  "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
@@ -2478,6 +2574,11 @@
2478
2574
  "url": "https://github.com/sponsors/sindresorhus"
2479
2575
  }
2480
2576
  },
2577
+ "node_modules/binary-search": {
2578
+ "version": "1.3.6",
2579
+ "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz",
2580
+ "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA=="
2581
+ },
2481
2582
  "node_modules/brace-expansion": {
2482
2583
  "version": "2.0.1",
2483
2584
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
@@ -2570,6 +2671,17 @@
2570
2671
  "node": ">=6"
2571
2672
  }
2572
2673
  },
2674
+ "node_modules/camelcase": {
2675
+ "version": "6.3.0",
2676
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
2677
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
2678
+ "engines": {
2679
+ "node": ">=10"
2680
+ },
2681
+ "funding": {
2682
+ "url": "https://github.com/sponsors/sindresorhus"
2683
+ }
2684
+ },
2573
2685
  "node_modules/camelcase-css": {
2574
2686
  "version": "2.0.1",
2575
2687
  "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
@@ -3032,6 +3144,14 @@
3032
3144
  }
3033
3145
  }
3034
3146
  },
3147
+ "node_modules/decamelize": {
3148
+ "version": "1.2.0",
3149
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
3150
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
3151
+ "engines": {
3152
+ "node": ">=0.10.0"
3153
+ }
3154
+ },
3035
3155
  "node_modules/decode-named-character-reference": {
3036
3156
  "version": "1.0.2",
3037
3157
  "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
@@ -3947,6 +4067,11 @@
3947
4067
  "node": ">=6"
3948
4068
  }
3949
4069
  },
4070
+ "node_modules/eventemitter3": {
4071
+ "version": "4.0.7",
4072
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
4073
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
4074
+ },
3950
4075
  "node_modules/eventsource-parser": {
3951
4076
  "version": "1.1.2",
3952
4077
  "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-1.1.2.tgz",
@@ -4729,6 +4854,11 @@
4729
4854
  "url": "https://github.com/sponsors/wooorm"
4730
4855
  }
4731
4856
  },
4857
+ "node_modules/is-any-array": {
4858
+ "version": "2.0.1",
4859
+ "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.1.tgz",
4860
+ "integrity": "sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ=="
4861
+ },
4732
4862
  "node_modules/is-array-buffer": {
4733
4863
  "version": "3.0.4",
4734
4864
  "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
@@ -5216,6 +5346,33 @@
5216
5346
  "url": "https://github.com/sponsors/panva"
5217
5347
  }
5218
5348
  },
5349
+ "node_modules/js-tiktoken": {
5350
+ "version": "1.0.12",
5351
+ "resolved": "https://registry.npmjs.org/js-tiktoken/-/js-tiktoken-1.0.12.tgz",
5352
+ "integrity": "sha512-L7wURW1fH9Qaext0VzaUDpFGVQgjkdE3Dgsy9/+yXyGEpBKnylTd0mU0bfbNkKDlXRb6TEsZkwuflu1B8uQbJQ==",
5353
+ "dependencies": {
5354
+ "base64-js": "^1.5.1"
5355
+ }
5356
+ },
5357
+ "node_modules/js-tiktoken/node_modules/base64-js": {
5358
+ "version": "1.5.1",
5359
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
5360
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
5361
+ "funding": [
5362
+ {
5363
+ "type": "github",
5364
+ "url": "https://github.com/sponsors/feross"
5365
+ },
5366
+ {
5367
+ "type": "patreon",
5368
+ "url": "https://www.patreon.com/feross"
5369
+ },
5370
+ {
5371
+ "type": "consulting",
5372
+ "url": "https://feross.org/support"
5373
+ }
5374
+ ]
5375
+ },
5219
5376
  "node_modules/js-tokens": {
5220
5377
  "version": "4.0.0",
5221
5378
  "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -6366,6 +6523,46 @@
6366
6523
  "node": ">=16 || 14 >=14.17"
6367
6524
  }
6368
6525
  },
6526
+ "node_modules/ml-array-mean": {
6527
+ "version": "1.1.6",
6528
+ "resolved": "https://registry.npmjs.org/ml-array-mean/-/ml-array-mean-1.1.6.tgz",
6529
+ "integrity": "sha512-MIdf7Zc8HznwIisyiJGRH9tRigg3Yf4FldW8DxKxpCCv/g5CafTw0RRu51nojVEOXuCQC7DRVVu5c7XXO/5joQ==",
6530
+ "dependencies": {
6531
+ "ml-array-sum": "^1.1.6"
6532
+ }
6533
+ },
6534
+ "node_modules/ml-array-sum": {
6535
+ "version": "1.1.6",
6536
+ "resolved": "https://registry.npmjs.org/ml-array-sum/-/ml-array-sum-1.1.6.tgz",
6537
+ "integrity": "sha512-29mAh2GwH7ZmiRnup4UyibQZB9+ZLyMShvt4cH4eTK+cL2oEMIZFnSyB3SS8MlsTh6q/w/yh48KmqLxmovN4Dw==",
6538
+ "dependencies": {
6539
+ "is-any-array": "^2.0.0"
6540
+ }
6541
+ },
6542
+ "node_modules/ml-distance": {
6543
+ "version": "4.0.1",
6544
+ "resolved": "https://registry.npmjs.org/ml-distance/-/ml-distance-4.0.1.tgz",
6545
+ "integrity": "sha512-feZ5ziXs01zhyFUUUeZV5hwc0f5JW0Sh0ckU1koZe/wdVkJdGxcP06KNQuF0WBTj8FttQUzcvQcpcrOp/XrlEw==",
6546
+ "dependencies": {
6547
+ "ml-array-mean": "^1.1.6",
6548
+ "ml-distance-euclidean": "^2.0.0",
6549
+ "ml-tree-similarity": "^1.0.0"
6550
+ }
6551
+ },
6552
+ "node_modules/ml-distance-euclidean": {
6553
+ "version": "2.0.0",
6554
+ "resolved": "https://registry.npmjs.org/ml-distance-euclidean/-/ml-distance-euclidean-2.0.0.tgz",
6555
+ "integrity": "sha512-yC9/2o8QF0A3m/0IXqCTXCzz2pNEzvmcE/9HFKOZGnTjatvBbsn4lWYJkxENkA4Ug2fnYl7PXQxnPi21sgMy/Q=="
6556
+ },
6557
+ "node_modules/ml-tree-similarity": {
6558
+ "version": "1.0.0",
6559
+ "resolved": "https://registry.npmjs.org/ml-tree-similarity/-/ml-tree-similarity-1.0.0.tgz",
6560
+ "integrity": "sha512-XJUyYqjSuUQkNQHMscr6tcjldsOoAekxADTplt40QKfwW6nd++1wHWV9AArl0Zvw/TIHgNaZZNvr8QGvE8wLRg==",
6561
+ "dependencies": {
6562
+ "binary-search": "^1.3.5",
6563
+ "num-sort": "^2.0.0"
6564
+ }
6565
+ },
6369
6566
  "node_modules/mri": {
6370
6567
  "version": "1.2.0",
6371
6568
  "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@@ -6379,6 +6576,14 @@
6379
6576
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
6380
6577
  "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
6381
6578
  },
6579
+ "node_modules/mustache": {
6580
+ "version": "4.2.0",
6581
+ "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
6582
+ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
6583
+ "bin": {
6584
+ "mustache": "bin/mustache"
6585
+ }
6586
+ },
6382
6587
  "node_modules/mz": {
6383
6588
  "version": "2.7.0",
6384
6589
  "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
@@ -6595,6 +6800,17 @@
6595
6800
  "node": ">=0.10.0"
6596
6801
  }
6597
6802
  },
6803
+ "node_modules/num-sort": {
6804
+ "version": "2.1.0",
6805
+ "resolved": "https://registry.npmjs.org/num-sort/-/num-sort-2.1.0.tgz",
6806
+ "integrity": "sha512-1MQz1Ed8z2yckoBeSfkQHHO9K1yDRxxtotKSJ9yvcTUUxSvfvzEq5GwBrjjHEpMlq/k5gvXdmJ1SbYxWtpNoVg==",
6807
+ "engines": {
6808
+ "node": ">=8"
6809
+ },
6810
+ "funding": {
6811
+ "url": "https://github.com/sponsors/sindresorhus"
6812
+ }
6813
+ },
6598
6814
  "node_modules/oauth4webapi": {
6599
6815
  "version": "2.10.4",
6600
6816
  "resolved": "https://registry.npmjs.org/oauth4webapi/-/oauth4webapi-2.10.4.tgz",
@@ -6746,9 +6962,9 @@
6746
6962
  }
6747
6963
  },
6748
6964
  "node_modules/openai": {
6749
- "version": "4.47.3",
6750
- "resolved": "https://registry.npmjs.org/openai/-/openai-4.47.3.tgz",
6751
- "integrity": "sha512-470d4ibH5kizXflCzgur22GpM4nOjrg7WQ9jTOa3dNKEn248oBy4+pjOyfcFR4V4YUn/YlDNjp6h83PbviCCKQ==",
6965
+ "version": "4.51.0",
6966
+ "resolved": "https://registry.npmjs.org/openai/-/openai-4.51.0.tgz",
6967
+ "integrity": "sha512-UKuWc3/qQyklqhHM8CbdXCv0Z0obap6T0ECdcO5oATQxAbKE5Ky3YCXFQY207z+eGG6ez4U9wvAcuMygxhmStg==",
6752
6968
  "dependencies": {
6753
6969
  "@types/node": "^18.11.18",
6754
6970
  "@types/node-fetch": "^2.6.4",
@@ -6788,6 +7004,14 @@
6788
7004
  "node": ">= 0.8.0"
6789
7005
  }
6790
7006
  },
7007
+ "node_modules/p-finally": {
7008
+ "version": "1.0.0",
7009
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
7010
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
7011
+ "engines": {
7012
+ "node": ">=4"
7013
+ }
7014
+ },
6791
7015
  "node_modules/p-limit": {
6792
7016
  "version": "3.1.0",
6793
7017
  "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -6818,6 +7042,44 @@
6818
7042
  "url": "https://github.com/sponsors/sindresorhus"
6819
7043
  }
6820
7044
  },
7045
+ "node_modules/p-queue": {
7046
+ "version": "6.6.2",
7047
+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz",
7048
+ "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==",
7049
+ "dependencies": {
7050
+ "eventemitter3": "^4.0.4",
7051
+ "p-timeout": "^3.2.0"
7052
+ },
7053
+ "engines": {
7054
+ "node": ">=8"
7055
+ },
7056
+ "funding": {
7057
+ "url": "https://github.com/sponsors/sindresorhus"
7058
+ }
7059
+ },
7060
+ "node_modules/p-retry": {
7061
+ "version": "4.6.2",
7062
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
7063
+ "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
7064
+ "dependencies": {
7065
+ "@types/retry": "0.12.0",
7066
+ "retry": "^0.13.1"
7067
+ },
7068
+ "engines": {
7069
+ "node": ">=8"
7070
+ }
7071
+ },
7072
+ "node_modules/p-timeout": {
7073
+ "version": "3.2.0",
7074
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
7075
+ "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
7076
+ "dependencies": {
7077
+ "p-finally": "^1.0.0"
7078
+ },
7079
+ "engines": {
7080
+ "node": ">=8"
7081
+ }
7082
+ },
6821
7083
  "node_modules/pako": {
6822
7084
  "version": "0.2.9",
6823
7085
  "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
@@ -7612,6 +7874,14 @@
7612
7874
  "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
7613
7875
  }
7614
7876
  },
7877
+ "node_modules/retry": {
7878
+ "version": "0.13.1",
7879
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
7880
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
7881
+ "engines": {
7882
+ "node": ">= 4"
7883
+ }
7884
+ },
7615
7885
  "node_modules/reusify": {
7616
7886
  "version": "1.0.4",
7617
7887
  "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -8893,6 +9163,18 @@
8893
9163
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
8894
9164
  "dev": true
8895
9165
  },
9166
+ "node_modules/uuid": {
9167
+ "version": "9.0.1",
9168
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
9169
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
9170
+ "funding": [
9171
+ "https://github.com/sponsors/broofa",
9172
+ "https://github.com/sponsors/ctavan"
9173
+ ],
9174
+ "bin": {
9175
+ "uuid": "dist/bin/uuid"
9176
+ }
9177
+ },
8896
9178
  "node_modules/uvu": {
8897
9179
  "version": "0.5.6",
8898
9180
  "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
@@ -14,6 +14,7 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@ai-sdk/openai": "^0.0.9",
17
+ "@langchain/openai": "^0.1.3",
17
18
  "@radix-ui/react-alert-dialog": "^1.0.5",
18
19
  "@radix-ui/react-dialog": "^1.0.5",
19
20
  "@radix-ui/react-dropdown-menu": "^2.0.6",
package/package.json CHANGED
@@ -1,10 +1,16 @@
1
1
  {
2
2
  "name": "langwatch",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.js"
12
+ }
13
+ },
8
14
  "repository": {
9
15
  "type": "git",
10
16
  "url": "https://github.com/langwatch/langwatch.git",
@@ -13,7 +19,7 @@
13
19
  "scripts": {
14
20
  "prepare": "cp ../langwatch/src/server/tracer/types.ts src/server/types/tracer.ts && ts-to-zod src/server/types/tracer.ts src/server/types/tracer.generated.ts",
15
21
  "test": "vitest",
16
- "build": "npm run prepare && tsup",
22
+ "build": "npm run prepare && tsup && esbuild src/index.ts --bundle --platform=node --outfile=dist/index.js",
17
23
  "prepublish": "npm run build"
18
24
  },
19
25
  "author": "",
@@ -28,6 +34,7 @@
28
34
  "@types/eslint__js": "^8.42.3",
29
35
  "@types/node": "^16.0.0",
30
36
  "dotenv": "^16.4.5",
37
+ "esbuild": "^0.21.5",
31
38
  "eslint": "^8.57.0",
32
39
  "ts-to-zod": "^3.4.1",
33
40
  "tsup": "^8.1.0",
@@ -36,7 +43,9 @@
36
43
  "vitest": "^0.5.0"
37
44
  },
38
45
  "dependencies": {
46
+ "@langchain/core": "^0.2.7",
39
47
  "ai": "^3.1.23",
48
+ "javascript-stringify": "^2.1.0",
40
49
  "llm-cost": "^1.0.4",
41
50
  "nanoid": "^5.0.7",
42
51
  "openai": "^4.47.3",
package/src/index.ts CHANGED
@@ -2,7 +2,7 @@ import EventEmitter from "events";
2
2
  import { nanoid } from "nanoid";
3
3
  import { ZodError } from "zod";
4
4
  import { fromZodError } from "zod-validation-error";
5
- import { camelToSnakeCaseNested, type Strict } from "./helpers";
5
+ import { camelToSnakeCaseNested, type Strict } from "./typeUtils";
6
6
  import {
7
7
  type CollectorRESTParams,
8
8
  type Span as ServerSpan,
@@ -24,7 +24,8 @@ import {
24
24
  type RAGSpan,
25
25
  type SpanInputOutput,
26
26
  } from "./types";
27
- import { captureError, convertFromVercelAIMessages } from "./utils";
27
+ import { autoconvertTypedValues, captureError, convertFromVercelAIMessages } from "./utils";
28
+ import { LangWatchCallbackHandler } from "./langchain";
28
29
 
29
30
  export type {
30
31
  BaseSpan,
@@ -39,7 +40,7 @@ export type {
39
40
  SpanInputOutput,
40
41
  };
41
42
 
42
- export { convertFromVercelAIMessages, captureError };
43
+ export { convertFromVercelAIMessages, captureError, autoconvertTypedValues };
43
44
 
44
45
  export class LangWatch extends EventEmitter {
45
46
  apiKey: string | undefined;
@@ -138,6 +139,7 @@ export class LangWatchTrace {
138
139
  metadata?: Metadata;
139
140
  finishedSpans: Record<string, ServerSpan> = {};
140
141
  timeoutRef?: NodeJS.Timeout;
142
+ langchainCallback?: LangWatchCallbackHandler;
141
143
 
142
144
  constructor({
143
145
  client,
@@ -187,6 +189,13 @@ export class LangWatchTrace {
187
189
  return span;
188
190
  }
189
191
 
192
+ getLangChainCallback() {
193
+ if (!this.langchainCallback) {
194
+ this.langchainCallback = new LangWatchCallbackHandler({ trace: this });
195
+ }
196
+ return this.langchainCallback;
197
+ }
198
+
190
199
  onEnd(span: ServerSpan) {
191
200
  this.finishedSpans[span.span_id] = span;
192
201
  this.delayedSendSpans();