diff --git a/packages/web/package.json b/packages/web/package.json index 0f06c0d58..56bb2d718 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -66,11 +66,14 @@ "@hookform/resolvers": "^3.9.0", "@iconify/react": "^5.1.0", "@iizukak/codemirror-lang-wgsl": "^0.3.0", + "@langfuse/browser": "^5.9.1", + "@langfuse/otel": "^5.9.1", "@modelcontextprotocol/sdk": "^1.29.0", "@openrouter/ai-sdk-provider": "^2.2.3", "@opentelemetry/api-logs": "^0.203.0", "@opentelemetry/instrumentation": "^0.203.0", "@opentelemetry/sdk-logs": "^0.203.0", + "@opentelemetry/sdk-node": "^0.55.0", "@posthog/ai": "^7.18.7", "@radix-ui/react-accordion": "^1.2.11", "@radix-ui/react-alert-dialog": "^1.1.5", @@ -156,8 +159,6 @@ "graphql": "^16.9.0", "http-status-codes": "^2.3.0", "input-otp": "^1.4.2", - "langfuse": "^3.38.4", - "langfuse-vercel": "^3.38.4", "linguist-languages": "^9.3.1", "lucide-react": "^1.7.0", "mermaid": "^11.16.0", diff --git a/packages/web/src/ee/features/chat/components/chatThread/answerCard.tsx b/packages/web/src/ee/features/chat/components/chatThread/answerCard.tsx index 3ed22370e..735273fb4 100644 --- a/packages/web/src/ee/features/chat/components/chatThread/answerCard.tsx +++ b/packages/web/src/ee/features/chat/components/chatThread/answerCard.tsx @@ -15,10 +15,10 @@ import { convertLLMOutputToPortableMarkdown } from "@/features/chat/utils"; import { submitFeedback } from "@/features/chat/actions"; import { isServiceError } from "@/lib/utils"; import useCaptureEvent from "@/hooks/useCaptureEvent"; -import { LangfuseWeb } from "langfuse"; import { env } from "@sourcebot/shared/client"; import isEqual from "fast-deep-equal/react"; import { FileSource } from "@/features/chat/types"; +import { LangfuseBrowserClient } from "@langfuse/browser"; interface AnswerCardProps { answerText: string; @@ -28,7 +28,7 @@ interface AnswerCardProps { sources: FileSource[]; } -const langfuseWeb = env.NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY ? new LangfuseWeb({ +const langfuseBrowser = env.NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY ? new LangfuseBrowserClient({ publicKey: env.NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY, baseUrl: env.NEXT_PUBLIC_LANGFUSE_BASE_URL, }) : null; @@ -90,7 +90,7 @@ const AnswerCardComponent = forwardRef(({ messageId, }); - langfuseWeb?.score({ + langfuseBrowser?.score({ traceId: traceId, name: 'user_feedback', value: feedbackType === 'like' ? 1 : 0, diff --git a/packages/web/src/instrumentation.ts b/packages/web/src/instrumentation.ts index 238495b4f..08b9b2f73 100644 --- a/packages/web/src/instrumentation.ts +++ b/packages/web/src/instrumentation.ts @@ -1,6 +1,7 @@ import * as Sentry from '@sentry/nextjs'; import { registerOTel } from '@vercel/otel'; -import { LangfuseExporter } from 'langfuse-vercel'; +import { LangfuseSpanProcessor } from '@langfuse/otel'; +import { NodeSDK } from '@opentelemetry/sdk-node'; export async function register() { if ( @@ -8,14 +9,18 @@ export async function register() { process.env.NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY ) { console.log("Registering Langfuse"); - registerOTel({ + const sdk = new NodeSDK({ serviceName: 'sourcebot', - traceExporter: new LangfuseExporter({ - secretKey: process.env.LANGFUSE_SECRET_KEY, - publicKey: process.env.NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY, - baseUrl: process.env.NEXT_PUBLIC_LANGFUSE_BASE_URL, - }), + spanProcessors: [ + new LangfuseSpanProcessor({ + secretKey: process.env.LANGFUSE_SECRET_KEY, + publicKey: process.env.NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY, + baseUrl: process.env.NEXT_PUBLIC_LANGFUSE_BASE_URL, + }), + ], }); + sdk.start(); + registerOTel({ serviceName: 'sourcebot' }); } if (process.env.NEXT_RUNTIME === 'nodejs') { diff --git a/yarn.lock b/yarn.lock index 54653dc8d..c8e7a1eb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2426,7 +2426,7 @@ __metadata: languageName: node linkType: hard -"@grpc/grpc-js@npm:^1.12.6, @grpc/grpc-js@npm:^1.14.1": +"@grpc/grpc-js@npm:^1.12.6, @grpc/grpc-js@npm:^1.14.1, @grpc/grpc-js@npm:^1.7.1": version: 1.14.4 resolution: "@grpc/grpc-js@npm:1.14.4" dependencies: @@ -3444,6 +3444,40 @@ __metadata: languageName: node linkType: hard +"@langfuse/browser@npm:^5.9.1": + version: 5.9.1 + resolution: "@langfuse/browser@npm:5.9.1" + dependencies: + "@langfuse/core": "npm:^5.9.1" + peerDependencies: + "@opentelemetry/api": ^1.9.0 + checksum: 10c0/7ad4495e168b3b32326ed83a0916e65d8afb182108b7618df34e3708fc5970578b9dce0a56bdae400b5d5bbe8e1a4ef51a1e104afb1100dea7f45f393d07cf6d + languageName: node + linkType: hard + +"@langfuse/core@npm:^5.9.1": + version: 5.9.1 + resolution: "@langfuse/core@npm:5.9.1" + peerDependencies: + "@opentelemetry/api": ^1.9.0 + checksum: 10c0/972639187c36e50cf3dad2e6ca9a59f9117093cebadc410f6d7c4c9d2344607fd3e7f409df09e5bea108c0b16b38ab8565c4c4185e70583c99b03af13bb73a4a + languageName: node + linkType: hard + +"@langfuse/otel@npm:^5.9.1": + version: 5.9.1 + resolution: "@langfuse/otel@npm:5.9.1" + dependencies: + "@langfuse/core": "npm:^5.9.1" + peerDependencies: + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/core": ^2.0.1 + "@opentelemetry/exporter-trace-otlp-http": ">=0.202.0 <1.0.0" + "@opentelemetry/sdk-trace-base": ^2.0.1 + checksum: 10c0/4a08b5efc1de92a3cb040835495e0d8b5f52a4109ac4af5615ca2b9beb65ee1c88b95cdc0ba299351e91e9735e0f87f275b051f0670f6639e16d2ce4da5a12ae + languageName: node + linkType: hard + "@lezer/common@npm:1.3.0": version: 1.3.0 resolution: "@lezer/common@npm:1.3.0" @@ -4675,6 +4709,15 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/api-logs@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/api-logs@npm:0.55.0" + dependencies: + "@opentelemetry/api": "npm:^1.3.0" + checksum: 10c0/9de1601939df121828ed8c48fa2cd923df9d471ef53ca7345a809ff1a940d3541efb64d2adada123b9a7f7feafb1d2acc59fa70e30dc3c3261a17b351c1309c3 + languageName: node + linkType: hard + "@opentelemetry/api@npm:1.9.0, @opentelemetry/api@npm:^1.3.0, @opentelemetry/api@npm:^1.4.0, @opentelemetry/api@npm:^1.9.0": version: 1.9.0 resolution: "@opentelemetry/api@npm:1.9.0" @@ -4682,6 +4725,15 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/context-async-hooks@npm:1.28.0": + version: 1.28.0 + resolution: "@opentelemetry/context-async-hooks@npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/bfd3b76dce4495d538307fef597c9145949f2b67b9096b1c06c63e14003cdee73fc06fa36bb512eb403f9e625caa4282024ca39367307524e501fcece93611dd + languageName: node + linkType: hard + "@opentelemetry/context-async-hooks@npm:^2.5.1": version: 2.5.1 resolution: "@opentelemetry/context-async-hooks@npm:2.5.1" @@ -4702,6 +4754,36 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/exporter-logs-otlp-grpc@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/exporter-logs-otlp-grpc@npm:0.55.0" + dependencies: + "@grpc/grpc-js": "npm:^1.7.1" + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/otlp-grpc-exporter-base": "npm:0.55.0" + "@opentelemetry/otlp-transformer": "npm:0.55.0" + "@opentelemetry/sdk-logs": "npm:0.55.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/9128ddf91a96fcec9bc916d027089eb09dff9061d7f8a85263182dcdfd139b412567871fe63ab9a84b6fb72eafd44d7fd05919b75f1d97baee4cb9505950f61f + languageName: node + linkType: hard + +"@opentelemetry/exporter-logs-otlp-http@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/exporter-logs-otlp-http@npm:0.55.0" + dependencies: + "@opentelemetry/api-logs": "npm:0.55.0" + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/otlp-exporter-base": "npm:0.55.0" + "@opentelemetry/otlp-transformer": "npm:0.55.0" + "@opentelemetry/sdk-logs": "npm:0.55.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/c451c59b4b502f8d0cb7a034fea16523b9a4f187e05dfc0eb5ea8be81679c3bb8084a2a2e530516db8cc8dbf1e08ae28a8c1fc5ab827a6b85f187b35c24b6c6d + languageName: node + linkType: hard + "@opentelemetry/exporter-logs-otlp-http@npm:^0.208.0": version: 0.208.0 resolution: "@opentelemetry/exporter-logs-otlp-http@npm:0.208.0" @@ -4717,6 +4799,83 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/exporter-logs-otlp-proto@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/exporter-logs-otlp-proto@npm:0.55.0" + dependencies: + "@opentelemetry/api-logs": "npm:0.55.0" + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/otlp-exporter-base": "npm:0.55.0" + "@opentelemetry/otlp-transformer": "npm:0.55.0" + "@opentelemetry/resources": "npm:1.28.0" + "@opentelemetry/sdk-logs": "npm:0.55.0" + "@opentelemetry/sdk-trace-base": "npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/0f6ca147dbefba1b81a80d49b4f1bd7e9c46cac1201bb7e93265339756ae628118d8048ebc00521d8dd5a397eae052059e4181ee9f7a2867ea1780406ccf71d4 + languageName: node + linkType: hard + +"@opentelemetry/exporter-trace-otlp-grpc@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/exporter-trace-otlp-grpc@npm:0.55.0" + dependencies: + "@grpc/grpc-js": "npm:^1.7.1" + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/otlp-grpc-exporter-base": "npm:0.55.0" + "@opentelemetry/otlp-transformer": "npm:0.55.0" + "@opentelemetry/resources": "npm:1.28.0" + "@opentelemetry/sdk-trace-base": "npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/5b6f2821055179ba6b1d9a2fcf6e477890ec7cf9a778e6574ed2cec841df1e27bee5dee0059f91d25ea8200532c22accd063272f9f5f65d6613036480de1ab21 + languageName: node + linkType: hard + +"@opentelemetry/exporter-trace-otlp-http@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/exporter-trace-otlp-http@npm:0.55.0" + dependencies: + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/otlp-exporter-base": "npm:0.55.0" + "@opentelemetry/otlp-transformer": "npm:0.55.0" + "@opentelemetry/resources": "npm:1.28.0" + "@opentelemetry/sdk-trace-base": "npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/3a64cdd70f5b3e0d21705114593b5e8528e6cda4fd8f68243dc02c059db823d2ce6e3c1d9d50a3028c9065a827caaf3aeb4e5eaecafd03875633e18c0a44b730 + languageName: node + linkType: hard + +"@opentelemetry/exporter-trace-otlp-proto@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/exporter-trace-otlp-proto@npm:0.55.0" + dependencies: + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/otlp-exporter-base": "npm:0.55.0" + "@opentelemetry/otlp-transformer": "npm:0.55.0" + "@opentelemetry/resources": "npm:1.28.0" + "@opentelemetry/sdk-trace-base": "npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/d66034bcab3782f056c35e5664fc915d55d776deb105e6eb8c9eab06036d19642608a43477818c5997cdcea245e65fcf9ee066827639a35a9a8d74e772cd9d6f + languageName: node + linkType: hard + +"@opentelemetry/exporter-zipkin@npm:1.28.0": + version: 1.28.0 + resolution: "@opentelemetry/exporter-zipkin@npm:1.28.0" + dependencies: + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/resources": "npm:1.28.0" + "@opentelemetry/sdk-trace-base": "npm:1.28.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 10c0/d4862dfa51a914e029c64a49694425358a907c5444eda8d7bece9e8071c0bba45fcc7f2b5a9fda31bc9bce0a4c6142e47939a859b99b53735148d3234f5396ae + languageName: node + linkType: hard + "@opentelemetry/instrumentation-amqplib@npm:0.58.0": version: 0.58.0 resolution: "@opentelemetry/instrumentation-amqplib@npm:0.58.0" @@ -5009,6 +5168,22 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/instrumentation@npm:0.55.0" + dependencies: + "@opentelemetry/api-logs": "npm:0.55.0" + "@types/shimmer": "npm:^1.2.0" + import-in-the-middle: "npm:^1.8.1" + require-in-the-middle: "npm:^7.1.1" + semver: "npm:^7.5.2" + shimmer: "npm:^1.2.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/c1175c63ecd3940a14176f5db89c48bcb64e9a7a366db70d3560913ccf624f6629fc91eb4ff3b6d5208e36df416bb14b5d87dbce5975c23e174c0191f54d06ab + languageName: node + linkType: hard + "@opentelemetry/instrumentation@npm:^0.203.0": version: 0.203.0 resolution: "@opentelemetry/instrumentation@npm:0.203.0" @@ -5060,6 +5235,32 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/otlp-exporter-base@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/otlp-exporter-base@npm:0.55.0" + dependencies: + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/otlp-transformer": "npm:0.55.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/716a845b7e3f58e37a76adb3838f54da409352e7dd9c44fa5727dc952985ce7e4b9ee96bc52f6a762d2f38c6ca60d36a85afd82cabf55dcd2cc86cb252b4170b + languageName: node + linkType: hard + +"@opentelemetry/otlp-grpc-exporter-base@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/otlp-grpc-exporter-base@npm:0.55.0" + dependencies: + "@grpc/grpc-js": "npm:^1.7.1" + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/otlp-exporter-base": "npm:0.55.0" + "@opentelemetry/otlp-transformer": "npm:0.55.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/cfcde887effe3d757caf1585fb9e6ea18ff87ff6431513e89ff43dcaed2b6497d2ab4ac8c316a123242d5315b30956e8c64ea049e7076607ee687ffe20d55ac6 + languageName: node + linkType: hard + "@opentelemetry/otlp-transformer@npm:0.208.0": version: 0.208.0 resolution: "@opentelemetry/otlp-transformer@npm:0.208.0" @@ -5077,6 +5278,45 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/otlp-transformer@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/otlp-transformer@npm:0.55.0" + dependencies: + "@opentelemetry/api-logs": "npm:0.55.0" + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/resources": "npm:1.28.0" + "@opentelemetry/sdk-logs": "npm:0.55.0" + "@opentelemetry/sdk-metrics": "npm:1.28.0" + "@opentelemetry/sdk-trace-base": "npm:1.28.0" + protobufjs: "npm:^7.3.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/d0a21566f0b39f70475458d2532b3737b55585a91a699da04efab4869219d045e2e022d514ea0b26d0fdfe5c4fb432e8827a21f3128930c6a6936fc284908795 + languageName: node + linkType: hard + +"@opentelemetry/propagator-b3@npm:1.28.0": + version: 1.28.0 + resolution: "@opentelemetry/propagator-b3@npm:1.28.0" + dependencies: + "@opentelemetry/core": "npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/dd0ca51d2b216d8443790a4ba9c922985a627aad00505a15b32e9db48cb2a7934173e1c9bbd85682dc28873f4c4f46803f717850e348e54f1fe01f7de26be8e1 + languageName: node + linkType: hard + +"@opentelemetry/propagator-jaeger@npm:1.28.0": + version: 1.28.0 + resolution: "@opentelemetry/propagator-jaeger@npm:1.28.0" + dependencies: + "@opentelemetry/core": "npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/e6e3d26593041abf86fff9e667720b4cc15fa823359d9b8ae9d9f8e127c43a3298229090321628556fad25e83b39bb799b3bd10e05ed12b4e0119134fd6d90e4 + languageName: node + linkType: hard + "@opentelemetry/redis-common@npm:^0.38.2": version: 0.38.2 resolution: "@opentelemetry/redis-common@npm:0.38.2" @@ -5109,6 +5349,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/sdk-logs@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/sdk-logs@npm:0.55.0" + dependencies: + "@opentelemetry/api-logs": "npm:0.55.0" + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/resources": "npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ">=1.4.0 <1.10.0" + checksum: 10c0/aa272b3f939911550def2d8f225e6e020b864b8fb4474a468f9324ed63ca0adb5afca0ece32264eaff7bd5cb891cd9dae1030671ae3d9d9313d29801d2b6efa7 + languageName: node + linkType: hard + "@opentelemetry/sdk-logs@npm:^0.203.0": version: 0.203.0 resolution: "@opentelemetry/sdk-logs@npm:0.203.0" @@ -5122,6 +5375,18 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/sdk-metrics@npm:1.28.0": + version: 1.28.0 + resolution: "@opentelemetry/sdk-metrics@npm:1.28.0" + dependencies: + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/resources": "npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + checksum: 10c0/deafed540ea5ece764729216eb4019bb5fa3d2759c25c3a0217228bb07324590047520d3f3936a21d1fdfcc10c266f98bdcc22e8620db8d2e443eaa4d5588c11 + languageName: node + linkType: hard + "@opentelemetry/sdk-metrics@npm:2.2.0": version: 2.2.0 resolution: "@opentelemetry/sdk-metrics@npm:2.2.0" @@ -5134,6 +5399,45 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/sdk-node@npm:^0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/sdk-node@npm:0.55.0" + dependencies: + "@opentelemetry/api-logs": "npm:0.55.0" + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/exporter-logs-otlp-grpc": "npm:0.55.0" + "@opentelemetry/exporter-logs-otlp-http": "npm:0.55.0" + "@opentelemetry/exporter-logs-otlp-proto": "npm:0.55.0" + "@opentelemetry/exporter-trace-otlp-grpc": "npm:0.55.0" + "@opentelemetry/exporter-trace-otlp-http": "npm:0.55.0" + "@opentelemetry/exporter-trace-otlp-proto": "npm:0.55.0" + "@opentelemetry/exporter-zipkin": "npm:1.28.0" + "@opentelemetry/instrumentation": "npm:0.55.0" + "@opentelemetry/resources": "npm:1.28.0" + "@opentelemetry/sdk-logs": "npm:0.55.0" + "@opentelemetry/sdk-metrics": "npm:1.28.0" + "@opentelemetry/sdk-trace-base": "npm:1.28.0" + "@opentelemetry/sdk-trace-node": "npm:1.28.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + checksum: 10c0/84e25018e35516d3743844c50eeaa4b1aed68aa32da4bd676ebae86b2c50e8516527daba640d07d55c4c763b9f73be7f2a4c0ce53671005cd313e6cff28c303c + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-base@npm:1.28.0": + version: 1.28.0 + resolution: "@opentelemetry/sdk-trace-base@npm:1.28.0" + dependencies: + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/resources": "npm:1.28.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/0a9ac13dc375ba320323f72dd853133e169473a6bb971d82c8e6403ffb4d25124c6ad2b9ad31e0a2320b7971b83590094030f9716a57d5a3a2ede8c11ae67c5d + languageName: node + linkType: hard + "@opentelemetry/sdk-trace-base@npm:2.2.0": version: 2.2.0 resolution: "@opentelemetry/sdk-trace-base@npm:2.2.0" @@ -5160,6 +5464,29 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/sdk-trace-node@npm:1.28.0": + version: 1.28.0 + resolution: "@opentelemetry/sdk-trace-node@npm:1.28.0" + dependencies: + "@opentelemetry/context-async-hooks": "npm:1.28.0" + "@opentelemetry/core": "npm:1.28.0" + "@opentelemetry/propagator-b3": "npm:1.28.0" + "@opentelemetry/propagator-jaeger": "npm:1.28.0" + "@opentelemetry/sdk-trace-base": "npm:1.28.0" + semver: "npm:^7.5.2" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/ea05da3279cae12526440c2966e2988108ea8cc5102acfc263d2080f711c0cf7e9bb22949e32bb918785dda0521a6096af63480280c2dbbe0556316e641ae066 + languageName: node + linkType: hard + +"@opentelemetry/semantic-conventions@npm:1.27.0": + version: 1.27.0 + resolution: "@opentelemetry/semantic-conventions@npm:1.27.0" + checksum: 10c0/b859773ba06b7e53dd9c6b45a171bf3000e405733adbf462ae91004ed011bc80edb5beecb817fb344a085adfd06045ab5b729c9bd0f1479650ad377134fb798c + languageName: node + linkType: hard + "@opentelemetry/semantic-conventions@npm:^1.24.0, @opentelemetry/semantic-conventions@npm:^1.28.0, @opentelemetry/semantic-conventions@npm:^1.33.0, @opentelemetry/semantic-conventions@npm:^1.33.1, @opentelemetry/semantic-conventions@npm:^1.34.0, @opentelemetry/semantic-conventions@npm:^1.36.0, @opentelemetry/semantic-conventions@npm:^1.37.0, @opentelemetry/semantic-conventions@npm:^1.39.0": version: 1.40.0 resolution: "@opentelemetry/semantic-conventions@npm:1.40.0" @@ -9342,11 +9669,14 @@ __metadata: "@hookform/resolvers": "npm:^3.9.0" "@iconify/react": "npm:^5.1.0" "@iizukak/codemirror-lang-wgsl": "npm:^0.3.0" + "@langfuse/browser": "npm:^5.9.1" + "@langfuse/otel": "npm:^5.9.1" "@modelcontextprotocol/sdk": "npm:^1.29.0" "@openrouter/ai-sdk-provider": "npm:^2.2.3" "@opentelemetry/api-logs": "npm:^0.203.0" "@opentelemetry/instrumentation": "npm:^0.203.0" "@opentelemetry/sdk-logs": "npm:^0.203.0" + "@opentelemetry/sdk-node": "npm:^0.55.0" "@posthog/ai": "npm:^7.18.7" "@radix-ui/react-accordion": "npm:^1.2.11" "@radix-ui/react-alert-dialog": "npm:^1.1.5" @@ -9454,8 +9784,6 @@ __metadata: http-status-codes: "npm:^2.3.0" input-otp: "npm:^1.4.2" jsdom: "npm:^25.0.1" - langfuse: "npm:^3.38.4" - langfuse-vercel: "npm:^3.38.4" linguist-languages: "npm:^9.3.1" lucide-react: "npm:^1.7.0" mermaid: "npm:^11.16.0" @@ -10454,6 +10782,13 @@ __metadata: languageName: node linkType: hard +"@types/shimmer@npm:^1.2.0": + version: 1.2.0 + resolution: "@types/shimmer@npm:1.2.0" + checksum: 10c0/6f7bfe1b55601cfc3ae713fc74a03341f3834253b8b91cb2add926d5949e4a63f7e666f59c2a6e40a883a5f9e2f3e3af10f9d3aed9b60fced0bda87659e58d8d + languageName: node + linkType: hard + "@types/stack-trace@npm:^0.0.33": version: 0.0.33 resolution: "@types/stack-trace@npm:0.0.33" @@ -17102,36 +17437,6 @@ __metadata: languageName: node linkType: hard -"langfuse-core@npm:^3.38.4": - version: 3.38.4 - resolution: "langfuse-core@npm:3.38.4" - dependencies: - mustache: "npm:^4.2.0" - checksum: 10c0/65290416c379d1d628842a372127ad016b360409de07b670a72ff0ff79aa82255166571b532142b871548d562ee326f65e5cfb4e919e58520cdad633ea148bc7 - languageName: node - linkType: hard - -"langfuse-vercel@npm:^3.38.4": - version: 3.38.4 - resolution: "langfuse-vercel@npm:3.38.4" - dependencies: - langfuse: "npm:^3.38.4" - langfuse-core: "npm:^3.38.4" - peerDependencies: - ai: ">=3.2.44" - checksum: 10c0/f1781353e37ccfbf1f452be6fe9aeae548ed735c00e6d2d77c513c36b2dabeda0607bd25635a43f0047e8fa199a726cc1af8fc3f2b88501c956f55cf8d94449b - languageName: node - linkType: hard - -"langfuse@npm:^3.38.4": - version: 3.38.4 - resolution: "langfuse@npm:3.38.4" - dependencies: - langfuse-core: "npm:^3.38.4" - checksum: 10c0/9718701a4c9b0634d6365edb4ad8a06a7334d65b11ec20f209a322f3aaaef859c427ad8adf7ee1e63ffa3c3aaa49edcf8360f29bb95b6ce539ea66a65fde4217 - languageName: node - linkType: hard - "langsmith@npm:>=0.5.0 <1.0.0": version: 0.7.1 resolution: "langsmith@npm:0.7.1" @@ -21593,6 +21898,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.5.2": + version: 7.8.5 + resolution: "semver@npm:7.8.5" + bin: + semver: bin/semver.js + checksum: 10c0/b1f3127a5be8125a94f37188b361c212466c292c6910adce3ec106cff5dc211ccaedc4739c11bb70fda59d6fc1f040a9bca289f4e093451521a2372e5231fe0c + languageName: node + linkType: hard + "semver@npm:^7.7.2, semver@npm:^7.7.3": version: 7.7.3 resolution: "semver@npm:7.7.3" @@ -21968,6 +22282,13 @@ __metadata: languageName: node linkType: hard +"shimmer@npm:^1.2.1": + version: 1.2.1 + resolution: "shimmer@npm:1.2.1" + checksum: 10c0/ae8b27c389db2a00acfc8da90240f11577685a8f3e40008f826a3bea8b4f3b3ecd305c26be024b4a0fd3b123d132c1569d6e238097960a9a543b6c60760fb46a + languageName: node + linkType: hard + "side-channel-list@npm:^1.0.0": version: 1.0.0 resolution: "side-channel-list@npm:1.0.0"