Sweep 22 Sep 2026 · 17:19Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
One change · api

migration changed

managed-agents/migration

Nearest release: v2.1.275, published an hour 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+108added
Lines−84removed
From line 739 where the diff opens
First seen 14 Aug 2026 this site's first read of the page
Recorded edits10to this page, all time

The whole hunk

from line 739, old and new numbered
/
lines
from line 739
739739 ],
740740 )
741741 for event in stream:
742 if event.type == "agent.message":
743 print(
744 "".join(block.text for block in event.content if block.type == "text")
745 )
746 elif event.type == "agent.custom_tool_use":
747 result = get_weather(**event.input)
748 client.beta.sessions.events.send(
749 session.id,
750 events=[
751 {
752 "type": "user.custom_tool_result",
753 "custom_tool_use_id": event.id,
754 "content": [{"type": "text", "text": result}],
755 }
756 ],
757 )
758 elif (
759 event.type == "session.status_idle"
760 and event.stop_reason
761 and event.stop_reason.type == "end_turn"
762 ):
763 break
742 match event.type:
743 case "agent.message":
744 print(
745 "".join(
746 block.text for block in event.content if block.type == "text"
747 )
748 )
749 case "agent.custom_tool_use":
750 result = get_weather(**event.input)
751 client.beta.sessions.events.send(
752 session.id,
753 events=[
754 {
755 "type": "user.custom_tool_result",
756 "custom_tool_use_id": event.id,
757 "content": [{"type": "text", "text": result}],
758 }
759 ],
760 )
761 case "session.status_idle":
762 if event.stop_reason and event.stop_reason.type == "end_turn":
763 break
764764 ```
765765 
766766 ```typescript TypeScript
from line 810
810810 ]
811811 });
812812 
813 for await (const event of stream) {
814 if (event.type === "agent.message") {
815 for (const block of event.content) {
816 if (block.type === "text") {
817 console.log(block.text);
813 loop: for await (const event of stream) {
814 switch (event.type) {
815 case "agent.message":
816 for (const block of event.content) {
817 if (block.type === "text") {
818 console.log(block.text);
819 }
818820 }
821 break;
822 case "agent.custom_tool_use": {
823 const result = getWeather(event.input);
824 await client.beta.sessions.events.send(session.id, {
825 events: [
826 {
827 type: "user.custom_tool_result",
828 custom_tool_use_id: event.id,
829 content: [{ type: "text", text: result }]
830 }
831 ]
832 });
833 break;
819834 }
820 } else if (event.type === "agent.custom_tool_use") {
821 const result = getWeather(event.input);
822 await client.beta.sessions.events.send(session.id, {
823 events: [
824 {
825 type: "user.custom_tool_result",
826 custom_tool_use_id: event.id,
827 content: [{ type: "text", text: result }]
828 }
829 ]
830 });
831 } else if (event.type === "session.status_idle" && event.stop_reason?.type === "end_turn") {
832 break;
835 case "session.status_idle":
836 if (event.stop_reason?.type === "end_turn") {
837 break loop;
838 }
839 break;
833840 }
834841 }
835842 ```
from line 1133
11261133 .build())
11271134 .build());
11281135 
1136 loop:
11291137 for (var event : (Iterable<BetaManagedAgentsStreamSessionEvents>) stream.stream()::iterator) {
1130 if (event.isAgentMessage()) {
1131 for (var block : event.asAgentMessage().content()) {
1132 block.text().ifPresent(textBlock -> IO.println(textBlock.text()));
1138 switch (event.type().value()) {
1139 case AGENT_MESSAGE -> {
1140 for (var block : event.asAgentMessage().content()) {
1141 block.text().ifPresent(textBlock -> IO.println(textBlock.text()));
1142 }
11331143 }
1134 } else if (event.isAgentCustomToolUse()) {
1135 var toolUse = event.asAgentCustomToolUse();
1136 var city = toolUse.input()._additionalProperties().get("city").asStringOrThrow();
1137 var result = getWeather.apply(city);
1138 client.beta().sessions().events().send(
1139 session.id(),
1140 EventSendParams.builder()
1141 .addEvent(BetaManagedAgentsUserCustomToolResultEventParams.builder()
1142 .type(BetaManagedAgentsUserCustomToolResultEventParams.Type.USER_CUSTOM_TOOL_RESULT)
1143 .customToolUseId(toolUse.id())
1144 .addTextContent(result)
1145 .build())
1146 .build());
1147 } else if (event.isSessionStatusIdle()
1148 && event.asSessionStatusIdle().stopReason().isEndTurn()) {
1149 break;
1144 case AGENT_CUSTOM_TOOL_USE -> {
1145 var toolUse = event.asAgentCustomToolUse();
1146 var city = toolUse.input()._additionalProperties().get("city").asStringOrThrow();
1147 var result = getWeather.apply(city);
1148 client.beta().sessions().events().send(
1149 session.id(),
1150 EventSendParams.builder()
1151 .addEvent(BetaManagedAgentsUserCustomToolResultEventParams.builder()
1152 .type(BetaManagedAgentsUserCustomToolResultEventParams.Type.USER_CUSTOM_TOOL_RESULT)
1153 .customToolUseId(toolUse.id())
1154 .addTextContent(result)
1155 .build())
1156 .build());
1157 }
1158 case SESSION_STATUS_IDLE -> {
1159 if (event.asSessionStatusIdle().stopReason().isEndTurn()) {
1160 break loop;
1161 }
1162 }
11501163 }
11511164 }
11521165 }
from line 1170
11571170 use Anthropic\Beta\Agents\BetaManagedAgentsCustomToolInputSchema;
11581171 use Anthropic\Beta\Agents\BetaManagedAgentsCustomToolParams;
11591172 use Anthropic\Beta\Sessions\BetaManagedAgentsAgentParams;
1173 use Anthropic\Beta\Sessions\Events\ManagedAgentsAgentCustomToolUseEvent;
1174 use Anthropic\Beta\Sessions\Events\ManagedAgentsAgentMessageEvent;
1175 use Anthropic\Beta\Sessions\Events\ManagedAgentsSessionEndTurn;
1176 use Anthropic\Beta\Sessions\Events\ManagedAgentsSessionStatusIdleEvent;
1177 use Anthropic\Beta\Sessions\Events\ManagedAgentsTextBlock;
11601178 
11611179 $client = new Client();
11621180 
from line 1226
12081226 );
12091227 
12101228 foreach ($stream as $event) {
1211 if ($event->type === 'agent.message') {
1212 foreach ($event->content as $block) {
1213 if ($block->type === 'text') {
1214 echo $block->text . "\n";
1229 switch (true) {
1230 case $event instanceof ManagedAgentsAgentMessageEvent:
1231 foreach ($event->content as $block) {
1232 if ($block instanceof ManagedAgentsTextBlock) {
1233 echo $block->text . "\n";
1234 }
12151235 }
1216 }
1217 } elseif ($event->type === 'agent.custom_tool_use') {
1218 $result = getWeather($event->input['city']);
1219 $client->beta->sessions->events->send(
1220 $session->id,
1221 events: [
1222 [
1223 'type' => 'user.custom_tool_result',
1224 'custom_tool_use_id' => $event->id,
1225 'content' => [['type' => 'text', 'text' => $result]],
1236 break;
1237 case $event instanceof ManagedAgentsAgentCustomToolUseEvent:
1238 $result = getWeather($event->input['city']);
1239 $client->beta->sessions->events->send(
1240 $session->id,
1241 events: [
1242 [
1243 'type' => 'user.custom_tool_result',
1244 'custom_tool_use_id' => $event->id,
1245 'content' => [['type' => 'text', 'text' => $result]],
1246 ],
12261247 ],
1227 ],
1228 );
1229 } elseif ($event->type === 'session.status_idle' && $event->stopReason?->type === 'end_turn') {
1230 break;
1248 );
1249 break;
1250 case $event instanceof ManagedAgentsSessionStatusIdleEvent:
1251 if ($event->stopReason instanceof ManagedAgentsSessionEndTurn) {
1252 break 2;
1253 }
1254 break;
12311255 }
12321256 }
12331257 $stream->close();
from line 1300
12761300 )
12771301 
12781302 stream.each do |event|
1279 case event.type
1280 when :"agent.message"
1303 case event
1304 when Anthropic::Beta::Sessions::BetaManagedAgentsAgentMessageEvent
12811305 event.content.each do |block|
1282 puts block.text if block.type == :text
1306 puts block.text if block.is_a?(Anthropic::Beta::Sessions::BetaManagedAgentsTextBlock)
12831307 end
1284 when :"agent.custom_tool_use"
1308 when Anthropic::Beta::Sessions::BetaManagedAgentsAgentCustomToolUseEvent
12851309 result = get_weather(event.input[:city])
12861310 client.beta.sessions.events.send_(
12871311 session.id,
from line 1317
12931317 }
12941318 ]
12951319 )
1296 when :"session.status_idle"
1297 break if event.stop_reason&.type == :end_turn
1320 when Anthropic::Beta::Sessions::BetaManagedAgentsSessionStatusIdleEvent
1321 break if event.stop_reason.is_a?(Anthropic::Beta::Sessions::BetaManagedAgentsSessionEndTurn)
12981322 end
12991323 end
13001324 ```