Follow Discord
Sweep 03 Nov 2026 · 22:27Z Build v2.1.318 536 read Stable v2.1.311 Latest v2.1.318 Next v2.1.318 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One change · api

events-and-streaming changedmanaged-agents/events-and-streaming

Nearest release: v2.1.317, published 2 hours before this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.

Recorded here
Lines+6added
Lines−18removed
From line 223 where the diff opens
First seen 14 Aug 2026 this site's first read of the page
Recorded edits37to this page, all time

The whole hunk

from line 223, old and new numbered
/
lines
from line 223
223223 break events;
224224 }
225225 case SESSION_ERROR -> {
226 // The `message` field spans all error variants; read it from the raw JSON.
227 var errorMessage =
228 event.asSessionError().error()._json().orElse(null) instanceof JsonObject json
229 ? json.values().get("message").asStringOrThrow()
230 : "unknown";
231 IO.println("\n[Error: " + errorMessage + "]");
226 IO.println("\n[Error: " + event.asSessionError().error().message() + "]");
232227 break events;
233228 }
234229 }
from line 444
449444 ```java Java
450445 try (var stream = client.beta().sessions().events().streamStreaming(session.id())) {
451446 // Stream is open and buffering. List history before tailing live.
452 // Every event variant carries `id`; read it from the raw JSON to dedup across variants.
453447 var seenEventIds = new HashSet<String>();
454448 for (var pastEvent : client.beta().sessions().events().list(session.id()).autoPager()) {
455 if (pastEvent._json().orElseThrow() instanceof JsonObject json) {
456 seenEventIds.add(json.values().get("id").asStringOrThrow());
457 }
449 seenEventIds.add(pastEvent.id());
458450 }
459451 
460452 // Tail live events; Set.add returns false for already-seen IDs, skipping the replay.
461453 stream.stream()
462 .filter(event -> event._json().orElseThrow() instanceof JsonObject json
463 && seenEventIds.add(json.values().get("id").asStringOrThrow()))
454 .filter(event -> event.id().map(seenEventIds::add).orElse(true))
464455 .takeWhile(event -> !event.isSessionStatusIdle())
465456 .filter(BetaManagedAgentsStreamSessionEvents::isAgentMessage)
466457 .forEach(event -> event.asAgentMessage().content()
from line 1472
14811472 var events = await client.Beta.Sessions.Events.List(session.ID);
14821473 foreach (var sessionEvent in events.Items)
14831474 {
1484 Console.WriteLine($"[{sessionEvent.Json.GetProperty("type").GetString()}] {sessionEvent.ProcessedAt}");
1475 Console.WriteLine($"[{sessionEvent.Type.Raw()}] {sessionEvent.ProcessedAt}");
14851476 }
14861477 ```
14871478 
from line 1489
14981489 ```java Java
14991490 var events = client.beta().sessions().events().list(session.id());
15001491 for (var event : events.data()) {
1501 var eventJson = event._json().orElseThrow().convert(JsonNode.class);
1502 var processedAt = eventJson.path("processed_at");
1503 IO.println("[" + eventJson.get("type").asText() + "] "
1504 + (processedAt.isTextual() ? processedAt.asText() : "null"));
1492 IO.println("[" + event.type().asString() + "] " + event.processedAt().orElse(null));
15051493 }
15061494 ```
15071495 
from line 1548
15601548 });
15611549 foreach (var sessionEvent in events.Items)
15621550 {
1563 Console.WriteLine($"[{sessionEvent.Json.GetProperty("type").GetString()}] {sessionEvent.ProcessedAt}");
1551 Console.WriteLine($"[{sessionEvent.Type.Raw()}] {sessionEvent.ProcessedAt}");
15641552 }
15651553 ```
15661554 
Feedback