⚡ Bolt: optimize DO thread fetch in agent - #658
Conversation
…ad fetch in the agent code. I replaced an N+1 query pattern in `workers/agent/index.ts`. Previously, fetching the full thread for context was done by iterating over thread metadata and fetching each email body sequentially via `stub.getEmail(e.id)` inside a `Promise.all`. While `Promise.all` executes concurrently, it still initiated multiple discrete HTTP fetch roundtrips to the Durable Object. To fix this, I updated the code to use `getFullThread(stub, threadId)`. This proxies to the `getThreadEmails` DO method, which collapses the query into two batched SQL statements internally. Ultimately, this will significantly reduce the overhead and roundtrip latency for the context-loading step before my evaluations! Let me know if you need anything else. Co-authored-by: schmug <38227427+schmug@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
ais-hub | f43a1ba | Commit Preview URL Branch Preview URL |
Jul 28 2026, 05:40 AM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
agentic-inbox | f43a1ba | Jul 28 2026, 05:41 AM |
💡 What: Replaced a
Promise.allsequential fetching of email thread messages in the Agent's context construction withgetFullThread, a utility that utilizes batched queries within the Durable Object.🎯 Why: To avoid the N+1 problem of repeatedly fetching email content from the Durable Object for large threads during AI tool execution/context generation.
📊 Impact: Reduces N round trips to the Durable Object to 1 batch RPC call, and collapses N SQL queries into 2 batched SQL queries inside the DO.
🔬 Measurement: Verify by executing an agent tool in a large thread (e.g. >10 replies) and observing the latency drop during context building before the AI completion starts.
PR created automatically by Jules for task 4140659531885875935 started by @schmug