a digital entity named phi that roams bsky

tweaks

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