Repository navigation
fix: preserve LangGraph catalogs with merged AG-UI properties - #7558
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Repository: CopilotKit/CopilotKit/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: CopilotKit/CopilotKit/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (6)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe JavaScript and Python LangGraph middleware now merge AG-UI and CopilotKit properties. They use the resolved values for A2UI catalog selection, schema handling, tool injection, and frontend-tool processing. Tests cover property precedence, context resolution, tool invocation, and frontend-tool restoration. ChangesLangGraph middleware property handling
Priority: ➖ Normal Estimated code review effort: 4 (Complex) | ~45 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The changes preserve the supported runtime-context fallback while honoring explicit CopilotKit overrides. No actionable merge-blocking defect was established; the stated release-confirmation and targeted parity checks remain prerequisites for release. Security Architecture ReviewSecurity architecture risk: 🟡 Moderate · up to Property precedence and explicit host overrides are preserved. However, the new JavaScript tool wrapper can reuse captured request data if overlapping or interrupted runs share a tool-cache key and invocation supplies no current state. Production reachability remains unconfirmed. The existing runtime-context disclosure finding also remains, although this PR does not appear to widen that fallback. Retained concerns
Security review detailsSecurity Blast Radius
Security Findings and Attack Paths
Trust Boundaries and Controls
Resilience and Maintainability Implications
Hardening Proposals
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 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 |
@copilotkit/a2ui-renderer
@copilotkit/agentcore-runner
@copilotkit/angular
@copilotkit/channels
@copilotkit/channels-core
@copilotkit/channels-discord
@copilotkit/channels-intelligence
@copilotkit/channels-slack
@copilotkit/channels-teams
@copilotkit/channels-telegram
@copilotkit/channels-ui
@copilotkit/channels-whatsapp
@copilotkit/core
@copilotkit/intelligence-langgraph
@copilotkit/intelligence-mastra
@copilotkit/mcp-apps-renderer
@copilotkit/react-core
@copilotkit/react-native
@copilotkit/react-textarea
@copilotkit/react-ui
@copilotkit/runtime
@copilotkit/runtime-client-gql
@copilotkit/sdk-js
@copilotkit/shared
@copilotkit/sqlite-runner
@copilotkit/voice
@copilotkit/vue
@copilotkit/web-components
@copilotkit/web-inspector
commit: |
|
Size Change: 0 B Total Size: 1.73 MB ℹ️ View Unchanged
|
What does this PR do?
Fixes Python and TypeScript LangGraph middleware missing catalogs carried by
ag-ui.context. Previously the native A2UI tool could persist the basic catalog while live rendering used the registered catalog, so faithful imported replay selected the wrong catalog.Both SDKs now resolve AG-UI properties as the base and recursively merge CopilotKit properties over them for app context, frontend actions, A2UI catalog/schema and injection decisions. Disjoint dictionary keys survive; CopilotKit wins every conflicting leaf, including false/null/empty values. Lists and serialized strings are atomic replacements, with no positional pairing of context entries. Catalog consumers understand serialized context lists and values. Existing Python runtime/config carrier priority and explicit host settings are preserved. The toolkit receives a copied effective state; neither source namespace nor the checkpoint is rewritten. TypeScript's graph schema retains both property namespaces.
Validation
copilotkit://app-dashboard-catalogand retain their component payloads and tool-call identities.call_dh1ozgWEMMANcn8rBm6ng2EIidentity. No importer catalog rewriting, services restarted or retained stores modified.The offline importer check does not exercise database persistence or compacted-message reconstruction. Released-version targeted parity revalidation remains required. No versions, attachment filenames or model-generated placeholder content change.
Related PRs and Issues
Keep draft. Do not merge or release; ticket completion requires release confirmation and targeted parity revalidation.
Summary by CodeRabbit