49 Commits

  • [BREAKING] Python: Enable instrumentation by default (#5865)
    * Enable instrumentation by default
    
    * Update samples
    
    * Optimization when span is not recording
    
    * Address Copilot comments
    
    * Revert uv.lock
    
    * Add warning
    
    * Formatting
    
    * Fix mypy
    
    * Add disable_instrumentation() with sticky user-intent semantics
    
    Add a public disable_instrumentation() entry point so users can explicitly opt
    out of Agent Framework telemetry, with a sticky-disable flag that makes the
    user's intent "leading" — no framework code path (foundry's
    configure_azure_monitor, configure_otel_providers, enable_instrumentation,
    enable_sensitive_telemetry, or direct OBSERVABILITY_SETTINGS.enable_*
    writes) can re-enable instrumentation until the user explicitly clears the
    disable with enable_instrumentation(force=True) /
    enable_sensitive_telemetry(force=True).
    
    Also addresses the two remaining unresolved review threads on the PR:
    1. test_observability_settings_defaults_instrumentation_true pins the new
       "ENABLE_INSTRUMENTATION defaults to True when env unset" behavior.
    2. test_enable_instrumentation_reads_env_sensitive_data restores coverage
       for the post-import load_dotenv() fallback path.
    
    Implementation:
    - ObservabilitySettings.enable_instrumentation / enable_sensitive_data become
      properties backed by _enable_*. While _user_disabled is True, the getters
      return False and the setters drop True writes (defense in depth so third-
      party writes can't subvert the disable).
    - Public is_user_disabled read-only property lets integrations (e.g. foundry's
      configure_azure_monitor) cheaply check the disable state without poking at
      privates.
    - enable_instrumentation() and enable_sensitive_telemetry() short-circuit with
      an info log when disabled; gain a force=True kwarg that clears the disable.
    - configure_otel_providers() still creates providers / exporters / views so a
      later force-enable can use them, but logs an info message when called while
      disabled.
    - Foundry's FoundryChatClient.configure_azure_monitor and
      FoundryAgent.configure_azure_monitor early-return when the user has
      disabled, so Azure Monitor's global providers aren't installed unnecessarily.
    
    Tests: 11 new tests covering default-on, env re-read at call time, sticky
    behavior against each re-enable surface (enable_instrumentation,
    enable_sensitive_telemetry, configure_otel_providers, direct attribute
    writes), force=True override, re-arming the disable, and the __all__ export.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * docs: document disable_instrumentation() and force=True paths
    
    Add a "Disabling instrumentation" section to the observability sample README
    that walks through:
    
    - The distinction between the ENABLE_INSTRUMENTATION env var (initial,
      non-sticky) and disable_instrumentation() (process-wide, sticky).
    - Why the sticky semantics matter: framework integrations like
      FoundryChatClient.configure_azure_monitor() can call
      enable_instrumentation() as part of their setup, and the user's opt-out
      needs to win.
    - All five surfaces guarded by the sticky disable (property reads, public
      enable functions, configure_otel_providers, direct attribute writes,
      is_user_disabled-aware integrations).
    - The force=True escape hatch on both enable_instrumentation() and
      enable_sensitive_telemetry().
    - How third-party integrations should consult OBSERVABILITY_SETTINGS.is_user_disabled.
    - The limits of the disable (does not tear down existing providers /
      in-flight spans / third-party instrumentation, does not persist across
      processes).
    
    Cross-links the new section from the ENABLE_INSTRUMENTATION row in the env
    vars table.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * docs: soften disable_instrumentation() overclaim about telemetry guarantees
    
    Replace 'no telemetry will be emitted no matter what' (which is too strong,
    since callers can still pass force=True or mutate private attributes) with
    language framing the disable as a user-intent contract that library and
    framework code is expected to honor: the framework actively short-circuits
    the public enable paths, force=True and private-attribute writes are
    acknowledged as out-of-contract escape hatches that integrations should
    not use on the user's behalf.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * docs: correct observability Dependencies section
    
    - opentelemetry-sdk is no longer a hard dependency; it is lazily imported by
      create_resource(), create_metric_views(), and configure_otel_providers()
      with a clear ImportError when missing. Day-to-day instrumentation works
      with opentelemetry-api alone provided some other component configures the
      global OpenTelemetry providers (Azure Monitor, an APM agent, application
      bootstrap, etc.).
    - opentelemetry-semantic-conventions-ai is no longer used anywhere in the
      source; remove it from the listed dependencies.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * docs: replace stale observability migration guide with current PR's only relevant migration
    
    The old guide documented the move away from setup_observability(otlp_endpoint=...)
    which was an earlier-release API change unrelated to this PR and stale enough that
    it's more confusing than helpful at this point. Replace it with a short note on the
    single migration this PR introduces: callers of
    enable_instrumentation(enable_sensitive_data=True) should switch to
    enable_sensitive_telemetry(). Cross-link to the Disabling instrumentation section
    for the rare 'force on without enabling sensitive data' use case where
    enable_instrumentation() still applies.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Python: Improve the handling of intermediate outputs for workflows and orchestrations (#5623)
    * Improve the handling of intermediate outputs for workflows and orchestrations
    
    * Address PR review feedback on intermediate output forwarding
    
    - Switch workflow.as_agent() forwarding to an explicit allowlist of {output,
      intermediate, data, request_info} so orchestration-internal events
      (group_chat, handoff_sent, magentic_orchestrator) stay inside the workflow
      instead of leaking into agent responses via str(data) coercion.
    - Stop raising on intermediate AgentResponseUpdate in non-streaming run();
      surface the partial as a Message with text_reasoning content. The defensive
      raise still applies to terminal output events, where Update payloads would
      corrupt message ordering.
    - Extend the DevUI workflow-event mapper so intermediate yields wrapping
      plain strings, Messages, and list[Message] render as visible output items
      instead of generic completed-trace events.
    - Add orchestration coverage for GroupChat, Handoff, and Magentic builders
      (default vs intermediate_outputs=True; structural where end-to-end is heavy).
    
    * Lift output-designation policy into a value type
    
    Replace the ``Workflow._output_executors`` list and the
    ``RunnerContext.should_label_as_intermediate`` Protocol method with a single
    immutable ``OutputDesignation`` value type owned by ``Workflow``. Thread the
    designation as a parameter through the existing call chain (Runner ->
    EdgeRunner -> Executor -> WorkflowContext) so ``yield_output`` consults the
    threaded snapshot directly rather than calling back into the runner context.
    
    Removes the ``InProcRunnerContext._workflow`` back-reference and the
    ``WorkflowBuilder.build()`` assignment that wired it up. Adds the public
    predicate ``Workflow.is_terminal_executor(executor_id)`` for external
    observers; ``OutputDesignation`` itself stays package-internal.
    
    Key decisions
    - ``OutputDesignation.designated`` is ``frozenset[str] | None`` -- ``None``
      preserves legacy "every yield is type='output'" behavior, any frozenset
      (including empty) opts into strict mode. The ``DeprecationWarning`` for
      legacy mode at build time is unchanged.
    - ``output_designation`` is an optional parameter on ``Runner``,
      ``EdgeRunner.send_message``, ``EdgeRunner._execute_on_target``,
      ``Executor.execute``, ``Executor._create_context_for_handler``, and
      ``WorkflowContext.__init__``. Each defaults to legacy ``OutputDesignation()``
      so direct callers (Azure Functions ``CapturingRunnerContext``,
      ``test_runner`` recording fixtures) keep working without ceremony.
    - The workflow-level filter in ``_run_core`` reads ``self._output_designation``
      live, preserving today's semantics where mutating the designation after
      build still affects subsequent runs (used by two existing tests).
    - ``Workflow.to_dict()`` continues to emit ``"output_executors":
      list[str] | None`` (sorted from the frozenset). Checkpoint format unchanged.
    
    Files changed
    - _workflow.py: add ``OutputDesignation`` dataclass; replace
      ``_output_executors`` with ``_output_designation``; add
      ``is_terminal_executor``; delete ``_should_yield_output_event``.
    - _runner_context.py: drop ``should_label_as_intermediate`` Protocol method
      and ``InProcRunnerContext`` impl; drop ``_workflow`` back-reference.
    - _workflow_builder.py: remove ``context._workflow = workflow`` assignment.
    - _runner.py, _edge_runner.py, _executor.py, _workflow_context.py: thread
      ``output_designation`` parameter through the call chain.
    - tests/workflow/test_output_designation.py (new): three-state coverage of
      the value type plus the public predicate delegation.
    - tests/workflow/test_workflow_builder.py, test_validation.py,
      test_workflow.py, test_runner.py and
      orchestrations/tests/test_orchestration_intermediate_vs_terminal.py:
      switch probes from ``_output_executors`` set checks to
      ``get_output_executors`` / ``is_terminal_executor``; update two
      post-build mutation tests to set ``_output_designation`` instead.
    
    Verification
    - core/tests/workflow/, orchestrations/tests/, azurefunctions/tests/:
      1119 passed, 42 skipped, 2 xfailed.
    - ``uv run poe lint``: clean.
    - ``uv run poe typing``: only the pre-existing
      ``_AGENT_FORWARDED_EVENT_TYPES`` pyright warning from 394bcd607 remains.
    
    Notes for next iteration
    - The builder's own ``_output_executors`` attribute (``list[Executor |
      SupportsAgentRun]``) is intentionally untouched; the issue scoped the
      rename to the workflow attribute.
    - Adjacent review candidates (twin ``WorkflowAgent`` translators,
      ``_AGENT_FORWARDED_EVENT_TYPES`` kind classifier,
      ``_event_origin_context`` ContextVar removal, ``WorkflowEvent`` ADT
      split, legacy-mode removal) remain out of scope.
    
    * Add explicit workflow output designation
    
    Key decisions
    
    - Extend the internal OutputDesignation value type from terminal-only membership to output/intermediate/hidden classification. Legacy mode remains outputs=None, so workflows built without output_executors or intermediate_executors still label every yield_output as type='output'.
    
    - WorkflowBuilder now accepts intermediate_executors. Providing either designation enters explicit mode; output executors emit output, intermediate executors emit intermediate, and unlisted yield_output payloads are hidden from caller-facing events while remaining in executor_completed data.
    
    - Empty explicit designation, duplicate entries, overlaps, unknown executors, and designated executors without workflow output annotations fail build validation. Existing orchestration builders pass intermediate-capable participants through intermediate_executors to preserve current intermediate_outputs behavior until participant-oriented designation lands.
    
    Files changed
    
    - packages/core/agent_framework/_workflows/_workflow.py, _workflow_builder.py, _workflow_context.py, _validation.py, _events.py
    
    - packages/core/tests/workflow/test_output_designation.py, test_output_executors_contract.py, test_strict_mode_event_labeling.py, test_validation.py, test_workflow.py, test_workflow_agent_intermediate.py
    
    - packages/orchestrations/agent_framework_orchestrations/_sequential.py, _concurrent.py, _group_chat.py, _magentic.py
    
    - packages/core/AGENTS.md
    
    Verification
    
    - uv run pytest packages/core/tests/workflow packages/orchestrations/tests packages/devui/tests/devui/test_mapper.py -q
    
    - uv run pytest packages/azurefunctions/tests -q
    
    - uv run poe lint
    
    - uv run poe typing fails only on pre-existing packages/core/agent_framework/_workflows/_agent.py _AGENT_FORWARDED_EVENT_TYPES private-use pyright error.
    
    Notes for next iteration
    
    - issues/03-core-workflow-explicit-designation.md was moved to issues/done but issues/ remains untracked and intentionally excluded from this commit.
    
    - Slice 4 should tighten workflow.as_agent() mapping for hidden emissions and streaming-only update payloads; Slice 5 should replace orchestration intermediate_outputs with participant-oriented designation.
    
    * Tighten workflow-as-agent output mapping
    
    Key decisions
    
    - Treat AgentResponseUpdate as a streaming-only payload across the workflow.as_agent() adapter, so non-streaming agent runs now reject both terminal output and intermediate workflow events carrying updates.
    - Keep streaming classification behavior explicit: terminal update payloads remain normal text content, while intermediate update payloads are rewritten to text_reasoning content.
    - Add explicit-mode coverage proving hidden yield_output emissions do not appear in non-streaming AgentResponse messages or streaming AgentResponseUpdate chunks.
    
    Files changed
    
    - packages/core/agent_framework/_workflows/_agent.py
    - packages/core/tests/workflow/test_workflow_agent_intermediate.py
    
    Verification
    
    - uv run pytest packages/core/tests/workflow/test_workflow_agent_intermediate.py -q
    - uv run pytest packages/core/tests/workflow/test_workflow_agent.py packages/core/tests/workflow/test_workflow_agent_intermediate.py -q
    - uv run pytest packages/core/tests/workflow packages/orchestrations/tests packages/devui/tests/devui/test_mapper.py -q
    - uv run poe lint
    - uv run poe typing fails only on the pre-existing packages/core/agent_framework/_workflows/_agent.py _AGENT_FORWARDED_EVENT_TYPES private-use pyright error.
    
    Blockers or notes for next iteration
    
    - issues/04-workflow-as-agent-output-mapping.md was moved to issues/done/ but issues/ remains untracked and intentionally excluded from this commit.
    - Slice 5 should replace orchestration intermediate_outputs with participant-oriented designation.
    
    * Add orchestration participant output designation
    
    Key decisions
    
    - Replace orchestration intermediate_outputs with participant-oriented output_participants and intermediate_participants across Sequential, Concurrent, GroupChat, Magentic, and Handoff builders.
    - Keep synthetic final executors terminal by default for Concurrent, GroupChat, and Magentic; keep Sequential's final participant terminal by default; keep Handoff participants terminal by default.
    - Centralize participant designation validation for empty explicit designation, duplicates, overlaps, and unknown participants, then map validated participants to workflow output/intermediate executors.
    
    Files changed
    
    - packages/orchestrations/agent_framework_orchestrations/_participant_designation.py
    - packages/orchestrations/agent_framework_orchestrations/_sequential.py
    - packages/orchestrations/agent_framework_orchestrations/_concurrent.py
    - packages/orchestrations/agent_framework_orchestrations/_group_chat.py
    - packages/orchestrations/agent_framework_orchestrations/_magentic.py
    - packages/orchestrations/agent_framework_orchestrations/_handoff.py
    - packages/orchestrations/tests/test_orchestration_intermediate_vs_terminal.py
    - packages/orchestrations/tests/test_magentic.py
    
    Blockers or notes for next iteration
    
    - issues/05-orchestration-participant-designation.md was moved to issues/done/ but issues/ remains untracked and intentionally excluded from this commit.
    - Slice 7 should migrate samples and docs away from intermediate_outputs to the new participant designation API.
    - uv run poe typing still fails only on the pre-existing packages/core/agent_framework/_workflows/_agent.py _AGENT_FORWARDED_EVENT_TYPES private-use pyright error.
    
    * Migrate samples to explicit output designation
    
    Key decisions
    
    - Replace sample usage of the removed orchestration intermediate_outputs boolean with participant-oriented intermediate_participants designation.
    - Update raw workflow guidance to show output_executors together with intermediate_executors, and document that unlisted yields are hidden in explicit designation mode.
    - Keep orchestration final outputs terminal while streaming designated participant responses as intermediate progress, including workflow.as_agent() samples where intermediates map to text_reasoning content.
    - Refresh workflow and orchestration README guidance plus the changelog reference so public docs no longer point users at intermediate_outputs.
    
    Files changed
    
    - CHANGELOG.md
    - packages/orchestrations/README.md
    - samples/README.md
    - samples/03-workflows/README.md
    - samples/03-workflows/control-flow/intermediate_vs_terminal_outputs.py
    - samples/03-workflows/orchestrations/README.md
    - samples/03-workflows/orchestrations/group_chat_agent_manager.py
    - samples/03-workflows/orchestrations/group_chat_philosophical_debate.py
    - samples/03-workflows/orchestrations/group_chat_simple_selector.py
    - samples/03-workflows/orchestrations/magentic.py
    - samples/03-workflows/orchestrations/magentic_human_plan_review.py
    - samples/03-workflows/orchestrations/sequential_chain_only_agent_responses.py
    - samples/03-workflows/agents/group_chat_workflow_as_agent.py
    - samples/03-workflows/agents/magentic_workflow_as_agent.py
    - samples/03-workflows/agents/sequential_workflow_as_agent.py
    - samples/semantic-kernel-migration/orchestrations/group_chat.py
    - samples/semantic-kernel-migration/orchestrations/magentic.py
    
    Blockers or notes for next iteration
    
    - issues/07-samples-and-docs-explicit-output-designation.md was moved to issues/done/ but issues/ remains untracked and intentionally excluded from this commit.
    - issues/06-devui-intermediate-event-rendering.md remains present and appears already satisfied by existing DevUI mapper/tests from the prior implementation slice.
    - PRD-explicit-workflow-output-designation.md remains untracked and intentionally excluded from this commit.
    
    * Render DevUI intermediate workflow outputs
    
    Key decisions
    
    - Preserve workflow output designation metadata on visible DevUI output messages and text deltas so intermediate/data emissions remain distinguishable from terminal output.
    - Render intermediate workflow message items in the execution timeline using executor metadata, while excluding them from the final workflow result aggregation.
    - Keep terminal output message rendering unchanged and retain legacy data events on the intermediate compatibility path.
    
    Files changed
    
    - packages/devui/agent_framework_devui/_mapper.py
    - packages/devui/frontend/src/components/features/workflow/execution-timeline.tsx
    - packages/devui/frontend/src/components/features/workflow/workflow-view.tsx
    - packages/devui/frontend/src/types/openai.ts
    - packages/devui/tests/devui/test_mapper.py
    
    Blockers or notes for next iteration
    
    - issues/06-devui-intermediate-event-rendering.md was moved to issues/done/ but issues/ remains untracked and intentionally excluded from this commit.
    - PRD-explicit-workflow-output-designation.md remains untracked and intentionally excluded from this commit.
    - uv run poe typing still fails only on the pre-existing packages/core/agent_framework/_workflows/_agent.py _AGENT_FORWARDED_EVENT_TYPES private-use pyright error.
    
    * Fix mypy
    
    * Clarify orchestration participant output config
    
    * Rename participant output kwargs for clarity
    
    output_participants -> final_output_from, intermediate_participants ->
    intermediate_output_from. The old names read like categories of
    participant; the new names make it clear the kwarg designates which
    participants' outputs surface as final vs. intermediate events.
    
    * Rename core workflow output kwargs with deprecation shim
    
    Adds final_output_from / intermediate_output_from as canonical kwargs on
    Workflow and WorkflowBuilder. Old output_executors / intermediate_executors
    kwargs continue to work but emit DeprecationWarning via a shared coalesce
    helper that also rejects supplying both. Wire-format keys in to_dict()
    stay as output_executors / intermediate_executors so checkpoint
    compatibility is preserved.
    
    Internal call sites in orchestrations and samples updated to the new
    names so users following sample code learn the canonical vocabulary;
    legacy callers still work with a one-shot warning.
    
    * Suppress pyright reportPrivateUsage on cross-module sentinel import
    
    * Update docstrings
    
    * Propagate sub-workflow intermediate outputs, fix handoff/sequential intermediate-only designation, and shore up tests, sample, and docstrings around the intermediate output contract.
    
    * Add canonical workflow output_from selection
    
    Key decisions:\n- Make output_from the canonical workflow-output allow-list and keep output_executors/final_output_from as deprecated compatibility aliases.\n- Treat empty output_from/intermediate_output_from lists as explicit selections and keep validation responsible for empty, duplicate, overlap, and unknown selections.\n- Remove the branch-only public intermediate_executors WorkflowBuilder kwarg while preserving legacy wire keys in to_dict().\n\nFiles changed:\n- packages/core/agent_framework/_workflows/_workflow.py\n- packages/core/agent_framework/_workflows/_workflow_builder.py\n- packages/core/agent_framework/_workflows/_workflow_context.py\n- packages/core/agent_framework/_workflows/_agent.py\n- packages/core/agent_framework/_workflows/_agent_executor.py\n- packages/core/tests/workflow/* output-selection coverage updates\n- packages/core/AGENTS.md\n- issues/done/001-canonical-list-based-output-selection.md\n\nBlockers/notes:\n- Orchestration builders still pass final_output_from internally; follow-up issue 004 should migrate them to output_from.\n- Legacy omitted-selection behavior and explicit all/all_other literals are left for issues 002 and 003.
    
    * Add explicit all workflow output selection
    
    Key decisions:
    - Treat output_from='all' as an explicit workflow-output selection sentinel and expand it at build time to executors with declared workflow output types.
    - Keep omitted output selections in legacy all-output mode with a deprecation warning that names output_from and intermediate_output_from and points to output_from='all'.
    - Reject intermediate_output_from='all' at construction because the all-output literal is output-only for this issue.
    
    Files changed:
    - packages/core/agent_framework/_workflows/_workflow_builder.py
    - packages/core/tests/workflow/test_output_executors_contract.py
    - issues/done/002-explicit-all-output-and-legacy-migration.md
    
    Blockers/notes:
    - all_other intermediate-output selection remains for issue 003.
    - Workflow-as-agent/orchestration parity remains for issue 004.
    
    * Add all-other intermediate output selection
    
    Key decisions:
    - Treat intermediate_output_from='all_other' as an explicit intermediate-output selection sentinel and expand it at build time after the workflow graph is complete.
    - Expand all_other to output-capable executors not selected by output_from; omitted or empty output_from selects no workflow outputs, while output_from='all' leaves an empty intermediate selection.
    - Keep output_from='all_other' invalid so all_other remains intermediate-output-only and runtime classification still receives concrete executor-id sets.
    
    Files changed:
    - packages/core/agent_framework/_workflows/_workflow_builder.py
    - packages/core/tests/workflow/test_output_executors_contract.py
    - issues/done/003-all-other-intermediate-output-selection.md
    
    Blockers/notes:
    - Workflow-as-agent and orchestration parity remains for issue 004.
    - Full documentation updates remain for issue 005.
    
    * Add orchestration output selection parity
    
    Key decisions:
    - Expose output_from on sequential, concurrent, group chat, handoff, and magentic builders while keeping final_output_from as a deprecated compatibility alias.
    - Resolve orchestration participant selections through the same explicit rules as workflows: output_from='all', intermediate_output_from='all_other', hidden unselected participant payloads, and overlap/duplicate/unknown/invalid-literal validation.
    - Continue preserving documented orchestration defaults by always designating each pattern's terminal internal executor where applicable.
    
    Files changed:
    - packages/orchestrations/agent_framework_orchestrations/_participant_output_config.py
    - packages/orchestrations/agent_framework_orchestrations/_sequential.py
    - packages/orchestrations/agent_framework_orchestrations/_concurrent.py
    - packages/orchestrations/agent_framework_orchestrations/_group_chat.py
    - packages/orchestrations/agent_framework_orchestrations/_handoff.py
    - packages/orchestrations/agent_framework_orchestrations/_magentic.py
    - packages/orchestrations/agent_framework_orchestrations/_orchestration_request_info.py
    - packages/orchestrations/tests/test_orchestration_intermediate_vs_terminal.py
    - issues/done/004-workflow-as-agent-and-orchestration-parity.md
    
    Blockers/notes:
    - Full documentation and sample migration wording remains for issue 005.
    - Existing tests that intentionally use final_output_from now emit the new deprecation warning.
    
    * Document workflow output selection contract
    
    Key decisions:
    - Use Workflow Output and Intermediate Output as the developer-facing terms for selected caller-facing emissions.
    - Document output_from and intermediate_output_from as the canonical API, with output_from as an allow-list and unselected payloads hidden unless explicitly selected as intermediate.
    - Add scenario and invalid-selection tables for workflow and orchestration docs, including legacy omission warnings, output_from='all', intermediate_output_from='all_other', list selections, invalid literals, overlap, duplicates, unknown selections, and empty explicit selections.
    - Migrate samples away from final_output_from and output_executors except where compatibility aliases are explicitly documented.
    
    Files changed:
    - packages/core/AGENTS.md
    - packages/orchestrations/README.md
    - packages/orchestrations/agent_framework_orchestrations/_handoff.py
    - packages/orchestrations/agent_framework_orchestrations/_sequential.py
    - samples/03-workflows/README.md
    - samples/03-workflows/control-flow/intermediate_vs_terminal_outputs.py
    - samples/03-workflows/human-in-the-loop/agents_with_approval_requests.py
    - samples/03-workflows/orchestrations/README.md
    - samples/04-hosting/foundry-hosted-agents/responses/05_workflows/main.py
    - scripts/sample_validation/create_dynamic_workflow_executor.py
    - issues/done/005-document-output-selection-contract.md
    
    Blockers/notes:
    - Direct full Ruff on scripts/sample_validation/create_dynamic_workflow_executor.py still reports pre-existing docstring/print/line-length issues outside this docs migration; syntax-focused checks for changed files pass.
    - No remaining AFK issue files are present under issues/.
    
    * Latest updates
    
    * Typing fixes
    
    * Cleanup
  • Python: (core): Add functional workflow API (#4238)
    * Add functional workflow api
    
    * cleanup
    
    * More cleanup
    
    * address copilot feedback
    
    * Address PR feedbacK
    
    * updates
    
    * PR feedback
    
    * Address review comments on functional workflow samples
    
    - Swap 05/06 get-started samples: agent workflow first (motivates
      why workflows exist), simple text workflow second
    - Rename text_pipeline → text_workflow, poem_pipeline → poem_workflow
    - Add @step to agent workflow sample (05) to demonstrate caching
    - Switch agent samples to AzureOpenAIResponsesClient with Foundry
    - Remove .as_agent() from agent_integration.py to focus on the key
      difference between inline agent calls vs @step-cached calls
    - Add commented-out Agent.run example in hitl_review.py
    - Add clarifying comment in _functional.py that event streaming is
      buffered (not true per-token streaming)
    - Add naive_group_chat.py functional sample: round-robin group chat
      as a plain Python loop
    - Update READMEs to reflect new file names and group chat sample
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix pyright type errors
    
    * Address PR review comments on functional workflow API
    
    1. Allow request_info inside @step: Auto-inject RunContext into step
       functions that declare a RunContext parameter (by type or name 'ctx'),
       and expose get_run_context() for programmatic access.
    
    2. Handle None responses: Log a warning when a response value is None,
       and document the behavior in request_info docstring.
    
    3. Add executor_bypassed event type: Replace executor_invoked +
       executor_completed with a single executor_bypassed event when a step
       replays from cache, making cached vs live execution explicit.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add regression tests for PR review comments on functional workflow API
    
    The three review comments (request_info in @step, None response handling,
    executor_bypassed event type) were already addressed in 7da7db4e. This
    commit adds cross-cutting regression tests that exercise the interactions
    between these features:
    
    - HITL in step with caching: preceding step bypassed on resume
    - Full checkpoint lifecycle with HITL step (interrupt -> resume -> restore)
    - None response inside step-level request_info logs warning
    - WorkflowInterrupted from step does not emit executor_failed
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address PR #4238 review comments on functional workflow API
    
    Comment 1 (request_info in @step): Already supported. Added comment in
    StepWrapper.__call__ explaining why WorkflowInterrupted (BaseException)
    safely bypasses the except Exception handler.
    
    Comment 2 (None response): Added docstring to _get_response clarifying
    the (found, value) return tuple semantics and None handling.
    
    Comment 3 (bypass event type): executor_bypassed is already a dedicated
    event type in WorkflowEventType. Updated comment at the bypass site to
    make the deliberate event type choice explicit.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add experimental API warnings to functional workflow module
    
    Mark all public classes and decorators (workflow, step, RunContext,
    FunctionalWorkflow, StepWrapper, FunctionalWorkflowAgent) as
    experimental and subject to change or removal.
    
    * Address PR #4238 review comments from @eavanvalkenburg
    
    - RunContext docstring leads with purpose (opt-in handle for HITL,
      custom events, state) so readers importing it from the public surface
      understand its role before the mechanics (#2993513452).
    - Rename `06_first_functional_workflow.py` to
      `06_functional_workflow_basics.py`; the previous filename was
      confusing since it followed `05_functional_workflow_with_agents.py`
      (#2993531979).
    - Simplify `05_functional_workflow_with_agents.py` to call agents
      directly without a @step wrapper; the step-vs-no-step contrast lives
      in `03-workflows/functional/agent_integration.py`, keeping the
      get-started sample minimal (#2993525532).
    - Switch functional samples to `FoundryChatClient` for consistency with
      the rest of 01-get-started and 03-workflows (follow-up on #2876988570).
    - Use walrus in `hitl_review.py` final-state assertion (#2993572182).
    - Add expected-output block to `basic_streaming_pipeline.py` (#2993557609).
    - Clarify in `parallel_pipeline.py` that `@step` composes with
      `asyncio.gather` (#2993597282).
    - `naive_group_chat.py` threads `list[Message]` between turns instead
      of stringifying the transcript, preserving role/authorship (#2993583231).
    
    Drive-by: pre-commit hook sorts an unrelated import block in
    `samples/04-hosting/foundry-hosted-agents/responses/02_local_tools/main.py`.
    
    * Fix 10 functional-workflow API bugs from /ultrareview pass
    
    - bug_001: `ctx.request_info()` without an explicit `request_id` now derives
      a deterministic `auto::<index>` id from the call-counter, so HITL resume
      works correctly on the documented default path.  A uuid was regenerated on
      every replay, making resume impossible.
    
    - bug_002: `StepWrapper.__call__` no longer deepcopies arguments on the
      cache-hit replay branch.  The copy is only performed on the live-execution
      path (for the event log) and falls back to the original mapping if deepcopy
      fails, so steps whose args aren't deepcopyable (locks, sockets, sessions)
      can still resume from checkpoint.
    
    - bug_007: `_set_responses` now prunes each resolved `request_id` from
      `_pending_requests`, and the cache-hit branch in `request_info` does the
      same.  Previously, answered requests were re-serialized into every
      subsequent checkpoint and the final checkpoint falsely claimed pending
      requests even after the workflow completed.
    
    - bug_008: `_compute_signature_hash` now mixes the function's `co_code` and
      `co_names` into the checkpoint signature, so changes to the workflow body
      invalidate older checkpoints even when steps are accessed via module /
      class attributes (which `_discover_step_names` can't see statically).
      `RunContext._record_observed_step` records observed step names for
      diagnostics.
    
    - bug_010: `FunctionalWorkflow.run()` docstring corrected — says "at least
      one of message/responses/checkpoint_id" and explicitly notes `responses`
      may be combined with `checkpoint_id` (the validator already allowed this).
    
    - bug_013: `FunctionalWorkflowAgent` now surfaces `request_info` events as
      `FunctionApprovalRequestContent` items (mirroring graph `WorkflowAgent`),
      threads `responses=` and `checkpoint_id=` through to the underlying
      workflow, and exposes `pending_requests`.  Previously `.as_agent()`
      returned empty `AgentResponse` for HITL workflows — effectively unusable.
    
    - bug_014: `FunctionalWorkflow` now clears `_last_message`,
      `_last_step_cache`, and `_last_pending_request_ids` on clean completion.
      `run()` validates that `responses=` keys intersect the currently-pending
      request set (or raises with a clear error) instead of silently replaying
      against stale singleton state from a prior run.
    
    - bug_015: `FunctionalWorkflow.as_agent` signature now matches graph
      `Workflow.as_agent`: accepts `name`, `description`, `context_providers`,
      and `**kwargs`.  `FunctionalWorkflowAgent` stores the overrides.
    
    - bug_017: `RunContext.set_state` raises `ValueError` for underscore-
      prefixed keys (the framework's `_step_cache` / `_original_message` keys
      would silently clobber user state on checkpoint save and user
      underscore-prefixed state was dropped on restore).  Docstring documents
      the reserved prefix.
    
    - merged_bug_003: Workflow function arity is validated at decoration time.
      Multiple non-ctx parameters raise `ValueError` immediately (previously
      every arg past the first was silently dropped at call time).  Passing a
      non-None `message` to a ctx-only workflow raises `ValueError` instead of
      silently discarding the message.
    
    Test coverage: +18 regression tests covering every fix.  Full workflow
    suite now 766 passed, 1 skipped, 2 xfailed; full core suite 2338 passed.
    
    * Deslop functional.py fix commit
    
    - Remove dead instrumentation added in the prior commit that was never
      consumed: `RunContext._observed_step_names`,
      `RunContext._record_observed_step`, `FunctionalWorkflow._runtime_step_names`,
      and `FunctionalWorkflowAgent._extra_kwargs`.  The signature hash relies on
      `co_code` alone, which covers the attribute-access case without the
      collection-scaffolding.
    - Trim over-explanatory comments that restated what the code does or what
      it no longer does.  Keep only the comments that answer "why" for the
      non-obvious bits (deterministic id contract, defensive deepcopy, stale
      replay guard).
    - Compress the `_compute_signature_hash` and FunctionalWorkflow `__init__`
      block docstrings without losing the user-facing reasoning.
    
    Net -49 lines.  Regression lock preserved (766 passed, 1 skipped, 2 xfailed).
    
    * Fix functional workflow review feedback
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    Co-authored-by: Copilot <copilot@github.com>
  • Python: [BREAKING] update to v1.0.0 (#5062)
    * updates to final deprecated pieces and versions
    
    * fix mypy
    
    * fix readme links
  • Python: [BREAKING] Python: move Azure AI embeddings to Foundry (#5056)
    * renamed AzureAIINferenceEmbeddings and lazy load azure-cosmos and env var rename
    
    * updated coverage
    
    * fix readme
  • Python: [BREAKING] Standardize model selection on model (#4999)
    * Refactor Anthropic model option and provider clients
    
    Rename the Anthropic client model option from model_id to model, add provider-specific Anthropic wrappers for Foundry, Bedrock, and Vertex, and expose them through the Anthropic, Foundry, Amazon, and Google namespaces. Update core option handling, docs, samples, and tests accordingly.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix Anthropic skills sample typing
    
    Cast the Anthropic beta client to Any in the skills sample so the pre-commit sample pyright check no longer fails on beta skills and files endpoints that are not exposed by the current SDK stubs.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * undo sample mypy
    
    * Retry CI after transient external failures
    
    Retrigger PR validation after an unrelated Copilot review workflow SAML failure and a transient external tau2 git fetch failure in the Windows Python test setup.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address review feedback on model option merging
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address Anthropic compatibility review feedback
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * moved all to `model`
    
    * fixes for azure ai search
    
    * Python: standardize remaining sample env var names
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: fix foundry-local pyright compatibility
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * updated env vars in cicd
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Python: [BREAKING] Remove deprecated Python OpenAI/Azure AI surfaces (#4990)
    * [BREAKING] Remove deprecated Python OpenAI/Azure AI surfaces
    
    Also clean up follow-on docs, environment guidance, package metadata, and lab test stability.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix deleted semantic-kernel sample links
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address PR review feedback
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * improve foundry language
    
    * Fix A2A Foundry sample regression
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Python: Fix samples (#4980)
    * First samples 1st batch
    
    * Fix sample paths
    
    * Fix workflow samples
    
    * Fix workflow dependency
    
    * Correct env vars
    
    * Increase idle timeout
    
    * Fix workflows HIL sample
    
    * Fix more workflow samples
  • [BREAKING] Python: fix OpenAI Azure routing and provider samples (#4925)
    * Python: fix OpenAI Azure routing and provider samples
    
    Prefer OpenAI when OPENAI_API_KEY is present unless Azure is explicitly requested. Clarify constructor docs, keep deprecated Azure wrappers compatible with stricter settings validation, and refresh the provider samples and tests to use the current client patterns.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * fix bandit
    
    * Python: align OpenAI embedding Azure routing
    
    Extend the shared OpenAI-vs-Azure routing and credential behavior to the embedding client, add Azure embedding regression coverage, and refresh the embedding samples to use the generic client path.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: fix embedding client pyright check
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: thin OpenAI embedding wrapper
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: document embedding overload routing
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: fix callable OpenAI key routing
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: fix Azure credential routing tests
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: address OpenAI review feedback
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: narrow Azure routing markers
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: refine OpenAI model fallback order
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: narrow Azure deployment docs
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: remove embedding routing wording
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: run embedding Azure integration tests
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * changed variable name
    
    * Python: expand OpenAI package README
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * clarified readme
    
    * Python: fix Azure OpenAI integration setup
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Python: correct Azure integration env mapping
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * updated code to fix int tests
    
    * test updates
    
    * test fix
    
    * fix test setup
    
    * updates to tests and setup
    
    * remove openai assistants int tests
    
    * improvements in int tests
    
    * fix env var
    
    * fix env vars
    
    * fix azure responses test
    
    * trigger actions
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Auto-finalize ResponseStream on iteration completion (#4478)
    * Add multi-turn streaming sample and rename multi-turn samples
    
    - Rename 03_multi_turn.py to 03a_multi_turn.py
    - Add 03b_multi_turn_streaming.py showing streaming with session history
    - The new sample demonstrates calling get_final_response() after
      iterating the stream to persist conversation history
    - Update READMEs to reflect the new file names
    
    Closes #4447
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Auto-finalize ResponseStream on iteration completion
    
    When a ResponseStream is fully consumed via async iteration,
    automatically trigger finalization (finalizer + result hooks).
    This ensures session history is persisted in streaming multi-turn
    conversations without requiring an explicit get_final_response() call.
    
    - Add auto-finalize call in __anext__ on StopAsyncIteration
    - Guard inner stream finalization to prevent double-execution
    - Re-check _finalized after iteration in get_final_response()
    - Add tests for auto-finalization and streaming session history
    - Revert sample file renames from previous commit
    
    Closes #4447
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * README fix
    
    * Fix SIM102 lint: combine nested if statements
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Python / .NET Samples - Restructure and Improve Samples (Feature Branc… (#4092)
    * Python: .NET Samples - Restructure and Improve Samples (Feature Branch) (#4091)
    
    * Moved by agent (#4094)
    
    * Fix readme links
    
    * .NET Samples - Create `04-hosting` learning path step (#4098)
    
    * Agent move
    
    * Agent reorderd
    
    * Remove A2A section from README 
    
    Removed A2A section from the Getting Started README.
    
    * Agent fixed links
    
    * Fix broken sample links in durable-agents README (#4101)
    
    * Initial plan
    
    * Fix broken internal links in documentation
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Revert template link changes; keep only durable-agents README fix
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * .NET Samples - Create `03-workflows` learning path step (#4102)
    
    * Fix solution project path
    
    * Python: Fix broken markdown links to repo resources (outside /docs) (#4105)
    
    * Initial plan
    
    * Fix broken markdown links to repo resources
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Update README to rename .NET Workflows Samples section
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * .NET Samples - Create `02-agents` learning path step (#4107)
    
    * .NET: Fix broken relative link in GroupChatToolApproval README (#4108)
    
    * Initial plan
    
    * Fix broken link in GroupChatToolApproval README
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Update labeler configuration for workflow samples
    
    * .NET - Reorder Agents samples to start from Step01 instead of Step04 (#4110)
    
    * Fix solution
    
    * Resolve new sample paths
    
    * Move new AgentSkills and AgentWithMemory_Step04 samples
    
    * Fix link
    
    * Fix readme path
    
    * fix: update stale dotnet/samples/Durable path reference in AGENTS.md
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Moved new sample
    
    * Update solution
    
    * Resolve merge (new sample)
    
    * Sync to new sample - FoundryAgents_Step21_BingCustomSearch
    
    * Updated README
    
    * .NET Samples - Configuration Naming Update (#4149)
    
    * .NET: Restore AzureFunctions index parity with ConsoleApps under DurableAgents samples (#4221)
    
    * Clean-up `05_host_your_agent`
    
    * Config setting consistency
    
    * Refine samples
    
    * AGENTS.md
    
    * Move new samples
    
    * Re-order samples
    
    * Move new project and fixup solution
    
    * Fixup model config
    
    * Fix up new UT project
    
    ---------
    
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
  • Python: Add load_dotenv() to samples for .env file support (#4043)
    * Initial plan
    
    * Add load_dotenv() to 303 Python samples for environment variable loading
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Update SAMPLE_GUIDELINES.md to document load_dotenv() requirement
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Update samples README.md to document .env file usage
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Run ruff format on all changed sample files
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Clarify load_dotenv() usage in README - local dev vs production
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Remove deprecated getting_started folder as requested
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Document env_file_path parameter for per-client configuration
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Merge main branch to resolve conflicts
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Fix run_evaluation.py file that was empty in merge commit
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Remove dotnet changes from merge - out of scope for this PR
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Remove package and test changes from merge - only sample changes needed
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Remove test_func_utils.py - only sample changes needed
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Revert sample files not in original changeset - keep only load_dotenv additions
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Move load_dotenv() outside snippet tag in 06_host_your_agent.py
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Fix comment placement - move load_dotenv before code comments
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Fix load_dotenv() placement across all samples - after docstring, before code comments
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Merge latest main branch with load_dotenv changes
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Remove non-sample changes from merge - keep only load_dotenv additions
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Revert non-load_dotenv sample changes from merge
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Fix run_evaluation.py - use main's improved version (file already had load_dotenv)
    
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    
    * Manual update
    
    * Manual update 2
    
    * Fix Role usage and load_dotenv placement per PR review feedback
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Fix Role usage - use string literals not enum attributes
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Fix SAMPLE_GUIDELINES.md example - load_dotenv before docstring per guidance
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Move load_dotenv() before docstrings in all samples per SAMPLE_GUIDELINES ordering
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Address PR review: rename files, fix placement, add session usage, remove note
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Update Redis README to reference renamed file redis_history_provider.py
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
  • Python: [BREAKING] Fix #3613 chat/agent message typing alignment (#3920)
    * Fix #3613 message typing across chat and agents
    
    * Address #3613 review feedback and sample input style
    
    * refactor: use shared AgentRunMessages aliases (#3613)
    
    * refactor: rename agent run input aliases for #3613
    
    * samples: inline image content in run calls
    
    * core: export AgentRunInputs from package init
    
    * core: use explicit init re-exports without __all__
    
    * updated logging and inits
    
    * Fix core mypy export and samples XML note
    
    * Remove AgentRunInputsOrNone and dedupe loggers
    
    * Remove prepare_messages helper
    
    * fix integration tests
  • Python: [BREAKING] PR2 — Wire context provider pipeline, remove old types, update all consumers (#3850)
    * 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
  • Python: restructure: Python samples into progressive 01-05 layout (#3862)
    * restructure: Python samples into progressive 01-05 layout
    
    - 01-get-started/: 6 numbered steps (hello agent → hosting)
    - 02-agents/: all agent concept samples (tools, middleware, providers, etc.)
    - 03-workflows/: ALL existing workflow samples preserved as-is
    - 04-hosting/: azure-functions, durabletask, a2a
    - 05-end-to-end/: demos, evaluation, hosted agents
    - Old files moved to _to_delete/ for review
    - Added AGENTS.md with structure documentation
    - autogen-migration/ and semantic-kernel-migration/ preserved at root
    
    * fix: switch to AzureOpenAI Foundry, fix CI failures
    
    - Switch all 01-get-started samples to AzureOpenAIResponsesClient with
      Azure AI Foundry project endpoint (AZURE_AI_PROJECT_ENDPOINT +
      AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME + AzureCliCredential)
    - Add _to_delete/ and 05-end-to-end/ to pyrightconfig.samples.json excludes
    - Fix test paths in packages/ that referenced old getting_started/ dirs:
      durabletask conftest + streaming test, azurefunctions conftest,
      devui conftest + capture_messages + openai_sdk_integration
    - Fix workflow_as_agent_human_in_the_loop.py import (sibling import)
    - Update hosting READMEs and tool comment paths
    - Replace root README.md with new structure overview
    - Update AGENTS.md to document Azure OpenAI Foundry as default provider
    
    * cleanup: remove _to_delete folder, copy resource files to active dirs
    
    All files in _to_delete/ were either:
    - Exact duplicates of files in the new structure (240 files)
    - Same file with only comment path updates (100 files)
    - One import-fix diff (workflow_as_agent_human_in_the_loop.py)
    - One superseded minimal_sample.py
    
    Resource files (sample.pdf, countries.json, employees.pdf, weather.json)
    copied to 02-agents/sample_assets/ and 02-agents/resources/ since active
    samples reference them.
    
    * fix: address PR review comments, centralize resources, remove root duplicates
    
    - Fix type annotation in 04_memory.py (string union -> proper types)
    - Fix old sample paths in observability files
    - Fix grammar/spelling in observability samples
    - Move sample_assets/ and resources/ to shared/ folder
    - Remove 8 duplicate observability files from 02-agents root
    - Update resource path references in multimodal_input and provider samples
    
    * fix: update broken links from old getting_started paths to new structure
    
    - Update relative paths in READMEs: getting_started/ → 01-get-started/,
      02-agents/, 03-workflows/, 04-hosting/, 05-end-to-end/
    - Fix absolute GitHub URLs in package READMEs
    - Fix broken link in ollama package README
    
    * fix: convert absolute GitHub URLs to relative paths for link checker
    
    Absolute URLs to python/samples/ on main branch 404 until PR merges.
    Converted to relative paths that linkspector can verify locally.
    
    * fix: update link for handoff sample moved to orchestrations/
    
    * fix: update chatkit-integration README path from demos/ to 05-end-to-end/
    
    * fix: update broken links in orchestrations README to match flat directory structure
  • Python: Allow AzureOpenAIResponsesClient creation with Foundry project endpoint (#3814)
    * Initial plan
    
    * feat: extend AzureOpenAIResponsesClient to support Foundry project endpoints
    
    Add project_client and project_endpoint parameters to allow creating
    the client via an Azure AI Foundry project. When provided, the client
    uses AIProjectClient.get_openai_client() to obtain the OpenAI client.
    The azure-ai-projects package is imported lazily and only required
    when using the project endpoint path.
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * fix: address code review - remove duplicate MagicMock imports in tests
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * fix: add type field to Responses API input items and add Foundry sample
    
    - Add 'type: message' to input items in _prepare_message_for_openai
      to comply with the Responses API schema requirement
    - Filter out empty dicts from unsupported content types to prevent
      sending items with invalid empty type values
    - Add azure_responses_client_with_foundry.py sample demonstrating
      AzureOpenAIResponsesClient with project_endpoint
    - Update README and pyrightconfig.samples.json accordingly
    
    * updates to response format and setup
    
    * fix: patch AIProjectClient at correct module path in test
    
    Patch agent_framework.azure._responses_client.AIProjectClient instead of
    azure.ai.projects.aio.AIProjectClient since the import is at module level.
    
    * docs: add Foundry sample to READMEs and document AZURE_AI_PROJECT_ENDPOINT env var
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <github@vanvalkenburg.eu>
  • Python: [BREAKING] Moved to a single get_response and run API (#3379)
    * WIP
    
    * big update to new ResponseStream model
    
    * fixed tests and typing
    
    * fixed tests and typing
    
    * fixed tools typevar import
    
    * fix
    
    * mypy fix
    
    * mypy fixes and some cleanup
    
    * fix missing quoted names
    
    * and client
    
    * fix  imports agui
    
    * fix anthropic override
    
    * fix agui
    
    * fix ag ui
    
    * fix import
    
    * fix anthropic types
    
    * fix mypy
    
    * refactoring
    
    * updated typing
    
    * fix 3.11
    
    * fixes
    
    * redid layering of chat clients and agents
    
    * redid layering of chat clients and agents
    
    * Fix lint, type, and test issues after rebase
    
    - Add @overload decorators to AgentProtocol.run() for type compatibility
    - Add missing docstring params (middleware, function_invocation_configuration)
    - Fix TODO format (TD002) by adding author tags
    - Fix broken observability tests from upstream:
      - Replace non-existent use_instrumentation with direct instantiation
      - Replace non-existent use_agent_instrumentation with AgentTelemetryLayer mixin
      - Fix get_streaming_response to use get_response(stream=True)
      - Add AgentInitializationError import
      - Update streaming exception tests to match actual behavior
    
    * Fix AgentExecutionException import error in test_agents.py
    
    - Replace non-existent AgentExecutionException with AgentRunException
    
    * Fix test import and asyncio deprecation issues
    
    - Add 'tests' to pythonpath in ag-ui pyproject.toml for utils_test_ag_ui import
    - Replace deprecated asyncio.get_event_loop().run_until_complete with asyncio.run
    
    * Fix azure-ai test failures
    
    - Update _prepare_options patching to use correct class path
    - Fix test_to_azure_ai_agent_tools_web_search_missing_connection to clear env vars
    
    * Convert ag-ui utils_test_ag_ui.py to conftest.py
    
    - Move test utilities to conftest.py for proper pytest discovery
    - Update all test imports to use conftest instead of utils_test_ag_ui
    - Remove old utils_test_ag_ui.py file
    - Revert pythonpath change in pyproject.toml
    
    * fix: use relative imports for ag-ui test utilities
    
    * fix agui
    
    * Rename Bare*Client to Raw*Client and BaseChatClient
    
    - Renamed BareChatClient to BaseChatClient (abstract base class)
    - Renamed BareOpenAIChatClient to RawOpenAIChatClient
    - Renamed BareOpenAIResponsesClient to RawOpenAIResponsesClient
    - Renamed BareAzureAIClient to RawAzureAIClient
    - Added warning docstrings to Raw* classes about layer ordering
    - Updated README in samples/getting_started/agents/custom with layer docs
    - Added test for span ordering with function calling
    
    * Fix layer ordering: FunctionInvocationLayer before ChatTelemetryLayer
    
    This ensures each inner LLM call gets its own telemetry span, resulting in
    the correct span sequence: chat -> execute_tool -> chat
    
    Updated all production clients and test mocks to use correct ordering:
    - ChatMiddlewareLayer (first)
    - FunctionInvocationLayer (second)
    - ChatTelemetryLayer (third)
    - BaseChatClient/Raw...Client (fourth)
    
    * Remove run_stream usage
    
    * Fix conversation_id propagation
    
    * Python: Add BaseAgent implementation for Claude Agent SDK (#3509)
    
    * Added ClaudeAgent implementation
    
    * Updated streaming logic
    
    * Small updates
    
    * Small update
    
    * Fixes
    
    * Small fix
    
    * Naming improvements
    
    * Updated imports
    
    * Addressed comments
    
    * Updated package versions
    
    * Update Claude agent connector layering
    
    * fix test and plugin
    
    * Store function middleware in invocation layer
    
    * Fix telemetry streaming and ag-ui tests
    
    * Remove legacy ag-ui tests folder
    
    * updates
    
    * Remove terminate flag from FunctionInvocationContext, use MiddlewareTermination instead
    
    - Remove terminate attribute from FunctionInvocationContext
    - Add result attribute to MiddlewareTermination to carry function results
    - FunctionMiddlewarePipeline.execute() now lets MiddlewareTermination propagate
    - _auto_invoke_function captures context.result in exception before re-raising
    - _try_execute_function_calls catches MiddlewareTermination and sets should_terminate
    - Fix handoff middleware to append to chat_client.function_middleware directly
    - Update tests to use raise MiddlewareTermination instead of context.terminate
    - Add middleware flow documentation in samples/concepts/tools/README.md
    - Fix ag-ui to use FunctionMiddlewarePipeline instead of removed create_function_middleware_pipeline
    
    * fix: remove references to removed terminate flag in purview tests, add type ignore
    
    * fix: move _test_utils.py from package to test folder
    
    * fix: call get_final_response() to trigger context provider notification in streaming test
    
    * fix: correct broken links in tools README
    
    * docs: clarify default middleware behavior in summary table
    
    * fix: ensure inner stream result hooks are called when using map()/from_awaitable()
    
    * Fix mypy type errors
    
    * Address PR review comments on observability.py
    
    - Remove TODO comment about unconsumed streams, add explanatory note instead
    - Remove redundant _close_span cleanup hook (already called in _finalize_stream)
    - Clarify behavior: cleanup hooks run after stream iteration, if stream is not
      consumed the span remains open until garbage collected
    
    * Remove gen_ai.client.operation.duration from span attributes
    
    Duration is a metrics-only attribute per OpenTelemetry semantic conventions.
    It should be recorded to the histogram but not set as a span attribute.
    
    * Remove duration from _get_response_attributes, pass directly to _capture_response
    
    Duration is a metrics-only attribute. It's now passed directly to _capture_response
    instead of being included in the attributes dict that gets set on the span.
    
    * Remove redundant _close_span cleanup hook in AgentTelemetryLayer
    
    _finalize_stream already calls _close_span() in its finally block,
    so adding it as a separate cleanup hook is redundant.
    
    * Use weakref.finalize to close span when stream is garbage collected
    
    If a user creates a streaming response but never consumes it, the cleanup
    hooks won't run. Now we register a weak reference finalizer that will close
    the span when the stream object is garbage collected, ensuring spans don't
    leak in this scenario.
    
    * Fix _get_finalizers_from_stream to use _result_hooks attribute
    
    Renamed function to _get_result_hooks_from_stream and fixed it to
    look for the _result_hooks attribute which is the correct name in
    ResponseStream class.
    
    * Add missing asyncio import in test_request_info_mixin.py
    
    * Fix leftover merge conflict marker in image_generation sample
    
    * Update integration tests
    
    * Fix integration tests: increase max_iterations from 1 to 2
    
    Tests with tool_choice options require at least 2 iterations:
    1. First iteration to get function call and execute the tool
    2. Second iteration to get the final text response
    
    With max_iterations=1, streaming tests would return early with only
    the function call/result but no final text content.
    
    * Fix duplicate function call error in conversation-based APIs
    
    When using conversation_id (for Responses/Assistants APIs), the server
    already has the function call message from the previous response. We
    should only send the new function result message, not all messages
    including the function call which would cause a duplicate ID error.
    
    Fix: When conversation_id is set, only send the last message (the tool
    result) instead of all response.messages.
    
    * Add regression test for conversation_id propagation between tool iterations
    
    Port test from PR #3664 with updates for new streaming API pattern.
    Tests that conversation_id is properly updated in options dict during
    function invocation loop iterations.
    
    * Fix tool_choice=required to return after tool execution
    
    When tool_choice is 'required', the user's intent is to force exactly one
    tool call. After the tool executes, return immediately with the function
    call and result - don't continue to call the model again.
    
    This fixes integration tests that were failing with empty text responses
    because with tool_choice=required, the model would keep returning function
    calls instead of text.
    
    Also adds regression tests for:
    - conversation_id propagation between tool iterations (from PR #3664)
    - tool_choice=required returns after tool execution
    
    * Document tool_choice behavior in tools README
    
    - Add table explaining tool_choice values (auto, none, required)
    - Explain why tool_choice=required returns immediately after tool execution
    - Add code example showing the difference between required and auto
    - Update flow diagram to show the early return path for tool_choice=required
    
    * Fix tool_choice=None behavior - don't default to 'auto'
    
    Remove the hardcoded default of 'auto' for tool_choice in ChatAgent init.
    When tool_choice is not specified (None), it will now not be sent to the
    API, allowing the API's default behavior to be used.
    
    Users who want tool_choice='auto' can still explicitly set it either in
    default_options or at runtime.
    
    Fixes #3585
    
    * Fix tool_choice=none should not remove tools
    
    In OpenAI Assistants client, tools were not being sent when
    tool_choice='none'. This was incorrect - tool_choice='none' means
    the model won't call tools, but tools should still be available
    in the request (they may be used later in the conversation).
    
    Fixes #3585
    
    * Add test for tool_choice=none preserving tools
    
    Adds a regression test to ensure that when tool_choice='none' is set but
    tools are provided, the tools are still sent to the API. This verifies
    the fix for #3585.
    
    * Fix tool_choice=none should not remove tools in all clients
    
    Apply the same fix to OpenAI Responses client and Azure AI client:
    - OpenAI Responses: Remove else block that popped tool_choice/parallel_tool_calls
    - Azure AI: Remove tool_choice != 'none' check when adding tools
    
    When tool_choice='none', the model won't call tools, but tools should
    still be sent to the API so they're available for future turns.
    
    Also update README to clarify tool_choice=required supports multiple tools.
    
    Fixes #3585
    
    * Keep tool_choice even when tools is None
    
    Move tool_choice processing outside of the 'if tools' block in OpenAI
    Responses client so tool_choice is sent to the API even when no tools
    are provided.
    
    * Update test to match new parallel_tool_calls behavior
    
    Changed test_prepare_options_removes_parallel_tool_calls_when_no_tools to
    test_prepare_options_preserves_parallel_tool_calls_when_no_tools to reflect
    that parallel_tool_calls is now preserved even when no tools are present,
    consistent with the tool_choice behavior.
    
    * Fix ChatMessage API and Role enum usage after rebase
    
    - Update ChatMessage instantiation to use keyword args (role=, text=, contents=)
    - Fix Role enum comparisons to use .value for string comparison
    - Add created_at to AgentResponse in error handling
    - Fix AgentResponse.from_updates -> from_agent_run_response_updates
    - Fix DurableAgentStateMessage.from_chat_message to convert Role enum to string
    - Add Role import where needed
    
    * Fix additional ChatMessage API and method name changes
    
    - Fix ChatMessage usage in workflow files (use text= instead of contents= for strings)
    - Fix AgentResponse.from_updates -> from_agent_run_response_updates in workflow files
    - Fix test files for ChatMessage and Role enum usage
    
    * Fix remaining ChatMessage API usage in test files
    
    * Fix more ChatMessage and Role API changes in source and test files
    
    - Fix ChatMessage in _magentic.py replan method
    - Fix Role enum comparison in test assertions
    - Fix remaining test files with old ChatMessage syntax
    
    * Fix ChatMessage and Role API changes across packages
    
    - Add Role import where missing
    - Fix ChatMessage signature: positional args to keyword args (role=, text=, contents=)
    - Fix Role enum comparisons: .role.value instead of .role string
    - Fix FinishReason enum usage in ag-ui event converters
    - Rename AgentResponse.from_updates to from_agent_run_response_updates in ag-ui
    
    Fixes API compatibility after Types API Review improvements merge
    
    * Fix ChatMessage and Role API changes in github_copilot tests
    
    * Fix ChatMessage and Role API changes in redis and github_copilot packages
    
    - Fix redis provider: Role enum comparison using .value
    - Fix redis tests: ChatMessage signature and Role comparisons
    - Fix github_copilot tests: ChatMessage signature and Role comparisons
    - Update docstring examples in redis chat message store
    
    * Fix ChatMessage and Role API changes in devui package
    
    - Fix executor: ChatMessage signature change
    - Fix conversations: Role enum to string conversion in two places
    - Fix tests: ChatMessage signatures and Role comparisons
    
    * Fix ChatMessage and Role API changes in a2a and lab packages
    
    - Fix a2a tests: Role comparisons and ChatMessage signatures
    - Fix lab tau2 source: Role enum comparison in flip_messages, log_messages, sliding_window
    - Fix lab tau2 tests: ChatMessage signatures and Role comparisons
    
    * Remove duplicate test files from ag-ui/tests (tests are in ag_ui_tests)
    
    * Fix ChatMessage and Role API changes across packages
    
    After rebasing on upstream/main which merged PR #3647 (Types API Review
    improvements), fix all packages to use the new API:
    
    - ChatMessage: Use keyword args (role=, text=, contents=) instead of
      positional args
    - Role: Compare using .value attribute since it's now an enum
    
    Packages fixed:
    - ag-ui: Fixed Role value extraction bugs in _message_adapters.py
    - anthropic: Fixed ChatMessage and Role comparisons in tests
    - azure-ai: Fixed Role comparison in _client.py
    - azure-ai-search: Fixed ChatMessage and Role in source/tests
    - bedrock: Fixed ChatMessage signatures in tests
    - chatkit: Fixed ChatMessage and Role in source/tests
    - copilotstudio: Fixed ChatMessage and Role in tests
    - declarative: Fixed ChatMessage in _executors_agents.py
    - mem0: Fixed ChatMessage and Role in source/tests
    - purview: Fixed ChatMessage in source/tests
    
    * Fix mypy errors for ChatMessage and Role API changes
    
    - durabletask: Use str() fallback in role value extraction
    - core: Fix ChatMessage in _orchestrator_helpers.py to use keyword args
    - core: Add type ignore for _conversation_state.py contents deserialization
    - ag-ui: Fix type ignore comments (call-overload instead of arg-type)
    - azure-ai-search: Fix get_role_value type hint to accept Any
    - lab: Move get_role_value to module level with Any type hint
    
    * Improve CI test timeout configuration
    
    - Increase job timeout from 10 to 15 minutes
    - Reduce per-test timeout to 60s (was 900s/300s)
    - Add --timeout_method thread for better timeout handling
    - Add --timeout-verbose to see which tests are slow
    - Reduce retries from 3 to 2 and delay from 10s to 5s
    
    This ensures individual test timeouts are shorter than the job
    timeout, providing better visibility when tests hang.
    
    With 60s timeout and 2 retries, worst case per test is ~180s.
    
    * Fix ChatMessage API usage in docstrings and source
    
    - Fix ChatMessage positional args in docstrings: _serialization.py, _threads.py, _middleware.py
    - Fix ChatMessage in tau2 runner.py
    - Fix role comparison in _orchestrator_helpers.py to use .value
    - Fix role comparison in _group_chat.py docstring example
    - Fix role assertions in test_durable_entities.py to use .value
    
    * Revert tool_choice/parallel_tool_calls changes - must be removed when no tools
    
    OpenAI API requires tool_choice and parallel_tool_calls to only be
    present when tools are specified. Restored the logic that removes
    these options when there are no tools.
    
    - Restored check in _chat_client.py to remove tool_choice and
      parallel_tool_calls when no tools present
    - Restored same logic in _responses_client.py
    - Reverted test to expect the correct behavior
    
    * fixed issue in tests
    
    * fix: resolve merge conflict markers in ag-ui tests
    
    * fix: restructure ag-ui tests and fix Role/FinishReason to use string types
    
    * fix: streaming function invocation and middleware termination
    
    - Refactor streaming function invocation to use get_final_response() on inner streams
    - Fix MiddlewareTermination to accept result parameter for passing results
    - Fix _AutoHandoffMiddleware to use MiddlewareTermination instead of context.terminate
    - Fix AgentMiddlewareLayer.run() to properly forward function/chat middleware
    - Remove duplicate middleware registration in AgentMiddlewareLayer.__init__
    - Fix exception handling in _auto_invoke_function to properly capture termination
    - Fix mypy errors in core package
    - Update tests to use stream=True parameter for unified run API
    
    * fix all tests command
    
    * Refactor integration tests to use pytest fixtures
    
    - Merge testutils.py into conftest.py for azurefunctions integration tests
    - Merge dt_testutils.py into conftest.py for durabletask integration tests
    - Convert all integration tests to use fixtures instead of direct imports
      (fixes ModuleNotFoundError with --import-mode=importlib)
    - Add sample_helper fixture for azurefunctions tests
    - Add agent_client_factory and orchestration_helper fixtures for durabletask
    - Integration tests now skip with descriptive messages when services unavailable
    - Restructure devui tests into tests/devui/ with proper conftest.py
    - Add test organization guidelines to CODING_STANDARD.md
    - Remove __init__.py from test directories per pytest best practices
    
    * Fix pytest_collection_modifyitems to only skip integration tests
    
    The hook was skipping all tests in the test session, not just
    integration tests. Now it only skips items in the integration_tests
    directory.
    
    * Fix mem0 tests failing on Python 3.13
    
    Use patch.object on the imported module instead of @patch with string
    path to ensure the mock takes effect regardless of import timing.
    
    * fix mem0
    
    * another attempt for mem0
    
    * fix for mem0
    
    * fix mem0
    
    * Increase worker initialization wait time in durabletask tests
    
    Increase from 2 to 8 seconds to allow time for:
    - Python startup and module imports
    - Azure OpenAI client creation
    - Agent registration with DTS worker
    - Worker connection to DTS
    
    This helps prevent test failures in CI where the first tests may run
    before the worker is fully ready to process requests.
    
    * Fix streaming test to use ResponseStream with finalizer
    
    The _consume_stream method now expects a ResponseStream that can provide
    a final AgentResponse via get_final_response(). Update the test to use
    ResponseStream with AgentResponse.from_updates as the finalizer.
    
    * Fix MockToolCallingAgent to use new ResponseStream API and update samples
    
    * small updates to run_stream to run
    
    * fix sub workflow
    
    * temp fix for az func test
    
    ---------
    
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
  • 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: Merge durabletask changes into main (#3420)
    * Python: Add initial scaffold for `durabletask` package (#2761)
    
    * Add initial scaffold
    
    * Update design
    
    * Fix mypy and update design
    
    * add additional style considered
    
    * Address comments
    
    * Fix test
    
    * Update readmes
    
    * Python: Rebase durable task feature branch with main (#2806)
    
    * Python: Add Entity State Providers for DurableTask Package (#2981)
    
    * Add Entity State Providers
    
    * address comments
    
    * Fix tests
    
    * Fix tests
    
    * Revert unrelated changes and remove thread_id
    
    * Revert unrelated files
    
    * Python: [Durabletask] Update `feature-durabletask-python` branch with `main` (#3068)
    
    * Python: Add factory pattern to concurrent orchestration builder (#2738)
    
    * Add factory pattern to concurrent orchestration builder
    
    * Update readme
    
    * Address AI comments
    
    * Fix unit tests
    
    * Fix import
    
    * Prevent multiple calls to set participants or factories
    
    * Add comments
    
    * Mitigate warnings
    
    * Fix mypy
    
    * Address comments
    
    * Address Copilot comments
    
    * Fix tests
    
    * Python: fix: GroupChat ManagerSelectionResponse JSON Schema for OpenAI Structured Outpu… (#2750)
    
    * fix: ManagerSelectionResponse JSON Schema for OpenAI Structured Output Strict Mode
    
    * refactor: install pre-commit then commit again
    
    * Capture file IDs from code interpreter in streaming responses (#2741)
    
    * .NET: [BREAKING] Prevent nulls in AIAgent property (#2719)
    
    * prevent nulls in AIAgent property
    
    * address feedback
    
    * code ql sm04598 (#2723)
    
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    
    * .NET: Add Conversation State Sample (Step05) (#2697)
    
    * Initial plan
    
    * Add Agent_OpenAI_Step05_Conversation sample for conversation state management
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Update Program.cs comment to accurately describe the sample
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Update the code to use the ConversationClient more in line with the samples in OpenAI
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Changing sample to use ChatClientAgent and conversationId in GetNewThread
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.4.7 to 4.0.4.11 (#2777)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.4.11
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump Azure.Identity from 1.17.0 to 1.17.1 (#2780)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump Azure.AI.AgentServer.AgentFramework from 1.0.0-beta.4 to 1.0.0-beta.5 (#2778)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Python: added more complete parsing for mcp tool arguments (#2756)
    
    * added more complete parsing for mcp tool arguments
    
    * fixed mypy
    
    * added nonlocal model counter, and some fixes
    
    * fixes in naming logic
    
    * extracted json parsing function, added parametrized test and checked coverage
    
    * Python: Updated package versions (#2784)
    
    * Updated package versions
    
    * Small fix
    
    * Bump actions/checkout from 5 to 6 (#2404)
    
    Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
    - [Release notes](https://github.com/actions/checkout/releases)
    - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/actions/checkout/compare/v5...v6)
    
    ---
    updated-dependencies:
    - dependency-name: actions/checkout
      dependency-version: '6'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * .NET: adds support for labels in edges,  fixes rendering of labels in dot a… (#1507)
    
    * adds support for labels in edges,  fixes rendering of labels in dot and mermaid, adds rendering of labels in edges
    
    * Update dotnet/src/Microsoft.Agents.AI.Workflows/Visualization/WorkflowVisualizer.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * escaping edge labels, adding tests for labels containing strange characters that would break the diagram and enabling the previous signature so the API has backwards compatibility.
    
    * Unify label in EdgeData
    
    * Edge API adjustments, removed useless "sanitizer"
    
    * fixed test
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Python: Added custom args and thread object to ai_function kwargs (#2769)
    
    * Added an example of using kwargs in ai_function
    
    * Added thread object to ai_function kwargs
    
    * Updated docs
    
    * Small fix
    
    * Added thread parameter filtering
    
    * Fix WorkflowAgent to include thread convo history. Enable checkpointing. (#2774)
    
    * Update OpenAIResponses.yaml to match AgentSchema (#2598)
    
    1. Update `connection` child types --  `kind: ApiKey` to `kind: key` otherwise schema will fail: https://microsoft.github.io/AgentSchema/reference/apikeyconnection/
    
    2.  Update `outputSchema`'s `PropertySchema` to be `kind` instead of `type` otherwise schema will fail: https://microsoft.github.io/AgentSchema/reference/propertyschema/
    
    * Python: Remove warnings from workflow builder on not using factories (#2808)
    
    * Revert concurrent
    
    * Fix comments
    
    * Python: Filter framework kwargs from MCP tool invocations (#2870)
    
    * Filter framework kwargs from MCP tool invocations
    
    * Fixes
    
    * Python: Fix WorkflowAgent to emit yield_output as agent response (#2866)
    
    * Fix WorkflowAgent to emit yield_output as agent response
    
    * use raw_representation
    
    * Raw representation handling
    
    * Python: Use agent description in HandoffBuilder auto-generated tools (#2713) (#2714)
    
    ## Summary
    Enhanced `HandoffBuilder._apply_auto_tools` to use the target agent's
    description when creating handoff tools, providing more informative tool
    descriptions for LLMs.
    
    ## Changes
    - Modified `_apply_auto_tools` to extract `description` from
      `AgentExecutor._agent` when available
    - Updated iteration to use `.items()` for more efficient dict traversal
    - Handoff tools now use agent descriptions instead of generic placeholders
    
    ## Example
    Before: "Handoff to the refund_agent agent."
    After: "You handle refund requests. Ask for order details and process refunds."
    
    ## Testing
    - All handoff tests pass (20/20)
    - No breaking changes to existing API
    
    Fixes #2713
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    
    * 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 middleware terminate flag to exit function calling loop immediately (#2868)
    
    * Fix middleware terminate flag to exit function calling loop immediately
    
    * Eliminating duck typing
    
    * Improve function exec result handling
    
    * Fix race condition
    
    * Fix mypy issues
    
    * Python: Fix context duplication in handoff workflows when restoring from checkpoint (#2867)
    
    * Fix context duplication in handoff workflows when restoring from checkpoint
    
    * Address Copilot PR review
    
    * .NET: Update to latest Azure.AI.*, OpenAI, and M.E.AI* (#2850)
    
    * Update to latest Azure.AI.*, OpenAI, and M.E.AI*
    
    Absorb breaking changes in Responses surface area
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/GettingStarted/AgentWithOpenAI/Agent_OpenAI_Step04_CreateFromOpenAIResponseClient/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Using patch to remove the model is necessary, updated the response client to actually use the the ForAgent
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Bump actions/download-artifact from 6 to 7 (#2862)
    
    Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
    - [Release notes](https://github.com/actions/download-artifact/releases)
    - [Commits](https://github.com/actions/download-artifact/compare/v6...v7)
    
    ---
    updated-dependencies:
    - dependency-name: actions/download-artifact
      dependency-version: '7'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump actions/cache from 4 to 5 (#2861)
    
    Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
    - [Release notes](https://github.com/actions/cache/releases)
    - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
    - [Commits](https://github.com/actions/cache/compare/v4...v5)
    
    ---
    updated-dependencies:
    - dependency-name: actions/cache
      dependency-version: '5'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump actions/upload-artifact from 5 to 6 (#2860)
    
    Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
    - [Release notes](https://github.com/actions/upload-artifact/releases)
    - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)
    
    ---
    updated-dependencies:
    - dependency-name: actions/upload-artifact
      dependency-version: '6'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Python : Ollama Connector for Agent Framework (#1104)
    
    * Initial Commit for Olama Connector
    
    * Added Olama Sample
    
    * Add Sample & Fixed Open Telemetry
    
    * Fixed Spelling from Olama to Ollama
    
    * remove"opentelemetry-semantic-conventions-ai ~=0.4.13" since its handled in a different pr
    
    * Added Tool Calling
    
    * Finalizing test cases
    
    * Adjust samples to be more reliable
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/pyproject.toml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/tests/test_ollama_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Improved Docstrings & Sample
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Integrate PR Feedback
    - Divided Streaming and Non-Streaming into independent Methods
    - Catch Ollama Validation Error
    - Add OTEL Provider Name
    - Checked Ollama Messages
    - Add Usage Statistics
    
    * Revert setting, so it can be none
    
    * Validate Message formatting between AF and Ollama
    
    * Catch Ollama Error and raise a ServiceResponse Error
    
    * Fix mypy error
    
    * remove .vscode comma
    
    * Add Reasoning support & adjust to new structure
    
    * Add Ollama Multimodality and Reasoning
    
    * Add test cases for reasoning
    
    * Add Tests for Error Handling in Ollama Client
    
    * Update python/samples/getting_started/multimodal_input/ollama_chat_multimodal.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Integrated Copilot Feedback
    
    * Implement first PR Feedback
    
    * Adjust Readme files for examples
    
    * Adjust argument passing via additional chat options
    
    * Implemented PR Feedback
    
    * Removing Ollama Package from Core and moving samples
    
    * Fix Link & Adding Samples to Main Sample Readme
    
    * Fixing Links in Readme
    
    * Moved Multimodal and Chat Example
    
    * Fixed Link in ChatClient to Ollama
    
    * Fix AgentFramework Links in Ollama Project
    
    * Fix observability breaking change
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Skip failing IT (#2904)
    
    * .NET: Cosmos DB UT Fast Skip (For Non-Configured Local envs) (#2906)
    
    * Cosmos DB UT Fast Skip (Non-Configured Local envs) + Long running UT skip in pipeline when no CosmosDB changes happened
    
    * Force a CosmosDB source code change to trigger the pipeline
    
    * Address possible string boolean mismatch
    
    * Add debug
    
    * Enabling emulator always when running IT
    
    * .NET: Add TTLs to durable agent sessions (#2679)
    
    * .NET: Add TTLs to durable agent sessions
    
    * Remove unnecessary async
    
    * PR feedback: clarify UTC
    
    * PR feedback: limit minimum signal delay to <= 5 minutes
    
    * PR feedback: Fix TTL disablement
    
    * Linter: use auto-property
    
    * Fix build break from OpenAI SDK change
    
    * Updated CHANGELOG.md
    
    * PR feedback
    
    * Reduce default TTL to 14 days to work around DTS bug
    
    * Python:  Update Mem0Provider to use v2 search API `filters` parameter (#2766)
    
    * short fix to move id parameters to filters object
    
    * added tests
    
    * small fix
    
    * mem0 dependency update
    
    * Updated package versions (#2913)
    
    * .NET: Switch to new "Run" method name. (#2843)
    
    * Switch to new "RunAgent" method name.
    
    * Try to disable false positive naming warning.
    
    * Add comment about disabled warnings.
    
    * Rename `RunAgent` to just `Run`.
    
    * Update CHANGELOG.
    
    * Python: Switch to new "run" method name. (#2890)
    
    * Switch to `run` method.
    
    * Add support for deprecated `run_agent`.
    
    * Fix entity method name.
    
    * Fix method name and improve tests.
    
    * Update comment.
    
    * Update Python CHANGELOG.
    
    * [BREAKING] Python: Add factory pattern to handoff orchestration builder (#2844)
    
    * WIP: Factory pattern to handoff
    
    * Add factory pattern to concurrent orchestration builder; Next: tests and sample verification
    
    * Add tests and improve comments
    
    * Fix mypy
    
    * Simplify handoff_simple.py
    
    * Simplify handoff_autonoumous.py and bug fix
    
    * Update readme
    
    * Address Copilot comments
    
    * Python: Flow custom kwargs to agents via Workflow SharedState (#2894)
    
    * Flow custom kwargs to agents via SharedState
    
    * Address Copilot feedback
    
    * Improve sample typing
    
    * Fix test
    
    * Fix Pydantic error when using Literal type for tool params (#2893)
    
    * Updated Ollama package version (#2920)
    
    * Python: Azure AI Agent with Bing Grounding Citations Sample (#2892)
    
    * bing grounding sample with citations
    
    * small fix
    
    * fix
    
    * .NET: Make DelegatingAIAgent abstract (#2797)
    
    * Initial plan
    
    * Make DelegatingAIAgent abstract
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Added additional arguments for Azure AI agent (#2922)
    
    * Python: Correction of MCP image type conversion in  _mcp.py (#2901)
    
    * Correction of MCP image type conversion in  _mcp.py
    
    * Added a new overload to the init function of the DataContent() type of the Agent Framework, edited the test case to correctly test the usage of the data and uri fields while using DataContent()
    
    * Fixed tests related to the changes of the DataContent type, added testing for both string and byte representations
    
    * Pass kwargs into subworkflows (#2923)
    
    * Python: Move ollama samples to samples getting started dir (#2921)
    
    * Move ollama samples to samples getting started dir
    
    * Address feedback
    
    * Python: fix: correct BadRequestError when using Pydantic model in response_fo… (#1843)
    
    * fix: correct BadRequestError when using Pydantic model in response_format
    
    * Fix lint
    
    ---------
    
    Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
    
    * .NET: [Breaking] Delete display name property (#2758)
    
    * delete the AIAgent.DisplayName property
    
    * use agent name as a first value for activity display name
    
    * Update dotnet/src/Microsoft.Agents.AI.Workflows/Specialized/HandoffAgentExecutor.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: cleanup and refactoring of chat clients (#2937)
    
    * refactoring and unifying naming schemes of internal methods of chat clients
    
    * set tool_choice to auto
    
    * fix for mypy
    
    * added note on naming and fix #2951
    
    * fix responses
    
    * fixes in azure ai agents client
    
    * Python: Workflow add option to visualize internal executors (#2917)
    
    * Workflow add option to visualize internal executors
    
    * Address Copilot comments
    
    * Python: Fixes Run ID and Thread ID casing to align with AG-UI Typescript SDK (#2948)
    
    * added camelCase input to run id and thread id aligning with @ag-ui/core
    
    * fixed per copilot suggestions
    
    * Python: Add workflow cancellation sample (#2732)
    
    * Add workflow cancellation sample
    
    Add sample demonstrating how to cancel a running workflow using asyncio
    tasks. Shows both cancellation mid-execution and normal completion paths.
    Useful for implementing timeouts, graceful shutdown, or A2A executors.
    
    * update docstring
    
    * .NET: Update Anthropic package to version 12.0.0 (#2914)
    
    * Initial plan
    
    * Update Anthropic package to version 12.0.0
    
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    
    * Python: Add Azure Managed Redis Support with Credential Provider (#2887)
    
    * azure redis support
    
    * small fixes
    
    * azure managed redis sample
    
    * fixes
    
    * Bump CommunityToolkit.Aspire.OllamaSharp from 13.0.0-beta.440 to 13.0.0 (#2856)
    
    ---
    updated-dependencies:
    - dependency-name: CommunityToolkit.Aspire.OllamaSharp
      dependency-version: 13.0.0
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.4.11 to 4.0.5 (#2853)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    
    * Bump Azure.AI.AgentServer.AgentFramework from 1.0.0-beta.4 to 1.0.0-beta.5 (#2854)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Python: Fix WorkflowAgent event handling and kwargs forwarding (#2946)
    
    * Fix kwargs propagation through workflow.as_agent()
    
    * Fix WorkflowAgent to respect AgentExecutor output_response setting
    
    * .NET: Use GrpcEntityRunner instead of TaskEntityDispatcher (#2759)
    
    * Use GrpcEntityRunner instead of TaskEntityDispatcher
    
    * Pin to Durable worker 1.11.0
    
    * Set the invocation result
    
    * Update all Durable packages
    
    * Update changelog, rename dispatcher to encondedEntityRequest
    
    * Python: Bump Py version to 1.0.0b251218 for a release. Update CHANGELOG (#2968)
    
    * Bump Py version to 1.0.0b251218 for a release. Update CHANGELOG
    
    * update lock
    
    * Fix formatting
    
    * Fix ChatKit typing
    
    * Python: Introducing Foundry Local Chat Clients (#2915)
    
    * redo foundry local chat client
    
    * fix mypy and spelling
    
    * better docstring, updated sample
    
    * fixed tests and added tests
    
    * small sample update
    
    * Updated package versions (#2978)
    
    * Python: Added GitHub MCP sample with PAT (#2967)
    
    * added github mcp sample with PAT
    
    * addressed copilot fixes
    
    * env fix
    
    * Python: Preserve reasoning blocks with OpenRouter (#2950)
    
    * Preserve reasoning blocks with OpenRouter
    
    * Put encrypted reasoning in TextReasoningContent
    
    * Remove unneccessary change
    
    * Fix docs
    
    * Support streaming
    
    * Fix handling None in TextReasoningContent.text
    
    * Python: Added response.created and response.in_progress event process to OpenAIBaseResponseClient (#2975)
    
    * added response.created and response.in_progress to include response.id
    
    * better doc string
    
    * added tests for the new streaming event types
    
    * Python: Introducing support for Bedrock-hosted models (Anthropic, Cohere, etc.) (#2610)
    
    * Pushing the bedrock related changes to the new branch after addressing the review comments
    
    * 2524 Addressed the second round review comments
    
    * 2524 Addressed few more minor comments on the PR
    
    * resolving the merge conflict
    
    * 2524 resolved the uv.lock conflicts
    
    * 2524 addressed more comments
    
    * 2524 removed the print statement to fix the checks failure
    
    * 2524 resolved the CI failure issues
    
    * 2524 fixing the CI breaks
    
    * 2524 Addressed the review comment
    
    * 2524 resolved conflict
    
    ---------
    
    Co-authored-by: Sunil Dutta <sunil.dutta@penske.com>
    Co-authored-by: budgetboardingai <apurva.sharma31@gmail.com>
    
    * .NET: [Durable Agents] Reliable streaming sample (#2942)
    
    * .NET: [Durable Agents] Reliable streaming sample
    
    * Add automated validation for new sample
    
    * Address Copilot PR feedback
    
    * Fix typo in README.md about agent definitions (#2634)
    
    * Fix typo in README.md about agent definitions
    
    * Update agent-samples/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: latency improvements (#3014)
    
    * latency improvements
    
    * fixed mypy, added coding standards and instructions
    
    * slight logic improvement
    
    * Python: Updated package versions (#3024)
    
    * Updated package versions
    
    * Updated changelog
    
    * Python: add powerfx safe mode (#3028)
    
    * add powerfx safe mode
    
    * improved docstring and aligned env_file loading
    
    * ensured test uses reset
    
    * .NET: [Breaking] Introduce RunCoreAsync/RunCoreStreamingAsync delegation pattern in AIAgent (#2749)
    
    * Initial plan
    
    * Refactor AIAgent: Make RunAsync and RunStreamingAsync non-abstract, add RunCoreAsync and RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix infinite recursion in test implementations
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Make RunAsync and RunStreamingAsync non-virtual as requested
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix DelegatingAIAgent subclasses to use RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix XML documentation references in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Restore <see cref> tags with proper qualified signatures in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Rollback unnecessary XML documentation changes in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Remove pragma and update crefs to RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix EntityAgentWrapper to call base.RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * fix compilation issues
    
    * fix compilatio issue
    
    * fix tests
    
    * fix unit tests
    
    * fix unit test
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <sergemenshikh@gmail.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Remove from feature branch
    
    * Remove ollama changes
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    Co-authored-by: Kurt <65111699+q33566@users.noreply.github.com>
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    Co-authored-by: Korolev Dmitry <deagle.gross@gmail.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Jose Luis Latorre Millas <joslat@gmail.com>
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Richard Ortega <richardjortega@gmail.com>
    Co-authored-by: 刘邦学AI <lbbniu@gmail.com>
    Co-authored-by: Stephen Toub <stoub@microsoft.com>
    Co-authored-by: Nico Möller <nkm-moeller@mail.de>
    Co-authored-by: Chris Gillum <cgillum@microsoft.com>
    Co-authored-by: Giles Odigwe <79032838+giles17@users.noreply.github.com>
    Co-authored-by: Phillip Hoff <phillip.hoff@gmail.com>
    Co-authored-by: Ege Ozan Özyedek <36128615+egeozanozyedek@users.noreply.github.com>
    Co-authored-by: samueljohnsiby <66901393+samueljohnsiby@users.noreply.github.com>
    Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
    Co-authored-by: Hao Luo <338265+howlowck@users.noreply.github.com>
    Co-authored-by: Victor Dibia <chuvidi2003@gmail.com>
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    Co-authored-by: Jacob Viau <javia@microsoft.com>
    Co-authored-by: SuperKenVery <39673849+SuperKenVery@users.noreply.github.com>
    Co-authored-by: Sunil Dutta <dutta.2003@gmail.com>
    Co-authored-by: Sunil Dutta <sunil.dutta@penske.com>
    Co-authored-by: budgetboardingai <apurva.sharma31@gmail.com>
    Co-authored-by: Syrine Chelly <62653967+SyChell@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <sergemenshikh@gmail.com>
    
    * Python: Complete durableagent package   (#3058)
    
    * Add worker and clients
    
    * Clean code and refactor common code
    
    * Implement sample
    
    * Add sample
    
    * Update readmes
    
    * Fix tests
    
    * Fix tests
    
    * Update requirements
    
    * Fix typo
    
    * Address comments
    
    * use response.text
    
    * .NET: Python: Merge main into feature-durabletask-python branch  (#3160)
    
    * Python: Add factory pattern to concurrent orchestration builder (#2738)
    
    * Add factory pattern to concurrent orchestration builder
    
    * Update readme
    
    * Address AI comments
    
    * Fix unit tests
    
    * Fix import
    
    * Prevent multiple calls to set participants or factories
    
    * Add comments
    
    * Mitigate warnings
    
    * Fix mypy
    
    * Address comments
    
    * Address Copilot comments
    
    * Fix tests
    
    * Python: fix: GroupChat ManagerSelectionResponse JSON Schema for OpenAI Structured Outpu… (#2750)
    
    * fix: ManagerSelectionResponse JSON Schema for OpenAI Structured Output Strict Mode
    
    * refactor: install pre-commit then commit again
    
    * Capture file IDs from code interpreter in streaming responses (#2741)
    
    * .NET: [BREAKING] Prevent nulls in AIAgent property (#2719)
    
    * prevent nulls in AIAgent property
    
    * address feedback
    
    * code ql sm04598 (#2723)
    
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    
    * .NET: Add Conversation State Sample (Step05) (#2697)
    
    * Initial plan
    
    * Add Agent_OpenAI_Step05_Conversation sample for conversation state management
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Update Program.cs comment to accurately describe the sample
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Update the code to use the ConversationClient more in line with the samples in OpenAI
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Changing sample to use ChatClientAgent and conversationId in GetNewThread
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.4.7 to 4.0.4.11 (#2777)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.4.11
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump Azure.Identity from 1.17.0 to 1.17.1 (#2780)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump Azure.AI.AgentServer.AgentFramework from 1.0.0-beta.4 to 1.0.0-beta.5 (#2778)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Python: added more complete parsing for mcp tool arguments (#2756)
    
    * added more complete parsing for mcp tool arguments
    
    * fixed mypy
    
    * added nonlocal model counter, and some fixes
    
    * fixes in naming logic
    
    * extracted json parsing function, added parametrized test and checked coverage
    
    * Python: Updated package versions (#2784)
    
    * Updated package versions
    
    * Small fix
    
    * Bump actions/checkout from 5 to 6 (#2404)
    
    Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
    - [Release notes](https://github.com/actions/checkout/releases)
    - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/actions/checkout/compare/v5...v6)
    
    ---
    updated-dependencies:
    - dependency-name: actions/checkout
      dependency-version: '6'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * .NET: adds support for labels in edges,  fixes rendering of labels in dot a… (#1507)
    
    * adds support for labels in edges,  fixes rendering of labels in dot and mermaid, adds rendering of labels in edges
    
    * Update dotnet/src/Microsoft.Agents.AI.Workflows/Visualization/WorkflowVisualizer.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * escaping edge labels, adding tests for labels containing strange characters that would break the diagram and enabling the previous signature so the API has backwards compatibility.
    
    * Unify label in EdgeData
    
    * Edge API adjustments, removed useless "sanitizer"
    
    * fixed test
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Python: Added custom args and thread object to ai_function kwargs (#2769)
    
    * Added an example of using kwargs in ai_function
    
    * Added thread object to ai_function kwargs
    
    * Updated docs
    
    * Small fix
    
    * Added thread parameter filtering
    
    * Fix WorkflowAgent to include thread convo history. Enable checkpointing. (#2774)
    
    * Update OpenAIResponses.yaml to match AgentSchema (#2598)
    
    1. Update `connection` child types --  `kind: ApiKey` to `kind: key` otherwise schema will fail: https://microsoft.github.io/AgentSchema/reference/apikeyconnection/
    
    2.  Update `outputSchema`'s `PropertySchema` to be `kind` instead of `type` otherwise schema will fail: https://microsoft.github.io/AgentSchema/reference/propertyschema/
    
    * Python: Remove warnings from workflow builder on not using factories (#2808)
    
    * Revert concurrent
    
    * Fix comments
    
    * Python: Filter framework kwargs from MCP tool invocations (#2870)
    
    * Filter framework kwargs from MCP tool invocations
    
    * Fixes
    
    * Python: Fix WorkflowAgent to emit yield_output as agent response (#2866)
    
    * Fix WorkflowAgent to emit yield_output as agent response
    
    * use raw_representation
    
    * Raw representation handling
    
    * Python: Use agent description in HandoffBuilder auto-generated tools (#2713) (#2714)
    
    ## Summary
    Enhanced `HandoffBuilder._apply_auto_tools` to use the target agent's
    description when creating handoff tools, providing more informative tool
    descriptions for LLMs.
    
    ## Changes
    - Modified `_apply_auto_tools` to extract `description` from
      `AgentExecutor._agent` when available
    - Updated iteration to use `.items()` for more efficient dict traversal
    - Handoff tools now use agent descriptions instead of generic placeholders
    
    ## Example
    Before: "Handoff to the refund_agent agent."
    After: "You handle refund requests. Ask for order details and process refunds."
    
    ## Testing
    - All handoff tests pass (20/20)
    - No breaking changes to existing API
    
    Fixes #2713
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    
    * 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 middleware terminate flag to exit function calling loop immediately (#2868)
    
    * Fix middleware terminate flag to exit function calling loop immediately
    
    * Eliminating duck typing
    
    * Improve function exec result handling
    
    * Fix race condition
    
    * Fix mypy issues
    
    * Python: Fix context duplication in handoff workflows when restoring from checkpoint (#2867)
    
    * Fix context duplication in handoff workflows when restoring from checkpoint
    
    * Address Copilot PR review
    
    * .NET: Update to latest Azure.AI.*, OpenAI, and M.E.AI* (#2850)
    
    * Update to latest Azure.AI.*, OpenAI, and M.E.AI*
    
    Absorb breaking changes in Responses surface area
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/GettingStarted/AgentWithOpenAI/Agent_OpenAI_Step04_CreateFromOpenAIResponseClient/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Using patch to remove the model is necessary, updated the response client to actually use the the ForAgent
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Bump actions/download-artifact from 6 to 7 (#2862)
    
    Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
    - [Release notes](https://github.com/actions/download-artifact/releases)
    - [Commits](https://github.com/actions/download-artifact/compare/v6...v7)
    
    ---
    updated-dependencies:
    - dependency-name: actions/download-artifact
      dependency-version: '7'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump actions/cache from 4 to 5 (#2861)
    
    Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
    - [Release notes](https://github.com/actions/cache/releases)
    - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
    - [Commits](https://github.com/actions/cache/compare/v4...v5)
    
    ---
    updated-dependencies:
    - dependency-name: actions/cache
      dependency-version: '5'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump actions/upload-artifact from 5 to 6 (#2860)
    
    Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
    - [Release notes](https://github.com/actions/upload-artifact/releases)
    - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)
    
    ---
    updated-dependencies:
    - dependency-name: actions/upload-artifact
      dependency-version: '6'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Python : Ollama Connector for Agent Framework (#1104)
    
    * Initial Commit for Olama Connector
    
    * Added Olama Sample
    
    * Add Sample & Fixed Open Telemetry
    
    * Fixed Spelling from Olama to Ollama
    
    * remove"opentelemetry-semantic-conventions-ai ~=0.4.13" since its handled in a different pr
    
    * Added Tool Calling
    
    * Finalizing test cases
    
    * Adjust samples to be more reliable
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/pyproject.toml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/tests/test_ollama_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Improved Docstrings & Sample
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Integrate PR Feedback
    - Divided Streaming and Non-Streaming into independent Methods
    - Catch Ollama Validation Error
    - Add OTEL Provider Name
    - Checked Ollama Messages
    - Add Usage Statistics
    
    * Revert setting, so it can be none
    
    * Validate Message formatting between AF and Ollama
    
    * Catch Ollama Error and raise a ServiceResponse Error
    
    * Fix mypy error
    
    * remove .vscode comma
    
    * Add Reasoning support & adjust to new structure
    
    * Add Ollama Multimodality and Reasoning
    
    * Add test cases for reasoning
    
    * Add Tests for Error Handling in Ollama Client
    
    * Update python/samples/getting_started/multimodal_input/ollama_chat_multimodal.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Integrated Copilot Feedback
    
    * Implement first PR Feedback
    
    * Adjust Readme files for examples
    
    * Adjust argument passing via additional chat options
    
    * Implemented PR Feedback
    
    * Removing Ollama Package from Core and moving samples
    
    * Fix Link & Adding Samples to Main Sample Readme
    
    * Fixing Links in Readme
    
    * Moved Multimodal and Chat Example
    
    * Fixed Link in ChatClient to Ollama
    
    * Fix AgentFramework Links in Ollama Project
    
    * Fix observability breaking change
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Skip failing IT (#2904)
    
    * .NET: Cosmos DB UT Fast Skip (For Non-Configured Local envs) (#2906)
    
    * Cosmos DB UT Fast Skip (Non-Configured Local envs) + Long running UT skip in pipeline when no CosmosDB changes happened
    
    * Force a CosmosDB source code change to trigger the pipeline
    
    * Address possible string boolean mismatch
    
    * Add debug
    
    * Enabling emulator always when running IT
    
    * .NET: Add TTLs to durable agent sessions (#2679)
    
    * .NET: Add TTLs to durable agent sessions
    
    * Remove unnecessary async
    
    * PR feedback: clarify UTC
    
    * PR feedback: limit minimum signal delay to <= 5 minutes
    
    * PR feedback: Fix TTL disablement
    
    * Linter: use auto-property
    
    * Fix build break from OpenAI SDK change
    
    * Updated CHANGELOG.md
    
    * PR feedback
    
    * Reduce default TTL to 14 days to work around DTS bug
    
    * Python:  Update Mem0Provider to use v2 search API `filters` parameter (#2766)
    
    * short fix to move id parameters to filters object
    
    * added tests
    
    * small fix
    
    * mem0 dependency update
    
    * Updated package versions (#2913)
    
    * .NET: Switch to new "Run" method name. (#2843)
    
    * Switch to new "RunAgent" method name.
    
    * Try to disable false positive naming warning.
    
    * Add comment about disabled warnings.
    
    * Rename `RunAgent` to just `Run`.
    
    * Update CHANGELOG.
    
    * Python: Switch to new "run" method name. (#2890)
    
    * Switch to `run` method.
    
    * Add support for deprecated `run_agent`.
    
    * Fix entity method name.
    
    * Fix method name and improve tests.
    
    * Update comment.
    
    * Update Python CHANGELOG.
    
    * [BREAKING] Python: Add factory pattern to handoff orchestration builder (#2844)
    
    * WIP: Factory pattern to handoff
    
    * Add factory pattern to concurrent orchestration builder; Next: tests and sample verification
    
    * Add tests and improve comments
    
    * Fix mypy
    
    * Simplify handoff_simple.py
    
    * Simplify handoff_autonoumous.py and bug fix
    
    * Update readme
    
    * Address Copilot comments
    
    * Python: Flow custom kwargs to agents via Workflow SharedState (#2894)
    
    * Flow custom kwargs to agents via SharedState
    
    * Address Copilot feedback
    
    * Improve sample typing
    
    * Fix test
    
    * Fix Pydantic error when using Literal type for tool params (#2893)
    
    * Updated Ollama package version (#2920)
    
    * Python: Azure AI Agent with Bing Grounding Citations Sample (#2892)
    
    * bing grounding sample with citations
    
    * small fix
    
    * fix
    
    * .NET: Make DelegatingAIAgent abstract (#2797)
    
    * Initial plan
    
    * Make DelegatingAIAgent abstract
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Added additional arguments for Azure AI agent (#2922)
    
    * Python: Correction of MCP image type conversion in  _mcp.py (#2901)
    
    * Correction of MCP image type conversion in  _mcp.py
    
    * Added a new overload to the init function of the DataContent() type of the Agent Framework, edited the test case to correctly test the usage of the data and uri fields while using DataContent()
    
    * Fixed tests related to the changes of the DataContent type, added testing for both string and byte representations
    
    * Pass kwargs into subworkflows (#2923)
    
    * Python: Move ollama samples to samples getting started dir (#2921)
    
    * Move ollama samples to samples getting started dir
    
    * Address feedback
    
    * Python: fix: correct BadRequestError when using Pydantic model in response_fo… (#1843)
    
    * fix: correct BadRequestError when using Pydantic model in response_format
    
    * Fix lint
    
    ---------
    
    Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
    
    * .NET: [Breaking] Delete display name property (#2758)
    
    * delete the AIAgent.DisplayName property
    
    * use agent name as a first value for activity display name
    
    * Update dotnet/src/Microsoft.Agents.AI.Workflows/Specialized/HandoffAgentExecutor.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: cleanup and refactoring of chat clients (#2937)
    
    * refactoring and unifying naming schemes of internal methods of chat clients
    
    * set tool_choice to auto
    
    * fix for mypy
    
    * added note on naming and fix #2951
    
    * fix responses
    
    * fixes in azure ai agents client
    
    * Python: Workflow add option to visualize internal executors (#2917)
    
    * Workflow add option to visualize internal executors
    
    * Address Copilot comments
    
    * Python: Fixes Run ID and Thread ID casing to align with AG-UI Typescript SDK (#2948)
    
    * added camelCase input to run id and thread id aligning with @ag-ui/core
    
    * fixed per copilot suggestions
    
    * Python: Add workflow cancellation sample (#2732)
    
    * Add workflow cancellation sample
    
    Add sample demonstrating how to cancel a running workflow using asyncio
    tasks. Shows both cancellation mid-execution and normal completion paths.
    Useful for implementing timeouts, graceful shutdown, or A2A executors.
    
    * update docstring
    
    * .NET: Update Anthropic package to version 12.0.0 (#2914)
    
    * Initial plan
    
    * Update Anthropic package to version 12.0.0
    
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    
    * Python: Add Azure Managed Redis Support with Credential Provider (#2887)
    
    * azure redis support
    
    * small fixes
    
    * azure managed redis sample
    
    * fixes
    
    * Bump CommunityToolkit.Aspire.OllamaSharp from 13.0.0-beta.440 to 13.0.0 (#2856)
    
    ---
    updated-dependencies:
    - dependency-name: CommunityToolkit.Aspire.OllamaSharp
      dependency-version: 13.0.0
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.4.11 to 4.0.5 (#2853)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    
    * Bump Azure.AI.AgentServer.AgentFramework from 1.0.0-beta.4 to 1.0.0-beta.5 (#2854)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Python: Fix WorkflowAgent event handling and kwargs forwarding (#2946)
    
    * Fix kwargs propagation through workflow.as_agent()
    
    * Fix WorkflowAgent to respect AgentExecutor output_response setting
    
    * .NET: Use GrpcEntityRunner instead of TaskEntityDispatcher (#2759)
    
    * Use GrpcEntityRunner instead of TaskEntityDispatcher
    
    * Pin to Durable worker 1.11.0
    
    * Set the invocation result
    
    * Update all Durable packages
    
    * Update changelog, rename dispatcher to encondedEntityRequest
    
    * Python: Bump Py version to 1.0.0b251218 for a release. Update CHANGELOG (#2968)
    
    * Bump Py version to 1.0.0b251218 for a release. Update CHANGELOG
    
    * update lock
    
    * Fix formatting
    
    * Fix ChatKit typing
    
    * Python: Introducing Foundry Local Chat Clients (#2915)
    
    * redo foundry local chat client
    
    * fix mypy and spelling
    
    * better docstring, updated sample
    
    * fixed tests and added tests
    
    * small sample update
    
    * Updated package versions (#2978)
    
    * Python: Added GitHub MCP sample with PAT (#2967)
    
    * added github mcp sample with PAT
    
    * addressed copilot fixes
    
    * env fix
    
    * Python: Preserve reasoning blocks with OpenRouter (#2950)
    
    * Preserve reasoning blocks with OpenRouter
    
    * Put encrypted reasoning in TextReasoningContent
    
    * Remove unneccessary change
    
    * Fix docs
    
    * Support streaming
    
    * Fix handling None in TextReasoningContent.text
    
    * Python: Added response.created and response.in_progress event process to OpenAIBaseResponseClient (#2975)
    
    * added response.created and response.in_progress to include response.id
    
    * better doc string
    
    * added tests for the new streaming event types
    
    * Python: Introducing support for Bedrock-hosted models (Anthropic, Cohere, etc.) (#2610)
    
    * Pushing the bedrock related changes to the new branch after addressing the review comments
    
    * 2524 Addressed the second round review comments
    
    * 2524 Addressed few more minor comments on the PR
    
    * resolving the merge conflict
    
    * 2524 resolved the uv.lock conflicts
    
    * 2524 addressed more comments
    
    * 2524 removed the print statement to fix the checks failure
    
    * 2524 resolved the CI failure issues
    
    * 2524 fixing the CI breaks
    
    * 2524 Addressed the review comment
    
    * 2524 resolved conflict
    
    ---------
    
    Co-authored-by: Sunil Dutta <sunil.dutta@penske.com>
    Co-authored-by: budgetboardingai <apurva.sharma31@gmail.com>
    
    * .NET: [Durable Agents] Reliable streaming sample (#2942)
    
    * .NET: [Durable Agents] Reliable streaming sample
    
    * Add automated validation for new sample
    
    * Address Copilot PR feedback
    
    * Fix typo in README.md about agent definitions (#2634)
    
    * Fix typo in README.md about agent definitions
    
    * Update agent-samples/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: latency improvements (#3014)
    
    * latency improvements
    
    * fixed mypy, added coding standards and instructions
    
    * slight logic improvement
    
    * Python: Updated package versions (#3024)
    
    * Updated package versions
    
    * Updated changelog
    
    * Python: add powerfx safe mode (#3028)
    
    * add powerfx safe mode
    
    * improved docstring and aligned env_file loading
    
    * ensured test uses reset
    
    * .NET: [Breaking] Introduce RunCoreAsync/RunCoreStreamingAsync delegation pattern in AIAgent (#2749)
    
    * Initial plan
    
    * Refactor AIAgent: Make RunAsync and RunStreamingAsync non-abstract, add RunCoreAsync and RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix infinite recursion in test implementations
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Make RunAsync and RunStreamingAsync non-virtual as requested
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix DelegatingAIAgent subclasses to use RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix XML documentation references in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Restore <see cref> tags with proper qualified signatures in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Rollback unnecessary XML documentation changes in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Remove pragma and update crefs to RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix EntityAgentWrapper to call base.RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * fix compilation issues
    
    * fix compilatio issue
    
    * fix tests
    
    * fix unit tests
    
    * fix unit test
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <sergemenshikh@gmail.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * add issue template and additional labeling (#3006)
    
    * fix and extra int test (#3037)
    
    * .NET: [BREAKING] Refactor ChatMessageStore methods to be similar to AIContextProvider and add filtering support (#2604)
    
    * Refactor ChatMessageStore methods to be similar to AIContextProvider
    
    * Fix file encoding
    
    * Ensure that AIContextProvider messages area also persisted.
    
    * Update formatting and seal context classes
    
    * Improve formatting
    
    * Remove optional messages from constructor and add unit test
    
    * Add ChatMessageStore filtering via a decorator
    
    * Update sample and cosmos message store to store AIContextProvider messages in right order. Fix unit tests.
    
    * Update Workflowmessage store to use aicontext provider messages.
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestions from code review
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Improve xml docs messaging
    
    * Address code review comments.
    
    * Also notify message store on failure
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * [BREAKING] Remove unused AgentThreadMetadata (#3067)
    
    * Remove unused AgentThreadMetadata
    
    * Update DurableTask Changelog
    
    * Python: Fix AzureAIClient failure when conversation history contains assistant messages (#3076)
    
    * Fix AzureAIClient failure when conversation history contains assistant messages
    
    * Address PR review feedback: improve docstring and test assertions
    
    * Remove redundant cast
    
    * Fix: Update OTLP exporter protocol conditions (#3070)
    
    * Python: Fix ExecutorInvokedEvent and ExecutorCompletedEvent observability data (#3090)
    
    * Fix ExecutorInvokedEvent.data mutation bug
    
    * Fix bug related to not yielding output type
    
    * .NET: Seal ChatClientAgentThread (#2842)
    
    * Initial plan
    
    * Seal ChatClientAgentThread class
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix broken strands urls. (#3102)
    
    * Fix broken strands urls.
    
    * Fix typos
    
    * .NET: Fix message ordering inconsistency when using AIContextProvider (#2659)
    
    * Initial plan
    
    * Fix message ordering inconsistency when using AIContextProvider
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Revert to original message ordering: Input, AIContextProvider, Response
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Reorder messages to ChatClient to match MessageStore order: Existing, Input, AIContextProvider
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Remove redundant test methods as existing tests already verify the behavior
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * fix: tool_choice parameter not being honored when passed to agent.run() (#3095)
    
    * sharepoint sample fix (#3108)
    
    * Bump versions to 1.0.0b260106 for a release. Update CHANGELOG.md (#3109)
    
    * Bump Bedrock version to latest (#3110)
    
    * Python: Fix MCP tool result serialization for list[TextContent] (#2523)
    
    * Fix MCP tool result serialization for list[TextContent]
    
    When MCP tools return results containing list[TextContent], they were
    incorrectly serialized to object repr strings like:
    '[<agent_framework._types.TextContent object at 0x...>]'
    
    This fix properly extracts text content from list items by:
    1. Checking if items have a 'text' attribute (TextContent)
    2. Using model_dump() for items that support it
    3. Falling back to str() for other types
    4. Joining single items as plain text, multiple items as JSON array
    
    Fixes #2509
    
    * Address PR review feedback for MCP tool result serialization
    
    - Extract serialize_content_result() to shared _utils.py
    - Fix logic: use texts[0] instead of join for single item
    - Add type annotation: texts: list[str] = []
    - Return empty string for empty list instead of '[]'
    - Move import json to file top level
    - Add comprehensive unit tests for serialization
    
    * Address PR review feedback: fix type checking and double serialization
    
    - Add isinstance(item.text, str) check to ensure text attribute is a string
    - Fix double-serialization issue by keeping model_dump results as dicts
      until final json.dumps (removes escaped JSON strings in arrays)
    - Improve docstring with detailed return value documentation
    - Add test for non-string text attribute handling
    - Add tests for list type tool results in _events.py path
    
    * Simplify PR: minimal changes to fix MCP tool result serialization
    
    Addresses reviewer feedback about excessive refactoring:
    - Reset _events.py to original structure
    - Only add import and use serialize_content_result in one location
    - All review comments addressed in serialize_content_result():
      - Added isinstance(item.text, str) check
      - Use model_dump(mode="json") to avoid double-serialization
      - Improved docstring with explicit return value documentation
      - Empty list returns "" instead of "[]"
    
    * Refactor: Move MCP TextContent serialization to core prepare_function_call_results
    
    Per reviewer feedback, moved the TextContent serialization logic from
    ag-ui's serialize_content_result to the core package's
    prepare_function_call_results function.
    
    Changes:
    - Added handling for objects with 'text' attribute (like MCP TextContent)
      in _prepare_function_call_results_as_dumpable
    - Removed serialize_content_result from ag-ui/_utils.py
    - Updated _events.py and _message_adapters.py to use
      prepare_function_call_results from core package
    - Updated tests to match the core function's behavior
    
    * Fix failing tests for prepare_function_call_results behavior
    
    - test_tool_result_with_none: Update expected value to 'null' (JSON serialization of None)
    - test_tool_result_with_model_dump_objects: Use Pydantic BaseModel instead of plain class
    
    * Fix B903 linter error: Convert MockTextContent to dataclass
    
    The ruff linter was reporting B903 (class could be dataclass or namedtuple)
    for the MockTextContent test helper classes. This commit converts them to
    dataclasses to satisfy the linter check.
    
    * Python: Improve DevUI, add Context Inspector view as new tab under traces (#2742)
    
    * Improve DevUI, add Context Inspector view as new tab under traces
    
    * fix mypy errors
    
    * fix: Handle stale MCP connections in DevUI executor
    
    MCP tools can become stale when HTTP streaming responses end - the underlying
    stdio streams close but `is_connected` remains True. This causes subsequent
    requests to fail with `ClosedResourceError`.
    
    Add `_ensure_mcp_connections()` to detect and reconnect stale MCP tools before
    agent execution. This is a workaround for an upstream Agent Framework issue
    where connection state isn't properly tracked.
    
    Fixes MCP tools failing on second HTTP request in DevUI.
    
    fixes  #1476 #1515 #2865
    
    * fix #1572 report import dependency errors more clearly
    
    * Ensure there is streaming toggle where users can select streaming vs non streaming mode in devui . Fixes .NET: [Python] DevUI tool call rendering in non-streaming mode?
    
    * remove unused dead code
    
    * improve ux - workflows with agents show a chat component in execution timelien, also ensure magentic final output shows correctly
    
    * update ui build
    
    * update devui to use instrumentation instead of tracing, other instrumentation and type/instance check fixes
    
    * .NET: Seal factory contexts and add non JSO deserialize overloads (#3066)
    
    * Seal factory contexts and add non JSO deserialize overloads
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Enable blank issues in issue template configuration
    
    Need to re-enable creating blank issues
    
    * updated templates (#3106)
    
    * updated templates
    
    * enabled blank and fixed triage
    
    * made language optional and moved to the bottom for features
    
    * Python: Streaming sample for azurefunctions (#3057)
    
    * Streaming sample for azurefunctions
    
    * Fixed links and sample name
    
    * Addressed feedback
    
    * Addressed feedback
    
    * Fixed integration tests
    
    * Updated test
    
    * Python: fix(azure-ai): Fix response_format handling for structured outputs (#3114)
    
    * fix(azure-ai): read response_format from chat_options instead of run_options
    
    * refactor: use explicit None checks for response_format
    
    * Fix mypy error
    
    * Mypy fix
    
    * Python: Bump python version to 1.0.0b260107 for a release (#3128)
    
    * Bump python version to 1.0.0b260107 for a release
    
    * Update changelog
    
    * Make A2AAgent public, so that it's concrete implementation methods can be used. (#3119)
    
    * .NET: Map additional props <-> A2A metadata (#3137)
    
    * map additional props from agent run options to a2a request metadata
    
    * small touches
    
    * add unit tests for new extension methods
    
    * Sort using
    
    * add unit test
    
    * add additiona unit tests
    
    * special case json element to avoid unnecessary serialization
    
    * Python: Fix Anthropic streaming response bugs (#3141)
    
    * test commit identity
    
    * fix(anthropic): fix raw_representation and finish_reason in streaming
    
    * lint fix
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.5 to 4.0.5.1 (#2994)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.5.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Bump Anthropic from 12.0.0 to 12.0.1 (#2993)
    
    ---
    updated-dependencies:
    - dependency-name: Anthropic
      dependency-version: 12.0.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * .NET: [Breaking] Prevent loss of input messages & streamed updates when resuming streaming (#2748)
    
    * save input messages and stream updates to the continuation token to be able to use them in the last successful stream resumption call.
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgent_BackgroundResponsesTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * fix typo
    
    * init continuation token from chat response
    
    * remove unnecessary types for source generation
    
    * remove check for continuation token passed at initial run
    
    * remove check for continuation token pass at initial run
    
    * centralize continuation token parsing
    
    * update xml comments
    
    * use readonly collection instead of enumerable
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET: fix: Expose WorkflowErrorEvent as ErrorContent (#2762)
    
    * fix: Expose WorkflowErrorEvent as ErrorContent
    
    When hosted using .AsAgent(), Workflows were not exposing inner errors coming as Exceptions (through the WorkflowErrorEvent)
    
    The fix is to convert their message to an ErrorContent on the way out, rather than rely on the default "empty update" to collect the raw event.
    
    * feat: Add a way to show/suppress exception information
    
    * Bump Microsoft.Agents.AI.Workflows from 1.0.0-preview.251125.1 to 1.0.0-preview.251219.1 (#2997)
    
    ---
    updated-dependencies:
    - dependency-name: Microsoft.Agents.AI.Workflows
      dependency-version: 1.0.0-preview.251219.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * .NET: Add Run overloads to expose ChatClientAgentRunOptions in IntelliSense (#3115)
    
    * Initial plan
    
    * Add ChatClientAgentExtensions for improved discoverability of ChatClientAgentRunOptions
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Address code review feedback - use collection expression syntax
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Apply suggestion from @westey-m
    
    * Fix issues with Copilot implementation
    
    * Add additional tests for structured output overloads.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Python: Add tool call/result content types and update connectors and samples (#2971)
    
    * Add new AI content types and image tool support
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Add Python content types for tool calls/results and image generation tool support
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Address review feedback for tool content and samples
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Tighten image generation typing and sample tools list
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Align image generation output typing
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Handle MCP naming, image options mapping, and connector tool content
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Allow MCP call in function approval request
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Remove raw image_generation tool remapping
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Restore Anthropic tool_use to function calls unless code execution
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Fix lint issues for hosted file docstring and MCP parsing
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Import ChatResponse types in Anthropic client
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Fix Anthropics citation type imports and MCP typing for handoff/tools
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Skip lightning tests without agentlightning and fix function call import
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * fix lint on lab package
    
    * rebuilt anthropic parsing
    
    * redid anthropic parsing
    
    * typo
    
    * updated parsing and added missing docstrings
    
    * fix tests
    
    * mypy fixes
    
    * second mypy fix
    
    * add new class to other samples
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <github@vanvalkenburg.eu>
    
    * Bump Google.GenAI from 0.6.0 to 0.9.0 (#2995)
    
    ---
    updated-dependencies:
    - dependency-name: Google.GenAI
      dependency-version: 0.9.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Bump js-yaml from 4.1.0 to 4.1.1 in /python/packages/devui/frontend (#3123)
    
    Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
    - [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)
    
    ---
    updated-dependencies:
    - dependency-name: js-yaml
      dependency-version: 4.1.1
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Updated package versions (#3144)
    
    * .NET: Bump Microsoft.Agents.AI.OpenAI and Microsoft.Extensions.AI.OpenAI (#2996)
    
    * Bump Microsoft.Agents.AI.OpenAI and Microsoft.Extensions.AI.OpenAI
    
    Bumps Microsoft.Agents.AI.OpenAI from 1.0.0-preview.251125.1 to 1.0.0-preview.251219.1
    Bumps Microsoft.Extensions.AI.OpenAI from 10.1.0-preview.1.25608.1 to 10.1.1-preview.1.25612.2
    
    ---
    updated-dependencies:
    - dependency-name: Microsoft.Agents.AI.OpenAI
      dependency-version: 1.0.0-preview.251219.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Microsoft.Extensions.AI.OpenAI
      dependency-version: 10.1.1-preview.1.25612.2
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Microsoft.Agents.AI.OpenAI
      dependency-version: 1.0.0-preview.251219.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Microsoft.Extensions.AI.OpenAI
      dependency-version: 10.1.1-preview.1.25612.2
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    
    * Fixed samples
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Python: fix(ag-ui): Execute tools with approval_mode, fix shared state, code cleanup  (#3079)
    
    * fix(ag-ui): execute tools after approval in human-in-the-loop flow
    
    * Fix shared state bug
    
    * Bug fix finalized
    
    * Refactoring to clean up code
    
    * Code cleanup
    
    * More fixes
    
    * More code cleanup
    
    * Add version detection in __init__.py to ruff ignore list
    
    * Track agent name with updates for workflow agent (#3146)
    
    * Python: Fix AzureAIClient tool call bug for AG-UI use (#3148)
    
    * Fiz AzureAIClient tool call bug
    
    * Address copilot feedback
    
    * Revert to match main
    
    * revert file to main
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    Co-authored-by: Kurt <65111699+q33566@users.noreply.github.com>
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    Co-authored-by: Korolev Dmitry <deagle.gross@gmail.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Jose Luis Latorre Millas <joslat@gmail.com>
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Richard Ortega <richardjortega@gmail.com>
    Co-authored-by: 刘邦学AI <lbbniu@gmail.com>
    Co-authored-by: Stephen Toub <stoub@microsoft.com>
    Co-authored-by: Nico Möller <nkm-moeller@mail.de>
    Co-authored-by: Chris Gillum <cgillum@microsoft.com>
    Co-authored-by: Giles Odigwe <79032838+giles17@users.noreply.github.com>
    Co-authored-by: Phillip Hoff <phillip.hoff@gmail.com>
    Co-authored-by: Ege Ozan Özyedek <36128615+egeozanozyedek@users.noreply.github.com>
    Co-authored-by: samueljohnsiby <66901393+samueljohnsiby@users.noreply.github.com>
    Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
    Co-authored-by: Hao Luo <338265+howlowck@users.noreply.github.com>
    Co-authored-by: Victor Dibia <chuvidi2003@gmail.com>
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    Co-authored-by: Jacob Viau <javia@microsoft.com>
    Co-authored-by: SuperKenVery <39673849+SuperKenVery@users.noreply.github.com>
    Co-authored-by: Sunil Dutta <dutta.2003@gmail.com>
    Co-authored-by: Sunil Dutta <sunil.dutta@penske.com>
    Co-authored-by: budgetboardingai <apurva.sharma31@gmail.com>
    Co-authored-by: Syrine Chelly <62653967+SyChell@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <sergemenshikh@gmail.com>
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
    Co-authored-by: takanori-terai <123897708+takanori-terai@users.noreply.github.com>
    Co-authored-by: claude89757 <138977524+claude89757@users.noreply.github.com>
    Co-authored-by: Gavin Aguiar <80794152+gavin-aguiar@users.noreply.github.com>
    Co-authored-by: Sukeesh <vsukeeshbabu@gmail.com>
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <github@vanvalkenburg.eu>
    
    * Python: Add Durabletask samples and minor fixes (#3157)
    
    * Add samples and minor fixes
    
    * Add redis sample and wait-for-completion
    
    * Add wait-for-completion support
    
    * ADd missing docs
    
    * Python: Merge `main` into `feature-durabletask-python` branch  (#3261)
    
    * Python: Add factory pattern to concurrent orchestration builder (#2738)
    
    * Add factory pattern to concurrent orchestration builder
    
    * Update readme
    
    * Address AI comments
    
    * Fix unit tests
    
    * Fix import
    
    * Prevent multiple calls to set participants or factories
    
    * Add comments
    
    * Mitigate warnings
    
    * Fix mypy
    
    * Address comments
    
    * Address Copilot comments
    
    * Fix tests
    
    * Python: fix: GroupChat ManagerSelectionResponse JSON Schema for OpenAI Structured Outpu… (#2750)
    
    * fix: ManagerSelectionResponse JSON Schema for OpenAI Structured Output Strict Mode
    
    * refactor: install pre-commit then commit again
    
    * Capture file IDs from code interpreter in streaming responses (#2741)
    
    * .NET: [BREAKING] Prevent nulls in AIAgent property (#2719)
    
    * prevent nulls in AIAgent property
    
    * address feedback
    
    * code ql sm04598 (#2723)
    
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    
    * .NET: Add Conversation State Sample (Step05) (#2697)
    
    * Initial plan
    
    * Add Agent_OpenAI_Step05_Conversation sample for conversation state management
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Update Program.cs comment to accurately describe the sample
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Update the code to use the ConversationClient more in line with the samples in OpenAI
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Changing sample to use ChatClientAgent and conversationId in GetNewThread
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.4.7 to 4.0.4.11 (#2777)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.4.11
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump Azure.Identity from 1.17.0 to 1.17.1 (#2780)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump Azure.AI.AgentServer.AgentFramework from 1.0.0-beta.4 to 1.0.0-beta.5 (#2778)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Python: added more complete parsing for mcp tool arguments (#2756)
    
    * added more complete parsing for mcp tool arguments
    
    * fixed mypy
    
    * added nonlocal model counter, and some fixes
    
    * fixes in naming logic
    
    * extracted json parsing function, added parametrized test and checked coverage
    
    * Python: Updated package versions (#2784)
    
    * Updated package versions
    
    * Small fix
    
    * Bump actions/checkout from 5 to 6 (#2404)
    
    Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
    - [Release notes](https://github.com/actions/checkout/releases)
    - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/actions/checkout/compare/v5...v6)
    
    ---
    updated-dependencies:
    - dependency-name: actions/checkout
      dependency-version: '6'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * .NET: adds support for labels in edges,  fixes rendering of labels in dot a… (#1507)
    
    * adds support for labels in edges,  fixes rendering of labels in dot and mermaid, adds rendering of labels in edges
    
    * Update dotnet/src/Microsoft.Agents.AI.Workflows/Visualization/WorkflowVisualizer.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * escaping edge labels, adding tests for labels containing strange characters that would break the diagram and enabling the previous signature so the API has backwards compatibility.
    
    * Unify label in EdgeData
    
    * Edge API adjustments, removed useless "sanitizer"
    
    * fixed test
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Python: Added custom args and thread object to ai_function kwargs (#2769)
    
    * Added an example of using kwargs in ai_function
    
    * Added thread object to ai_function kwargs
    
    * Updated docs
    
    * Small fix
    
    * Added thread parameter filtering
    
    * Fix WorkflowAgent to include thread convo history. Enable checkpointing. (#2774)
    
    * Update OpenAIResponses.yaml to match AgentSchema (#2598)
    
    1. Update `connection` child types --  `kind: ApiKey` to `kind: key` otherwise schema will fail: https://microsoft.github.io/AgentSchema/reference/apikeyconnection/
    
    2.  Update `outputSchema`'s `PropertySchema` to be `kind` instead of `type` otherwise schema will fail: https://microsoft.github.io/AgentSchema/reference/propertyschema/
    
    * Python: Remove warnings from workflow builder on not using factories (#2808)
    
    * Revert concurrent
    
    * Fix comments
    
    * Python: Filter framework kwargs from MCP tool invocations (#2870)
    
    * Filter framework kwargs from MCP tool invocations
    
    * Fixes
    
    * Python: Fix WorkflowAgent to emit yield_output as agent response (#2866)
    
    * Fix WorkflowAgent to emit yield_output as agent response
    
    * use raw_representation
    
    * Raw representation handling
    
    * Python: Use agent description in HandoffBuilder auto-generated tools (#2713) (#2714)
    
    ## Summary
    Enhanced `HandoffBuilder._apply_auto_tools` to use the target agent's
    description when creating handoff tools, providing more informative tool
    descriptions for LLMs.
    
    ## Changes
    - Modified `_apply_auto_tools` to extract `description` from
      `AgentExecutor._agent` when available
    - Updated iteration to use `.items()` for more efficient dict traversal
    - Handoff tools now use agent descriptions instead of generic placeholders
    
    ## Example
    Before: "Handoff to the refund_agent agent."
    After: "You handle refund requests. Ask for order details and process refunds."
    
    ## Testing
    - All handoff tests pass (20/20)
    - No breaking changes to existing API
    
    Fixes #2713
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    
    * 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 middleware terminate flag to exit function calling loop immediately (#2868)
    
    * Fix middleware terminate flag to exit function calling loop immediately
    
    * Eliminating duck typing
    
    * Improve function exec result handling
    
    * Fix race condition
    
    * Fix mypy issues
    
    * Python: Fix context duplication in handoff workflows when restoring from checkpoint (#2867)
    
    * Fix context duplication in handoff workflows when restoring from checkpoint
    
    * Address Copilot PR review
    
    * .NET: Update to latest Azure.AI.*, OpenAI, and M.E.AI* (#2850)
    
    * Update to latest Azure.AI.*, OpenAI, and M.E.AI*
    
    Absorb breaking changes in Responses surface area
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/GettingStarted/AgentWithOpenAI/Agent_OpenAI_Step04_CreateFromOpenAIResponseClient/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Using patch to remove the model is necessary, updated the response client to actually use the the ForAgent
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Bump actions/download-artifact from 6 to 7 (#2862)
    
    Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
    - [Release notes](https://github.com/actions/download-artifact/releases)
    - [Commits](https://github.com/actions/download-artifact/compare/v6...v7)
    
    ---
    updated-dependencies:
    - dependency-name: actions/download-artifact
      dependency-version: '7'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump actions/cache from 4 to 5 (#2861)
    
    Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
    - [Release notes](https://github.com/actions/cache/releases)
    - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
    - [Commits](https://github.com/actions/cache/compare/v4...v5)
    
    ---
    updated-dependencies:
    - dependency-name: actions/cache
      dependency-version: '5'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump actions/upload-artifact from 5 to 6 (#2860)
    
    Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
    - [Release notes](https://github.com/actions/upload-artifact/releases)
    - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)
    
    ---
    updated-dependencies:
    - dependency-name: actions/upload-artifact
      dependency-version: '6'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Python : Ollama Connector for Agent Framework (#1104)
    
    * Initial Commit for Olama Connector
    
    * Added Olama Sample
    
    * Add Sample & Fixed Open Telemetry
    
    * Fixed Spelling from Olama to Ollama
    
    * remove"opentelemetry-semantic-conventions-ai ~=0.4.13" since its handled in a different pr
    
    * Added Tool Calling
    
    * Finalizing test cases
    
    * Adjust samples to be more reliable
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/pyproject.toml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/tests/test_ollama_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Improved Docstrings & Sample
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Integrate PR Feedback
    - Divided Streaming and Non-Streaming into independent Methods
    - Catch Ollama Validation Error
    - Add OTEL Provider Name
    - Checked Ollama Messages
    - Add Usage Statistics
    
    * Revert setting, so it can be none
    
    * Validate Message formatting between AF and Ollama
    
    * Catch Ollama Error and raise a ServiceResponse Error
    
    * Fix mypy error
    
    * remove .vscode comma
    
    * Add Reasoning support & adjust to new structure
    
    * Add Ollama Multimodality and Reasoning
    
    * Add test cases for reasoning
    
    * Add Tests for Error Handling in Ollama Client
    
    * Update python/samples/getting_started/multimodal_input/ollama_chat_multimodal.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Integrated Copilot Feedback
    
    * Implement first PR Feedback
    
    * Adjust Readme files for examples
    
    * Adjust argument passing via additional chat options
    
    * Implemented PR Feedback
    
    * Removing Ollama Package from Core and moving samples
    
    * Fix Link & Adding Samples to Main Sample Readme
    
    * Fixing Links in Readme
    
    * Moved Multimodal and Chat Example
    
    * Fixed Link in ChatClient to Ollama
    
    * Fix AgentFramework Links in Ollama Project
    
    * Fix observability breaking change
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Skip failing IT (#2904)
    
    * .NET: Cosmos DB UT Fast Skip (For Non-Configured Local envs) (#2906)
    
    * Cosmos DB UT Fast Skip (Non-Configured Local envs) + Long running UT skip in pipeline when no CosmosDB changes happened
    
    * Force a CosmosDB source code change to trigger the pipeline
    
    * Address possible string boolean mismatch
    
    * Add debug
    
    * Enabling emulator always when running IT
    
    * .NET: Add TTLs to durable agent sessions (#2679)
    
    * .NET: Add TTLs to durable agent sessions
    
    * Remove unnecessary async
    
    * PR feedback: clarify UTC
    
    * PR feedback: limit minimum signal delay to <= 5 minutes
    
    * PR feedback: Fix TTL disablement
    
    * Linter: use auto-property
    
    * Fix build break from OpenAI SDK change
    
    * Updated CHANGELOG.md
    
    * PR feedback
    
    * Reduce default TTL to 14 days to work around DTS bug
    
    * Python:  Update Mem0Provider to use v2 search API `filters` parameter (#2766)
    
    * short fix to move id parameters to filters object
    
    * added tests
    
    * small fix
    
    * mem0 dependency update
    
    * Updated package versions (#2913)
    
    * .NET: Switch to new "Run" method name. (#2843)
    
    * Switch to new "RunAgent" method name.
    
    * Try to disable false positive naming warning.
    
    * Add comment about disabled warnings.
    
    * Rename `RunAgent` to just `Run`.
    
    * Update CHANGELOG.
    
    * Python: Switch to new "run" method name. (#2890)
    
    * Switch to `run` method.
    
    * Add support for deprecated `run_agent`.
    
    * Fix entity method name.
    
    * Fix method name and improve tests.
    
    * Update comment.
    
    * Update Python CHANGELOG.
    
    * [BREAKING] Python: Add factory pattern to handoff orchestration builder (#2844)
    
    * WIP: Factory pattern to handoff
    
    * Add factory pattern to concurrent orchestration builder; Next: tests and sample verification
    
    * Add tests and improve comments
    
    * Fix mypy
    
    * Simplify handoff_simple.py
    
    * Simplify handoff_autonoumous.py and bug fix
    
    * Update readme
    
    * Address Copilot comments
    
    * Python: Flow custom kwargs to agents via Workflow SharedState (#2894)
    
    * Flow custom kwargs to agents via SharedState
    
    * Address Copilot feedback
    
    * Improve sample typing
    
    * Fix test
    
    * Fix Pydantic error when using Literal type for tool params (#2893)
    
    * Updated Ollama package version (#2920)
    
    * Python: Azure AI Agent with Bing Grounding Citations Sample (#2892)
    
    * bing grounding sample with citations
    
    * small fix
    
    * fix
    
    * .NET: Make DelegatingAIAgent abstract (#2797)
    
    * Initial plan
    
    * Make DelegatingAIAgent abstract
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Added additional arguments for Azure AI agent (#2922)
    
    * Python: Correction of MCP image type conversion in  _mcp.py (#2901)
    
    * Correction of MCP image type conversion in  _mcp.py
    
    * Added a new overload to the init function of the DataContent() type of the Agent Framework, edited the test case to correctly test the usage of the data and uri fields while using DataContent()
    
    * Fixed tests related to the changes of the DataContent type, added testing for both string and byte representations
    
    * Pass kwargs into subworkflows (#2923)
    
    * Python: Move ollama samples to samples getting started dir (#2921)
    
    * Move ollama samples to samples getting started dir
    
    * Address feedback
    
    * Python: fix: correct BadRequestError when using Pydantic model in response_fo… (#1843)
    
    * fix: correct BadRequestError when using Pydantic model in response_format
    
    * Fix lint
    
    ---------
    
    Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
    
    * .NET: [Breaking] Delete display name property (#2758)
    
    * delete the AIAgent.DisplayName property
    
    * use agent name as a first value for activity display name
    
    * Update dotnet/src/Microsoft.Agents.AI.Workflows/Specialized/HandoffAgentExecutor.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: cleanup and refactoring of chat clients (#2937)
    
    * refactoring and unifying naming schemes of internal methods of chat clients
    
    * set tool_choice to auto
    
    * fix for mypy
    
    * added note on naming and fix #2951
    
    * fix responses
    
    * fixes in azure ai agents client
    
    * Python: Workflow add option to visualize internal executors (#2917)
    
    * Workflow add option to visualize internal executors
    
    * Address Copilot comments
    
    * Python: Fixes Run ID and Thread ID casing to align with AG-UI Typescript SDK (#2948)
    
    * added camelCase input to run id and thread id aligning with @ag-ui/core
    
    * fixed per copilot suggestions
    
    * Python: Add workflow cancellation sample (#2732)
    
    * Add workflow cancellation sample
    
    Add sample demonstrating how to cancel a running workflow using asyncio
    tasks. Shows both cancellation mid-execution and normal completion paths.
    Useful for implementing timeouts, graceful shutdown, or A2A executors.
    
    * update docstring
    
    * .NET: Update Anthropic package to version 12.0.0 (#2914)
    
    * Initial plan
    
    * Update Anthropic package to version 12.0.0
    
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    
    * Python: Add Azure Managed Redis Support with Credential Provider (#2887)
    
    * azure redis support
    
    * small fixes
    
    * azure managed redis sample
    
    * fixes
    
    * Bump CommunityToolkit.Aspire.OllamaSharp from 13.0.0-beta.440 to 13.0.0 (#2856)
    
    ---
    updated-dependencies:
    - dependency-name: CommunityToolkit.Aspire.OllamaSharp
      dependency-version: 13.0.0
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.4.11 to 4.0.5 (#2853)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    
    * Bump Azure.AI.AgentServer.AgentFramework from 1.0.0-beta.4 to 1.0.0-beta.5 (#2854)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Python: Fix WorkflowAgent event handling and kwargs forwarding (#2946)
    
    * Fix kwargs propagation through workflow.as_agent()
    
    * Fix WorkflowAgent to respect AgentExecutor output_response setting
    
    * .NET: Use GrpcEntityRunner instead of TaskEntityDispatcher (#2759)
    
    * Use GrpcEntityRunner instead of TaskEntityDispatcher
    
    * Pin to Durable worker 1.11.0
    
    * Set the invocation result
    
    * Update all Durable packages
    
    * Update changelog, rename dispatcher to encondedEntityRequest
    
    * Python: Bump Py version to 1.0.0b251218 for a release. Update CHANGELOG (#2968)
    
    * Bump Py version to 1.0.0b251218 for a release. Update CHANGELOG
    
    * update lock
    
    * Fix formatting
    
    * Fix ChatKit typing
    
    * Python: Introducing Foundry Local Chat Clients (#2915)
    
    * redo foundry local chat client
    
    * fix mypy and spelling
    
    * better docstring, updated sample
    
    * fixed tests and added tests
    
    * small sample update
    
    * Updated package versions (#2978)
    
    * Python: Added GitHub MCP sample with PAT (#2967)
    
    * added github mcp sample with PAT
    
    * addressed copilot fixes
    
    * env fix
    
    * Python: Preserve reasoning blocks with OpenRouter (#2950)
    
    * Preserve reasoning blocks with OpenRouter
    
    * Put encrypted reasoning in TextReasoningContent
    
    * Remove unneccessary change
    
    * Fix docs
    
    * Support streaming
    
    * Fix handling None in TextReasoningContent.text
    
    * Python: Added response.created and response.in_progress event process to OpenAIBaseResponseClient (#2975)
    
    * added response.created and response.in_progress to include response.id
    
    * better doc string
    
    * added tests for the new streaming event types
    
    * Python: Introducing support for Bedrock-hosted models (Anthropic, Cohere, etc.) (#2610)
    
    * Pushing the bedrock related changes to the new branch after addressing the review comments
    
    * 2524 Addressed the second round review comments
    
    * 2524 Addressed few more minor comments on the PR
    
    * resolving the merge conflict
    
    * 2524 resolved the uv.lock conflicts
    
    * 2524 addressed more comments
    
    * 2524 removed the print statement to fix the checks failure
    
    * 2524 resolved the CI failure issues
    
    * 2524 fixing the CI breaks
    
    * 2524 Addressed the review comment
    
    * 2524 resolved conflict
    
    ---------
    
    Co-authored-by: Sunil Dutta <sunil.dutta@penske.com>
    Co-authored-by: budgetboardingai <apurva.sharma31@gmail.com>
    
    * .NET: [Durable Agents] Reliable streaming sample (#2942)
    
    * .NET: [Durable Agents] Reliable streaming sample
    
    * Add automated validation for new sample
    
    * Address Copilot PR feedback
    
    * Fix typo in README.md about agent definitions (#2634)
    
    * Fix typo in README.md about agent definitions
    
    * Update agent-samples/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: latency improvements (#3014)
    
    * latency improvements
    
    * fixed mypy, added coding standards and instructions
    
    * slight logic improvement
    
    * Python: Updated package versions (#3024)
    
    * Updated package versions
    
    * Updated changelog
    
    * Python: add powerfx safe mode (#3028)
    
    * add powerfx safe mode
    
    * improved docstring and aligned env_file loading
    
    * ensured test uses reset
    
    * .NET: [Breaking] Introduce RunCoreAsync/RunCoreStreamingAsync delegation pattern in AIAgent (#2749)
    
    * Initial plan
    
    * Refactor AIAgent: Make RunAsync and RunStreamingAsync non-abstract, add RunCoreAsync and RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix infinite recursion in test implementations
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Make RunAsync and RunStreamingAsync non-virtual as requested
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix DelegatingAIAgent subclasses to use RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix XML documentation references in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Restore <see cref> tags with proper qualified signatures in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Rollback unnecessary XML documentation changes in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Remove pragma and update crefs to RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix EntityAgentWrapper to call base.RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * fix compilation issues
    
    * fix compilatio issue
    
    * fix tests
    
    * fix unit tests
    
    * fix unit test
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <sergemenshikh@gmail.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * add issue template and additional labeling (#3006)
    
    * fix and extra int test (#3037)
    
    * .NET: [BREAKING] Refactor ChatMessageStore methods to be similar to AIContextProvider and add filtering support (#2604)
    
    * Refactor ChatMessageStore methods to be similar to AIContextProvider
    
    * Fix file encoding
    
    * Ensure that AIContextProvider messages area also persisted.
    
    * Update formatting and seal context classes
    
    * Improve formatting
    
    * Remove optional messages from constructor and add unit test
    
    * Add ChatMessageStore filtering via a decorator
    
    * Update sample and cosmos message store to store AIContextProvider messages in right order. Fix unit tests.
    
    * Update Workflowmessage store to use aicontext provider messages.
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestions from code review
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Improve xml docs messaging
    
    * Address code review comments.
    
    * Also notify message store on failure
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * [BREAKING] Remove unused AgentThreadMetadata (#3067)
    
    * Remove unused AgentThreadMetadata
    
    * Update DurableTask Changelog
    
    * Python: Fix AzureAIClient failure when conversation history contains assistant messages (#3076)
    
    * Fix AzureAIClient failure when conversation history contains assistant messages
    
    * Address PR review feedback: improve docstring and test assertions
    
    * Remove redundant cast
    
    * Fix: Update OTLP exporter protocol conditions (#3070)
    
    * Python: Fix ExecutorInvokedEvent and ExecutorCompletedEvent observability data (#3090)
    
    * Fix ExecutorInvokedEvent.data mutation bug
    
    * Fix bug related to not yielding output type
    
    * .NET: Seal ChatClientAgentThread (#2842)
    
    * Initial plan
    
    * Seal ChatClientAgentThread class
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix broken strands urls. (#3102)
    
    * Fix broken strands urls.
    
    * Fix typos
    
    * .NET: Fix message ordering inconsistency when using AIContextProvider (#2659)
    
    * Initial plan
    
    * Fix message ordering inconsistency when using AIContextProvider
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Revert to original message ordering: Input, AIContextProvider, Response
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Reorder messages to ChatClient to match MessageStore order: Existing, Input, AIContextProvider
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Remove redundant test methods as existing tests already verify the behavior
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * fix: tool_choice parameter not being honored when passed to agent.run() (#3095)
    
    * sharepoint sample fix (#3108)
    
    * Bump versions to 1.0.0b260106 for a release. Update CHANGELOG.md (#3109)
    
    * Bump Bedrock version to latest (#3110)
    
    * Python: Fix MCP tool result serialization for list[TextContent] (#2523)
    
    * Fix MCP tool result serialization for list[TextContent]
    
    When MCP tools return results containing list[TextContent], they were
    incorrectly serialized to object repr strings like:
    '[<agent_framework._types.TextContent object at 0x...>]'
    
    This fix properly extracts text content from list items by:
    1. Checking if items have a 'text' attribute (TextContent)
    2. Using model_dump() for items that support it
    3. Falling back to str() for other types
    4. Joining single items as plain text, multiple items as JSON array
    
    Fixes #2509
    
    * Address PR review feedback for MCP tool result serialization
    
    - Extract serialize_content_result() to shared _utils.py
    - Fix logic: use texts[0] instead of join for single item
    - Add type annotation: texts: list[str] = []
    - Return empty string for empty list instead of '[]'
    - Move import json to file top level
    - Add comprehensive unit tests for serialization
    
    * Address PR review feedback: fix type checking and double serialization
    
    - Add isinstance(item.text, str) check to ensure text attribute is a string
    - Fix double-serialization issue by keeping model_dump results as dicts
      until final json.dumps (removes escaped JSON strings in arrays)
    - Improve docstring with detailed return value documentation
    - Add test for non-string text attribute handling
    - Add tests for list type tool results in _events.py path
    
    * Simplify PR: minimal changes to fix MCP tool result serialization
    
    Addresses reviewer feedback about excessive refactoring:
    - Reset _events.py to original structure
    - Only add import and use serialize_content_result in one location
    - All review comments addressed in serialize_content_result():
      - Added isinstance(item.text, str) check
      - Use model_dump(mode="json") to avoid double-serialization
      - Improved docstring with explicit return value documentation
      - Empty list returns "" instead of "[]"
    
    * Refactor: Move MCP TextContent serialization to core prepare_function_call_results
    
    Per reviewer feedback, moved the TextContent serialization logic from
    ag-ui's serialize_content_result to the core package's
    prepare_function_call_results function.
    
    Changes:
    - Added handling for objects with 'text' attribute (like MCP TextContent)
      in _prepare_function_call_results_as_dumpable
    - Removed serialize_content_result from ag-ui/_utils.py
    - Updated _events.py and _message_adapters.py to use
      prepare_function_call_results from core package
    - Updated tests to match the core function's behavior
    
    * Fix failing tests for prepare_function_call_results behavior
    
    - test_tool_result_with_none: Update expected value to 'null' (JSON serialization of None)
    - test_tool_result_with_model_dump_objects: Use Pydantic BaseModel instead of plain class
    
    * Fix B903 linter error: Convert MockTextContent to dataclass
    
    The ruff linter was reporting B903 (class could be dataclass or namedtuple)
    for the MockTextContent test helper classes. This commit converts them to
    dataclasses to satisfy the linter check.
    
    * Python: Improve DevUI, add Context Inspector view as new tab under traces (#2742)
    
    * Improve DevUI, add Context Inspector view as new tab under traces
    
    * fix mypy errors
    
    * fix: Handle stale MCP connections in DevUI executor
    
    MCP tools can become stale when HTTP streaming responses end - the underlying
    stdio streams close but `is_connected` remains True. This causes subsequent
    requests to fail with `ClosedResourceError`.
    
    Add `_ensure_mcp_connections()` to detect and reconnect stale MCP tools before
    agent execution. This is a workaround for an upstream Agent Framework issue
    where connection state isn't properly tracked.
    
    Fixes MCP tools failing on second HTTP request in DevUI.
    
    fixes  #1476 #1515 #2865
    
    * fix #1572 report import dependency errors more clearly
    
    * Ensure there is streaming toggle where users can select streaming vs non streaming mode in devui . Fixes .NET: [Python] DevUI tool call rendering in non-streaming mode?
    
    * remove unused dead code
    
    * improve ux - workflows with agents show a chat component in execution timelien, also ensure magentic final output shows correctly
    
    * update ui build
    
    * update devui to use instrumentation instead of tracing, other instrumentation and type/instance check fixes
    
    * .NET: Seal factory contexts and add non JSO deserialize overloads (#3066)
    
    * Seal factory contexts and add non JSO deserialize overloads
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Enable blank issues in issue template configuration
    
    Need to re-enable creating blank issues
    
    * updated templates (#3106)
    
    * updated templates
    
    * enabled blank and fixed triage
    
    * made language optional and moved to the bottom for features
    
    * Python: Streaming sample for azurefunctions (#3057)
    
    * Streaming sample for azurefunctions
    
    * Fixed links and sample name
    
    * Addressed feedback
    
    * Addressed feedback
    
    * Fixed integration tests
    
    * Updated test
    
    * Python: fix(azure-ai): Fix response_format handling for structured outputs (#3114)
    
    * fix(azure-ai): read response_format from chat_options instead of run_options
    
    * refactor: use explicit None checks for response_format
    
    * Fix mypy error
    
    * Mypy fix
    
    * Python: Bump python version to 1.0.0b260107 for a release (#3128)
    
    * Bump python version to 1.0.0b260107 for a release
    
    * Update changelog
    
    * Make A2AAgent public, so that it's concrete implementation methods can be used. (#3119)
    
    * .NET: Map additional props <-> A2A metadata (#3137)
    
    * map additional props from agent run options to a2a request metadata
    
    * small touches
    
    * add unit tests for new extension methods
    
    * Sort using
    
    * add unit test
    
    * add additiona unit tests
    
    * special case json element to avoid unnecessary serialization
    
    * Python: Fix Anthropic streaming response bugs (#3141)
    
    * test commit identity
    
    * fix(anthropic): fix raw_representation and finish_reason in streaming
    
    * lint fix
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.5 to 4.0.5.1 (#2994)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.5.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Bump Anthropic from 12.0.0 to 12.0.1 (#2993)
    
    ---
    updated-dependencies:
    - dependency-name: Anthropic
      dependency-version: 12.0.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * .NET: [Breaking] Prevent loss of input messages & streamed updates when resuming streaming (#2748)
    
    * save input messages and stream updates to the continuation token to be able to use them in the last successful stream resumption call.
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgent_BackgroundResponsesTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * fix typo
    
    * init continuation token from chat response
    
    * remove unnecessary types for source generation
    
    * remove check for continuation token passed at initial run
    
    * remove check for continuation token pass at initial run
    
    * centralize continuation token parsing
    
    * update xml comments
    
    * use readonly collection instead of enumerable
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET: fix: Expose WorkflowErrorEvent as ErrorContent (#2762)
    
    * fix: Expose WorkflowErrorEvent as ErrorContent
    
    When hosted using .AsAgent(), Workflows were not exposing inner errors coming as Exceptions (through the WorkflowErrorEvent)
    
    The fix is to convert their message to an ErrorContent on the way out, rather than rely on the default "empty update" to collect the raw event.
    
    * feat: Add a way to show/suppress exception information
    
    * Bump Microsoft.Agents.AI.Workflows from 1.0.0-preview.251125.1 to 1.0.0-preview.251219.1 (#2997)
    
    ---
    updated-dependencies:
    - dependency-name: Microsoft.Agents.AI.Workflows
      dependency-version: 1.0.0-preview.251219.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * .NET: Add Run overloads to expose ChatClientAgentRunOptions in IntelliSense (#3115)
    
    * Initial plan
    
    * Add ChatClientAgentExtensions for improved discoverability of ChatClientAgentRunOptions
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Address code review feedback - use collection expression syntax
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Apply suggestion from @westey-m
    
    * Fix issues with Copilot implementation
    
    * Add additional tests for structured output overloads.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Python: Add tool call/result content types and update connectors and samples (#2971)
    
    * Add new AI content types and image tool support
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Add Python content types for tool calls/results and image generation tool support
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Address review feedback for tool content and samples
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Tighten image generation typing and sample tools list
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Align image generation output typing
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Handle MCP naming, image options mapping, and connector tool content
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Allow MCP call in function approval request
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Remove raw image_generation tool remapping
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Restore Anthropic tool_use to function calls unless code execution
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Fix lint issues for hosted file docstring and MCP parsing
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Import ChatResponse types in Anthropic client
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Fix Anthropics citation type imports and MCP typing for handoff/tools
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Skip lightning tests without agentlightning and fix function call import
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * fix lint on lab package
    
    * rebuilt anthropic parsing
    
    * redid anthropic parsing
    
    * typo
    
    * updated parsing and added missing docstrings
    
    * fix tests
    
    * mypy fixes
    
    * second mypy fix
    
    * add new class to other samples
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <github@vanvalkenburg.eu>
    
    * Bump Google.GenAI from 0.6.0 to 0.9.0 (#2995)
    
    ---
    updated-dependencies:
    - dependency-name: Google.GenAI
      dependency-version: 0.9.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Bump js-yaml from 4.1.0 to 4.1.1 in /python/packages/devui/frontend (#3123)
    
    Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
    - [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)
    
    ---
    updated-dependencies:
    - dependency-name: js-yaml
      dependency-version: 4.1.1
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Updated package versions (#3144)
    
    * .NET: Bump Microsoft.Agents.AI.OpenAI and Microsoft.Extensions.AI.OpenAI (#2996)
    
    * Bump Microsoft.Agents.AI.OpenAI and Microsoft.Extensions.AI.OpenAI
    
    Bumps Microsoft.Agents.AI.OpenAI from 1.0.0-preview.251125.1 to 1.0.0-preview.251219.1
    Bumps Microsoft.Extensions.AI.OpenAI from 10.1.0-preview.1.25608.1 to 10.1.1-preview.1.25612.2
    
    ---
    updated-dependencies:
    - dependency-name: Microsoft.Agents.AI.OpenAI
      dependency-version: 1.0.0-preview.251219.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Microsoft.Extensions.AI.OpenAI
      dependency-version: 10.1.1-preview.1.25612.2
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Microsoft.Agents.AI.OpenAI
      dependency-version: 1.0.0-preview.251219.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Microsoft.Extensions.AI.OpenAI
      dependency-version: 10.1.1-preview.1.25612.2
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    
    * Fixed samples
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Python: fix(ag-ui): Execute tools with approval_mode, fix shared state, code cleanup  (#3079)
    
    * fix(ag-ui): execute tools after approval in human-in-the-loop flow
    
    * Fix shared state bug
    
    * Bug fix finalized
    
    * Refactoring to clean up code
    
    * Code cleanup
    
    * More fixes
    
    * More code cleanup
    
    * Add version detection in __init__.py to ruff ignore list
    
    * Track agent name with updates for workflow agent (#3146)
    
    * Python: Fix AzureAIClient tool call bug for AG-UI use (#3148)
    
    * Fiz AzureAIClient tool call bug
    
    * Address copilot feedback
    
    * Python: multiple bug fixes (#3150)
    
    * fix Python: kwargs are not passed to _prepare_thread_and_messages in ChatAgent.run
    Fixes #3118
    
    * fix Python: [Bug]: model_id versus model_deployment_name is confusing in Azure AI Agents
    Fixes #3147
    
    * add types
    
    * fixed type and docstring
    
    * fix(anthropic): fix duplicate ToolCallStartEvent in streaming tool calls (#3051)
    
    When processing `input_json_delta` events, the Anthropic client was
    passing the tool name from the previous `tool_use` event. This caused
    ag-ui's `_handle_function_call_content` to emit a `ToolCallStartEvent`
    for every streaming chunk (since it triggers on `if content.name:`).
    
    This fix changes the behavior to pass an empty string for `name` in
    `input_json_delta` events, matching OpenAI's behavior where streaming
    argument chunks have `name=""`. The initial `tool_use` event still
    provides the tool name, so only one `ToolCallStartEvent` is emitted.
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    
    * .NET: [BREAKING] Change GetNewThread and DeserializeThread to async (#3152)
    
    * Change GetNewThread and DeserializeThread plus ChatMessageStore and AIContextProvider Factories to async
    
    * Merge fixes
    
    * Fix Ollama model env var in documentation (#3156)
    
    Signed-off-by: Dina Suehiro Jones <dina.s.jones@intel.com>
    
    * Python: Add Pydantic request model and OpenAPI tags support to AG-UI FastAPI endpoint (#2522)
    
    * feat(ag-ui): Add Pydantic request model and OpenAPI tags support
    
    - Add AGUIRequest Pydantic model in _types.py with field descriptions
    - Update add_agent_framework_fastapi_endpoint() to accept tags parameter
    - Use AGUIRequest model for automatic validation and OpenAPI schema generation
    - Export AGUIRequest and DEFAULT_TAGS in __init__.py
    - Update test_endpoint.py to expect 422 for invalid requests
    - Add tests for OpenAPI schema, default tags, custom tags, and validation
    
    Benefits:
    - Better API documentation with complete request schema in Swagger UI
    - Automatic request validation with Pydantic
    - Organized endpoints under 'AG-UI' tag instead of 'default'
    - Improved developer experience and type safety
    
    Fixes #<issue-number>
    
    * test(ag-ui): Add test for internal error handling to achieve 100% coverage
    
    - Add test_endpoint_internal_error_handling() to cover exception handling code
    - Mock copy.deepcopy to simulate internal error during default_state processing
    - Add type: ignore for FastAPI tags parameter (known pyright compatibility issue)
    - Achieves 100% test coverage for _endpoint.py (previously missing lines 103-105)
    
    * .NET: Improve resolving `AITool` from DI (#3175)
    
    * remove localagenttoolregistry
    
    * also give the factory method API
    
    * Python: Fix MCPStreamableHTTPTool to use new streamable_http_client API (#3088)
    
    * Fix MCPStreamableHTTPTool to use new streamable_http_client API with proper httpx client cleanup
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Update docstring to reflect new streamable_http_client API usage
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Refactor MCPStreamableHTTPTool to accept optional http_client parameter and delegate client creation to streamable_http_client
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Update mcp package minimum version to 1.24.0 for streamable_http_client API support
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Fix critical bugs: apply headers/timeout/sse_read_timeout when creating httpx client, add version constraint <2, and properly manage client lifecycle
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Simplify implementation: remove headers/timeout/sse_read_timeout params, remove kwargs, remove close() override per feedback
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Add back **kwargs parameter for backward compatibility (accepted but not used)
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Remove unused httpx import from test file
    
    Note: The uv.lock file needs to be updated with 'uv sync' to reflect the mcp version constraint change (>=1.24.0,<2)
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * cicd fixes
    
    * udpated samples with headers examples
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <github@vanvalkenburg.eu>
    
    * azureai direct a2a endpoint support (#3127)
    
    * 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: MCP Improvements: improved connection loss behavior, pagination for loading and a param to control representation (#3154)
    
    * pagination support (#2848) added a parse_tool_result param and connection loss (#2884)
    
    * fix #3153
    
    * improved connection handling
    
    * improved logic
    
    * Python: Add declarative workflow runtime (#2815)
    
    * Further support for declarative python workflows
    
    * Add tests. Clean up for typing and formatting
    
    * Improvements and cleanup
    
    * Typing cleanup. Improve docstrings
    
    * Proper code in docstrings
    
    * Fix malformed code-block directive in docstring
    
    * Remove dead links
    
    * PR feedback
    
    * Address PR feedback
    
    * Address PR feedback
    
    * Remove sl
    
    * Update devui frontend
    
    * More cleanup
    
    * Fix uv lock
    
    * Skip Py 3.14 tests as powerfx doesn't support it
    
    * Fix mypy error
    
    * Fix for tool calls
    
    * Removed stale docstring
    
    * Fix lint
    
    * Standardize on .NET namespaces. Revert DevUI changes (bring in later)
    
    * Implement remaining items for Python declarative support to match dotnet
    
    * point URL to agent, not to agentcard (#3176)
    
    * Python: [BREAKING]: Introducing Options as TypedDict and Generic (#3140)
    
    * WIP typeddict for options
    
    * updated all clients and ChatAgents
    
    * updated everything
    
    * added ADR
    
    * fix mypy
    
    * proper typevar imports
    
    * fixed import
    
    * fixed other imports
    
    * slight update in the sample
    
    * updated from feedback
    
    * fixes
    
    * fixed missing covariants and test fixes
    
    * fixed typing
    
    * updated anthropic thinking config
    
    * ruff fixes
    
    * fixed int tests
    
    * fix tests and mypy
    
    * updated integration tests
    
    * updated docstring and test fix
    
    * improved options handling in obser
    
    * mypy fix
    
    * updated a host of integration tests
    
    * fix tests
    
    * bedrock fix
    
    * [BREAKING] Python: Refactor orchestrations (#3023)
    
    * Group chat refactoring Part 1; Next: HIL and handoff
    
    * Add agent approval flow; next samples
    
    * WIP: samples
    
    * WIP: HIL samples
    
    * Group chat HIL working; next: handoff
    
    * Fix group chat tool approval sample
    
    * WIP: refactor handoff; next handoff handling
    
    * Handoff done; next handoff samples and concurrent and sequential
    
    * Handoff samples, concurrent, and sequential done; next Magentic
    
    * WIP: magentic; next test with samples + HIL
    
    * Magentic Working; next fix all samples and tests
    
    * Fix handoff samples; next tests
    
    * WIP: fixing tests; some orchestration as agent samples are failing
    
    * Group chat unit tests done
    
    * Handoff  unit tests done
    
    * Remove old orchestration_request_info and fix related tests
    
    * Magentic unit tests done
    
    * Fix samples
    
    * Fix test
    
    * Fix test 2
    
    * mypy
    
    * Address comments
    
    * Update readme
    
    * Address comments
    
    * Address comments 2
    
    * Replace display name
    
    * Python: ADR for create/get agent API (#2618)
    
    * ADR for create/get agent API
    
    * Updated ADR with implementation options
    
    * Small updates
    
    * Updated decision outcome section
    
    * Updated broken links
    
    * Small updates
    
    * Fixed merge conflicts
    
    * Small fix
    
    * Updated decision outcome section
    
    * Small fixes
    
    * Updated provider naming based on client SDK
    
    * Add ignored parameter for CodeQL in workflow (#3204)
    
    * Implement IReadOnlyList on InMemoryChatMessageStore (#3205)
    
    * .NET: Make ChatMessageStore and AIContextProvider context props settable (#3196)
    
    * Make ChatMessageStore and AIContextProvider context props setable
    
    * Add validation to preserve non-null requirement of certain properties.
    
    * Fix broken tests.
    
    * Python: Add dependencies param to ag-ui FastAPI endpoint (#3191)
    
    * Add dependencies param to ag-ui FastAPI endpoint
    
    * Address Copilot feedback
    
    * renamed all (#3207)
    
    * Python: ADR for simplified get response (#3098)
    
    * ADR for simplified get response
    
    * updated some language, added agent option and code comparison
    
    * small update in sample
    
    * added workflows and expanded some points
    
    * changed decision and number
    
    * updated with stream=False default
    
    * .NET: [Breaking] Rename`AgentRunResponse` and `AgentRunResponseUpdate` classes (#3197)
    
    * rename AgentRunResponse and AgentRunResponseUpdate classes - part1
    
    * rename varialbles, parameters, methods and tests
    
    * rollback unnecessary changes
    
    * .NET: [Breaking] Rename AgentRunResponseEvent and AgentRunUpdateEvent classes (#3214)
    
    * rename AgentRunResponseEvent and AgentRunUpdateEvent classes
    
    * rollback unnecessary changes
    
    * Python: Create/Get Agent API for Azure V2 (#3059)
    
    * Added get_agent method to Azure AI V2
    
    * Small fixes
    
    * Small fix
    
    * Removed AzureAIAgentProvider
    
    * Added create_agent method
    
    * Small fixes
    
    * Fixed code interpreter tool mapping
    
    * Added agent provider for V2 client
    
    * Updated response format handling
    
    * Added provider example
    
    * Fixed errors
    
    * Update python/samples/getting_started/agents/azure_ai/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Small fix
    
    * Updates from merge
    
    * Resolved comments
    
    * Resolved comments
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: Add more specific exceptions to Workflow (#3188)
    
    * Add more specifc workflow exceptions
    
    * Fix tests
    
    * AI comments
    
    * Misc
    
    * Python: Added AzureAI sample for downloading code interpreter generated files (#3189)
    
    * added azure ai code interpreter file download sample
    
    * copilot fix suggestions
    
    * function name fixes + readme update
    
    * small fix
    
    * update package versions (#3223)
    
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Python: fix(core): correct FunctionResultContent ordering in WorkflowAgent.merge_updates (#3168)
    
    * fix(core): simplify FunctionResultContent ordering in WorkflowAgent.merge_updates
    
    * improve comment
    
    * Fix name
    
    * fix(workflows): rename WorkflowOutputEvent.source_executor_id to executor_id for API consistency (#3166)
    
    * Python: fix(ag-ui): add MCP tool support for AG-UI approval flows (#3212)
    
    * add MCP tool support for AG-UI approval flows
    
    * use attribute in place of property
    
    * Python: Properly configure structured outputs based on new options dict (#3213)
    
    * Properly configure structured outputs based on new options dict
    
    * Fix mypy
    
    * .NET: Merge AgentRunOptions.AdditionalProperties into ChatOptions.AdditionalProperties (#3184)
    
    * Merge AgentRunOptions.AdditionalProperties into ChatOptions.AdditionalProperties
    
    * Fix namespace and typo.
    
    * .NET: Update Google.GenAI to 0.11.0 and remove polyfill implementations (#3232)
    
    * Initial plan
    
    * Update Google.GenAI to 0.11.0 and remove polyfill files
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * .NET: [BREAKING] Renamed CreateAIAgent/GetAIAgent to AsAIAgent (#3222)
    
    * Renamed chat client extension method
    
    * Additional renaming
    
    * Updated documentation
    
    * Fixed tests
    
    * Small fix
    
    * Small fix
    
    * Updated DurableAIAgent and fixed integration tests (#3241)
    
    * Python: Create/Get Agent API for Azure V1 (#3192)
    
    * Added provider implementation for Azure AI V1
    
    * Small fixes
    
    * Fixed OpenAPI example
    
    * Fixed local MCP example
    
    * Fixed hosted MCP example
    
    * Fixed file search sample
    
    * Small fixes
    
    * Resolved comments
    
    * Doc updates
    
    * Bump azure-core from 1.37.0 to 1.38.0 in /python (#3209)
    
    Bumps [azure-core](https://github.com/Azure/azure-sdk-for-python) from 1.37.0 to 1.38.0.
    - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
    - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-core_1.37.0...azure-core_1.38.0)
    
    ---
    updated-dependencies:
    - dependency-name: azure-core
      dependency-version: 1.38.0
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Python: Create/Get Agent API for OpenAI Assistants (#3208)
    
    * Added provider implementation
    
    * Added example with response format
    
    * Small improvements
    
    * Python: (AG-UI) Support service-managed thread on AG-UI  (#3136)
    
    * added service thread support
    
    * set service_thread_id to only supplied_thread_id
    
    * uses raw_representation to extract the conversation_id
    
    * removed accidental edit
    
    * updated test to use raw_representation
    
    * resolves copilot review feedback
    
    * revert back StubAgent, since not used
    
    * removed relative module import
    
    * removed hasattr check per PR feedback
    
    * Create/Get Agent API - fixes and example improvements (#3246)
    
    * Fix merge conflicts
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Signed-off-by: Dina Suehiro Jones <dina.s.jones@intel.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    Co-authored-by: Kurt <65111699+q33566@users.noreply.github.com>
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    Co-authored-by: Korolev Dmitry <deagle.gross@gmail.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Jose Luis Latorre Millas <joslat@gmail.com>
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Richard Ortega <richardjortega@gmail.com>
    Co-authored-by: 刘邦学AI <lbbniu@gmail.com>
    Co-authored-by: Stephen Toub <stoub@microsoft.com>
    Co-authored-by: Nico Möller <nkm-moeller@mail.de>
    Co-authored-by: Chris Gillum <cgillum@microsoft.com>
    Co-authored-by: Giles Odigwe <79032838+giles17@users.noreply.github.com>
    Co-authored-by: Phillip Hoff <phillip.hoff@gmail.com>
    Co-authored-by: Ege Ozan Özyedek <36128615+egeozanozyedek@users.noreply.github.com>
    Co-authored-by: samueljohnsiby <66901393+samueljohnsiby@users.noreply.github.com>
    Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
    Co-authored-by: Hao Luo <338265+howlowck@users.noreply.github.com>
    Co-authored-by: Victor Dibia <chuvidi2003@gmail.com>
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    Co-authored-by: Jacob Viau <javia@microsoft.com>
    Co-authored-by: SuperKenVery <39673849+SuperKenVery@users.noreply.github.com>
    Co-authored-by: Sunil Dutta <dutta.2003@gmail.com>
    Co-authored-by: Sunil Dutta <sunil.dutta@penske.com>
    Co-authored-by: budgetboardingai <apurva.sharma31@gmail.com>
    Co-authored-by: Syrine Chelly <62653967+SyChell@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <sergemenshikh@gmail.com>
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
    Co-authored-by: takanori-terai <123897708+takanori-terai@users.noreply.github.com>
    Co-authored-by: claude89757 <138977524+claude89757@users.noreply.github.com>
    Co-authored-by: Gavin Aguiar <80794152+gavin-aguiar@users.noreply.github.com>
    Co-authored-by: Sukeesh <vsukeeshbabu@gmail.com>
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <github@vanvalkenburg.eu>
    Co-authored-by: Ao Chen <chenao3220@gmail.com>
    Co-authored-by: Dina Suehiro Jones <dina.s.jones@intel.com>
    
    * Python: Add integration tests for durabletask package (#3317)
    
    * Add integration tests
    
    * Fix flaky test
    
    * Fix env viz
    
    * Fix tests and address feedback
    
    * Fix imports for durabletask (#3345)
    
    * .NET: Python: Merge `main` into `feature-durabletask` branch (#3385)
    
    * Python: Add factory pattern to concurrent orchestration builder (#2738)
    
    * Add factory pattern to concurrent orchestration builder
    
    * Update readme
    
    * Address AI comments
    
    * Fix unit tests
    
    * Fix import
    
    * Prevent multiple calls to set participants or factories
    
    * Add comments
    
    * Mitigate warnings
    
    * Fix mypy
    
    * Address comments
    
    * Address Copilot comments
    
    * Fix tests
    
    * Python: fix: GroupChat ManagerSelectionResponse JSON Schema for OpenAI Structured Outpu… (#2750)
    
    * fix: ManagerSelectionResponse JSON Schema for OpenAI Structured Output Strict Mode
    
    * refactor: install pre-commit then commit again
    
    * Capture file IDs from code interpreter in streaming responses (#2741)
    
    * .NET: [BREAKING] Prevent nulls in AIAgent property (#2719)
    
    * prevent nulls in AIAgent property
    
    * address feedback
    
    * code ql sm04598 (#2723)
    
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    
    * .NET: Add Conversation State Sample (Step05) (#2697)
    
    * Initial plan
    
    * Add Agent_OpenAI_Step05_Conversation sample for conversation state management
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Update Program.cs comment to accurately describe the sample
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Update the code to use the ConversationClient more in line with the samples in OpenAI
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Changing sample to use ChatClientAgent and conversationId in GetNewThread
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.4.7 to 4.0.4.11 (#2777)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.4.11
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump Azure.Identity from 1.17.0 to 1.17.1 (#2780)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.Identity
      dependency-version: 1.17.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump Azure.AI.AgentServer.AgentFramework from 1.0.0-beta.4 to 1.0.0-beta.5 (#2778)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Python: added more complete parsing for mcp tool arguments (#2756)
    
    * added more complete parsing for mcp tool arguments
    
    * fixed mypy
    
    * added nonlocal model counter, and some fixes
    
    * fixes in naming logic
    
    * extracted json parsing function, added parametrized test and checked coverage
    
    * Python: Updated package versions (#2784)
    
    * Updated package versions
    
    * Small fix
    
    * Bump actions/checkout from 5 to 6 (#2404)
    
    Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
    - [Release notes](https://github.com/actions/checkout/releases)
    - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/actions/checkout/compare/v5...v6)
    
    ---
    updated-dependencies:
    - dependency-name: actions/checkout
      dependency-version: '6'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * .NET: adds support for labels in edges,  fixes rendering of labels in dot a… (#1507)
    
    * adds support for labels in edges,  fixes rendering of labels in dot and mermaid, adds rendering of labels in edges
    
    * Update dotnet/src/Microsoft.Agents.AI.Workflows/Visualization/WorkflowVisualizer.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * escaping edge labels, adding tests for labels containing strange characters that would break the diagram and enabling the previous signature so the API has backwards compatibility.
    
    * Unify label in EdgeData
    
    * Edge API adjustments, removed useless "sanitizer"
    
    * fixed test
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Python: Added custom args and thread object to ai_function kwargs (#2769)
    
    * Added an example of using kwargs in ai_function
    
    * Added thread object to ai_function kwargs
    
    * Updated docs
    
    * Small fix
    
    * Added thread parameter filtering
    
    * Fix WorkflowAgent to include thread convo history. Enable checkpointing. (#2774)
    
    * Update OpenAIResponses.yaml to match AgentSchema (#2598)
    
    1. Update `connection` child types --  `kind: ApiKey` to `kind: key` otherwise schema will fail: https://microsoft.github.io/AgentSchema/reference/apikeyconnection/
    
    2.  Update `outputSchema`'s `PropertySchema` to be `kind` instead of `type` otherwise schema will fail: https://microsoft.github.io/AgentSchema/reference/propertyschema/
    
    * Python: Remove warnings from workflow builder on not using factories (#2808)
    
    * Revert concurrent
    
    * Fix comments
    
    * Python: Filter framework kwargs from MCP tool invocations (#2870)
    
    * Filter framework kwargs from MCP tool invocations
    
    * Fixes
    
    * Python: Fix WorkflowAgent to emit yield_output as agent response (#2866)
    
    * Fix WorkflowAgent to emit yield_output as agent response
    
    * use raw_representation
    
    * Raw representation handling
    
    * Python: Use agent description in HandoffBuilder auto-generated tools (#2713) (#2714)
    
    ## Summary
    Enhanced `HandoffBuilder._apply_auto_tools` to use the target agent's
    description when creating handoff tools, providing more informative tool
    descriptions for LLMs.
    
    ## Changes
    - Modified `_apply_auto_tools` to extract `description` from
      `AgentExecutor._agent` when available
    - Updated iteration to use `.items()` for more efficient dict traversal
    - Handoff tools now use agent descriptions instead of generic placeholders
    
    ## Example
    Before: "Handoff to the refund_agent agent."
    After: "You handle refund requests. Ask for order details and process refunds."
    
    ## Testing
    - All handoff tests pass (20/20)
    - No breaking changes to existing API
    
    Fixes #2713
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    
    * 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 middleware terminate flag to exit function calling loop immediately (#2868)
    
    * Fix middleware terminate flag to exit function calling loop immediately
    
    * Eliminating duck typing
    
    * Improve function exec result handling
    
    * Fix race condition
    
    * Fix mypy issues
    
    * Python: Fix context duplication in handoff workflows when restoring from checkpoint (#2867)
    
    * Fix context duplication in handoff workflows when restoring from checkpoint
    
    * Address Copilot PR review
    
    * .NET: Update to latest Azure.AI.*, OpenAI, and M.E.AI* (#2850)
    
    * Update to latest Azure.AI.*, OpenAI, and M.E.AI*
    
    Absorb breaking changes in Responses surface area
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
    
    * Update dotnet/samples/GettingStarted/AgentWithOpenAI/Agent_OpenAI_Step04_CreateFromOpenAIResponseClient/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Using patch to remove the model is necessary, updated the response client to actually use the the ForAgent
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Bump actions/download-artifact from 6 to 7 (#2862)
    
    Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
    - [Release notes](https://github.com/actions/download-artifact/releases)
    - [Commits](https://github.com/actions/download-artifact/compare/v6...v7)
    
    ---
    updated-dependencies:
    - dependency-name: actions/download-artifact
      dependency-version: '7'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump actions/cache from 4 to 5 (#2861)
    
    Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
    - [Release notes](https://github.com/actions/cache/releases)
    - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
    - [Commits](https://github.com/actions/cache/compare/v4...v5)
    
    ---
    updated-dependencies:
    - dependency-name: actions/cache
      dependency-version: '5'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump actions/upload-artifact from 5 to 6 (#2860)
    
    Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
    - [Release notes](https://github.com/actions/upload-artifact/releases)
    - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)
    
    ---
    updated-dependencies:
    - dependency-name: actions/upload-artifact
      dependency-version: '6'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Python : Ollama Connector for Agent Framework (#1104)
    
    * Initial Commit for Olama Connector
    
    * Added Olama Sample
    
    * Add Sample & Fixed Open Telemetry
    
    * Fixed Spelling from Olama to Ollama
    
    * remove"opentelemetry-semantic-conventions-ai ~=0.4.13" since its handled in a different pr
    
    * Added Tool Calling
    
    * Finalizing test cases
    
    * Adjust samples to be more reliable
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/pyproject.toml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/tests/test_ollama_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Improved Docstrings & Sample
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Integrate PR Feedback
    - Divided Streaming and Non-Streaming into independent Methods
    - Catch Ollama Validation Error
    - Add OTEL Provider Name
    - Checked Ollama Messages
    - Add Usage Statistics
    
    * Revert setting, so it can be none
    
    * Validate Message formatting between AF and Ollama
    
    * Catch Ollama Error and raise a ServiceResponse Error
    
    * Fix mypy error
    
    * remove .vscode comma
    
    * Add Reasoning support & adjust to new structure
    
    * Add Ollama Multimodality and Reasoning
    
    * Add test cases for reasoning
    
    * Add Tests for Error Handling in Ollama Client
    
    * Update python/samples/getting_started/multimodal_input/ollama_chat_multimodal.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Integrated Copilot Feedback
    
    * Implement first PR Feedback
    
    * Adjust Readme files for examples
    
    * Adjust argument passing via additional chat options
    
    * Implemented PR Feedback
    
    * Removing Ollama Package from Core and moving samples
    
    * Fix Link & Adding Samples to Main Sample Readme
    
    * Fixing Links in Readme
    
    * Moved Multimodal and Chat Example
    
    * Fixed Link in ChatClient to Ollama
    
    * Fix AgentFramework Links in Ollama Project
    
    * Fix observability breaking change
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Skip failing IT (#2904)
    
    * .NET: Cosmos DB UT Fast Skip (For Non-Configured Local envs) (#2906)
    
    * Cosmos DB UT Fast Skip (Non-Configured Local envs) + Long running UT skip in pipeline when no CosmosDB changes happened
    
    * Force a CosmosDB source code change to trigger the pipeline
    
    * Address possible string boolean mismatch
    
    * Add debug
    
    * Enabling emulator always when running IT
    
    * .NET: Add TTLs to durable agent sessions (#2679)
    
    * .NET: Add TTLs to durable agent sessions
    
    * Remove unnecessary async
    
    * PR feedback: clarify UTC
    
    * PR feedback: limit minimum signal delay to <= 5 minutes
    
    * PR feedback: Fix TTL disablement
    
    * Linter: use auto-property
    
    * Fix build break from OpenAI SDK change
    
    * Updated CHANGELOG.md
    
    * PR feedback
    
    * Reduce default TTL to 14 days to work around DTS bug
    
    * Python:  Update Mem0Provider to use v2 search API `filters` parameter (#2766)
    
    * short fix to move id parameters to filters object
    
    * added tests
    
    * small fix
    
    * mem0 dependency update
    
    * Updated package versions (#2913)
    
    * .NET: Switch to new "Run" method name. (#2843)
    
    * Switch to new "RunAgent" method name.
    
    * Try to disable false positive naming warning.
    
    * Add comment about disabled warnings.
    
    * Rename `RunAgent` to just `Run`.
    
    * Update CHANGELOG.
    
    * Python: Switch to new "run" method name. (#2890)
    
    * Switch to `run` method.
    
    * Add support for deprecated `run_agent`.
    
    * Fix entity method name.
    
    * Fix method name and improve tests.
    
    * Update comment.
    
    * Update Python CHANGELOG.
    
    * [BREAKING] Python: Add factory pattern to handoff orchestration builder (#2844)
    
    * WIP: Factory pattern to handoff
    
    * Add factory pattern to concurrent orchestration builder; Next: tests and sample verification
    
    * Add tests and improve comments
    
    * Fix mypy
    
    * Simplify handoff_simple.py
    
    * Simplify handoff_autonoumous.py and bug fix
    
    * Update readme
    
    * Address Copilot comments
    
    * Python: Flow custom kwargs to agents via Workflow SharedState (#2894)
    
    * Flow custom kwargs to agents via SharedState
    
    * Address Copilot feedback
    
    * Improve sample typing
    
    * Fix test
    
    * Fix Pydantic error when using Literal type for tool params (#2893)
    
    * Updated Ollama package version (#2920)
    
    * Python: Azure AI Agent with Bing Grounding Citations Sample (#2892)
    
    * bing grounding sample with citations
    
    * small fix
    
    * fix
    
    * .NET: Make DelegatingAIAgent abstract (#2797)
    
    * Initial plan
    
    * Make DelegatingAIAgent abstract
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Added additional arguments for Azure AI agent (#2922)
    
    * Python: Correction of MCP image type conversion in  _mcp.py (#2901)
    
    * Correction of MCP image type conversion in  _mcp.py
    
    * Added a new overload to the init function of the DataContent() type of the Agent Framework, edited the test case to correctly test the usage of the data and uri fields while using DataContent()
    
    * Fixed tests related to the changes of the DataContent type, added testing for both string and byte representations
    
    * Pass kwargs into subworkflows (#2923)
    
    * Python: Move ollama samples to samples getting started dir (#2921)
    
    * Move ollama samples to samples getting started dir
    
    * Address feedback
    
    * Python: fix: correct BadRequestError when using Pydantic model in response_fo… (#1843)
    
    * fix: correct BadRequestError when using Pydantic model in response_format
    
    * Fix lint
    
    ---------
    
    Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
    
    * .NET: [Breaking] Delete display name property (#2758)
    
    * delete the AIAgent.DisplayName property
    
    * use agent name as a first value for activity display name
    
    * Update dotnet/src/Microsoft.Agents.AI.Workflows/Specialized/HandoffAgentExecutor.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: cleanup and refactoring of chat clients (#2937)
    
    * refactoring and unifying naming schemes of internal methods of chat clients
    
    * set tool_choice to auto
    
    * fix for mypy
    
    * added note on naming and fix #2951
    
    * fix responses
    
    * fixes in azure ai agents client
    
    * Python: Workflow add option to visualize internal executors (#2917)
    
    * Workflow add option to visualize internal executors
    
    * Address Copilot comments
    
    * Python: Fixes Run ID and Thread ID casing to align with AG-UI Typescript SDK (#2948)
    
    * added camelCase input to run id and thread id aligning with @ag-ui/core
    
    * fixed per copilot suggestions
    
    * Python: Add workflow cancellation sample (#2732)
    
    * Add workflow cancellation sample
    
    Add sample demonstrating how to cancel a running workflow using asyncio
    tasks. Shows both cancellation mid-execution and normal completion paths.
    Useful for implementing timeouts, graceful shutdown, or A2A executors.
    
    * update docstring
    
    * .NET: Update Anthropic package to version 12.0.0 (#2914)
    
    * Initial plan
    
    * Update Anthropic package to version 12.0.0
    
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    
    * Python: Add Azure Managed Redis Support with Credential Provider (#2887)
    
    * azure redis support
    
    * small fixes
    
    * azure managed redis sample
    
    * fixes
    
    * Bump CommunityToolkit.Aspire.OllamaSharp from 13.0.0-beta.440 to 13.0.0 (#2856)
    
    ---
    updated-dependencies:
    - dependency-name: CommunityToolkit.Aspire.OllamaSharp
      dependency-version: 13.0.0
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.4.11 to 4.0.5 (#2853)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    
    * Bump Azure.AI.AgentServer.AgentFramework from 1.0.0-beta.4 to 1.0.0-beta.5 (#2854)
    
    ---
    updated-dependencies:
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Azure.AI.AgentServer.AgentFramework
      dependency-version: 1.0.0-beta.5
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Python: Fix WorkflowAgent event handling and kwargs forwarding (#2946)
    
    * Fix kwargs propagation through workflow.as_agent()
    
    * Fix WorkflowAgent to respect AgentExecutor output_response setting
    
    * .NET: Use GrpcEntityRunner instead of TaskEntityDispatcher (#2759)
    
    * Use GrpcEntityRunner instead of TaskEntityDispatcher
    
    * Pin to Durable worker 1.11.0
    
    * Set the invocation result
    
    * Update all Durable packages
    
    * Update changelog, rename dispatcher to encondedEntityRequest
    
    * Python: Bump Py version to 1.0.0b251218 for a release. Update CHANGELOG (#2968)
    
    * Bump Py version to 1.0.0b251218 for a release. Update CHANGELOG
    
    * update lock
    
    * Fix formatting
    
    * Fix ChatKit typing
    
    * Python: Introducing Foundry Local Chat Clients (#2915)
    
    * redo foundry local chat client
    
    * fix mypy and spelling
    
    * better docstring, updated sample
    
    * fixed tests and added tests
    
    * small sample update
    
    * Updated package versions (#2978)
    
    * Python: Added GitHub MCP sample with PAT (#2967)
    
    * added github mcp sample with PAT
    
    * addressed copilot fixes
    
    * env fix
    
    * Python: Preserve reasoning blocks with OpenRouter (#2950)
    
    * Preserve reasoning blocks with OpenRouter
    
    * Put encrypted reasoning in TextReasoningContent
    
    * Remove unneccessary change
    
    * Fix docs
    
    * Support streaming
    
    * Fix handling None in TextReasoningContent.text
    
    * Python: Added response.created and response.in_progress event process to OpenAIBaseResponseClient (#2975)
    
    * added response.created and response.in_progress to include response.id
    
    * better doc string
    
    * added tests for the new streaming event types
    
    * Python: Introducing support for Bedrock-hosted models (Anthropic, Cohere, etc.) (#2610)
    
    * Pushing the bedrock related changes to the new branch after addressing the review comments
    
    * 2524 Addressed the second round review comments
    
    * 2524 Addressed few more minor comments on the PR
    
    * resolving the merge conflict
    
    * 2524 resolved the uv.lock conflicts
    
    * 2524 addressed more comments
    
    * 2524 removed the print statement to fix the checks failure
    
    * 2524 resolved the CI failure issues
    
    * 2524 fixing the CI breaks
    
    * 2524 Addressed the review comment
    
    * 2524 resolved conflict
    
    ---------
    
    Co-authored-by: Sunil Dutta <sunil.dutta@penske.com>
    Co-authored-by: budgetboardingai <apurva.sharma31@gmail.com>
    
    * .NET: [Durable Agents] Reliable streaming sample (#2942)
    
    * .NET: [Durable Agents] Reliable streaming sample
    
    * Add automated validation for new sample
    
    * Address Copilot PR feedback
    
    * Fix typo in README.md about agent definitions (#2634)
    
    * Fix typo in README.md about agent definitions
    
    * Update agent-samples/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: latency improvements (#3014)
    
    * latency improvements
    
    * fixed mypy, added coding standards and instructions
    
    * slight logic improvement
    
    * Python: Updated package versions (#3024)
    
    * Updated package versions
    
    * Updated changelog
    
    * Python: add powerfx safe mode (#3028)
    
    * add powerfx safe mode
    
    * improved docstring and aligned env_file loading
    
    * ensured test uses reset
    
    * .NET: [Breaking] Introduce RunCoreAsync/RunCoreStreamingAsync delegation pattern in AIAgent (#2749)
    
    * Initial plan
    
    * Refactor AIAgent: Make RunAsync and RunStreamingAsync non-abstract, add RunCoreAsync and RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix infinite recursion in test implementations
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Make RunAsync and RunStreamingAsync non-virtual as requested
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix DelegatingAIAgent subclasses to use RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix XML documentation references in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Restore <see cref> tags with proper qualified signatures in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Rollback unnecessary XML documentation changes in AnonymousDelegatingAIAgent
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Remove pragma and update crefs to RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix EntityAgentWrapper to call base.RunCoreAsync/RunCoreStreamingAsync
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * fix compilation issues
    
    * fix compilatio issue
    
    * fix tests
    
    * fix unit tests
    
    * fix unit test
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <sergemenshikh@gmail.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * add issue template and additional labeling (#3006)
    
    * fix and extra int test (#3037)
    
    * .NET: [BREAKING] Refactor ChatMessageStore methods to be similar to AIContextProvider and add filtering support (#2604)
    
    * Refactor ChatMessageStore methods to be similar to AIContextProvider
    
    * Fix file encoding
    
    * Ensure that AIContextProvider messages area also persisted.
    
    * Update formatting and seal context classes
    
    * Improve formatting
    
    * Remove optional messages from constructor and add unit test
    
    * Add ChatMessageStore filtering via a decorator
    
    * Update sample and cosmos message store to store AIContextProvider messages in right order. Fix unit tests.
    
    * Update Workflowmessage store to use aicontext provider messages.
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestions from code review
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Improve xml docs messaging
    
    * Address code review comments.
    
    * Also notify message store on failure
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * [BREAKING] Remove unused AgentThreadMetadata (#3067)
    
    * Remove unused AgentThreadMetadata
    
    * Update DurableTask Changelog
    
    * Python: Fix AzureAIClient failure when conversation history contains assistant messages (#3076)
    
    * Fix AzureAIClient failure when conversation history contains assistant messages
    
    * Address PR review feedback: improve docstring and test assertions
    
    * Remove redundant cast
    
    * Fix: Update OTLP exporter protocol conditions (#3070)
    
    * Python: Fix ExecutorInvokedEvent and ExecutorCompletedEvent observability data (#3090)
    
    * Fix ExecutorInvokedEvent.data mutation bug
    
    * Fix bug related to not yielding output type
    
    * .NET: Seal ChatClientAgentThread (#2842)
    
    * Initial plan
    
    * Seal ChatClientAgentThread class
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * Fix broken strands urls. (#3102)
    
    * Fix broken strands urls.
    
    * Fix typos
    
    * .NET: Fix message ordering inconsistency when using AIContextProvider (#2659)
    
    * Initial plan
    
    * Fix message ordering inconsistency when using AIContextProvider
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Revert to original message ordering: Input, AIContextProvider, Response
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Reorder messages to ChatClient to match MessageStore order: Existing, Input, AIContextProvider
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Remove redundant test methods as existing tests already verify the behavior
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * fix: tool_choice parameter not being honored when passed to agent.run() (#3095)
    
    * sharepoint sample fix (#3108)
    
    * Bump versions to 1.0.0b260106 for a release. Update CHANGELOG.md (#3109)
    
    * Bump Bedrock version to latest (#3110)
    
    * Python: Fix MCP tool result serialization for list[TextContent] (#2523)
    
    * Fix MCP tool result serialization for list[TextContent]
    
    When MCP tools return results containing list[TextContent], they were
    incorrectly serialized to object repr strings like:
    '[<agent_framework._types.TextContent object at 0x...>]'
    
    This fix properly extracts text content from list items by:
    1. Checking if items have a 'text' attribute (TextContent)
    2. Using model_dump() for items that support it
    3. Falling back to str() for other types
    4. Joining single items as plain text, multiple items as JSON array
    
    Fixes #2509
    
    * Address PR review feedback for MCP tool result serialization
    
    - Extract serialize_content_result() to shared _utils.py
    - Fix logic: use texts[0] instead of join for single item
    - Add type annotation: texts: list[str] = []
    - Return empty string for empty list instead of '[]'
    - Move import json to file top level
    - Add comprehensive unit tests for serialization
    
    * Address PR review feedback: fix type checking and double serialization
    
    - Add isinstance(item.text, str) check to ensure text attribute is a string
    - Fix double-serialization issue by keeping model_dump results as dicts
      until final json.dumps (removes escaped JSON strings in arrays)
    - Improve docstring with detailed return value documentation
    - Add test for non-string text attribute handling
    - Add tests for list type tool results in _events.py path
    
    * Simplify PR: minimal changes to fix MCP tool result serialization
    
    Addresses reviewer feedback about excessive refactoring:
    - Reset _events.py to original structure
    - Only add import and use serialize_content_result in one location
    - All review comments addressed in serialize_content_result():
      - Added isinstance(item.text, str) check
      - Use model_dump(mode="json") to avoid double-serialization
      - Improved docstring with explicit return value documentation
      - Empty list returns "" instead of "[]"
    
    * Refactor: Move MCP TextContent serialization to core prepare_function_call_results
    
    Per reviewer feedback, moved the TextContent serialization logic from
    ag-ui's serialize_content_result to the core package's
    prepare_function_call_results function.
    
    Changes:
    - Added handling for objects with 'text' attribute (like MCP TextContent)
      in _prepare_function_call_results_as_dumpable
    - Removed serialize_content_result from ag-ui/_utils.py
    - Updated _events.py and _message_adapters.py to use
      prepare_function_call_results from core package
    - Updated tests to match the core function's behavior
    
    * Fix failing tests for prepare_function_call_results behavior
    
    - test_tool_result_with_none: Update expected value to 'null' (JSON serialization of None)
    - test_tool_result_with_model_dump_objects: Use Pydantic BaseModel instead of plain class
    
    * Fix B903 linter error: Convert MockTextContent to dataclass
    
    The ruff linter was reporting B903 (class could be dataclass or namedtuple)
    for the MockTextContent test helper classes. This commit converts them to
    dataclasses to satisfy the linter check.
    
    * Python: Improve DevUI, add Context Inspector view as new tab under traces (#2742)
    
    * Improve DevUI, add Context Inspector view as new tab under traces
    
    * fix mypy errors
    
    * fix: Handle stale MCP connections in DevUI executor
    
    MCP tools can become stale when HTTP streaming responses end - the underlying
    stdio streams close but `is_connected` remains True. This causes subsequent
    requests to fail with `ClosedResourceError`.
    
    Add `_ensure_mcp_connections()` to detect and reconnect stale MCP tools before
    agent execution. This is a workaround for an upstream Agent Framework issue
    where connection state isn't properly tracked.
    
    Fixes MCP tools failing on second HTTP request in DevUI.
    
    fixes  #1476 #1515 #2865
    
    * fix #1572 report import dependency errors more clearly
    
    * Ensure there is streaming toggle where users can select streaming vs non streaming mode in devui . Fixes .NET: [Python] DevUI tool call rendering in non-streaming mode?
    
    * remove unused dead code
    
    * improve ux - workflows with agents show a chat component in execution timelien, also ensure magentic final output shows correctly
    
    * update ui build
    
    * update devui to use instrumentation instead of tracing, other instrumentation and type/instance check fixes
    
    * .NET: Seal factory contexts and add non JSO deserialize overloads (#3066)
    
    * Seal factory contexts and add non JSO deserialize overloads
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Enable blank issues in issue template configuration
    
    Need to re-enable creating blank issues
    
    * updated templates (#3106)
    
    * updated templates
    
    * enabled blank and fixed triage
    
    * made language optional and moved to the bottom for features
    
    * Python: Streaming sample for azurefunctions (#3057)
    
    * Streaming sample for azurefunctions
    
    * Fixed links and sample name
    
    * Addressed feedback
    
    * Addressed feedback
    
    * Fixed integration tests
    
    * Updated test
    
    * Python: fix(azure-ai): Fix response_format handling for structured outputs (#3114)
    
    * fix(azure-ai): read response_format from chat_options instead of run_options
    
    * refactor: use explicit None checks for response_format
    
    * Fix mypy error
    
    * Mypy fix
    
    * Python: Bump python version to 1.0.0b260107 for a release (#3128)
    
    * Bump python version to 1.0.0b260107 for a release
    
    * Update changelog
    
    * Make A2AAgent public, so that it's concrete implementation methods can be used. (#3119)
    
    * .NET: Map additional props <-> A2A metadata (#3137)
    
    * map additional props from agent run options to a2a request metadata
    
    * small touches
    
    * add unit tests for new extension methods
    
    * Sort using
    
    * add unit test
    
    * add additiona unit tests
    
    * special case json element to avoid unnecessary serialization
    
    * Python: Fix Anthropic streaming response bugs (#3141)
    
    * test commit identity
    
    * fix(anthropic): fix raw_representation and finish_reason in streaming
    
    * lint fix
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.5 to 4.0.5.1 (#2994)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.5.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Bump Anthropic from 12.0.0 to 12.0.1 (#2993)
    
    ---
    updated-dependencies:
    - dependency-name: Anthropic
      dependency-version: 12.0.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * .NET: [Breaking] Prevent loss of input messages & streamed updates when resuming streaming (#2748)
    
    * save input messages and stream updates to the continuation token to be able to use them in the last successful stream resumption call.
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgent_BackgroundResponsesTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentContinuationToken.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * fix typo
    
    * init continuation token from chat response
    
    * remove unnecessary types for source generation
    
    * remove check for continuation token passed at initial run
    
    * remove check for continuation token pass at initial run
    
    * centralize continuation token parsing
    
    * update xml comments
    
    * use readonly collection instead of enumerable
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET: fix: Expose WorkflowErrorEvent as ErrorContent (#2762)
    
    * fix: Expose WorkflowErrorEvent as ErrorContent
    
    When hosted using .AsAgent(), Workflows were not exposing inner errors coming as Exceptions (through the WorkflowErrorEvent)
    
    The fix is to convert their message to an ErrorContent on the way out, rather than rely on the default "empty update" to collect the raw event.
    
    * feat: Add a way to show/suppress exception information
    
    * Bump Microsoft.Agents.AI.Workflows from 1.0.0-preview.251125.1 to 1.0.0-preview.251219.1 (#2997)
    
    ---
    updated-dependencies:
    - dependency-name: Microsoft.Agents.AI.Workflows
      dependency-version: 1.0.0-preview.251219.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    * .NET: Add Run overloads to expose ChatClientAgentRunOptions in IntelliSense (#3115)
    
    * Initial plan
    
    * Add ChatClientAgentExtensions for improved discoverability of ChatClientAgentRunOptions
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Address code review feedback - use collection expression syntax
    
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Apply suggestion from @westey-m
    
    * Fix issues with Copilot implementation
    
    * Add additional tests for structured output overloads.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com>
    
    * Python: Add tool call/result content types and update connectors and samples (#2971)
    
    * Add new AI content types and image tool support
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Add Python content types for tool calls/results and image generation tool support
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Address review feedback for tool content and samples
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Tighten image generation typing and sample tools list
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Align image generation output typing
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Handle MCP naming, image options mapping, and connector tool content
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Allow MCP call in function approval request
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Remove raw image_generation tool remapping
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Restore Anthropic tool_use to function calls unless code execution
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Fix lint issues for hosted file docstring and MCP parsing
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Import ChatResponse types in Anthropic client
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Fix Anthropics citation type imports and MCP typing for handoff/tools
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Skip lightning tests without agentlightning and fix function call import
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * fix lint on lab package
    
    * rebuilt anthropic parsing
    
    * redid anthropic parsing
    
    * typo
    
    * updated parsing and added missing docstrings
    
    * fix tests
    
    * mypy fixes
    
    * second mypy fix
    
    * add new class to other samples
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <github@vanvalkenburg.eu>
    
    * Bump Google.GenAI from 0.6.0 to 0.9.0 (#2995)
    
    ---
    updated-dependencies:
    - dependency-name: Google.GenAI
      dependency-version: 0.9.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Bump js-yaml from 4.1.0 to 4.1.1 in /python/packages/devui/frontend (#3123)
    
    Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
    - [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)
    
    ---
    updated-dependencies:
    - dependency-name: js-yaml
      dependency-version: 4.1.1
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Updated package versions (#3144)
    
    * .NET: Bump Microsoft.Agents.AI.OpenAI and Microsoft.Extensions.AI.OpenAI (#2996)
    
    * Bump Microsoft.Agents.AI.OpenAI and Microsoft.Extensions.AI.OpenAI
    
    Bumps Microsoft.Agents.AI.OpenAI from 1.0.0-preview.251125.1 to 1.0.0-preview.251219.1
    Bumps Microsoft.Extensions.AI.OpenAI from 10.1.0-preview.1.25608.1 to 10.1.1-preview.1.25612.2
    
    ---
    updated-dependencies:
    - dependency-name: Microsoft.Agents.AI.OpenAI
      dependency-version: 1.0.0-preview.251219.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Microsoft.Extensions.AI.OpenAI
      dependency-version: 10.1.1-preview.1.25612.2
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Microsoft.Agents.AI.OpenAI
      dependency-version: 1.0.0-preview.251219.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: Microsoft.Extensions.AI.OpenAI
      dependency-version: 10.1.1-preview.1.25612.2
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    
    * Fixed samples
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Python: fix(ag-ui): Execute tools with approval_mode, fix shared state, code cleanup  (#3079)
    
    * fix(ag-ui): execute tools after approval in human-in-the-loop flow
    
    * Fix shared state bug
    
    * Bug fix finalized
    
    * Refactoring to clean up code
    
    * Code cleanup
    
    * More fixes
    
    * More code cleanup
    
    * Add version detection in __init__.py to ruff ignore list
    
    * Track agent name with updates for workflow agent (#3146)
    
    * Python: Fix AzureAIClient tool call bug for AG-UI use (#3148)
    
    * Fiz AzureAIClient tool call bug
    
    * Address copilot feedback
    
    * Python: multiple bug fixes (#3150)
    
    * fix Python: kwargs are not passed to _prepare_thread_and_messages in ChatAgent.run
    Fixes #3118
    
    * fix Python: [Bug]: model_id versus model_deployment_name is confusing in Azure AI Agents
    Fixes #3147
    
    * add types
    
    * fixed type and docstring
    
    * fix(anthropic): fix duplicate ToolCallStartEvent in streaming tool calls (#3051)
    
    When processing `input_json_delta` events, the Anthropic client was
    passing the tool name from the previous `tool_use` event. This caused
    ag-ui's `_handle_function_call_content` to emit a `ToolCallStartEvent`
    for every streaming chunk (since it triggers on `if content.name:`).
    
    This fix changes the behavior to pass an empty string for `name` in
    `input_json_delta` events, matching OpenAI's behavior where streaming
    argument chunks have `name=""`. The initial `tool_use` event still
    provides the tool name, so only one `ToolCallStartEvent` is emitted.
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    
    * .NET: [BREAKING] Change GetNewThread and DeserializeThread to async (#3152)
    
    * Change GetNewThread and DeserializeThread plus ChatMessageStore and AIContextProvider Factories to async
    
    * Merge fixes
    
    * Fix Ollama model env var in documentation (#3156)
    
    Signed-off-by: Dina Suehiro Jones <dina.s.jones@intel.com>
    
    * Python: Add Pydantic request model and OpenAPI tags support to AG-UI FastAPI endpoint (#2522)
    
    * feat(ag-ui): Add Pydantic request model and OpenAPI tags support
    
    - Add AGUIRequest Pydantic model in _types.py with field descriptions
    - Update add_agent_framework_fastapi_endpoint() to accept tags parameter
    - Use AGUIRequest model for automatic validation and OpenAPI schema generation
    - Export AGUIRequest and DEFAULT_TAGS in __init__.py
    - Update test_endpoint.py to expect 422 for invalid requests
    - Add tests for OpenAPI schema, default tags, custom tags, and validation
    
    Benefits:
    - Better API documentation with complete request schema in Swagger UI
    - Automatic request validation with Pydantic
    - Organized endpoints under 'AG-UI' tag instead of 'default'
    - Improved developer experience and type safety
    
    Fixes #<issue-number>
    
    * test(ag-ui): Add test for internal error handling to achieve 100% coverage
    
    - Add test_endpoint_internal_error_handling() to cover exception handling code
    - Mock copy.deepcopy to simulate internal error during default_state processing
    - Add type: ignore for FastAPI tags parameter (known pyright compatibility issue)
    - Achieves 100% test coverage for _endpoint.py (previously missing lines 103-105)
    
    * .NET: Improve resolving `AITool` from DI (#3175)
    
    * remove localagenttoolregistry
    
    * also give the factory method API
    
    * Python: Fix MCPStreamableHTTPTool to use new streamable_http_client API (#3088)
    
    * Fix MCPStreamableHTTPTool to use new streamable_http_client API with proper httpx client cleanup
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Update docstring to reflect new streamable_http_client API usage
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Refactor MCPStreamableHTTPTool to accept optional http_client parameter and delegate client creation to streamable_http_client
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Update mcp package minimum version to 1.24.0 for streamable_http_client API support
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Fix critical bugs: apply headers/timeout/sse_read_timeout when creating httpx client, add version constraint <2, and properly manage client lifecycle
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Simplify implementation: remove headers/timeout/sse_read_timeout params, remove kwargs, remove close() override per feedback
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Add back **kwargs parameter for backward compatibility (accepted but not used)
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * Remove unused httpx import from test file
    
    Note: The uv.lock file needs to be updated with 'uv sync' to reflect the mcp version constraint change (>=1.24.0,<2)
    
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    
    * cicd fixes
    
    * udpated samples with headers examples
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <github@vanvalkenburg.eu>
    
    * azureai direct a2a endpoint support (#3127)
    
    * 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: MCP Improvements: improved connection loss behavior, pagination for loading and a param to control representation (#3154)
    
    * pagination support (#2848) added a parse_tool_result param and connection loss (#2884)
    
    * fix #3153
    
    * improved connection handling
    
    * improved logic
    
    * Python: Add declarative workflow runtime (#2815)
    
    * Further support for declarative python workflows
    
    * Add tests. Clean up for typing and formatting
    
    * Improvements and cleanup
    
    * Typing cleanup. Improve docstrings
    
    * Proper code in docstrings
    
    * Fix malformed code-block directive in docstring
    
    * Remove dead links
    
    * PR feedback
    
    * Address PR feedback
    
    * Address PR feedback
    
    * Remove sl
    
    * Update devui frontend
    
    * More cleanup
    
    * Fix uv lock
    
    * Skip Py 3.14 tests as powerfx doesn't support it
    
    * Fix mypy error
    
    * Fix for tool calls
    
    * Removed stale docstring
    
    * Fix lint
    
    * Standardize on .NET namespaces. Revert DevUI changes (bring in later)
    
    * Implement remaining items for Python declarative support to match dotnet
    
    * point URL to agent, not to agentcard (#3176)
    
    * Python: [BREAKING]: Introducing Options as TypedDict and Generic (#3140)
    
    * WIP typeddict for options
    
    * updated all clients and ChatAgents
    
    * updated everything
    
    * added ADR
    
    * fix mypy
    
    * proper typevar imports
    
    * fixed import
    
    * fixed other imports
    
    * slight update in the sample
    
    * updated from feedback
    
    * fixes
    
    * fixed missing covariants and test fixes
    
    * fixed typing
    
    * updated anthropic thinking config
    
    * ruff fixes
    
    * fixed int tests
    
    * fix tests and mypy
    
    * updated integration tests
    
    * updated docstring and test fix
    
    * improved options handling in obser
    
    * mypy fix
    
    * updated a host of integration tests
    
    * fix tests
    
    * bedrock fix
    
    * [BREAKING] Python: Refactor orchestrations (#3023)
    
    * Group chat refactoring Part 1; Next: HIL and handoff
    
    * Add agent approval flow; next samples
    
    * WIP: samples
    
    * WIP: HIL samples
    
    * Group chat HIL working; next: handoff
    
    * Fix group chat tool approval sample
    
    * WIP: refactor handoff; next handoff handling
    
    * Handoff done; next handoff samples and concurrent and sequential
    
    * Handoff samples, concurrent, and sequential done; next Magentic
    
    * WIP: magentic; next test with samples + HIL
    
    * Magentic Working; next fix all samples and tests
    
    * Fix handoff samples; next tests
    
    * WIP: fixing tests; some orchestration as agent samples are failing
    
    * Group chat unit tests done
    
    * Handoff  unit tests done
    
    * Remove old orchestration_request_info and fix related tests
    
    * Magentic unit tests done
    
    * Fix samples
    
    * Fix test
    
    * Fix test 2
    
    * mypy
    
    * Address comments
    
    * Update readme
    
    * Address comments
    
    * Address comments 2
    
    * Replace display name
    
    * Python: ADR for create/get agent API (#2618)
    
    * ADR for create/get agent API
    
    * Updated ADR with implementation options
    
    * Small updates
    
    * Updated decision outcome section
    
    * Updated broken links
    
    * Small updates
    
    * Fixed merge conflicts
    
    * Small fix
    
    * Updated decision outcome section
    
    * Small fixes
    
    * Updated provider naming based on client SDK
    
    * Add ignored parameter for CodeQL in workflow (#3204)
    
    * Implement IReadOnlyList on InMemoryChatMessageStore (#3205)
    
    * .NET: Make ChatMessageStore and AIContextProvider context props settable (#3196)
    
    * Make ChatMessageStore and AIContextProvider context props setable
    
    * Add validation to preserve non-null requirement of certain properties.
    
    * Fix broken tests.
    
    * Python: Add dependencies param to ag-ui FastAPI endpoint (#3191)
    
    * Add dependencies param to ag-ui FastAPI endpoint
    
    * Address Copilot feedback
    
    * renamed all (#3207)
    
    * Python: ADR for simplified get response (#3098)
    
    * ADR for simplified get response
    
    * updated some language, added agent option and code comparison
    
    * small update in sample
    
    * added workflows and expanded some points
    
    * changed decision and number
    
    * updated with stream=False default
    
    * .NET: [Breaking] Rename`AgentRunResponse` and `AgentRunResponseUpdate` classes (#3197)
    
    * rename AgentRunResponse and AgentRunResponseUpdate classes - part1
    
    * rename varialbles, parameters, methods and tests
    
    * rollback unnecessary changes
    
    * .NET: [Breaking] Rename AgentRunResponseEvent and AgentRunUpdateEvent classes (#3214)
    
    * rename AgentRunResponseEvent and AgentRunUpdateEvent classes
    
    * rollback unnecessary changes
    
    * Python: Create/Get Agent API for Azure V2 (#3059)
    
    * Added get_agent method to Azure AI V2
    
    * Small fixes
    
    * Small fix
    
    * Removed AzureAIAgentProvider
    
    * Added create_agent method
    
    * Small fixes
    
    * Fixed code interpreter tool mapping
    
    * Added agent provider for V2 client
    
    * Updated response format handling
    
    * Added provider example
    
    * Fixed errors
    
    * Update python/samples/getting_started/agents/azure_ai/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Small fix
    
    * Updates from merge
    
    * Resolved comments
    
    * Resolved comments
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: Add more specific exceptions to Workflow (#3188)
    
    * Add more specifc workflow exceptions
    
    * Fix tests
    
    * AI comments
    
    * Misc
    
    * Python: Added AzureAI sample for downloading code interpreter generated files (#3189)
    
    * added azure ai code interpreter file download sample
    
    * copilot fix suggestions
    
    * function name fixes + readme update
    
    * small fix
    
    * update package versions (#3223)
    
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Python: fix(core): correct FunctionResultContent ordering in WorkflowAgent.merge_updates (#3168)
    
    * fix(core): simplify FunctionResultContent ordering in WorkflowAgent.merge_updates
    
    * improve comment
    
    * Fix name
    
    * fix(workflows): rename WorkflowOutputEvent.source_executor_id to executor_id for API consistency (#3166)
    
    * Python: fix(ag-ui): add MCP tool support for AG-UI approval flows (#3212)
    
    * add MCP tool support for AG-UI approval flows
    
    * use attribute in place of property
    
    * Python: Properly configure structured outputs based on new options dict (#3213)
    
    * Properly configure structured outputs based on new options dict
    
    * Fix mypy
    
    * .NET: Merge AgentRunOptions.AdditionalProperties into ChatOptions.AdditionalProperties (#3184)
    
    * Merge AgentRunOptions.AdditionalProperties into ChatOptions.AdditionalProperties
    
    * Fix namespace and typo.
    
    * .NET: Update Google.GenAI to 0.11.0 and remove polyfill implementations (#3232)
    
    * Initial plan
    
    * Update Google.GenAI to 0.11.0 and remove polyfill files
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * .NET: [BREAKING] Renamed CreateAIAgent/GetAIAgent to AsAIAgent (#3222)
    
    * Renamed chat client extension method
    
    * Additional renaming
    
    * Updated documentation
    
    * Fixed tests
    
    * Small fix
    
    * Small fix
    
    * Updated DurableAIAgent and fixed integration tests (#3241)
    
    * Python: Create/Get Agent API for Azure V1 (#3192)
    
    * Added provider implementation for Azure AI V1
    
    * Small fixes
    
    * Fixed OpenAPI example
    
    * Fixed local MCP example
    
    * Fixed hosted MCP example
    
    * Fixed file search sample
    
    * Small fixes
    
    * Resolved comments
    
    * Doc updates
    
    * Bump azure-core from 1.37.0 to 1.38.0 in /python (#3209)
    
    Bumps [azure-core](https://github.com/Azure/azure-sdk-for-python) from 1.37.0 to 1.38.0.
    - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
    - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-core_1.37.0...azure-core_1.38.0)
    
    ---
    updated-dependencies:
    - dependency-name: azure-core
      dependency-version: 1.38.0
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Python: Create/Get Agent API for OpenAI Assistants (#3208)
    
    * Added provider implementation
    
    * Added example with response format
    
    * Small improvements
    
    * Python: (AG-UI) Support service-managed thread on AG-UI  (#3136)
    
    * added service thread support
    
    * set service_thread_id to only supplied_thread_id
    
    * uses raw_representation to extract the conversation_id
    
    * removed accidental edit
    
    * updated test to use raw_representation
    
    * resolves copilot review feedback
    
    * revert back StubAgent, since not used
    
    * removed relative module import
    
    * removed hasattr check per PR feedback
    
    * Create/Get Agent API - fixes and example improvements (#3246)
    
    * .NET Purview Middleware: Improve Background Job Runner Injection (#3256)
    
    * Clean up background job dependency injection
    
    * Fix xml documentation grammar
    
    * Python: [BREAKING] Renamed create_agent to as_agent (#3249)
    
    * Renamed create_agent to as_agent
    
    * Override for as_agent
    
    * Added override
    
    * Python: Update package version (#3258)
    
    * package version 260116
    
    * removed name tags
    
    * Python: Fixed Azure chat client for asynchronous filtering (#3260)
    
    * Fixed Azure chat client for asynchronous filtering
    
    * Updated test
    
    * Python: Fixed use_agent_middleware calling private _normalize_messages (#3264)
    
    * Fix use_agent_middleware calling private _normalize_messages
    
    * Fixed A2A and Copilot Studio agent
    
    * Python: Added rai_config to Azure AI agent creation (#3265)
    
    * Add kwargs to create_agent method
    
    * Added test for kwargs
    
    * Addressed comment
    
    * Added doc string
    
    * Python: Filter conversation_id when passing kwargs to agent as tool (#3266)
    
    * Filter conversation_id when passing kwargs to agent as tool
    
    * Small fix
    
    * Update python/samples/getting_started/agents/azure_ai/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/samples/getting_started/agents/openai/openai_responses_client_with_agent_as_tool.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/samples/getting_started/agents/azure_ai/azure_ai_with_agent_as_tool.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Bump actions/setup-dotnet from 5.0.1 to 5.1.0 (#3273)
    
    Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 5.0.1 to 5.1.0.
    - [Release notes](https://github.com/actions/setup-dotnet/releases)
    - [Commits](https://github.com/actions/setup-dotnet/compare/v5.0.1...v5.1.0)
    
    ---
    updated-dependencies:
    - dependency-name: actions/setup-dotnet
      dependency-version: 5.1.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Update ignored checks in merge-gatekeeper workflow
    
    * Python: [BREAKING] Make response_format validation errors visible to users (#3274)
    
    * Make response_format validation errors visible to users
    
    * Small fix
    
    * Addressed comments
    
    * Python: fix(declarative): Fix MCP tool connection not passed from YAML to Azure AI agent creation API (#3248)
    
    * fix(declarative): Fix MCP tool connection not passed from YAML
    
    * Add samples to README
    
    * Fix mypy
    
    * Fix mypy again
    
    * Address PR comments
    
    * fix #3171, ensure proper form rendering for int (#3201)
    
    * Bump uv from 0.9.25 to 0.9.26 in /python (#3288)
    
    Bumps [uv](https://github.com/astral-sh/uv) from 0.9.25 to 0.9.26.
    - [Release notes](https://github.com/astral-sh/uv/releases)
    - [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/astral-sh/uv/compare/0.9.25...0.9.26)
    
    ---
    updated-dependencies:
    - dependency-name: uv
      dependency-version: 0.9.26
      dependency-type: direct:development
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump ruff from 0.14.11 to 0.14.13 in /python (#3287)
    
    Bumps [ruff](https://github.com/astral-sh/ruff) from 0.14.11 to 0.14.13.
    - [Release notes](https://github.com/astral-sh/ruff/releases)
    - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/astral-sh/ruff/compare/0.14.11...0.14.13)
    
    ---
    updated-dependencies:
    - dependency-name: ruff
      dependency-version: 0.14.13
      dependency-type: direct:development
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump tar from 7.4.3 to 7.5.3 in /python/packages/devui/frontend (#3267)
    
    Bumps [tar](https://github.com/isaacs/node-tar) from 7.4.3 to 7.5.3.
    - [Release notes](https://github.com/isaacs/node-tar/releases)
    - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/isaacs/node-tar/compare/v7.4.3...v7.5.3)
    
    ---
    updated-dependencies:
    - dependency-name: tar
      dependency-version: 7.5.3
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * .NET: Delete sync extension methods for agent (#3291)
    
    * Delete sync extension methods for agent
    
    * Fix comments and obsolete attribute
    
    * Remove more sync methods.
    
    * Fix naming and comments.
    
    * Fix unit tests
    
    * Python: Fix: Add system_instructions to ChatClient LLM span tracing (#3164)
    
    * Fix: Add system_instructions to ChatClient LLM span tracing
    
    - Add system_instructions parameter to _capture_messages() calls in
      _trace_get_response() and _trace_get_streaming_response()
    - Extract instructions from chat_options in kwargs
    - Add unit tests to verify system_instructions are captured correctly
    
    When using ChatClient with ChatOptions.instructions, the OpenTelemetry
    LLM span was missing system messages in gen_ai.input.messages and the
    gen_ai.system_instructions attribute was not being set.
    
    This fix aligns the ChatClient-level tracing with the Agent-level
    tracing which already correctly passes system_instructions.
    
    Fixes #3163
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Add edge case tests for system_instructions
    
    - Add test for empty string instructions (should not set attribute)
    - Add test for list-type instructions (verify multiple items captured)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Simplify: use options.get('instructions') directly instead of kwargs.get('chat_options')
    
    Addresses reviewer feedback:
    - Removed unnecessary chat_options variable from kwargs
    - Directly access instructions from the options parameter
    - Updated tests to use dict syntax for options (TypedDict convention)
    
    ---------
    
    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Improve PR number handling in workflow (#3302)
    
    * Improve PR number handling in workflow
    
    Refine PR number extraction and validation method.
    
    * Update .github/workflows/python-test-coverage-report.yml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Fix error message for invalid PR number
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@…
    
    * Modify failures
    
    * Fix mypy errors
    
    * Address comments
    
    * Update durabletask version
    
    * Remove event loops
    
    * Add comment
    
    * Fix typing for apps
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Signed-off-by: Dina Suehiro Jones <dina.s.jones@intel.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    Co-authored-by: Kurt <65111699+q33566@users.noreply.github.com>
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    Co-authored-by: Korolev Dmitry <deagle.gross@gmail.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Jose Luis Latorre Millas <joslat@gmail.com>
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Richard Ortega <richardjortega@gmail.com>
    Co-authored-by: 刘邦学AI <lbbniu@gmail.com>
    Co-authored-by: Stephen Toub <stoub@microsoft.com>
    Co-authored-by: Nico Möller <nkm-moeller@mail.de>
    Co-authored-by: Chris Gillum <cgillum@microsoft.com>
    Co-authored-by: Giles Odigwe <79032838+giles17@users.noreply.github.com>
    Co-authored-by: Phillip Hoff <phillip.hoff@gmail.com>
    Co-authored-by: Ege Ozan Özyedek <36128615+egeozanozyedek@users.noreply.github.com>
    Co-authored-by: samueljohnsiby <66901393+samueljohnsiby@users.noreply.github.com>
    Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
    Co-authored-by: Hao Luo <338265+howlowck@users.noreply.github.com>
    Co-authored-by: Victor Dibia <chuvidi2003@gmail.com>
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    Co-authored-by: Jacob Viau <javia@microsoft.com>
    Co-authored-by: SuperKenVery <39673849+SuperKenVery@users.noreply.github.com>
    Co-authored-by: Sunil Dutta <dutta.2003@gmail.com>
    Co-authored-by: Sunil Dutta <sunil.dutta@penske.com>
    Co-authored-by: budgetboardingai <apurva.sharma31@gmail.com>
    Co-authored-by: Syrine Chelly <62653967+SyChell@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <sergemenshikh@gmail.com>
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
    Co-authored-by: takanori-terai <123897708+takanori-terai@users.noreply.github.com>
    Co-authored-by: claude89757 <138977524+claude89757@users.noreply.github.com>
    Co-authored-by: Gavin Aguiar <80794152+gavin-aguiar@users.noreply.github.com>
    Co-authored-by: Sukeesh <vsukeeshbabu@gmail.com>
    Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: eavanvalkenburg <github@vanvalkenburg.eu>
    Co-authored-by: Ao Chen <chenao3220@gmail.com>
    Co-authored-by: Dina Suehiro Jones <dina.s.jones@intel.com>
    Co-authored-by: eoindoherty1 <eoindoherty@microsoft.com>
    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
    Co-authored-by: Darren Cohen <39422044+dargilco@users.noreply.github.com>
    Co-authored-by: Ben Thomas <ben.thomas@microsoft.com>
    Co-authored-by: alliscode <bentho@microsoft.com>
    Co-authored-by: TaoChenOSU <12570346+TaoChenOSU@users.noreply.github.com>
    Co-authored-by: Shyju Krishnankutty <connectshyju@gmail.com>
  • Python: fix(declarative): Fix MCP tool connection not passed from YAML to Azure AI agent creation API (#3248)
    * fix(declarative): Fix MCP tool connection not passed from YAML
    
    * Add samples to README
    
    * Fix mypy
    
    * Fix mypy again
    
    * Address PR comments
  • 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: Streaming sample for azurefunctions (#3057)
    * Streaming sample for azurefunctions
    
    * Fixed links and sample name
    
    * Addressed feedback
    
    * Addressed feedback
    
    * Fixed integration tests
    
    * Updated test
  • Python: Move ollama samples to samples getting started dir (#2921)
    * Move ollama samples to samples getting started dir
    
    * Address feedback
  • Python : Ollama Connector for Agent Framework (#1104)
    * Initial Commit for Olama Connector
    
    * Added Olama Sample
    
    * Add Sample & Fixed Open Telemetry
    
    * Fixed Spelling from Olama to Ollama
    
    * remove"opentelemetry-semantic-conventions-ai ~=0.4.13" since its handled in a different pr
    
    * Added Tool Calling
    
    * Finalizing test cases
    
    * Adjust samples to be more reliable
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/pyproject.toml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/tests/test_ollama_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Improved Docstrings & Sample
    
    * Update python/packages/ollama/agent_framework_ollama/_chat_client.py
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Integrate PR Feedback
    - Divided Streaming and Non-Streaming into independent Methods
    - Catch Ollama Validation Error
    - Add OTEL Provider Name
    - Checked Ollama Messages
    - Add Usage Statistics
    
    * Revert setting, so it can be none
    
    * Validate Message formatting between AF and Ollama
    
    * Catch Ollama Error and raise a ServiceResponse Error
    
    * Fix mypy error
    
    * remove .vscode comma
    
    * Add Reasoning support & adjust to new structure
    
    * Add Ollama Multimodality and Reasoning
    
    * Add test cases for reasoning
    
    * Add Tests for Error Handling in Ollama Client
    
    * Update python/samples/getting_started/multimodal_input/ollama_chat_multimodal.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Integrated Copilot Feedback
    
    * Implement first PR Feedback
    
    * Adjust Readme files for examples
    
    * Adjust argument passing via additional chat options
    
    * Implemented PR Feedback
    
    * Removing Ollama Package from Core and moving samples
    
    * Fix Link & Adding Samples to Main Sample Readme
    
    * Fixing Links in Readme
    
    * Moved Multimodal and Chat Example
    
    * Fixed Link in ChatClient to Ollama
    
    * Fix AgentFramework Links in Ollama Project
    
    * Fix observability breaking change
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
  • 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
  • [BREAKING] Python: Standardize orchestration outputs as list of ChatMessage. Allow agent as group chat manager. (#2291)
    * Standardize orchestration outputs as list of chatmessage. Add chat options to group chat prompt manager
    
    * refactor group chat
    
    * Improve group chat manager
    
    * README Update
    
    * Cleanup
    
    * Add comment
    
    * More cleanup
    
    * Standardize termination condition for group chat
    
    * Improvements on termination logic
    
    * Fix tests
    
    * Fix new line
    
    * PR feedback
    
    * Update ChatKit based on OpenAI type change
    
    * Raise error if response format is not expected type
    
    * Only one starting executor required. Add tests.
    
    * Add magentic start executor test
  • Python: Use Foundry evaluators to evaluate agent workflows (#2322)
    * Create workflow evaluation with Foundry demo
    
    * Upgrade syntax
    
    * Add copyright line
    
    * import fix
    
    * import fix
    
    * address pr comments
    
    * Python: Workflow eval sample - print evaluator names
    
    * Python: Workflow eval - address PR comments
    
    * Update samples readme
    
    ---------
    
    Co-authored-by: Salma Elshafey <selshafey@microsoft.com>
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
  • Python: Remove duplicated workflow observability sample (#2357)
    * Remove duplicated workflow observability sample
    
    * Fix link
  • Python: Move evaluation folders to under evaluations (#2355)
    * Move evaluation folders to under evaluations
    
    * Change folder path
  • Python: Move red teaming files to its own folder (#2333)
    * Move red teaming files to its own folder
    
    * Update file path
    
    * Updated folder names
    
    * Updated reference names
  • Python: Use AI Foundry evaluators for self-reflection (#2250)
    * First working version
    
    * Simplify the implementations
    
    * Remove unused env var
    
    * Update Python syntax
    
    * Address feedbacks
    
    * Fix a typo
    
    * Update names as review suggestions
    
    * Citation for self-reflection
    
    * Move to independent folder
    
    * Update python/samples/getting_started/evaluation/azure_ai_foundry/evaluation/README.md
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * Updated from parquet to JSONL and hide the default environment variables
    
    * As review feedback, remove the purpose of using `run_self_reflection_batch` as a library, only use it as sample code
    
    * Update python/samples/getting_started/evaluation/azure_ai_foundry/evaluation/self_reflection.py
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
  • Python: Updated documentation for Azure AI (#2280)
    * Updated documentation for Azure AI
    
    * Small fixes
  • Python: Added an Azure OpenAI Responses API Hosted MCP sample (#2108)
    * Add files via upload
    
    * Update python/samples/getting_started/agents/azure_openai/azure_responses_client_with_hosted_mcp.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Updated README.md
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: Python: Azure Functions feature branch (#1916)
    * Python: Add Scaffolding for Durable AzureFunctions package to Agent Framework (#1823)
    
    * Add scafolding
    
    * update readme
    
    * add code owners and label
    
    * update owners
    
    * .NET: Durable extension: initial src and unit tests (#1900)
    
    * Python: Add Durable Agent Wrapper code (#1913)
    
    * add initial changes
    
    * Move code and add single sample
    
    * Update logger
    
    * Remove unused code
    
    * address PR comments
    
    * cleanup code and address comments
    
    ---------
    
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Azure Functions .NET samples (#1939)
    
    * Python: Add Unit tests for Azurefunctions package (#1976)
    
    * Add Unit tests for Azurefunctions
    
    * remove duplicate import
    
    * .NET: [Feature Branch] Migrate state schema updates and support for agents as MCP tools (#1979)
    
    * Python: Add more samples for Azure Functions (#1980)
    
    * Move all samples
    
    * fix comments
    
    * remove dead lines
    
    * Make samples simpler
    
    * .NET: [Feature Branch] Durable Task extension integration tests (#2017)
    
    * .NET: [Feature Branch] Update OpenAI config for integration tests (#2063)
    
    * Python: Add Integration tests for AzureFunctions  (#2020)
    
    * Add Integration tests
    
    * Remove DTS extension
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Add pyi file for type safety
    
    * Add samples in readme
    
    * Updated all readme instructions
    
    * Address comments
    
    * Update readmes
    
    * Fix requirements
    
    * Address comments
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET: [Feature Branch] Update dotnet-build-and-test.yml to support integration tests (#2070)
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Fix DTS startup issue and improve logging (#2103)
    
    * .NET: [Feature Branch] Introduce Azure OpenAI config for .NET pipeline (#2106)
    
    Also fixes an issue where we were trying to start docker containers for integration tests on Windows, which doesn't work.
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Fix uv.lock after merge
    
    * Python: Add README for Azure Functions samples setup (#2100)
    
    * Add README for Azure Functions samples setup
    
    Added setup instructions for Azure Functions samples, including environment setup, virtual environment creation, and running samples.
    
    * Update python/samples/getting_started/azure_functions/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestion from @Copilot
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Laveesh Rohra <larohra@microsoft.com>
    
    * Fix or remove broken markdown file links (#2115)
    
    * .NET: [Feature Branch] Update HTTP API to be consistent across languages (#2118)
    
    * Python: Fix AzureFunctions Integration Tests (#2116)
    
    * Add Identity Auth to samples
    
    * Update python/samples/getting_started/azure_functions/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/samples/getting_started/azure_functions/01_single_agent/function_app.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/samples/getting_started/azure_functions/02_multi_agent/function_app.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/samples/getting_started/azure_functions/06_multi_agent_orchestration_conditionals/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python: Fix Http Schema (#2112)
    
    * Rename to threadid
    
    * Respond in plain text
    
    * Make snake-case
    
    * Add http prefix
    
    * rename to wait-for-response
    
    * Add query param check
    
    * address comments
    
    * .NET: Remove IsPackable=false in preparation for nuget release (#2142)
    
    * Python: Move `azurefunctions` to `azure` for import (#2141)
    
    * Move import to Azure
    
    * fix mypy
    
    * Update python/packages/azurefunctions/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Add missing types
    
    * Address comments
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/azurefunctions/pyproject.toml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/azurefunctions/agent_framework_azurefunctions/__init__.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Fix imports
    
    * Address PR feedback from westey-m (#2150)
    
    - Adds a link from the /dotnet/samples/README.md to /dotnet/samples/AzureFunctions
    - Make DurableAgentThread deserialization internal for future-proofing
    - Update JSON serialization logic to address recently discovered issues with source generator serialization
    
    * Address comments (#2160)
    
    ---------
    
    Co-authored-by: Laveesh Rohra <larohra@microsoft.com>
    Co-authored-by: Chris Gillum <cgillum@microsoft.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Anirudh Garg <anirudhg@microsoft.com>
  • Python: Azure AI client based on new azure-ai-projects package (#1910)
    * Added changes (#1909)
    
    * Python: [Feature Branch] Renamed Azure AI agent and small fixes (#1919)
    
    * Renaming
    
    * Small fixes
    
    * Update python/packages/core/agent_framework/openai/_shared.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Small fix
    
    * Python: [Feature Branch] Added use_latest_version parameter to AzureAIClient (#1959)
    
    * Added use_latest_version parameter to AzureAIClient
    
    * Added unit tests
    
    * Update python/samples/getting_started/agents/azure_ai/azure_ai_use_latest_version.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/azure-ai/agent_framework_azure_ai/_client.py
    
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    
    * Python: [Feature Branch] Structured Outputs and more examples for AzureAIClient (#1987)
    
    * Small updates
    
    * Added support for structured outputs
    
    * Added code interpreter example
    
    * More examples and fixes
    
    * Added more examples and README
    
    * Small fix
    
    * Addressed PR feedback
    
    * Removed optional ID from FunctionResultContent (#2011)
    
    * Added hosted MCP support (#2018)
    
    * Python: [Feature Branch] Fixed "store" parameter handling (#2069)
    
    * Fixed store parameter handling
    
    * Small fix
    
    * Python: [Feature Branch] Added more examples and fixes for Azure AI agent (#2077)
    
    * Updated azure-ai-projects package version
    
    * Added an example of hosted MCP with approval required
    
    * Updated code interpreter example
    
    * Added file search example
    
    * Update python/samples/getting_started/agents/azure_ai/azure_ai_with_file_search.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/samples/getting_started/agents/azure_ai/azure_ai_with_file_search.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Small fix
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Added handling for conversation_id (#2098)
    
    * Merge from main
    
    * Revert "Merge from main"
    
    This reverts commit b8206a85d7.
    
    * Python: [Feature Branch] Merge from main to Azure AI branch (#2111)
    
    * Do not build DevUI assets during .NET project build (#2010)
    
    * .NET: Add unit tests for declarative executor SetMultipleVariables (#2016)
    
    * Add unit tests for create conversation executor
    
    * Update indentation and comment typo.
    
    * Added unit tests for declarative executor SetMultipleVariablesExecutor
    
    * Updated comments and syntactic sugar
    
    * Python: DevUI: Use metadata.entity_id instead of model field (#1984)
    
    * DevUI: Use metadata.entity_id for agent/workflow name instead of model field
    
    * OpenAI Responses: add explicit request validation
    
    * Review feedback
    
    * .NET: DevUI - Do not automatically add/map OpenAI services/endpoints (#2014)
    
    * Don't add OpenAIResponses as part of Dev UI
    
    You should be able to add and remove Dev UI without impacting your other production endpoints.
    
    * Remove `AddDevUI()` and do not map OpenAI endpoints from `MapDevUI()`
    
    * Fix comment wording
    
    * Revise documentation
    
    ---------
    
    Co-authored-by: Daniel Roth <daroth@microsoft.com>
    
    * Python: DevUI: Add OpenAI Responses API proxy support  + HIL for Workflows (#1737)
    
    * DevUI: Add OpenAI Responses API proxy support with enhanced UI features
    
    This commit adds support for proxying requests to OpenAI's Responses API,
    allowing DevUI to route conversations to OpenAI models when configured to enable testing.
    
    Backend changes:
    - Add OpenAI proxy executor with conversation routing logic
    - Enhance event mapper to support OpenAI Responses API format
    - Extend server endpoints to handle OpenAI proxy mode
    - Update models with OpenAI-specific response types
    - Remove emojis from logging and CLI output for cleaner text
    
    Frontend changes:
    - Add settings modal with OpenAI proxy configuration UI
    - Enhance agent and workflow views with improved state management
    - Add new UI components (separator, switch) for settings
    - Update debug panel with better event filtering
    - Improve message renderers for OpenAI content types
    - Update types and API client for OpenAI integration
    
    * update ui, settings modal and workflow input form, add register cleanup hooks.
    
    * add workflow HIL support, user mode, other fixes
    
    * feat(devui): add human-in-the-loop (HIL) support with dynamic response schemas
    
    Implement  HIL workflow support allowing workflows to pause for user input
    with dynamically generated JSON schemas based on response handler type hints.
    
    Key Features:
    - Automatic response schema extraction from @response_handler decorators
    - Dynamic form generation in UI based on Pydantic/dataclass response types
    - Checkpoint-based conversation storage for HIL requests/responses
    - Resume workflow execution after user provides HIL response
    
    Backend Changes:
    - Add extract_response_type_from_executor() to introspect response handlers
    - Enrich RequestInfoEvent with response_schema via _enrich_request_info_event_with_response_schema()
    - Map RequestInfoEvent to response.input.requested OpenAI event format
    - Store HIL responses in conversation history and restore checkpoints
    
    Frontend Changes:
    - Add HILInputModal component with SchemaFormRenderer for dynamic forms
    - Support Pydantic BaseModel and dataclass response types
    - Render enum fields as dropdowns, strings as text/textarea, numbers, booleans, arrays, objects
    - Display original request context alongside response form
    
    Testing:
    - Add  tests for checkpoint storage (test_checkpoints.py)
    - Add schema generation tests for all input types (test_schema_generation.py)
    - Validate end-to-end HIL flow with spam workflow sample
    
    This enables workflows to seamlessly pause execution and request structured user input
    with type-safe, validated forms generated automatically from response type annotations.
    
    * improve HIL support, improve workflow execution view
    
    * ui updates
    
    * ui updates
    
    * improve HIL for workflows, add auth and view modes
    
    * update workflow
    
    * security improvements , ui fixes
    
    * fix mypy error
    
    * update loading spinner in ui
    
    ---------
    
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    
    * .NET: Remove launchSettings.json from .gitignore in dotnet/samples (#2006)
    
    * Remove launchSettings.json from .gitignore in dotnet/samples
    
    * Update dotnet/samples/GettingStarted/DevUI/DevUI_Step01_BasicUsage/Properties/launchSettings.json
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/AGUIClientServer/AGUIServer/Properties/launchSettings.json
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * DevUI: Serialize workflow input as string to maintain conformance with OpenAI Responses format (#2021)
    
    Co-authored-by: Victor Dibia <chuvidi2003@gmail.com>
    
    * Add Microsoft Agent Framework logo to assets (#2007)
    
    * Updated package versions (#2027)
    
    * DevUI: Prevent line breaks within words in the agent view (#2024)
    
    Co-authored-by: Victor Dibia <chuvidi2003@gmail.com>
    
    * .NET [AG-UI]: Adds support for shared state. (#1996)
    
    * Product changes
    
    * Tests
    
    * Dojo project
    
    * Cleanups
    
    * Python: Fix underlying tool choice bug and all for return to previous Handoff subagent (#2037)
    
    * Fix tool_choice override bug and add enable_return_to_previous support
    
    * Add unit test for handoff checkpointing
    
    * Handle tools when we have them
    
    * added missing chatAgent params (#2044)
    
    * .NET: fix ChatCompletions Tools serialization (#2043)
    
    * fix serialization in chat completions on tools
    
    * nit
    
    * .NET: assign AgentCard's URL to mapped-endpoint if not defined explicitly (#2047)
    
    * fix serialization in chat completions on tools
    
    * nit
    
    * write e2e test for agent card resolve + adjust behavior
    
    * nit
    
    * Version 1.0.0-preview.251110.1 (#2048)
    
    * .NET: Remove moved OpenAPI sample and point to SK one. (#1997)
    
    * Remove moved OpenAPI sample and point to SK one.
    
    * Update dotnet/samples/GettingStarted/Agents/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Bump AWSSDK.Extensions.Bedrock.MEAI from 4.0.4.2 to 4.0.4.6 (#2031)
    
    ---
    updated-dependencies:
    - dependency-name: AWSSDK.Extensions.Bedrock.MEAI
      dependency-version: 4.0.4.6
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * .NET: Separate all memory and rag samples into their own folders (#2000)
    
    * Separate all memory and rag samples into their own folders
    
    * Fix broken link.
    
    * Python: .Net: Dotnet devui compatibility fixes (#2026)
    
    * DevUI: Add OpenAI Responses API proxy support with enhanced UI features
    
    This commit adds support for proxying requests to OpenAI's Responses API,
    allowing DevUI to route conversations to OpenAI models when configured to enable testing.
    
    Backend changes:
    - Add OpenAI proxy executor with conversation routing logic
    - Enhance event mapper to support OpenAI Responses API format
    - Extend server endpoints to handle OpenAI proxy mode
    - Update models with OpenAI-specific response types
    - Remove emojis from logging and CLI output for cleaner text
    
    Frontend changes:
    - Add settings modal with OpenAI proxy configuration UI
    - Enhance agent and workflow views with improved state management
    - Add new UI components (separator, switch) for settings
    - Update debug panel with better event filtering
    - Improve message renderers for OpenAI content types
    - Update types and API client for OpenAI integration
    
    * update ui, settings modal and workflow input form, add register cleanup hooks.
    
    * add workflow HIL support, user mode, other fixes
    
    * feat(devui): add human-in-the-loop (HIL) support with dynamic response schemas
    
    Implement  HIL workflow support allowing workflows to pause for user input
    with dynamically generated JSON schemas based on response handler type hints.
    
    Key Features:
    - Automatic response schema extraction from @response_handler decorators
    - Dynamic form generation in UI based on Pydantic/dataclass response types
    - Checkpoint-based conversation storage for HIL requests/responses
    - Resume workflow execution after user provides HIL response
    
    Backend Changes:
    - Add extract_response_type_from_executor() to introspect response handlers
    - Enrich RequestInfoEvent with response_schema via _enrich_request_info_event_with_response_schema()
    - Map RequestInfoEvent to response.input.requested OpenAI event format
    - Store HIL responses in conversation history and restore checkpoints
    
    Frontend Changes:
    - Add HILInputModal component with SchemaFormRenderer for dynamic forms
    - Support Pydantic BaseModel and dataclass response types
    - Render enum fields as dropdowns, strings as text/textarea, numbers, booleans, arrays, objects
    - Display original request context alongside response form
    
    Testing:
    - Add  tests for checkpoint storage (test_checkpoints.py)
    - Add schema generation tests for all input types (test_schema_generation.py)
    - Validate end-to-end HIL flow with spam workflow sample
    
    This enables workflows to seamlessly pause execution and request structured user input
    with type-safe, validated forms generated automatically from response type annotations.
    
    * improve HIL support, improve workflow execution view
    
    * ui updates
    
    * ui updates
    
    * improve HIL for workflows, add auth and view modes
    
    * update workflow
    
    * security improvements , ui fixes
    
    * fix mypy error
    
    * update loading spinner in ui
    
    * DevUI: Serialize workflow input as string to maintain conformance with OpenAI Responses format
    
    * Phase 1: Add /meta endpoint and fix workflow event naming for .NET DevUI compatibility
    
    * additional fixes for .NET DevUI workflow visualization item ID tracking
    
    **Problem:**
    .NET DevUI was generating different item IDs for ExecutorInvokedEvent and
    ExecutorCompletedEvent, causing only the first executor to highlight in the
    workflow graph. Long executor names and error messages also broke UI layout.
    
    **Changes:**
    - Add ExecutorActionItemResource to match Python DevUI implementation
    - Track item IDs per executor using dictionary in AgentRunResponseUpdateExtensions
    - Reuse same item ID across invoked/completed/failed events for proper pairing
    - Add truncateText() utility to workflow-utils.ts
    - Truncate executor names to 35 chars in execution timeline
    - Truncate error messages to 150 chars in workflow graph nodes
    
    ** Details:**
    - ExecutorActionItemResource registered with JSON source generation context
    - Dictionary cleaned up after executor completion/failure to prevent memory leaks
    - Frontend item tracking by unique item.id supports multiple executor runs
    - All changes follow existing codebase patterns and conventions
    
    Tested with review-workflow showing correct executor highlighting and state
    transitions for sequential and concurrent executors.
    
    * format fixes, remove cors tests
    
    * remove unecessary attributes
    
    ---------
    
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Reuben Bond <reuben.bond@gmail.com>
    
    * DevUI: support having both an agent and a workflow with the same id in discovery (#2023)
    
    * Python: Fix Model ID attribute not showing up in `invoke_agent` span (#2061)
    
    * Best effort to surface the model id to invoke agent span
    
    * Fix tests
    
    * Fix tests
    
    * Version 1.0.0-preview.251107.2 (#2065)
    
    * Version 1.0.0-preview.251110.2 (#2067)
    
    * Update README.md to change Grafana links to Azure portal links for dashboard access (#1983)
    
    * .NET - Enable build & test on branch `feature-foundry-agents` (#2068)
    
    * Tests good, mkay
    
    * Update .github/workflows/dotnet-build-and-test.yml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Enable feature build pipelines
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Python: Add concrete AGUIChatClient (#2072)
    
    * Add concrete AGUIChatClient
    
    * Update logging docstrings and conventions
    
    * PR feedback
    
    * Updates to support client-side tool calls
    
    * .NET: Move catalog samples to the HostedAgents folder (#2090)
    
    * move catalog samples to the HostedAgents folder
    
    * move the catalog samples' projects to the HostedAgents folder
    
    * Bump OpenTelemetry.Instrumentation.Runtime from 1.12.0 to 1.13.0 (#1856)
    
    ---
    updated-dependencies:
    - dependency-name: OpenTelemetry.Instrumentation.Runtime
      dependency-version: 1.13.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * .NET: Bump Microsoft.SemanticKernel.Agents.Abstractions from 1.66.0 to 1.67.0 (#1962)
    
    * Bump Microsoft.SemanticKernel.Agents.Abstractions from 1.66.0 to 1.67.0
    
    ---
    updated-dependencies:
    - dependency-name: Microsoft.SemanticKernel.Agents.Abstractions
      dependency-version: 1.67.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    
    * .NET: Bump all Microsoft.SemanticKernel packages from 1.66.* to 1.67.* (#1969)
    
    * Initial plan
    
    * Update all Microsoft.SemanticKernel packages to 1.67.*
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Remove unrelated changes to package-lock.json and yarn.lock
    
    Co-authored-by: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com>
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com>
    
    * .NET: fix: WorkflowAsAgent Sample (#1787)
    
    * fix: WorkflowAsAgent Sample
    
    * Also makes ChatForwardingExecutor public
    
    * feat: Expand ChatForwardingExecutor handled types
    
    Make ChatForwardingExecutor match the input types of ChatProtocolExecutor.
    
    * fix: Update for the new AgentRunResponseUpdate merge logic
    
    AIAgent always sends out List<ChatMessage> now.
    
    * Updated (#2076)
    
    * Bump vite in /python/samples/demos/chatkit-integration/frontend (#1918)
    
    Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.1.9 to 7.1.12.
    - [Release notes](https://github.com/vitejs/vite/releases)
    - [Changelog](https://github.com/vitejs/vite/blob/v7.1.12/packages/vite/CHANGELOG.md)
    - [Commits](https://github.com/vitejs/vite/commits/v7.1.12/packages/vite)
    
    ---
    updated-dependencies:
    - dependency-name: vite
      dependency-version: 7.1.12
      dependency-type: direct:development
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump Roslynator.Analyzers from 4.14.0 to 4.14.1 (#1857)
    
    ---
    updated-dependencies:
    - dependency-name: Roslynator.Analyzers
      dependency-version: 4.14.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    
    * Bump MishaKav/pytest-coverage-comment from 1.1.57 to 1.1.59 (#2034)
    
    Bumps [MishaKav/pytest-coverage-comment](https://github.com/mishakav/pytest-coverage-comment) from 1.1.57 to 1.1.59.
    - [Release notes](https://github.com/mishakav/pytest-coverage-comment/releases)
    - [Changelog](https://github.com/MishaKav/pytest-coverage-comment/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/mishakav/pytest-coverage-comment/compare/v1.1.57...v1.1.59)
    
    ---
    updated-dependencies:
    - dependency-name: MishaKav/pytest-coverage-comment
      dependency-version: 1.1.59
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * Python: Handle agent user input request in AgentExecutor (#2022)
    
    * Handle agent user input request in AgentExecutor
    
    * fix test
    
    * Address comments
    
    * Fix tests
    
    * Fix tests
    
    * Address comments
    
    * Address comments
    
    * Python: OpenAI Responses Image Generation Stream Support, Sample and Unit Tests (#1853)
    
    * support for image gen streaming
    
    * small fixes
    
    * fixes
    
    * added comment
    
    * Python: Fix MCP Tool Parameter Descriptions Not Propagated to LLMs (#1978)
    
    * mcp tool description fix
    
    * small fix
    
    * .NET: Allow extending agent run options via additional properties (#1872)
    
    * Allow extending agent run options via additional properties
    
    This mirrors the M.E.AI model in ChatOptions.AdditionalProperties which is very useful when building functionality pipelines.
    
    Fixes https://github.com/microsoft/agent-framework/issues/1815
    
    * Expand XML documentation
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Add AdditionalProperties tests to AgentRunOptions
    
    Co-authored-by: kzu <169707+kzu@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: kzu <169707+kzu@users.noreply.github.com>
    
    * Python: Use the last entry in the task history to avoid empty responses (#2101)
    
    * Use the last entry in the task history to avoid empty responses
    
    * History only contains Messages
    
    * Updated package versions (#2104)
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: Reuben Bond <203839+ReubenBond@users.noreply.github.com>
    Co-authored-by: Peter Ibekwe <109177538+peibekwe@users.noreply.github.com>
    Co-authored-by: Jeff Handley <jeffhandley@users.noreply.github.com>
    Co-authored-by: Daniel Roth <daroth@microsoft.com>
    Co-authored-by: Victor Dibia <chuvidi2003@gmail.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Shawn Henry <sphenry@gmail.com>
    Co-authored-by: Javier Calvarro Nelson <jacalvar@microsoft.com>
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: Korolev Dmitry <deagle.gross@gmail.com>
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Reuben Bond <reuben.bond@gmail.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    Co-authored-by: wuweng <wuweng@microsoft.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Giles Odigwe <79032838+giles17@users.noreply.github.com>
    Co-authored-by: Daniel Cazzulino <daniel@cazzulino.com>
    Co-authored-by: kzu <169707+kzu@users.noreply.github.com>
    
    * Updated azure-ai-projects package version and small fixes (#2139)
    
    * Python: [Feature Branch] Resolve CI issues (#2143)
    
    * Small documentation and code fixes
    
    * Small fix in documentation
    
    * Addressed PR feedback
    
    * Added AI Search example
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Reuben Bond <203839+ReubenBond@users.noreply.github.com>
    Co-authored-by: Peter Ibekwe <109177538+peibekwe@users.noreply.github.com>
    Co-authored-by: Jeff Handley <jeffhandley@users.noreply.github.com>
    Co-authored-by: Daniel Roth <daroth@microsoft.com>
    Co-authored-by: Victor Dibia <chuvidi2003@gmail.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Shawn Henry <sphenry@gmail.com>
    Co-authored-by: Javier Calvarro Nelson <jacalvar@microsoft.com>
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    Co-authored-by: Korolev Dmitry <deagle.gross@gmail.com>
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Reuben Bond <reuben.bond@gmail.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    Co-authored-by: wuweng <wuweng@microsoft.com>
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Giles Odigwe <79032838+giles17@users.noreply.github.com>
    Co-authored-by: Daniel Cazzulino <daniel@cazzulino.com>
    Co-authored-by: kzu <169707+kzu@users.noreply.github.com>
  • Python: Handle agent user input request in AgentExecutor (#2022)
    * Handle agent user input request in AgentExecutor
    
    * fix test
    
    * Address comments
    
    * Fix tests
    
    * Fix tests
    
    * Address comments
    
    * Address comments
  • Python: Fix underlying tool choice bug and all for return to previous Handoff subagent (#2037)
    * Fix tool_choice override bug and add enable_return_to_previous support
    
    * Add unit test for handoff checkpointing
    
    * Handle tools when we have them
  • Python: Updates to Tools (#1835)
    * updated tool samples
    
    * mypy and readme fixes
    
    * updated call logic
    
    * added function invocation config
    
    * added include detailed error
    
    * added tests
    
    * updated FRC exception handling
    
    * updated tests
    
    * fix oai test
    
    * fix name in sample
    
    * imporoved tests coverage and removed some dead code paths
  • Python: Introducing the Anthropic Client (#1819)
    * initial version of anthropic connector
    
    * updated implementation and added tests
    
    * fix type and readme
    
    * mypy fix and int tests enabled
    
    * add integration test setup
    
    * updated based on comments
    
    * improved function result handling
    
    * added extra unordered test
    
    * updated from review
    
    * fix tool choice handling
    
    * same fix for chat client
  • Python: Added thread to AgentRunContext (#1732)
    * Added thread to agent run context
    
    * Added sample
    
    * Update python/samples/getting_started/middleware/thread_behavior_middleware.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Small fix
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • Python: [BREAKING] Python: Intro group chat and refactor orchestrations. Fix as_agent(). Standardize orchestration start msg types. (#1538)
    * Intro group chat and refactor magentic. Fix as_agent()
    
    * Cleanup and improvements
    
    * Add as_agent docstring clarification
    
    * Standardize orchestration messages to use agent-style inputs.
    
    * Simplify group chat constructs
    
    * Further cleanup
    
    * Add sk to af group chat migration sample. Update README.
    
    * Improvements and simplifications
    
    * consolidating shared orchestration logic
    
    * Further clean up
    
    * Add group chat sample
    
    * Improve typing
    
    * Fix test imports
    
    * Fix readme links
    
    * Cleanup per PR Feedback
  • Python: Update README to list all available examples (#1394)
    * Initial plan
    
    * Update Python samples README with comprehensive example tables
    
    Co-authored-by: dmytrostruk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Fix relative links to use ./ prefix in README
    
    Co-authored-by: dmytrostruk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Remove ./ prefix from link display text while keeping it in URLs
    
    Co-authored-by: dmytrostruk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Add missing MCP authentication example to README
    
    Co-authored-by: dmytrostruk <13853051+dmytrostruk@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: dmytrostruk <13853051+dmytrostruk@users.noreply.github.com>
  • Python: DevUI - Internal Refactor, Conversations API support, and per… (#1235)
    * Python: DevUI - Internal Refactor, Conversations API support, and performance improvements
    
    Comprehensive refactor of DevUI package including samples relocation,
    frontend reorganization, OpenAI Conversations API support, and critical
    performance and code quality improvements.
    
    Key Changes:
    
    Architecture & Organization
    - Moved DevUI samples to python/samples/getting_started/devui/
    - Consolidated with other framework samples for better discoverability
    - Added .env.example files and comprehensive README
    - Restructured frontend components into feature-based folders (agent, workflow, gallery, layout)
    - Created new OpenAI-compliant message renderers (devui should render oai responses types primarily)
    
    New Features
    - Added _conversations.py (467 lines) - Full conversation storage abstraction, replaces the /threads endpoint to better match oai conversations api
    - Implements OpenAI Conversations API for thread management, Supports in-memory and extensible storage backends
    
    API Simplification
    - Use 'model' field as entity_id (agent/workflow name) instead of extra_body
    - Use standard OpenAI 'conversation' field for conversation context.
    
    Performance & Quality Improvements
    - Improved context management in MessageMapper with bounded memory (~500KB max)
    - Implemented hybrid LRU + cleanup approach to prevent unbounded memory growth
    - General QOL improvement - Eliminated ~150 lines of dead/duplicate code, Consolidated helper functions into _utils.py, Extracted magic numbers to module-level constants, Optimized conversation item lookups with index-based approach
    
    Testing
    - Added test_conversations.py (13 tests)
    - Added test_performance_fixes.py (9 tests)
    - Updated existing tests for code consolidation
    - 53 tests passing
    
    Impact: 76 files changed: +4,106 insertions, -2,373 deletions
    All linting and formatting checks passing. No breaking changes - backward compatible.
    
    Migration: Samples moved to python/samples/getting_started/devui/
    
    * readme lint fixes
    
    * initial support for function approval and minor ui fixes
  • Python: [BREAKING] Python: Rename workflow to workflows (#1007)
    * Rename workflow to workflows
    
    * Update occurence of workflow to new name
  • Python: Update README files: Fill empty documentation and expand minimal content (#980)
    * Initial plan
    
    * Fill empty python/samples README and expand dotnet custom implementation README
    
    Co-authored-by: dmytrostruk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Fix broken documentation links in main README
    
    Co-authored-by: dmytrostruk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Fix installation instructions in Python main package README
    
    Co-authored-by: dmytrostruk <13853051+dmytrostruk@users.noreply.github.com>
    
    * Address PR feedback: revert main README and Python package README, remove empty prerequisites section and repository link
    
    Co-authored-by: dmytrostruk <13853051+dmytrostruk@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: dmytrostruk <13853051+dmytrostruk@users.noreply.github.com>
  • Python: added poe setup and docs (#131)
    * added poe setup and docs
    
    * smaller bandit exclude
    
    * updated poe
    
    * updated naming
    
    * added something in samples
    
    * exclude docs from bandit
    
    * updated readme
    
    * removed ds_store
    
    * updated readme