chore: remove stale PHP and Python packages#643
Conversation
Drop the PHP and Python packages and their example apps. TanStack AI now focuses exclusively on TypeScript; AG-UI handles interop with non-JS servers, so first-party PHP/Python clients are no longer maintained. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Important Review skippedToo many files! This PR contains 278 files, which is 128 over the limit of 150. To get a review, narrow the scope: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (278)
You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThis PR removes first-party PHP and Python client packages ( ChangesPHP and Python package removal
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
|
View your CI Pipeline Execution ↗ for commit 824eb7e
☁️ Nx Cloud last updated this comment at |
🚀 Changeset Version Preview6 package(s) bumped directly, 5 bumped as dependents. 🟥 Major bumps
🟨 Minor bumps
🟩 Patch bumps
|
@tanstack/ai
@tanstack/ai-anthropic
@tanstack/ai-client
@tanstack/ai-code-mode
@tanstack/ai-code-mode-skills
@tanstack/ai-devtools-core
@tanstack/ai-elevenlabs
@tanstack/ai-event-client
@tanstack/ai-fal
@tanstack/ai-gemini
@tanstack/ai-grok
@tanstack/ai-groq
@tanstack/ai-isolate-cloudflare
@tanstack/ai-isolate-node
@tanstack/ai-isolate-quickjs
@tanstack/ai-ollama
@tanstack/ai-openai
@tanstack/ai-openrouter
@tanstack/ai-preact
@tanstack/ai-react
@tanstack/ai-react-ui
@tanstack/ai-solid
@tanstack/ai-solid-ui
@tanstack/ai-svelte
@tanstack/ai-utils
@tanstack/ai-vue
@tanstack/ai-vue-ui
@tanstack/openai-base
@tanstack/preact-ai-devtools
@tanstack/react-ai-devtools
@tanstack/solid-ai-devtools
commit: |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
examples/vanilla-chat/README.md (1)
57-63:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAlign the backend URL in the README snippet with
src/main.js.The snippet uses
http://localhost:8080/chat, but the currentexamples/vanilla-chat/src/main.jsreference ishttp://localhost:8000/chat. Please keep these consistent to avoid setup confusion.Suggested doc fix
const client = new ChatClient({ - connection: fetchServerSentEvents('http://localhost:8080/chat'), + connection: fetchServerSentEvents('http://localhost:8000/chat'), onMessagesChange: (messages) => { // Update UI when messages change },🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@examples/vanilla-chat/README.md` around lines 57 - 63, Update the README's ChatClient example so the backend URL matches the app's actual URL: change the URL string used in the ChatClient/ fetchServerSentEvents instantiation from "http://localhost:8080/chat" to "http://localhost:8000/chat" (the same value used when creating the client instance in src/main.js) so the example is consistent with the app code.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.agent/self-learning/lessons/2026-05-14-build-before-running-examples.md:
- Line 15: The rule's example list mixes full paths and bare names; update the
line so all examples use the full `examples/...` path form (e.g., replace
`ts-solid-chat`, `ts-vue-chat`, `ts-svelte-chat`, `vanilla-chat`,
`ts-group-chat` with `examples/ts-solid-chat`, `examples/ts-vue-chat`,
`examples/ts-svelte-chat`, `examples/vanilla-chat`, `examples/ts-group-chat`) so
the entire rule consistently lists `examples/ts-react-chat`,
`examples/ts-solid-chat`, `examples/ts-vue-chat`, `examples/ts-svelte-chat`,
`examples/vanilla-chat`, and `examples/ts-group-chat`.
---
Outside diff comments:
In `@examples/vanilla-chat/README.md`:
- Around line 57-63: Update the README's ChatClient example so the backend URL
matches the app's actual URL: change the URL string used in the ChatClient/
fetchServerSentEvents instantiation from "http://localhost:8080/chat" to
"http://localhost:8000/chat" (the same value used when creating the client
instance in src/main.js) so the example is consistent with the app code.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 30441b2c-176c-4e93-b5a0-226424a15238
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (50)
.agent/self-learning/lessons/2026-05-14-build-before-running-examples.md.changeset/config.json.changeset/remove-php-and-python-packages.mdCHANGELOG.mdCLAUDE.mdCONTRIBUTING.mddocs/migration/ag-ui-compliance.mdexamples/README.mdexamples/php-slim/.env.exampleexamples/php-slim/.gitignoreexamples/php-slim/README.mdexamples/php-slim/composer.jsonexamples/php-slim/package.jsonexamples/php-slim/public/anthropic-server.phpexamples/php-slim/public/index.phpexamples/php-slim/public/openai-server.phpexamples/python-fastapi/.env.exampleexamples/python-fastapi/.gitignoreexamples/python-fastapi/README.mdexamples/python-fastapi/anthropic-server.pyexamples/python-fastapi/openai-server.pyexamples/python-fastapi/package.jsonexamples/python-fastapi/requirements.txtexamples/python-fastapi/run.shexamples/vanilla-chat/README.mdexamples/vanilla-chat/vite.config.tspackages/php/tanstack-ai/.gitignorepackages/php/tanstack-ai/README.mdpackages/php/tanstack-ai/composer.jsonpackages/php/tanstack-ai/example.phppackages/php/tanstack-ai/src/MessageFormatters.phppackages/php/tanstack-ai/src/SSEFormatter.phppackages/php/tanstack-ai/src/StreamChunkConverter.phppackages/python/tanstack-ai-python/src/tanstack_ai/__init__.pypackages/python/tanstack-ai-python/src/tanstack_ai/sse.pypackages/python/tanstack-ai/.gitignorepackages/python/tanstack-ai/README.mdpackages/python/tanstack-ai/example_usage.pypackages/python/tanstack-ai/pyproject.tomlpackages/python/tanstack-ai/src/tanstack_ai/__init__.pypackages/python/tanstack-ai/src/tanstack_ai/agent_strategies.pypackages/python/tanstack-ai/src/tanstack_ai/anthropic_adapter.pypackages/python/tanstack-ai/src/tanstack_ai/base_adapter.pypackages/python/tanstack-ai/src/tanstack_ai/chat.pypackages/python/tanstack-ai/src/tanstack_ai/converter.pypackages/python/tanstack-ai/src/tanstack_ai/message_formatters.pypackages/python/tanstack-ai/src/tanstack_ai/sse.pypackages/python/tanstack-ai/src/tanstack_ai/tool_manager.pypackages/python/tanstack-ai/src/tanstack_ai/tool_utils.pypackages/python/tanstack-ai/src/tanstack_ai/types.py
💤 Files with no reviewable changes (43)
- packages/php/tanstack-ai/README.md
- examples/python-fastapi/.env.example
- examples/php-slim/package.json
- docs/migration/ag-ui-compliance.md
- examples/php-slim/.env.example
- examples/python-fastapi/README.md
- packages/php/tanstack-ai/composer.json
- examples/python-fastapi/requirements.txt
- packages/python/tanstack-ai/src/tanstack_ai/message_formatters.py
- packages/python/tanstack-ai/pyproject.toml
- examples/php-slim/README.md
- packages/php/tanstack-ai/src/StreamChunkConverter.php
- packages/python/tanstack-ai/src/tanstack_ai/agent_strategies.py
- packages/python/tanstack-ai/README.md
- examples/php-slim/.gitignore
- packages/python/tanstack-ai-python/src/tanstack_ai/init.py
- packages/python/tanstack-ai-python/src/tanstack_ai/sse.py
- examples/python-fastapi/run.sh
- packages/python/tanstack-ai/src/tanstack_ai/tool_utils.py
- examples/php-slim/composer.json
- examples/python-fastapi/.gitignore
- examples/php-slim/public/index.php
- packages/python/tanstack-ai/src/tanstack_ai/init.py
- packages/php/tanstack-ai/src/SSEFormatter.php
- examples/python-fastapi/package.json
- packages/python/tanstack-ai/example_usage.py
- packages/php/tanstack-ai/.gitignore
- examples/python-fastapi/openai-server.py
- packages/php/tanstack-ai/src/MessageFormatters.php
- packages/php/tanstack-ai/example.php
- examples/python-fastapi/anthropic-server.py
- examples/php-slim/public/anthropic-server.php
- packages/python/tanstack-ai/src/tanstack_ai/tool_manager.py
- packages/python/tanstack-ai/src/tanstack_ai/base_adapter.py
- examples/php-slim/public/openai-server.php
- packages/python/tanstack-ai/src/tanstack_ai/anthropic_adapter.py
- packages/python/tanstack-ai/src/tanstack_ai/sse.py
- packages/python/tanstack-ai/src/tanstack_ai/converter.py
- packages/python/tanstack-ai/src/tanstack_ai/types.py
- .changeset/config.json
- packages/python/tanstack-ai/src/tanstack_ai/chat.py
- CHANGELOG.md
- packages/python/tanstack-ai/.gitignore
| # Build Workspace Packages Before Running Examples | ||
|
|
||
| **Rule:** Run `pnpm -w run build:all` from the repo root before starting any example dev server (`examples/ts-react-chat`, `ts-solid-chat`, `ts-vue-chat`, `ts-svelte-chat`, `vanilla-chat`, `php-slim`, `python-fastapi`, `ts-group-chat`). | ||
| **Rule:** Run `pnpm -w run build:all` from the repo root before starting any example dev server (`examples/ts-react-chat`, `ts-solid-chat`, `ts-vue-chat`, `ts-svelte-chat`, `vanilla-chat`, `ts-group-chat`). |
There was a problem hiding this comment.
Use consistent example path notation in the server list.
The list mixes examples/ts-react-chat with bare names (ts-solid-chat, etc.). Use a single style (prefer full examples/... paths) to avoid ambiguity in commands/docs.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agent/self-learning/lessons/2026-05-14-build-before-running-examples.md at
line 15, The rule's example list mixes full paths and bare names; update the
line so all examples use the full `examples/...` path form (e.g., replace
`ts-solid-chat`, `ts-vue-chat`, `ts-svelte-chat`, `vanilla-chat`,
`ts-group-chat` with `examples/ts-solid-chat`, `examples/ts-vue-chat`,
`examples/ts-svelte-chat`, `examples/vanilla-chat`, `examples/ts-group-chat`) so
the entire rule consistently lists `examples/ts-react-chat`,
`examples/ts-solid-chat`, `examples/ts-vue-chat`, `examples/ts-svelte-chat`,
`examples/vanilla-chat`, and `examples/ts-group-chat`.
The `typescript/` nesting was a leftover from when other-language packages lived alongside it. With those gone (commit bda114e), the extra level is just noise. Moves all 31 packages with `git mv` so blame/history follow, then updates workspace globs, tsconfig extends, package.json `directory` fields, scripts, CI, docs, lockfile, and CLAUDE.md accordingly. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Resolves conflicts after main flattened packages/typescript/* to packages/* and removed PHP/Python packages (#643). Key conflict resolutions: - packages/ai-client/src/connection-adapters.ts: combined imports and kept both StreamTruncatedError (from main) and WorkflowConnectionAdapter (PR) - packages/ai-client/src/index.ts: re-exported both stream (PR) and StreamTruncatedError (main) - examples/ts-react-chat/src/components/Header.tsx: import both Network (PR, orchestration link) and Server (main, server-fn-chat link) icons - examples/ts-react-chat/src/routeTree.gen.ts: regenerated to include both orchestration/workflow (PR) and server-fn-chat (main) routes - knip.json: adopted flattened workspace paths from main, kept PR's duplicates rule - .agent/self-learning/coupling.json: flattened SKILL.md paths and kept the ai-orchestration entry added by the PR - Moved packages/typescript/ai-orchestration/ to packages/ai-orchestration/ via git mv to match main's flattened layout (fixes tsconfig extends path, package.json directory field) - pnpm-lock.yaml: regenerated via pnpm install
One conflict: docs/reference/type-aliases/StreamChunk.md — kept main's flattened path reference (`packages/ai/src/types.ts`) which superseded the PR's `packages/typescript/ai/src/types.ts` after #643 flattened the packages tree.
…te entry Main's packages/typescript/* -> packages/* flatten (PR TanStack#643) missed the experimental/ subtree introduced on this branch — git left it at the old path and the merged vite.config dropped the experimental entry. Move the files with `git mv` and re-add the entry so the /experimental subpath emits its runtime JS again. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Closes #642.
packages/php/,packages/python/,examples/php-slim/, andexamples/python-fastapi/.CLAUDE.md,CONTRIBUTING.md,examples/README.md,examples/vanilla-chat/{README.md,vite.config.ts},CHANGELOG.md,docs/migration/ag-ui-compliance.md,.changeset/config.json, and the self-learning lesson to remove references to the dropped packages and examples.pnpm-lock.yaml.@tanstack/*packages are affected).After discussion, we've decided to focus all our efforts on TypeScript. AG-UI lets you use any server runtime without first-party PHP/Python client packages, so the maintenance burden of those stale implementations is no longer worth it.
Test plan
pnpm installcleanpnpm test:sherifpassespnpm test:knippassespnpm test:typespassespnpm test:eslintpasses (0 errors, only pre-existing warnings)pnpm test:libpassespnpm test:build(publint) passesrgsweep confirms no remaining references tophp-slim,python-fastapi,packages/php,packages/python,@tanstack/ai-php, or@tanstack/ai-python🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes