Uh oh!
There was an error while loading. Please reload this page.
Commit 34b1041
fix(sandbox): adopt open-agents scheduleBackgroundWork pattern for lifecycle kick
Smoke test caught: the lifecycle kick fired but its async chain
(selectSessions → claim lease → start workflow) never completed
because the serverless function tore down on response. No
[kickSandboxLifecycleWorkflow] log lines, no workflow run started.
Original PR placed `after()` from next/server inside the kick lib —
which violated open-agents' architecture: the kick is a generic
fan-out lib, the platform-specific scheduler belongs at the call
site.
Refactored to match open-agents' open / api conventions:
- `kickSandboxLifecycleWorkflow` accepts an optional
`scheduleBackgroundWork: (task: Promise<void>) => void` parameter.
Default behavior is `void task` (matches open-agents fallback),
scheduler used when provided.
- createSandboxHandler + getSandboxStatusHandler pass
`scheduleBackgroundWork: task => after(() => task)`. Same pattern
api already uses in `lib/agents/createPlatformRoutes.ts:62` and
`app/api/chat/slack/route.ts:16` for waitUntil-style background
work.
Test updated to use `expect.objectContaining` since the kick now
receives an extra `scheduleBackgroundWork` callback. Suite stays at
2579.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 4b70015 commit 34b1041
4 files changed
Lines changed: 42 additions & 13 deletions
File tree
- lib/sandbox
- __tests__
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
288 | 288 | | |
289 | 289 | | |
290 | 290 | | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
295 | 298 | | |
296 | 299 | | |
297 | 300 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
153 | 159 | | |
154 | 160 | | |
155 | 161 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
59 | 63 | | |
60 | 64 | | |
61 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
15 | 24 | | |
16 | 25 | | |
17 | 26 | | |
| |||
29 | 38 | | |
30 | 39 | | |
31 | 40 | | |
32 | | - | |
| 41 | + | |
33 | 42 | | |
34 | 43 | | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
35 | 51 | | |
36 | 52 | | |
37 | 53 | | |
| |||
0 commit comments