String? containerId;
await for (final chunk in agent.sendStream(prompt)) {
containerId ??= containerIdFromMetadata(chunk.metadata);
}
final agent2 = Agent(
'openai-responses',
chatModelOptions: OpenAIResponsesChatModelOptions(
serverSideTools: const {OpenAIServerSideTool.codeInterpreter},
codeInterpreterConfig: CodeInterpreterConfig(containerId: containerId),
),
);
agent2.sendStream(prompt2)...;
// Helper function to extract container ID from metadata
String? containerIdFromMetadata(Map<String, dynamic> metadata) {
final ciEvents = metadata['code_interpreter'] as List?;
if (ciEvents != null) {
for (final event in ciEvents) {
// Check for container_id at the top level (older synthetic events)
if (event['container_id'] != null) {
return event['container_id'] as String;
}
// Check for container_id nested in item (response.output_item.done
// events)
final item = event['item'];
if (item is Map && item['container_id'] != null) {
return item['container_id'] as String;
}
}
}
return null;
}