Skip to content

feat(ai-ui-message-stream): bridge TanStack AI and the AI SDK UI message stream - #1893

Draft
tombeckenham wants to merge 7 commits into
mainfrom
feat/ai-ui-message-stream
Draft

tombeckenham wants to merge 7 commits into
mainfrom
feat/ai-ui-message-stream

Conversation

@tombeckenham

Copy link
Copy Markdown
Contributor

Port an app from the Vercel AI SDK to TanStack AI one side at a time. This is a stop gap while porting, not a long-term integration. The new @tanstack/ai-ui-message-stream package serves AI SDK useChat (and AI Elements) from chat(), and lets TanStack useChat call an AI SDK streamText route. Text, reasoning, tools, tool approvals, activity, subagents and stream resume cross in both directions.

🎯 Changes

  • New package @tanstack/ai-ui-message-stream. It converts between AG-UI events and the AI SDK v7 UI message stream, and between the two message history shapes.
    • Server: chatParamsFromAISDKRequest, toUIMessageStream, toResumableUIMessageStreamResponse, resumeUIMessageStreamResponse.
    • Client: fromChatTransport(transport, { threadId, tools }) wraps any AI SDK ChatTransport, so fetch, SSE and request options stay in AI SDK code.
  • Mappings:
    • A tool approval becomes tool-approval-request on one side and a bound tool-approval interrupt on the other.
    • Activity and subagents become AI SDK data parts that update in place by id.
    • Shared state goes from a TanStack server to an AI SDK client only, because the AI SDK client does not send state.
    • The reasoning signature round-trips.
    • Provider data round-trips: Gemini thoughtSignature and OpenAI item ids on tool calls, provider-executed tools (web search) and their sources, step boundaries, and model, response ids and usage in message metadata.
    • AG-UI event order is kept: TOOL_CALL_END waits for an approval or output of the same call, so no metadata event follows it.
  • More for TanStack useChat on an AI SDK route (merged in from the stacked feat(ai-ui-message-stream): client tools, structured output and reconnect for AI SDK routes #1891):
    • Client tools go to the route in the request body. clientToolsFromAISDKBody(body, serverTools) reads them there, so the route needs no copy. WebMCP page tools work too.
    • With outputSchema, an Output.object answer is a typed structured-output part with partial objects.
    • A dropped stream reconnects with TanStack's backoff, set with the reconnect option. @tanstack/ai-client exports createReconnectTracker for this and is now a required peer.
    • Tests show that client persistence, the message queue, devtools and loading saved AI SDK chats work over the bridge.
  • Docs: two new migration guides (ai-sdk-client-tanstack-server, tanstack-client-ai-sdk-server) and a compatibility reference (ai-sdk-compatibility) that lists, per feature, event and message part, what crosses as is, what is mapped or grouped, and what is dropped. Each page says the bridge is a stop gap. All are linked from "From Vercel AI SDK". The tanstack-ai-migration skill is updated.
  • Changeset: minor for the new package.

The converters started from the Cloudflare Agents fork (tombeckenham/agents-tom, branch ag-ui-canonical) and were rewritten on @ag-ui/core 1.0 and ai 7 types.

✅ Checklist

  • I have followed the steps in the Contributing guide.
  • I have tested code changes locally with pnpm run test:pr, or these tests do not apply to this pull request.
  • I fully understand the code in this pull request, including any code generated with AI assistance.
  • Docs: I updated docs/ for this change, or this change is not user-facing.
  • Changeset: I added a changeset (pnpm changeset), or this PR does not change a published package.

🚀 Release Impact

  • This change affects published code, and I have generated a changeset.
  • This change is docs/CI/dev-only (no release).

Testing

Commands run

  • In packages/ai-ui-message-stream: vitest run (48 passed), test:types, test:oxlint, test:build (publint).
  • In packages/ai-client: test:types, test:oxlint.
  • knip on the package, pnpm test:sherif, pnpm test:docs, and kiira check on the new and changed docs (all snippets pass).
  • pnpm nx run @tanstack/ai-e2e:test:types.
  • Not run locally: pnpm test:pr and the E2E suite. CI runs them.

Manual test

  1. Run pnpm --filter @tanstack/ai-e2e test:e2e -- --grep "AI SDK UI message stream".
  2. Open /ai-sdk-client in the e2e app. The AI SDK useChat page streams a chat() reply with a server tool.
  3. Open /ai-sdk-client?prompt=Delete%20notes.txt and click approve. The tool runs and the reply continues.
  4. Open /ai-sdk-server. TanStack useChat streams the reply of an AI SDK streamText route.

How this PR makes testing easy

  • Unit tests in packages/ai-ui-message-stream/tests/ run each direction through the real ai reader, real chat() with fakeText, and a real ChatClient.
  • E2E: testing/e2e/tests/ui-message-stream.spec.ts has 6 scenarios: text and tools both ways, approvals both ways, activity, and resume after a reload.

Risk / rollback

The package is new, and no existing package imports it. Revert the PR to remove it. The resume-after-reload E2E test depends on timing and is the most likely to be flaky.

Public API change

Before: AI SDK useChat cannot read a chat() route.

After

// Server: AI SDK useChat, TanStack chat()
const params = await chatParamsFromAISDKRequest(request)
const stream = chat({ adapter: openaiText('gpt-6.1-sol'), ...params })
return createUIMessageStreamResponse({ stream: toUIMessageStream(stream) })

// Client: TanStack useChat, AI SDK route
useChat({
  threadId,
  tools,
  outputSchema,
  connection: fromChatTransport(new DefaultChatTransport({ api: '/api/chat' }), {
    threadId,
    tools,
    outputSchema,
  }),
})

// AI SDK route: read the client's tools
streamText({ model, messages, tools: clientToolsFromAISDKBody(body, { getWeather }) })

@tanstack/ai-client also exports createReconnectTracker.

tombeckenham and others added 7 commits October 23, 2026 15:32
…age stream

Add @tanstack/ai-ui-message-stream. Serve AI SDK useChat from chat() with
chatParamsFromAISDKRequest and toUIMessageStream, or point TanStack useChat
at an AI SDK route with fromChatTransport. Text, reasoning, tools, client
tools, tool approvals, activity, subagents and stream resume cross the
bridge. Shared state goes from a TanStack server to an AI SDK client.

Adds unit tests against the real ai and @tanstack/ai-client code, E2E
scenarios, two migration docs pages, and the migration skill update.
…idge as a stop gap

Add a reference page that lists, per feature, event and message part, what
crosses the bridge as is, what is mapped or grouped, and what is dropped.
Say on every page that the bridge is a stop gap while porting.
…r-executed tools

An audit of both wires found data the bridge dropped that providers need:

- Tool-call provider metadata (Gemini thoughtSignature, OpenAI item ids)
  now round-trips through callProviderMetadata in both directions.
- Provider-executed tools (web search) keep their flag, so neither client
  runs them, and their sources become source-url chunks.
- Steps map to start-step / STEP_* events, and the history sent to an AI
  SDK route gets step-start parts, so a tool loop keeps its order.
- Model, response ids and usage go into message metadata, and come back
  for OpenAI Responses replay.
- The approval signature, descriptor and automatic approvals are kept.
- System messages are no longer sent to an AI SDK route, and a finished
  structured output goes back as text.

TOOL_CALL_END now waits for an approval or output of the same call, so
late metadata never follows TOOL_CALL_END. The compatibility table is
rewritten from the new mappings and aligned.
…nect for AI SDK routes

TanStack useChat gets more from an AI SDK route:

- fromChatTransport sends the client's tool declarations in the request
  body. clientToolsFromAISDKBody(body, serverTools) turns them into AI SDK
  tools without execute on the route, so client and WebMCP tools need no
  copy there. Server tools win a name clash.
- With outputSchema, an Output.object answer becomes a typed
  structured-output part with partial objects and a checked final value.
- A dropped stream reconnects with createReconnectTracker, the backoff of
  the TanStack HTTP connections, set with the reconnect option.
  @tanstack/ai-client now exports createReconnectTracker.

Tests prove client persistence, the message queue, devtools and loading
saved AI SDK chats over the bridge.
@changeset-bot

changeset-bot Bot commented Oct 23, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a576436

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
Name Type
@tanstack/ai-ui-message-stream Minor
@tanstack/ai-client Patch
ag-ui Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​@​ai-sdk/​openai@​4.0.99731009498100
Addednpm/​@​ai-sdk/​react@​4.0.152991007598100
Addednpm/​ai@​7.0.1489910010099100

View full report

@nx-cloud

nx-cloud Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit a576436

Command Status Duration Result
nx run-many --targets=build --exclude=examples/... ✅ Succeeded 5s View ↗

☁️ Nx Cloud last updated this comment at 2026-10-23 07:57:22 UTC

@github-actions

Copy link
Copy Markdown
Contributor

Coverage

✅ Coverage held across 75 compared package(s).

Each package is measured twice in this job — on this PR and on its merge-base with main — and compared. A metric fails only when it is at or above 60% on the merge-base and under 60% on this PR. Other drops are listed but do not fail. Packages your PR doesn't affect are not measured and not listed.

package statements branches functions lines
ai 91.95% (0.00) 85.79% (0.00) 92.12% (0.00) 93.54% (0.00) ok
ai-acp 83.04% (0.00) 71.25% (0.00) 79.01% (0.00) 84.93% (0.00) ok
ai-angular 73.83% (0.00) 60.89% (0.00) 61.83% (0.00) 75.40% (0.00) ok
ai-anthropic 93.19% (0.00) 88.31% (0.00) 95.93% (0.00) 93.70% (0.00) ok
ai-bedrock 90.05% (0.00) 82.59% (0.00) 94.20% (0.00) 91.27% (0.00) ok
ai-byteplus 97.05% (0.00) 91.62% (0.00) 98.27% (0.00) 98.48% (0.00) ok
ai-claude-code 88.90% (0.00) 76.88% (0.00) 86.66% (0.00) 90.38% (0.00) ok
ai-client 87.81% (0.00) 79.97% (0.00) 87.01% (0.00) 90.13% (0.00) ok
ai-cloudflare 85.76% (0.00) 77.52% (0.00) 85.48% (0.00) 86.94% (0.00) ok
ai-code-mode 93.47% (0.00) 85.63% (0.00) 92.04% (0.00) 94.44% (0.00) ok
ai-code-mode-snippets 87.13% (0.00) 75.67% (0.00) 91.11% (0.00) 88.39% (0.00) ok
ai-codex 94.53% (0.00) 85.10% (0.00) 89.09% (0.00) 95.54% (0.00) ok
ai-cohere 88.97% (0.00) 88.37% (0.00) 85.71% (0.00) 91.80% (0.00) ok
ai-compaction 97.41% (0.00) 92.89% (0.00) 100.00% (0.00) 98.89% (0.00) ok
ai-computer-local 97.29% (0.00) 85.71% (0.00) 88.00% (0.00) 96.84% (0.00) ok
ai-computer-playwright 100.00% (0.00) 100.00% (0.00) 100.00% (0.00) 100.00% (0.00) ok
ai-computer-sandbox 96.20% (0.00) 84.37% (0.00) 100.00% (0.00) 95.94% (0.00) ok
ai-computer-use 96.95% (0.00) 92.63% (0.00) 100.00% (0.00) 99.45% (0.00) ok
ai-devtools 83.13% (0.00) 72.77% (0.00) 87.07% (0.00) 85.22% (0.00) ok
ai-durable-stream 86.70% (0.00) 82.25% (0.00) 92.30% (0.00) 88.72% (0.00) ok
ai-elevenlabs 74.68% (0.00) 69.59% (0.00) 59.13% (0.00) 75.46% (0.00) ok
ai-event-client 56.83% (0.00) 48.07% (0.00) 68.96% (0.00) 58.33% (0.00) ok
ai-fal 91.10% (0.00) 82.63% (0.00) 92.40% (0.00) 91.60% (0.00) ok
ai-gemini 67.97% (0.00) 67.21% (0.00) 63.83% (0.00) 68.60% (0.00) ok
ai-grok 48.80% (0.00) 53.49% (0.00) 56.46% (0.00) 49.63% (0.00) ok
ai-grok-build 79.14% (0.00) 63.56% (0.00) 76.99% (0.00) 80.97% (0.00) ok
ai-groq 51.30% (0.00) 47.73% (0.00) 67.39% (0.00) 53.42% (0.00) ok
ai-harness 93.79% (+0.01) 88.07% (0.00) 93.62% (+0.02) 95.58% (+0.01) ok
ai-harness-cli 91.08% (0.00) 83.24% (0.00) 83.85% (0.00) 92.12% (0.00) ok
ai-isolate-cloudflare 94.11% (0.00) 70.66% (0.00) 100.00% (0.00) 93.96% (0.00) ok
ai-isolate-daytona 90.25% (0.00) 80.59% (0.00) 100.00% (0.00) 90.15% (0.00) ok
ai-isolate-e2b 92.11% (0.00) 82.22% (+0.74) 97.36% (0.00) 95.05% (0.00) ok
ai-isolate-node 84.00% (0.00) 43.39% (0.00) 100.00% (0.00) 83.78% (0.00) ok
ai-isolate-quickjs 89.07% (0.00) 76.41% (0.00) 90.90% (0.00) 90.30% (0.00) ok
ai-isolate-quickjs-bun 7.76% (0.00) 8.08% (0.00) 5.00% (0.00) 8.33% (0.00) ok
ai-llmgateway 97.77% (0.00) 100.00% (0.00) 88.88% (0.00) 97.77% (0.00) ok
ai-lovable 73.21% (0.00) 55.63% (0.00) 85.07% (0.00) 73.96% (0.00) ok
ai-mcp 94.69% (0.00) 89.38% (0.00) 96.80% (0.00) 96.84% (0.00) ok
ai-memory 73.87% (0.00) 52.70% (0.00) 79.74% (0.00) 76.04% (0.00) ok
ai-mistral 84.75% (0.00) 79.82% (0.00) 92.59% (0.00) 85.39% (0.00) ok
ai-neon 95.34% (0.00) 88.88% (0.00) 94.73% (0.00) 96.85% (0.00) ok
ai-octane 91.19% (0.00) 68.26% (0.00) 87.44% (0.00) 91.47% (0.00) ok
ai-ollama 93.80% (0.00) 80.92% (0.00) 90.62% (0.00) 93.76% (0.00) ok
ai-ollaya 86.84% (0.00) 89.28% (0.00) 85.71% (0.00) 91.66% (0.00) ok
ai-openai 65.36% (0.00) 65.83% (0.00) 66.99% (0.00) 65.80% (0.00) ok
ai-opencode 70.50% (0.00) 62.29% (0.00) 66.32% (0.00) 72.12% (0.00) ok
ai-openrouter 88.28% (0.00) 73.44% (0.00) 90.78% (0.00) 90.23% (0.00) ok
ai-perplexity 91.34% (0.00) 90.43% (0.00) 100.00% (0.00) 93.87% (0.00) ok
ai-persistence 92.06% (0.00) 78.91% (0.00) 97.81% (0.00) 96.01% (0.00) ok
ai-preact 86.50% (0.00) 71.00% (0.00) 87.50% (0.00) 87.98% (0.00) ok
ai-react 81.94% (0.00) 65.42% (0.00) 80.73% (0.00) 82.67% (0.00) ok
ai-reactor 94.91% (0.00) 83.33% (0.00) 93.33% (0.00) 96.55% (0.00) ok
ai-remix 43.02% (0.00) 30.35% (0.00) 39.02% (0.00) 46.23% (0.00) ok
ai-sandbox 78.49% (0.00) 83.16% (0.00) 75.52% (0.00) 79.03% (0.00) ok
ai-sandbox-blaxel 87.66% (0.00) 77.18% (0.00) 82.26% (0.00) 89.69% (0.00) ok
ai-sandbox-boxd 96.01% (0.00) 87.12% (0.00) 95.31% (0.00) 98.24% (0.00) ok
ai-sandbox-cloudflare 67.50% (0.00) 57.27% (0.00) 71.64% (0.00) 68.66% (0.00) ok
ai-sandbox-daytona 81.04% (0.00) 81.89% (0.00) 67.60% (0.00) 83.18% (0.00) ok
ai-sandbox-docker 82.34% (0.00) 73.69% (0.00) 79.82% (0.00) 84.06% (0.00) ok
ai-sandbox-e2b 94.84% (0.00) 89.70% (0.00) 93.24% (0.00) 98.64% (0.00) ok
ai-sandbox-local-process 69.27% (0.00) 53.59% (0.00) 77.01% (0.00) 70.30% (0.00) ok
ai-sandbox-railway 94.87% (0.00) 92.68% (0.00) 90.90% (0.00) 97.65% (0.00) ok
ai-sandbox-sprites 73.10% (0.00) 59.70% (0.00) 73.83% (0.00) 75.95% (0.00) ok
ai-sandbox-upstash-box 94.61% (0.00) 91.52% (0.00) 91.04% (0.00) 97.42% (0.00) ok
ai-sandbox-vercel 43.20% (0.00) 38.18% (0.00) 35.18% (0.00) 44.08% (0.00) ok
ai-skills 83.94% (0.00) 67.95% (0.00) 88.00% (0.00) 86.03% (0.00) ok
ai-solid 75.81% (0.00) 57.63% (0.00) 71.28% (0.00) 78.11% (0.00) ok
ai-svelte 74.05% (0.00) 50.99% (0.00) 70.05% (0.00) 78.64% (0.00) ok
ai-typesafe 78.04% (0.00) 84.61% (0.00) 66.66% (0.00) 82.05% (0.00) ok
ai-ui-message-stream 87.78% 80.29% 94.11% 89.55% new
ai-utils 82.81% (0.00) 75.64% (0.00) 89.47% (0.00) 84.21% (0.00) ok
ai-vercel-gateway 77.56% (0.00) 63.38% (0.00) 84.90% (0.00) 80.76% (0.00) ok
ai-vertex 96.77% (0.00) 97.22% (0.00) 100.00% (0.00) 96.77% (0.00) ok
ai-vue 73.33% (0.00) 48.73% (0.00) 73.28% (0.00) 74.66% (0.00) ok
ai-worldlabs 79.62% (0.00) 71.50% (0.00) 91.42% (0.00) 82.66% (0.00) ok
openai-base 91.04% (0.00) 79.96% (0.00) 97.81% (0.00) 93.18% (0.00) ok

No coverage on the base commit, so nothing to compare against: ai-ui-message-stream.

@pkg-pr-new

pkg-pr-new Bot commented Oct 23, 2026

Copy link
Copy Markdown

Open in StackBlitz

@tanstack/ai

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai@1893

@tanstack/ai-acp

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-acp@1893

@tanstack/ai-angular

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-angular@1893

@tanstack/ai-anthropic

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-anthropic@1893

@tanstack/ai-bedrock

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-bedrock@1893

@tanstack/ai-byteplus

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-byteplus@1893

@tanstack/ai-claude-code

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-claude-code@1893

@tanstack/ai-client

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-client@1893

@tanstack/ai-cloudflare

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-cloudflare@1893

@tanstack/ai-code-mode

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-code-mode@1893

@tanstack/ai-code-mode-snippets

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-code-mode-snippets@1893

@tanstack/ai-codex

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-codex@1893

@tanstack/ai-cohere

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-cohere@1893

@tanstack/ai-compaction

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-compaction@1893

@tanstack/ai-computer-local

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-computer-local@1893

@tanstack/ai-computer-playwright

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-computer-playwright@1893

@tanstack/ai-computer-sandbox

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-computer-sandbox@1893

@tanstack/ai-computer-use

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-computer-use@1893

@tanstack/ai-devtools-core

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-devtools-core@1893

@tanstack/ai-durable-stream

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-durable-stream@1893

@tanstack/ai-elevenlabs

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-elevenlabs@1893

@tanstack/ai-event-client

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-event-client@1893

@tanstack/ai-fal

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-fal@1893

@tanstack/ai-gemini

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-gemini@1893

@tanstack/ai-grok

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-grok@1893

@tanstack/ai-grok-build

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-grok-build@1893

@tanstack/ai-groq

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-groq@1893

@tanstack/ai-harness

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-harness@1893

@tanstack/ai-harness-cli

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-harness-cli@1893

@tanstack/ai-isolate-cloudflare

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-cloudflare@1893

@tanstack/ai-isolate-daytona

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-daytona@1893

@tanstack/ai-isolate-e2b

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-e2b@1893

@tanstack/ai-isolate-node

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-node@1893

@tanstack/ai-isolate-quickjs

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-quickjs@1893

@tanstack/ai-isolate-quickjs-bun

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-quickjs-bun@1893

@tanstack/ai-llmgateway

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-llmgateway@1893

@tanstack/ai-lovable

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-lovable@1893

@tanstack/ai-mcp

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-mcp@1893

@tanstack/ai-memory

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-memory@1893

@tanstack/ai-mistral

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-mistral@1893

@tanstack/ai-neon

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-neon@1893

@tanstack/ai-octane

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-octane@1893

@tanstack/ai-ollama

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-ollama@1893

@tanstack/ai-ollaya

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-ollaya@1893

@tanstack/ai-openai

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-openai@1893

@tanstack/ai-opencode

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-opencode@1893

@tanstack/ai-openrouter

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-openrouter@1893

@tanstack/ai-perplexity

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-perplexity@1893

@tanstack/ai-persistence

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-persistence@1893

@tanstack/ai-preact

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-preact@1893

@tanstack/ai-react

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-react@1893

@tanstack/ai-reactor

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-reactor@1893

@tanstack/ai-remix

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-remix@1893

@tanstack/ai-sandbox

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox@1893

@tanstack/ai-sandbox-blaxel

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-blaxel@1893

@tanstack/ai-sandbox-boxd

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-boxd@1893

@tanstack/ai-sandbox-cloudflare

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-cloudflare@1893

@tanstack/ai-sandbox-daytona

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-daytona@1893

@tanstack/ai-sandbox-docker

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-docker@1893

@tanstack/ai-sandbox-e2b

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-e2b@1893

@tanstack/ai-sandbox-local-process

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-local-process@1893

@tanstack/ai-sandbox-railway

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-railway@1893

@tanstack/ai-sandbox-sprites

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-sprites@1893

@tanstack/ai-sandbox-upstash-box

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-upstash-box@1893

@tanstack/ai-sandbox-vercel

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-vercel@1893

@tanstack/ai-skills

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-skills@1893

@tanstack/ai-solid

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-solid@1893

@tanstack/ai-svelte

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-svelte@1893

@tanstack/ai-typesafe

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-typesafe@1893

@tanstack/ai-ui-message-stream

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-ui-message-stream@1893

@tanstack/ai-utils

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-utils@1893

@tanstack/ai-vercel-gateway

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-vercel-gateway@1893

@tanstack/ai-vertex

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-vertex@1893

@tanstack/ai-vue

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-vue@1893

@tanstack/ai-worldlabs

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-worldlabs@1893

@tanstack/openai-base

npm i https://pkg.pr.new/TanStack/ai/@tanstack/openai-base@1893

@tanstack/preact-ai-devtools

npm i https://pkg.pr.new/TanStack/ai/@tanstack/preact-ai-devtools@1893

@tanstack/react-ai-devtools

npm i https://pkg.pr.new/TanStack/ai/@tanstack/react-ai-devtools@1893

@tanstack/solid-ai-devtools

npm i https://pkg.pr.new/TanStack/ai/@tanstack/solid-ai-devtools@1893

@tanstack/svelte-ai-devtools

npm i https://pkg.pr.new/TanStack/ai/@tanstack/svelte-ai-devtools@1893

commit: a576436

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant