| """ | |
| Shared observability setup for full contract analysis pipeline | |
| Initializes braintrust logger used by all agent nodes for tracing | |
| Usage in any agent: | |
| from observability import get_logger | |
| logger = get_logger() | |
| if logger: | |
| with logger.start_span("my_node") as span: | |
| result = do_work() | |
| span.log(input={...}, output={...}, metadata={...}) | |
| """ | |
| import os | |
| import braintrust | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| BRAINTRUST_PROJECT = "contract-pipeline-evals" | |
| _logger = None | |
| def get_logger(): | |
| """Return initialized Braintrust logger (None if BRAINTRUST_API_KEY is missing)""" | |
| global _logger | |
| if _logger is None: | |
| api_key = os.environ.get("BRAINTRUST_API_KEY") | |
| if api_key: | |
| _logger = braintrust.init_logger( | |
| project=BRAINTRUST_PROJECT, | |
| api_key=api_key, | |
| ) | |
| else: | |
| print( | |
| "[observability] BRAINTRUST_API_KEY not set — " | |
| "tracing disabled. Add it to .env to enable spans." | |
| ) | |
| return _logger | |