| 1 | from typing import Any |
| 2 | |
| 3 | from helpers.extension import Extension, extensible |
| 4 | from agent import Agent, LoopData |
| 5 | |
| 6 | |
| 7 | class SecretsPrompt(Extension): |
| 8 | |
| 9 | async def execute( |
| 10 | self, |
| 11 | system_prompt: list[str] = [], |
| 12 | loop_data: LoopData = LoopData(), |
| 13 | **kwargs: Any, |
| 14 | ): |
| 15 | if not self.agent: |
| 16 | return |
| 17 | prompt = await build_prompt(self.agent) |
| 18 | if prompt: |
| 19 | system_prompt.append(prompt) |
| 20 | |
| 21 | |
| 22 | @extensible |
| 23 | async def build_prompt(agent: Agent) -> str: |
| 24 | try: |
| 25 | from helpers.secrets import get_secrets_manager |
| 26 | from helpers.settings import get_settings_for_prompt |
| 27 | |
| 28 | secrets_manager = get_secrets_manager(agent.context) |
| 29 | secrets = secrets_manager.get_secrets_for_prompt() |
| 30 | variables = get_settings_for_prompt()["variables"] |
| 31 | return agent.read_prompt( |
| 32 | "agent.system.secrets.md", secrets=secrets, vars=variables |
| 33 | ) |
| 34 | except Exception: |
| 35 | return "" |