Commit Graph

18 Commits

  • Python: [BREAKING] Types API Review improvements (#3647)
    * Replace Role and FinishReason classes with NewType + Literal
    
    - Remove EnumLike metaclass from _types.py
    - Replace Role class with NewType('Role', str) + RoleLiteral
    - Replace FinishReason class with NewType('FinishReason', str) + FinishReasonLiteral
    - Update all usages across codebase to use string literals
    - Remove .value access patterns (direct string comparison now works)
    - Add backward compatibility for legacy dict serialization format
    - Update tests to reflect new string-based types
    
    Addresses #3591, #3615
    
    * Simplify ChatResponse and AgentResponse type hints (#3592)
    
    - Remove overloads from ChatResponse.__init__
    - Remove text parameter from ChatResponse.__init__
    - Remove | dict[str, Any] from finish_reason and usage_details params
    - Remove **kwargs from AgentResponse.__init__
    - Both now accept ChatMessage | Sequence[ChatMessage] | None for messages
    - Update docstrings and examples to reflect changes
    - Fix tests that were using removed kwargs
    - Fix Role type hint usage in ag-ui utils
    
    * Remove text parameter from ChatResponseUpdate and AgentResponseUpdate (#3597)
    
    - Remove text parameter from ChatResponseUpdate.__init__
    - Remove text parameter from AgentResponseUpdate.__init__
    - Remove **kwargs from both update classes
    - Simplify contents parameter type to Sequence[Content] | None
    - Update all usages to use contents=[Content.from_text(...)] pattern
    - Fix imports in test files
    - Update docstrings and examples
    
    * Rename from_chat_response_updates to from_updates (#3593)
    
    - ChatResponse.from_chat_response_updates → ChatResponse.from_updates
    - ChatResponse.from_chat_response_generator → ChatResponse.from_update_generator
    - AgentResponse.from_agent_run_response_updates → AgentResponse.from_updates
    
    * Remove try_parse_value method from ChatResponse and AgentResponse (#3595)
    
    - Remove try_parse_value method from ChatResponse
    - Remove try_parse_value method from AgentResponse
    - Remove try_parse_value calls from from_updates and from_update_generator methods
    - Update samples to use try/except with response.value instead
    - Update tests to use response.value pattern
    - Users should now use response.value with try/except for safe parsing
    
    * Add agent_id to AgentResponse and clarify author_name documentation (#3596)
    
    - Add agent_id parameter to AgentResponse class
    - Document that author_name is on ChatMessage objects, not responses
    - Update ChatResponse docstring with author_name note
    - Update AgentResponse docstring with author_name note
    
    * Simplify ChatMessage.__init__ signature (#3618)
    
    - Make contents a positional argument accepting Sequence[Content | str]
    - Auto-convert strings in contents to TextContent
    - Remove overloads, keep text kwarg for backward compatibility with serialization
    - Update _parse_content_list to handle string items
    - Update all usages across codebase to use new format: ChatMessage("role", ["text"])
    
    * Allow Content as input on run and get_response
    
    - Update prepare_messages and normalize_messages to accept Content
    - Update type signatures in _agents.py and _clients.py
    - Add tests for Content input handling
    
    * Fix ChatMessage usage across packages and samples
    
    Update all remaining ChatMessage(role=..., text=...) to use new
    ChatMessage('role', ['text']) signature.
    
    * Fix Role string usage and response format parsing
    
    - Fix redis provider: remove .value access on string literals
    - Fix durabletask ensure_response_format: set _response_format before accessing .value
    
    * Fix ollama .value and ai_model_id issues, handle None in content list
    
    - Fix ollama _chat_client: remove .value on string literals
    - Fix ollama _chat_client: rename ai_model_id to model_id
    - Fix _parse_content_list: skip None values gracefully
    
    * Fix A2AAgent type signature to include Content
    
    * Fix Role/FinishReason NewType dict annotations and improve test coverage to 95%
    
    * Fix mypy errors for Role/FinishReason NewType usage
    
    * Fix Role.TOOL and Role.ASSISTANT usage in _orchestrator_helpers.py
    
    * Fix Role NewType usage in durabletask _models.py
  • Python: [BREAKING] changed AIFunction to FunctionTool and @ai_function to @tool (#3413)
    * changed AIFunction to FunctionTool and @ai_function to @tool
    
    * test and mypy fixes
    
    * mypy fix
    
    * switch function tool to always_require
    
    * fix noop
    
    * fix github copilot imports
    
    * test fixes
    
    * fix ollama test
    
    * fixes for tests
    
    * fix tests
    
    * reverted change to always_require and extended timeout
    
    * fix test
  • Python: [BREAKING]: removed display_name, renamed context_providers, middleware and AggregateContextProvider (#3139)
    * removed display_name, renamed context_providers, middleware and AggregateContextProvider
    
    * fixes
    
    * fixed test
    
    * testfix
    
    * removed mistakenly put back test
    
    * updated new test
    
    * rename middlewares to middleware
    
    * middleware fixes
  • Python: [BREAKING] Observability updates (#2782)
    * fixes Python: Add env_file_path parameter to setup_observability() similar to AzureOpenAIChatClient
    Fixes #2186
    
    * WIP on updates using configure_azure_monitor
    
    * improved setup and clarity
    
    * fixed root .env.example
    
    * revert changes
    
    * updated files
    
    * updated sample
    
    * updated zero code
    
    * test fixes and fixed links
    
    * fix devui
    
    * removed planning docs
    
    * added enable method and updated readme and samples
    
    * clarified docstring
    
    * add return annotation
    
    * updated naming
    
    * update capatilized version
    
    * updated readme and some fixes
    
    * updated decorator name inline with the rest
    
    * feedback from comments addressed
  • Python: fix for logging setup (#2371)
    * fix for logging setup
    
    * typo fixes
    
    * fix text
  • Python: Remove duplicated workflow observability sample (#2357)
    * Remove duplicated workflow observability sample
    
    * Fix link
  • Python: [BREAKING] Replaced AIProjectClient with AgentsClient in Foundry (#1936)
    * Replaced AIProjectClient with AgentsClient in Foundry
    
    * Update python/samples/getting_started/observability/azure_ai_agent_observability.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/samples/getting_started/observability/azure_ai_chat_client_with_observability.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Small fix
    
    * Removed TODO item
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • Python: Add Handoff orchestration pattern support (#1469)
    * Add Handoff orchestration pattern support
    
    * PR feedback
    
    * Use AOAI client in samples
    
    * Adjust to tool
    
    * Handoff to sub-agent via ai function
    
    * PR feedback
    
    * More cleanup
    
    * Improvements
    
    * PR feedback cleanup
    
    * Add handoff migration sample.
    
    * Remove type ignore
    
    * fix markdown link formatting
    
    * Remove readme link for non-existent sample
  • .NET: Add link inspector (#1062)
    * Add link inspector
    
    * Comment out excludedirs while it's empty
    
    * Fix broken links
    
    * More links fixes
    
    * Push further fixes
    
    * Fix more links
  • Python: Tool definitions otel (#936)
    * added tool_definitions
    
    * removed json dump
    
    * improved logic
    
    * updated for pydantic
  • Python: fix string parsing in azure openai client (#1023)
    * fix string parsing in azure openai client
    
    * test fix
    
    * changed setup func name and check if there is a conn string
    
    * redid parsing in safe way
  • Python: [Doc] Update python observability sample with Grafana dashboards (#995)
    * Update python observability sample with Grafana dashboards
    
    * fix case
    
    ---------
    
    Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
  • [BREAKING] Python: Observability cleanup (#905)
    * Further observability cleanup and update telemetry samples
    
    * Add VS Code Extension config
    
    * Fix unit tests
    
    * Fix unit tests
    
    * Add more comments
    
    * Remove live metric
  • Python: [BREAKING] updated structure and samples (#875)
    * updated structure and samples
    
    * updated names and removed cross tests
    
    * updated projects etc
    
    * updated tests
    
    * updated test
    
    * test fixes
    
    * removed devui for now
    
    * updated all-tests task
    
    * removed old style configs
    
    * remove coverage from tests
    
    * updated to unit tests with all-tests
    
    * updated foundry everywhere
    
    * fix azure ai tests
    
    * fix merge tests
    
    * fix mypy
  • Python: Clean left-over WorkflowCompletedEvent (#884)
    * Clean left-over WorkflowCompletedEvent
    
    * Improve comments
    
    * Fix type check error
  • Python: [Breaking] Remove WorkflowCompletedEvent, introduce workflow output and migrate to ctx.yield_output() + a huge refactoring (#845)
    * Introduce input and output types for executor and workflow
    
    * WorkflowOutputContext handles two types
    
    * Remove can_handle_types from Executor
    
    * Update validation
    
    * Move workflow executor
    
    * Move workflow executor
    
    * Fix issues in WorkflowExecutor
    
    * refactor executor
    
    * update execute signature to create workflow context within Executor
    
    * fix simple sub workflow test; fix validation
    
    * fix output types in WorkflowExecutor
    
    * fix issue in Executor handling of SubWorkflowRequestInfo
    
    * update tests to use proper workflow output
    
    * update orchestration patterns to use output
    
    * Update sample -- not finished
    
    * Update python/packages/main/tests/workflow/test_workflow_states.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/main/tests/workflow/test_concurrent.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * address comments
    
    * WorkflowOutputContext --> WorkflowContext
    
    * remove WorkflowCompletedEvent
    
    * update samples
    
    * Update doc string for important classes; update WorkflowExecutor to support concurrent execution
    
    * use Never instead of None for default type
    
    * Update usage of WorkflowContext[None to WorkflowContext[Never
    
    * address comments
    
    * remove filter for None
    
    * address comments, minor fixes
    
    * quality of life improvement on interceptor types
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • Python: Telemetry and observability follow-up (#833)
    * updated telemetry work
    
    * updated telemetry
    
    * slight improvement
    
    * updated tests
    
    * fixes for telemetry
    
    * fixes for mypy
    
    * added settings setup to runner to avoid error
    
    * streamline usage
    
    * updated tests
    
    * updated tests
    
    * further refinement
    
    * fix dumped item for otel
    
    * removed enable_workflow_otel
    
    * final fixes
    
    * final fixes
    
    * updated samples
    
    * removed exporters
    
    * fix tests
    
    * fixed last import'
    
    * fixed devui