a digital person for bluesky
at f0dfd62bab20cd1fab1ef77e443164c0675cfe72 40 lines 1.4 kB view raw
1"""Reply tool for Bluesky - a simple tool for the Letta agent to indicate a reply.""" 2from typing import Optional 3from pydantic import BaseModel, Field, validator 4 5 6class ReplyArgs(BaseModel): 7 message: str = Field( 8 ..., 9 description="The reply message text (max 300 characters)" 10 ) 11 lang: Optional[str] = Field( 12 default="en-US", 13 description="Language code for the post (e.g., 'en-US', 'es', 'ja', 'th'). Defaults to 'en-US'" 14 ) 15 16 @validator('message') 17 def validate_message_length(cls, v): 18 if len(v) > 300: 19 raise ValueError(f"Message cannot be longer than 300 characters (current: {len(v)} characters)") 20 return v 21 22 23def bluesky_reply(message: str, lang: str = "en-US") -> str: 24 """ 25 This is a simple function that returns a string. MUST be less than 300 characters. 26 27 Args: 28 message: The reply text (max 300 characters) 29 lang: Language code for the post (e.g., 'en-US', 'es', 'ja', 'th'). Defaults to 'en-US' 30 31 Returns: 32 Confirmation message with language info 33 34 Raises: 35 Exception: If message exceeds 300 characters 36 """ 37 if len(message) > 300: 38 raise Exception(f"Message cannot be longer than 300 characters (current: {len(message)} characters)") 39 40 return f'Reply sent (language: {lang})'