Skip to content

chore: merge james-dev into int-agentic#411

Merged
james-tn merged 28 commits intoint-agenticfrom
james-dev
Feb 23, 2026
Merged

chore: merge james-dev into int-agentic#411
james-tn merged 28 commits intoint-agenticfrom
james-dev

Conversation

@james-tn
Copy link
Contributor

Auto-created by CI/CD pipeline run 22329617230

James N. and others added 28 commits February 17, 2026 12:02
…ped-contract workflow

Scripts 6-8 for the MCP agent demo:

- workflow_typed_contracts.py: 4-agent IT security incident response pipeline
  with Pydantic-enforced contracts at every boundary (SecurityAlert,
  ThreatAssessment, ImpactAnalysis, IncidentResponse)

- mcp_server_hybrid.py: Single MCP endpoint exposing BOTH tool types:
  * Strict-schema: triage_alert, assess_threat, create_response (Pydantic)
  * Natural-language: ask_security_advisor, explain_for_customer (prose)
  * Shared session state across all tools

- mcp_client_hybrid.py: 5-step incident flow using both tool types with
  explicit context passing between steps

- README.md: Updated from 6 to 8 capabilities with Hybrid Mode architecture
  diagram and Quick Start sections 7-8
- Delete workflow_local_remote.py (old Script 3 with extra LLM call)
- Add workflow_proxy_agent.py: MCPProxyAgent (BaseAgent, no LLM)
  calls MCP tools directly via call_tool()  zero local LLM overhead
- Simplify MCPProxyAgent: extract common _call() method, module-level
  _last_text() helper, remove verbose static methods
- Fix workflow_typed_contracts.py: add async with context managers
- Update README: merge Script 9 into Script 3 position, update
  architecture diagram, Quick Start, How It Works sections
- workflow_proxy_agent.py: remove 'traditional vs proxy' framing
  MCPProxyAgent is the standard approach for remote agent integration
- Delete workflow_typed_contracts.py: not relevant to MCP integration
- README: 7 scripts, renumber hybrid 6-7, remove typed-contract sections
- mcp_server_langgraph.py: LangGraph ReAct agent exposed as MCP server
  on port 8003 with architecture tools (pattern eval, migration estimate,
  tech stack recommendation)
- workflow_group_chat.py: MAF GroupChatBuilder orchestration with LLM
  planner routing between local BusinessStrategist (MAF) and remote
  TechnicalArchitect (LangGraph via MCP)
- pyproject.toml: add langgraph, langchain-openai, langchain-core deps
- README.md: update to 9 scripts, add cross-framework architecture
  diagram, Quick Start sections, and dependency table entries
…nt, finalize group chat with inline Planner
…tterns (Agent-as-Tool + Agent Adapter), add conceptual architecture
Breaking changes migrated:
- agent-framework 1.0.0rc1: ChatAgent->Agent, AgentThread->AgentSession,
  run_stream->run(stream=True), model->default_options(ChatOptions),
  WorkflowOutputEvent/AgentRunEvent/RequestInfoEvent->unified WorkflowEvent,
  MagenticBuilder now uses constructor kwargs, orchestrations moved to
  agent_framework_orchestrations package
- fastmcp 3.0.2: removed mcp version pin (now pulled by fastmcp),
  no code changes needed (fully compatible)

Files updated:
- agentic_ai/agents/agent_framework/single_agent.py
- agentic_ai/agents/agent_framework/multi_agent/handoff_multi_domain_agent.py
- agentic_ai/agents/agent_framework/multi_agent/reflection_agent.py
- agentic_ai/agents/agent_framework/multi_agent/magentic_group.py
- agentic_ai/applications/pyproject.toml (agent-framework==1.0.0rc1)
- agentic_ai/workflow/fraud_detection_durable/pyproject.toml (agent-framework==1.0.0rc1)
- mcp/pyproject.toml (fastmcp==3.0.2)
- tests/test_agent_framework_rc1_regression.py (51 regression tests, all passing)
The Docker build uses requirements.txt (not pyproject.toml/uv.lock), and it
still had agent-framework-core==1.0.0b260130 pinned, which conflicts with
agent-framework==1.0.0rc1 requiring agent-framework-core==1.0.0rc1.
Pushes made by GITHUB_TOKEN don't trigger other workflows (GitHub
Actions limitation to prevent infinite loops). This meant the auto-merge
into int-agentic never triggered promote-to-main.yml.

Now uses secrets.GH_PAT with fallback to GITHUB_TOKEN so:
1. If GH_PAT is configured: merge triggers promote-to-main.yml
2. If not: merge still works, but promotion PR must be created manually
Allows manual triggering when auto-trigger is missed (e.g. after
GITHUB_TOKEN-based merges that don't fire downstream workflows).
1. MCP Cosmos DB: Replace AzureCliCredential (not available in containers)
   with ManagedIdentityCredential (when AZURE_CLIENT_ID is set) or
   DefaultAzureCredential as fallback. This fixes the 'Azure CLI not
   found on path' error in production Container Apps.

2. Backend: Remove reflection_workflow_agent from DEFAULT_AVAILABLE_AGENTS
   and descriptions - the module file doesn't exist, causing it to show
   as a broken option in the UI agent selector.
1. promote-to-main.yml: Use GH_PAT instead of GITHUB_TOKEN so the
   workflow can create PRs (GITHUB_TOKEN lacks permission for this
   in repos with branch protection).

2. orchestrate.yml: Add Step 8 auto-destroy that tears down the
   integration-* environment after successful auto-merge to int-agentic.
   Only dev environments are destroyed; production is retained.
ResponseStream is AsyncIterable - iterate with 'async for chunk in stream:'
The .updates property returns a Sequence (list), not an async iterator.
This caused TypeError: 'async for' requires __aiter__, got list.

Not caught in local tests because unit tests mocked the streaming and
the regression tests verified API signatures but didn't run live agents.
Removed continue-on-error: true from the pytest step so test failures
actually fail the workflow. Previously, 5/7 tests could fail and the
pipeline would still report success and proceed to auto-merge.
Container Apps don't create a new revision when the image tag is unchanged.
Using :latest meant the old container kept running even after a new image
was pushed. Now passes github.sha as the image tag, which forces a new
revision on every deploy.

This was the root cause of the ResponseStream.updates bug reaching
production - the integration tests ran against old containers.
In CI, the evaluation talks to the backend via HTTP which connects to
the deployed MCP container internally. The localhost:8000 check is only
useful for local dev and was producing a confusing warning in CI logs.
Previously auto-merge only looked for an existing open PR and skipped
if none was found. Now it auto-creates a PR from the dev branch to
int-agentic if one doesn't exist, then merges it. This ensures every
successful pipeline run promotes code to int-agentic regardless of
whether a PR was manually created beforehand.
@james-tn james-tn merged commit 22cd10b into int-agentic Feb 23, 2026
12 of 13 checks passed
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.

1 participant