Repository navigation
Move remaining AgentChat implementation into Rust under src - #22
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The previous Rust-core PR still left AgentChat's provider and Python runtime implementations in Python. This change moves all AgentChat implementation code under
src/in Rust, including the publicsrc/agentchatfacade, and leavespython/agentchatas imports, compatible dataclasses/protocols, type declarations, and direct native exports.Implementation
agentchat-core,agentchat-slackand the newagentchat-providerscrate. Both Slack transports consume the same subscription, file-transfer and receipt policies..pyideclarations,py.typed, a typing check, and a guard preventing Python implementations from returning to the facade.Review and validation
Independent implementation reviews checked shared policy ownership, Python compatibility, async cleanup and Rust coding standards. Review fixes include safe GC traversal during CPython object construction, REST-client session-cycle collection, subclass constructors, instance method overrides, working-status override dispatch, and synchronous callback failures.
Passed locally on macOS arm64:
All 12 CI jobs pass on final commit
706457a: Python 3.11/3.14, Rust tests/strict Clippy, Rust 1.88, Node 22/24, source installation, and Python/Node packages on Linux x64/arm64, macOS x64/arm64 and Windows x64. The same abi3 wheel passed Python 3.11 and 3.14 smoke checks on each platform. CI’s newer Clippy required the standard-library no-op waker; that fix also passed 13 focused local coroutine/GC regressions. Successful CI run.The branch is based on current
main(bacf106) with no merge conflicts. Python 3.14 emits dependency deprecation warnings from pytest-asyncio plus existing aiohttp/Teams warnings.Support boundaries
Python exposes all six channels; full Node/Rust channel transport remains Slack-first. Non-Slack portable policies are Rust-native, with full transport bindings for other languages still pending. Tests use local/injected Slack services and a simulated Claude stream; no live workspace or model credentials were used.
A pending native coroutine retained in a cycle through its own opaque arguments cannot currently be reclaimed by Python's cycle collector. Awaiting, task cancellation, or explicit
close()releases captures; suspendedclose()also runs context-manager cleanup. This limitation and usage guidance are documented indocs/rust-core.md.