Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions .github/workflows/broken-links-checker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
uses: lycheeverse/lychee-action@v2.8.0
with:
args: >
--verbose --exclude-mail --no-progress --exclude ^https?://
--verbose --no-progress --exclude ^https?://
${{ steps.changed-markdown-files.outputs.all_changed_files }}
failIfEmpty: false
env:
Expand All @@ -50,7 +50,7 @@ jobs:
uses: lycheeverse/lychee-action@v2.8.0
with:
args: >
--verbose --exclude-mail --no-progress --exclude ^https?://
--verbose --no-progress --exclude ^https?://
'**/*.md'
failIfEmpty: false
env:
Expand Down
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
2 changes: 1 addition & 1 deletion infra/main.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -1135,7 +1135,7 @@ module appConfiguration 'br/public:avm/res/app-configuration/configuration-store
}
{
name: 'AZURE_OPENAI_API_VERSION'
value: '2025-03-01-preview'
value: 'v1'
}
{
name: 'AZURE_OPENAI_CHAT_DEPLOYMENT_NAME'
Expand Down
2 changes: 1 addition & 1 deletion infra/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -35380,7 +35380,7 @@
},
{
"name": "AZURE_OPENAI_API_VERSION",
"value": "2025-03-01-preview"
"value": "v1"
},
{
"name": "AZURE_OPENAI_CHAT_DEPLOYMENT_NAME",
Expand Down
2 changes: 1 addition & 1 deletion infra/main_custom.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -1101,7 +1101,7 @@ module appConfiguration 'br/public:avm/res/app-configuration/configuration-store
}
{
name: 'AZURE_OPENAI_API_VERSION'
value: '2025-03-01-preview'
value: 'v1'
}
{
name: 'AZURE_OPENAI_CHAT_DEPLOYMENT_NAME'
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