You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closing PR of the 4.41 wave. Once every core issue has merged it moves the strict fidelity pin from chat@4.31.0 to chat@4.41.1, bumps UPSTREAM_PARITY, the package version (0.4.41) and docs, and records a docs/UPSTREAM_SYNC.md non-parity row for every 4.32–4.41.1 change the wave deliberately skips or defers. No runtime behavior. The release gate (which adapter PRs must land before tagging 0.4.41) lives in #184.
Upstream changes
Commits that need only a non-parity or skip row (first containing chat@ tag after each subject):
2d0d3bf3 feat(chat): add chat/ai/tanstack for TanStack AI (#936) — chat@4.41.0 — new chat/ai/tanstack subpath (messages/tools exporters for a JS-only framework).
6714efc3 feat: support AI SDK v7 (ai@7) as a peer dependency (#691) — chat@4.34.0 — TS peer range and return-type changes in ai/tools/*.
4cb7e5d5 feat(chat): durable human-in-the-loop approvals via chat/workflow (#728) — chat@4.35.0 — chat/workflowrequestApproval, built on Vercel Workflow primitives.
src/chat_sdk/__init__.py:230UPSTREAM_PARITY = "4.31.0". pyproject.toml:3 / uv.lock:333 version 0.4.31.3. README.md:10 status line says 4.31.0. The version-mapping tables are in CLAUDE.md (:21-35) and docs/UPSTREAM_SYNC.md:5-23.
docs/UPSTREAM_SYNC.md non-parity rows touched: JSX Card/Modal (:633), jsx-runtime id prop (:678), chat/adapters catalog (:692, verified at 4.31.0 only), adapter-web (:708). The rest of the skip list below is absent (grep -n 'TanStack\|requestApproval\|create-chat-sdk\|Vercel Connect' docs/UPSTREAM_SYNC.md → nothing).
CHANGELOG.md has no 0.4.41 section. Wave PRs add entries under "Unreleased (4.41 wave)".
Run TS_ROOT=<4.41.1 checkout> uv run python scripts/verify_test_fidelity.py --strict and get 0 missing. Empty scripts/fidelity_baseline.json or regenerate it for the new ts_parity. Any test still missing must be ported, or baselined with a documented divergence in the same PR. Report the before and after numbers.
Set UPSTREAM_PARITY = "4.41.1" (see Porting notes). Bump pyproject.toml/uv.lock to 0.4.41. Add a row to both version-mapping tables (0.4.41 → 4.41.1). Update README.md:10.
CHANGELOG: rename "Unreleased (4.41 wave)" to "0.4.41". Add a short header paragraph and a "Consumer-visible changes" digest compiled from the wave PRs' call-outs.
Re-verify the :692 catalog row against packages/chat/src/adapters/index.ts at chat@4.41.1 (0c761f1b, 3abdc691, 24a04d56, d034b8b5, 06af3e12, and f034cd27 for Gmail) and note "re-verified at 4.41.1".
Extend the JSX rows (:633/:678) to cover 929878b5 and the JSX props added by 4717a384, 4a0b5c0c, 0153a39f and ad904325.
Add the web-adapter note to :708 (500b7e6d web half: any future port consumes only the latest user message and strips tool parts).
verify_test_fidelity.py:244 reads UPSTREAM_PARITY to derive ts_parity. Update the pin constant and UPSTREAM_PARITY in the same commit, or the baseline-staleness check will fire.
Intentional skips (TanStack ai/tanstack/*.test.ts, workflow/approval.test.ts, JSX jsx-runtime.test.ts/jsx-react.test.tsx) must be documented as unmapped with a reason (P0 defines the mechanism).
Acceptance criteria
Full validation command from CLAUDE.md passes, with CI's strict fidelity step cloning chat@4.41.1 (pinned SHA).
UPSTREAM_PARITY, the package version, README, CLAUDE.md and both mapping tables are consistent.
Effort: S (docs, config and version only; larger only if strict fidelity reveals unported tests).
Consumer impact: low. It changes no runtime code, but it marks the release that carries every wave behavior change; the CHANGELOG digest is the consumer's migration checklist.
Summary
Closing PR of the 4.41 wave. Once every core issue has merged it moves the strict fidelity pin from
chat@4.31.0tochat@4.41.1, bumpsUPSTREAM_PARITY, the package version (0.4.41) and docs, and records adocs/UPSTREAM_SYNC.mdnon-parity row for every 4.32–4.41.1 change the wave deliberately skips or defers. No runtime behavior. The release gate (which adapter PRs must land before tagging0.4.41) lives in #184.Upstream changes
Commits that need only a non-parity or skip row (first containing
chat@tag after each subject):2d0d3bf3feat(chat): add chat/ai/tanstack for TanStack AI (#936) — chat@4.41.0 — newchat/ai/tanstacksubpath (messages/tools exporters for a JS-only framework).6714efc3feat: support AI SDK v7 (ai@7) as a peer dependency (#691) — chat@4.34.0 — TS peer range and return-type changes inai/tools/*.4cb7e5d5feat(chat): durable human-in-the-loop approvals via chat/workflow (#728) — chat@4.35.0 —chat/workflowrequestApproval, built on Vercel Workflow primitives.bdeb2bf1fix(workflow): isolate chat serializers from node runtime (#806) — chat@4.38.0 — bundler-only serialization entrypoint.ab0e1806feat(chat): Vercel Connect (#647) — chat@4.33.0 — docs and wiring for the external@vercel/connectpackage.ba375ce1feat(create-chat-sdk): add Vercel Connect mode (#655) — chat@4.33.0 — the npx scaffolder.927d0dbddocs: add cross-link card sections and page-level SEO metadata (#804) — chat@4.38.0 — docs, plus the create-chat-sdk doc page.packages/chat/src/adapters/index.tsentries):0c761f1bdocs(adapters): add Dial as vendor-official adapter (#676) — chat@4.33.03abdc691docs(adapters): add Cloudflare Agents as vendor-official state adapter (#669) — chat@4.33.024a04d56docs(adapters): add Photon as vendor-official adapter (#668) — chat@4.33.0d034b8b5docs(adapters): add Linq as vendor-official adapter (#625) — chat@4.32.006af3e12docs(adapters): add Novu as vendor-official adapter (#622) — chat@4.32.0f691ad58docs: add LINE community adapter (#873) — chat@4.40.0a8867a0adocs(adapters): add QQ Bot and WeCom community adapters (#753) — chat@4.36.0eb466e52docs: add chat-adapter-zaileys community adapter (#677) — chat@4.33.0ef3f0f63docs: add Weixin community adapter (#638) — chat@4.32.086b2fa4bdocs: clarify adapter package placeholders and security reporting scope (#970) — chat@4.41.11136c967Make Vercel Connect setup consistent across guides (#932) — chat@4.41.01dff4515refactor(docs): migrate chat-sdk.dev to @vercel/geistdocs (#686) — chat@4.34.0b3123815docs: use xai/grok-4.5 across docs, guides, and examples (#687) — chat@4.34.099c59850docs: refresh agent docs, README badges, and Chat SDK skill (#646) — chat@4.32.0efa96108docs: sync KB resources and harden sync-resources script (#635) — chat@4.32.064b66864chore(changesets): ignore all example-* packages and enforce the convention (#626) — chat@4.32.00642ce33docs: document WhatsApp typing indicator support (#772) — chat@4.37.0ba687cb1docs(slack): document Vercel Connect support (#648) — chat@4.33.021962572fix(discord): sort imports (#657) — chat@4.32.057fa85catest(telegram): raise rich-truncate test timeout to 15s (#703) — chat@4.34.0Current Python behavior
.github/workflows/lint.yml:63clones--branch chat@4.31.0. CLAUDE.md pins at:4,:117and:132.scripts/verify_test_fidelity.pyhas the tag in its docstring (:17), thets_parityfallback (:320) and the clone hint (:449). [4.41/P0] Fidelity tooling for the 4.41 wave: single pin constant, SHA pin, it.each expansion, map new core test files #185 consolidates all of these into a single pin constant, and this PR only moves that constant.src/chat_sdk/__init__.py:230UPSTREAM_PARITY = "4.31.0".pyproject.toml:3/uv.lock:333version0.4.31.3.README.md:10status line says 4.31.0. The version-mapping tables are in CLAUDE.md (:21-35) anddocs/UPSTREAM_SYNC.md:5-23.docs/UPSTREAM_SYNC.mdnon-parity rows touched: JSX Card/Modal (:633), jsx-runtimeidprop (:678),chat/adapterscatalog (:692, verified at 4.31.0 only),adapter-web(:708). The rest of the skip list below is absent (grep -n 'TanStack\|requestApproval\|create-chat-sdk\|Vercel Connect' docs/UPSTREAM_SYNC.md→ nothing).CHANGELOG.mdhas no 0.4.41 section. Wave PRs add entries under "Unreleased (4.41 wave)".Scope
chat@4.41.1. Updatelint.yml, CLAUDE.md (header, Test Quality section and clone command) and the script docstring/hints.TS_ROOT=<4.41.1 checkout> uv run python scripts/verify_test_fidelity.py --strictand get 0 missing. Emptyscripts/fidelity_baseline.jsonor regenerate it for the newts_parity. Any test still missing must be ported, or baselined with a documented divergence in the same PR. Report the before and after numbers.UPSTREAM_PARITY = "4.41.1"(see Porting notes). Bumppyproject.toml/uv.lockto0.4.41. Add a row to both version-mapping tables (0.4.41→4.41.1). UpdateREADME.md:10.docs/UPSTREAM_SYNC.mdnon-parity rows (one line each, with refs): TanStack AI (2d0d3bf3); AI SDK v7 (6714efc3; PythonChatToolis framework-agnostic, see [4.41/C9] AI messages: keep attachment/link-only messages, framework-agnostic tool specs #198); Vercel WorkflowrequestApproval(4cb7e5d5); workflow serialization entrypoint (bdeb2bf1); Vercel Connect (ab0e1806, 1136c967, ba687cb1 + per-adapter Connect commits in [4.41/DEF1] Deferred upstream 4.32–4.41 features (demand-gated backlog) #189); create-chat-sdk (ba375ce1, 927d0dbd); docs/community-adapter/chore commits (grouped row); Discord import sort (21962572); Telegram test timeout (57fa85ca).:692catalog row againstpackages/chat/src/adapters/index.tsat chat@4.41.1 (0c761f1b, 3abdc691, 24a04d56, d034b8b5, 06af3e12, and f034cd27 for Gmail) and note "re-verified at 4.41.1".:633/:678) to cover 929878b5 and the JSX props added by 4717a384, 4a0b5c0c, 0153a39f and ad904325.:708(500b7e6d web half: any future port consumes only the latest user message and strips tool parts).Out of scope
Porting notes
0.4.41).UPSTREAM_PARITYhas always matched the pinned fidelity tag exactly ("4.31.0"↔chat@4.31.0). Recommended default:UPSTREAM_PARITY = "4.41.1", because the pin ischat@4.41.1, whose runtime-ownership fix 6f17495b is ported in [4.41/C5] Streaming & thread API: lightweight threads, placeholder sentinel, restore streaming settings, Plan.auto_complete_previous, AG-UI streams #199. Say so explicitly in the mapping tables so nobody expects4.41.0.verify_test_fidelity.py:244readsUPSTREAM_PARITYto derivets_parity. Update the pin constant andUPSTREAM_PARITYin the same commit, or the baseline-staleness check will fire.it.each/describe.eachexpansion from [4.41/P0] Fidelity tooling for the 4.41 wave: single pin constant, SHA pin, it.each expansion, map new core test files #185 changes test counts. Quote the expanded counts in the PR.Tests
scripts/verify_test_fidelity.pyMAPPING (including rows added by [4.41/P0] Fidelity tooling for the 4.41 wave: single pin constant, SHA pin, it.each expansion, map new core test files #185: history/*, agent-session, app-context, installation-events, cards/modals where mapped) must reach 0 missing under--strictat chat@4.41.1.ai/tanstack/*.test.ts,workflow/approval.test.ts, JSXjsx-runtime.test.ts/jsx-react.test.tsx) must be documented as unmapped with a reason (P0 defines the mechanism).Acceptance criteria
chat@4.41.1(pinned SHA).UPSTREAM_PARITY, the package version, README, CLAUDE.md and both mapping tables are consistent.docs/UPSTREAM_SYNC.mdhas a row for every skip listed above and every deferred [4.41/DEF1] Deferred upstream 4.32–4.41 features (demand-gated backlog) #189 item. The catalog row is re-verified.Dependencies
Blocked by #190, #191, #192, #193, #194, #195, #196, #199, #200, #201, #197, #198, #202. It also depends on #185's pin constant, transitively through all of those. The adapter-PR release gate is tracked in #184.
Metadata
Part of #184.