a digital person for bluesky
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})'