Skip to content

Conversation

@Roopan-Microsoft
Copy link
Collaborator

Purpose

  • ...

Does this introduce a breaking change?

  • Yes
  • No

How to Test

  • Get the code
git clone [repo-address]
cd [repo-name]
git checkout [branch-name]
npm install
  • Test the code

What to Check

Verify that the following are valid

  • ...

Other Information

Fr4nc3 and others added 30 commits October 6, 2025 11:37
Replaced semantic-kernel imports and dependencies with agent-framework in config, models, and utils. Updated pyproject.toml to add agent-framework and remove semantic-kernel. This refactor aligns the codebase with the new agent-framework library for agent and kernel functionality.
Migrate from semantic-kernel to agent-framework
Adds a comprehensive AVM post-deployment guide and refactors post-deployment scripts (PowerShell and Bash) to support both azd and ARM/Bicep deployments, including improved Azure subscription selection and output parsing. Updates FastAPI app to use a lifespan context for agent cleanup on shutdown. Refactors CosmosDB and config code for clarity and style. Updates workflow files for more flexible test and deployment handling. Introduces new frontend components and hooks for plan cancellation dialog and alert, and updates related styles and service logic.
Added agent-framework-core, agent-framework-azure-ai, agent-framework-copilotstudio, agent-framework-devui, agent-framework-mem0, and agent-framework-redis as dependencies from the Microsoft agent-framework repository. Updated azure-ai-agents to version 1.2.0b5 and upgraded aiohttp to 3.13.1.
Replaced references to agent_framework with semantic_kernel in app_config.py and utils_kernel.py. Updated models in messages_kernel.py to use KernelBaseModel and Field from semantic_kernel.kernel_pydantic for consistency with the new package structure.
Deleted the websocket_streaming.py module and removed the create_kernel method from AppConfig, as the system now uses Azure AI Agent Project pattern. Added placeholder files for messages_af.py and utils_af.py to support future Azure Foundry integration.
Introduces new Pydantic-based data models in messages_af.py to replace KernelBaseModel from semantic_kernel. All original model names and structures are preserved to support incremental migration from the previous framework.
Deleted src/backend/common/utils/check_deployments.py as it is no longer needed. This script was used to check Azure AI Foundry model deployments and their statuses.
Introduces the main FastAPI router for agent framework v3, including endpoints for team management, plan creation, approval, agent messaging, and configuration upload. Adds callback handlers for agent responses and streaming, global debug access, and service skeletons for agents, base API, foundry, MCP, and team management. These files establish the backend structure for multi-agent orchestration and extensible service integration.
Introduces common lifecycle management for agents, new agent configuration models, and refactors ProxyAgent and ReasoningAgentTemplate to use agent_framework primitives. Removes Semantic Kernel dependencies, adds Azure AI Search integration, and streamlines agent creation and invocation logic for improved maintainability and extensibility.
Updated import paths from 'v3' to 'af' for consistency and modularity. Improved error handling, logging, and tool/resource collection logic in FoundryAgentTemplate. Cleaned up unused Bing references and clarified code interpreter and MCP tool handling. These changes enhance maintainability and agent lifecycle management.
Changed imports from 'agent_framework.azure' to 'agent_framework_azure_ai' for AzureAIAgentClient in foundry_agent.py and reasoning_agent.py. Also removed an unused import in lifecycle.py to clean up dependencies.
Migrates orchestration logic and related services from semantic-kernel (v3) to agent_framework, updating imports, manager classes, and workflow construction. Updates HumanApprovalMagenticManager and OrchestrationManager to use agent_framework APIs, adapts callback handling, and ensures compatibility with new message and agent structures. Cleans up legacy code and improves maintainability for future agent_framework-based enhancements.
Deleted the entire v3 API router, callbacks, and common service modules including agent, base API, foundry, and MCP services, as well as related configuration, models, and orchestration files. This change removes the v3 backend implementation, likely in preparation for a major refactor or migration.
Renamed src/backend/app_kernel.py to src/backend/app.py. Updated import paths to reference 'af' modules instead of 'v3' and 'messages_af' instead of 'messages_kernel' to reflect new module structure.
Updated Dockerfiles, app.py, and tests to reference 'app' instead of 'app_kernel'. This change standardizes the application entry point and module imports, improving consistency across the backend codebase.
Replaced references to deprecated Semantic Kernel and v3 modules with agent_framework (af) equivalents throughout backend, database, and test files. Removed obsolete messages_kernel and utils_kernel files, updated import paths, and fixed minor typos. Updated documentation and README to reflect new entry points and usage.
Replaced Semantic Kernel dependencies and terminology with agent_framework equivalents across backend modules, including response handlers, configuration, agent factories, orchestration, and utility functions. Updated imports, class names, comments, and logic to reflect agent_framework usage. Adjusted test files and MCP authentication to use agent_framework constructs. This refactor enables the system to operate with agent_framework as the core agent orchestration and messaging library.
Deleted src/mcp_server/auth.py, which contained MCP authentication and HostedMCPTool setup logic for the employee onboarding system. This change may indicate a refactor, deprecation, or migration of authentication and plugin management functionality.
Reformatted code in human_approval_manager.py and orchestration_manager.py for better readability, including consistent indentation, line breaks, and argument formatting. No functional changes were made; this refactor aims to enhance maintainability and clarity.
marktayl1 and others added 17 commits December 11, 2025 09:29
…ontract-v4

docs: Rai and doc image change rfp contract v4
The /config endpoint no longer applies html.escape to BACKEND_API_URL and AUTH_ENABLED environment variables. This change ensures the values are returned as-is, which is more appropriate for non-HTML config data.
Remove HTML escaping from config environment variables
…compliance-dev-v4-1

docs: Scenario name change contract compliance dev v4 1
fix: updated the index creation for rfp and contract compliance
docs: Add required notice to transparency faq
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request migrates the codebase from version 3 (v3) to version 4 (v4), involving path updates, API endpoint changes, and dependency management.

Key Changes:

  • Backend and test import paths updated from v3 to v4 (or af for agent framework)
  • Frontend API endpoints migrated from /v3/ to /v4/
  • WebSocket paths updated to use v4 endpoints
  • Frontend dependencies added to pyproject.toml and lock file generated

Reviewed changes

Copilot reviewed 118 out of 144 changed files in this pull request and generated 15 comments.

Show a summary per file
File Description
src/tests/mcp_server/conftest.py Updated MCP server path from v3 to v4
src/tests/agents/test_human_approval_manager.py Changed imports from v3 to af (agent framework)
src/tests/agents/test_foundry_integration.py Updated imports and comments to reference v4
src/tests/agents/interactive_test_harness/*.py Updated imports from v3 to af namespace
src/frontend/uv.lock Added comprehensive dependency lock file with package versions
src/frontend/src/services/WebSocketService.tsx Updated socket paths to v4 and removed plan subscription methods
src/frontend/src/services/TeamService.tsx Changed API endpoints from /v3/ to /v4/
src/frontend/src/pages/PlanPage.tsx Updated comments and added disconnect calls
src/frontend/src/components/common/TeamSelector.tsx Added new RFP team to defaults
src/frontend/src/api/apiService.tsx Updated all API endpoints to v4
src/frontend/pyproject.toml Added frontend dependencies
src/frontend/frontend_server.py Removed HTML escaping and improved formatting
src/mcp_server/README*.md Updated documentation paths from v3 to v4
src/mcp_server/auth.py File deleted (entire authentication module removed)
src/backend/v4/**/__init__.py Added new v4 backend package structure
Files not reviewed (1)
  • src/frontend/package-lock.json: Language not supported
Comments suppressed due to low confidence (2)

src/tests/agents/test_foundry_integration.py:30

  • Call to method SearchConfig.from_env with too few arguments; should be no fewer than 1.
    src/backend/v4/magentic_agents/models/agent_models.py:68
  • This assignment assigns a variable to itself.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +73 to +74
const defaultTeamIds = ['team-1', 'team-2', 'team-3','team-clm-1'];
const defaultTeamNames = ['Human Resources Team', 'Product Marketing Team', 'Retail Customer Success Team','RFP Team'];
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing spacing in the array formatting. The array should have consistent spacing around elements for better readability.

Copilot uses AI. Check for mistakes.
Comment on lines +40 to +41
backend_url = os.getenv("BACKEND_API_URL", "http://localhost:8000")
auth_enabled = os.getenv("AUTH_ENABLED", "false")
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed HTML escaping from configuration values that will be exposed in the API response. This could potentially lead to XSS vulnerabilities if these values are rendered directly in HTML without proper escaping on the client side. Ensure that the frontend properly sanitizes these values before rendering them in the DOM.

Copilot uses AI. Check for mistakes.
const HomeInput: React.FC<HomeInputProps> = ({ selectedTeam }) => {
const [submitting, setSubmitting] = useState<boolean>(false);
const [input, setInput] = useState<string>("");
const [raiError, setRAIError] = useState<RAIErrorData | null>(null);
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused variable raiError.

Copilot uses AI. Check for mistakes.
static async deleteTeam(teamId: string): Promise<boolean> {
try {
const response = await apiClient.delete(`/v3/team_configs/${teamId}`);
const response = await apiClient.delete(`/v4/team_configs/${teamId}`);
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused variable response.

Copilot uses AI. Check for mistakes.
Comment on lines +301 to +303
# if self._agent and isinstance(self._agent, AzureAIAgentClient) and self._agent._should_delete_agent:
# try:
# if self.client and self._agent.agent_id:
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment appears to contain commented-out code.

Copilot uses AI. Check for mistakes.
# Unregister from registry if present
try:
agent_registry.unregister_agent(self)
except Exception:
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
if self._agent and hasattr(self._agent, "close"):
try:
await self._agent.close()
except Exception:
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
# Unregister from registry
try:
agent_registry.unregister_agent(self)
except Exception:
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
if self.client:
try:
await self.client.close()
except Exception:
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
if self.creds:
try:
await self.creds.close()
except Exception:
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants