Commit Graph

4 Commits

  • Python: Fix A2A v1.0 non-streaming response and sample runtime issues (#5849)
    - Fix non-streaming empty response by accumulating intermediate WORKING
      status updates and flushing them when an empty terminal event arrives
    - Fix sample agent_executor.py to enqueue Task before status events
      (required by v1.0 ActiveTask validation)
    - Fix create_jsonrpc_routes() calls to include required rpc_url param
    - Fix TYPE_CHECKING imports in sample agent_definitions.py
    - Add tests for non-streaming content accumulation behavior
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Python: [BREAKING] Migrate agent-framework-a2a to a2a-sdk v1.0 (#5752)
    * Python: Migrate agent-framework-a2a to a2a-sdk v1.0
    
    Upgrade the a2a-sdk dependency from v0.3.x to v1.0.0 and migrate all
    source, tests, samples, and documentation to the v1.0 API.
    
    Key changes:
    - Dependency: a2a-sdk>=1.0.0,<2 (was >=0.3.5,<0.3.24)
    - Types are now protobuf-based: Part replaces TextPart/FilePart/DataPart
    - Enums use SCREAMING_SNAKE_CASE (e.g. TaskState.TASK_STATE_COMPLETED)
    - Roles: Role.ROLE_AGENT, Role.ROLE_USER
    - Client: SendMessageRequest wrapper, subscribe() replaces resubscribe()
    - Server: A2AStarletteApplication replaced by Starlette + route factories
    - DefaultRequestHandler now requires agent_card parameter
    - TaskUpdater: final parameter removed, add_artifact gains last_chunk
    - AgentCard.url removed; use supported_interfaces with AgentInterface
    - Stream yields StreamResponse with WhichOneof('payload')
    
    Closes #5661
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address PR review: validate fallback URL, remove unused task_id vars
    
    - Raise ValueError with clear message when transport negotiation fails
      and no fallback URL is available (neither url arg nor supported_interfaces)
    - Remove unused task_id local in status_update branch
    - Inline artifact_event.task_id directly in artifact_update branch
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Python: feat: Add Agent Framework to A2A bridge support (#2403)
    * feat: Add Agent Framework to A2A bridge support
    
    - Implement A2A event adapter for converting agent messages to A2A protocol
    - Add A2A execution context for managing agent execution state
    - Implement A2A executor for running agents in A2A environment
    - Add comprehensive unit tests for event adapter, execution context, and executor
    - Update agent framework core A2A module exports and type stubs
    - Integrate thread management utilities for async execution
    - Add getting started sample for A2A agent framework integration
    - Update dependencies in uv.lock
    
    This integration enables agent framework agents to communicate and execute within the A2A (Agent to Agent) infrastructure.
    
    * fix: Update references from agent_thread_storage to _agent_thread_storage in A2A executor tests
    
    * Refactor A2A agent framework and improve code structure
    
    - Reordered imports in various files for consistency and clarity.
    - Updated `__all__` definitions to maintain a consistent order across modules.
    - Simplified method signatures by removing unnecessary line breaks.
    - Enhanced readability by adjusting formatting in several sections.
    - Removed redundant comments and example scenarios in the execution context.
    - Improved handling of agent messages in the event adapter.
    - Added type hints for better clarity and type checking.
    - Cleaned up test cases for better organization and readability.
    
    * fix: Lint fix new line added
    
    * test: Add unit tests for AgentThreadStorage and InMemoryAgentThreadStorage
    
    * refactor: Update type hints to use new syntax for Union and List
    
    * fix: Validate RequestContext for context_id and message before execution
    
    * Refactor tests and remove A2aExecutionContext references
    
    - Deleted the test file for A2aExecutionContext as it is no longer needed.
    - Updated A2aExecutor tests to remove dependencies on A2aExecutionContext and adjusted method calls accordingly.
    - Modified event adapter tests to use ChatMessage instead of AgentRunResponseUpdate.
    - Removed A2aExecutionContext from imports in agent_framework.a2a module and updated type hints accordingly.
    
    * Refactor A2AExecutor tests and remove event adapter
    
    - Updated test cases to use A2AExecutor instead of A2aExecutor for consistency.
    - Removed mock_event_adapter fixture and related tests as A2aEventAdapter is deprecated.
    - Consolidated event handling tests into TestA2AExecutorEventAdapter.
    - Adjusted imports in various files to reflect the removal of deprecated components.
    - Ensured all references to A2aExecutor are updated to A2AExecutor across the codebase.
    
    * refactor: Remove AgentThreadStorage and InMemoryAgentThreadStorage classes from threads and tests
    
    * feat: A2AExecutor to have its own override able save and get threads methods for persistent storage.
    
    * fix: linter bugs
    
    * removed unnecessary changes form core package
    
    * new line added
    
    * Refactor A2AExecutor tests and update imports
    
    - Consolidated mock agent fixtures in test_a2a_executor.py to simplify agent mocking.
    - Removed redundant tests related to thread storage and agent types, focusing on A2AExecutor's core functionality.
    - Updated test assertions to reflect changes in message handling with new Message and Content classes.
    - Enhanced integration tests to ensure compatibility with the new agent framework structure.
    - Added A2AExecutor to the module exports in __init__.py and __init__.pyi for better accessibility.
    
    * Update A2A documentation: enhance usage examples for A2AAgent and A2AExecutor
    
    * Updated uv lock
    
    * Fix metadata assertion in TestA2AExecutorHandleEvents and reorder load_dotenv call in agent_framework_to_a2a.py
    
    * Update agent card configuration: add default input and output modes, and fix agent creation method
    
    * Fix assertion for metadata in TestA2AExecutorHandleEvents
    
    * Fix formatting issues in TestA2AExecutorExecute and TestA2AExecutorIntegration
    
    * Enhance A2AExecutor documentation with examples and clarify agent execution process
    
    * Revert uv lock to main
    
    * Refactor A2AExecutor: Improve formatting and streamline constructor parameters
    
    * Apply suggestions from code review
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Refactor A2AExecutor to use SupportsAgentRun and enhance logging; update agent framework sample for flight and hotel booking capabilities
    
    * Enhance A2AExecutor with streaming support and custom run arguments; update tests for initialization and execution scenarios
    
    * Enhance A2AExecutor event handling with streamed artifact tracking; update tests for new behavior
    
    * Refactor A2AExecutor to enforce type hints for stream and run_kwargs attributes
    
    * Refactor A2AExecutor and tests: replace AsyncMock with MagicMock for response stream handling; clean up imports in agent_framework_to_a2a.py
    
    * refactor: streamline imports and improve code readability across multiple files
    
    * feat: enhance A2AExecutor cancel method with context validation and fixed review comments
    
    * feat: implement get_uri_data utility function for extracting base64 data from data URIs and update references
    
    * fix: update import path for get_uri_data utility function in A2AExecutor and A2AAgent
    
    * fix: correct error message handling in A2AExecutor and update test assertions
    
    ---------
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
  • .NET: Python: Add AGENTS.md files and update coding standards (#3644)
    * Add AGENTS.md files and update coding standards for Python
    
    - Add root python/AGENTS.md with project structure and package links
    - Add AGENTS.md for each package describing purpose and main classes
    - Update .github/copilot-instructions.md with improved structure
    - Update python/CODING_STANDARD.md with API review guidance:
      - Future annotations convention (#3578)
      - TypeVar naming convention (#3594)
      - Mapping vs MutableMapping (#3577)
      - Avoid shadowing built-ins (#3583)
      - Explicit exports (#3605)
      - Exception documentation guidelines (#3410)
    - Simplify python/.github/instructions/python.instructions.md to reference AGENTS.md
    - Remove AGENTS.md from .gitignore
    
    * Fix purview import path in AGENTS.md
    
    * Address PR review comments and restructure instructions
    
    - Slim down .github/copilot-instructions.md to reference language-specific docs
    - Add ADR section explaining templates and purpose
    - Create dotnet/AGENTS.md with .NET-specific build commands, conventions, and sample guidance
    - Update Python build/test instructions for core vs isolated changes
    - Fix Microsoft.Extensions.AI package references
    - Update kwargs guidance per issue #3642
    - Fix Python sample helper placement (top, not bottom)
    - Document new 'typing' poe task in DEV_SETUP.md
    
    * Add 'typing' poe task to run both pyright and mypy
    
    * Add kwargs guidelines from issue #3642 to CODING_STANDARD.md
    
    * Clarify that connector packages pull in core as dependency