feat(lab02): restructure PersonalCareerCopilot as sequential pipeline #lab02#11
feat(lab02): restructure PersonalCareerCopilot as sequential pipeline #lab02#11ShivamGoyal03 wants to merge 14 commits into
Conversation
- Remove fan-out/fan-in WorkflowBuilder edges; replace with strict sequential chain: ResumeParser → JD Agent → MatchingAgent → GapAnalyzer - JD Agent now relays [PARSED RESUME PASS-THROUGH] forward so MatchingAgent receives both profiles without a fan-in edge - Fixes double-output bug caused by WorkflowBuilder OR-semantics (downstream executor fires on every incoming edge completion) - Update MATCHING_AGENT_INSTRUCTIONS to read labeled sections - Update GAP_ANALYZER_INSTRUCTIONS with CRITICAL per-gap-card rule - Pin mcp<2,>=1.24.0 in requirements; use streamable_http_client 3-tuple unpacking compatible with mcp SDK v1.x - Switch env var from AZURE_AI_PROJECT_ENDPOINT → FOUNDRY_PROJECT_ENDPOINT"
- Dockerfile: no functional change, aligns with standard scaffold output - .dockerignore: exclude .venv, __pycache__, .env from image - .azdignore: exclude agent.yaml, agent.manifest.yaml, .env.example from azd - .vscode/launch.json + tasks.json: attach debugger on port 5679, open Agent Inspector automatically on F5 - .foundry/.deployment.json.example: placeholder deployment config"
- Fix workflow mermaid: replace fan-out topology with sequential LR chain - Replace AZURE_AI_PROJECT_ENDPOINT with FOUNDRY_PROJECT_ENDPOINT throughout - Remove .env.example from project structure (file deleted) - Update Quick Start step 2 to create .env directly instead of copying example - Fix agent.yaml key files section: only AZURE_AI_MODEL_DEPLOYMENT_NAME declared - Fix requirements table to match actual requirements.txt packages - Fix troubleshooting: KeyError now references correct env var name"
There was a problem hiding this comment.
Pull request overview
Refactors the Lab 02 PersonalCareerCopilot multi-agent workflow from a fan-out/fan-in graph to a strict sequential pipeline to avoid double-execution caused by WorkflowBuilder OR-semantics, while updating the surrounding workshop scaffolding (env vars, dependencies, docs, and deployment metadata) to match the new structure.
Changes:
- Rewire the workflow into a sequential chain and update prompt blocks to relay the needed context between agents.
- Update dependency set to Foundry subpackages and pin
mcp<2,>=1.24.0; align env var usage toFOUNDRY_PROJECT_ENDPOINT+AZURE_AI_MODEL_DEPLOYMENT_NAME. - Refresh lab documentation and local dev tooling configs to reflect the new workflow and setup steps.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| workshop/lab02-multi-agent/PersonalCareerCopilot/requirements.txt | Switch to Foundry subpackages and pin mcp v1.x. |
| workshop/lab02-multi-agent/PersonalCareerCopilot/README.md | Update mermaid workflow, env var names, and dependency table; remove .env.example guidance. |
| workshop/lab02-multi-agent/PersonalCareerCopilot/main.py | Convert workflow wiring to sequential pipeline; update agent instructions and env var access. |
| workshop/lab02-multi-agent/PersonalCareerCopilot/agent.yaml | Simplify hosted agent env var declaration and update metadata/resources. |
| workshop/lab02-multi-agent/PersonalCareerCopilot/.vscode/tasks.json | Rename tasks and adjust prerequisite checks / background readiness detection. |
| workshop/lab02-multi-agent/PersonalCareerCopilot/.vscode/launch.json | Rename the debug configuration label. |
| workshop/lab02-multi-agent/PersonalCareerCopilot/.foundry/.deployment.json.example | Normalize placeholder values for project/container registry. |
| workshop/lab02-multi-agent/PersonalCareerCopilot/.env.example | Remove the example env file. |
| workshop/lab02-multi-agent/PersonalCareerCopilot/.dockerignore | Adjust ignored files for Docker build context. |
| workshop/lab02-multi-agent/PersonalCareerCopilot/.azdignore | Add azd ignore entries for agent definition files and .env.example. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- load_dotenv(override=True) so .env always wins over shell vars - pyPackageInstalled includes agent-framework-foundry + hosting packages - README troubleshooting covers both FOUNDRY_PROJECT_ENDPOINT and AZURE_AI_MODEL_DEPLOYMENT_NAME KeyErrors
Both FOUNDRY_PROJECT_ENDPOINT and AZURE_AI_MODEL_DEPLOYMENT_NAME are now listed in the troubleshooting table (Copilot review fix #3)
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 31 out of 34 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (1)
workshop/lab02-multi-agent/PersonalCareerCopilot/.dockerignore:8
.dockerignoreno longer excludes.vscode/and.foundry/, so local debug configs and deployment examples will be copied into the container image. This increases image size and can accidentally ship local-only metadata that the runtime doesn’t need.
.venv
__pycache__
*.pyc
*.pyo
*.pyd
.Python
.env
Description
Restructures the
PersonalCareerCopilotmulti-agent workflow from a fan-out/fan-in topology to a strict sequential pipeline, fixing a double-output bug caused byWorkflowBuilder's OR-semantics.Closes #
Type of Change
Changes Made
main.py— Remove fan-out edges; replace with sequential chainResumeParser → JobDescriptionAgent → MatchingAgent → GapAnalyzer. JD Agent now relays[PARSED RESUME PASS-THROUGH]forward soMatchingAgentreceives both profiles without a second incoming edge. Fixes double-output bug (OR-semantics triggeredGapAnalyzertwice).main.py— UpdateMATCHING_AGENT_INSTRUCTIONSto read from labeled[JD REQUIREMENTS]and[PARSED RESUME PASS-THROUGH]sections. UpdateGAP_ANALYZER_INSTRUCTIONSwithCRITICAL:per-gap-card rule.main.py— Pinmcp<2,>=1.24.0; usestreamable_http_client3-tuple unpacking for mcp SDK v1.x. Switch env varAZURE_AI_PROJECT_ENDPOINT→FOUNDRY_PROJECT_ENDPOINT.requirements.txt— Use narrow subpackagesagent-framework-foundry+agent-framework-foundry-hosting; pinmcp<2,>=1.24.0.agent.yaml— Only declareAZURE_AI_MODEL_DEPLOYMENT_NAME;FOUNDRY_PROJECT_ENDPOINTis injected by Foundry at runtime..azdignore— New file: excludeagent.yaml,agent.manifest.yaml,.env.examplefrom azd..env.example— Deleted; credentials setup moved to inline instructions in README.README.md— Fix workflow mermaid (sequential LR), fix env var names, fix requirements table, remove.env.examplereference.Testing
Checklist
feat(lab02): restructure PersonalCareerCopilot as sequential pipeline #lab02)