ChatDev/workflow/runtime/result_archiver.py
2026-01-07 16:24:01 +08:00

33 lines
1.1 KiB
Python
Executable File

"""Utilities for persisting execution artifacts."""
from utils.log_manager import LogManager
from utils.token_tracker import TokenTracker
from workflow.graph_context import GraphContext
class ResultArchiver:
"""Handles post-execution persistence (tokens, logs, metadata)."""
def __init__(
self,
graph: GraphContext,
log_manager: LogManager,
token_tracker: TokenTracker,
) -> None:
self.graph = graph
self.log_manager = log_manager
self.token_tracker = token_tracker
def export(self, final_result: str) -> None:
token_usage_path = self.graph.directory / f"token_usage_{self.graph.name}.json"
self.token_tracker.export_to_file(str(token_usage_path))
self.log_manager.record_workflow_end(
success=True,
details={
"token_usage": self.token_tracker.get_token_usage(),
"final_result": final_result,
},
)
log_file_path = self.graph.directory / "execution_logs.json"
self.log_manager.save_logs(str(log_file_path))