import cycls
@cycls.app(pip=["claude-agent-sdk"], copy=[".env"])
async def app(context):
from claude_agent_sdk import (
ClaudeSDKClient,
ClaudeAgentOptions,
AssistantMessage,
TextBlock,
ToolUseBlock,
ThinkingBlock,
ResultMessage,
)
async with ClaudeSDKClient(
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob", "Grep", "Bash", "WebSearch"],
permission_mode="acceptEdits",
)
) as client:
await client.query(context.last_message)
async for message in client.receive_response():
if isinstance(message, AssistantMessage):
for block in message.content:
if isinstance(block, TextBlock):
yield block.text
elif isinstance(block, ThinkingBlock):
yield {"type": "thinking", "thinking": block.thinking}
elif isinstance(block, ToolUseBlock):
yield {"type": "thinking", "thinking": f"Using tool: {block.name}"}
elif isinstance(message, ResultMessage):
yield {"type": "thinking", "thinking": "Tool completed"}
app.local()