a digital entity named phi that roams bsky

tweaks

Changed files
+21 -17
src
+1 -1
src/bot/agent.py
··· 129 MemoryType.CONVERSATION, 130 ) 131 132 - logger.debug(f"💾 Stored interaction in episodic memory") 133 except Exception as e: 134 logger.warning(f"Failed to store in memory: {e}") 135
··· 129 MemoryType.CONVERSATION, 130 ) 131 132 + logger.debug("💾 Stored interaction in episodic memory") 133 except Exception as e: 134 logger.warning(f"Failed to store in memory: {e}") 135
+20 -16
src/bot/config.py
··· 12 ) 13 14 # Bluesky credentials 15 - bluesky_handle: str = Field(..., description="The handle of the Bluesky account") 16 bluesky_password: str = Field( 17 - ..., description="The password of the Bluesky account" 18 ) 19 bluesky_service: str = Field( 20 - "https://bsky.social", description="The service URL of the Bluesky account" 21 ) 22 23 # Bot configuration 24 - bot_name: str = Field("Bot", description="The name of the bot") 25 personality_file: str = Field( 26 - "personalities/phi.md", description="The file containing the bot's personality" 27 ) 28 29 # LLM configuration (support multiple providers) 30 openai_api_key: str | None = Field( 31 - None, description="The API key for the OpenAI API" 32 ) 33 anthropic_api_key: str | None = Field( 34 - None, description="The API key for the Anthropic API" 35 ) 36 37 # Google Search configuration 38 google_api_key: str | None = Field( 39 - None, description="The API key for the Google API" 40 ) 41 google_search_engine_id: str | None = Field( 42 - None, description="The search engine ID for the Google API" 43 ) 44 45 # TurboPuffer configuration 46 turbopuffer_api_key: str | None = Field( 47 - None, description="The API key for the TurboPuffer API" 48 ) 49 turbopuffer_namespace: str = Field( 50 - "bot-memories", description="The namespace for the TurboPuffer API" 51 ) 52 turbopuffer_region: str = Field( 53 - "gcp-us-central1", description="The region for the TurboPuffer API" 54 ) 55 56 # Server configuration 57 - host: str = Field("0.0.0.0", description="The host for the server") 58 - port: int = Field(8000, description="The port for the server") 59 60 # Polling configuration 61 notification_poll_interval: int = Field( 62 - 10, description="The interval for polling for notifications" 63 ) 64 65 # Debug mode 66 - debug: bool = Field(True, description="Whether to run in debug mode") 67 68 @model_validator(mode="after") 69 def configure_logging(self) -> Self:
··· 12 ) 13 14 # Bluesky credentials 15 + bluesky_handle: str = Field( 16 + default=..., description="The handle of the Bluesky account" 17 + ) 18 bluesky_password: str = Field( 19 + default=..., description="The password of the Bluesky account" 20 ) 21 bluesky_service: str = Field( 22 + default="https://bsky.social", 23 + description="The service URL of the Bluesky account", 24 ) 25 26 # Bot configuration 27 + bot_name: str = Field(default="Bot", description="The name of the bot") 28 personality_file: str = Field( 29 + default="personalities/phi.md", 30 + description="The file containing the bot's personality", 31 ) 32 33 # LLM configuration (support multiple providers) 34 openai_api_key: str | None = Field( 35 + default=None, description="The API key for the OpenAI API" 36 ) 37 anthropic_api_key: str | None = Field( 38 + default=None, description="The API key for the Anthropic API" 39 ) 40 41 # Google Search configuration 42 google_api_key: str | None = Field( 43 + default=None, description="The API key for the Google API" 44 ) 45 google_search_engine_id: str | None = Field( 46 + default=None, description="The search engine ID for the Google API" 47 ) 48 49 # TurboPuffer configuration 50 turbopuffer_api_key: str | None = Field( 51 + default=None, description="The API key for the TurboPuffer API" 52 ) 53 turbopuffer_namespace: str = Field( 54 + default="bot-memories", description="The namespace for the TurboPuffer API" 55 ) 56 turbopuffer_region: str = Field( 57 + default="gcp-us-central1", description="The region for the TurboPuffer API" 58 ) 59 60 # Server configuration 61 + host: str = Field(default="0.0.0.0", description="The host for the server") 62 + port: int = Field(default=8000, description="The port for the server") 63 64 # Polling configuration 65 notification_poll_interval: int = Field( 66 + default=10, description="The interval for polling for notifications" 67 ) 68 69 # Debug mode 70 + debug: bool = Field(default=True, description="Whether to run in debug mode") 71 72 @model_validator(mode="after") 73 def configure_logging(self) -> Self: