Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
2870a21
chore: Dev merge to Main
Avijit-Microsoft May 21, 2026
20d773e
Merge pull request #254 from microsoft/dev
Prajwal-Microsoft May 27, 2026
5e7e467
chore: Dev merge to Main
Avijit-Microsoft Jun 1, 2026
868bd5d
Merge pull request #273 from microsoft/dev
Roopan-Microsoft Jun 10, 2026
27261c7
increase the tokens
Prachig-Microsoft Jun 12, 2026
49eb5cd
Upgrade agent-framework to 1.3.0 and azure-ai-projects to 2.1.0
Prachig-Microsoft Jun 11, 2026
e67884a
Fix SharedMemoryContextProvider not iterable TypeError
Prachig-Microsoft Jun 12, 2026
e364793
Remove trailing blank line in azure_openai_response_retry.py (W391)
Prachig-Microsoft Jun 12, 2026
fa63bdf
Fix async for coroutine error in retry client streaming path
Prachig-Microsoft Jun 12, 2026
0f10ef0
Fix streaming: delegate to parent ResponseStream instead of async gen…
Prachig-Microsoft Jun 12, 2026
688b136
Guard against empty messages after context trimming
Prachig-Microsoft Jun 12, 2026
1d86176
Update AZURE_OPENAI_API_VERSION from 2025-03-01-preview to v1
Prachig-Microsoft Jun 12, 2026
6938b2b
Revert "Update AZURE_OPENAI_API_VERSION from 2025-03-01-preview to v1"
Prachig-Microsoft Jun 12, 2026
5961870
Switch default client to AzureOpenAIChatCompletionWithRetry (Chat Com…
Prachig-Microsoft Jun 12, 2026
3ab3076
Fix AzureOpenAIChatClientWithRetry streaming: sync def + stream param…
Prachig-Microsoft Jun 12, 2026
2caced5
Sanitize message author_name for OpenAI Chat Completions
Prachig-Microsoft Jun 12, 2026
7f8a04b
Demote empty-messages warning to debug
Prachig-Microsoft Jun 12, 2026
6d371fd
Fix Coordinator anti-loop: accept framework's response schema
Prachig-Microsoft Jun 12, 2026
d5da788
Sanitize message name at OpenAI wire format (defense in depth)
Prachig-Microsoft Jun 12, 2026
0da531f
Fix loop detection: don't count looped-on agent's runs as progress
Prachig-Microsoft Jun 12, 2026
9a85f00
Add agent_description for Analysis participants so Coordinator can ro…
Prachig-Microsoft Jun 12, 2026
76e9c17
Fix loop detection: key on agent name only, not (agent, instruction)
Prachig-Microsoft Jun 12, 2026
4de1e28
fix(workflow): reject incoherent ResultGenerator output across all steps
Prachig-Microsoft Jun 12, 2026
f74629b
fix(groupchat): resolve agent identity via author_name for af 1.3.0
Prachig-Microsoft Jun 13, 2026
42902ab
fix(groupchat): route WorkflowEvent payloads + enforce framework max_…
Prachig-Microsoft Jun 13, 2026
7a0212f
fix(groupchat): detect participant loops via executor_completed events
Prachig-Microsoft Jun 13, 2026
03387c4
Revert "fix(groupchat): detect participant loops via executor_complet…
Prachig-Microsoft Jun 13, 2026
14d52f2
chore(logging): suppress harmless empty-message-cache warning and dro…
Prachig-Microsoft Jun 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/LocalDevelopmentSetup.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ py -3.12 -m uv venv .venv
py -3.12 -m uv sync --prerelease=allow
```

> **⚠️ Important**: This repo currently depends on a prerelease/dev version of Microsoft Agent Framework. Always run `uv sync --prerelease=allow` (or `py -3.12 -m uv sync --prerelease=allow` on Windows) after creating the virtual environment to install all required dependencies. Missing dependencies will cause runtime errors like `ModuleNotFoundError: No module named 'pydantic'` or DNS resolution failures.
> **⚠️ Important**: Always run `uv sync --prerelease=allow` (or `py -3.12 -m uv sync --prerelease=allow` on Windows) after creating the virtual environment to install all required dependencies. The `--prerelease=allow` flag is needed because some transitive dependencies may still use pre-release versions. Missing dependencies will cause runtime errors like `ModuleNotFoundError: No module named 'pydantic'` or DNS resolution failures.

### 5.4. Run the Processor

Expand Down
20 changes: 9 additions & 11 deletions docs/ProcessFrameworkGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,23 +118,21 @@ Inside each step, the orchestrator can use multi-agent patterns (maker-checker l

- Implementation: [src/processor/src/steps/migration_processor.py](../src/processor/src/steps/migration_processor.py)
- The processor creates a workflow with `WorkflowBuilder`.
- It registers four executors, sets the start executor, and defines edges.
- It instantiates four executors, passes the start executor to `WorkflowBuilder`, and chains them with `add_chain`.

Example from the repo (simplified):

```python
from agent_framework import WorkflowBuilder

analysis_exec = AnalysisExecutor(id="analysis", app_context=app_context)
design_exec = DesignExecutor(id="design", app_context=app_context)
yaml_exec = YamlConvertExecutor(id="yaml", app_context=app_context)
docs_exec = DocumentationExecutor(id="documentation", app_context=app_context)

workflow = (
WorkflowBuilder()
.register_executor(lambda: AnalysisExecutor(id="analysis", app_context=app_context), name="analysis")
.register_executor(lambda: DesignExecutor(id="design", app_context=app_context), name="design")
.register_executor(lambda: YamlConvertExecutor(id="yaml", app_context=app_context), name="yaml")
.register_executor(lambda: DocumentationExecutor(id="documentation", app_context=app_context), name="documentation")
.set_start_executor("analysis")
.add_edge("analysis", "design")
.add_edge("design", "yaml")
.add_edge("yaml", "documentation")
WorkflowBuilder(start_executor=analysis_exec)
.add_chain([analysis_exec, design_exec, yaml_exec, docs_exec])
.build()
)
```
Expand Down Expand Up @@ -355,7 +353,7 @@ To run processor unit tests locally (example):

```bash
cd src/processor
uv run --prerelease=allow python -m pytest src/processor/src/tests/unit -v
uv run python -m pytest src/tests/unit -v
```

## Extending the pipeline
Expand Down
19 changes: 13 additions & 6 deletions infra/vscode_web/codeSample.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from azure.ai.agents.models import ListSortOrder
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential

Expand All @@ -7,19 +8,25 @@

agent = project_client.agents.get_agent("<%= agentId %>")

thread = project_client.agents.create_thread()
thread = project_client.agents.threads.create()
print(f"Created thread, ID: {thread.id}")

message = project_client.agents.create_message(
message = project_client.agents.messages.create(
thread_id=thread.id,
role="user",
content="<%= userMessage %>"
)

run = project_client.agents.create_and_process_run(
run = project_client.agents.runs.create_and_process(
thread_id=thread.id,
agent_id=agent.id)
messages = project_client.agents.list_messages(thread_id=thread.id)

for text_message in messages.text_messages:
print(text_message.as_dict())
if run.status == "failed":
print(f"Run failed: {run.last_error}")
else:
messages = project_client.agents.messages.list(
thread_id=thread.id, order=ListSortOrder.ASCENDING)

for message in messages:
if message.text_messages:
print(f"{message.role}: {message.text_messages[-1].text.value}")
2 changes: 1 addition & 1 deletion infra/vscode_web/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
azure-ai-projects==1.0.0b12
azure-ai-projects==2.1.0
azure-identity==1.20.0
ansible-core~=2.17.0
2 changes: 1 addition & 1 deletion src/processor/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"agent-framework==1.0.0b260107",
"agent-framework==1.3.0",
"aiohttp==3.13.5",
"art==6.5",
"azure-ai-agents==1.2.0b5",
Expand Down
Loading
Loading