005ce566a8
- Provider model_settings (Provider+Model 级别参数配置): DB JSONB → API → GSM → AgentFactory.resolve → 三节点 agent.run 注入 - 新增 data/toolset/regulatory_toolset/: 监管节点专属工具(query_workflow_status / query_task_list / send_file) - send_file 从 interactive_toolset 迁移至 regulatory_toolset,interactive 仅保留 approval - mcp_helper 合入 GlobalPluginManager dispatch tools - 前端 Provider 弹窗参数设置区加 JSON 编辑器(model_settings) - 前端 Plugin 页面新增"重型插件"Tab(HeavyPluginList 占位) - .gitignore 精简:去除系统默认项,修复 data/ 子目录追踪 - data/toolset/ 与 data/plugin/ 首次纳入版本控制 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
"""query_workflow_status:查询某个 trace_id 对应工作流的最近事件。
|
||
|
||
regulatory_node 在与用户对话时,可以借此工具回答"我那个任务跑到哪一步了"
|
||
之类的问题。返回最近 N 条事件 + 当前工作流 status。
|
||
"""
|
||
|
||
from typing import Any, Dict, List
|
||
|
||
from kilostar.utils.ray_hook import ray_actor_hook
|
||
|
||
|
||
async def query_workflow_status(trace_id: str, limit: int = 10) -> Dict[str, Any]:
|
||
"""查询指定工作流 trace_id 的状态与最近事件。
|
||
|
||
Args:
|
||
trace_id: 工作流追踪 ID
|
||
limit: 返回最近多少条事件,默认 10
|
||
|
||
Returns:
|
||
{
|
||
"trace_id": str,
|
||
"status": str | None, # 工作流当前状态(pending/running/completed/failed)
|
||
"title": str | None,
|
||
"recent_events": [ # 最近事件,按时间倒序
|
||
{"event_type": ..., "level": ..., "message": ..., "node_name": ..., "created_at": ...}
|
||
]
|
||
}
|
||
"""
|
||
pg = ray_actor_hook("postgres_database").postgres_database
|
||
|
||
workflow = await pg.get_workflow.remote(trace_id)
|
||
events = await pg.query_event_logs.remote(trace_id=trace_id, limit=limit)
|
||
|
||
recent: List[Dict[str, Any]] = []
|
||
for e in events or []:
|
||
recent.append(
|
||
{
|
||
"event_type": getattr(e, "event_type", None),
|
||
"level": getattr(e, "level", None),
|
||
"message": getattr(e, "message", None),
|
||
"node_name": getattr(e, "node_name", None),
|
||
"created_at": str(getattr(e, "created_at", "")),
|
||
}
|
||
)
|
||
|
||
return {
|
||
"trace_id": trace_id,
|
||
"status": getattr(workflow, "status", None) if workflow else None,
|
||
"title": getattr(workflow, "title", None) if workflow else None,
|
||
"recent_events": recent,
|
||
}
|