Aayush Kapoor
83492835+aayush-kapoor@users.noreply.github.com
90d · built 2026-05-28
90-day totals
- Commits
- 128
- Grow
- 10.0
- Maintenance
- 17.8
- Fixes
- 3.8
- Total ETV
- 31.6
Where this dev ranks
Percentile against the global top-100 leaderboard (all-time totals).
- By commits
- Top 80 %
- By Growth share
- Top 63 %
30-day trajectory
Last 30 days vs. the 30 days before. Up arrows on Growth and ETV mean improvement; up arrow on Fixes share means more time on fixes (worse).
Daily performance
Daily ETV, stacked by Growth, Maintenance and Fixes.
Work-mix over time
Share of Growth / Maintenance / Fixes over a rolling 7-day window. Reads as 'where is effort flowing right now'.
Bug flow over time
Monthly bug flow attributed to this developer. The left bar (red) is bug impact this dev authored that was addressed in the given month — combining bugs others fixed for them and bugs they fixed themselves. The right bar is fixes they personally shipped that month, split between self-fixes (overlap with the red bar) and fixes done for someone else. X-axis is fix-time, not introduction-time — the Navigara API attributes bugs backward to the author at the moment the fix lands.
- Self-fix share
- 16%
- Bugs you introduced
- 2.7
- Bugs you fixed
- 7.4
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 20 by ETV in the 90-day window.
- 1.6ETVfeat(devtools): add new devtools integration for telemetry (#14207) ## Background our devtools setup currently uses middleware to extract event info this needed to change since we now expose all the events that will be needed by devtools to initialise the spans replacement for https://github.com/vercel/ai/pull/12868 ## Summary - create new `devToolsIntegration()` that extends on the telemetry integration api - add a trace/span viewer that properly maps each step ## Manual Verification verified by running the example `examples/ai-functions/src/generate-text/anthropic/subagent-with-telemetry.ts` ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [ ] I have reviewed this pull request (self-review)github.com-vercel-ai · e27ed76b · 2026-04-10
- 1.3ETVfeat(mcp): add support for MCP Apps (#15041) ## Background https://github.com/vercel/ai/issues/12053 https://github.com/vercel/ai/issues/11651 The MCP spec allows connecting hosts to MCP apps (which offer a specialised UI along with tool calls) https://apps.extensions.modelcontextprotocol.io/api/index.html ## Summary - `mcp-client.ts` in the example creates a client with `mcpAppClientCapabilities`. That capability is added in `packages/mcp/src/tool/mcp-apps.ts` - chat route calls `client.listTools()`, then `splitMCPAppTools()`, then passes only modelVisible tools to streamText. This keeps app-only tools away from the model - `packages/mcp/src/tool/mcp-client.ts` now preserves MCP App metadata on converted AI SDK tools under `metadata.mcp.app` - `page.tsx` passes tool UI parts to `MCPAppRenderer`. The renderer reads part.callProviderMetadata.mcp.app, loads the resource through the host route, then renders it via a sandbox iframe - Iframe talks back through JSON-RPC - `packages/react/src/mcp-apps/bridge.ts` handles ui/initialize, tool input/result notifications, tools/call, resources/read, display mode requests, logs etc. this exists for the host to communicate with the mcp server ## Manual Verification `http://localhost:3000/chat/mcp-apps` ## Checklist - [x] All commits are signed (PRs with unsigned commits cannot be merged) - [x] Tests have been added / updated (for bug fixes / features) - [x] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review) ## Related Issues fixes #11651 and #12053github.com-vercel-ai · 611f6219 · 2026-05-07
- 1.0ETVfeat(otel): add the genAI semantic otel integration (#14053) ## Background follow up to the pr https://github.com/vercel/ai/pull/13989 the ai sdk only emitted otel spans with traces beginning with `ai*` and not `gen_ai*` thereby not aligning with the OpenTelemetry GenAI semantic conventions (https://opentelemetry.io/docs/specs/semconv/gen-ai/) ## Summary - introduced a new `GenAIOpenTelemetryIntegration()` that users can use to emit traces that conform to the semantic convention - helper functions added in `gen-ai-format-messages.ts` that allow converting AI SDK internal types to OTel GenAI semantic conventions ## Manual Verification verified by running some of the telemetry examples ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · fc155508 · 2026-04-07
- 0.9ETVfeat(openai): add new tool search tool (#13157) ## Background OpenAI introduced a new tool along with the release of GPT 5.4 https://developers.openai.com/api/docs/guides/tools-tool-search API spec here: https://developers.openai.com/api/reference/resources/responses/methods/retrieve ## Summary - added the new tool spec - ensure tool conversion takes place properly ## Manual Verification verified by running the examples: - `examples/ai-functions/src/generate-text/openai/responses-tool-search.ts` - `examples/ai-functions/src/stream-text/openai/responses-tool-search.ts` - `examples/ai-functions/src/generate-text/openai/responses-client-tool-search.ts` - `examples/ai-functions/src/stream-text/openai/responses-client-tool-search.ts` - UI examples - ran `http://localhost:3000/chat/openai-tool-search` with store:false and store:true - `http://localhost:3000/chat/openai-tool-search-client` with store:false and store:true ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [x] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · 156cdf06 · 2026-03-17
- 0.8ETVfeat(ai): add experimental callbacks for structured outputs (#13813) ## Background as an ongoing effort to decouple otel from the core functions, this PR is follow up work for https://github.com/vercel/ai/pull/13051 ## Summary - added ObjectOnStartEvent that exposes the data/events that happen at the very beginning - added ObjectOnFinishEvent - added ObjectOnStepStartEvent - added ObjectOnStepFinishEvent - did not need onToolCallStart since generateObject only ran for one step! ## Manual Verification na ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · bc67b4f6 · 2026-03-30
- 0.8ETVfeat(provider): adding new 'custom' content type (#13327) ## Background there are situations where a model provider will return a content type that is neither a text, reasoning, tool etc type. and thus in the AISDK, it can't be mapped properly through the flow ## Summary - add a new `custom` content type - ensure it flows properly through the core functions and through to UI ## Manual Verification not yet ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · 776b6170 · 2026-03-18
- 0.8ETVchore(openai-compat): update v3 specs to v4 (#13424) ## Background the package providers still relied on V3 specs instead of the v4 ones (for main branch) ## Summary following packages were updated to use v4 spec - started for `baseten` - relied on `openai-compat`, on which relied - `cerebras` - `deepinfra` - `fireworks` - `moonshotai` - `togetherai` - `vercel` ## Manual Verification na ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · 8f3e1da1 · 2026-03-16
- 0.7ETVfeat(ai): register global telemetry integrations (#13028) ## Background this is added to the core functions such as generate, stream, agent so that o11y providers can register their packages using the global integration interface separately and don't need to be added in the core functions ## Summary wire the `TelemetryIntegration` system into core functions so that any integration specified via telemetry.integrations automatically receives all lifecycle events. ## Manual Verification na ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · 2129c82e · 2026-03-03
- 0.7ETVfeat(ai): change naming nomenclature for '*TelemetryIntegration' to '*Telemetry' (#14559) ## Background the naming of certain functions and classes needed to be aligned to a unified nomenclature ## Summary - renamed `OpenTelemetryIntegration` -> `OpenTelemetry` - renamed `GenAIOpenTelemetryIntegration` -> `GenAIOpenTelemetry` - renamed `registerTelemetryIntegration` -> `registerTelemetry` - renamed `TelemetryIntegration` -> `Telemetry` ## Manual Verification na ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [x] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · 6542d934 · 2026-04-17
- 0.7ETVchore(anthropic/bedrock/vertex): update v3 specs to v4 (#13374) ## Background the package providers still relied on V3 specs instead of the v4 ones (for main branch) ## Summary - update to use v4 spec ## Manual Verification na ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · e748b35e · 2026-03-13
- 0.7ETVfeat(google-vertex): add support for streaming tool arguments input (#13929) ## Background google vertex announced that models on vertex can stream the arguments of a single function call in multiple parts/contents/responses. the aisdk supports this via `tool-input-delta` but google vertex needed more plumbing https://github.com/vercel/ai/issues/11126 ## Summary - emit warning when using this config with non-vertex providers - Vertex sends the arguments as `partialArgs` objects with typed values and JSON paths ```json { "jsonPath": "$.location", "stringValue": "Boston", "willContinue": true } { "jsonPath": "$.location", "stringValue": ", MA" } { "jsonPath": "$.brightness", "numberValue": 50 } ``` which needs to be concatenated across chunks. and hence we need a tracking state in `accumulatedArgs` - we need `applyPartialArgs` function to do the conversion for `tool-input-delta` expecting a string instead of an object - we also track tool call boundaries - google signals start with `name` + `willContinue: true` and end with an empty functionCall: {} ## Manual Verification verified by running `examples/ai-functions/src/stream-text/google/vertex-stream-function-call-args.ts` with and without the providerOption defined ### before https://github.com/user-attachments/assets/b4f921e2-60b4-429f-8556-526ffa4e0de0 ### after https://github.com/user-attachments/assets/bb29d1b8-787e-4f42-a395-23de34ec2d94 ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review) ## Related Issues fixes #11126github.com-vercel-ai · 5036db89 · 2026-04-09
- 0.6ETVfeat(openai): upgrade v3 specs to v4 (#13333) ## Background some of the packages/providers are still dependent on LangaugeModelV3 specs (among other V3 specs) this was a blocker for the change in https://github.com/vercel/ai/pull/13327 and thus needs to be addressed first ## Summary - upgrade all types to LanguageModelV4 (V4 in general) for: - `openai` - `azure` - `rsc` ## Manual Verification na ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review) ## Future Work needs to be done for remaining providersgithub.com-vercel-ai · 83f9d04d · 2026-03-10
- 0.6ETVfix(mcp): prevent prototype pollution by using secureJsonParse (#14763) ## Background alternate to https://github.com/vercel/ai/pull/14313 Prototype pollution vulnerabilities exist in MCP transports and mergeObjects. MCP transports use raw JSON.parse() on data from untrusted MCP servers, and mergeObjects deep-merges without filtering dangerous keys like __proto__, constructor, or prototype. See https://github.com/vercel/ai/issues/14309. ## Summary - replace `JSON.parse()` with `secureJsonParse()` - skip __proto__, constructor, and prototype keys during the merge loop ## Manual Verification na ## Checklist - [x] All commits are signed (PRs with unsigned commits cannot be merged) - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review) ## Related Issues fixes #14309github.com-vercel-ai · 9b0bc8ae · 2026-04-28
- 0.6ETVfeat(ai): remove telemetry data from the user-facing event data (#14606) ## Background We were passing telemetry options/data to every core event which was not needed (at least not for the user facing events) ## Summary Changed it so that the telemetry data is passed when unifying user facing callbacks with the provider facing ones so that provider implementations of `Telemetry` interface still get all the information. This is verified by some tests breaking in `ai` and no tests breaking in `otel` / `devtools` package ## Manual Verification verified by running the example `examples/ai-functions/src/generate-text/anthropic/subagent-with-telemetry.ts` - the functionID defined in this example is still observed in the final trace ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [x] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review) ## Future Work - look into adding a `type: event-type` property to core-eventsgithub.com-vercel-ai · 116c89f0 · 2026-04-21
- 0.6ETVfeat(otel): add opt-in options for supplemental AI SDK attributes on OpenTelemetry spans (#14800) ## Background we will most likely be deprecating the `LegacyOpenTelemetry` class. but for users that still need AI SDK specific attributes (not spans), we should consider adding an opt-in option that will allow users to log those attributes this is for information that is not already conveyed through gen_ai spans/attributes ## Summary emit LegacyOpenTelemetry `ai_*` attributes in OpenTelemetry when users want to opt in ```ts registerTelemetry( new OpenTelemetry({ usage: true, providerMetadata: true, runtimeContext: true, }), ); ``` ## Manual Verification verified by running the examples: - `examples/ai-functions/src/generate-text/anthropic/subagent-with-telemetry.ts` - `examples/ai-functions/src/telemetry/otel/generate-text-tool-call.ts` ## Checklist - [x] All commits are signed (PRs with unsigned commits cannot be merged) - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · 18651f6f · 2026-04-30
- 0.6ETVfeat(ai): add a ModelCall start/end event (#14706) ## Background the telemetry event hierarchy was changed as a part of the PR https://github.com/vercel/ai/pull/14614. there was future work to define new event types that would limit the boundaries of each event and keep scope clean (for example, the duration of the chat span in the linked PR spans across tool execution when it shouldn't) ## Summary new event types added `LanguageModelCallStart` and `LanguageModelCallEnd` that limit the scope of that event to be fired just when a model is called and to stop before a tool execution happens ## Manual Verification haven't verified shape yet ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [x] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · 10432742 · 2026-04-24
- 0.6ETVfeat(anthropic): add the new advisor tool (#15171) ## Background https://github.com/vercel/ai/issues/14285 Anthropic released a new tool (https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool) that lets a faster, lower cost executor model consult a higher intelligence advisor model mid generation for strategic guidance ## Summary - added the new tool spec - mapping for new usage iteration (the advisor tool usage isn't grouped into the top level usage tokens) ## Manual Verification verified by running: - `examples/ai-functions/src/stream-text/anthropic/advisor-20260301.ts` - `examples/ai-functions/src/generate-text/anthropic/advisor-20260301.ts` - `http://localhost:3000/chat/anthropic-advisor-tool` ## Checklist - [x] All commits are signed (PRs with unsigned commits cannot be merged) - [x] Tests have been added / updated (for bug fixes / features) - [x] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review) ## Related Issues fixes #14285github.com-vercel-ai · 80184803 · 2026-05-12
- 0.5ETVfeat(ai): introduce experimental callbacks for embed function (#13478) ## Background In order to completely decouple OTel from the `ai` package, we need to align all the core functions to emit event data at each step for each of the functions. We made similar changes to generateText and streamText when we introduced `experimental_*` (onStart, onStepStart, onFinish etc) and the same changes/callbacks needed to be added for the embed function ## Summary - introduce the `onStart` and `onFinish` callbacks (experimental) - create new interfaces for both of those events for proper type safety - change added for `embed` and `embedMany` ## Manual Verification na ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [x] Documentation has been added / updated (for bug fixes / features) - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review) ## Future Work decouple otel from the embed and embedMany function and move integration to `open-telemetry-integration`github.com-vercel-ai · ff9ce30b · 2026-03-18
- 0.5ETVchore(ai): refactor telemetry tests to be under apt folder (#13943) ## Background as we move to completely decouple otel from `ai`, the tests should also follow the same pattern ## Summary - move all the telemetry tests from generateText into open-telemetry-integration test file - move all the telemetry tests from streamText ## Manual Verification na ## Checklist - [x] Tests have been added / updated (for bug fixes / features) - [ ] Documentation has been added / updated (for bug fixes / features) - [ ] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review)github.com-vercel-ai · c4f1bebc · 2026-03-31
- 0.5ETVfeat(ai): wrap the model call in telemetry context (#15479) ## Background continuing from https://github.com/vercel/ai/pull/14732 There seems to be a regression with telemetry spans from v6 -> v7 where the AI Gateway stream fetch request spans seem to be disconnected from the AI SDK traces. For v6, those requests were visibly child spans. In v7, the AI Gateway requests are not child spans. The reason seems to be that in v6, we used to wrap the entire doStream model call with OpenTelemetry context and so all subsequent calls/requests were nested properly ## Summary introduce another helper execute composite (similar to what we do for tool execution `executeTools`) that will help wrap the language model calls for generate text and stream text ## Manual Verification na ## Checklist - [x] All commits are signed (PRs with unsigned commits cannot be merged) - [x] Tests have been added / updated (for bug fixes / features) - [ ] ~~Documentation has been added / updated (for bug fixes / features)~~ - [x] A _patch_ changeset for relevant packages has been added (for bug fixes / features - run `pnpm changeset` in the project root) - [x] I have reviewed this pull request (self-review) ## Future Work monitor issues for any regressionsgithub.com-vercel-ai · 594029ea · 2026-05-27