| from core.ops.utils import measure_time | from core.ops.utils import measure_time | ||||
| from core.prompt.utils.prompt_template_parser import PromptTemplateParser | from core.prompt.utils.prompt_template_parser import PromptTemplateParser | ||||
| from core.workflow.entities.workflow_node_execution import WorkflowNodeExecutionMetadataKey | from core.workflow.entities.workflow_node_execution import WorkflowNodeExecutionMetadataKey | ||||
| from core.workflow.node_events import AgentLogEvent | |||||
| from extensions.ext_database import db | from extensions.ext_database import db | ||||
| from extensions.ext_storage import storage | from extensions.ext_storage import storage | ||||
| from models import App, Message, WorkflowNodeExecutionModel | from models import App, Message, WorkflowNodeExecutionModel | ||||
| ) | ) | ||||
| def agent_log_of(node_execution: WorkflowNodeExecutionModel) -> Sequence: | def agent_log_of(node_execution: WorkflowNodeExecutionModel) -> Sequence: | ||||
| raw_agent_log = node_execution.execution_metadata_dict.get(WorkflowNodeExecutionMetadataKey.AGENT_LOG) | |||||
| raw_agent_log = node_execution.execution_metadata_dict.get(WorkflowNodeExecutionMetadataKey.AGENT_LOG, []) | |||||
| if not raw_agent_log: | if not raw_agent_log: | ||||
| return [] | return [] | ||||
| parsed: Sequence[AgentLogEvent] = json.loads(raw_agent_log) | |||||
| def dict_of_event(event: AgentLogEvent): | |||||
| return { | |||||
| "status": event.status, | |||||
| "error": event.error, | |||||
| "data": event.data, | |||||
| return [ | |||||
| { | |||||
| "status": event["status"], | |||||
| "error": event["error"], | |||||
| "data": event["data"], | |||||
| } | } | ||||
| return [dict_of_event(event) for event in parsed] | |||||
| for event in raw_agent_log | |||||
| ] | |||||
| inputs = last_run.load_full_inputs(session, storage) | inputs = last_run.load_full_inputs(session, storage) | ||||
| last_run_dict = { | last_run_dict = { |