发布

  • Python: [BREAKING] PR2 — Wire context provider pipeline, remove old types, update all consumers (#3850)

    frostbyte_neo 发布于 2026-02-12 21:00:32 +00:00

    • PR2: Wire context provider pipeline and update all internal consumers
    • Replace AgentThread with AgentSession across all packages
    • Replace ContextProvider with BaseContextProvider across all packages
    • Replace context_provider param with context_providers (Sequence)
    • Replace thread= with session= in run() signatures
    • Replace get_new_thread() with create_session()
    • Add get_session(service_session_id) to agent interface
    • DurableAgentThread -> DurableAgentSession
    • Remove _notify_thread_of_new_messages from WorkflowAgent
    • Wire before_run/after_run context provider pipeline in RawAgent
    • Auto-inject InMemoryHistoryProvider when no providers configured
    • fix: update all tests for context provider pipeline, fix lazy-loaders, remove old test files

    • refactor: update all sample files for context provider pipeline (AgentThread→AgentSession, ContextProvider→BaseContextProvider)

    • fix: update remaining ag-ui references (client docstring, getting_started sample)

    • fix: make get_session service_session_id keyword-only to avoid confusion with session_id

    • refactor: rename _RunContext.thread_messages to session_messages

    • refactor: remove _threads.py, _memory.py, and old provider files; migrate devui to use plain message lists

    • rename: remove new prefix from test files

    • refactor: rewrite SlidingWindowChatMessageStore as SlidingWindowHistoryProvider(InMemoryHistoryProvider)

    • fix: read full history from session state directly instead of reaching into provider internals

    • fix: update stale .pyi stubs, sample imports, and README references for new provider types

    • fix: remove stale message_store, _notify_thread_of_new_messages, and session_id.key references in samples

    • refactor: merge context_providers and sessions sample folders into sessions, remove aggregate_context_provider

    • refactor: UserInfoMemory stores state in session.state instead of instance attributes

    • feat: add Pydantic BaseModel support to session state serialization

    Pydantic models stored in session.state are now automatically serialized
    via model_dump() and restored via model_validate() during to_dict()/from_dict()
    round-trips. Models are auto-registered on first serialization; use
    register_state_type() for cold-start deserialization.

    Also export register_state_type as a public API.

    • fix mem0

    • Update sample README links and descriptions for session terminology

    • Replace 'thread' with 'session' in sample descriptions across all READMEs
    • Update file links for renamed samples (mem0_sessions, redis_sessions, etc.)
    • Fix Threads section → Sessions section in main samples/README.md
    • Update tools, middleware, workflows, durabletask, azure_functions READMEs
    • Update architecture diagrams in concepts/tools/README.md
    • Update migration guides (autogen, semantic-kernel)
    • Fix broken Redis README link to renamed sample

    • Fix Mem0 OSS client search: pass scoping params as direct kwargs

    AsyncMemory (OSS) expects user_id/agent_id/run_id as direct kwargs,
    while AsyncMemoryClient (Platform) expects them in a filters dict.
    Adds tests for both client types.

    Port of fix from #3844 to new Mem0ContextProvider.

    • Fix rebase issues: restore missing _conversation_state.py and checkpoint decode logic
    • Add back _conversation_state.py (encode/decode_chat_messages) lost in rebase
    • Fix on_checkpoint_restore to decode cache/conversation with decode_chat_messages
    • Fix on_checkpoint_restore to use decode_checkpoint_value for pending requests
    • Add tests/workflow/__init__.py for relative import support
    • Fix test_agent_executor checkpoint selection (checkpoints[1] not superstep)
    • Add STORES_BY_DEFAULT ClassVar to skip redundant InMemoryHistoryProvider injection

    Chat clients that store history server-side by default (OpenAI Responses API,
    Azure AI Agent) now declare STORES_BY_DEFAULT = True. The agent checks this
    during auto-injection and skips InMemoryHistoryProvider unless the user
    explicitly sets store=False.

    • Fix broken markdown links in azure_ai and redis READMEs

    • Fix getting-started samples to use session API instead of removed thread/ContextProvider API

    • updates to workflow as agent

    • fix group chat import

    • Rename Thread→Session throughout, fix service_session_id propagation, remove stale AGUIThread

    • Fix: Propagate conversation_id from ChatResponse back to session.service_session_id
      in both streaming and non-streaming paths in _agents.py
    • Rename AgentThreadException → AgentSessionException
    • Remove stale AGUIThread from ag_ui lazy-loader
    • Rename use_service_thread → use_service_session in ag-ui package
    • Rename test functions from thread to session
    • Rename sample files from _thread to _session
    • Update docstrings and comments: thread → session
    • Update _mcp.py kwargs filter: add 'session' alongside 'thread'
    • Fix ContinuationToken docstring example: thread=thread → session=session
    • Fix _clients.py docstring: 'Agent threads' → 'Agent sessions'
    • Fix broken markdown links after thread→session file renames

    • fix azure ai test

    下载附件