Commit be1a3e8
authored
fix(agent): recover or flag pending attachments that fail to reach the cloud agent (#3039)
## Problem
Closes GROW-99
Pasting a prompt into PostHog Code auto-converts it to a `pasted-text.txt` attachment. On **cloud** tasks the file is uploaded as a run artifact and the sandbox agent reads it from `.posthog/attachments/…`. Intermittently the agent instead received the bare task description `Attached files: pasted-text.txt` as plain text — no file, no inline content — and replied that it *"can't find the file… no text was included inline"*, unable to do the task. (The task title also stayed **Untitled**.)
## Root cause
In `agent-server.ts → sendInitialTaskMessage`, when `getPendingUserPrompt()` returns `null` (no pending message **and** no *resolvable* artifacts) it falls back to `task.description`. For a pasted-text-only task that description is just the `Attached files: …` summary, so the agent is handed a prompt naming a file it was never given. The artifact fails to resolve when the run's `artifacts` manifest doesn't yet contain the just-uploaded `pending_user_artifact_ids` — most likely a transient manifest lag at run start.
## Fix
Hardened `getPendingUserPrompt`:
1. **Best-effort recovery** — refetch the run manifest once when a declared attachment isn't listed yet, so a transient lag doesn't drop the attachment (the pasted text then reaches the agent).
2. **Safe degraded prompt** — if an attachment still can't be hydrated, append an explicit *"the attachment didn't come through, ask the user to paste it directly or re-send"* notice instead of the misleading bare description. Skill bundles (installed silently) are excluded from the count.
3. Adds a `warn("Pending user attachments could not be loaded", …)` log with resolved/expected counts, so a *consistent* failure (artifact genuinely missing server-side) is obvious in run logs.
The misleading `task.description` fallback in `sendInitialTaskMessage` is now bypassed for this case, and the resume paths benefit too since they share `getPendingUserPrompt`.
## Tests
New `AgentServer pending user attachments` suite in `agent-server.test.ts`:
- missing attachment (refetch also empty) → explicit notice appended, not `null`
- refetch recovers the artifact → `resource_link` block, no notice
- no pending artifacts → `null`, and no refetch
Typecheck and Biome are clean.
> The file's existing **HTTP-mode** tests run a `git commit` in `createTestRepo`, which is blocked in the signed-commits sandbox this was authored in — so I couldn't run them locally. The new tests are deliberately self-contained (no git/HTTP) and pass; CI covers the rest.
## Notes
- This was seen as a **one-off**, so the change hardens the degraded path and adds recovery rather than chasing a root cause I couldn't confirm. If it reproduces every time, the new warn log points at the artifact genuinely not landing in `taskRun.artifacts` server-side.
- The earlier title fix (#2850) is unrelated — it only touched name generation, not how the file reaches the agent.
Closes GROW-991 parent 49fdb91 commit be1a3e8
2 files changed
Lines changed: 279 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
| 3 | + | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
| |||
2376 | 2377 | | |
2377 | 2378 | | |
2378 | 2379 | | |
| 2380 | + | |
| 2381 | + | |
| 2382 | + | |
| 2383 | + | |
| 2384 | + | |
| 2385 | + | |
| 2386 | + | |
| 2387 | + | |
| 2388 | + | |
| 2389 | + | |
| 2390 | + | |
| 2391 | + | |
| 2392 | + | |
| 2393 | + | |
| 2394 | + | |
| 2395 | + | |
| 2396 | + | |
| 2397 | + | |
| 2398 | + | |
| 2399 | + | |
| 2400 | + | |
| 2401 | + | |
| 2402 | + | |
| 2403 | + | |
| 2404 | + | |
| 2405 | + | |
| 2406 | + | |
| 2407 | + | |
| 2408 | + | |
| 2409 | + | |
| 2410 | + | |
| 2411 | + | |
| 2412 | + | |
| 2413 | + | |
| 2414 | + | |
| 2415 | + | |
| 2416 | + | |
| 2417 | + | |
| 2418 | + | |
| 2419 | + | |
| 2420 | + | |
| 2421 | + | |
| 2422 | + | |
| 2423 | + | |
| 2424 | + | |
| 2425 | + | |
| 2426 | + | |
| 2427 | + | |
| 2428 | + | |
| 2429 | + | |
| 2430 | + | |
| 2431 | + | |
| 2432 | + | |
| 2433 | + | |
| 2434 | + | |
| 2435 | + | |
| 2436 | + | |
| 2437 | + | |
| 2438 | + | |
| 2439 | + | |
| 2440 | + | |
| 2441 | + | |
| 2442 | + | |
| 2443 | + | |
| 2444 | + | |
| 2445 | + | |
| 2446 | + | |
| 2447 | + | |
| 2448 | + | |
| 2449 | + | |
| 2450 | + | |
| 2451 | + | |
| 2452 | + | |
| 2453 | + | |
| 2454 | + | |
| 2455 | + | |
| 2456 | + | |
| 2457 | + | |
| 2458 | + | |
| 2459 | + | |
| 2460 | + | |
| 2461 | + | |
| 2462 | + | |
| 2463 | + | |
| 2464 | + | |
| 2465 | + | |
| 2466 | + | |
| 2467 | + | |
| 2468 | + | |
| 2469 | + | |
| 2470 | + | |
| 2471 | + | |
| 2472 | + | |
| 2473 | + | |
| 2474 | + | |
| 2475 | + | |
| 2476 | + | |
| 2477 | + | |
| 2478 | + | |
| 2479 | + | |
| 2480 | + | |
| 2481 | + | |
| 2482 | + | |
| 2483 | + | |
| 2484 | + | |
| 2485 | + | |
| 2486 | + | |
| 2487 | + | |
| 2488 | + | |
| 2489 | + | |
| 2490 | + | |
| 2491 | + | |
| 2492 | + | |
| 2493 | + | |
| 2494 | + | |
| 2495 | + | |
| 2496 | + | |
| 2497 | + | |
| 2498 | + | |
| 2499 | + | |
| 2500 | + | |
| 2501 | + | |
| 2502 | + | |
| 2503 | + | |
| 2504 | + | |
| 2505 | + | |
| 2506 | + | |
| 2507 | + | |
| 2508 | + | |
| 2509 | + | |
| 2510 | + | |
| 2511 | + | |
| 2512 | + | |
| 2513 | + | |
| 2514 | + | |
| 2515 | + | |
| 2516 | + | |
| 2517 | + | |
| 2518 | + | |
| 2519 | + | |
| 2520 | + | |
| 2521 | + | |
| 2522 | + | |
| 2523 | + | |
| 2524 | + | |
| 2525 | + | |
| 2526 | + | |
| 2527 | + | |
| 2528 | + | |
| 2529 | + | |
| 2530 | + | |
| 2531 | + | |
| 2532 | + | |
| 2533 | + | |
| 2534 | + | |
| 2535 | + | |
| 2536 | + | |
| 2537 | + | |
| 2538 | + | |
| 2539 | + | |
| 2540 | + | |
| 2541 | + | |
| 2542 | + | |
| 2543 | + | |
| 2544 | + | |
| 2545 | + | |
| 2546 | + | |
| 2547 | + | |
| 2548 | + | |
| 2549 | + | |
| 2550 | + | |
| 2551 | + | |
| 2552 | + | |
| 2553 | + | |
| 2554 | + | |
| 2555 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
277 | 277 | | |
278 | 278 | | |
279 | 279 | | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
280 | 296 | | |
281 | 297 | | |
282 | 298 | | |
| |||
1800 | 1816 | | |
1801 | 1817 | | |
1802 | 1818 | | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
| 1827 | + | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
| 1833 | + | |
| 1834 | + | |
| 1835 | + | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
1803 | 1840 | | |
1804 | 1841 | | |
1805 | | - | |
| 1842 | + | |
1806 | 1843 | | |
1807 | 1844 | | |
1808 | 1845 | | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
| 1852 | + | |
| 1853 | + | |
| 1854 | + | |
| 1855 | + | |
| 1856 | + | |
| 1857 | + | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
| 1864 | + | |
| 1865 | + | |
| 1866 | + | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
| 1873 | + | |
| 1874 | + | |
| 1875 | + | |
| 1876 | + | |
1809 | 1877 | | |
1810 | 1878 | | |
1811 | 1879 | | |
| 1880 | + | |
| 1881 | + | |
1812 | 1882 | | |
1813 | 1883 | | |
1814 | 1884 | | |
1815 | 1885 | | |
1816 | 1886 | | |
| 1887 | + | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
| 1897 | + | |
| 1898 | + | |
| 1899 | + | |
| 1900 | + | |
| 1901 | + | |
| 1902 | + | |
| 1903 | + | |
| 1904 | + | |
| 1905 | + | |
| 1906 | + | |
| 1907 | + | |
1817 | 1908 | | |
1818 | 1909 | | |
1819 | 1910 | | |
| |||
1886 | 1977 | | |
1887 | 1978 | | |
1888 | 1979 | | |
| 1980 | + | |
| 1981 | + | |
| 1982 | + | |
| 1983 | + | |
1889 | 1984 | | |
1890 | 1985 | | |
1891 | 1986 | | |
| |||
1903 | 1998 | | |
1904 | 1999 | | |
1905 | 2000 | | |
1906 | | - | |
1907 | | - | |
1908 | | - | |
| 2001 | + | |
| 2002 | + | |
| 2003 | + | |
| 2004 | + | |
| 2005 | + | |
1909 | 2006 | | |
1910 | 2007 | | |
1911 | 2008 | | |
| |||
0 commit comments