Source code for cadrumo.entrypoints.ledger_llm_diagnostics_composition
"""Outer composition for the ledger LLM-diagnostics read capabilities.Core types::class:`~cadrumo.adapters.persistence.profile.transactions.TransactionCatalogueRepository`."""from__future__importannotationsfromdatetimeimportdatefrom..application.ledger.llm_diagnostics_portsimport(LlmDiagnosticsPorts,LlmDiagnosticsReadError,LlmUsageDiagnosticRecord,)from..domain.transactions.modelsimportTransaction
[docs]defcompose_ledger_llm_diagnostics_ports(*,bucket_id:str)->LlmDiagnosticsPorts:"""Bind the diagnostics readers to the encrypted usage and ledger stores."""from..adapters.persistence.llm.usageimportUsageRecorderfrom..adapters.persistence.profile.transactionsimportTransactionCatalogueRepositorynormalized_bucket_id=bucket_id.strip()usage_recorder=UsageRecorder()transaction_repository=TransactionCatalogueRepository(bucket_id=normalized_bucket_id)classUsageDiagnosticsAdapter:"""Translate persisted usage records to accounting-only application facts."""defload_records(self,*,since:date|None,until:date|None,)->tuple[LlmUsageDiagnosticRecord,...]:try:records=usage_recorder.load_records(since=since,until=until)returntuple(LlmUsageDiagnosticRecord(provider=record.provider.value,input_tokens=record.input_tokens,output_tokens=record.output_tokens,cost_estimate_usd=record.cost_estimate_usd,cache_hit=record.cache_hit,)forrecordinrecords)exceptExceptionasexc:raiseLlmDiagnosticsReadError("Unable to load LLM usage diagnostics.")fromexcclassTransactionDiagnosticsAdapter:"""Translate the bucket catalogue to the domain facts the report needs."""defload_transactions(self)->tuple[Transaction,...]:try:returntuple(transaction_repository.load().values())exceptExceptionasexc:raiseLlmDiagnosticsReadError("Unable to load ledger confidence diagnostics.")fromexcreturnLlmDiagnosticsPorts(usage_reader=UsageDiagnosticsAdapter(),transaction_reader=TransactionDiagnosticsAdapter(),)