feat: add deepseek-harness workbench plugin and console diagnosis API

- console: GET /api/workflows/{id}, /runs/{run_id}, /runs/{run_id}/diagnosis
  (journal trace + sanitized bounded log tails, workflow/run pairing enforced)
- workbench/: dsh 宿主插件(7 个工作流工具、中文系统提示词、失败监控器、
  本机回环桥接服务)+ 侧边栏面板客户端包(sidebar.footer.action 与
  shell.overlay 追加插槽)+ 降级独立面板 + 一键启动脚本
- adapters/browser: 收敛 looks_like_login_url 到共享层,修复
  jd_main_image_collector 对 gyxx_flow.accounts 的越层导入
- tests: 新端点覆盖;replay_policy 断言对齐已迁移的 catalog(repeatable)
This commit is contained in:
2026-09-04 11:10:16 +08:00
parent b124d757b0
commit 01218b2907
26 changed files with 4347 additions and 8 deletions
+11
View File
@@ -7,6 +7,7 @@ from contextlib import contextmanager
from dataclasses import dataclass
from pathlib import Path
from typing import Any, Iterator
from urllib.parse import urlparse
from gyxx_flow.core.artifacts import atomic_write_json
from gyxx_flow.core.layout import DataLayout
@@ -157,3 +158,13 @@ def persist_browser_state(
store.save_cookies(cookies)
store.save_storage_state(storage_state)
return len(cookies)
def looks_like_login_url(url: str) -> bool:
"""Whether a page URL looks like a platform login/passport redirect."""
parsed = urlparse(str(url))
hostname = (parsed.hostname or "").casefold()
path = parsed.path.casefold()
markers = ("login", "passport", "signin", "sign-in")
return any(marker in hostname or marker in path for marker in markers)