mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
d60285c337
## Summary - keep `CopilotChat` agents aligned to SDK-generated thread IDs even when `/connect` is intentionally skipped for non-explicit threads - stabilize `CopilotKitProvider` default object props so rerenders do not re-sync an empty local agent registry and replace the live remote/Intelligence agent mid-run - add regression coverage for SDK-generated thread frontend-tool follow-up runs and provider empty-agent rerender stability - add a focused langgraph-python showcase demo, aimock fixture, Playwright smoke, and QA checklist for ENT-658 - add a patch changeset for `@copilotkit/react-core` ## Testing - `npx nx run @copilotkit/react-core:test -- src/v2/components/chat/__tests__/CopilotChat.absentThreadConnect.test.tsx` - `npx nx run @copilotkit/react-core:test -- src/v2/providers/__tests__/CopilotKitProvider.stability.test.tsx` - Pre-commit hook passed: `pnpm run test` and `pnpm run check:packages` - Verified exact `CopilotKit/Intelligence` repro branch `mme/threadid-repro`: unchecked `Explicit threadId`, sent `invoke testFrontendToolCalling with label X`, confirmed user message/tool card/assistant reply remain visible - Verified the same Intelligence repro with `Explicit threadId` checked - `pnpm exec playwright test tests/e2e/threadid-frontend-tool-roundtrip.spec.ts --project=chromium --workers=1` from `showcase/integrations/langgraph-python` ## QA Checklist - [x] Reproduce the reset in `CopilotKit/Intelligence` branch `mme/threadid-repro` with `Explicit threadId` unchecked - [x] Confirm generated-thread frontend-tool round-trip preserves the user message, tool card, and assistant response - [x] Confirm explicit-thread frontend-tool round-trip still preserves the user message, tool card, and assistant response - [x] Open `/demos/threadid-frontend-tool-roundtrip` in the langgraph-python showcase demo - [x] Confirm `Explicit threadId` is unchecked and the chat starts in SDK-generated thread mode - [x] Send `invoke testFrontendToolCalling with label X` - [x] Confirm the user message remains visible - [x] Confirm the `testFrontendToolCalling` card remains visible and shows `label: X` plus `result: handled X` - [x] Confirm the assistant reply `Frontend tool finished for X.` appears - [x] Confirm the chat does not return to the empty state - [x] Repeat with `Explicit threadId` checked and confirm the explicit-thread path is unchanged ## Notes The visible reset had two frontend-side causes. First, the chat and agent could diverge when the SDK generated the thread ID. Second, in Intelligence mode, provider rerenders could re-sync an empty local agent registry and replace the live remote agent instance mid-run, dropping the in-memory chat stream. Both fixes live in `@copilotkit/react-core`. The Playwright file is intentionally a smoke test for the demo route/toggle. The source-level regressions live in `CopilotChat.absentThreadConnect.test.tsx` and `CopilotKitProvider.stability.test.tsx`.