contentBlock method
Direct content block
Implementation
AnthropicMessageBuilder contentBlock(Map<String, dynamic> blockData) {
final type = blockData['type'] as String;
switch (type) {
case 'text':
final text = blockData['text'] as String;
final cacheData = blockData['cache_control'] as Map<String, dynamic>?;
if (cacheData != null && cacheData['type'] == 'ephemeral') {
final ttlString = cacheData['ttl'] as String?;
final ttl = AnthropicCacheTtl.fromString(ttlString);
// Use the new cache + text pattern
cache(ttl: ttl);
_builder.text(text);
return this;
} else {
_builder.text(text);
return this;
}
case 'tools':
final toolsData = blockData['tools'] as List<dynamic>;
final cacheData = blockData['cache_control'] as Map<String, dynamic>?;
// Convert tool data back to Tool objects
final tools = <Tool>[];
for (final toolData in toolsData) {
if (toolData is Map<String, dynamic>) {
final function = toolData['function'] as Map<String, dynamic>;
tools.add(Tool(
toolType: toolData['type'] as String? ?? 'function',
function: FunctionTool(
name: function['name'] as String,
description: function['description'] as String,
parameters: ParametersSchema.fromJson(
function['parameters'] as Map<String, dynamic>),
),
));
}
}
if (cacheData != null && cacheData['type'] == 'ephemeral') {
final ttlString = cacheData['ttl'] as String?;
final ttl = AnthropicCacheTtl.fromString(ttlString);
// Use cache + tools pattern
cache(ttl: ttl);
_builder.tools(tools);
return this;
} else {
_builder.tools(tools);
return this;
}
default:
_builder.text(blockData['text']?.toString() ?? '');
return this;
}
}