Commit Graph

1974 Commits

  • .NET: Fix samples, improve readme language and add readme to sln. (#942)
    * Fix samples, improve readme language and add readme to sln.
    
    * Fix threading in openai samples too.
  • .NET: Change Runtime namespaces to Microsoft.Agents.AI.Runtime (#957)
    * Rename MEAI.Runtime to MAAI.Runtime.
    
    * Missed.
  • Python: consolidate lab packages into a single one; update contribution guidelines (#940)
    * consolidate lab packages into a single one; update contribution guidelines
    
    * update dep list
    
    * add poe tasks; fix tests and lint erros
    
    * add lab tests for CI
    
    * fix test
    
    * update root pyproject.toml
  • .NET: Change Hosting namespaces to Microsoft.Agents.AI.Hosting (#953)
    * Rename MEAI.Hosting to MAAI.Hosting.
    
    * dotnet format.
  • .NET Workflows - Introduce support for Local variable scope (#944)
    * Prepare for update
    
    * Checkpoint
    
    * Comments
    
    * All fixed
    
    * Mixed casre test added
    
    * Rollback nuget
    
    * Remove redundant restorable
    
    * Namespace
  • Python: workflow instance should not be invoked concurrently (#948)
    * workflow instance should not be invoked concurrently
    
    * address comments
  • feat: Solidify Concurrency Model for Inproc Workflows (#925)
    * Disallow execution of multiple workflows at once
    * Define notion of executor Reset() to allow reuse of workflows with shared executor instances
    * Switch to delivering all messages to a single executor sequentially, with executors running in parallel
  • Python: Added chat middleware and more examples (#883)
    * Added example with stateful middleware
    
    * Added chat middleware
    
    * Updated middleware example with override scenario
    
    * Small revert
    
    * Small fixes
    
    * Added kwargs to context objects
    
    * Added README
    
    * Added function middleware to chat client
    
    * Small refactoring
    
    * Reverted example files
    
    * Made MiddlewareWrapper generic
    
    * Added Middleware exception
    
    * Small refactoring
    
    * Small fix
  • .NET: Adding a few small sample improvements (#914)
    * A few small sample improvements
    
    * Address PR comments.
    
    * Simplify Mcp sample further.
  • Python: Add support for Mem0 Open Memory (#876)
    * Add support for Mem0 Open Memory
    
    * Linting fixes
    
    * Linting fixes
    
    * Add sample and documentation
    
    * Small fixes
    
    * Update sample code imports/class names for new package structure
    
    * Improved typing
    
    ---------
    
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
  • Python: typo fix (#920)
    * typo fix
    
    * fixed two other typos
  • Python: support checkpoints for workflow orchestrations and sub-workflows (#863)
    * Magentic checkpoint wip
    
    * Magentic checkpoint updates
    
    * Support checkpointing for magentic orchestration.
    
    * Checkpointing for sub-workflows
    
    * Use _execute_contexts instead of _pending_requests
    
    * Remove unnecessary type ignores
    
    * Support checkpoints for other orchestrations, refactor some code.
    
    * Regenerate uv.lock
  • Rename AI Agent packages to use Microsoft.Agents.AI (#913)
    * Rename AI Agent packages to use Microsoft.Agents.AI
    
    * Fix for build
    
    * Fix formatting
    
    * Fix formatting
    
    * Ignore in VSTHRD200 in migration samples
    
    * Ignore in VSTHRD200 in migration samples
    
    * Add some missing projects and run format
    
    * Fix build errors
    
    * Address code review feedback
    
    * Fix merge issues
    
    ---------
    
    Co-authored-by: Mark Wallace <markwallace@microsoft.com>
  • [BREAKING] Python: Observability cleanup (#905)
    * Further observability cleanup and update telemetry samples
    
    * Add VS Code Extension config
    
    * Fix unit tests
    
    * Fix unit tests
    
    * Add more comments
    
    * Remove live metric
  • .NET Workflows - Declarative update for AzureAgentProvider usage (#907)
    * Updated
    
    * Update dotnet/src/Microsoft.Agents.Workflows.Declarative/Extensions/IWorkflowContextExtensions.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Constant / override
    
    * Namespace
    
    * Protect against race
    
    * Simplify collection usage
    
    * Rollback name resolution
    
    * One more rollback
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • Python: [BREAKING] updated structure and samples (#875)
    * updated structure and samples
    
    * updated names and removed cross tests
    
    * updated projects etc
    
    * updated tests
    
    * updated test
    
    * test fixes
    
    * removed devui for now
    
    * updated all-tests task
    
    * removed old style configs
    
    * remove coverage from tests
    
    * updated to unit tests with all-tests
    
    * updated foundry everywhere
    
    * fix azure ai tests
    
    * fix merge tests
    
    * fix mypy
  • Python: [BREAKING] Remove Request Interceptor Architecture - Simplify Sub-workflow Communication (#898)
    * removed intercepts_request and simplified how interception is handled
    
    * parameterize SubWorkflowRequestInfo
    
    * revert back the field rename of RequestResponse
    
    * remove duplicate tests
    
    * ignore type error
    
    * remove SubWorkflowResponse
    
    * Remove SubWorkflowRequestInfo and update RequestInfoMessage with source_executor_id for correlation
  • .NET: Update Workflow Input/Output Redesign (#881)
    * feat: Make Executor id field mandatory
    
    When checkpointing is involved, it is critical to keep executor ids consistent between runs, even when recreating a new object tree for the workflow.
    
    The default id-setting mechanism generated a guid for part of the id, making it not work when restoring from a checkpoint.
    
    This change prevents this situation from arising.
    
    * feat: Enable running untyped Workflows
    
    With the change to enable delay-instantiation of executors and support for async Executor factory methods, we must instantiate the starting executor to know what are the valid input types for the workflow.
    
    To avoid forcing instantiation every time, and to better support workflows with multiple input types, we enable support for build and interacting with the base Workflow type without type annotations, and remove the requirement to know a valid input type when initiating a run.
    
    * feat: Support Output from any executor and multiple outputs.
  • .NET: Add AgentWorkflowBuilder group chat (#861)
    * Add AgentWorkflowBuilder group chat
    
    And fix a variety of issues along the way:
    - Use DateTime{Offset}.UtcNow rather than Now
    - AIAgentHostExecutor shouldn't be publishing empty messages
    - Sequential workflows should be flowing all history and not just the output from the previous agent as the input into the next agent
    - Renamed some of the new agent workflow methods... still not super happy with the shape, though
    - Simplified handoffs builder, e.g. using a hashset with a custom comparer instead of a dictionary
    - Improved multi-service use by trying to change assistant->user role for messages created by other agents
    - Changed MessageMerger to rely on M.E.AI's coalescing more and to avoid empty contents / text
    - Ensured that messages from ChatClientAgent include MessageId and CreatedAt timestamps
    - Avoided including instructions for agents in a handoff workflow that don't have any handoffs
    - Removed the unnecessary end function in handoffs
    - Improved naming of executors to include agent name for debuggability
    - Use "N" formatting with Guid.ToString everywhere, to avoid the unnecessary extra dash character which is also not valid in various places (like function tool names)
    - Replace `params T[]` with `params IEnumerable<T>` to make public APIs more flexible in what they consume
    
    * Address feedback
    
    - Fix unintentional provider change in sample
  • .NET: Use observability term (#889)
    * use observability term instead of telemetry
    
    * rename telemetry folder to observability
    
    * rolledback changed sample description
  • Python: Fixed parameter handling in OpenAI Responses client (#887)
    * Small fix in OpenAI Responses parameters
    
    * Updated test
  • .NET: [BREAKING] Add GetService for AIContextProviders and ChatMessageStore (#874)
    * Add GetService for AIContextProviders and ChatMessageStore
    
    * Change styling and fix format issues
    
    * Update sample code to allow for missing memory component.
  • Python: Clean left-over WorkflowCompletedEvent (#884)
    * Clean left-over WorkflowCompletedEvent
    
    * Improve comments
    
    * Fix type check error
  • .NET Workflows - Improvements to Declarative Framework (#838)
    * Closure
    
    * Verified
    
    * Update dotnet/src/Microsoft.Agents.Workflows.Declarative/Interpreter/DeclarativeWorkflowContext.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Sample folder
    
    * System scope fix
    
    * Fix link
    
    * Integrate Foundry SDK fix
    
    * File naming fix
    
    * Update dotnet/src/Microsoft.Agents.Workflows.Declarative/Interpreter/DeclarativeWorkflowContext.cs
    
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    
    * Namespace
    
    * Optimize bind
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
  • Python: Allow union types in FanIn edge group (#868)
    * Improve type utils
    
    * Add sample
    
    * Add Union
    
    * Add more test cases
    
    * Add more test cases
    
    * Fix RequestResponse typing to only coerce mapping original_request
    
    ---------
    
    Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
  • Python: [Breaking] Remove WorkflowCompletedEvent, introduce workflow output and migrate to ctx.yield_output() + a huge refactoring (#845)
    * Introduce input and output types for executor and workflow
    
    * WorkflowOutputContext handles two types
    
    * Remove can_handle_types from Executor
    
    * Update validation
    
    * Move workflow executor
    
    * Move workflow executor
    
    * Fix issues in WorkflowExecutor
    
    * refactor executor
    
    * update execute signature to create workflow context within Executor
    
    * fix simple sub workflow test; fix validation
    
    * fix output types in WorkflowExecutor
    
    * fix issue in Executor handling of SubWorkflowRequestInfo
    
    * update tests to use proper workflow output
    
    * update orchestration patterns to use output
    
    * Update sample -- not finished
    
    * Update python/packages/main/tests/workflow/test_workflow_states.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update python/packages/main/tests/workflow/test_concurrent.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * address comments
    
    * WorkflowOutputContext --> WorkflowContext
    
    * remove WorkflowCompletedEvent
    
    * update samples
    
    * Update doc string for important classes; update WorkflowExecutor to support concurrent execution
    
    * use Never instead of None for default type
    
    * Update usage of WorkflowContext[None to WorkflowContext[Never
    
    * address comments
    
    * remove filter for None
    
    * address comments, minor fixes
    
    * quality of life improvement on interceptor types
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET Workflows - Integrate Element Aliasing (#835)
    * Checkpoint
    
    * Update test workflows
    
    * Update workflows/MathChat.yaml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update folder
    
    * Cleanup
    
    * Signed package version
    
    * Rollback nuget.config
    
    * Cleanup
    
    * Set `ProductContext`
    
    * Move product initialization.
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • Python: additional Foundry Tools (#611)
    * initial work on additional foundry tools
    
    * fixes
    
    * fix tests
    
    * fix import
    
    * updated lock
    
    * added hosted MCP for foundry
    
    * fixes
    
    * fix for test
    
    * updated samples
    
    * fix result parsing
  • .NET: [BREAKING] Subclass AgentThread so that different agents have their own threads with their own typed settings. (#798)
    * Subclass AgentThread so that different agents have their own threads with their own typed settings.
    
    * Address PR comment.
    
    * Add unit tests for base abstract threads
    
    * Fix style warning
    
    * Fix stlying
    
    * FIx and suppress warnings as needed.
    
    * Remove covariant thread response types and fix some styling.
    
    * Remove unecessary json property name attributes and make OrchestratingAgentThread private
    
    * Fix break from merge from main.
    
    * Fix formatting
    
    * Fix deserialization bug in Memory sample
    
    * Remove thread deletion from basic samples.
    
    * Remove public constructors for thread subclasses and add more factory methods to concrete agent types.
    
    * Update AgentProxy thread constructors to be internal as well.
    
    * Revert AgentProxyThread to internal
    
    * Change AIContextProvider to internal set
    
    * Change conversation id and message store properties to internal set
    
    * Update styling.
    
    * Seal various thread types.
    
    * Add thread type check for thread deletion
    
    * Fix tests after latest merge from main
    
    * Add thread type checks for thread deletion.
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • Python: update to packaging section of python package design doc (#727)
    * update to packaging section
    
    * added options
    
    * clarification and typo
    
    * updated python packaging guidance, moved discussion to appendix
    
    * moved discussion into ADR
    
    * updated folder strcutre
  • Python: Telemetry and observability follow-up (#833)
    * updated telemetry work
    
    * updated telemetry
    
    * slight improvement
    
    * updated tests
    
    * fixes for telemetry
    
    * fixes for mypy
    
    * added settings setup to runner to avoid error
    
    * streamline usage
    
    * updated tests
    
    * updated tests
    
    * further refinement
    
    * fix dumped item for otel
    
    * removed enable_workflow_otel
    
    * final fixes
    
    * final fixes
    
    * updated samples
    
    * removed exporters
    
    * fix tests
    
    * fixed last import'
    
    * fixed devui
  • Python: Introduce as_tool() for BaseAgent (#684)
    * introduce as_tool for BaseAgent
    
    * fix types
    
    * fix tests
    
    * add async callback support
    
    * address comments
    
    * Update python/packages/main/agent_framework/_agents.py
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
    
    * address comments
    
    ---------
    
    Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
  • Python: add RedisContextProvider (#716)
    * Setting up
    
    * Readme
    
    * Add redis tests path to all-tests
    
    * First pass integration
    
    * Keep provider convention
    
    * First pass integration
    
    * add redis integration tests
    
    * update README.md
    
    * Add basic sample for redis integration
    
    * Add partitioning, add partition-aware tests, improve sample script
    
    * Fix code quality check
    
    * Try to resolve pytest check
    
    * Try to identify if pytest is the cause of failed checks
    
    * Re-enable tests
    
    * Rename redis test file
    
    * Removing some tests to narrow down issue
    
    * Revert, no difference
    
    * Delete temp files
    
    * Starting refactor of RedisProvider
    
    * Build dynamic schema builder, still need to do dynamic embedding model config
    
    * Add scope control
    
    * Complete first pass functionality with OpenAI + HF vectors -> Tests, Samples, Demo to follow
    
    * Fix code quality
    
    * attempt to identify rootcause of failed test
    
    * attempt to identify rootcause of failed test
    
    * Attempt to resolve code quality fail
    
    * Update pyproject.toml for foundry to pin     azure-ai-projects == 1.1.0b3,azure-ai-agents == 1.2.0b3
    
    * Add tests for redisprovider
    
    * Remove invalid tests
    
    * Add API key handling for openai vectorizer
    
    * Update uv.locl
    
    * Use master uv.lock
    
    * Begin sample file, add lazy index creation, fix faulty override
    
    * Index drop and reinit depends on drop_redis_index not overwrite
    
    * Add samples, threading included, escaped queries, verify threading works, sample README.md
    
    * Refactor filters
    
    * Opinionated vars
    
    * Allow filter expression combination
    
    * Try inline stubs for mypy
    
    * Address mypy errors
    
    * Better docstrings, tweaks for feedback
    
    * Tweak example 3 in redis_threads.py sample
    
    * adjust confusing name
    
    * Enrich docstrings
    
    * Add descriptions and comments to samples, externalize vectorizer choice, remove nltk and sentencetransformers dependnecy
    
    * Add descriptions and comments to samples, externalize vectorizer choice, remove nltk and sentencetransformers dependnecy
    
    * Incorporate initial feedback from dmytrostruk
    
    * Fix uv.lock
    
    * Attempt to resolve conflict
    
    * Use remote .tomls
    
    * Sanity check
    
    * fix tests
    
    * Remove hardcoded API key from samples
    
    * Fix incorrect env var
    
    * Make add and redis_search private
    
    * Fix tests relying on private funcs
    
    * Expand tests
    
    * Explainer comments to each test
    
    * Add a 'get_conversation_history' function to RedisProvider - This just returns messages in sequential order. Added 'created_at_*' timestamps to facilitate sequential recovery. function has to be manually invoked by user
    
    * Add agent-framework-redis to  python/pyproject.toml
    
    * Remove get_conversation_history
    
    * improve redis context provider with pydantic techniques and safe index handling patterns
    
    * add RedisChatMessageStore
    
    * remove integration test :(
    
    * fix mypy error
    
    * Remove unused params
    
    * Redo schema validation to be order-invariant, handle attrs (previously throwing errors due to strict ==)
    
    * Expand explanation
    
    * Add ChatMessageStore example
    
    * Fix comments in redis_conversation.py
    
    * Resolving uv.lock conflict, update to match main
    
    * Fix test in redis provider
    
    * Apply suggestion from @ekzhu
    
    * Update python/packages/main/pyproject.toml
    
    ---------
    
    Co-authored-by: Tyler Hutcherson <tyler.hutcherson@redis.com>
    Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
  • Python: Add DevUI to AgentFramework (#781)
    * add initial backend service code for devui
    
    * add tests
    
    * add frontendcode
    
    * ui updates
    
    * update readme
    
    * ui updates and tweaks
    
    * update ui bundle
    
    * improve ui, add react flow base
    
    * add react flow ui, fix background
    
    * update ui, fix introspection bug
    
    * update readme
    
    * update ui build
    
    * add support for multimodal input - both backend and frontend
    
    * update ui build
    
    * refactor as main framework package
    
    * backend and tests refactor
    
    * ui build update
    
    * ui build update and refactor
    
    * update pyproject.toml, update uv.lock
    
    * update ui build
    
    * ui update to fit oai responses types
    
    * add backend updat and readme update
    
    * mypy and other fixes
    
    * add intial dev guide
    
    * update ui and fix workflow bug
    
    * update ui build, add thread support
    
    * type fixes
    
    * update workflow view
    
    * update uv.lock
    
    * fix workflow iport errors
    
    * lint and other fixes
    
    * mypy fixes
    
    * minor update
    
    * update ui build
    
    * refactor to use oai dependencies directly, update examples to samples, improve typing
    
    * readme update
    
    * update ui and ui build
    
    * fix workflow pyright error
    
    * update ui, fix issues with run workflow placement, miniamp menu, etc
    
    * make samples integrate serve
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
  • Python: OpenAI Responses Image Generation Tool (#842)
    * Image generation + Added Samples
    
    * extended image gen tool for responses
    
    * uv fix
    
    * removed hosted image gen
    
    * copilot suggestions
    
    * Update python/packages/main/agent_framework/openai/_responses_client.py
    
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
  • Bump Azure.AI.Agents.Persistent from 1.2.0-beta.4 to 1.2.0-beta.5 (#855)
    ---
    updated-dependencies:
    - dependency-name: Azure.AI.Agents.Persistent
      dependency-version: 1.2.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>