feat: Modularity Enhancement and New use case for Content Generation - #1068
Merged
Conversation
- test_agent_template: update mocks for new get/create_version API (replaces old list_agents/create_agent pattern), patch PromptAgentDefinition and ResourceNotFoundError for full-suite compat - test_agent_factory: fix create_from_team_config assertions for new AgentTemplate constructor signature - test_team_utils: rewrite tests for refactored load_team_config that returns parsed TeamConfig instead of raw dict - test_cosmosdb: fix expected exception type (CosmosResourceNotFoundError) - test_orchestration_manager: add get_executors_list mock, wire _user_interaction_ctx, set user_responses=False for inner-agent test - test_response_handlers: fix indentation in sys.modules stubs - conftest: pre-import backend.app to prevent sys.modules poisoning
…onAgent - Add clarification_tool.py with approval-gated request_user_clarification tool - Inject tool into domain agents via agent_factory extra_tools parameter - Extend AgentTemplate to accept extra_tools list - Rewrite orchestration_manager to detect function_approval_request events, send questions to frontend via WebSocket, and approve after user responds - Remove UserInteractionAgent proxy pattern from orchestration - Re-enable tool_history_leak patch (MAF framework bug workaround) - Fix frontend PlanDataService parser to handle structured JSON format with nested .data wrapping from send_status_update_async - Update orchestration_manager tests for new return format
…omments - Remove diagnostic per-message cache dump from tool_history_leak patch - Replace print() with logger.info() in patch application - Remove unused imports from orchestration_manager.py - Remove stale diagnostic dump from agent_template.py - Add type: ignore[attr-defined] on intentional monkey-patch accesses - Add noqa: ARG001 on by-design unused questions param - Add capability comments on MagenticBuilder config and request_info events - Change bare Exception to RuntimeError for plan cancellation All 681 tests pass.
…erification checklists - Add RE-INVOCATION CHECK to prevent redundant blueprint calls on resume - Add explicit VERIFICATION CHECKLIST matching blueprint items exactly - Separate BLUEPRINT STEP, QUESTION RULE, and EXECUTION phases - Apply to both HRHelperAgent and TechnicalSupportAgent
Upstream PR #5690 (agent-framework 1.4.0) only fixes the fc_ duplicate variant, not the orphaned function_call_output variant that triggers 'Progress ledger creation failed' in multi-agent Magentic workflows.
…om AppConfig - AGENT_TEAM_FILE was never referenced anywhere in the codebase - REASONING_MODEL_NAME duplicated ORCHESTRATOR_MODEL_NAME (already present)
- azure_config.py: superseded by direct model construction in orchestration_manager - orchestration/patches.py: superseded by patches/tool_history_leak.py - Neither module is imported anywhere in the codebase
- agent-framework==1.6.0 (GA umbrella) - agent-framework-foundry==1.6.0 (Foundry integration) - All existing imports validated — no breaking changes
…0 upgrade - Fix agent_template.py: OpenAIChatOptions, cast(PromptAgentDefinition), typed dicts, update.text - Fix orchestration_manager.py: Optional typing, asyncio.iscoroutine, assert narrowing - Fix frontend tsconfig.json: add ignoreDeprecations for TS 6.0 - Fix mcp_server lint: factory.py, mcp_server.py, README formatting - Add pyrightconfig.json (root + mcp_server) for import resolution - Add/update pylintrc configs to suppress no-name-in-module, import-error - Fix test_response_handlers.py: type: ignore for Mock .called access - Collapse duplicate pylint sections in root pyproject.toml
…mework 1.6.0 - Flatten agent_teams JSON to use tool-based config (remove legacy fields) - Simplify agent_factory.py and agent_template.py for new framework API - Remove pyrightconfig.json files (consolidated in pyproject.toml) - Update tests to match simplified agent creation flow - Add e2e-test pyproject.toml - Minor lint and type fixes across mcp_server and frontend models
…cess
The MCP image tool was returning direct blob URLs that are inaccessible
from the browser (private container, SAS generation often fails locally).
- Add backend_url config to MCP server settings
- Update image_service to return backend proxy URL when BACKEND_URL is set
- Add BACKEND_URL env var to MCP container in Bicep for deployed scenario
The backend already has a /api/v4/images/{blob_name} proxy endpoint that
fetches from blob storage using its own credential.
…s, upgrade Dockerfiles - Remove dead Key Vault resource and all references (secret, RBAC, DNS zone) - Fix circular dependency: BACKEND_URL uses constructed FQDN pattern - Fix AZURE_OPENAI_IMAGE_DEPLOYMENT: use deployment variable not hardcoded string - Add 'generated-images' blob container to storage account - Build SUPPORTED_MODELS dynamically from deployed model names - Add Cognitive Services OpenAI Contributor role for image generation - Add gpt5Mini and gptImage params to main.parameters.json - Add AZURE_OPENAI_IMAGE_DEPLOYMENT to backend container env - Upgrade all Dockerfiles from EOL Bullseye to Bookworm - Replace MCP devcontainer base with slim production image - Remove dead AZURE_AI_SEARCH_API_KEY from app_config.py - Disable MCP auth by default (runs behind backend Easy Auth) - Integrate seed_knowledge_bases.py into post-deploy scripts (PS1 + bash)
- azure.yaml now uses main.bicep (pre-built images from public registry) - azure_custom.yaml explicitly uses main_custom.bicep (build from source) - Port to main_custom.bicep: - Add Cognitive Services OpenAI Contributor role for image generation - Build SUPPORTED_MODELS dynamically from deployed model names - Add AZURE_OPENAI_IMAGE_DEPLOYMENT to backend container env - Add 'generated-images' blob container to storage account
- Suppress no-hardcoded-env-urls on private link DNS zones - Replace hardcoded login.microsoftonline.com with environment().authentication.loginEndpoint - Remove unused storageContainerName param - Remove unused aiSearchIndexName variable (main_custom) - Remove unnecessary dependsOn on aiFoundryAiServices - Add non-null assertion on guarded conditional module access - Suppress BCP318 on unconditional userAssignedIdentity access - Suppress no-unused-params on azd-injected container image params (main_custom) - Suppress BCP334 theoretical length warning on container registry name (main_custom)
- Change gptImageModelName from gpt-image-1 to gpt-image-1.5 - Update gptImageModelVersion from 2025-04-15 to 2025-12-16 - Increase gptImageModelCapacity from 1 to 5 RPM (matches main_custom.bicep)
- Add infra/scripts/post_deploy.ps1: interactive use-case menu that seeds Cosmos DB teams, uploads blobs, creates search indexes, vector stores, and Foundry IQ knowledge bases directly (no backend required) - Move seed_vector_stores.py and seed_knowledge_bases.py into infra/scripts/ - Remove top-level scripts/ directory (seed_teams.py superseded) - Update azure.yaml postdeploy hook to invoke post_deploy.ps1 - Update requirements.txt with azure-cosmos, aiohttp, httpx deps - Fix .gitignore: scope scripts/ rule to top-level only, remove obsolete entry - Update agent_template.py error message to reflect new script path
- Make APPLICATIONINSIGHTS_CONNECTION_STRING optional in app_config.py - Fix frontend PlanDataService.tsx TeamAgentBE to Agent mapping - Remove invalid ignoreDeprecations from tsconfig.json (TS 5.8+)
…s dep - Add azure-ai-projects to requirements.txt (fixes vector store ModuleNotFoundError) - Track step failures with $script:hasErrors flag - Exit with code 1 and report errors when any step fails - Change WARNING to ERROR with red output for failed steps - Only print 'ready to use' when all steps succeed
- Detect when toolbox stores outdated project_connection_id for KB tools - Auto-update toolbox and patch MCPTool at runtime with correct connection - Add search_connection_name lookup support in mcp_config
- Change AI Search Foundry connection from ApiKey to AAD with managed identity - Add Search Service Contributor role for user-assigned MI - Add Cognitive Services OpenAI User role for Search system MI on AI Services - Add post-deploy step to seed KB MCP RemoteTool connections
…mpts Domain agents now call request_user_clarification tool directly. The framework pauses via function_approval_request events and resumes when the user answers — no intermediary agent routing needed. - Rewrite clarification_policy to describe tool-based pause/resume - Remove QUESTION RELAY RULE and relay-based RE-INVOCATION RULE - Add explicit 'do NOT select UserInteractionAgent' warnings - Update stale comment in agent_factory.py
…tent gen use case - Replace Azure OpenAI references with Microsoft Foundry Service - Add Azure AI Search as a separate pricing line item - Add Content Generation scenario to use cases table - Update architecture and agent flow diagrams
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5d45e267-6090-4be3-9a18-eaafa983b38c
docs: removed broken link
fix: Code quality comments
refactor: remove unused imports in test files for improved code quality
fix: updated the documents and resolve the code quality issue
Roopan-Microsoft
approved these changes
Jul 21, 2026
Avijit-Microsoft
approved these changes
Jul 23, 2026
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Content Pack System Enhancements:
.github/agents/speckit.contentpack.agent.md..github/prompts/speckit.contentpack.prompt.md.Deployment and Workflow Updates:
devbranch instead ofdev-v4, and incremented image tags fromv4tov5to support the next major version. [1] [2] [3] [4] [5] [6]gpt-5.4-miniand2026-03-17, respectively, to leverage the latest AI capabilities.Script and Path Refactoring:
infra/scripts/pre-provision/andinfra/scripts/post-provision/directories for better organization and maintainability. [1] [2] [3] [4] [5]Configuration and Security Improvements:
secretstovarsin deployment jobs for improved security and flexibility. [1] [2]Dependency and Coverage Updates:
.github/requirements.txtto support new features and testing tools..coveragercfile, possibly to reconfigure or migrate coverage settings.These changes together modernize the agent content pack system, streamline deployment for the new version and branch structure, and improve the maintainability and security of the CI/CD process.
Does this introduce a breaking change?
How to Test
What to Check
Verify that the following are valid
Other Information