| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
Demonstrates orchestrator + subagent pattern with shared task ID, Temporal workflows, MCP server integration, and conversation compaction. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
| netcat-openbsd \ | ||
| && apt-get clean \ | ||
| && rm -rf /var/lib/apt/lists/** | ||
|
|
There was a problem hiding this comment.
Hardcoded arm64 tctl binary breaks builds on amd64 hosts
The Dockerfile downloads the linux_arm64 Temporal CLI binary unconditionally. This works on Apple Silicon (M-series) macs but will fail silently or crash at runtime on any amd64/x86_64 build environment (e.g., Linux CI, most cloud build agents).
The same issue exists in all four Dockerfiles:
Consider detecting the architecture at build time:
RUN ARCH=$(dpkg --print-architecture) && \
curl -L https://github.com/temporalio/tctl/releases/download/v1.18.1/tctl_1.18.1_linux_${ARCH}.tar.gz -o /tmp/tctl.tar.gz && \
tar -xzf /tmp/tctl.tar.gz -C /usr/local/bin && \
chmod +x /usr/local/bin/tctl && \
rm /tmp/tctl.tar.gzThis is a comment left during a code review.
Path: examples/demos/deep_research/orchestrator/Dockerfile
Line: 15-18
Comment:
**Hardcoded `arm64` tctl binary breaks builds on `amd64` hosts**
The Dockerfile downloads the `linux_arm64` Temporal CLI binary unconditionally. This works on Apple Silicon (M-series) macs but will fail silently or crash at runtime on any `amd64`/`x86_64` build environment (e.g., Linux CI, most cloud build agents).
The same issue exists in all four Dockerfiles:
- `examples/demos/deep_research/orchestrator/Dockerfile:15`
- `examples/demos/deep_research/github_researcher/Dockerfile:15`
- `examples/demos/deep_research/docs_researcher/Dockerfile:16`
- `examples/demos/deep_research/slack_researcher/Dockerfile:15`
Consider detecting the architecture at build time:
```dockerfile
RUN ARCH=$(dpkg --print-architecture) && \
curl -L https://github.com/temporalio/tctl/releases/download/v1.18.1/tctl_1.18.1_linux_${ARCH}.tar.gz -o /tmp/tctl.tar.gz && \
tar -xzf /tmp/tctl.tar.gz -C /usr/local/bin && \
chmod +x /usr/local/bin/tctl && \
rm /tmp/tctl.tar.gz
```
How can I resolve this? If you propose a fix, please make it concise.
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Summary
Test plan
🤖 Generated with Claude Code
Greptile Summary
This PR adds a complete multi-agent deep research demo (examples/demos/deep_research/) consisting of four agents — an orchestrator and three specialized subagents (GitHub, Docs, Slack). It demonstrates several important AgentEx patterns: orchestrator/subagent communication via ACP, unified output through a shared parent task_id, Temporal-safe batched Runner.run() loops with a two-stage conversation compaction strategy, and MCP server integration via StatelessMCPServerProvider.
Key findings:
Confidence Score: 3/5
Important Files Changed
Sequence Diagram
sequenceDiagram participant User participant Orch as Orchestrator<br/>(ResearchOrchestratorWorkflow) participant GH as GitHub Researcher<br/>(GitHubResearchWorkflow) participant Docs as Docs Researcher<br/>(DocsResearchWorkflow) participant Slack as Slack Researcher<br/>(SlackResearchWorkflow) User->>Orch: EVENT_SEND (user query) Orch->>Orch: Runner.run(agent, max_turns=50)<br/>agent calls dispatch tools in parallel par Parallel dispatch Orch->>GH: acp.create_task(source_task_id=orch_task_id)<br/>+ EVENT_SEND {query} Orch->>Docs: acp.create_task(source_task_id=orch_task_id)<br/>+ EVENT_SEND {query} Orch->>Slack: acp.create_task(source_task_id=orch_task_id)<br/>+ EVENT_SEND {query} end GH-->>User: adk.messages.create(task_id=orch_task_id) [streams progress] Docs-->>User: adk.messages.create(task_id=orch_task_id) [streams progress] Slack-->>User: adk.messages.create(task_id=orch_task_id) [streams progress] GH->>Orch: EVENT_SEND {event_type: research_complete, result: ...} Docs->>Orch: EVENT_SEND {event_type: research_complete, result: ...} Slack->>Orch: EVENT_SEND {event_type: research_complete, result: ...} Note over Orch: workflow.wait_condition satisfied<br/>for each child_task_id Orch->>Orch: Runner.run() resumes — synthesizes all results Orch-->>User: Final comprehensive answer (streamed via TemporalStreamingHooks)Comments Outside Diff (1)
-
Missing error handling around Runner.run() may hang workflow indefinitely
Prompt To Fix With AI
Prompt To Fix All With AIexamples/demos/deep_research/orchestrator/project/workflow.py, line 2192-2196 (link)
The orchestrator's on_task_event_send signal handler has no try/except around Runner.run(). If the runner throws for any reason (e.g., max turns exceeded, API error, timeout), _complete_task will never be set to True, causing on_task_create to hang forever at await workflow.wait_condition(lambda: self._complete_task, timeout=None).
All three subagent workflows correctly wrap their Runner.run() calls in try/except and ensure _complete_task = True is always reached. The orchestrator should do the same:
Last reviewed commit: "Add deep research mu..."