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 ```