@danieljvdm/dev-kit 1.0.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/package.json +1 -1
- package/skill-sources.jsonc +2 -33
- package/skill-sources.lock.json +15 -117
- package/skills/animate/LICENSE +21 -0
- package/skills/animate/NOTICE +10 -0
- package/skills/animate/SKILL.md +34 -0
- package/skills/animate/references/gestures.md +27 -0
- package/skills/animate/references/glossary.md +136 -0
- package/skills/animate/references/implementation.md +22 -0
- package/skills/animate/references/opportunities.md +18 -0
- package/skills/animate/references/principles.md +48 -0
- package/skills/animate/references/review.md +19 -0
- package/skills/cloudflare-workers/LICENSE +202 -0
- package/skills/cloudflare-workers/NOTICE +9 -0
- package/skills/cloudflare-workers/SKILL.md +26 -0
- package/skills/cloudflare-workers/references/durable-objects.md +68 -0
- package/skills/cloudflare-workers/references/sandbox.md +48 -0
- package/skills/cloudflare-workers/references/workers.md +63 -0
- package/skills/cloudflare-workers/references/wrangler.md +56 -0
- package/skills/design-ui/LICENSE +21 -0
- package/skills/design-ui/NOTICE +8 -0
- package/skills/design-ui/SKILL.md +29 -0
- package/skills/design-ui/references/appearance.md +22 -0
- package/skills/design-ui/references/components.md +33 -0
- package/skills/design-ui/references/exploration.md +50 -0
- package/skills/design-ui/references/libraries.md +39 -0
- package/skills/design-ui/references/themes.md +23 -0
- package/skills/dev-kit/SKILL.md +19 -38
- package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
- package/skills/dev-kit/references/skills.md +2 -2
- package/skills/effect-development/SKILL.md +27 -0
- package/skills/effect-development/agents/openai.yaml +4 -0
- package/skills/effect-development/references/api/index.md +32 -0
- package/skills/effect-development/references/api/schema-codecs.md +15 -0
- package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
- package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
- package/skills/effect-development/references/atom/index.md +40 -0
- package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
- package/skills/effect-development/references/cli/index.md +39 -0
- package/skills/effect-development/references/setup.md +15 -0
- package/skills/open-pull-request/SKILL.md +10 -70
- package/skills/open-pull-request/references/evidence.md +22 -0
- package/skills/open-pull-request/references/explanation.md +21 -0
- package/skills/open-pull-request/references/publication.md +21 -0
- package/skills/sentry/LICENSE +202 -0
- package/skills/sentry/LICENSE-UPSTREAM +21 -0
- package/skills/sentry/NOTICE +14 -0
- package/skills/sentry/SKILL.md +33 -0
- package/skills/sentry/references/alert-payloads.md +105 -0
- package/skills/sentry/references/alerts.md +17 -0
- package/skills/sentry/references/artifacts.md +25 -0
- package/skills/sentry/references/auth-token.md +65 -0
- package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
- package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
- package/skills/sentry/references/concepts/crons.md +50 -0
- package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
- package/skills/sentry/references/concepts/errors.md +40 -0
- package/skills/sentry/references/concepts/logging.md +85 -0
- package/skills/sentry/references/concepts/metrics.md +49 -0
- package/skills/sentry/references/concepts/monitors.md +78 -0
- package/skills/sentry/references/concepts/profiling.md +38 -0
- package/skills/sentry/references/concepts/reduce-volume.md +49 -0
- package/skills/sentry/references/concepts/releases.md +43 -0
- package/skills/sentry/references/concepts/session-replay.md +35 -0
- package/skills/sentry/references/concepts/tracing.md +54 -0
- package/skills/sentry/references/concepts/user-feedback.md +36 -0
- package/skills/sentry/references/debug-artifacts/android.md +68 -0
- package/skills/sentry/references/debug-artifacts/apple.md +96 -0
- package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
- package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
- package/skills/sentry/references/debug-artifacts/index.md +75 -0
- package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
- package/skills/sentry/references/debug-artifacts/matching.md +73 -0
- package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
- package/skills/sentry/references/first-error-setup.md +25 -0
- package/skills/sentry/references/instrumentation.md +30 -0
- package/skills/sentry/references/issues.md +32 -0
- package/skills/sentry/references/new-project.md +17 -0
- package/skills/sentry/references/otel-exporter.md +30 -0
- package/skills/sentry/references/release-workflow.md +31 -0
- package/skills/sentry/references/releases/ci-pipeline.md +214 -0
- package/skills/sentry/references/releases/index.md +93 -0
- package/skills/sentry/references/releases/suspect-commits.md +155 -0
- package/skills/sentry/references/releases/tagging.md +131 -0
- package/skills/sentry/references/releases/troubleshooting.md +67 -0
- package/skills/sentry/references/sdks/android/crons.md +305 -0
- package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
- package/skills/sentry/references/sdks/android/index.md +748 -0
- package/skills/sentry/references/sdks/android/integrations.md +48 -0
- package/skills/sentry/references/sdks/android/logging.md +374 -0
- package/skills/sentry/references/sdks/android/metrics.md +288 -0
- package/skills/sentry/references/sdks/android/profiling.md +397 -0
- package/skills/sentry/references/sdks/android/session-replay.md +406 -0
- package/skills/sentry/references/sdks/android/tracing.md +861 -0
- package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
- package/skills/sentry/references/sdks/browser/index.md +714 -0
- package/skills/sentry/references/sdks/browser/logging.md +315 -0
- package/skills/sentry/references/sdks/browser/profiling.md +236 -0
- package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
- package/skills/sentry/references/sdks/browser/tracing.md +561 -0
- package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
- package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
- package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
- package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
- package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
- package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
- package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
- package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
- package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
- package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
- package/skills/sentry/references/sdks/cocoa/index.md +497 -0
- package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
- package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
- package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
- package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
- package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
- package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
- package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
- package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
- package/skills/sentry/references/sdks/dotnet/index.md +614 -0
- package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
- package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
- package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
- package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
- package/skills/sentry/references/sdks/elixir/crons.md +371 -0
- package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
- package/skills/sentry/references/sdks/elixir/index.md +383 -0
- package/skills/sentry/references/sdks/elixir/logging.md +239 -0
- package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
- package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
- package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
- package/skills/sentry/references/sdks/flutter/index.md +728 -0
- package/skills/sentry/references/sdks/flutter/logging.md +387 -0
- package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
- package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
- package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
- package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
- package/skills/sentry/references/sdks/go/crons.md +270 -0
- package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
- package/skills/sentry/references/sdks/go/index.md +324 -0
- package/skills/sentry/references/sdks/go/logging.md +354 -0
- package/skills/sentry/references/sdks/go/metrics.md +273 -0
- package/skills/sentry/references/sdks/go/profiling.md +46 -0
- package/skills/sentry/references/sdks/go/tracing.md +366 -0
- package/skills/sentry/references/sdks/index.md +41 -0
- package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
- package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
- package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
- package/skills/sentry/references/sdks/nestjs/index.md +699 -0
- package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
- package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
- package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
- package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
- package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
- package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
- package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
- package/skills/sentry/references/sdks/nextjs/index.md +491 -0
- package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
- package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
- package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
- package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
- package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
- package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
- package/skills/sentry/references/sdks/node/crons.md +432 -0
- package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
- package/skills/sentry/references/sdks/node/index.md +942 -0
- package/skills/sentry/references/sdks/node/logging.md +380 -0
- package/skills/sentry/references/sdks/node/metrics.md +278 -0
- package/skills/sentry/references/sdks/node/profiling.md +373 -0
- package/skills/sentry/references/sdks/node/tracing.md +878 -0
- package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
- package/skills/sentry/references/sdks/php/crons.md +265 -0
- package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
- package/skills/sentry/references/sdks/php/index.md +362 -0
- package/skills/sentry/references/sdks/php/laravel.md +542 -0
- package/skills/sentry/references/sdks/php/logging.md +242 -0
- package/skills/sentry/references/sdks/php/metrics.md +193 -0
- package/skills/sentry/references/sdks/php/profiling.md +115 -0
- package/skills/sentry/references/sdks/php/symfony.md +552 -0
- package/skills/sentry/references/sdks/php/tracing.md +516 -0
- package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
- package/skills/sentry/references/sdks/python/crons.md +218 -0
- package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
- package/skills/sentry/references/sdks/python/index.md +361 -0
- package/skills/sentry/references/sdks/python/logging.md +234 -0
- package/skills/sentry/references/sdks/python/metrics.md +154 -0
- package/skills/sentry/references/sdks/python/profiling.md +120 -0
- package/skills/sentry/references/sdks/python/tracing.md +364 -0
- package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
- package/skills/sentry/references/sdks/react/index.md +492 -0
- package/skills/sentry/references/sdks/react/logging.md +364 -0
- package/skills/sentry/references/sdks/react/profiling.md +322 -0
- package/skills/sentry/references/sdks/react/react-features.md +1272 -0
- package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
- package/skills/sentry/references/sdks/react/tracing.md +1415 -0
- package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
- package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
- package/skills/sentry/references/sdks/react-native/index.md +1030 -0
- package/skills/sentry/references/sdks/react-native/logging.md +444 -0
- package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
- package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
- package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
- package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
- package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
- package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
- package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
- package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
- package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
- package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
- package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
- package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
- package/skills/sentry/references/sdks/ruby/crons.md +184 -0
- package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
- package/skills/sentry/references/sdks/ruby/index.md +297 -0
- package/skills/sentry/references/sdks/ruby/logging.md +168 -0
- package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
- package/skills/sentry/references/sdks/ruby/migration.md +321 -0
- package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
- package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
- package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
- package/skills/sentry/references/sdks/svelte/index.md +467 -0
- package/skills/sentry/references/sdks/svelte/logging.md +344 -0
- package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
- package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
- package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
- package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
- package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
- package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
- package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
- package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
- package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
- package/skills/sentry/references/search-query-language.md +226 -0
- package/skills/sentry/references/semantics/angular.md +7 -0
- package/skills/sentry/references/semantics/app.md +28 -0
- package/skills/sentry/references/semantics/art.md +17 -0
- package/skills/sentry/references/semantics/aws.md +43 -0
- package/skills/sentry/references/semantics/browser.md +34 -0
- package/skills/sentry/references/semantics/cache.md +12 -0
- package/skills/sentry/references/semantics/client.md +8 -0
- package/skills/sentry/references/semantics/cloud.md +12 -0
- package/skills/sentry/references/semantics/cloudflare.md +23 -0
- package/skills/sentry/references/semantics/code.md +11 -0
- package/skills/sentry/references/semantics/culture.md +11 -0
- package/skills/sentry/references/semantics/db.md +21 -0
- package/skills/sentry/references/semantics/device.md +43 -0
- package/skills/sentry/references/semantics/error.md +7 -0
- package/skills/sentry/references/semantics/event.md +8 -0
- package/skills/sentry/references/semantics/exception.md +10 -0
- package/skills/sentry/references/semantics/faas.md +19 -0
- package/skills/sentry/references/semantics/file.md +8 -0
- package/skills/sentry/references/semantics/flag.md +7 -0
- package/skills/sentry/references/semantics/gcp.md +16 -0
- package/skills/sentry/references/semantics/gen_ai.md +53 -0
- package/skills/sentry/references/semantics/general.md +11 -0
- package/skills/sentry/references/semantics/graphql.md +9 -0
- package/skills/sentry/references/semantics/grpc.md +19 -0
- package/skills/sentry/references/semantics/http.md +34 -0
- package/skills/sentry/references/semantics/index.md +63 -0
- package/skills/sentry/references/semantics/jsonrpc.md +8 -0
- package/skills/sentry/references/semantics/jvm.md +12 -0
- package/skills/sentry/references/semantics/koa.md +7 -0
- package/skills/sentry/references/semantics/logger.md +7 -0
- package/skills/sentry/references/semantics/mcp.md +37 -0
- package/skills/sentry/references/semantics/mdc.md +7 -0
- package/skills/sentry/references/semantics/messaging.md +23 -0
- package/skills/sentry/references/semantics/middleware.md +7 -0
- package/skills/sentry/references/semantics/navigation.md +9 -0
- package/skills/sentry/references/semantics/nel.md +11 -0
- package/skills/sentry/references/semantics/network.md +17 -0
- package/skills/sentry/references/semantics/os.md +15 -0
- package/skills/sentry/references/semantics/otel.md +10 -0
- package/skills/sentry/references/semantics/params.md +7 -0
- package/skills/sentry/references/semantics/process.md +14 -0
- package/skills/sentry/references/semantics/react.md +7 -0
- package/skills/sentry/references/semantics/remix.md +7 -0
- package/skills/sentry/references/semantics/resource.md +7 -0
- package/skills/sentry/references/semantics/rpc.md +10 -0
- package/skills/sentry/references/semantics/score.md +10 -0
- package/skills/sentry/references/semantics/sentry.md +69 -0
- package/skills/sentry/references/semantics/server.md +8 -0
- package/skills/sentry/references/semantics/service.md +8 -0
- package/skills/sentry/references/semantics/session.md +7 -0
- package/skills/sentry/references/semantics/state.md +7 -0
- package/skills/sentry/references/semantics/thread.md +8 -0
- package/skills/sentry/references/semantics/timber.md +7 -0
- package/skills/sentry/references/semantics/trpc.md +8 -0
- package/skills/sentry/references/semantics/ui.md +18 -0
- package/skills/sentry/references/semantics/url.md +15 -0
- package/skills/sentry/references/semantics/user.md +17 -0
- package/skills/sentry/references/semantics/user_agent.md +7 -0
- package/skills/sentry/references/semantics/vercel.md +42 -0
- package/skills/sentry/references/setup-verification.md +39 -0
- package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
- package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
- package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
- package/skills/sentry/references/snapshots/index.md +19 -0
- package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
- package/skills/sentry/references/snapshots/snapshots.md +123 -0
- package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
- package/skills/testing/LICENSE +21 -0
- package/skills/testing/NOTICE +7 -0
- package/skills/testing/SKILL.md +13 -19
- package/skills/testing/agents/openai.yaml +1 -2
- package/skills/testing/references/selection.md +23 -0
- package/skills/testing/references/tdd.md +19 -0
- package/skills/testing/references/test-design.md +17 -0
- package/src/catalog.ts +1 -7
- package/skills/build-effect-apis/SKILL.md +0 -81
- package/skills/build-effect-apis/agents/openai.yaml +0 -4
- package/skills/build-effect-clis/SKILL.md +0 -92
- package/skills/build-effect-clis/agents/openai.yaml +0 -4
- package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
- package/skills/effect-atom-state/SKILL.md +0 -97
- package/skills/effect-atom-state/agents/openai.yaml +0 -4
- package/skills/effect-ts/SKILL.md +0 -35
- package/skills/effect-ts/agents/openai.yaml +0 -4
- /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
- /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
# AI Monitoring — Sentry Next.js SDK
|
|
2
|
+
|
|
3
|
+
> OpenAI integration: `@sentry/nextjs` ≥10.53.0+\
|
|
4
|
+
> Vercel AI SDK integration: ≥10.53.0+\
|
|
5
|
+
> Anthropic integration: ≥10.53.0+
|
|
6
|
+
|
|
7
|
+
> ⚠️ **Tracing must be enabled.** AI monitoring piggybacks on tracing infrastructure.
|
|
8
|
+
> `tracesSampleRate` must be > 0.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
Sentry AI Agents Monitoring automatically tracks:
|
|
15
|
+
|
|
16
|
+
- Agent runs and error rates
|
|
17
|
+
- LLM calls (model, token counts, estimated cost)
|
|
18
|
+
- Tool calls and outputs
|
|
19
|
+
- Agent handoffs
|
|
20
|
+
- Full prompt/completion data (opt-in)
|
|
21
|
+
- Performance bottlenecks across the AI pipeline
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Supported AI Libraries
|
|
26
|
+
|
|
27
|
+
| Library | Integration API | Auto-enabled (Node server)? | Min SDK Version |
|
|
28
|
+
| -------------------------------------- | -------------------------------------------------------- | ----------------------------- | --------------- |
|
|
29
|
+
| **OpenAI** (`openai`) | `openAIIntegration` / `instrumentOpenAiClient` | ✅ Yes | **10.53.0** |
|
|
30
|
+
| **Vercel AI SDK** (`ai`) | `vercelAIIntegration` | ✅ Yes (Node), ❌ Edge manual | **10.53.0** |
|
|
31
|
+
| **Anthropic** (`@anthropic-ai/sdk`) | `anthropicAIIntegration` / `instrumentAnthropicAiClient` | ✅ Yes | **10.53.0** |
|
|
32
|
+
| **Google Gen AI** (`@google/genai`) | `googleGenAIIntegration` | ✅ Yes | **10.53.0** |
|
|
33
|
+
| **LangChain** (`langchain`) | `langChainIntegration` | ✅ Yes | **10.53.0** |
|
|
34
|
+
| **LangGraph** (`@langchain/langgraph`) | `langGraphIntegration` | ✅ Yes | **10.53.0** |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## OpenAI Integration
|
|
39
|
+
|
|
40
|
+
### Which API to Use?
|
|
41
|
+
|
|
42
|
+
| Context | API |
|
|
43
|
+
| ----------------------------------------------------------------------- | ---------------------------------------------------------------- |
|
|
44
|
+
| **Next.js server-side** (API routes, Server Components, Route Handlers) | `Sentry.openAIIntegration()` in `sentry.server.config.ts` |
|
|
45
|
+
| **Browser / client-side** | `Sentry.instrumentOpenAiClient(openaiInstance)` — manual wrapper |
|
|
46
|
+
|
|
47
|
+
### Server-Side Setup (`sentry.server.config.ts`)
|
|
48
|
+
|
|
49
|
+
`openAIIntegration` is **enabled by default** on the server.
|
|
50
|
+
Pass it explicitly to customize options:
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
// sentry.server.config.ts
|
|
54
|
+
import * as Sentry from "@sentry/nextjs";
|
|
55
|
+
|
|
56
|
+
Sentry.init({
|
|
57
|
+
dsn: process.env.SENTRY_DSN,
|
|
58
|
+
|
|
59
|
+
// Tracing MUST be enabled for AI monitoring
|
|
60
|
+
tracesSampleRate: 1.0,
|
|
61
|
+
dataCollection: {
|
|
62
|
+
// To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:
|
|
63
|
+
// https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/options/#dataCollection
|
|
64
|
+
// userInfo: false,
|
|
65
|
+
// httpBodies: [],
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
integrations: [
|
|
69
|
+
Sentry.openAIIntegration(), // recordInputs/recordOutputs default to true (governed by dataCollection.genAI)
|
|
70
|
+
],
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Client-Side / Manual Wrapping
|
|
75
|
+
|
|
76
|
+
With `dataCollection`, genAI input/output capture is **on by default**. To disable it,
|
|
77
|
+
set `dataCollection: { genAI: { inputs: false, outputs: false } }` in the matching
|
|
78
|
+
client-side `Sentry.init()`.
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
import OpenAI from "openai";
|
|
82
|
+
import * as Sentry from "@sentry/nextjs";
|
|
83
|
+
|
|
84
|
+
const openai = new OpenAI({
|
|
85
|
+
apiKey: process.env.OPENAI_API_KEY, // ⚠️ Never expose this in the browser!
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Wrap once at module level — reuse this client everywhere.
|
|
89
|
+
// Input/output recording is on by default (governed by dataCollection.genAI) unless explicitly overridden.
|
|
90
|
+
const client = Sentry.instrumentOpenAiClient(openai);
|
|
91
|
+
|
|
92
|
+
const response = await client.chat.completions.create({
|
|
93
|
+
model: "gpt-4o",
|
|
94
|
+
messages: [{ role: "user", content: "Hello!" }],
|
|
95
|
+
});
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Streaming — Important
|
|
99
|
+
|
|
100
|
+
For streamed responses, you **must** pass `stream_options: { include_usage: true }`.
|
|
101
|
+
Without this, OpenAI does not include token counts in streamed responses, so Sentry
|
|
102
|
+
cannot capture usage metrics:
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
const stream = await client.chat.completions.create({
|
|
106
|
+
model: "gpt-4o",
|
|
107
|
+
messages: [{ role: "user", content: "Hello!" }],
|
|
108
|
+
stream: true,
|
|
109
|
+
stream_options: { include_usage: true }, // ← REQUIRED for token tracking
|
|
110
|
+
});
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### OpenAI Configuration Options
|
|
114
|
+
|
|
115
|
+
| Option | Type | Default | Description |
|
|
116
|
+
| --------------- | --------- | ------------------------------------------- | --------------------------------------- |
|
|
117
|
+
| `recordInputs` | `boolean` | `true` (governed by `dataCollection.genAI`) | Capture prompts/messages sent to OpenAI |
|
|
118
|
+
| `recordOutputs` | `boolean` | `true` (governed by `dataCollection.genAI`) | Capture generated text/responses |
|
|
119
|
+
|
|
120
|
+
**Supported versions:** `openai` ≥4.0.0 <7
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Vercel AI SDK Integration
|
|
125
|
+
|
|
126
|
+
### Setup
|
|
127
|
+
|
|
128
|
+
The integration is **auto-enabled** in the Node runtime.
|
|
129
|
+
For the Edge runtime, add it explicitly:
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
// sentry.server.config.ts — Node runtime (auto-enabled, customize here)
|
|
133
|
+
import * as Sentry from "@sentry/nextjs";
|
|
134
|
+
|
|
135
|
+
Sentry.init({
|
|
136
|
+
dsn: process.env.SENTRY_DSN,
|
|
137
|
+
tracesSampleRate: 1.0,
|
|
138
|
+
dataCollection: {
|
|
139
|
+
// To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:
|
|
140
|
+
// https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/options/#dataCollection
|
|
141
|
+
// userInfo: false,
|
|
142
|
+
// httpBodies: [],
|
|
143
|
+
},
|
|
144
|
+
integrations: [
|
|
145
|
+
Sentry.vercelAIIntegration({
|
|
146
|
+
force: true, // ← Required for Vercel production deployments (see note below)
|
|
147
|
+
}),
|
|
148
|
+
],
|
|
149
|
+
});
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
// sentry.edge.config.ts — Edge runtime requires manual opt-in
|
|
154
|
+
import * as Sentry from "@sentry/nextjs";
|
|
155
|
+
|
|
156
|
+
Sentry.init({
|
|
157
|
+
dsn: process.env.SENTRY_DSN,
|
|
158
|
+
tracesSampleRate: 1.0,
|
|
159
|
+
dataCollection: {
|
|
160
|
+
// To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:
|
|
161
|
+
// https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/options/#dataCollection
|
|
162
|
+
// userInfo: false,
|
|
163
|
+
// httpBodies: [],
|
|
164
|
+
},
|
|
165
|
+
integrations: [Sentry.vercelAIIntegration()],
|
|
166
|
+
});
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Per-Call Telemetry (Required)
|
|
170
|
+
|
|
171
|
+
You **must** pass `experimental_telemetry: { isEnabled: true }` to every AI SDK function
|
|
172
|
+
call you want traced:
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
import { generateText, generateObject, streamText } from "ai";
|
|
176
|
+
import { openai } from "@ai-sdk/openai";
|
|
177
|
+
|
|
178
|
+
// generateText
|
|
179
|
+
const result = await generateText({
|
|
180
|
+
model: openai("gpt-4o"),
|
|
181
|
+
prompt: "What is the capital of France?",
|
|
182
|
+
experimental_telemetry: {
|
|
183
|
+
isEnabled: true,
|
|
184
|
+
functionId: "my-text-generation", // helps identify this function in traces
|
|
185
|
+
recordInputs: true,
|
|
186
|
+
recordOutputs: true,
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
// generateObject
|
|
191
|
+
const { object } = await generateObject({
|
|
192
|
+
model: openai("gpt-4o"),
|
|
193
|
+
schema: z.object({ answer: z.string() }),
|
|
194
|
+
prompt: "...",
|
|
195
|
+
experimental_telemetry: { isEnabled: true, functionId: "my-object-gen" },
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
// streamText
|
|
199
|
+
const { textStream } = await streamText({
|
|
200
|
+
model: openai("gpt-4o"),
|
|
201
|
+
prompt: "...",
|
|
202
|
+
experimental_telemetry: { isEnabled: true, functionId: "my-stream" },
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Vercel Production: `force: true`
|
|
207
|
+
|
|
208
|
+
When deployed to Vercel, the `ai` package gets bundled in Next.js production builds.
|
|
209
|
+
This prevents automatic module detection, causing spans to use raw names (`ai.toolCall`,
|
|
210
|
+
`ai.streamText`) instead of semantic names (`gen_ai.execute_tool`,
|
|
211
|
+
`gen_ai.stream_text`).
|
|
212
|
+
|
|
213
|
+
**Fix — always use `force: true` in `sentry.server.config.ts` when deploying to
|
|
214
|
+
Vercel:**
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
Sentry.vercelAIIntegration({ force: true });
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Vercel AI SDK Configuration Options
|
|
221
|
+
|
|
222
|
+
| Option | Type | Default | Min SDK | Description |
|
|
223
|
+
| --------------- | --------- | ------- | ------- | -------------------------------------------------------------------------- |
|
|
224
|
+
| `force` | `boolean` | `false` | 9.29.0 | Force-enable regardless of module detection. Use on Vercel. |
|
|
225
|
+
| `recordInputs` | `boolean` | `true`* | 9.27.0 | Capture inputs. *Defaults to `true` (governed by `dataCollection.genAI`). |
|
|
226
|
+
| `recordOutputs` | `boolean` | `true`* | 9.27.0 | Capture outputs. *Defaults to `true` (governed by `dataCollection.genAI`). |
|
|
227
|
+
|
|
228
|
+
**Supported versions:** `ai` ≥3.0.0 ≤6
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Anthropic Integration
|
|
233
|
+
|
|
234
|
+
### Server-Side Setup
|
|
235
|
+
|
|
236
|
+
```typescript
|
|
237
|
+
// sentry.server.config.ts
|
|
238
|
+
import * as Sentry from "@sentry/nextjs";
|
|
239
|
+
|
|
240
|
+
Sentry.init({
|
|
241
|
+
dsn: process.env.SENTRY_DSN,
|
|
242
|
+
tracesSampleRate: 1.0,
|
|
243
|
+
dataCollection: {
|
|
244
|
+
// To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:
|
|
245
|
+
// https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/options/#dataCollection
|
|
246
|
+
// userInfo: false,
|
|
247
|
+
// httpBodies: [],
|
|
248
|
+
},
|
|
249
|
+
integrations: [Sentry.anthropicAIIntegration()],
|
|
250
|
+
});
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Manual Wrapping
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
257
|
+
import * as Sentry from "@sentry/nextjs";
|
|
258
|
+
|
|
259
|
+
const anthropic = new Anthropic({
|
|
260
|
+
apiKey: process.env.ANTHROPIC_API_KEY, // ⚠️ Never expose in the browser!
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
// Input/output recording is on by default (governed by dataCollection.genAI) unless explicitly overridden.
|
|
264
|
+
const client = Sentry.instrumentAnthropicAiClient(anthropic);
|
|
265
|
+
|
|
266
|
+
const response = await client.messages.create({
|
|
267
|
+
model: "claude-3-5-sonnet-20241022",
|
|
268
|
+
max_tokens: 1024,
|
|
269
|
+
messages: [{ role: "user", content: "Hello, Claude!" }],
|
|
270
|
+
});
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Supported Anthropic Operations
|
|
274
|
+
|
|
275
|
+
| Operation | Method |
|
|
276
|
+
| ------------------ | ------------------------------- |
|
|
277
|
+
| Create messages | `client.messages.create()` |
|
|
278
|
+
| Stream messages | `client.messages.stream()` |
|
|
279
|
+
| Count tokens | `client.messages.countTokens()` |
|
|
280
|
+
| Legacy completions | `client.completions.create()` |
|
|
281
|
+
| Beta messages | `client.beta.messages.create()` |
|
|
282
|
+
|
|
283
|
+
**Supported versions:** `@anthropic-ai/sdk` ≥0.19.2 <1.0.0
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Token Usage Tracking
|
|
288
|
+
|
|
289
|
+
Sentry automatically captures token usage following OpenTelemetry GenAI semantic
|
|
290
|
+
conventions:
|
|
291
|
+
|
|
292
|
+
| Span Attribute | Description |
|
|
293
|
+
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
294
|
+
| `gen_ai.request.model` | Model name |
|
|
295
|
+
| `gen_ai.request.reasoning_effort` | Reasoning effort level for reasoning models (e.g., `low`, `medium`, `high`). Supported values vary by provider. |
|
|
296
|
+
| `gen_ai.usage.input_tokens` | Prompt/input token count |
|
|
297
|
+
| `gen_ai.usage.output_tokens` | Completion/output token count |
|
|
298
|
+
| `gen_ai.usage.input_tokens.cached` | Cached input tokens |
|
|
299
|
+
| `gen_ai.usage.input_tokens.cache_write` | Cache write tokens |
|
|
300
|
+
| `gen_ai.usage.output_tokens.reasoning` | Reasoning tokens (e.g., o1 models) |
|
|
301
|
+
|
|
302
|
+
**Cost estimates** are sourced from models.dev and OpenRouter.
|
|
303
|
+
Limitations: no volume discounts, no non-token charges, unrecognized models show no
|
|
304
|
+
estimate.
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Prompt/Completion Capture & PII
|
|
309
|
+
|
|
310
|
+
`recordInputs` captures prompts sent to the AI API.\
|
|
311
|
+
`recordOutputs` captures the generated text/completions returned.
|
|
312
|
+
|
|
313
|
+
With `dataCollection`, genAI input/output capture is **on by default**. To disable it,
|
|
314
|
+
set `dataCollection: { genAI: { inputs: false, outputs: false } }`:
|
|
315
|
+
|
|
316
|
+
```typescript
|
|
317
|
+
Sentry.init({
|
|
318
|
+
dsn: process.env.SENTRY_DSN,
|
|
319
|
+
dataCollection: {
|
|
320
|
+
genAI: { inputs: false, outputs: false },
|
|
321
|
+
},
|
|
322
|
+
tracesSampleRate: 1.0,
|
|
323
|
+
});
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
Use explicit integration options only when you need per-integration overrides instead of
|
|
327
|
+
the SDK-level default:
|
|
328
|
+
|
|
329
|
+
```typescript
|
|
330
|
+
integrations: [
|
|
331
|
+
Sentry.openAIIntegration({
|
|
332
|
+
recordInputs: false, // opt out for this integration despite genAI capture being on by default
|
|
333
|
+
recordOutputs: false,
|
|
334
|
+
}),
|
|
335
|
+
],
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
> ⚠️ **PII warning:** Prompts often contain user-supplied text.
|
|
339
|
+
> If users include personal data in prompts, enabling `recordInputs` will send that data
|
|
340
|
+
> to Sentry. Review your privacy policy before enabling.
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## Complete Setup Example
|
|
345
|
+
|
|
346
|
+
```typescript
|
|
347
|
+
// sentry.server.config.ts
|
|
348
|
+
import * as Sentry from "@sentry/nextjs";
|
|
349
|
+
|
|
350
|
+
Sentry.init({
|
|
351
|
+
dsn: process.env.SENTRY_DSN,
|
|
352
|
+
tracesSampleRate: 1.0,
|
|
353
|
+
dataCollection: {
|
|
354
|
+
// To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:
|
|
355
|
+
// https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/options/#dataCollection
|
|
356
|
+
// userInfo: false,
|
|
357
|
+
// httpBodies: [],
|
|
358
|
+
},
|
|
359
|
+
integrations: [
|
|
360
|
+
Sentry.openAIIntegration(),
|
|
361
|
+
Sentry.vercelAIIntegration({ force: true }),
|
|
362
|
+
Sentry.anthropicAIIntegration(),
|
|
363
|
+
],
|
|
364
|
+
});
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
```typescript
|
|
368
|
+
// app/api/chat/route.ts — OpenAI with streaming
|
|
369
|
+
import OpenAI from "openai";
|
|
370
|
+
import * as Sentry from "@sentry/nextjs";
|
|
371
|
+
|
|
372
|
+
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
|
|
373
|
+
const sentryOpenAI = Sentry.instrumentOpenAiClient(openai);
|
|
374
|
+
|
|
375
|
+
export async function POST(req: Request) {
|
|
376
|
+
const { messages } = await req.json();
|
|
377
|
+
|
|
378
|
+
const completion = await sentryOpenAI.chat.completions.create({
|
|
379
|
+
model: "gpt-4o",
|
|
380
|
+
messages,
|
|
381
|
+
stream: true,
|
|
382
|
+
stream_options: { include_usage: true }, // ← Required for token tracking
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
// ... stream response to client
|
|
386
|
+
}
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
```typescript
|
|
390
|
+
// app/api/generate/route.ts — Vercel AI SDK
|
|
391
|
+
import { generateText } from "ai";
|
|
392
|
+
import { openai } from "@ai-sdk/openai";
|
|
393
|
+
|
|
394
|
+
export async function POST(req: Request) {
|
|
395
|
+
const { prompt } = await req.json();
|
|
396
|
+
|
|
397
|
+
const result = await generateText({
|
|
398
|
+
model: openai("gpt-4o"),
|
|
399
|
+
prompt,
|
|
400
|
+
experimental_telemetry: {
|
|
401
|
+
isEnabled: true, // ← Required for Sentry to capture spans
|
|
402
|
+
functionId: "chat-handler",
|
|
403
|
+
recordInputs: true,
|
|
404
|
+
recordOutputs: true,
|
|
405
|
+
},
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
return Response.json({ text: result.text });
|
|
409
|
+
}
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
## AI Agents Dashboard
|
|
415
|
+
|
|
416
|
+
Access at **Sentry → AI → Agents** (or **Insights → AI**).
|
|
417
|
+
|
|
418
|
+
| Tab | What you see |
|
|
419
|
+
| ------------ | ------------------------------------------------------------------------- |
|
|
420
|
+
| **Overview** | Agent runs, error rates, duration, LLM calls, tokens used, tool calls |
|
|
421
|
+
| **Models** | Per-model cost estimates, token breakdown (input/output/cached), duration |
|
|
422
|
+
| **Tools** | Per-tool call counts, error rates, input/output for each invocation |
|
|
423
|
+
| **Traces** | Full pipeline from user request to final response with all spans |
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## SDK Version Matrix
|
|
428
|
+
|
|
429
|
+
| Feature | Min SDK Version |
|
|
430
|
+
| ------------------------------------------------------------------- | --------------- |
|
|
431
|
+
| Vercel AI SDK integration (Node/CF/Edge/Bun) | **10.53.0** |
|
|
432
|
+
| Vercel AI SDK integration (Deno) | **10.53.0** |
|
|
433
|
+
| Vercel AI `recordInputs`/`recordOutputs` | 9.27.0 |
|
|
434
|
+
| Vercel AI `force` option | 9.29.0 |
|
|
435
|
+
| OpenAI integration (`openAIIntegration` / `instrumentOpenAiClient`) | **10.53.0** |
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Sampling Strategy
|
|
440
|
+
|
|
441
|
+
If your `tracesSampleRate` is below 1.0, you may be losing entire agent runs.
|
|
442
|
+
Use `tracesSampler` patterns that keep 100% of gen_ai-related transactions while
|
|
443
|
+
sampling other traffic at a lower rate.
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
## Conversation Tracking
|
|
448
|
+
|
|
449
|
+
Link AI spans across turns into a chat-style timeline at **Explore > Conversations**.
|
|
450
|
+
|
|
451
|
+
**Prerequisites:** `streamGenAiSpans` defaults to `true` (SDK >=10.61.0, so AI spans
|
|
452
|
+
stream as standalone items) and genAI input/output capture enabled (on by default via
|
|
453
|
+
`dataCollection`) in your server config — Conversations reconstructs the chat from
|
|
454
|
+
input/output attributes, so without input/output capture the view will be empty.
|
|
455
|
+
|
|
456
|
+
```typescript
|
|
457
|
+
import * as Sentry from "@sentry/nextjs";
|
|
458
|
+
|
|
459
|
+
// Set at the start of a conversation (server-side)
|
|
460
|
+
Sentry.setConversationId("conv_abc123");
|
|
461
|
+
|
|
462
|
+
// All subsequent AI calls carry gen_ai.conversation.id: "conv_abc123"
|
|
463
|
+
await openai.chat.completions.create({
|
|
464
|
+
model: "gpt-5.5",
|
|
465
|
+
messages: [{ role: "user", content: "Hello" }],
|
|
466
|
+
});
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
A single conversation can span multiple traces, and a single trace can contain multiple
|
|
470
|
+
conversations.
|
|
471
|
+
|
|
472
|
+
### User Attribution
|
|
473
|
+
|
|
474
|
+
To populate the **User** column in Conversations, call `setUser` once per request or
|
|
475
|
+
session before any AI calls:
|
|
476
|
+
|
|
477
|
+
```typescript
|
|
478
|
+
Sentry.setUser({ id: "user_123", email: "jane@example.com", username: "jane" });
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
## Troubleshooting
|
|
482
|
+
|
|
483
|
+
| Issue | Solution |
|
|
484
|
+
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
485
|
+
| No AI spans appearing | Verify `tracesSampleRate` > 0; AI monitoring requires tracing |
|
|
486
|
+
| Token counts missing in streams | Add `stream_options: { include_usage: true }` to all OpenAI streaming calls |
|
|
487
|
+
| Vercel AI spans show raw names (`ai.toolCall`) | Add `vercelAIIntegration({ force: true })` in server config |
|
|
488
|
+
| `recordInputs`/`recordOutputs` not capturing | genAI capture is on by default; ensure you haven’t set `dataCollection: { genAI: { inputs: false } }`, or explicitly pass `recordInputs: true` / `recordOutputs: true` to the integration |
|
|
489
|
+
| Anthropic spans missing | Check SDK version supports Anthropic integration; add `anthropicAIIntegration()` explicitly |
|
|
490
|
+
| Cost estimates not showing | Model name must match models.dev/OpenRouter pricing data; custom/fine-tuned models may show no estimate |
|
|
491
|
+
| Edge runtime AI spans missing | Add `vercelAIIntegration()` to `sentry.edge.config.ts` explicitly (not auto-enabled for Edge) |
|
|
492
|
+
| User column shows “Unknown” | Call `Sentry.setUser()` once per request or session |
|
|
493
|
+
| OpenAI browser-side spans missing | Use `instrumentOpenAiClient()` wrapper — `openAIIntegration()` only works server-side |
|
|
494
|
+
| No data in AI Agents dashboard | Ensure traces are being sent; check DSN and `tracesSampleRate` |
|