Skip to content

Commit 2c0ebb3

Browse files
tombeckenhamclaudeautofix-ci[bot]
authored
chore: remove stale PHP and Python packages (#643)
* chore: remove stale PHP and Python packages (closes #642) 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> * chore: flatten packages/typescript/* into packages/* 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> * ci: apply automated fixes --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent ad23da9 commit 2c0ebb3

1,158 files changed

Lines changed: 1331 additions & 7974 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agent/self-learning/coupling.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@
33
"couplings": [
44
{
55
"id": "ai-source-touches-agent-skills",
6-
"trigger": "packages/typescript/ai*/src/**/*.ts",
6+
"trigger": "packages/ai*/src/**/*.ts",
77
"impacts": [
88
{
99
"target": [
10-
"packages/typescript/ai/skills/ai-core/structured-outputs/SKILL.md",
11-
"packages/typescript/ai/skills/ai-core/chat-experience/SKILL.md",
12-
"packages/typescript/ai/skills/ai-core/tool-calling/SKILL.md",
13-
"packages/typescript/ai/skills/ai-core/adapter-configuration/SKILL.md",
14-
"packages/typescript/ai/skills/ai-core/middleware/SKILL.md",
15-
"packages/typescript/ai/skills/ai-core/media-generation/SKILL.md",
16-
"packages/typescript/ai/skills/ai-core/ag-ui-protocol/SKILL.md",
17-
"packages/typescript/ai/skills/ai-core/debug-logging/SKILL.md",
18-
"packages/typescript/ai/skills/ai-core/custom-backend-integration/SKILL.md",
19-
"packages/typescript/ai-code-mode/skills/ai-code-mode/SKILL.md"
10+
"packages/ai/skills/ai-core/structured-outputs/SKILL.md",
11+
"packages/ai/skills/ai-core/chat-experience/SKILL.md",
12+
"packages/ai/skills/ai-core/tool-calling/SKILL.md",
13+
"packages/ai/skills/ai-core/adapter-configuration/SKILL.md",
14+
"packages/ai/skills/ai-core/middleware/SKILL.md",
15+
"packages/ai/skills/ai-core/media-generation/SKILL.md",
16+
"packages/ai/skills/ai-core/ag-ui-protocol/SKILL.md",
17+
"packages/ai/skills/ai-core/debug-logging/SKILL.md",
18+
"packages/ai/skills/ai-core/custom-backend-integration/SKILL.md",
19+
"packages/ai-code-mode/skills/ai-code-mode/SKILL.md"
2020
],
2121
"kind": "change-required",
2222
"why": "Agent skills are a contract with downstream coding agents. When the source surface they cover changes (new public API, changed type, new pattern, removed pattern, deprecation), the skill must be updated in the same PR — otherwise agents reading the skill keep generating obsolete or wrong code targeting a surface that no longer exists. Use this list to decide which skill(s) cover the file you're touching: `activities/chat/**` → chat-experience / structured-outputs / tool-calling; `activities/generateImage|generateAudio|generateVideo|generateSpeech|generateTranscription|summarize/**` → media-generation; `middleware/**` → middleware; `protocol/**` → ag-ui-protocol; `adapters/**` or anything that affects the adapter contract → adapter-configuration. Skip only for pure refactors / perf / internal-only changes that don't surface a new pattern or change observable behavior."
@@ -25,7 +25,7 @@
2525
},
2626
{
2727
"id": "ai-source-touches-public-docs",
28-
"trigger": "packages/typescript/ai*/src/**/*.ts",
28+
"trigger": "packages/ai*/src/**/*.ts",
2929
"impacts": [
3030
{
3131
"target": [
@@ -48,7 +48,7 @@
4848
},
4949
{
5050
"id": "ai-source-touches-e2e-coverage",
51-
"trigger": "packages/typescript/ai*/src/**/*.ts",
51+
"trigger": "packages/ai*/src/**/*.ts",
5252
"impacts": [
5353
{
5454
"target": [

.agent/self-learning/lessons/2026-05-14-build-before-running-examples.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ related: []
1212

1313
# Build Workspace Packages Before Running Examples
1414

15-
**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`).
15+
**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`).
1616

1717
**Why:** "this was a mistake by you, you should always build packages inside of this repo before you run the examples" — examples import workspace packages (`@tanstack/ai`, `@tanstack/react-ai-devtools`, `@tanstack/ai-devtools-core`, etc.) via `workspace:*` and resolve through each package's `exports` field pointing at `dist/`. If `dist/` is missing for any package — including transitive ones — vite's dep-scan fails and SSR returns a 500. Fixing the first missing package one at a time wastes round-trips: I tried `pnpm --filter @tanstack/react-ai-devtools build`, hit a missing `@tanstack/ai-devtools-core`, etc. The cure is one command up front.
1818

.agent/self-learning/lessons/2026-05-19-update-skills-with-feature-work.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ related: [update-docs-with-new-cases]
1212

1313
# Agent Skills Need to Be Updated With the Feature Work That Touches Them
1414

15-
**Rule:** When implementing a feature that changes or extends a surface covered by an agent skill under `packages/typescript/ai/skills/**` or `packages/typescript/ai-code-mode/skills/**`, update the skill in the same PR. Don't treat skill updates as a follow-up — they ship to coding agents that read them as authoritative.
15+
**Rule:** When implementing a feature that changes or extends a surface covered by an agent skill under `packages/ai/skills/**` or `packages/ai-code-mode/skills/**`, update the skill in the same PR. Don't treat skill updates as a follow-up — they ship to coding agents that read them as authoritative.
1616

1717
**Why:** The user pointed this out after I'd already landed code, docs, e2e tests, and the example UI for the multi-turn structured-output PR (#577) without touching `ai-core/structured-outputs/SKILL.md`. The skill was still documenting the old single-slot `partial` / `final` design and still telling agents to filter `TextPart`s out of `useChat` renderers — the exact hack the PR removes. Without the skill update, every coding agent reading that skill would continue generating the obsolete pattern. Skills are a contract with downstream agents the same way the public API is a contract with users.
1818

1919
**How to apply:**
2020

21-
1. **Before shipping any non-trivial feature**, grep `packages/typescript/ai*/skills/**/SKILL.md` for the symbols, types, hooks, or patterns the feature touches. If any skill mentions them, that skill needs review.
21+
1. **Before shipping any non-trivial feature**, grep `packages/ai*/skills/**/SKILL.md` for the symbols, types, hooks, or patterns the feature touches. If any skill mentions them, that skill needs review.
2222
2. **Check both directions:** does the skill teach something the feature now makes wrong? Does the feature introduce a pattern the skill should add? Both warrant edits.
2323
3. **Update in the same PR as the feature code.** Splitting into a follow-up means the skill is stale during the window between merges — and during that window, agents reading the skill generate broken code that targets a surface that no longer exists.
2424
4. **After updating, fact-check the skill the same way as the docs** — dispatch a verification pass against the current source code. Hallucinations in skills propagate further than hallucinations in docs because agents act on them autonomously.

.changeset/config.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
"@tanstack/ai-code-mode-models-eval",
1616
"@tanstack/ai-e2e",
1717
"stream-processor-panel",
18-
"php-slim",
19-
"python-fastapi",
2018
"ts-*",
2119
"vanilla-chat"
2220
],
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
---
3+
4+
Remove the stale 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.
5+
6+
Removed:
7+
8+
- `packages/php/tanstack-ai` (composer package `tanstack/ai`)
9+
- `packages/python/tanstack-ai` (PyPI package `tanstack-ai`)
10+
- `examples/php-slim`
11+
- `examples/python-fastapi`
12+
13+
No published `@tanstack/*` npm packages are affected.

.claude/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"Bash(pnpm --filter @tanstack/ai-vue test:lib)",
3535
"Bash(pnpm --filter @tanstack/ai-svelte test:lib)",
3636
"Bash(pnpm test:docs)",
37-
"Bash(npx vitest run packages/typescript/ai-vue/tests/use-generation.test.ts)",
37+
"Bash(npx vitest run packages/ai-vue/tests/use-generation.test.ts)",
3838
"Bash(pnpm test:types)",
3939
"Bash(npx tsr generate)",
4040
"Bash(npx nx run ts-react-media:build)",

.claude/skills/gap-analysis/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ markdown report under `.agent/gap-analysis/`. **Do not edit source files.**
2929
2. **Load the truth files**, then read the per-scope inputs you need:
3030
- Matrix: `testing/e2e/src/lib/feature-support.ts`
3131
- Types: `testing/e2e/src/lib/types.ts` (Provider + Feature unions, ALL_PROVIDERS, ALL_FEATURES)
32-
- Adapter index: `packages/typescript/ai-<provider>/src/index.ts`
33-
- Model meta: `packages/typescript/ai-<provider>/src/model-meta.ts`
34-
- Core types: `packages/typescript/ai/src/types.ts` (Modality, ContentPart, ToolCall)
32+
- Adapter index: `packages/ai-<provider>/src/index.ts`
33+
- Model meta: `packages/ai-<provider>/src/model-meta.ts`
34+
- Core types: `packages/ai/src/types.ts` (Modality, ContentPart, ToolCall)
3535
3. **Research upstream.** Use WebFetch against the curated URLs in
3636
[references/provider-doc-urls.md](references/provider-doc-urls.md). When a
3737
doc page has moved, fall back to WebSearch. For SDK API surface details

.claude/skills/gap-analysis/references/audit-checklist.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ final report. Skip dimensions that don't apply to the scope (e.g.,
88

99
## 1. New models
1010

11-
**Input:** `packages/typescript/ai-<provider>/src/model-meta.ts`
11+
**Input:** `packages/ai-<provider>/src/model-meta.ts`
1212
**Upstream:** the provider's models page (see provider-doc-urls.md).
1313

1414
Steps:
@@ -116,7 +116,7 @@ Steps:
116116
- Computer use / browser tools
117117
- Memory / sessions
118118
3. Cross-check by grep'ing the adapter source:
119-
- `Grep "<capability-keyword>" packages/typescript/ai-<provider>/src/`
119+
- `Grep "<capability-keyword>" packages/ai-<provider>/src/`
120120
- If zero matches → likely untracked.
121121
4. For each untracked feature, note:
122122
- Upstream URL
@@ -166,7 +166,7 @@ Steps:
166166
## 5. Telemetry / observability parity
167167

168168
**Input:** every adapter's stream-emit and final-response paths in
169-
`packages/typescript/ai-<provider>/src/adapters/*.ts`.
169+
`packages/ai-<provider>/src/adapters/*.ts`.
170170
**Upstream:** the provider's API reference for the response envelope (usage,
171171
cost, cache, reasoning, request-id, safety/moderation fields).
172172

@@ -180,7 +180,7 @@ Steps:
180180

181181
1. For each adapter, grep the streaming and non-streaming paths for the
182182
fields it forwards into `StreamChunk` / final response usage:
183-
- `Grep "usage|promptTokens|completionTokens|cached|reasoning|cache_creation|cache_read" packages/typescript/ai-<provider>/src/adapters/`
183+
- `Grep "usage|promptTokens|completionTokens|cached|reasoning|cache_creation|cache_read" packages/ai-<provider>/src/adapters/`
184184
2. Build a cross-adapter table of which fields each adapter emits. Rows
185185
below are examples — extend per provider:
186186

@@ -222,7 +222,7 @@ Steps:
222222
When fan-out is needed, launch one `Explore` subagent per provider with a
223223
prompt of this shape:
224224

225-
> Audit the `<provider>` adapter at `packages/typescript/ai-<provider>/`
225+
> Audit the `<provider>` adapter at `packages/ai-<provider>/`
226226
> against upstream docs at the URLs in
227227
> `.claude/skills/gap-analysis/references/provider-doc-urls.md`. Walk
228228
> dimensions 1, 3, 4, and 5 from `audit-checklist.md`. Skip dimension 2

.claude/skills/gap-analysis/references/report-template.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Replace every `{{placeholder}}`. Drop sections that have zero entries
1919
# Gap Analysis — {{scope-human}} — {{YYYY-MM-DD}}
2020

2121
> Source-of-truth matrix: `testing/e2e/src/lib/feature-support.ts`
22-
> Local model lists: `packages/typescript/ai-*/src/model-meta.ts`
22+
> Local model lists: `packages/ai-*/src/model-meta.ts`
2323
> Generated by `.claude/skills/gap-analysis` — review before applying.
2424
2525
## Summary
@@ -51,7 +51,7 @@ Replace every `{{placeholder}}`. Drop sections that have zero entries
5151

5252
- **[{{provider}}]** missing models: `{{model-id}}` ({{context-window}}, {{kn-cutoff}}), `{{model-id}}` ({{…}})
5353
- Upstream: [{{provider models page}}]({{url}})
54-
- Suggested addition to `packages/typescript/ai-{{provider}}/src/model-meta.ts`:
54+
- Suggested addition to `packages/ai-{{provider}}/src/model-meta.ts`:
5555
```ts
5656
{{paste-ready ModelMeta entry skeleton}}
5757
```
@@ -87,7 +87,7 @@ Replace every `{{placeholder}}`. Drop sections that have zero entries
8787
`cache_read_input_tokens`, `reasoning_tokens`, `cached_tokens`).
8888
- Upstream evidence: [{{doc-title}}]({{doc-url}})
8989
- Sibling adapters that already forward it: {{list}}
90-
- Adapter path: `packages/typescript/ai-{{provider}}/src/adapters/{{file}}:{{line}}`
90+
- Adapter path: `packages/ai-{{provider}}/src/adapters/{{file}}:{{line}}`
9191
- Effort: {{S / M / L}}
9292

9393
- **[{{provider}}] logging asymmetry** — {{e.g., adapter swallows parse

.github/workflows/pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
- name: Build Packages
4848
run: pnpm run build:all
4949
- name: Publish Previews
50-
run: pnpx pkg-pr-new publish --pnpm './packages/typescript/*'
50+
run: pnpx pkg-pr-new publish --pnpm './packages/*'
5151
version-preview:
5252
name: Version Preview
5353
runs-on: ubuntu-latest

0 commit comments

Comments
 (0)