@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,41 @@
|
|
|
1
|
+
# Choose a Sentry SDK reference
|
|
2
|
+
|
|
3
|
+
Inspect the package and runtime being changed. Prefer the existing framework SDK
|
|
4
|
+
when it fits: TanStack Start, Next.js, NestJS, React Router Framework, and React
|
|
5
|
+
Native have integrations beyond generic React or Node. A monorepo can contain
|
|
6
|
+
several targets; a Wrangler file elsewhere does not determine a React screen's SDK.
|
|
7
|
+
|
|
8
|
+
For an existing SDK, read the requested signal file directly under its directory:
|
|
9
|
+
`tracing.md`, `error-monitoring.md`, `logging.md`, `metrics.md`, `crons.md`,
|
|
10
|
+
`profiling.md`, `session-replay.md`, `user-feedback.md`, or `ai-monitoring.md`,
|
|
11
|
+
when present. Use the platform index for new setup, feature support, or an
|
|
12
|
+
initialization question. It is not a prerequisite to every signal change.
|
|
13
|
+
|
|
14
|
+
The retained platform references contain multiple runtimes and feature recipes.
|
|
15
|
+
Inspect headings and read the relevant section, not the whole manual. Apply
|
|
16
|
+
installation, provisioning, and optional-feature recipes only within the requested
|
|
17
|
+
scope; preserve installed versions and consult matching official docs for APIs.
|
|
18
|
+
|
|
19
|
+
| Platform | Setup and feature index |
|
|
20
|
+
| ----------------------------------------------------- | --------------------------------------------------------- |
|
|
21
|
+
| Android | [android](android/index.md) |
|
|
22
|
+
| browser JavaScript | [browser](browser/index.md) |
|
|
23
|
+
| Cloudflare Workers and Pages | [cloudflare](cloudflare/index.md) |
|
|
24
|
+
| Apple platforms (iOS, macOS, tvOS, watchOS, visionOS) | [cocoa](cocoa/index.md) |
|
|
25
|
+
| .NET | [dotnet](dotnet/index.md) |
|
|
26
|
+
| Elixir | [elixir](elixir/index.md) |
|
|
27
|
+
| Go | [go](go/index.md) |
|
|
28
|
+
| NestJS | [nestjs](nestjs/index.md) |
|
|
29
|
+
| Next.js | [nextjs](nextjs/index.md) |
|
|
30
|
+
| Node.js, Bun, and Deno | [node](node/index.md) |
|
|
31
|
+
| PHP | [php](php/index.md) |
|
|
32
|
+
| Python | [python](python/index.md) |
|
|
33
|
+
| Flutter and Dart | [flutter](flutter/index.md) |
|
|
34
|
+
| React Native and Expo | [react-native](react-native/index.md) |
|
|
35
|
+
| React | [react](react/index.md) |
|
|
36
|
+
| React Router Framework | [react-router-framework](react-router-framework/index.md) |
|
|
37
|
+
| TanStack Start React | [tanstack-start](tanstack-start/index.md) |
|
|
38
|
+
| Ruby | [ruby](ruby/index.md) |
|
|
39
|
+
| Svelte and SvelteKit | [svelte](svelte/index.md) |
|
|
40
|
+
|
|
41
|
+
For an unsupported platform, use the [official SDK documentation](https://docs.sentry.io/platforms/).
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
# AI Monitoring — Sentry NestJS SDK
|
|
2
|
+
|
|
3
|
+
> OpenAI integration: `@sentry/nestjs` ≥10.53.0+ Vercel AI SDK integration: ≥10.53.0+
|
|
4
|
+
> Anthropic integration: ≥10.53.0+ Google GenAI integration: ≥10.53.0+
|
|
5
|
+
|
|
6
|
+
> ⚠️ **Tracing must be enabled.** AI monitoring piggybacks on tracing infrastructure.
|
|
7
|
+
> `tracesSampleRate` must be > 0.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
Sentry AI Agents Monitoring automatically tracks:
|
|
14
|
+
|
|
15
|
+
- Agent runs and error rates
|
|
16
|
+
- LLM calls (model, token counts, estimated cost)
|
|
17
|
+
- Tool calls and outputs
|
|
18
|
+
- Agent handoffs
|
|
19
|
+
- Full prompt/completion data (opt-in)
|
|
20
|
+
- Performance bottlenecks across the AI pipeline
|
|
21
|
+
|
|
22
|
+
All integrations listed below are **auto-enabled** when the corresponding AI library is
|
|
23
|
+
detected at startup.
|
|
24
|
+
Explicit configuration is only needed to customize `recordInputs`/`recordOutputs`.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Supported AI Libraries
|
|
29
|
+
|
|
30
|
+
| Library | Integration API | Auto-enabled? | Min SDK Version |
|
|
31
|
+
| ---------------------------------------------- | -------------------------------------------------------- | ------------- | --------------- |
|
|
32
|
+
| **OpenAI** (`openai`) | `openAIIntegration` / `instrumentOpenAiClient` | ✅ Yes | **10.53.0** |
|
|
33
|
+
| **Vercel AI SDK** (`ai`) | `vercelAIIntegration` | ✅ Yes | **10.53.0** |
|
|
34
|
+
| **Anthropic** (`@anthropic-ai/sdk`) | `anthropicAIIntegration` / `instrumentAnthropicAiClient` | ✅ Yes | **10.53.0** |
|
|
35
|
+
| **Google GenAI** (`@google/generative-ai`) | — | ✅ Yes | **10.53.0** |
|
|
36
|
+
| **LangChain** (`langchain`, `@langchain/core`) | `langchainIntegration` | ✅ Yes | **10.53.0** |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## OpenAI Integration
|
|
41
|
+
|
|
42
|
+
### Auto-Enabled Setup
|
|
43
|
+
|
|
44
|
+
OpenAI is auto-instrumented — no changes to `instrument.ts` needed:
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
// instrument.ts
|
|
48
|
+
import * as Sentry from "@sentry/nestjs";
|
|
49
|
+
|
|
50
|
+
Sentry.init({
|
|
51
|
+
dsn: process.env.SENTRY_DSN,
|
|
52
|
+
tracesSampleRate: 1.0,
|
|
53
|
+
dataCollection: {
|
|
54
|
+
// To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:
|
|
55
|
+
// https://docs.sentry.io/platforms/javascript/guides/nestjs/configuration/options/#dataCollection
|
|
56
|
+
// userInfo: false,
|
|
57
|
+
// httpBodies: [],
|
|
58
|
+
},
|
|
59
|
+
integrations: [Sentry.openAIIntegration()],
|
|
60
|
+
});
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Manual Wrapping (Alternative)
|
|
64
|
+
|
|
65
|
+
If auto-instrumentation doesn’t capture your client (e.g., custom transport), wrap it
|
|
66
|
+
manually:
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import OpenAI from "openai";
|
|
70
|
+
import * as Sentry from "@sentry/nestjs";
|
|
71
|
+
|
|
72
|
+
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
|
|
73
|
+
|
|
74
|
+
// Wrap once at module level — reuse this client everywhere.
|
|
75
|
+
// Input/output recording is on by default (governed by dataCollection.genAI) unless explicitly overridden.
|
|
76
|
+
const client = Sentry.instrumentOpenAiClient(openai);
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Streaming — Important
|
|
80
|
+
|
|
81
|
+
For streamed responses, you **must** pass `stream_options: { include_usage: true }`.
|
|
82
|
+
Without this, OpenAI does not include token counts in streamed responses, so Sentry
|
|
83
|
+
cannot capture usage metrics:
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
@Injectable()
|
|
87
|
+
export class ChatService {
|
|
88
|
+
constructor(private readonly openai: OpenAI) {}
|
|
89
|
+
|
|
90
|
+
async streamChat(messages: Array<{ role: string; content: string }>) {
|
|
91
|
+
const stream = await this.openai.chat.completions.create({
|
|
92
|
+
model: "gpt-4o",
|
|
93
|
+
messages,
|
|
94
|
+
stream: true,
|
|
95
|
+
stream_options: { include_usage: true }, // ← REQUIRED for token tracking
|
|
96
|
+
});
|
|
97
|
+
return stream;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### OpenAI Configuration Options
|
|
103
|
+
|
|
104
|
+
| Option | Type | Default | Description |
|
|
105
|
+
| --------------- | --------- | ------------------------------------------- | --------------------------------------- |
|
|
106
|
+
| `recordInputs` | `boolean` | `true` (governed by `dataCollection.genAI`) | Capture prompts/messages sent to OpenAI |
|
|
107
|
+
| `recordOutputs` | `boolean` | `true` (governed by `dataCollection.genAI`) | Capture generated text/responses |
|
|
108
|
+
|
|
109
|
+
**Supported versions:** `openai` ≥4.0.0
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Vercel AI SDK Integration
|
|
114
|
+
|
|
115
|
+
### Setup
|
|
116
|
+
|
|
117
|
+
The integration is **auto-enabled** when the `ai` package is detected:
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// instrument.ts — customize if needed
|
|
121
|
+
import * as Sentry from "@sentry/nestjs";
|
|
122
|
+
|
|
123
|
+
Sentry.init({
|
|
124
|
+
dsn: process.env.SENTRY_DSN,
|
|
125
|
+
tracesSampleRate: 1.0,
|
|
126
|
+
dataCollection: {
|
|
127
|
+
// To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:
|
|
128
|
+
// https://docs.sentry.io/platforms/javascript/guides/nestjs/configuration/options/#dataCollection
|
|
129
|
+
// userInfo: false,
|
|
130
|
+
// httpBodies: [],
|
|
131
|
+
},
|
|
132
|
+
integrations: [Sentry.vercelAIIntegration()],
|
|
133
|
+
});
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Per-Call Telemetry (Required)
|
|
137
|
+
|
|
138
|
+
You **must** pass `experimental_telemetry: { isEnabled: true }` to every AI SDK function
|
|
139
|
+
call you want traced:
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
import { Injectable } from "@nestjs/common";
|
|
143
|
+
import { generateText, streamText } from "ai";
|
|
144
|
+
import { openai } from "@ai-sdk/openai";
|
|
145
|
+
|
|
146
|
+
@Injectable()
|
|
147
|
+
export class AiService {
|
|
148
|
+
async generate(prompt: string) {
|
|
149
|
+
const result = await generateText({
|
|
150
|
+
model: openai("gpt-4o"),
|
|
151
|
+
prompt,
|
|
152
|
+
experimental_telemetry: {
|
|
153
|
+
isEnabled: true,
|
|
154
|
+
functionId: "my-text-generation",
|
|
155
|
+
recordInputs: true,
|
|
156
|
+
recordOutputs: true,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
return result.text;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
async *stream(prompt: string) {
|
|
163
|
+
const { textStream } = await streamText({
|
|
164
|
+
model: openai("gpt-4o"),
|
|
165
|
+
prompt,
|
|
166
|
+
experimental_telemetry: {
|
|
167
|
+
isEnabled: true,
|
|
168
|
+
functionId: "my-stream",
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
yield* textStream;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Vercel AI SDK Configuration Options
|
|
177
|
+
|
|
178
|
+
| Option | Type | Default | Min SDK | Description |
|
|
179
|
+
| --------------- | --------- | ------- | ------- | -------------------------------------------------------------------------- |
|
|
180
|
+
| `recordInputs` | `boolean` | `true`* | 9.27.0 | Capture inputs. *Defaults to `true` (governed by `dataCollection.genAI`). |
|
|
181
|
+
| `recordOutputs` | `boolean` | `true`* | 9.27.0 | Capture outputs. *Defaults to `true` (governed by `dataCollection.genAI`). |
|
|
182
|
+
|
|
183
|
+
**Supported versions:** `ai` ≥3.0.0
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Anthropic Integration
|
|
188
|
+
|
|
189
|
+
### Setup
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
// instrument.ts — customize if needed
|
|
193
|
+
import * as Sentry from "@sentry/nestjs";
|
|
194
|
+
|
|
195
|
+
Sentry.init({
|
|
196
|
+
dsn: process.env.SENTRY_DSN,
|
|
197
|
+
tracesSampleRate: 1.0,
|
|
198
|
+
dataCollection: {
|
|
199
|
+
// To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:
|
|
200
|
+
// https://docs.sentry.io/platforms/javascript/guides/nestjs/configuration/options/#dataCollection
|
|
201
|
+
// userInfo: false,
|
|
202
|
+
// httpBodies: [],
|
|
203
|
+
},
|
|
204
|
+
integrations: [Sentry.anthropicAIIntegration()],
|
|
205
|
+
});
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Manual Wrapping
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
212
|
+
import * as Sentry from "@sentry/nestjs";
|
|
213
|
+
|
|
214
|
+
const anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
|
|
215
|
+
|
|
216
|
+
// Input/output recording is on by default (governed by dataCollection.genAI) unless explicitly overridden.
|
|
217
|
+
const client = Sentry.instrumentAnthropicAiClient(anthropic);
|
|
218
|
+
|
|
219
|
+
const response = await client.messages.create({
|
|
220
|
+
model: "claude-sonnet-4-20250514",
|
|
221
|
+
max_tokens: 1024,
|
|
222
|
+
messages: [{ role: "user", content: "Hello, Claude!" }],
|
|
223
|
+
});
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Supported Anthropic Operations
|
|
227
|
+
|
|
228
|
+
| Operation | Method |
|
|
229
|
+
| --------------- | ------------------------------- |
|
|
230
|
+
| Create messages | `client.messages.create()` |
|
|
231
|
+
| Stream messages | `client.messages.stream()` |
|
|
232
|
+
| Count tokens | `client.messages.countTokens()` |
|
|
233
|
+
| Beta messages | `client.beta.messages.create()` |
|
|
234
|
+
|
|
235
|
+
**Supported versions:** `@anthropic-ai/sdk` ≥0.19.2
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Token Usage Tracking
|
|
240
|
+
|
|
241
|
+
Sentry automatically captures token usage following OpenTelemetry GenAI semantic
|
|
242
|
+
conventions:
|
|
243
|
+
|
|
244
|
+
| Span Attribute | Description |
|
|
245
|
+
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
246
|
+
| `gen_ai.request.model` | Model name |
|
|
247
|
+
| `gen_ai.request.reasoning_effort` | Reasoning effort level for reasoning models (e.g., `low`, `medium`, `high`). Supported values vary by provider. |
|
|
248
|
+
| `gen_ai.usage.input_tokens` | Prompt/input token count |
|
|
249
|
+
| `gen_ai.usage.output_tokens` | Completion/output token count |
|
|
250
|
+
| `gen_ai.usage.input_tokens.cached` | Cached input tokens |
|
|
251
|
+
| `gen_ai.usage.output_tokens.reasoning` | Reasoning tokens (e.g., o1 models) |
|
|
252
|
+
|
|
253
|
+
**Cost estimates** are sourced from models.dev and OpenRouter.
|
|
254
|
+
Unrecognized models show no estimate.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Prompt/Completion Capture & PII
|
|
259
|
+
|
|
260
|
+
`recordInputs` captures prompts sent to the AI API. `recordOutputs` captures the
|
|
261
|
+
generated text/completions returned.
|
|
262
|
+
|
|
263
|
+
With `dataCollection`, genAI input/output capture is **on by default**. To disable it,
|
|
264
|
+
set `dataCollection: { genAI: { inputs: false, outputs: false } }`:
|
|
265
|
+
|
|
266
|
+
```typescript
|
|
267
|
+
Sentry.init({
|
|
268
|
+
dsn: process.env.SENTRY_DSN,
|
|
269
|
+
tracesSampleRate: 1.0,
|
|
270
|
+
dataCollection: {
|
|
271
|
+
genAI: { inputs: false, outputs: false },
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
> ⚠️ **PII warning:** Prompts often contain user-supplied text.
|
|
277
|
+
> If users include personal data in prompts, enabling `recordInputs` will send that data
|
|
278
|
+
> to Sentry. Review your privacy policy before enabling.
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Complete NestJS Example
|
|
283
|
+
|
|
284
|
+
```typescript
|
|
285
|
+
// instrument.ts
|
|
286
|
+
import * as Sentry from "@sentry/nestjs";
|
|
287
|
+
|
|
288
|
+
Sentry.init({
|
|
289
|
+
dsn: process.env.SENTRY_DSN,
|
|
290
|
+
tracesSampleRate: 1.0,
|
|
291
|
+
dataCollection: {
|
|
292
|
+
// To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:
|
|
293
|
+
// https://docs.sentry.io/platforms/javascript/guides/nestjs/configuration/options/#dataCollection
|
|
294
|
+
// userInfo: false,
|
|
295
|
+
// httpBodies: [],
|
|
296
|
+
},
|
|
297
|
+
enableLogs: true,
|
|
298
|
+
integrations: [
|
|
299
|
+
Sentry.openAIIntegration(),
|
|
300
|
+
Sentry.vercelAIIntegration(),
|
|
301
|
+
Sentry.anthropicAIIntegration(),
|
|
302
|
+
],
|
|
303
|
+
});
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
```typescript
|
|
307
|
+
// ai.controller.ts
|
|
308
|
+
import { Controller, Post, Body } from "@nestjs/common";
|
|
309
|
+
import { AiService } from "./ai.service";
|
|
310
|
+
|
|
311
|
+
@Controller("ai")
|
|
312
|
+
export class AiController {
|
|
313
|
+
constructor(private readonly aiService: AiService) {}
|
|
314
|
+
|
|
315
|
+
@Post("chat")
|
|
316
|
+
async chat(@Body() body: { prompt: string }) {
|
|
317
|
+
return this.aiService.chat(body.prompt);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
```typescript
|
|
323
|
+
// ai.service.ts
|
|
324
|
+
import { Injectable } from "@nestjs/common";
|
|
325
|
+
import OpenAI from "openai";
|
|
326
|
+
import * as Sentry from "@sentry/nestjs";
|
|
327
|
+
|
|
328
|
+
@Injectable()
|
|
329
|
+
export class AiService {
|
|
330
|
+
private readonly openai: OpenAI;
|
|
331
|
+
|
|
332
|
+
constructor() {
|
|
333
|
+
this.openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
async chat(prompt: string): Promise<string> {
|
|
337
|
+
const completion = await this.openai.chat.completions.create({
|
|
338
|
+
model: "gpt-4o",
|
|
339
|
+
messages: [{ role: "user", content: prompt }],
|
|
340
|
+
});
|
|
341
|
+
return completion.choices[0].message.content ?? "";
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## AI Agents Dashboard
|
|
349
|
+
|
|
350
|
+
Access at **Sentry → AI → Agents** (or **Insights → AI**).
|
|
351
|
+
|
|
352
|
+
| Tab | What you see |
|
|
353
|
+
| ------------ | ------------------------------------------------------------------------- |
|
|
354
|
+
| **Overview** | Agent runs, error rates, duration, LLM calls, tokens used, tool calls |
|
|
355
|
+
| **Models** | Per-model cost estimates, token breakdown (input/output/cached), duration |
|
|
356
|
+
| **Tools** | Per-tool call counts, error rates, input/output for each invocation |
|
|
357
|
+
| **Traces** | Full pipeline from user request to final response with all spans |
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## Sampling Strategy
|
|
362
|
+
|
|
363
|
+
If your `tracesSampleRate` is below 1.0, you may be losing entire agent runs.
|
|
364
|
+
Use `tracesSampler` patterns that keep 100% of gen_ai-related transactions while
|
|
365
|
+
sampling other traffic at a lower rate.
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## Conversation Tracking
|
|
370
|
+
|
|
371
|
+
Link AI spans across turns into a chat-style timeline at **Explore > Conversations**.
|
|
372
|
+
|
|
373
|
+
**Prerequisites:** `streamGenAiSpans` defaults to `true` (SDK >=10.61.0, so AI spans
|
|
374
|
+
stream as standalone items) and genAI input/output capture enabled (on by default via
|
|
375
|
+
`dataCollection`) — Conversations reconstructs the chat from input/output attributes, so
|
|
376
|
+
if you’ve disabled genAI capture the view will be empty.
|
|
377
|
+
|
|
378
|
+
```typescript
|
|
379
|
+
import * as Sentry from "@sentry/nestjs";
|
|
380
|
+
|
|
381
|
+
// Set at the start of a conversation
|
|
382
|
+
Sentry.setConversationId("conv_abc123");
|
|
383
|
+
|
|
384
|
+
// All subsequent AI calls carry gen_ai.conversation.id: "conv_abc123"
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
A single conversation can span multiple traces, and a single trace can contain multiple
|
|
388
|
+
conversations.
|
|
389
|
+
|
|
390
|
+
### User Attribution
|
|
391
|
+
|
|
392
|
+
To populate the **User** column in Conversations, call `setUser` once per request or
|
|
393
|
+
session before any AI calls:
|
|
394
|
+
|
|
395
|
+
```typescript
|
|
396
|
+
Sentry.setUser({ id: "user_123", email: "jane@example.com", username: "jane" });
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
## Troubleshooting
|
|
400
|
+
|
|
401
|
+
| Issue | Solution |
|
|
402
|
+
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
403
|
+
| No AI spans appearing | Verify `tracesSampleRate` > 0; AI monitoring requires tracing |
|
|
404
|
+
| Token counts missing in streams | Add `stream_options: { include_usage: true }` to all OpenAI streaming calls |
|
|
405
|
+
| `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 |
|
|
406
|
+
| Anthropic spans missing | Check SDK version; add `anthropicAIIntegration()` explicitly |
|
|
407
|
+
| Cost estimates not showing | Model name must match models.dev/OpenRouter pricing data; custom models may show no estimate |
|
|
408
|
+
| Vercel AI spans not tracked | Pass `experimental_telemetry: { isEnabled: true }` to every AI SDK call |
|
|
409
|
+
| No data in AI Agents dashboard | Ensure traces are being sent; check DSN and `tracesSampleRate` |
|
|
410
|
+
| User column shows “Unknown” | Call `Sentry.setUser()` once per request or session |
|