Skip to content

Commit 570e507

Browse files
authored
Merge pull request #16530 from getsentry/prepare-release/9.28.0
meta(changelog): Update changelog for 9.28.0
2 parents e095b15 + 3825f7d commit 570e507

File tree

11 files changed

+334
-144
lines changed

11 files changed

+334
-144
lines changed

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,24 @@
44

55
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
66

7+
## 9.28.0
8+
9+
### Important Changes
10+
11+
- **feat(nestjs): Stop creating spans for `TracingInterceptor` ([#16501](https://github.com/getsentry/sentry-javascript/pull/16501))**
12+
13+
With this change we stop creating spans for `TracingInterceptor` as this interceptor only serves as an internal helper and adds noise for the user.
14+
15+
- **feat(node): Update vercel ai spans as per new conventions ([#16497](https://github.com/getsentry/sentry-javascript/pull/16497))**
16+
17+
This feature ships updates to the span names and ops to better match OpenTelemetry. This should make them more easily accessible to the new agents module view we are building.
18+
19+
### Other Changes
20+
21+
- fix(sveltekit): Export `vercelAIIntegration` from `@sentry/node` ([#16496](https://github.com/getsentry/sentry-javascript/pull/16496))
22+
23+
Work in this release was contributed by @agrattan0820. Thank you for your contribution!
24+
725
## 9.27.0
826

927
- feat(node): Expand how vercel ai input/outputs can be set ([#16455](https://github.com/getsentry/sentry-javascript/pull/16455))

dev-packages/e2e-tests/test-applications/nestjs-fastify/tests/transactions.test.ts

Lines changed: 6 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -112,36 +112,6 @@ test('Sends an API route transaction', async ({ baseURL }) => {
112112
op: 'request_context.nestjs',
113113
origin: 'auto.http.otel.nestjs',
114114
},
115-
{
116-
span_id: expect.stringMatching(/[a-f0-9]{16}/),
117-
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
118-
data: {
119-
'sentry.origin': 'auto.middleware.nestjs',
120-
'sentry.op': 'middleware.nestjs',
121-
},
122-
description: 'SentryTracingInterceptor',
123-
parent_span_id: expect.stringMatching(/[a-f0-9]{16}/),
124-
start_timestamp: expect.any(Number),
125-
timestamp: expect.any(Number),
126-
status: 'ok',
127-
op: 'middleware.nestjs',
128-
origin: 'auto.middleware.nestjs',
129-
},
130-
{
131-
span_id: expect.stringMatching(/[a-f0-9]{16}/),
132-
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
133-
data: {
134-
'sentry.origin': 'auto.middleware.nestjs',
135-
'sentry.op': 'middleware.nestjs',
136-
},
137-
description: 'SentryTracingInterceptor',
138-
parent_span_id: expect.stringMatching(/[a-f0-9]{16}/),
139-
start_timestamp: expect.any(Number),
140-
timestamp: expect.any(Number),
141-
status: 'ok',
142-
op: 'middleware.nestjs',
143-
origin: 'auto.middleware.nestjs',
144-
},
145115
{
146116
span_id: expect.stringMatching(/[a-f0-9]{16}/),
147117
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
@@ -183,29 +153,19 @@ test('Sends an API route transaction', async ({ baseURL }) => {
183153
status: 'ok',
184154
origin: 'manual',
185155
},
186-
{
187-
span_id: expect.stringMatching(/[a-f0-9]{16}/),
188-
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
189-
data: {
190-
'sentry.origin': 'auto.middleware.nestjs',
191-
'sentry.op': 'middleware.nestjs',
192-
},
193-
description: 'Interceptors - After Route',
194-
parent_span_id: expect.stringMatching(/[a-f0-9]{16}/),
195-
start_timestamp: expect.any(Number),
196-
timestamp: expect.any(Number),
197-
status: 'ok',
198-
op: 'middleware.nestjs',
199-
origin: 'auto.middleware.nestjs',
200-
},
201156
]),
157+
start_timestamp: expect.any(Number),
158+
timestamp: expect.any(Number),
202159
transaction: 'GET /test-transaction',
203-
type: 'transaction',
204160
transaction_info: {
205161
source: 'route',
206162
},
163+
type: 'transaction',
207164
}),
208165
);
166+
167+
const spanDescriptions = transactionEvent.spans.map(span => span.description);
168+
expect(spanDescriptions).not.toContain('SentryTracingInterceptor');
209169
});
210170

211171
test('API route transaction includes nest middleware span. Spans created in and after middleware are nested correctly', async ({

dev-packages/e2e-tests/test-applications/sveltekit-2-svelte-5/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"@sentry-internal/test-utils": "link:../../../test-utils",
2424
"@sentry/core": "latest || *",
2525
"@sveltejs/adapter-auto": "^3.0.0",
26-
"@sveltejs/kit": "^2.0.0",
26+
"@sveltejs/kit": "2.21.2",
2727
"@sveltejs/vite-plugin-svelte": "^3.0.0",
2828
"svelte": "^5.0.0-next.115",
2929
"svelte-check": "^3.6.0",

dev-packages/e2e-tests/test-applications/sveltekit-2/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"@sentry/core": "latest || *",
2424
"@sveltejs/adapter-auto": "^3.0.0",
2525
"@sveltejs/adapter-node": "^2.0.0",
26-
"@sveltejs/kit": "^2.16.0",
26+
"@sveltejs/kit": "2.21.2",
2727
"@sveltejs/vite-plugin-svelte": "^3.0.0",
2828
"svelte": "^4.2.8",
2929
"svelte-check": "^3.6.0",

dev-packages/e2e-tests/test-applications/sveltekit-cloudflare-pages/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"devDependencies": {
2121
"@playwright/test": "^1.45.3",
2222
"@sveltejs/adapter-cloudflare": "^5.0.3",
23-
"@sveltejs/kit": "^2.17.2",
23+
"@sveltejs/kit": "2.21.2",
2424
"@sveltejs/vite-plugin-svelte": "^5.0.3",
2525
"svelte": "^5.20.2",
2626
"svelte-check": "^4.1.4",

dev-packages/node-integration-tests/suites/tracing/vercelai/scenario.mjs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import * as Sentry from '@sentry/node';
22
import { generateText } from 'ai';
33
import { MockLanguageModelV1 } from 'ai/test';
4+
import { z } from 'zod';
45

56
async function run() {
67
await Sentry.startSpan({ op: 'function', name: 'main' }, async () => {
@@ -30,6 +31,35 @@ async function run() {
3031
prompt: 'Where is the second span?',
3132
});
3233

34+
// This span should include tool calls and tool results
35+
await generateText({
36+
model: new MockLanguageModelV1({
37+
doGenerate: async () => ({
38+
rawCall: { rawPrompt: null, rawSettings: {} },
39+
finishReason: 'tool-calls',
40+
usage: { promptTokens: 15, completionTokens: 25 },
41+
text: 'Tool call completed!',
42+
toolCalls: [
43+
{
44+
toolCallType: 'function',
45+
toolCallId: 'call-1',
46+
toolName: 'getWeather',
47+
args: '{ "location": "San Francisco" }',
48+
},
49+
],
50+
}),
51+
}),
52+
tools: {
53+
getWeather: {
54+
parameters: z.object({ location: z.string() }),
55+
execute: async args => {
56+
return `Weather in ${args.location}: Sunny, 72°F`;
57+
},
58+
},
59+
},
60+
prompt: 'What is the weather in San Francisco?',
61+
});
62+
3363
// This span should not be captured because we've disabled telemetry
3464
await generateText({
3565
experimental_telemetry: { isEnabled: false },

0 commit comments

Comments
 (0)