From a142d505ec50e943648a9d6f486592088114f26a Mon Sep 17 00:00:00 2001 From: Upper9527 Date: Wed, 22 Apr 2026 15:41:28 +0800 Subject: [PATCH 1/3] feat: add dashboard session trace closure --- README.md | 46 +- assets/README_ZH.md | 6 +- pyproject.toml | 3 + skillclaw/cli.py | 164 ++ skillclaw/config.py | 11 + skillclaw/config_store.py | 27 + skillclaw/dashboard_assets/app.js | 2640 +++++++++++++++++++++++++ skillclaw/dashboard_assets/index.html | 218 ++ skillclaw/dashboard_assets/styles.css | 859 ++++++++ skillclaw/dashboard_ingest.py | 1305 ++++++++++++ skillclaw/dashboard_server.py | 654 ++++++ skillclaw/dashboard_store.py | 664 +++++++ skillclaw/skill_hub.py | 146 +- tests/test_dashboard.py | 1339 +++++++++++++ 14 files changed, 8038 insertions(+), 44 deletions(-) create mode 100644 skillclaw/dashboard_assets/app.js create mode 100644 skillclaw/dashboard_assets/index.html create mode 100644 skillclaw/dashboard_assets/styles.css create mode 100644 skillclaw/dashboard_ingest.py create mode 100644 skillclaw/dashboard_server.py create mode 100644 skillclaw/dashboard_store.py create mode 100644 tests/test_dashboard.py diff --git a/README.md b/README.md index cd5db07..0629145 100644 --- a/README.md +++ b/README.md @@ -123,8 +123,12 @@ Everything above is what one user gets. Now scale it up: when you join a shared ## News +- **2026/04/22** — Added a bilingual dashboard with `skillclaw dashboard sync` and `skillclaw dashboard serve` for inspecting local/shared skills, validation progress, version history, and session traces. +- **2026/04/20** — Added [Codex](https://github.com/openai/codex) and [Claude Code](https://docs.anthropic.com/en/docs/claude-code) integration with proxy auto-configuration, native skills-directory defaults, and `doctor` / `restore` commands. +- **2026/04/17** — Added [QwenPaw](https://github.com/agentscope-ai/QwenPaw) integration and updated the docs for broader multi-agent compatibility. +- **2026/04/17** — Added full [Hermes](https://github.com/NousResearch/hermes-agent) integration, per-turn skill tracking, `doctor hermes`, `skillclaw skills *` management commands, and a major docs overhaul. - **2026/04/14** — WeChat discussion group is live! [Join the group](assets/image.png) to chat with us. -- **2026/04/14** — Seamless integration with [Hermes](https://github.com/NousResearch/hermes-agent) is now available. +- **2026/04/14** — Initial [Hermes](https://github.com/NousResearch/hermes-agent) support landed together with the first README refresh. - **2026/04/12** — Active discussion with [Deer-Flow](https://github.com/bytedance/deer-flow/discussions/2133) on cross-framework skill sharing. - **2026/04/11** — SkillClaw ranked **#2 Paper of the Day** on [Hugging Face Daily Papers](https://huggingface.co/papers/2604.08377)! - **2026/04/10** — SkillClaw is now open source! Code released on [GitHub](https://github.com/AMAP-ML/SkillClaw). @@ -311,6 +315,46 @@ skillclaw validation run-once --force `skillclaw start --daemon` will automatically run the background validator afterward. `run-once --force` is the quickest way to test the path without waiting for the idle timer. +### Optional: inspect skills and sessions with the dashboard + +The dashboard is a local visualization layer for the current SkillClaw snapshot. It is useful when you want to inspect: + +- local skills and whether they match the shared official version +- candidate validation jobs and their current status +- published shared skills and version history +- local and shared sessions behind skill updates + +The dashboard commands are available from the same `skillclaw` install: + +```bash +skillclaw dashboard sync +skillclaw dashboard serve +``` + +If you want to point the dashboard at a local shared root and a specific group: + +```bash +skillclaw dashboard sync \ + --sharing-local-root /path/to/shared/root \ + --sharing-group-id my-group \ + --sharing-user-alias alice + +skillclaw dashboard serve \ + --host 127.0.0.1 \ + --port 3791 \ + --sharing-local-root /path/to/shared/root \ + --sharing-group-id my-group \ + --sharing-user-alias alice +``` + +Then open: + +```text +http://127.0.0.1:3791 +``` + +By default, `serve` rebuilds the snapshot on startup. If you already ran `skillclaw dashboard sync`, you can start faster with `--no-sync-on-start`. + ## Server Guide The evolve server is the shared backend for one user or many users. It can run locally for a personal setup, or remotely for a team setup. diff --git a/assets/README_ZH.md b/assets/README_ZH.md index 776d593..312b26b 100644 --- a/assets/README_ZH.md +++ b/assets/README_ZH.md @@ -122,8 +122,12 @@ SkillClaw 不是让 Hermes 学更多,而是让它学到的一切,真正变 ## 动态 +- **2026/04/22** — 新增支持中英文切换的 dashboard,可通过 `skillclaw dashboard sync` 和 `skillclaw dashboard serve` 查看本地 / 共享 skill、候选验证进度、版本历史与会话追溯。 +- **2026/04/20** — 新增 [Codex](https://github.com/openai/codex) 与 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) 集成,支持自动接入代理、使用各自原生 skills 目录,并提供 `doctor` / `restore` 命令。 +- **2026/04/17** — 新增 [QwenPaw](https://github.com/agentscope-ai/QwenPaw) 集成,并同步更新文档以覆盖更多 Agent 框架。 +- **2026/04/17** — 补齐完整的 [Hermes](https://github.com/NousResearch/hermes-agent) 集成能力,加入逐轮 skill 使用追踪、`doctor hermes`、`skillclaw skills *` 管理命令,以及一轮文档重构。 - **2026/04/14** — 微信讨论群已开放![加入群聊](./image.png)和我们交流。 -- **2026/04/14** — 已支持与 [Hermes](https://github.com/NousResearch/hermes-agent) 无缝集成。 +- **2026/04/14** — 初步接入 [Hermes](https://github.com/NousResearch/hermes-agent),并完成第一轮 README 改版。 - **2026/04/12** — 正在与 [Deer-Flow](https://github.com/bytedance/deer-flow/discussions/2133) 讨论跨框架技能共享。 - **2026/04/11** — SkillClaw 在 [Hugging Face Daily Papers](https://huggingface.co/papers/2604.08377) 上获得**当日第 2 名**! - **2026/04/10** — SkillClaw 正式开源!代码已发布在 [GitHub](https://github.com/AMAP-ML/SkillClaw)。 diff --git a/pyproject.toml b/pyproject.toml index b1aad2a..3a4a070 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,6 +55,9 @@ skillclaw-evolve-server = "evolve_server.__main__:main" where = ["."] include = ["skillclaw*", "evolve_server*"] +[tool.setuptools.package-data] +skillclaw = ["dashboard_assets/*"] + [tool.ruff] line-length = 120 diff --git a/skillclaw/cli.py b/skillclaw/cli.py index 7895283..b675c1d 100644 --- a/skillclaw/cli.py +++ b/skillclaw/cli.py @@ -545,6 +545,170 @@ def validation_run_once(force: bool): click.echo(f"{key}: {value}") +@skillclaw.group() +def dashboard(): + """Dashboard and skill visualization commands.""" + + +def _apply_dashboard_runtime_overrides( + cfg, + *, + host: str | None = None, + port: int | None = None, + db_path: str | None = None, + no_sync_on_start: bool = False, + sharing_local_root: str | None = None, + sharing_group_id: str | None = None, + sharing_user_alias: str | None = None, + include_shared: bool | None = None, + evolve_server_url: str | None = None, +): + if host: + cfg.dashboard_host = host + if port: + cfg.dashboard_port = port + if db_path: + cfg.dashboard_db_path = db_path + if no_sync_on_start: + cfg.dashboard_sync_on_start = False + if sharing_local_root: + cfg.sharing_enabled = True + cfg.sharing_backend = "local" + cfg.sharing_local_root = sharing_local_root + if sharing_group_id: + cfg.sharing_group_id = sharing_group_id + if sharing_user_alias: + cfg.sharing_user_alias = sharing_user_alias + if include_shared is not None: + cfg.dashboard_include_shared = include_shared + if evolve_server_url is not None: + cfg.dashboard_evolve_server_url = evolve_server_url + return cfg + + +@dashboard.command(name="sync") +@click.option( + "--db-path", + type=click.Path(dir_okay=False, path_type=str), + default=None, + help="Override dashboard SQLite file path.", +) +@click.option( + "--sharing-local-root", + type=click.Path(file_okay=False, path_type=str), + default=None, + help="Use a local filesystem directory as the shared storage root for dashboard sync.", +) +@click.option("--sharing-group-id", type=str, default=None, help="Override shared storage group id.") +@click.option("--sharing-user-alias", type=str, default=None, help="Override sharing user alias.") +@click.option( + "--include-shared/--no-include-shared", + default=None, + help="Control whether shared storage is included in the dashboard snapshot.", +) +@click.option("--evolve-server-url", type=str, default=None, help="Override evolve server base URL.") +def dashboard_sync( + db_path: str | None, + sharing_local_root: str | None, + sharing_group_id: str | None, + sharing_user_alias: str | None, + include_shared: bool | None, + evolve_server_url: str | None, +): + """Refresh the dashboard SQLite projection.""" + from .dashboard_server import DashboardService + + cs = ConfigStore() + cfg = _apply_dashboard_runtime_overrides( + cs.to_skillclaw_config(), + db_path=db_path, + sharing_local_root=sharing_local_root, + sharing_group_id=sharing_group_id, + sharing_user_alias=sharing_user_alias, + include_shared=include_shared, + evolve_server_url=evolve_server_url, + ) + service = DashboardService(cfg) + result = service.sync() + summary = result["summary"] + click.echo( + f"Dashboard snapshot synced: " + f"{summary['skills']} skills, " + f"{summary['sessions']} sessions, " + f"{summary['validation_jobs']} validation jobs." + ) + click.echo(f"SQLite: {cfg.dashboard_db_path}") + warnings = summary.get("warnings") or [] + if warnings: + click.echo("Warnings:") + for item in warnings: + click.echo(f" - {item}") + + +@dashboard.command(name="serve") +@click.option("--host", type=str, default=None, help="Override dashboard host.") +@click.option("--port", type=int, default=None, help="Override dashboard port.") +@click.option( + "--db-path", + type=click.Path(dir_okay=False, path_type=str), + default=None, + help="Override dashboard SQLite file path.", +) +@click.option( + "--no-sync-on-start", + is_flag=True, + default=False, + help="Start the dashboard without rebuilding the snapshot first.", +) +@click.option( + "--sharing-local-root", + type=click.Path(file_okay=False, path_type=str), + default=None, + help="Use a local filesystem directory as the shared storage root while serving the dashboard.", +) +@click.option("--sharing-group-id", type=str, default=None, help="Override shared storage group id.") +@click.option("--sharing-user-alias", type=str, default=None, help="Override sharing user alias.") +@click.option( + "--include-shared/--no-include-shared", + default=None, + help="Control whether shared storage is included in the dashboard snapshot.", +) +@click.option("--evolve-server-url", type=str, default=None, help="Override evolve server base URL.") +def dashboard_serve( + host: str | None, + port: int | None, + db_path: str | None, + no_sync_on_start: bool, + sharing_local_root: str | None, + sharing_group_id: str | None, + sharing_user_alias: str | None, + include_shared: bool | None, + evolve_server_url: str | None, +): + """Serve the dashboard UI and API.""" + from .dashboard_server import serve_dashboard + + cs = ConfigStore() + cfg = _apply_dashboard_runtime_overrides( + cs.to_skillclaw_config(), + host=host, + port=port, + db_path=db_path, + no_sync_on_start=no_sync_on_start, + sharing_local_root=sharing_local_root, + sharing_group_id=sharing_group_id, + sharing_user_alias=sharing_user_alias, + include_shared=include_shared, + evolve_server_url=evolve_server_url, + ) + + click.echo( + f"Starting SkillClaw dashboard at http://{cfg.dashboard_host}:{cfg.dashboard_port} " + f"(db: {cfg.dashboard_db_path})" + ) + serve_dashboard(cfg) + + @skillclaw.group() def skills(): """Skill management commands.""" diff --git a/skillclaw/config.py b/skillclaw/config.py index 9601189..b5a5c46 100644 --- a/skillclaw/config.py +++ b/skillclaw/config.py @@ -101,6 +101,17 @@ class SkillClawConfig: validation_max_jobs_per_day: int = 5 validation_max_concurrency: int = 1 + # ------------------------------------------------------------------ # + # Dashboard # + # ------------------------------------------------------------------ # + dashboard_enabled: bool = False + dashboard_host: str = "127.0.0.1" + dashboard_port: int = 3788 + dashboard_db_path: str = "~/.skillclaw/dashboard.db" + dashboard_sync_on_start: bool = True + dashboard_include_shared: bool = True + dashboard_evolve_server_url: str = "" + # ------------------------------------------------------------------ # # Cloud / Bedrock # # ------------------------------------------------------------------ # diff --git a/skillclaw/config_store.py b/skillclaw/config_store.py index 9bfa417..2018d96 100644 --- a/skillclaw/config_store.py +++ b/skillclaw/config_store.py @@ -78,6 +78,15 @@ "max_jobs_per_day": 5, "max_concurrency": 1, }, + "dashboard": { + "enabled": False, + "host": "127.0.0.1", + "port": 3788, + "db_path": str(CONFIG_DIR / "dashboard.db"), + "sync_on_start": True, + "include_shared": True, + "evolve_server_url": "", + }, } @@ -253,6 +262,7 @@ def to_skillclaw_config(self) -> SkillClawConfig: sharing = data.get("sharing", {}) validation = data.get("validation", {}) + dashboard = data.get("dashboard", {}) sharing_backend = _infer_sharing_backend(sharing) sharing_endpoint = _first_non_empty(sharing, "endpoint") sharing_bucket = _first_non_empty(sharing, "bucket") @@ -331,6 +341,16 @@ def to_skillclaw_config(self) -> SkillClawConfig: validation_poll_interval_seconds=int(validation.get("poll_interval_seconds", 60)), validation_max_jobs_per_day=int(validation.get("max_jobs_per_day", 5)), validation_max_concurrency=max(1, int(validation.get("max_concurrency", 1))), + dashboard_enabled=bool(dashboard.get("enabled", False)), + dashboard_host=str(dashboard.get("host", "127.0.0.1") or "127.0.0.1"), + dashboard_port=int(dashboard.get("port", 3788) or 3788), + dashboard_db_path=str( + dashboard.get("db_path", str(CONFIG_DIR / "dashboard.db")) + or str(CONFIG_DIR / "dashboard.db") + ), + dashboard_sync_on_start=bool(dashboard.get("sync_on_start", True)), + dashboard_include_shared=bool(dashboard.get("include_shared", True)), + dashboard_evolve_server_url=str(dashboard.get("evolve_server_url", "") or ""), ) def describe(self) -> str: @@ -339,6 +359,7 @@ def describe(self) -> str: llm = data.get("llm", {}) skills = data.get("skills", {}) prm = data.get("prm", {}) + dashboard = data.get("dashboard", {}) claw_type = str(data.get("claw_type", "openclaw") or "openclaw") effective_skills_dir = resolve_skills_dir( skills.get("dir", str(_DEFAULT_SKILLS_DIR)), @@ -397,5 +418,11 @@ def describe(self) -> str: f"validation.mode: {_normalize_validation_mode(validation.get('mode', 'replay'))}", f"validation.idle_after: {validation.get('idle_after_seconds', 300)}", f"validation.poll_interval: {validation.get('poll_interval_seconds', 60)}", + f"dashboard.enabled: {dashboard.get('enabled', False)}", + f"dashboard.host: {dashboard.get('host', '127.0.0.1')}", + f"dashboard.port: {dashboard.get('port', 3788)}", + f"dashboard.db_path: {dashboard.get('db_path', str(CONFIG_DIR / 'dashboard.db'))}", + f"dashboard.include_shared: {dashboard.get('include_shared', True)}", + f"dashboard.evolve_server_url: {dashboard.get('evolve_server_url', '') or '(not set)'}", ] return "\n".join(lines) diff --git a/skillclaw/dashboard_assets/app.js b/skillclaw/dashboard_assets/app.js new file mode 100644 index 0000000..508a9ff --- /dev/null +++ b/skillclaw/dashboard_assets/app.js @@ -0,0 +1,2640 @@ +const LOCALE_STORAGE_KEY = "skillclaw.dashboard.locale" + +function initialLocale() { + try { + const stored = window.localStorage.getItem(LOCALE_STORAGE_KEY) + if (stored === "en" || stored === "zh") { + return stored + } + } catch {} + return "zh" +} + +const state = { + activeView: "overview", + loading: false, + locale: initialLocale(), + overview: null, + evolve: null, + skills: [], + sessions: [], + validationJobs: [], + skillDetails: Object.create(null), + sessionDetails: Object.create(null), + compareSelections: Object.create(null), + selectedLocalSkillId: "", + selectedCandidateJobId: "", + selectedFinalSkillId: "", + selectedSessionId: "", +} + +const dom = { + body: document.body, + messageStrip: document.querySelector("#message-strip"), + brandTitle: document.querySelector("#brand-title"), + brandCopy: document.querySelector("#brand-copy"), + navOverviewTitle: document.querySelector("#nav-overview-title"), + navLocalTitle: document.querySelector("#nav-local-title"), + navCandidateTitle: document.querySelector("#nav-candidate-title"), + navFinalTitle: document.querySelector("#nav-final-title"), + navSessionsTitle: document.querySelector("#nav-sessions-title"), + navButtons: Array.from(document.querySelectorAll("[data-view]")), + viewPanels: Array.from(document.querySelectorAll("[data-view-panel]")), + navOverviewMeta: document.querySelector("#nav-overview-meta"), + navLocalMeta: document.querySelector("#nav-local-meta"), + navCandidateMeta: document.querySelector("#nav-candidate-meta"), + navFinalMeta: document.querySelector("#nav-final-meta"), + navSessionsMeta: document.querySelector("#nav-sessions-meta"), + sidebarStatusTitle: document.querySelector("#sidebar-status-title"), + sidebarStatus: document.querySelector("#sidebar-status"), + heroKicker: document.querySelector("#hero-kicker"), + heroTitle: document.querySelector("#hero-title"), + localeButton: document.querySelector("#btn-locale"), + refreshButton: document.querySelector("#btn-refresh"), + syncButton: document.querySelector("#btn-sync"), + overviewKicker: document.querySelector("#overview-kicker"), + overviewTitle: document.querySelector("#overview-title"), + overviewCopy: document.querySelector("#overview-copy"), + watchlistKicker: document.querySelector("#watchlist-kicker"), + watchlistTitle: document.querySelector("#watchlist-title"), + scopeKicker: document.querySelector("#scope-kicker"), + scopeTitle: document.querySelector("#scope-title"), + eventsKicker: document.querySelector("#events-kicker"), + eventsTitle: document.querySelector("#events-title"), + eventsCopy: document.querySelector("#events-copy"), + overviewMetrics: document.querySelector("#overview-metrics"), + overviewWatchlist: document.querySelector("#overview-watchlist"), + overviewContext: document.querySelector("#overview-context"), + overviewEvents: document.querySelector("#overview-events"), + localKicker: document.querySelector("#local-kicker"), + localTitle: document.querySelector("#local-title"), + localCopy: document.querySelector("#local-copy"), + localSearch: document.querySelector("#local-search"), + localList: document.querySelector("#local-list"), + localDetail: document.querySelector("#local-detail"), + candidateKicker: document.querySelector("#candidate-kicker"), + candidateTitle: document.querySelector("#candidate-title"), + candidateCopy: document.querySelector("#candidate-copy"), + candidateSearch: document.querySelector("#candidate-search"), + candidateStatus: document.querySelector("#candidate-status"), + candidateStatusAll: document.querySelector("#candidate-status-all"), + candidateStatusPending: document.querySelector("#candidate-status-pending"), + candidateStatusReview: document.querySelector("#candidate-status-review"), + candidateStatusPublished: document.querySelector("#candidate-status-published"), + candidateStatusRejected: document.querySelector("#candidate-status-rejected"), + candidateList: document.querySelector("#candidate-list"), + candidateDetail: document.querySelector("#candidate-detail"), + finalKicker: document.querySelector("#final-kicker"), + finalTitle: document.querySelector("#final-title"), + finalCopy: document.querySelector("#final-copy"), + finalSearch: document.querySelector("#final-search"), + finalList: document.querySelector("#final-list"), + finalDetail: document.querySelector("#final-detail"), + sessionsKicker: document.querySelector("#sessions-kicker"), + sessionsTitle: document.querySelector("#sessions-title"), + sessionsCopy: document.querySelector("#sessions-copy"), + sessionSearch: document.querySelector("#session-search"), + sessionSource: document.querySelector("#session-source"), + sessionSourceLocal: document.querySelector("#session-source-local"), + sessionSourceAll: document.querySelector("#session-source-all"), + sessionSourceShared: document.querySelector("#session-source-shared"), + sessionList: document.querySelector("#session-list"), + sessionDetail: document.querySelector("#session-detail"), + opButtons: Array.from(document.querySelectorAll("[data-op]")), +} + +function localeTag() { + return state.locale === "en" ? "en-US" : "zh-CN" +} + +function l(zh, en, vars = {}) { + const template = state.locale === "en" ? en : zh + return String(template).replace(/\{(\w+)\}/g, (_, key) => String(vars[key] ?? "")) +} + +function escapeHtml(value) { + return String(value ?? "") + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'") +} + +function clip(value, limit = 160) { + const text = String(value ?? "").trim().replace(/\s+/g, " ") + if (text.length <= limit) { + return text + } + return `${text.slice(0, limit).trimEnd()}...` +} + +function number(value) { + return Number(value || 0).toLocaleString(localeTag()) +} + +function parseTime(value) { + const timestamp = Date.parse(String(value || "")) + return Number.isFinite(timestamp) ? timestamp : 0 +} + +function formatStamp(value) { + const timestamp = parseTime(value) + if (!timestamp) { + return l("无时间", "No time") + } + return new Intl.DateTimeFormat(localeTag(), { + year: "numeric", + month: "numeric", + day: "numeric", + hour: "2-digit", + minute: "2-digit", + }).format(new Date(timestamp)) +} + +function formatScore(value) { + if (value == null || value === "") { + return "-" + } + const numeric = Number(value) + if (!Number.isFinite(numeric)) { + return "-" + } + return numeric.toFixed(2) +} + +function shortHash(value, size = 10) { + const text = String(value || "").trim() + if (!text) { + return "-" + } + return text.length <= size ? text : text.slice(0, size) +} + +function getJson(url, options = {}) { + return fetch(url, { + headers: { + "Content-Type": "application/json", + }, + ...options, + }).then(async (response) => { + const payload = await response.json().catch(() => ({})) + if (!response.ok) { + throw new Error(String(payload?.detail || payload?.error || response.statusText || l("请求失败", "Request failed"))) + } + return payload + }) +} + +function showMessage(kind, text) { + dom.messageStrip.className = `message-strip ${kind || "info"}` + dom.messageStrip.textContent = text +} + +function clearMessage() { + dom.messageStrip.className = "message-strip hidden" + dom.messageStrip.textContent = "" +} + +function setLoading(value) { + state.loading = Boolean(value) + dom.body.dataset.loading = value ? "true" : "false" + for (const button of dom.opButtons) { + button.disabled = Boolean(value) + } +} + +function tag(label) { + return `${escapeHtml(label)}` +} + +function badge(label, tone = "neutral") { + return `${escapeHtml(label)}` +} + +function actionLabel(action) { + const normalized = String(action || "").trim().toLowerCase() + if (!normalized) { + return l("未标注", "Unlabeled") + } + if (normalized === "create" || normalized === "create_skill") { + return l("创建", "Create") + } + if (normalized === "improve") { + return l("改进", "Improve") + } + if (normalized === "merge") { + return l("合并", "Merge") + } + if (normalized === "published_after_validation") { + return l("验证后发布", "Publish After Validation") + } + if (normalized === "snapshot") { + return l("快照", "Snapshot") + } + return String(action) +} + +function outcomeLabel(outcome) { + const normalized = String(outcome || "").trim().toLowerCase() + if (!normalized) { + return l("未标注", "Unlabeled") + } + if (normalized === "success") { + return l("成功", "Success") + } + if (normalized === "review") { + return l("待复核", "Needs Review") + } + if (normalized === "rollback") { + return l("回滚", "Rolled Back") + } + if (normalized === "failure") { + return l("失败", "Failure") + } + return String(outcome) +} + +function sourceLabel(source) { + const normalized = String(source || "").trim().toLowerCase() + if (normalized === "local") { + return l("本地", "Local") + } + if (normalized === "shared") { + return l("共享库", "Shared Pool") + } + if (normalized === "both") { + return l("本地和共享库", "Local + Shared Pool") + } + if (normalized === "observed") { + return l("仅观测记录", "Observed Only") + } + return String(source || "-") +} + +function categoryLabel(value) { + const normalized = String(value || "").trim().toLowerCase() + if (!normalized) { + return l("未分类", "Uncategorized") + } + const labels = { + general: l("通用", "General"), + candidate: l("候选", "Candidate"), + coding: l("编码", "Coding"), + communication: l("沟通", "Communication"), + security: l("安全", "Security"), + automation: l("自动化", "Automation"), + agentic: l("代理", "Agentic"), + common_mistakes: l("常见错误", "Common Mistakes"), + research: l("研究", "Research"), + devops: l("运维", "DevOps"), + productivity: l("效率", "Productivity"), + data_analysis: l("数据分析", "Data Analysis"), + } + return labels[normalized] || String(value) +} + +function candidateStatusKey(value) { + const normalized = String(value || "").trim().toLowerCase() + if (normalized === "pending_validation" || normalized === "pending") { + return "pending" + } + if (normalized === "review") { + return "review" + } + if (normalized === "published") { + return "published" + } + if (normalized === "rejected") { + return "rejected" + } + return normalized || "pending" +} + +function candidateStatusLabel(value) { + const status = candidateStatusKey(value) + if (status === "pending") { + return l("待验证", "Awaiting Validation") + } + if (status === "review") { + return l("已有反馈", "Feedback Received") + } + if (status === "published") { + return l("已入最终池", "Published") + } + if (status === "rejected") { + return l("已拒绝", "Rejected") + } + return String(value || l("未知状态", "Unknown Status")) +} + +function toneForStatus(value) { + const status = candidateStatusKey(value) + if (status === "published") { + return "published" + } + if (status === "rejected") { + return "rejected" + } + if (status === "pending" || status === "review") { + return "pending" + } + return "neutral" +} + +function eventTypeLabel(value) { + const normalized = String(value || "").trim().toLowerCase() + if (normalized === "candidate") { + return l("候选生成", "Candidate Created") + } + if (normalized === "validation") { + return l("验证反馈", "Validation Feedback") + } + if (normalized === "publish") { + return l("正式发布", "Published") + } + if (normalized === "reject") { + return l("拒绝决策", "Rejected") + } + return String(value || l("事件", "Event")) +} + +function stageStateLabel(value) { + const normalized = String(value || "").trim().toLowerCase() + if (normalized === "done") { + return l("已完成", "Done") + } + if (normalized === "current") { + return l("进行中", "In Progress") + } + if (normalized === "pending") { + return l("待开始", "Pending") + } + if (normalized === "blocked") { + return l("已终止", "Blocked") + } + return String(value || "-") +} + +function normalizeSkillNames(items) { + if (!Array.isArray(items)) { + return [] + } + const result = [] + for (const item of items) { + if (typeof item === "string" && item.trim()) { + result.push(item.trim()) + continue + } + if (item && typeof item === "object") { + const raw = item.skill_name || item.name || item.skill + if (String(raw || "").trim()) { + result.push(String(raw).trim()) + } + } + } + return [...new Set(result)] +} + +function sortSkills(items) { + return [...items].sort((left, right) => ( + Number(right.session_count || 0) - Number(left.session_count || 0) + || Number(right.observed_injection_count || 0) - Number(left.observed_injection_count || 0) + || Number(right.local_inject_count || 0) - Number(left.local_inject_count || 0) + || parseTime(right.updated_at || right.uploaded_at) - parseTime(left.updated_at || left.uploaded_at) + || String(left.name || "").localeCompare(String(right.name || ""), "zh-CN") + )) +} + +function sortSessions(items) { + return [...items].sort((left, right) => ( + parseTime(right.timestamp) - parseTime(left.timestamp) + || String(left.session_id || "").localeCompare(String(right.session_id || ""), "zh-CN") + )) +} + +function sortJobs(items) { + const priority = { + pending: 0, + review: 1, + published: 2, + rejected: 3, + } + return [...items].sort((left, right) => ( + (priority[candidateStatusKey(left.status)] ?? 99) - (priority[candidateStatusKey(right.status)] ?? 99) + || parseTime(right.created_at) - parseTime(left.created_at) + || String(left.skill_name || "").localeCompare(String(right.skill_name || ""), "zh-CN") + )) +} + +function localSkillItems() { + return sortSkills( + state.skills.filter((item) => item?.has_local || String(item?.source || "") === "local" || String(item?.source || "") === "both") + ) +} + +function finalSkillItems() { + return sortSkills( + state.skills.filter((item) => item?.has_remote || String(item?.source || "") === "shared" || String(item?.source || "") === "both") + ) +} + +function allSessionItems() { + return sortSessions(state.sessions) +} + +function mySessionItems() { + return sortSessions(state.sessions.filter((item) => String(item?.source || "").trim().toLowerCase() === "local")) +} + +function candidateItems() { + return sortJobs(state.validationJobs) +} + +function findSkillById(skillId) { + return state.skills.find((item) => String(item.skill_id || "") === String(skillId || "")) || null +} + +function findSkillByName(name) { + const normalized = String(name || "").trim().toLowerCase() + if (!normalized) { + return null + } + return state.skills.find((item) => String(item.name || "").trim().toLowerCase() === normalized) || null +} + +function findJobById(jobId) { + return state.validationJobs.find((item) => String(item.job_id || "") === String(jobId || "")) || null +} + +function findSessionById(sessionId) { + return state.sessions.find((item) => String(item.session_id || "") === String(sessionId || "")) || null +} + +function selectedLocalSkillDetail() { + return state.skillDetails[state.selectedLocalSkillId] || null +} + +function selectedFinalSkillDetail() { + return state.skillDetails[state.selectedFinalSkillId] || null +} + +function selectedCandidateJob() { + return findJobById(state.selectedCandidateJobId) +} + +function selectedSessionDetail() { + return state.sessionDetails[state.selectedSessionId] || null +} + +function sharingEnabled() { + return Boolean(state.overview?.meta?.sharing_enabled) +} + +function sharingTarget() { + const meta = state.overview?.meta || {} + if (!meta.sharing_enabled) { + return l("未启用共享", "Sharing Disabled") + } + const backend = String(meta.sharing_backend || "").trim().toLowerCase() + const groupId = String(meta.sharing_group_id || "default").trim() + if (backend === "local") { + return `${String(meta.sharing_local_root || "").trim() || "-"} / ${groupId}` + } + return `${backend || "shared"} / ${groupId}` +} + +function warnings() { + return Array.isArray(state.overview?.meta?.warnings) ? state.overview.meta.warnings : [] +} + +function evolveHealthLabel() { + if (!state.evolve?.configured) { + return l("未配置", "Not Configured") + } + return state.evolve?.healthy ? l("正常", "Healthy") : l("异常", "Unhealthy") +} + +function compareLocalAndRemote(skill) { + if (!skill?.has_local) { + return { key: "shared_only", label: l("仅在共享库", "Shared Only"), tone: "neutral" } + } + if (!skill?.has_remote) { + return { + key: sharingEnabled() ? "not_published" : "sharing_disabled", + label: sharingEnabled() ? l("尚未发布到共享库", "Not Published to Shared Pool") : l("共享未启用", "Sharing Disabled"), + tone: "neutral", + } + } + if (skill.local_sha && skill.remote_sha && skill.local_sha === skill.remote_sha) { + return { key: "synced", label: l("已与共享正式版同步", "Synced with Shared Official Version"), tone: "published" } + } + return { + key: "drift", + label: Number(skill.current_version || 0) > 0 + ? l("与共享版 v{version} 不一致", "Different from shared v{version}", { version: number(skill.current_version) }) + : l("与共享版不一致", "Different from shared version"), + tone: "pending", + } +} + +function candidateRecordCount(skillName) { + return jobsForSkill(skillName).length +} + +function sharedVersionLabel(skill) { + return skill.has_remote ? `v${number(skill.current_version || 0)}` : l("未发布", "Not Published") +} + +function versionCount(skill) { + return Array.isArray(skill?.versions) ? skill.versions.length : 0 +} + +function visibleVersionCount(skill) { + return Math.max( + versionCount(skill), + Number(skill?.current_version || 0), + skill?.has_remote ? 1 : 0 + ) +} + +function jobPayload(job) { + return job?.details?.job || {} +} + +function jobResults(job) { + return Array.isArray(job?.details?.results) ? job.details.results : [] +} + +function jobDecision(job) { + return job?.details?.decision || {} +} + +function jobSessionIds(job) { + const ids = jobPayload(job).session_ids + return Array.isArray(ids) ? ids.filter(Boolean) : [] +} + +function jobsForSkill(skillName) { + const normalized = String(skillName || "").trim().toLowerCase() + return sortJobs( + state.validationJobs.filter((job) => String(job.skill_name || "").trim().toLowerCase() === normalized) + ) +} + +function jobsForSession(sessionId) { + return sortJobs( + state.validationJobs.filter((job) => jobSessionIds(job).includes(sessionId)) + ) +} + +function filteredLocalSkills() { + const search = String(dom.localSearch.value || "").trim().toLowerCase() + return localSkillItems().filter((skill) => { + if (!search) { + return true + } + return [ + skill.name, + skill.description, + skill.category, + ].some((field) => String(field || "").toLowerCase().includes(search)) + }) +} + +function filteredCandidateJobs() { + const search = String(dom.candidateSearch.value || "").trim().toLowerCase() + const status = String(dom.candidateStatus.value || "").trim().toLowerCase() + return candidateItems().filter((job) => { + if (status && candidateStatusKey(job.status) !== status) { + return false + } + if (!search) { + return true + } + const details = jobPayload(job) + return [ + job.job_id, + job.skill_name, + job.proposed_action, + details.rationale, + details.source, + ].some((field) => String(field || "").toLowerCase().includes(search)) + }) +} + +function filteredFinalSkills() { + const search = String(dom.finalSearch.value || "").trim().toLowerCase() + return finalSkillItems().filter((skill) => { + if (!search) { + return true + } + return [ + skill.name, + skill.description, + skill.category, + skill.uploaded_by, + ].some((field) => String(field || "").toLowerCase().includes(search)) + }) +} + +function filteredSessions() { + const search = String(dom.sessionSearch.value || "").trim().toLowerCase() + const source = String(dom.sessionSource.value || "local").trim().toLowerCase() + let items = allSessionItems() + if (source === "local") { + items = items.filter((item) => String(item.source || "").trim().toLowerCase() === "local") + } else if (source === "shared") { + items = items.filter((item) => String(item.source || "").trim().toLowerCase() === "shared") + } + return items.filter((item) => { + if (!search) { + return true + } + return [ + item.session_id, + item.prompt_preview, + item.response_preview, + item.user_alias, + ...(Array.isArray(item.skill_names) ? item.skill_names : []), + ].some((field) => String(field || "").toLowerCase().includes(search)) + }) +} + +function candidateCounts() { + const jobs = candidateItems() + return { + total: jobs.length, + pending: jobs.filter((item) => candidateStatusKey(item.status) === "pending").length, + review: jobs.filter((item) => candidateStatusKey(item.status) === "review").length, + published: jobs.filter((item) => candidateStatusKey(item.status) === "published").length, + rejected: jobs.filter((item) => candidateStatusKey(item.status) === "rejected").length, + } +} + +function localSyncCounts() { + const skills = localSkillItems() + let synced = 0 + let drift = 0 + let localOnly = 0 + for (const skill of skills) { + if (!skill?.has_remote) { + localOnly += 1 + continue + } + const status = compareLocalAndRemote(skill) + if (status.key === "synced") { + synced += 1 + } else { + drift += 1 + } + } + return { synced, drift, localOnly } +} + +function collectPipelineEvents(limit = 12) { + const events = [] + for (const job of candidateItems()) { + events.push({ + type: "candidate", + tone: "neutral", + timestamp: job.created_at, + title: l("{name} 进入候选池", "{name} entered the candidate pool", { + name: job.skill_name || l("未知技能", "Unknown Skill"), + }), + copy: `${actionLabel(job.proposed_action)} · ${job.job_id}`, + jobId: job.job_id, + }) + for (const result of jobResults(job)) { + const accepted = result?.accepted === true + events.push({ + type: "validation", + tone: accepted ? "published" : "rejected", + timestamp: result.created_at, + title: l("{name} 提交验证结果", "{name} submitted validation feedback", { + name: result.user_alias || l("验证客户端", "Validation Client"), + }), + copy: l("{skill} · {decision} · 分数 {score}", "{skill} · {decision} · score {score}", { + skill: job.skill_name || l("未知技能", "Unknown Skill"), + decision: accepted ? l("通过", "Approved") : l("拒绝", "Rejected"), + score: formatScore(result.score), + }), + jobId: job.job_id, + }) + } + const decision = jobDecision(job) + if (decision?.status && decision?.decided_at) { + const published = candidateStatusKey(decision.status) === "published" + events.push({ + type: published ? "publish" : "reject", + tone: published ? "published" : "rejected", + timestamp: decision.decided_at, + title: published + ? l("{name} 进入最终池", "{name} was published", { name: job.skill_name || l("未知技能", "Unknown Skill") }) + : l("{name} 被拒绝", "{name} was rejected", { name: job.skill_name || l("未知技能", "Unknown Skill") }), + copy: String(decision.reason || decision.published_action || job.proposed_action || ""), + jobId: job.job_id, + }) + } + } + return events + .sort((left, right) => parseTime(right.timestamp) - parseTime(left.timestamp)) + .slice(0, limit) +} + +function recentEventCount(hours = 24) { + const threshold = Date.now() - hours * 60 * 60 * 1000 + return collectPipelineEvents(200).filter((event) => parseTime(event.timestamp) >= threshold).length +} + +function validationDispatchSummary(job) { + const core = jobPayload(job) + const results = jobResults(job) + const minResults = Math.max(0, Number(core.min_results || 0)) + const minApprovals = Math.max(0, Number(core.min_approvals || 0)) + const accepted = Math.max(0, Number(job.accepted_count || 0)) + const pendingResults = Math.max(0, minResults - results.length) + const pendingApprovals = Math.max(0, minApprovals - accepted) + const lastResult = [...results].sort((left, right) => parseTime(right.created_at) - parseTime(left.created_at))[0] || null + return { + dispatchAt: String(job.created_at || ""), + dispatchMode: "open-pool", + dispatchLabel: l("开放给空闲验证客户端领取", "Open to available validation clients"), + pendingResults, + pendingApprovals, + responseCount: results.length, + lastResultAt: String(lastResult?.created_at || ""), + } +} + +function candidateSourceLabel(source) { + const normalized = String(source || "").trim().toLowerCase() + if (!normalized) { + return "-" + } + if (normalized === "no_skill") { + return l("来自会话中新沉淀出的技能", "Newly distilled from sessions") + } + if (normalized === "current_skill") { + return l("来自已有技能的改进", "Improvement of an existing skill") + } + if (normalized === "shared_skill") { + return l("来自共享技能的改进", "Improvement of a shared skill") + } + return String(source) +} + +function validatorModeLabel(mode) { + const normalized = String(mode || "").trim().toLowerCase() + if (!normalized || normalized === "unknown") { + return l("自动验证", "Automatic Validation") + } + if (normalized === "replay") { + return l("回放验证", "Replay Validation") + } + return String(mode) +} + +function skillDocumentPreview(skill) { + if (!skill || typeof skill !== "object") { + return "" + } + if (String(skill.skill_md || "").trim()) { + return String(skill.skill_md).trim() + } + if (String(skill.content || "").trim()) { + return String(skill.content).trim() + } + const parts = [] + if (skill.name) { + parts.push(`name: ${skill.name}`) + } + if (skill.description) { + parts.push(`description: ${skill.description}`) + } + if (skill.category) { + parts.push(`category: ${skill.category}`) + } + return parts.join("\n") +} + +function buildVersionEntries(skill, { includeLocal = true } = {}) { + if (!skill || typeof skill !== "object") { + return [] + } + + const entries = [] + const seen = new Set() + + const pushEntry = (entry) => { + if (!entry?.key || seen.has(entry.key)) { + return + } + seen.add(entry.key) + entries.push(entry) + } + + const localDocument = String(skill.skill_md || skill.content || "").trim() + if (includeLocal && skill.has_local && localDocument) { + pushEntry({ + key: "local-current", + label: l("本地当前版", "Current Local Version"), + source: "local", + version: null, + action: "local", + timestamp: String(skill.local_updated_at || skill.updated_at || "").trim(), + contentSha: String(skill.local_sha || skill.current_sha || "").trim(), + document: localDocument, + current: true, + }) + } + + const versions = Array.isArray(skill.versions) ? skill.versions : [] + for (const item of versions) { + if (!item || typeof item !== "object") { + continue + } + const version = Number(item.version || 0) || 0 + const contentSha = String(item.content_sha || "").trim() + pushEntry({ + key: version > 0 ? `shared-version:${version}` : `shared-version:${shortHash(contentSha || item.timestamp || "", 8)}`, + label: version > 0 ? l("共享库 v{version}", "Shared v{version}", { version }) : l("共享库历史", "Shared History"), + source: "shared", + version: version || null, + action: String(item.action || "").trim(), + timestamp: String(item.timestamp || "").trim(), + contentSha, + document: String(item.skill_md || item.content || "").trim(), + current: version > 0 && Number(skill.current_version || 0) === version, + }) + } + + const remoteDocument = String(skill.remote_skill_md || skill.remote_content || "").trim() + if (skill.has_remote && remoteDocument) { + const version = Number(skill.current_version || 0) || 0 + pushEntry({ + key: version > 0 ? `shared-version:${version}` : "shared-current", + label: version > 0 ? l("共享库 v{version}", "Shared v{version}", { version }) : l("共享库当前版", "Current Shared Version"), + source: "shared", + version: version || null, + action: "published", + timestamp: String(skill.remote_updated_at || skill.uploaded_at || skill.updated_at || "").trim(), + contentSha: String(skill.remote_sha || skill.current_sha || "").trim(), + document: remoteDocument, + current: true, + }) + } + + const localEntries = entries.filter((item) => item.source === "local") + const remoteEntries = entries + .filter((item) => item.source === "shared") + .sort((left, right) => ( + Number(right.version || 0) - Number(left.version || 0) + || parseTime(right.timestamp) - parseTime(left.timestamp) + || String(left.key || "").localeCompare(String(right.key || "")) + )) + + return [...localEntries, ...remoteEntries] +} + +function compareState(skill, scope, { includeLocal = true } = {}) { + const entries = buildVersionEntries(skill, { includeLocal }) + const stateKey = `${scope}:${skill.skill_id}` + const current = state.compareSelections[stateKey] || {} + const defaultPrimary = scope === "local" + ? (entries.find((item) => item.key === "local-current") || entries.find((item) => item.current) || entries[0] || null) + : (entries.find((item) => item.current && item.source === "shared") || entries.find((item) => item.source === "shared") || entries[0] || null) + const defaultCompare = entries.find((item) => item.key !== defaultPrimary?.key) || defaultPrimary || null + const primary = entries.find((item) => item.key === current.primary) || defaultPrimary + const compare = entries.find((item) => item.key === current.compare) || defaultCompare + return { entries, primary, compare } +} + +function setCompareSelection(scope, skillId, field, value) { + const key = `${scope}:${skillId}` + state.compareSelections = { + ...state.compareSelections, + [key]: { + ...(state.compareSelections[key] || {}), + [field]: value, + }, + } +} + +function ensureItemSelection(items, currentId, field) { + if (!items.length) { + return "" + } + if (items.some((item) => String(item?.[field] || "") === String(currentId || ""))) { + return currentId + } + return String(items[0]?.[field] || "") +} + +function ensureSelections() { + state.selectedLocalSkillId = ensureItemSelection(filteredLocalSkills(), state.selectedLocalSkillId, "skill_id") + state.selectedCandidateJobId = ensureItemSelection(filteredCandidateJobs(), state.selectedCandidateJobId, "job_id") + state.selectedFinalSkillId = ensureItemSelection(filteredFinalSkills(), state.selectedFinalSkillId, "skill_id") + state.selectedSessionId = ensureItemSelection(filteredSessions(), state.selectedSessionId, "session_id") +} + +async function loadSkillDetail(skillId) { + if (!skillId) { + return null + } + if (state.skillDetails[skillId]) { + return state.skillDetails[skillId] + } + const payload = await getJson(`/api/v1/skills/${encodeURIComponent(skillId)}`) + state.skillDetails[skillId] = payload + return payload +} + +async function loadSessionDetail(sessionId) { + if (!sessionId) { + return null + } + if (state.sessionDetails[sessionId]) { + return state.sessionDetails[sessionId] + } + const payload = await getJson(`/api/v1/sessions/${encodeURIComponent(sessionId)}`) + state.sessionDetails[sessionId] = payload + return payload +} + +async function hydrateSelections({ local = true, final = true, session = true, candidate = true } = {}) { + const tasks = [] + + if (local && state.selectedLocalSkillId) { + tasks.push(loadSkillDetail(state.selectedLocalSkillId)) + } + + if (final && state.selectedFinalSkillId) { + tasks.push(loadSkillDetail(state.selectedFinalSkillId)) + } + + if (session && state.selectedSessionId) { + tasks.push(loadSessionDetail(state.selectedSessionId)) + } + + if (candidate && state.selectedCandidateJobId) { + const job = findJobById(state.selectedCandidateJobId) + const linkedSkill = findSkillByName(job?.skill_name || "") + if (linkedSkill?.skill_id) { + tasks.push(loadSkillDetail(linkedSkill.skill_id)) + } + } + + await Promise.all(tasks.map((task) => task.catch((error) => { + showMessage("warn", error.message || l("加载详情失败", "Failed to load details")) + }))) +} + +async function refreshData({ notice = "", preserveMessage = false } = {}) { + setLoading(true) + if (!preserveMessage) { + clearMessage() + } + try { + const [overview, skillsPayload, sessionsPayload, validationPayload, evolve] = await Promise.all([ + getJson("/api/v1/overview"), + getJson("/api/v1/skills?limit=500"), + getJson("/api/v1/sessions?limit=500"), + getJson("/api/v1/validation/jobs?limit=500"), + getJson("/api/v1/evolve/status"), + ]) + + state.overview = overview + state.evolve = evolve + state.skills = sortSkills(skillsPayload.items || []) + state.sessions = sortSessions(sessionsPayload.items || []) + state.validationJobs = sortJobs(validationPayload.items || []) + state.skillDetails = Object.create(null) + state.sessionDetails = Object.create(null) + + ensureSelections() + renderAll() + await hydrateSelections() + renderAll() + + if (notice) { + showMessage("info", notice) + } + } catch (error) { + showMessage("error", error.message || l("加载 dashboard 数据失败", "Failed to load dashboard data")) + } finally { + setLoading(false) + } +} + +function renderStaticText() { + document.title = l("SkillClaw 技能演化看板", "SkillClaw Dashboard") + document.documentElement.lang = state.locale === "en" ? "en" : "zh-CN" + + dom.brandTitle.textContent = l("技能演化看板", "Skill Evolution Dashboard") + dom.brandCopy.textContent = l( + "看你自己的技能状态、本地与共享库同步、候选验证、最终发布和会话追溯。", + "Review your own skill status, local/shared sync, candidate validation, publication, and session traceability." + ) + dom.navOverviewTitle.textContent = l("总览", "Overview") + dom.navLocalTitle.textContent = l("我的技能", "My Skills") + dom.navCandidateTitle.textContent = l("候选池", "Candidate Pool") + dom.navFinalTitle.textContent = l("最终池", "Final Pool") + dom.navSessionsTitle.textContent = l("会话追溯", "Sessions") + dom.sidebarStatusTitle.textContent = l("当前状态", "Current Status") + + dom.heroKicker.textContent = l("总览首页", "Overview") + dom.heroTitle.textContent = l("我的技能状态", "My Skill Status") + dom.localeButton.textContent = state.locale === "en" ? "中文" : "English" + dom.refreshButton.textContent = l("刷新数据", "Refresh") + dom.syncButton.textContent = l("重建投影", "Rebuild Snapshot") + + dom.overviewKicker.textContent = l("总览", "Overview") + dom.overviewTitle.textContent = l("现在这套技能更新链路处在什么状态", "Current Skill Pipeline Status") + dom.overviewCopy.textContent = l( + "这里汇总本地同步、候选验证、最终发布和会话来源四类状态。", + "This page summarizes local sync, candidate validation, publication, and session sources." + ) + dom.watchlistKicker.textContent = l("需要关注", "Watch") + dom.watchlistTitle.textContent = l("当前值得查看的变化", "Changes Worth Checking") + dom.scopeKicker.textContent = l("当前范围", "Scope") + dom.scopeTitle.textContent = l("你现在看到的是哪部分数据", "What Data You Are Looking At") + dom.eventsKicker.textContent = l("最近事件", "Recent Events") + dom.eventsTitle.textContent = l("候选生成、验证反馈、最终决策", "Candidate Creation, Validation, and Final Decisions") + dom.eventsCopy.textContent = l( + "按时间倒序展示最近 12 条流程事件,方便先抓住变化再下钻。", + "Shows the latest 12 pipeline events in reverse chronological order so you can spot changes first." + ) + + dom.localKicker.textContent = l("我的技能", "My Skills") + dom.localTitle.textContent = l("本地技能和共享正式版是否一致", "Local Skills vs Shared Official Versions") + dom.localCopy.textContent = l( + "这里看你的本地技能、它们是否已同步,以及最近关联了哪些会话。", + "Review your local skills, whether they are synced, and which sessions were recently related." + ) + dom.localSearch.placeholder = l("搜索名称、描述或分类", "Search by name, description, or category") + + dom.candidateKicker.textContent = l("候选池", "Candidate Pool") + dom.candidateTitle.textContent = l("哪些技能正在等待验证,哪些已经进入最终池", "Which skills are waiting for validation and which are already published") + dom.candidateCopy.textContent = l( + "这里只看候选技能的真实验证进度:候选内容、验证客户端、决策时间,以及它依赖哪些会话证据。", + "This page focuses on real candidate progress: candidate content, validating clients, decision time, and supporting sessions." + ) + dom.candidateSearch.placeholder = l("搜索技能名、候选编号或说明", "Search skill name, candidate ID, or notes") + dom.candidateStatusAll.textContent = l("全部状态", "All Statuses") + dom.candidateStatusPending.textContent = l("待验证", "Awaiting Validation") + dom.candidateStatusReview.textContent = l("已有反馈", "Feedback Received") + dom.candidateStatusPublished.textContent = l("已入最终池", "Published") + dom.candidateStatusRejected.textContent = l("已拒绝", "Rejected") + + dom.finalKicker.textContent = l("最终池", "Final Pool") + dom.finalTitle.textContent = l("共享技能当前正式版本和发布历史", "Shared Skill Versions and Release History") + dom.finalCopy.textContent = l( + "这里只显示已经进入共享库的正式技能,用来观察版本演进、发布时间和本地同步状态。", + "This page shows only published shared skills so you can inspect version history, publish time, and local sync status." + ) + dom.finalSearch.placeholder = l("搜索共享技能", "Search shared skills") + + dom.sessionsKicker.textContent = l("会话追溯", "Sessions") + dom.sessionsTitle.textContent = l("我的会话,以及支撑候选技能的共享会话", "My Sessions and Shared Sessions Behind Candidate Skills") + dom.sessionsCopy.textContent = l( + "默认先看你的本地会话;如果需要追踪候选来源,可以切到全部会话继续查。", + "By default you see local sessions first. Switch to all sessions if you need to trace candidate sources." + ) + dom.sessionSearch.placeholder = l("搜索会话 ID、摘要或技能名", "Search session ID, summary, or skill name") + dom.sessionSourceLocal.textContent = l("我的会话", "My Sessions") + dom.sessionSourceAll.textContent = l("全部会话", "All Sessions") + dom.sessionSourceShared.textContent = l("共享会话", "Shared Sessions") +} + +function setLocale(locale) { + state.locale = locale === "en" ? "en" : "zh" + try { + window.localStorage.setItem(LOCALE_STORAGE_KEY, state.locale) + } catch {} + renderAll() +} + +function renderAll() { + renderStaticText() + renderNav() + renderSidebarStatus() + renderOverview() + renderLocalPage() + renderCandidatePage() + renderFinalPage() + renderSessionsPage() +} + +function renderNav() { + for (const button of dom.navButtons) { + button.classList.toggle("active", button.dataset.view === state.activeView) + } + for (const panel of dom.viewPanels) { + panel.classList.toggle("active", panel.dataset.viewPanel === state.activeView) + } + + const counts = candidateCounts() + dom.navOverviewMeta.textContent = l("{pending} 待验证 · {published} 已发布", "{pending} awaiting · {published} published", { + pending: number(counts.pending), + published: number(counts.published), + }) + dom.navLocalMeta.textContent = l("{count} 个本地技能", "{count} local skills", { + count: number(localSkillItems().length), + }) + dom.navCandidateMeta.textContent = l("{count} 条候选", "{count} candidates", { + count: number(counts.total), + }) + dom.navFinalMeta.textContent = l("{count} 个共享技能", "{count} shared skills", { + count: number(finalSkillItems().length), + }) + dom.navSessionsMeta.textContent = l("{count} 个我的会话", "{count} my sessions", { + count: number(mySessionItems().length), + }) +} + +function renderSidebarStatus() { + const sync = localSyncCounts() + const counts = candidateCounts() + dom.sidebarStatus.innerHTML = [ + renderContextCard(l("我的技能", "My Skills"), [ + [l("总数", "Total"), l("{count} 个", "{count}", { count: number(localSkillItems().length) })], + [l("已同步", "Synced"), l("{count} 个", "{count}", { count: number(sync.synced) })], + ]), + renderContextCard(l("候选", "Candidates"), [ + [l("待验证", "Awaiting"), l("{count} 条", "{count}", { count: number(counts.pending) })], + [l("待决策", "Awaiting Decision"), l("{count} 条", "{count}", { count: number(counts.review) })], + ]), + renderContextCard(l("共享状态", "Sharing"), [ + [l("共享库", "Shared Pool"), sharingEnabled() ? l("已启用", "Enabled") : l("未启用", "Disabled")], + [l("演化服务", "Evolve"), evolveHealthLabel()], + ]), + ].join("") +} + +function renderOverview() { + const counts = candidateCounts() + const sync = localSyncCounts() + + dom.overviewMetrics.innerHTML = [ + renderMetricCard(l("我的技能", "My Skills"), localSkillItems().length, l("当前机器上可直接使用的技能数量。", "Number of skills currently available on this machine.")), + renderMetricCard(l("已同步", "Synced"), sync.synced, l("本地内容已经和共享正式版一致。", "Local content matches the shared official version.")), + renderMetricCard(l("待处理同步", "Needs Sync"), sync.drift + sync.localOnly, l("本地与共享库仍有差异,或尚未发布到共享库。", "Local content still differs from the shared pool or has not been published.")), + renderMetricCard(l("待验证候选", "Pending Candidates"), counts.pending + counts.review, l("已经进入候选池,但还没有完全走完验证和决策。", "Candidates have entered the pool but have not finished validation and decision making.")), + renderMetricCard(l("已入最终池", "Published"), counts.published, l("通过验证并完成发布决策的候选。", "Candidates that passed validation and were published.")), + renderMetricCard(l("我的会话", "My Sessions"), mySessionItems().length, l("当前本地采集到的个人会话数。", "Number of personal sessions currently captured locally.")), + ].join("") + + const watchlist = buildWatchlistItems() + dom.overviewWatchlist.innerHTML = watchlist.length + ? watchlist.map(renderJumpCard).join("") + : `
${escapeHtml(l("当前没有明显堵点,整体状态比较稳定。", "No obvious blockers right now. The overall pipeline looks stable."))}
` + + const contextCards = [ + renderContextCard(l("同步情况", "Sync Status"), [ + [l("已同步", "Synced"), l("{count} 个技能", "{count} skills", { count: number(sync.synced) })], + [l("待更新", "Out of Date"), l("{count} 个技能", "{count} skills", { count: number(sync.drift) })], + [l("仅本地", "Local Only"), l("{count} 个技能", "{count} skills", { count: number(sync.localOnly) })], + ]), + renderContextCard(l("候选进度", "Candidate Progress"), [ + [l("待验证", "Awaiting"), l("{count} 条", "{count}", { count: number(counts.pending) })], + [l("待决策", "Awaiting Decision"), l("{count} 条", "{count}", { count: number(counts.review) })], + [l("已发布", "Published"), l("{count} 条", "{count}", { count: number(counts.published) })], + ]), + renderContextCard(l("当前范围", "Scope"), [ + [l("共享库", "Shared Pool"), sharingEnabled() ? l("已启用", "Enabled") : l("未启用", "Disabled")], + [l("共享技能", "Shared Skills"), l("{count} 个", "{count}", { count: number(finalSkillItems().length) })], + [l("最近 24 小时变化", "Changes in 24h"), l("{count} 条", "{count}", { count: number(recentEventCount(24)) })], + ]), + ] + + if (warnings().length) { + contextCards.push(` +
+
+
+

${escapeHtml(l("告警", "Warnings"))}

+

${escapeHtml(l("采集或同步时发现了问题", "Issues Found During Collection or Sync"))}

+
+ ${badge(`${number(warnings().length)} 条`, "pending")} +
+
    + ${warnings().map((item) => `
  1. ${escapeHtml(String(item || ""))}
  2. `).join("")} +
+
+ `) + } + + dom.overviewContext.innerHTML = contextCards.join("") + + const events = collectPipelineEvents() + dom.overviewEvents.innerHTML = events.length + ? events.map(renderEventCard).join("") + : `
${escapeHtml(l("最近还没有可展示的候选、验证或发布事件。", "There are no candidate, validation, or publish events to show yet."))}
` +} + +function buildWatchlistItems() { + const items = [] + const sync = localSyncCounts() + const counts = candidateCounts() + const publishedRecent = candidateItems() + .filter((job) => candidateStatusKey(job.status) === "published") + .slice(0, 2) + const pendingJob = candidateItems().find((job) => candidateStatusKey(job.status) === "pending") + const reviewJob = candidateItems().find((job) => candidateStatusKey(job.status) === "review") + const driftSkill = localSkillItems().find((skill) => compareLocalAndRemote(skill).tone === "pending") + + if (driftSkill) { + items.push({ + view: "local", + title: l("{name} 和共享正式版存在差异", "{name} differs from the shared official version", { name: driftSkill.name }), + copy: l("当前状态:{status}", "Current status: {status}", { status: compareLocalAndRemote(driftSkill).label }), + dataset: `data-select-local-skill="${escapeHtml(driftSkill.skill_id)}"`, + tone: "pending", + }) + } + + if (pendingJob) { + items.push({ + view: "candidate", + title: l("{count} 条候选仍在等待验证", "{count} candidates are still awaiting validation", { count: number(counts.pending) }), + copy: l("{name} 还在等待更多验证反馈。", "{name} is still waiting for more validation feedback.", { name: pendingJob.skill_name }), + dataset: `data-select-candidate="${escapeHtml(pendingJob.job_id)}"`, + tone: "pending", + }) + } + + if (reviewJob) { + items.push({ + view: "candidate", + title: l("{count} 条候选已有反馈但还没完成决策", "{count} candidates have feedback but no final decision yet", { count: number(counts.review) }), + copy: l("{name} 已收到结果,正在等待最终结论。", "{name} already has results and is waiting for the final decision.", { name: reviewJob.skill_name }), + dataset: `data-select-candidate="${escapeHtml(reviewJob.job_id)}"`, + tone: "pending", + }) + } + + for (const job of publishedRecent) { + const linkedSkill = findSkillByName(job.skill_name) + items.push({ + view: linkedSkill ? "final" : "candidate", + title: l("{name} 最近进入最终池", "{name} was recently published", { name: job.skill_name }), + copy: l("发布时间 {time}。", "Published at {time}.", { time: formatStamp(jobDecision(job).decided_at) }), + dataset: linkedSkill + ? `data-select-final-skill="${escapeHtml(linkedSkill.skill_id)}"` + : `data-select-candidate="${escapeHtml(job.job_id)}"`, + tone: "published", + }) + } + + if (mySessionItems().length) { + const latestSession = mySessionItems()[0] + items.push({ + view: "sessions", + title: l("最近一条本地会话", "Most Recent Local Session"), + copy: clip(latestSession.prompt_preview || latestSession.response_preview || l("查看最近一次会话。", "View the latest session."), 80), + dataset: `data-select-session="${escapeHtml(latestSession.session_id)}"`, + tone: "neutral", + }) + } + + return items.slice(0, 5) +} + +function renderJumpCard(item) { + return ` + + ` +} + +function renderMetricCard(label, value, note) { + return ` +
+

${escapeHtml(label)}

+
${escapeHtml(String(value))}
+

${escapeHtml(note)}

+
+ ` +} + +function renderContextCard(title, rows) { + return ` +
+
+
+

${escapeHtml(title)}

+
+
+
+ ${rows.map(([key, value]) => ` +
+ ${escapeHtml(String(key))} + ${escapeHtml(String(value))} +
+ `).join("")} +
+
+ ` +} + +function renderEventCard(event) { + return ` +
+
+
+

${escapeHtml(eventTypeLabel(event.type))}

+

${escapeHtml(event.title)}

+
+ ${badge(formatStamp(event.timestamp), event.tone || "neutral")} +
+

${escapeHtml(clip(event.copy || l("无额外说明。", "No additional details."), 180))}

+ ${event.jobId + ? ` +
+ +
+ ` + : ""} +
+ ` +} + +function renderLocalPage() { + const items = filteredLocalSkills() + const detail = selectedLocalSkillDetail() + + dom.localList.innerHTML = items.length + ? items.map(renderLocalSkillCard).join("") + : `
${escapeHtml(l("当前筛选条件下没有本地技能。", "No local skills match the current filter."))}
` + + dom.localDetail.innerHTML = detail + ? renderLocalSkillDetail(detail) + : `
${escapeHtml(l("选择一个本地技能,查看同步状态、版本链和相关会话。", "Select a local skill to inspect sync status, version history, and related sessions."))}
` +} + +function renderLocalSkillCard(skill) { + const active = String(skill.skill_id || "") === String(state.selectedLocalSkillId || "") + const sync = compareLocalAndRemote(skill) + const candidateCount = candidateRecordCount(skill.name) + return ` +
+
+
+

${escapeHtml(categoryLabel(skill.category))}

+

${escapeHtml(skill.name || l("未命名技能", "Unnamed Skill"))}

+
+ ${badge(sync.label, sync.tone)} +
+

${escapeHtml(clip(skill.description || l("这个技能还没有描述。", "This skill does not have a description yet."), 110))}

+
+ ${tag(l("关联会话 {count}", "Sessions {count}", { count: number(skill.session_count || 0) }))} + ${tag(l("候选记录 {count}", "Candidates {count}", { count: number(candidateCount) }))} + ${skill.has_remote ? tag(l("共享正式版 {version}", "Shared Version {version}", { version: sharedVersionLabel(skill) })) : tag(l("尚未进入共享库", "Not in Shared Pool"))} +
+
+ ` +} + +function renderLocalSkillDetail(skill) { + const sync = compareLocalAndRemote(skill) + const candidateCount = candidateRecordCount(skill.name) + return ` +
+
+
+
+

${escapeHtml(l("本地技能", "Local Skill"))}

+

${escapeHtml(skill.name || l("未命名技能", "Unnamed Skill"))}

+

${escapeHtml(skill.description || l("这个技能还没有描述。", "This skill does not have a description yet."))}

+
+
+ ${badge(sync.label, sync.tone)} + ${badge(skill.has_remote ? l("本地和共享库都有", "Local + Shared") : l("仅本地", "Local Only"), "neutral")} +
+
+
+ ${renderMiniCard(l("当前状态", "Current Status"), sync.label, l("本地内容和共享正式版现在是什么关系。", "How the local content relates to the shared official version."))} + ${renderMiniCard(l("共享正式版", "Shared Official Version"), sharedVersionLabel(skill), skill.has_remote ? l("共享库当前正式版本。", "Current official version in the shared pool.") : l("这个技能还没有进入共享库。", "This skill has not entered the shared pool yet."))} + ${renderMiniCard(l("候选记录", "Candidate Records"), number(candidateCount), candidateCount ? l("这个技能最近进入过多少次候选验证流程。", "How many candidate validation flows this skill entered recently.") : l("目前没有候选记录。", "There are no candidate records yet."))} + ${renderMiniCard(l("关联会话", "Related Sessions"), number(skill.session_count || 0), l("最近有多少条会话和这个技能有关。", "How many recent sessions are related to this skill."))} +
+
+ ${renderVersionCompare(skill, { + scope: "local", + title: l("本地版本与共享正式版对比", "Compare Local vs Shared"), + copy: l("左边默认是本地当前版,右边可以切换共享历史版本,用来判断内容是否已经同步。", "The left side shows the current local version. Switch the right side to shared history versions to compare sync state."), + includeLocal: true, + })} + ${skill.has_remote + ? renderVersionTimeline(skill, { + title: l("共享版本历史", "Shared Version History"), + copy: l("这个技能在共享库中的版本演进。", "How this skill evolved inside the shared pool."), + }) + : renderSharingNotConnectedNotice(l("这个技能还没有进入共享正式版,所以这里没有版本历史。", "This skill is not in the shared official pool yet, so there is no version history here."))} + ${renderCandidateLinks(skill.name)} + ${renderRelatedSessions(skill.related_sessions, { emptyTitle: l("最近没有观测到相关会话", "No related sessions were observed recently") })} +
+ ` +} + +function renderMiniCard(label, value, note) { + return ` +
+

${escapeHtml(label)}

+
${escapeHtml(String(value))}
+

${escapeHtml(String(note || ""))}

+
+ ` +} + +function renderCandidateLinks(skillName) { + const jobs = jobsForSkill(skillName) + if (!jobs.length) { + return ` +
+
+
+

${escapeHtml(l("候选记录", "Candidate Records"))}

+

${escapeHtml(l("这个技能目前没有候选记录", "This skill does not have candidate records yet"))}

+
+
+
+ ` + } + return ` +
+
+
+

${escapeHtml(l("候选记录", "Candidate Records"))}

+

${escapeHtml(l("这个技能最近进入过哪些验证流程", "Which validation flows this skill recently entered"))}

+
+ ${badge(`${number(jobs.length)} 条`, "neutral")} +
+
+ ${jobs.map((job) => ` + + `).join("")} +
+
+ ` +} + +function renderRelatedSessions(items, { emptyTitle = "" } = {}) { + const sessions = Array.isArray(items) ? items : [] + const resolvedEmptyTitle = emptyTitle || l("没有相关会话", "No related sessions") + if (!sessions.length) { + return ` +
+
+
+

${escapeHtml(l("会话追溯", "Sessions"))}

+

${escapeHtml(resolvedEmptyTitle)}

+
+
+
+ ` + } + return ` +
+
+
+

${escapeHtml(l("会话追溯", "Sessions"))}

+

${escapeHtml(l("最近关联到这个技能的会话", "Recent sessions related to this skill"))}

+
+ ${badge(l("{count} 条", "{count}", { count: number(sessions.length) }), "neutral")} +
+
+ ${sessions.slice(0, 8).map((item) => ` + + `).join("")} +
+
+ ` +} + +function renderCandidatePage() { + const items = filteredCandidateJobs() + const detail = selectedCandidateJob() + + dom.candidateList.innerHTML = items.length + ? items.map(renderCandidateCard).join("") + : renderCandidateEmptyState() + + dom.candidateDetail.innerHTML = detail + ? renderCandidateDetail(detail) + : renderCandidateDetailEmptyState() +} + +function renderCandidateCard(job) { + const active = String(job.job_id || "") === String(state.selectedCandidateJobId || "") + const tone = toneForStatus(job.status) + const core = jobPayload(job) + const results = jobResults(job) + const dispatch = validationDispatchSummary(job) + return ` +
+
+
+

${escapeHtml(job.job_id || l("未知候选编号", "Unknown Candidate ID"))}

+

${escapeHtml(job.skill_name || l("未命名技能", "Unnamed Skill"))}

+
+ ${badge(candidateStatusLabel(job.status), tone)} +
+

${escapeHtml(clip(core.rationale || l("这个候选没有额外说明。", "This candidate has no additional notes."), 110))}

+
+ ${tag(actionLabel(job.proposed_action))} + ${tag(l("进入池 {time}", "Entered Pool {time}", { time: formatStamp(job.created_at) }))} + ${tag(l("已回 {count}", "Returned {count}", { count: number(results.length) }))} + ${dispatch.pendingResults > 0 ? tag(l("还差 {count} 条结果", "{count} more results needed", { count: number(dispatch.pendingResults) })) : tag(l("结果数已满足", "Enough results received"))} + ${tag(l("会话 {count}", "Sessions {count}", { count: number(jobSessionIds(job).length) }))} +
+
+ ` +} + +function renderCandidateDetail(job) { + const tone = toneForStatus(job.status) + const core = jobPayload(job) + const results = jobResults(job) + const decision = jobDecision(job) + const linkedSkill = findSkillByName(job.skill_name) + const linkedDetail = linkedSkill ? state.skillDetails[linkedSkill.skill_id] : null + const candidateSkill = core.candidate_skill || {} + const currentSkill = core.current_skill || {} + const sessionEvidence = Array.isArray(core.session_evidence) ? core.session_evidence : [] + + return ` +
+
+
+
+

${escapeHtml(l("候选技能", "Candidate Skill"))}

+

${escapeHtml(job.skill_name || l("未命名技能", "Unnamed Skill"))}

+

${escapeHtml(core.rationale || l("这个候选没有额外说明。", "This candidate has no additional notes."))}

+
+
+ ${badge(candidateStatusLabel(job.status), tone)} + ${badge(actionLabel(job.proposed_action), "neutral")} +
+
+
+ ${renderMiniCard(l("进入候选池", "Entered Candidate Pool"), formatStamp(job.created_at), l("这条候选开始进入验证流程的时间。", "When this candidate entered the validation pipeline."))} + ${renderMiniCard(l("验证结果", "Validation Results"), `${number(job.accepted_count || 0)} / ${number(job.result_count || results.length)}`, l("通过数 / 总反馈数", "Accepted / total feedback"))} + ${renderMiniCard(l("平均分", "Average Score"), formatScore(job.mean_score), l("当前验证结果的平均分", "Average score across current validation feedback"))} + ${renderMiniCard(l("最终决策", "Final Decision"), candidateStatusLabel(decision.status || job.status), decision?.decided_at ? l("决策时间 {time}", "Decided at {time}", { time: formatStamp(decision.decided_at) }) : l("还没有进入最终决策", "No final decision yet"))} +
+
+ ${renderCandidateStages(job, linkedDetail)} + ${renderDispatchSection(job)} +
+
+
+

${escapeHtml(l("验证阈值", "Validation Thresholds"))}

+

${escapeHtml(l("这条候选需要满足什么条件才能进入最终池", "Conditions required for this candidate to be published"))}

+
+
+
+ ${renderMiniCard(l("最少结果数", "Min Results"), number(core.min_results || 0), l("需要收集的最少验证结果", "Minimum validation results required"))} + ${renderMiniCard(l("最少通过数", "Min Approvals"), number(core.min_approvals || 0), l("至少要有多少个验证客户端给出通过结果。", "Minimum number of validating clients that must approve"))} + ${renderMiniCard(l("最低均分", "Min Average Score"), formatScore(core.min_score), l("平均分阈值", "Average score threshold"))} + ${renderMiniCard(l("最大拒绝数", "Max Rejections"), number(core.max_rejections || 0), l("达到这个数就会被拒绝", "The candidate is rejected when this threshold is reached"))} +
+
+ ${renderCandidateDocuments(candidateSkill, currentSkill, linkedDetail)} + ${linkedDetail + ? renderVersionTimeline(linkedDetail, { + title: l("若发布成功,将进入这条版本链", "This is the version chain the candidate will join if published"), + copy: l("这里展示的是该技能当前在最终池中的已知历史版本。", "This shows the known published history of the skill in the final pool."), + }) + : renderCandidateVersionNotice(job)} + ${renderValidatorSection(results)} + ${renderSessionEvidenceSection(sessionEvidence, jobSessionIds(job))} + ${renderCandidateOutcomeSection(job, linkedSkill, decision)} +
+ ` +} + +function renderCandidateStages(job, linkedDetail) { + const results = jobResults(job) + const decision = jobDecision(job) + const status = candidateStatusKey(job.status) + const publishVersion = linkedDetail && candidateStatusKey(decision.status || job.status) === "published" + ? l("最终池当前版本 v{version}", "Current final version v{version}", { version: number(linkedDetail.current_version || 0) }) + : l("等待正式入池", "Waiting to be published") + + const stages = [ + { + title: l("候选生成", "Candidate Created"), + state: "done", + stamp: job.created_at, + note: l("{action} · 候选编号 {jobId}", "{action} · candidate ID {jobId}", { action: actionLabel(job.proposed_action), jobId: job.job_id }), + }, + { + title: l("验证反馈", "Validation Feedback"), + state: results.length ? (status === "pending" ? "current" : "done") : "current", + stamp: results.length ? results[results.length - 1].created_at : "", + note: results.length + ? l("已收到 {count} 条结果", "Received {count} results", { count: number(results.length) }) + : l("还没有任何客户端提交验证结果", "No client has submitted validation feedback yet"), + }, + { + title: l("最终决策", "Final Decision"), + state: decision?.status + ? (candidateStatusKey(decision.status) === "rejected" ? "blocked" : "done") + : (status === "review" ? "current" : "pending"), + stamp: decision?.decided_at || "", + note: decision?.status + ? candidateStatusLabel(decision.status) + : l("等待系统根据阈值汇总验证结果", "Waiting for the system to aggregate validation results"), + }, + { + title: l("进入最终池", "Published to Final Pool"), + state: status === "published" ? "done" : status === "rejected" ? "blocked" : "pending", + stamp: candidateStatusKey(decision?.status) === "published" ? (decision.decided_at || "") : "", + note: status === "published" + ? publishVersion + : status === "rejected" + ? l("这条候选没有进入最终池", "This candidate was not published") + : l("还没有正式发布到共享库", "Not yet published to the shared pool"), + }, + ] + + return ` +
+
+
+

${escapeHtml(l("阶段追踪", "Stage Tracking"))}

+

${escapeHtml(l("这条候选是如何沿着更新流程往前走的", "How this candidate progressed through the pipeline"))}

+
+
+
+ ${stages.map((stage) => ` +
+

${escapeHtml(stageStateLabel(stage.state))}

+
${escapeHtml(stage.title)}
+

${escapeHtml(stage.stamp ? formatStamp(stage.stamp) : l("无时间", "No time"))}

+

${escapeHtml(stage.note)}

+
+ `).join("")} +
+
+ ` +} + +function renderCandidateDocuments(candidateSkill, currentSkill, linkedDetail) { + const candidateDoc = skillDocumentPreview(candidateSkill) + const currentDoc = skillDocumentPreview(currentSkill) + || String(linkedDetail?.remote_skill_md || linkedDetail?.remote_content || "").trim() + return ` +
+
+
+

${escapeHtml(l("内容对照", "Content Comparison"))}

+

${escapeHtml(l("候选草案和当前最终版有什么区别", "How the candidate draft differs from the current official version"))}

+
+
+
+ ${renderDocCard(l("候选草案", "Candidate Draft"), candidateDoc, { + meta: [ + badge(categoryLabel(candidateSkill?.category || "candidate"), "neutral"), + candidateSkill?.description ? tag(candidateSkill.description) : "", + ], + })} + ${renderDocCard(l("当前最终版", "Current Official Version"), currentDoc, { + meta: [ + badge(currentSkill?.name || linkedDetail?.name || l("共享正式版", "Shared Official Version"), "published"), + linkedDetail?.current_version ? tag(`v${number(linkedDetail.current_version)}`) : "", + ], + emptyText: l("当前没有拿到对应的最终池文档快照。", "No official snapshot is available for this final-pool version."), + })} +
+
+ ` +} + +function renderDispatchSection(job) { + const core = jobPayload(job) + const results = jobResults(job) + const dispatch = validationDispatchSummary(job) + return ` +
+
+
+

${escapeHtml(l("分发与响应", "Dispatch and Responses"))}

+

${escapeHtml(l("这条候选是什么时候进入验证池,又由哪些客户端返回结果", "When this candidate entered validation and which clients responded"))}

+
+
+
+ ${renderMiniCard(l("进入验证池", "Entered Validation"), formatStamp(dispatch.dispatchAt), l("这条候选开始对验证客户端可见的时间。", "When this candidate became visible to validating clients."))} + ${renderMiniCard(l("分发方式", "Dispatch Mode"), dispatch.dispatchLabel, l("当前是开放领取,不是后台预先分配给某一台机器。", "This is open pickup, not pre-assigned to a specific machine."))} + ${renderMiniCard(l("仍缺结果", "Results Missing"), number(dispatch.pendingResults), dispatch.pendingResults > 0 ? l("还需要更多客户端返回结果", "More client results are still needed") : l("结果数已达到最低阈值", "Minimum result count reached"))} + ${renderMiniCard(l("仍缺通过", "Approvals Missing"), number(dispatch.pendingApprovals), dispatch.pendingApprovals > 0 ? l("还需要更多接受结果", "More approvals are still needed") : l("通过数已达到最低阈值", "Minimum approval count reached"))} +
+
+ ${results.length + ? results + .slice() + .sort((left, right) => parseTime(left.created_at) - parseTime(right.created_at)) + .map((result) => ` +
+
+
+

${escapeHtml(result.user_alias || l("未知客户端", "Unknown Client"))}

+

${escapeHtml(formatStamp(result.created_at))}

+
+ ${badge(result.accepted === true ? l("返回通过", "Approved") : l("返回拒绝", "Rejected"), result.accepted === true ? "published" : "rejected")} +
+

${escapeHtml(validatorModeLabel(result.validator_mode))} · ${escapeHtml(l("分数", "Score"))} ${escapeHtml(formatScore(result.score))}

+
+ `).join("") + : ` +
+ ${escapeHtml(l("这条候选已经在 {time} 进入开放验证池,但当前还没有任何客户端返回结果。", "This candidate entered the open validation pool at {time}, but no client has responded yet.", { time: formatStamp(dispatch.dispatchAt) }))} +
+ `} +
+ ${core.source + ? `

${escapeHtml(l("候选来源:{source}", "Candidate source: {source}", { source: candidateSourceLabel(core.source) }))}

` + : ""} +
+ ` +} + +function renderCandidateVersionNotice(job) { + return ` +
+
+
+

${escapeHtml(l("版本链", "Version History"))}

+

${escapeHtml(l("当前还没有可关联的最终池版本链", "There is no linked final-pool version history yet"))}

+
+
+

+ ${escapeHtml(l("{name} 还没有在当前投影里对应到共享最终池中的正式技能。若后续发布成功,版本链会出现在这里。", "{name} is not yet linked to an official skill in the current final pool projection. If it is published later, the version history will appear here.", { + name: job.skill_name || l("这个候选", "This candidate"), + }))} +

+
+ ` +} + +function renderDocCard(title, document, { meta = [], emptyText = l("没有可展示的文档。", "No document is available to display.") } = {}) { + return ` +
+
+
+

${escapeHtml(title)}

+
+
${meta.join("")}
+
+ ${String(document || "").trim() + ? `
${escapeHtml(String(document).trim())}
` + : `
${escapeHtml(emptyText)}
`} +
+ ` +} + +function renderValidatorSection(results) { + if (!results.length) { + return ` +
+
+
+

${escapeHtml(l("验证反馈", "Validation Feedback"))}

+

${escapeHtml(l("还没有任何客户端提交结果", "No client has submitted results yet"))}

+
+
+
+ ` + } + + return ` +
+
+
+

${escapeHtml(l("验证反馈", "Validation Feedback"))}

+

${escapeHtml(l("哪些客户端验证过这个候选,给了什么分", "Which clients validated this candidate and what scores they gave"))}

+
+ ${badge(`${number(results.length)} 条`, "neutral")} +
+
+ ${results.map((result) => { + const accepted = result.accepted === true + return ` +
+
+
+

${escapeHtml(result.user_alias || l("未知客户端", "Unknown Client"))}

+

${escapeHtml(validatorModeLabel(result.validator_mode))}

+
+ ${badge(accepted ? l("通过", "Accepted") : l("拒绝", "Rejected"), accepted ? "published" : "rejected")} +
+
+ ${tag(l("分数 {score}", "Score {score}", { score: formatScore(result.score) }))} + ${tag(formatStamp(result.created_at))} +
+

${escapeHtml(result.notes || result.reason || l("没有备注。", "No notes."))}

+
+ ` + }).join("")} +
+
+ ` +} + +function renderSessionEvidenceSection(evidence, sessionIds) { + const rows = Array.isArray(evidence) ? evidence : [] + const fallbackRows = rows.length + ? rows + : sessionIds.map((sessionId) => ({ + session_id: sessionId, + summary: l("这条候选引用了该会话,但没有额外摘要。", "This candidate references the session, but no additional summary is available."), + })) + + if (!fallbackRows.length) { + return ` +
+
+
+

${escapeHtml(l("会话证据", "Session Evidence"))}

+

${escapeHtml(l("这条候选没有记录会话来源", "This candidate has no recorded session source"))}

+
+
+
+ ` + } + + return ` +
+
+
+

${escapeHtml(l("会话证据", "Session Evidence"))}

+

${escapeHtml(l("哪些会话支撑了这条候选", "Which sessions support this candidate"))}

+
+ ${badge(`${number(fallbackRows.length)} 条`, "neutral")} +
+
+ ${fallbackRows.map((item) => ` + + `).join("")} +
+
+ ` +} + +function renderCandidateOutcomeSection(job, linkedSkill, decision) { + const status = candidateStatusKey(decision?.status || job.status) + if (status === "published") { + return ` +
+
+
+

${escapeHtml(l("结果", "Result"))}

+

${escapeHtml(l("这条候选已经进入最终池", "This candidate has been published"))}

+
+ ${badge(l("已发布", "Published"), "published")} +
+

+ ${escapeHtml(decision.reason || l("候选满足验证阈值后进入最终池。", "The candidate met the validation thresholds and was published."))} +

+ ${linkedSkill + ? ` +
+ +
+ ` + : ""} +
+ ` + } + if (status === "rejected") { + return ` +
+
+
+

${escapeHtml(l("结果", "Result"))}

+

${escapeHtml(l("这条候选没有进入最终池", "This candidate was not published"))}

+
+ ${badge(l("已拒绝", "Rejected"), "rejected")} +
+

${escapeHtml(decision.reason || l("当前验证结果未满足发布条件。", "The current validation results do not meet the publish conditions."))}

+
+ ` + } + return ` +
+
+
+

${escapeHtml(l("结果", "Result"))}

+

${escapeHtml(l("这条候选还在流程中", "This candidate is still in progress"))}

+
+ ${badge(candidateStatusLabel(job.status), "pending")} +
+

${escapeHtml(l("继续关注验证反馈数量、平均分和拒绝数是否达到阈值。", "Keep watching result counts, average score, and rejection count against the thresholds."))}

+
+ ` +} + +function renderFinalPage() { + const items = filteredFinalSkills() + const detail = selectedFinalSkillDetail() + + dom.finalList.innerHTML = items.length + ? items.map(renderFinalSkillCard).join("") + : renderFinalEmptyState() + + dom.finalDetail.innerHTML = detail + ? renderFinalSkillDetail(detail) + : renderFinalDetailEmptyState() +} + +function renderFinalSkillCard(skill) { + const active = String(skill.skill_id || "") === String(state.selectedFinalSkillId || "") + const sync = compareLocalAndRemote(skill) + const candidateCount = candidateRecordCount(skill.name) + return ` +
+
+
+

${escapeHtml(categoryLabel(skill.category))}

+

${escapeHtml(skill.name || l("未命名技能", "Unnamed Skill"))}

+
+ ${badge(`v${number(skill.current_version || 0)}`, "published")} +
+

${escapeHtml(clip(skill.description || l("这个技能还没有描述。", "This skill does not have a description yet."), 110))}

+
+ ${tag(sync.label)} + ${tag(l("历史版本 {count}", "Versions {count}", { count: number(visibleVersionCount(skill)) }))} + ${tag(l("候选记录 {count}", "Candidates {count}", { count: number(candidateCount) }))} + ${skill.uploaded_at || skill.remote_updated_at ? tag(l("发布时间 {time}", "Published {time}", { time: formatStamp(skill.uploaded_at || skill.remote_updated_at) })) : ""} +
+
+ ` +} + +function renderFinalSkillDetail(skill) { + const sync = compareLocalAndRemote(skill) + return ` +
+
+
+
+

${escapeHtml(l("最终池技能", "Published Skill"))}

+

${escapeHtml(skill.name || l("未命名技能", "Unnamed Skill"))}

+

${escapeHtml(skill.description || l("这个技能还没有描述。", "This skill does not have a description yet."))}

+
+
+ ${badge(`v${number(skill.current_version || 0)}`, "published")} + ${badge(sync.label, sync.tone)} +
+
+
+ ${renderMiniCard(l("当前正式版", "Current Official Version"), `v${number(skill.current_version || 0)}`, l("共享库当前正式版本。", "Current official version in the shared pool."))} + ${renderMiniCard(l("历史版本", "Version Count"), number(visibleVersionCount(skill)), l("当前能看到的共享版本数量。", "Number of shared versions currently visible."))} + ${renderMiniCard(l("最近发布时间", "Latest Publish Time"), formatStamp(skill.uploaded_at || skill.remote_updated_at || skill.updated_at), l("最新一次进入共享库的时间。", "When it most recently entered the shared pool."))} + ${renderMiniCard(l("本地状态", "Local Status"), sync.label, l("这份共享正式版和你本地内容当前是什么关系。", "How this published version relates to your local content."))} +
+
+ ${renderVersionCompare(skill, { + scope: "final", + title: l("共享版本对比", "Shared Version Comparison"), + copy: l("可以在这里对照 v1 / v2 / v3 等历史版本,也可以把本地当前内容拉进来比较。", "Compare v1 / v2 / v3 and other history versions here, and also compare them with your current local content."), + includeLocal: true, + })} + ${renderVersionTimeline(skill, { + title: l("共享版本时间线", "Shared Version Timeline"), + copy: l("这个技能是如何一路发布到当前正式版的。", "How this skill evolved into the current official version."), + })} + ${renderCandidateLinks(skill.name)} + ${renderRelatedSessions(skill.related_sessions, { emptyTitle: l("最近没有观测到相关会话", "No related sessions were observed recently") })} +
+ ` +} + +function renderVersionCompare(skill, options) { + const selection = compareState(skill, options.scope, { includeLocal: options.includeLocal }) + if (!selection.entries.length) { + return ` +
+
+
+

${escapeHtml(options.title)}

+

${escapeHtml(l("当前没有可比较的版本", "No versions are available for comparison"))}

+
+
+
+ ` + } + + return ` +
+
+
+

${escapeHtml(options.title)}

+

${escapeHtml(options.copy)}

+
+ ${badge(l("{count} 个版本", "{count} versions", { count: number(selection.entries.length) }), "neutral")} +
+
+
+ + +
+
+ ${selection.entries.map((entry) => ` + + `).join("")} +
+
+ ${renderVersionDoc(selection.primary, l("左侧版本", "Left Version"))} + ${renderVersionDoc(selection.compare, l("右侧版本", "Right Version"))} +
+
+
+ ` +} + +function versionEntryLabel(entry) { + const parts = [entry.label] + if (entry.timestamp) { + parts.push(formatStamp(entry.timestamp)) + } + if (entry.action && entry.action !== "local") { + parts.push(actionLabel(entry.action)) + } + return parts.join(" · ") +} + +function renderVersionDoc(entry, title) { + if (!entry) { + return `
${escapeHtml(l("没有可展示的版本。", "No version is available to display."))}
` + } + return ` +
+
+
+

${escapeHtml(title)}

+

${escapeHtml(entry.label)}

+
+
+ ${badge(entry.source === "local" ? l("本地", "Local") : l("共享库", "Shared Pool"), entry.source === "local" ? "neutral" : "published")} +
+
+
+
+ ${entry.timestamp ? tag(formatStamp(entry.timestamp)) : ""} + ${entry.action && entry.action !== "local" ? tag(actionLabel(entry.action)) : ""} +
+
+ ${String(entry.document || "").trim() + ? `
${escapeHtml(String(entry.document).trim())}
` + : `
${escapeHtml(l("这个版本只有元数据,没有留下文档快照。", "This version only has metadata and no saved document snapshot."))}
`} +
+ ` +} + +function renderVersionTimeline(skill, options = {}) { + const entries = buildVersionEntries(skill, { includeLocal: false }).filter((entry) => entry.source === "shared") + if (!entries.length) { + return ` +
+
+
+

${escapeHtml(options.title || l("版本时间线", "Version Timeline"))}

+

${escapeHtml(l("当前没有可用的共享版本历史", "No shared version history is available yet"))}

+
+
+
+ ` + } + return ` +
+
+
+

${escapeHtml(options.title || l("版本时间线", "Version Timeline"))}

+

${escapeHtml(options.copy || l("版本是如何一路走到当前正式版的", "How versions progressed into the current official version"))}

+
+
+
+ ${entries.map((entry) => ` +
+
+
+

${escapeHtml(entry.label)}

+

${escapeHtml(entry.timestamp ? formatStamp(entry.timestamp) : l("无时间", "No time"))}

+
+ ${badge(entry.current ? l("当前正式版", "Current") : l("历史版本", "History"), entry.current ? "published" : "neutral")} +
+
+ ${entry.action && entry.action !== "local" ? tag(actionLabel(entry.action)) : ""} +
+
+ `).join("")} +
+
+ ` +} + +function renderSharingNotConnectedNotice(copy) { + return ` +
+
+
+

${escapeHtml(l("共享状态", "Sharing"))}

+

${escapeHtml(l("当前没有接入共享库", "The shared pool is not connected"))}

+
+
+

${escapeHtml(copy)}

+
+ ` +} + +function renderCandidateEmptyState() { + if (!sharingEnabled()) { + return ` +
+ ${escapeHtml(l("当前没有启用共享库,所以候选池为空。接入共享库之后,这里才会显示候选、验证反馈和发布时间线。", "Sharing is not enabled, so the candidate pool is empty. After connecting the shared pool, candidates, validation feedback, and publish events will appear here."))} +
+ ` + } + return `
${escapeHtml(l("当前筛选条件下没有候选技能。", "No candidate skills match the current filter."))}
` +} + +function renderCandidateDetailEmptyState() { + if (!sharingEnabled()) { + return ` +
+ ${escapeHtml(l("当前环境未启用共享与验证链路,所以没有候选详情可看。", "Sharing and validation are not enabled in this environment, so candidate details are unavailable."))} +
+ ` + } + return `
${escapeHtml(l("选择一个候选技能,查看它的验证轨迹和会话来源。", "Select a candidate skill to inspect validation progress and source sessions."))}
` +} + +function renderFinalEmptyState() { + if (!sharingEnabled()) { + return ` +
+ ${escapeHtml(l("当前没有启用共享库,所以最终池为空。接入共享库后,这里会显示共享技能和版本历史。", "Sharing is not enabled, so the final pool is empty. After connecting the shared pool, published skills and version history will appear here."))} +
+ ` + } + return `
${escapeHtml(l("当前筛选条件下没有最终池技能。", "No published skills match the current filter."))}
` +} + +function renderFinalDetailEmptyState() { + if (!sharingEnabled()) { + return ` +
+ ${escapeHtml(l("当前环境未启用共享库,所以还没有可查看的最终池详情。", "The shared pool is not enabled in this environment, so no published-skill details are available."))} +
+ ` + } + return `
${escapeHtml(l("选择一个最终池技能,查看版本历史、发布链路和相关会话。", "Select a published skill to inspect version history, release flow, and related sessions."))}
` +} + +function renderSessionsPage() { + const items = filteredSessions() + const detail = selectedSessionDetail() + + dom.sessionList.innerHTML = items.length + ? items.map(renderSessionCard).join("") + : `
${escapeHtml(l("当前筛选条件下没有会话。", "No sessions match the current filter."))}
` + + dom.sessionDetail.innerHTML = detail + ? renderSessionDetail(detail) + : `
${escapeHtml(l("选择一个会话,查看逐轮内容、关联技能,以及它是否进入候选池。", "Select a session to inspect turn-by-turn content, related skills, and whether it entered the candidate pool."))}
` +} + +function renderSessionCard(session) { + const active = String(session.session_id || "") === String(state.selectedSessionId || "") + return ` +
+
+
+

${escapeHtml(formatStamp(session.timestamp))}

+

${escapeHtml(session.session_id || l("未知会话", "Unknown Session"))}

+
+ ${badge(sourceLabel(session.source || "local"), String(session.source || "").toLowerCase() === "local" ? "neutral" : "published")} +
+

${escapeHtml(clip(session.prompt_preview || session.response_preview || l("没有摘要。", "No summary."), 120))}

+
+ ${tag(outcomeLabel(session.outcome))} + ${tag(l("回合 {count}", "Turns {count}", { count: number(session.num_turns || 0) }))} + ${tag(l("技能 {count}", "Skills {count}", { count: number((session.skill_names || []).length) }))} +
+
+ ` +} + +function renderSessionDetail(session) { + const links = Array.isArray(session.links) ? session.links : [] + const turns = Array.isArray(session.turns) ? session.turns : [] + const uniqueSkillNames = [...new Set([ + ...(Array.isArray(session.skill_names) ? session.skill_names : []), + ...links.map((item) => item.skill_name), + ].filter(Boolean))] + const linkedJobs = jobsForSession(session.session_id) + + return ` +
+
+
+
+

${escapeHtml(l("会话详情", "Session Detail"))}

+

${escapeHtml(session.session_id || l("未知会话", "Unknown Session"))}

+

${escapeHtml(session.prompt_preview || session.response_preview || l("没有摘要。", "No summary."))}

+
+
+ ${badge(sourceLabel(session.source || "local"), String(session.source || "").toLowerCase() === "local" ? "neutral" : "published")} + ${badge(outcomeLabel(session.outcome), "neutral")} +
+
+
+ ${renderMiniCard(l("时间", "Time"), formatStamp(session.timestamp), l("这条会话的时间戳", "Timestamp of this session"))} + ${renderMiniCard(l("回合数", "Turns"), number(session.num_turns || 0), l("当前会话的轮次数量。", "Number of turns in this session."))} + ${renderMiniCard(l("自动评分", "Auto Score"), formatScore(session.avg_prm_score), l("如果系统做了自动评分,会在这里显示。", "Displayed when automatic scoring is available."))} + ${renderMiniCard(l("关联候选", "Related Candidates"), number(linkedJobs.length), linkedJobs.length ? l("这条会话被哪些候选技能引用过。", "Which candidate skills referenced this session.") : l("当前没有候选技能显式引用它。", "No candidate skill explicitly references this session."))} +
+
+
+
+
+

${escapeHtml(l("关联技能", "Related Skills"))}

+

${escapeHtml(l("这条会话中出现过哪些技能", "Which skills appeared in this session"))}

+
+
+
+ ${uniqueSkillNames.length + ? uniqueSkillNames.map(renderSessionSkillButton).join("") + : `${escapeHtml(l("这个会话没有显式记录关联技能。", "This session has no explicitly recorded related skills."))}`} +
+
+
+
+
+

${escapeHtml(l("候选引用", "Candidate Links"))}

+

${escapeHtml(l("这个会话是否参与过候选技能的生成或验证", "Whether this session participated in candidate generation or validation"))}

+
+
+ ${linkedJobs.length + ? ` +
+ ${linkedJobs.map((job) => ` + + `).join("")} +
+ ` + : `
${escapeHtml(l("这条会话当前没有被候选池显式引用。", "This session is not explicitly referenced by the candidate pool."))}
`} +
+
+
+
+

${escapeHtml(l("逐轮内容", "Turn-by-Turn Content"))}

+

${escapeHtml(l("用户输入与模型回复片段", "User Prompts and Model Responses"))}

+
+ ${badge(l("{count} 轮", "{count} turns", { count: number(turns.length) }), "neutral")} +
+
+ ${turns.length + ? turns.map(renderTurnCard).join("") + : `
${escapeHtml(l("这个会话没有可展示的 turn 记录。", "This session has no turn records to display."))}
`} +
+
+
+ ` +} + +function renderSessionSkillButton(skillName) { + const skill = findSkillByName(skillName) + if (!skill) { + return tag(skillName) + } + if (skill.has_local) { + return ` + + ` + } + return ` + + ` +} + +function renderTurnCard(turn) { + const injected = normalizeSkillNames(turn.injected_skills) + const read = normalizeSkillNames(turn.read_skills) + const modified = normalizeSkillNames(turn.modified_skills) + return ` +
+
+
+

${escapeHtml(l("第 {turn} 轮", "Turn {turn}", { turn: String(turn.turn_num || "-") }))}

+
+ ${turn.prm_score != null ? badge(l("评分 {score}", "Score {score}", { score: formatScore(turn.prm_score) }), "neutral") : ""} +
+
+ ${escapeHtml(l("用户输入", "User Prompt"))} +
${escapeHtml(String(turn.prompt_text || "").trim() || l("(空)", "(empty)"))}
+
+
+ ${escapeHtml(l("模型回复", "Model Response"))} +
${escapeHtml(String(turn.response_text || "").trim() || l("(空)", "(empty)"))}
+
+
+ ${injected.map((item) => tag(l("注入 {name}", "Injected {name}", { name: item }))).join("")} + ${read.map((item) => tag(l("读取 {name}", "Read {name}", { name: item }))).join("")} + ${modified.map((item) => tag(l("修改 {name}", "Modified {name}", { name: item }))).join("")} +
+
+ ` +} + +async function runOperation(op) { + if (state.loading) { + return + } + const operationMap = { + "toggle-locale": async () => { + setLocale(state.locale === "en" ? "zh" : "en") + }, + refresh: async () => { + await refreshData({ notice: l("已刷新看板数据。", "Dashboard data refreshed.") }) + }, + "sync-projection": async () => { + const response = await getJson("/api/v1/sync", { method: "POST" }) + const summary = response.summary || {} + await refreshData({ + notice: l("已重建投影:{skills} 个技能,{sessions} 个会话。", "Snapshot rebuilt: {skills} skills, {sessions} sessions.", { + skills: number(summary.skills || 0), + sessions: number(summary.sessions || 0), + }), + }) + }, + } + const handler = operationMap[op] + if (!handler) { + return + } + setLoading(true) + try { + await handler() + } catch (error) { + showMessage("error", error.message || l("操作失败", "Operation failed")) + } finally { + setLoading(false) + } +} + +async function selectLocalSkill(skillId, { openView = false } = {}) { + state.selectedLocalSkillId = skillId || "" + if (openView) { + state.activeView = "local" + } + renderAll() + await hydrateSelections({ local: true, final: false, session: false, candidate: false }) + renderAll() +} + +async function selectFinalSkill(skillId, { openView = false } = {}) { + state.selectedFinalSkillId = skillId || "" + if (openView) { + state.activeView = "final" + } + renderAll() + await hydrateSelections({ local: false, final: true, session: false, candidate: false }) + renderAll() +} + +async function selectCandidate(jobId, { openView = false } = {}) { + state.selectedCandidateJobId = jobId || "" + if (openView) { + state.activeView = "candidate" + } + renderAll() + await hydrateSelections({ local: false, final: false, session: false, candidate: true }) + renderAll() +} + +async function selectSession(sessionId, { openView = false } = {}) { + const sessionItem = findSessionById(sessionId) + if (sessionItem && String(sessionItem.source || "").trim().toLowerCase() === "shared" && dom.sessionSource.value === "local") { + dom.sessionSource.value = "all" + } + state.selectedSessionId = sessionId || "" + if (openView) { + state.activeView = "sessions" + } + ensureSelections() + renderAll() + await hydrateSelections({ local: false, final: false, session: true, candidate: false }) + renderAll() +} + +async function onFilterChange(kind) { + ensureSelections() + renderAll() + if (kind === "local" && state.selectedLocalSkillId) { + await hydrateSelections({ local: true, final: false, session: false, candidate: false }) + } else if (kind === "candidate" && state.selectedCandidateJobId) { + await hydrateSelections({ local: false, final: false, session: false, candidate: true }) + } else if (kind === "final" && state.selectedFinalSkillId) { + await hydrateSelections({ local: false, final: true, session: false, candidate: false }) + } else if (kind === "session" && state.selectedSessionId) { + await hydrateSelections({ local: false, final: false, session: true, candidate: false }) + } + renderAll() +} + +function setActiveView(view) { + state.activeView = view + renderAll() +} + +async function handleDocumentClick(event) { + const origin = event.target instanceof Element ? event.target : null + if (!origin) { + return + } + const target = origin.closest( + "button, [data-select-local-skill], [data-select-final-skill], [data-select-candidate], [data-select-session], [data-view]" + ) + if (!(target instanceof HTMLElement)) { + return + } + + if (target.dataset.view) { + setActiveView(target.dataset.view) + return + } + + if (target.dataset.openView) { + state.activeView = target.dataset.openView + } + + if (target.dataset.op) { + await runOperation(target.dataset.op) + return + } + + if (target.dataset.selectLocalSkill) { + await selectLocalSkill(target.dataset.selectLocalSkill, { openView: true }) + return + } + + if (target.dataset.selectFinalSkill) { + await selectFinalSkill(target.dataset.selectFinalSkill, { openView: true }) + return + } + + if (target.dataset.selectCandidate) { + await selectCandidate(target.dataset.selectCandidate, { openView: true }) + return + } + + if (target.dataset.selectSession) { + await selectSession(target.dataset.selectSession, { openView: true }) + return + } + + if (target.dataset.pickVersion) { + setCompareSelection( + target.dataset.compareScope, + target.dataset.skillId, + target.dataset.compareField || "primary", + target.dataset.pickVersion + ) + renderAll() + } +} + +function handleDocumentChange(event) { + const target = event.target + if (!(target instanceof HTMLSelectElement)) { + return + } + if (target.dataset.compareField) { + setCompareSelection( + target.dataset.compareScope, + target.dataset.skillId, + target.dataset.compareField, + target.value + ) + renderAll() + } +} + +function bindEvents() { + dom.localSearch.addEventListener("input", () => { + void onFilterChange("local") + }) + dom.candidateSearch.addEventListener("input", () => { + void onFilterChange("candidate") + }) + dom.candidateStatus.addEventListener("change", () => { + void onFilterChange("candidate") + }) + dom.finalSearch.addEventListener("input", () => { + void onFilterChange("final") + }) + dom.sessionSearch.addEventListener("input", () => { + void onFilterChange("session") + }) + dom.sessionSource.addEventListener("change", () => { + void onFilterChange("session") + }) + + document.addEventListener("click", (event) => { + void handleDocumentClick(event) + }) + document.addEventListener("change", handleDocumentChange) +} + +async function init() { + bindEvents() + await refreshData() +} + +void init() diff --git a/skillclaw/dashboard_assets/index.html b/skillclaw/dashboard_assets/index.html new file mode 100644 index 0000000..26f5e65 --- /dev/null +++ b/skillclaw/dashboard_assets/index.html @@ -0,0 +1,218 @@ + + + + + + SkillClaw 技能演化看板 + + + +
+ + +
+
+
+

总览首页

+

我的技能状态

+
+
+ + + +
+
+ + + +
+
+
+
+

总览

+

现在这套技能更新链路处在什么状态

+
+

+ 这里汇总本地同步、候选验证、最终发布和会话来源四类状态。 +

+
+
+
+ +
+
+
+
+

需要关注

+

当前值得查看的变化

+
+
+
+
+ +
+
+
+

当前范围

+

你现在看到的是哪部分数据

+
+
+
+
+
+ +
+
+
+

最近事件

+

候选生成、验证反馈、最终决策

+
+

按时间倒序展示最近 12 条流程事件,方便先抓住变化再下钻。

+
+
+
+
+ +
+
+
+
+

我的技能

+

本地技能和共享正式版是否一致

+

这里看你的本地技能、它们是否已同步,以及最近关联了哪些会话。

+
+
+ +
+
+ +
+
+
+ 选择一个本地技能,查看同步状态、版本链和相关会话。 +
+
+
+
+ +
+
+
+
+

候选池

+

哪些技能正在等待验证,哪些已经进入最终池

+

+ 这里只看候选技能的真实验证进度:候选内容、验证客户端、决策时间,以及它依赖哪些会话证据。 +

+
+
+ + +
+
+ +
+
+
+ 选择一个候选技能,查看它的验证轨迹和会话来源。 +
+
+
+
+ +
+
+
+
+

最终池

+

共享技能当前正式版本和发布历史

+

这里只显示已经进入共享库的正式技能,用来观察版本演进、发布时间和本地同步状态。

+
+
+ +
+
+ +
+
+
+ 选择一个最终池技能,查看版本历史、发布链路和相关会话。 +
+
+
+
+ +
+
+
+
+

会话追溯

+

我的会话,以及支撑候选技能的共享会话

+

默认先看你的本地会话;如果需要追踪候选来源,可以切到全部会话继续查。

+
+
+ + +
+
+ +
+
+
+ 选择一个会话,查看逐轮内容、关联技能,以及它是否进入候选池。 +
+
+
+
+
+
+ + + + diff --git a/skillclaw/dashboard_assets/styles.css b/skillclaw/dashboard_assets/styles.css new file mode 100644 index 0000000..d06bd76 --- /dev/null +++ b/skillclaw/dashboard_assets/styles.css @@ -0,0 +1,859 @@ +:root { + --bg: #f6f8fb; + --bg-accent: #eef4ff; + --paper: #ffffff; + --paper-soft: #fdfefe; + --ink: #1f2328; + --muted: #57606a; + --line: #d0d7de; + --line-strong: #afb8c1; + --blue: #0969da; + --blue-soft: #eaf2ff; + --green: #1a7f37; + --green-soft: #e7f6ec; + --amber: #9a6700; + --amber-soft: #fff8c5; + --red: #cf222e; + --red-soft: #ffebe9; + --slate-soft: #f3f4f6; + --shadow: 0 14px 28px rgba(31, 35, 40, 0.06); + --shadow-soft: 0 8px 18px rgba(31, 35, 40, 0.04); + --radius-xl: 22px; + --radius-lg: 18px; + --radius-md: 14px; + --radius-sm: 10px; +} + +* { + box-sizing: border-box; +} + +html, +body { + margin: 0; + min-height: 100%; +} + +body { + color: var(--ink); + font-family: "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Microsoft YaHei", sans-serif; + background: + radial-gradient(circle at top right, rgba(9, 105, 218, 0.08), transparent 28%), + linear-gradient(180deg, #fbfcfe 0%, var(--bg) 100%); +} + +body::before { + content: ""; + position: fixed; + inset: 0; + pointer-events: none; + background-image: + linear-gradient(rgba(208, 215, 222, 0.36) 1px, transparent 1px), + linear-gradient(90deg, rgba(208, 215, 222, 0.36) 1px, transparent 1px); + background-size: 28px 28px; + mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.1), transparent 74%); +} + +button, +input, +select, +textarea { + font: inherit; +} + +button, +input, +select, +textarea, +pre { + border-radius: var(--radius-sm); +} + +button { + border: 1px solid transparent; + padding: 10px 14px; + background: var(--blue); + color: #fff; + cursor: pointer; + transition: + background 140ms ease, + border-color 140ms ease, + transform 140ms ease, + box-shadow 140ms ease, + opacity 140ms ease; + box-shadow: 0 10px 18px rgba(9, 105, 218, 0.16); +} + +button:hover { + background: #0858b8; + transform: translateY(-1px); +} + +button:disabled { + opacity: 0.55; + cursor: not-allowed; + transform: none; + box-shadow: none; +} + +button.secondary, +button.ghost, +.nav-item, +.jump-card, +.filter-chip, +.version-pill { + background: #fff; + color: var(--ink); + border-color: var(--line); + box-shadow: none; +} + +button.ghost { + color: var(--blue); +} + +input, +select, +textarea { + width: 100%; + min-width: 0; + padding: 10px 12px; + border: 1px solid var(--line); + background: #fff; + color: var(--ink); + transition: border-color 140ms ease, box-shadow 140ms ease; +} + +input:focus, +select:focus, +textarea:focus { + outline: none; + border-color: rgba(9, 105, 218, 0.45); + box-shadow: 0 0 0 4px rgba(9, 105, 218, 0.12); +} + +pre { + margin: 0; + padding: 16px; + overflow-x: auto; + border: 1px solid #d8dee4; + background: #f6f8fa; + color: #24292f; + font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; + font-size: 0.88rem; + line-height: 1.6; + white-space: pre-wrap; + word-break: break-word; +} + +h1, +h2, +h3, +h4, +p { + margin: 0; +} + +h1, +h2, +h3, +h4 { + font-weight: 650; + letter-spacing: -0.01em; +} + +h1 { + font-size: 2.1rem; + line-height: 1.05; +} + +h2 { + font-size: clamp(1.55rem, 2.5vw, 2.2rem); + line-height: 1.18; +} + +h3 { + font-size: 1.1rem; + line-height: 1.3; +} + +h4 { + font-size: 1rem; + line-height: 1.35; +} + +.kicker, +.metric-label, +.field-label, +.card-kicker, +.status-caption { + font-size: 0.73rem; + font-weight: 600; + color: var(--muted); + letter-spacing: 0.04em; + text-transform: none; +} + +.hero-copy, +.panel-copy, +.sidebar-copy, +.soft-copy, +.message-copy, +.empty-state { + color: var(--muted); + line-height: 1.65; +} + +.app-shell { + min-height: 100vh; + display: grid; + grid-template-columns: 280px minmax(0, 1fr); +} + +.sidebar { + position: sticky; + top: 0; + min-height: 100vh; + padding: 28px 20px; + background: + linear-gradient(180deg, #ffffff 0%, #f9fbff 100%); + border-right: 1px solid var(--line); +} + +.brand-block { + padding: 18px 16px; + border: 1px solid var(--line); + border-radius: var(--radius-lg); + background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%); + box-shadow: var(--shadow-soft); +} + +.sidebar-copy { + margin-top: 14px; +} + +.nav-list, +.stack, +.doc-grid, +.kv-list, +.timeline-stack, +.turn-stack, +.version-stack { + display: grid; + gap: 12px; +} + +.nav-list { + margin-top: 22px; +} + +.nav-item { + width: 100%; + padding: 14px 15px; + display: grid; + justify-items: start; + gap: 6px; + text-align: left; +} + +.nav-item.active { + border-color: rgba(9, 105, 218, 0.26); + background: var(--blue-soft); +} + +.nav-title { + font-weight: 700; +} + +.nav-meta { + font-size: 0.84rem; + color: var(--muted); +} + +.sidebar-section { + margin-top: 24px; +} + +.main-shell { + padding: 28px 32px 36px; +} + +.page-hero { + display: flex; + justify-content: space-between; + gap: 18px; + align-items: flex-start; + padding: 28px 30px; + border: 1px solid var(--line); + border-radius: var(--radius-xl); + background: + linear-gradient(135deg, #ffffff 0%, #f8fbff 52%, #eef5ff 100%); + box-shadow: var(--shadow); +} + +.hero-actions, +.controls, +.controls.row, +.chip-row, +.meta-row, +.action-row, +.status-row, +.selector-row { + display: flex; + flex-wrap: wrap; + gap: 10px; +} + +.hero-actions, +.controls { + align-items: center; +} + +.controls.row > * { + flex: 1 1 180px; +} + +.message-strip { + margin-top: 16px; + padding: 14px 16px; + border: 1px solid var(--line); + border-radius: var(--radius-md); + box-shadow: var(--shadow-soft); +} + +.message-strip.hidden, +.view { + display: none; +} + +.message-strip.info { + background: var(--blue-soft); + border-color: rgba(9, 105, 218, 0.18); +} + +.message-strip.warn { + background: var(--amber-soft); + border-color: rgba(154, 103, 0, 0.18); +} + +.message-strip.error { + background: var(--red-soft); + border-color: rgba(207, 34, 46, 0.18); +} + +.view.active { + display: block; +} + +.view { + margin-top: 20px; +} + +.panel { + border: 1px solid var(--line); + border-radius: var(--radius-lg); + background: var(--paper); + box-shadow: var(--shadow-soft); + overflow: hidden; +} + +.panel-head { + display: flex; + justify-content: space-between; + gap: 14px; + align-items: flex-start; + padding: 20px 22px 0; +} + +.panel-head.wrap { + flex-wrap: wrap; +} + +.panel-head.compact { + align-items: center; +} + +.panel-copy { + max-width: 64ch; +} + +.panel-body, +.detail-shell { + padding: 18px 22px 22px; +} + +.two-column, +.split-layout, +.metric-grid, +.doc-grid, +.overview-grid, +.detail-grid, +.mini-grid, +.stage-grid { + display: grid; + gap: 16px; +} + +.two-column { + margin-top: 16px; + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.split-layout { + margin-top: 16px; + grid-template-columns: minmax(320px, 0.9fr) minmax(0, 1.1fr); + align-items: start; +} + +.metric-grid { + padding: 18px 22px 22px; + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + +.metric-card, +.record-card, +.detail-card, +.context-card, +.event-card, +.mini-card, +.doc-card, +.turn-card, +.validator-card, +.version-card, +.stage-card, +.sidebar-card { + border: 1px solid var(--line); + border-radius: var(--radius-md); + background: var(--paper-soft); +} + +.metric-card, +.record-card, +.detail-card, +.context-card, +.event-card, +.validator-card, +.version-card, +.stage-card { + padding: 16px; +} + +.metric-card { + background: linear-gradient(180deg, #ffffff 0%, #f9fbff 100%); +} + +.metric-value, +.mini-value { + margin-top: 8px; + font-weight: 700; +} + +.metric-value { + font-size: 1.8rem; + letter-spacing: -0.04em; +} + +.mini-value { + font-size: 1rem; + line-height: 1.45; + letter-spacing: -0.01em; + overflow-wrap: anywhere; +} + +.metric-note { + margin-top: 10px; + color: var(--muted); + line-height: 1.55; +} + +.record-card { + cursor: pointer; + transition: border-color 140ms ease, transform 140ms ease, box-shadow 140ms ease; +} + +.record-card:hover { + transform: translateY(-1px); + border-color: rgba(9, 105, 218, 0.25); + box-shadow: var(--shadow-soft); +} + +.record-card.active { + border-color: rgba(9, 105, 218, 0.34); + background: linear-gradient(180deg, #ffffff 0%, #f4f8ff 100%); +} + +.card-head, +.detail-head, +.headline-row, +.context-row, +.event-row, +.turn-head, +.validator-head, +.version-head { + display: flex; + justify-content: space-between; + gap: 12px; + align-items: flex-start; + flex-wrap: wrap; +} + +.card-head > *, +.detail-head > *, +.headline-row > *, +.context-row > *, +.event-row > *, +.turn-head > *, +.validator-head > *, +.version-head > * { + min-width: 0; +} + +.card-head > div, +.detail-head > div, +.headline-row > div, +.event-row > div, +.validator-head > div, +.version-head > div { + flex: 1 1 220px; +} + +.card-copy { + margin-top: 10px; + color: var(--muted); + line-height: 1.55; + overflow-wrap: anywhere; +} + +.detail-head { + margin-bottom: 14px; +} + +.mini-grid { + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + +.mini-card { + padding: 14px; +} + +.tag, +.status-badge { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 5px 9px; + border-radius: 999px; + border: 1px solid var(--line); + background: #fff; + color: var(--muted); + font-size: 0.82rem; + white-space: normal; + max-width: 100%; + overflow-wrap: anywhere; + text-align: left; + line-height: 1.35; +} + +.chip-row > *, +.action-row > *, +.status-row > *, +.selector-row > * { + min-width: 0; + max-width: 100%; +} + +.status-badge.published, +.tone-published { + border-color: rgba(26, 127, 55, 0.22); + background: var(--green-soft); + color: var(--green); +} + +.status-badge.pending, +.tone-pending { + border-color: rgba(154, 103, 0, 0.24); + background: var(--amber-soft); + color: var(--amber); +} + +.status-badge.rejected, +.tone-rejected { + border-color: rgba(207, 34, 46, 0.22); + background: var(--red-soft); + color: var(--red); +} + +.status-badge.neutral, +.tone-neutral { + border-color: rgba(9, 105, 218, 0.16); + background: var(--blue-soft); + color: var(--blue); +} + +.sidebar-card { + padding: 14px; +} + +.kv-key { + color: var(--muted); + font-size: 0.88rem; +} + +.kv-value { + color: var(--ink); + font-size: 0.92rem; + text-align: right; + overflow-wrap: anywhere; +} + +.jump-card { + width: 100%; + padding: 14px 15px; + text-align: left; +} + +.jump-card strong, +.nav-title, +.nav-meta, +.metric-note, +.soft-copy, +.empty-state, +.stage-note, +.stage-title, +.panel-copy, +.hero-copy, +.sidebar-copy, +.kv-key, +.kv-value, +.turn-label, +.field-label, +.card-kicker, +.metric-label, +.status-caption, +h1, +h2, +h3, +h4 { + overflow-wrap: anywhere; +} + +.event-card { + display: grid; + gap: 10px; +} + +.event-time { + color: var(--muted); + font-size: 0.88rem; +} + +.panel-scroll { + max-height: calc(100vh - 260px); + overflow: auto; +} + +.empty-state { + padding: 16px; + border: 1px dashed var(--line-strong); + border-radius: var(--radius-md); + background: var(--slate-soft); +} + +.stage-grid { + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + +.stage-card { + min-height: 132px; +} + +.stage-card.current { + border-color: rgba(9, 105, 218, 0.28); + box-shadow: inset 0 0 0 1px rgba(9, 105, 218, 0.08); +} + +.stage-card.done { + background: linear-gradient(180deg, #ffffff 0%, #f0faf3 100%); +} + +.stage-card.pending { + background: linear-gradient(180deg, #ffffff 0%, #fffced 100%); +} + +.stage-card.blocked { + background: linear-gradient(180deg, #ffffff 0%, #fff0ef 100%); +} + +.stage-title { + margin-top: 12px; + font-weight: 700; +} + +.stage-note { + margin-top: 10px; + color: var(--muted); + line-height: 1.5; +} + +.doc-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.doc-card { + overflow: hidden; +} + +.doc-head { + padding: 14px 14px 0; +} + +.doc-card pre { + margin: 14px; +} + +.validator-grid, +.version-grid { + display: grid; + gap: 12px; +} + +.version-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.version-card.current { + border-color: rgba(26, 127, 55, 0.26); +} + +.rule-list { + margin: 0; + padding-left: 18px; + color: var(--muted); + line-height: 1.6; +} + +.selector-row label { + flex: 1 1 220px; +} + +.version-stack { + margin-top: 14px; +} + +.version-pills { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.version-pill { + max-width: 100%; + white-space: normal; + text-align: left; + line-height: 1.35; +} + +.version-pill.active { + border-color: rgba(9, 105, 218, 0.26); + background: var(--blue-soft); + color: var(--blue); +} + +.turn-card { + padding: 14px; +} + +.turn-block { + margin-top: 12px; +} + +.turn-label { + display: inline-block; + margin-bottom: 8px; + font-weight: 600; + color: var(--muted); +} + +.mono { + font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; +} + +.hidden { + display: none !important; +} + +body[data-loading="true"] button[data-op] { + opacity: 0.6; +} + +@media (max-width: 1220px) { + .metric-grid, + .mini-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .stage-grid, + .version-grid, + .doc-grid, + .two-column { + grid-template-columns: 1fr; + } +} + +@media (max-width: 960px) { + .app-shell { + grid-template-columns: 1fr; + } + + .sidebar { + position: static; + min-height: auto; + border-right: 0; + border-bottom: 1px solid var(--line); + } + + .main-shell { + padding: 20px 18px 28px; + } + + .page-hero, + .panel-head { + flex-direction: column; + } + + .split-layout { + grid-template-columns: 1fr; + } + + .panel-scroll { + max-height: none; + } +} + +@media (max-width: 640px) { + .metric-grid, + .mini-grid { + grid-template-columns: 1fr; + } + + .page-hero, + .brand-block, + .panel-body, + .detail-shell, + .metric-grid, + .panel-head { + padding-left: 16px; + padding-right: 16px; + } + + .record-card, + .detail-card, + .context-card, + .event-card, + .validator-card, + .version-card, + .stage-card, + .mini-card { + padding: 14px; + } +} diff --git a/skillclaw/dashboard_ingest.py b/skillclaw/dashboard_ingest.py new file mode 100644 index 0000000..c50682a --- /dev/null +++ b/skillclaw/dashboard_ingest.py @@ -0,0 +1,1305 @@ +""" +Snapshot builder for the SkillClaw dashboard. +""" + +from __future__ import annotations + +import hashlib +import json +import logging +import re +from collections import defaultdict +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + +import yaml + +from evolve_server.core.utils import build_skill_md +from evolve_server.core.skill_registry import SkillIDRegistry + +from .config import SkillClawConfig +from .skill_hub import SkillHub +from .validation_store import ValidationStore + +logger = logging.getLogger(__name__) + +_CORE_FRONTMATTER_KEYS = {"name", "description", "metadata", "category"} + + +def _utc_now_iso() -> str: + return datetime.now(timezone.utc).isoformat() + + +def _stable_skill_id(name: str) -> str: + return hashlib.sha256(name.encode("utf-8")).hexdigest()[:12] + + +def _parse_iso8601(raw: str) -> datetime | None: + value = str(raw or "").strip() + if not value: + return None + try: + parsed = datetime.fromisoformat(value.replace("Z", "+00:00")) + if parsed.tzinfo is None: + parsed = parsed.replace(tzinfo=timezone.utc) + return parsed + except ValueError: + return None + + +def _latest_timestamp(*values: str) -> str: + latest: tuple[datetime, str] | None = None + for value in values: + parsed = _parse_iso8601(value) + if parsed is None: + continue + if latest is None or parsed > latest[0]: + latest = (parsed, value) + return latest[1] if latest else "" + + +def _read_text(path: Path) -> str: + try: + return path.read_text(encoding="utf-8") + except OSError: + return "" + + +def _read_json(path: Path, default: Any) -> Any: + try: + return json.loads(path.read_text(encoding="utf-8")) + except Exception: + return default + + +def _hash_bytes(data: bytes) -> str: + return hashlib.sha256(data).hexdigest() + + +def _hash_text(text: str) -> str: + return _hash_bytes(text.encode("utf-8")) + + +def _compute_file_sha(path: Path) -> str: + try: + return hashlib.sha256(path.read_bytes()).hexdigest() + except OSError: + return "" + + +def _truncate(text: str, limit: int = 180) -> str: + value = " ".join(str(text or "").split()) + if len(value) <= limit: + return value + return value[: max(0, limit - 3)].rstrip() + "..." + + +def _trim_message(text: str, limit: int = 6000) -> str: + value = str(text or "").strip() + if len(value) <= limit: + return value + return value[: max(0, limit - 3)].rstrip() + "..." + + +def _normalize_timestamp(raw: str) -> str: + value = str(raw or "").strip() + if not value: + return "" + + parsed = _parse_iso8601(value) + if parsed is None: + for fmt in ("%Y-%m-%d %H:%M:%S", "%Y-%m-%dT%H:%M:%S"): + try: + parsed = datetime.strptime(value, fmt).replace(tzinfo=timezone.utc) + break + except ValueError: + continue + if parsed is None: + return value + return parsed.isoformat() + + +def _extract_skill_names(items: Any) -> list[str]: + names: set[str] = set() + if not isinstance(items, list): + return [] + for item in items: + if isinstance(item, dict): + raw = item.get("skill_name") or item.get("name") or item.get("skill") + else: + raw = item + name = str(raw or "").strip() + if name: + names.add(name) + return sorted(names) + + +def _extract_message_text(message: Any) -> str: + if isinstance(message, str): + return message.strip() + if not isinstance(message, dict): + return "" + + content = message.get("content") + if isinstance(content, str): + return content.strip() + if not isinstance(content, list): + return "" + + parts: list[str] = [] + for item in content: + if not isinstance(item, dict): + continue + if item.get("type") == "text": + text = str(item.get("text", "") or "").strip() + if text: + parts.append(text) + return "\n\n".join(parts).strip() + + +def _clean_transcript_text(text: str) -> str: + value = str(text or "").strip() + wrapped = re.fullmatch(r"\s*(.*?)\s*", value, flags=re.DOTALL) + if wrapped: + value = wrapped.group(1).strip() + return _trim_message(value) + + +def _guess_category(skills_dir: Path, skill_path: Path) -> str: + try: + rel_parts = skill_path.resolve().relative_to(skills_dir.resolve()).parts + except Exception: + return "general" + if len(rel_parts) >= 3: + return str(rel_parts[0] or "general") + return "general" + + +def _parse_skill_document( + raw: str, + *, + fallback_name: str = "", + fallback_category: str = "general", +) -> dict[str, Any]: + body = raw.strip() + fm: dict[str, Any] = {} + if raw.startswith("---"): + end_idx = raw.find("\n---", 3) + if end_idx != -1: + try: + parsed = yaml.safe_load(raw[3:end_idx].strip()) or {} + if isinstance(parsed, dict): + fm = parsed + except yaml.YAMLError: + fm = {} + body = raw[end_idx + 4 :].strip() + + metadata = fm.get("metadata") + if not isinstance(metadata, dict): + metadata = {} + skillclaw_meta = metadata.get("skillclaw") + if not isinstance(skillclaw_meta, dict): + skillclaw_meta = {} + + category = str( + skillclaw_meta.get("category") + or fm.get("category") + or fallback_category + or "general" + ).strip() or "general" + name = str(fm.get("name") or fallback_name or "").strip() + description = str(fm.get("description") or "").strip() + extra_frontmatter = {k: v for k, v in fm.items() if k not in _CORE_FRONTMATTER_KEYS} + + return { + "name": name, + "description": description, + "category": category, + "metadata": metadata, + "extra_frontmatter": extra_frontmatter, + "content": body, + "skill_md": raw, + } + + +def _load_local_skills(config: SkillClawConfig, warnings: list[str]) -> dict[str, dict[str, Any]]: + skills_dir = Path(config.skills_dir).expanduser() + if not skills_dir.is_dir(): + return {} + + stats = _read_json(skills_dir / "skill_stats.json", {}) + if not isinstance(stats, dict): + stats = {} + + skills: dict[str, dict[str, Any]] = {} + for skill_path in sorted(skills_dir.rglob("SKILL.md")): + raw = _read_text(skill_path) + if not raw: + warnings.append(f"failed to read local skill file: {skill_path}") + continue + parsed = _parse_skill_document( + raw, + fallback_name=skill_path.parent.name, + fallback_category=_guess_category(skills_dir, skill_path), + ) + name = str(parsed.get("name") or skill_path.parent.name).strip() + if not name: + continue + stat = stats.get(name) + if not isinstance(stat, dict): + stat = {} + mtime = "" + try: + mtime = datetime.fromtimestamp(skill_path.stat().st_mtime, tz=timezone.utc).isoformat() + except OSError: + pass + local_sha = _compute_file_sha(skill_path) + + skills[name] = { + "name": name, + "skill_id": _stable_skill_id(name), + "description": str(parsed.get("description") or ""), + "category": str(parsed.get("category") or "general"), + "metadata": parsed.get("metadata") or {}, + "extra_frontmatter": parsed.get("extra_frontmatter") or {}, + "content": str(parsed.get("content") or ""), + "skill_md": str(parsed.get("skill_md") or ""), + "source": "local", + "has_local": True, + "has_remote": False, + "local_path": str(skill_path), + "uploaded_at": "", + "uploaded_by": "", + "updated_at": mtime, + "local_updated_at": mtime, + "remote_updated_at": "", + "current_version": 1, + "current_sha": local_sha, + "local_sha": local_sha, + "remote_sha": "", + "local_inject_count": int(stat.get("inject_count", 0) or 0), + "observed_injection_count": 0, + "read_count": 0, + "modified_count": 0, + "session_count": 0, + "effectiveness": float(stat.get("effectiveness", 0.0) or 0.0), + "positive_count": int(stat.get("positive_count", 0) or 0), + "negative_count": int(stat.get("negative_count", 0) or 0), + "neutral_count": int(stat.get("neutral_count", 0) or 0), + "last_injected_at": str(stat.get("last_injected_at", "") or ""), + "stats": stat, + "manifest": {}, + "registry": {}, + "versions": [], + } + + return skills + + +def _skillclaw_state_dir(config: SkillClawConfig) -> Path: + return Path(config.skills_dir).expanduser().parent / "state" + + +def _find_transcript_path(session_id: str, transcript_paths: list[str]) -> Path | None: + candidates: list[Path] = [] + for raw_path in transcript_paths: + path = Path(str(raw_path)).expanduser() + if path.stem == session_id or session_id in path.as_posix(): + candidates.append(path) + if not candidates: + return None + candidates.sort(key=lambda item: (item.stem != session_id, len(str(item)))) + return candidates[0] + + +def _parse_cursor_transcript_turns(transcript_path: Path, warnings: list[str]) -> list[dict[str, Any]]: + turns: list[dict[str, Any]] = [] + current_turn: dict[str, Any] | None = None + + try: + with transcript_path.open(encoding="utf-8") as handle: + for raw_line in handle: + if not raw_line.strip(): + continue + try: + record = json.loads(raw_line) + except json.JSONDecodeError: + continue + + role = str(record.get("role", "") or "").strip().lower() + if role not in {"user", "assistant"}: + continue + + text = _clean_transcript_text(_extract_message_text(record.get("message"))) + if not text: + continue + + if role == "user": + if current_turn is not None: + turns.append(current_turn) + current_turn = { + "turn_num": len(turns) + 1, + "prompt_text": text, + "response_text": "", + "reasoning_content": None, + "tool_calls": [], + "read_skills": [], + "modified_skills": [], + "tool_results": [], + "tool_results_raw": [], + "tool_observations": [], + "tool_errors": [], + "injected_skills": [], + "prm_score": None, + } + continue + + if current_turn is None: + continue + if current_turn["response_text"]: + current_turn["response_text"] += "\n\n" + text + else: + current_turn["response_text"] = text + except OSError as exc: + warnings.append(f"failed to read local transcript '{transcript_path}': {exc}") + return [] + + if current_turn is not None: + turns.append(current_turn) + + return turns + + +def _record_dir_candidates(config: SkillClawConfig) -> list[Path]: + raw = str(getattr(config, "record_dir", "") or "").strip() + if not raw: + return [] + + record_dir = Path(raw).expanduser() + if record_dir.is_absolute(): + return [record_dir] + + candidates: list[Path] = [] + seen: set[str] = set() + for parent in (Path.cwd(), *Path.cwd().parents): + candidate = (parent / record_dir).resolve() + key = str(candidate) + if key in seen: + continue + candidates.append(candidate) + seen.add(key) + return candidates + + +def _resolve_record_dir(config: SkillClawConfig) -> Path | None: + candidates = _record_dir_candidates(config) + for candidate in candidates: + if candidate.is_dir() or (candidate / "conversations.jsonl").exists(): + return candidate + return candidates[0] if candidates else None + + +def _extract_record_instruction(record: dict[str, Any]) -> str: + instruction = _clean_transcript_text(str(record.get("instruction_text", "") or "")) + if instruction: + return instruction + + messages = record.get("messages") + if isinstance(messages, list): + for message in reversed(messages): + if not isinstance(message, dict): + continue + role = str(message.get("role", "") or "").strip().lower() + if role != "user": + continue + text = _clean_transcript_text(_extract_message_text(message)) + if text: + return text + + return _clean_transcript_text(str(record.get("prompt_text", "") or "")) + + +def _normalize_tool_calls(raw: Any) -> list[dict[str, Any]]: + if not isinstance(raw, list): + return [] + return [dict(item) for item in raw if isinstance(item, dict)] + + +def _load_record_prm_scores(record_dir: Path, warnings: list[str]) -> dict[tuple[str, int], float]: + prm_scores_path = record_dir / "prm_scores.jsonl" + if not prm_scores_path.is_file(): + return {} + + scores: dict[tuple[str, int], float] = {} + try: + with prm_scores_path.open(encoding="utf-8") as handle: + for line_no, raw_line in enumerate(handle, start=1): + if not raw_line.strip(): + continue + try: + payload = json.loads(raw_line) + except json.JSONDecodeError: + warnings.append( + f"failed to parse PRM record '{prm_scores_path}' line {line_no}" + ) + continue + if not isinstance(payload, dict): + continue + session_id = str(payload.get("session_id", "") or "").strip() + if not session_id: + continue + try: + turn_num = int(payload.get("turn", 0) or 0) + except (TypeError, ValueError): + continue + if turn_num <= 0: + continue + score = payload.get("score") + if isinstance(score, (int, float)) and not isinstance(score, bool): + scores[(session_id, turn_num)] = float(score) + except OSError as exc: + warnings.append(f"failed to read PRM records '{prm_scores_path}': {exc}") + + return scores + + +def _load_record_sessions(config: SkillClawConfig, warnings: list[str]) -> list[dict[str, Any]]: + record_dir = _resolve_record_dir(config) + if record_dir is None: + return [] + + conversations_path = record_dir / "conversations.jsonl" + if not conversations_path.is_file(): + return [] + + prm_scores = _load_record_prm_scores(record_dir, warnings) + grouped: dict[str, dict[str, Any]] = {} + line_counter = 0 + + try: + with conversations_path.open(encoding="utf-8") as handle: + for raw_line in handle: + line_counter += 1 + if not raw_line.strip(): + continue + try: + payload = json.loads(raw_line) + except json.JSONDecodeError: + warnings.append( + f"failed to parse conversation record '{conversations_path}' line {line_counter}" + ) + continue + if not isinstance(payload, dict): + continue + + session_id = str(payload.get("session_id", "") or "").strip() + if not session_id: + continue + + timestamp = _normalize_timestamp(str(payload.get("timestamp", "") or "")) + try: + turn_num = int(payload.get("turn", 0) or 0) + except (TypeError, ValueError): + turn_num = 0 + + group = grouped.setdefault( + session_id, + { + "session_id": session_id, + "timestamp": "", + "turns": {}, + "line_index": {}, + "record_path": str(conversations_path), + }, + ) + group["timestamp"] = _latest_timestamp(group["timestamp"], timestamp) or timestamp + + if turn_num <= 0: + turn_num = max(group["turns"].keys(), default=0) + 1 + + turn_payload = { + "turn_num": turn_num, + "prompt_text": _extract_record_instruction(payload), + "response_text": _trim_message(str(payload.get("response_text", "") or "")), + "reasoning_content": None, + "tool_calls": _normalize_tool_calls(payload.get("tool_calls")), + "read_skills": [], + "modified_skills": [], + "tool_results": [], + "tool_results_raw": [], + "tool_observations": [], + "tool_errors": [], + "injected_skills": [], + "prm_score": prm_scores.get((session_id, turn_num)), + } + + existing_line = group["line_index"].get(turn_num, -1) + if line_counter >= existing_line: + group["turns"][turn_num] = turn_payload + group["line_index"][turn_num] = line_counter + except OSError as exc: + warnings.append(f"failed to read local conversations '{conversations_path}': {exc}") + return [] + + sessions: list[dict[str, Any]] = [] + for session_id, group in grouped.items(): + turns = [group["turns"][turn_num] for turn_num in sorted(group["turns"])] + sessions.append( + { + "session_id": session_id, + "timestamp": str(group.get("timestamp", "") or ""), + "user_alias": "local", + "num_turns": len(turns), + "turns": turns, + "source": "local", + "outcome": "", + "outcome_reasons": [], + "outcome_reason_count": 0, + "active_skills": [], + "transcript_path": "", + "trajectory_path": "", + "record_path": str(group.get("record_path", "") or ""), + } + ) + + return sessions + + +def _merge_session_turns( + base_turns: list[dict[str, Any]], + overlay_turns: list[dict[str, Any]], +) -> list[dict[str, Any]]: + by_turn: dict[int, dict[str, Any]] = {} + for turn in base_turns: + if not isinstance(turn, dict): + continue + try: + turn_num = int(turn.get("turn_num", 0) or 0) + except (TypeError, ValueError): + continue + if turn_num <= 0: + continue + by_turn[turn_num] = dict(turn) + + list_fields = { + "tool_calls", + "read_skills", + "modified_skills", + "tool_results", + "tool_results_raw", + "tool_observations", + "tool_errors", + "injected_skills", + } + nullable_fields = {"prm_score", "reasoning_content"} + + for turn in overlay_turns: + if not isinstance(turn, dict): + continue + try: + turn_num = int(turn.get("turn_num", 0) or 0) + except (TypeError, ValueError): + continue + if turn_num <= 0: + continue + + current = by_turn.get(turn_num) + if current is None: + by_turn[turn_num] = dict(turn) + continue + + merged = dict(current) + for key, value in turn.items(): + if key == "turn_num": + continue + if key in list_fields: + if isinstance(value, list) and value: + merged[key] = value + else: + merged.setdefault(key, current.get(key, [])) + continue + if key in nullable_fields: + if value is not None: + merged[key] = value + continue + if str(value or "").strip(): + merged[key] = value + by_turn[turn_num] = merged + + return [by_turn[turn_num] for turn_num in sorted(by_turn)] + + +def _merge_local_sessions(base: dict[str, Any], overlay: dict[str, Any]) -> dict[str, Any]: + merged = dict(base) + merged_turns = _merge_session_turns( + list(base.get("turns") or []), + list(overlay.get("turns") or []), + ) + merged["turns"] = merged_turns + merged["timestamp"] = ( + _latest_timestamp( + str(base.get("timestamp", "") or ""), + str(overlay.get("timestamp", "") or ""), + ) + or str(overlay.get("timestamp", "") or base.get("timestamp", "") or "") + ) + merged["user_alias"] = str( + overlay.get("user_alias", "") or base.get("user_alias", "") or "local" + ) + merged["num_turns"] = max( + int(base.get("num_turns", 0) or 0), + int(overlay.get("num_turns", 0) or 0), + len(merged_turns), + ) + merged["source"] = "local" + merged["outcome"] = str(overlay.get("outcome", "") or base.get("outcome", "") or "") + + outcome_reasons = [ + str(item or "").strip() + for item in [*(base.get("outcome_reasons") or []), *(overlay.get("outcome_reasons") or [])] + if str(item or "").strip() + ] + deduped_outcome_reasons = list(dict.fromkeys(outcome_reasons)) + merged["outcome_reasons"] = deduped_outcome_reasons[:20] + merged["outcome_reason_count"] = len(deduped_outcome_reasons) + merged["active_skills"] = sorted( + { + str(item or "").strip() + for item in [*(base.get("active_skills") or []), *(overlay.get("active_skills") or [])] + if str(item or "").strip() + } + ) + merged["transcript_path"] = str( + base.get("transcript_path", "") or overlay.get("transcript_path", "") or "" + ) + merged["trajectory_path"] = str( + base.get("trajectory_path", "") or overlay.get("trajectory_path", "") or "" + ) + merged["record_path"] = str( + overlay.get("record_path", "") or base.get("record_path", "") or "" + ) + return merged + + +def _load_state_sessions(config: SkillClawConfig, warnings: list[str]) -> list[dict[str, Any]]: + state_dir = _skillclaw_state_dir(config) + conv_offsets_path = state_dir / "conv_offsets.json" + trajectories_dir = state_dir / "trajectories" + + conv_offsets = _read_json(conv_offsets_path, {}) + transcript_paths = list(conv_offsets.keys()) if isinstance(conv_offsets, dict) else [] + + trajectories: dict[str, dict[str, Any]] = {} + if trajectories_dir.is_dir(): + for trajectory_path in sorted(trajectories_dir.glob("*.json")): + payload = _read_json(trajectory_path, {}) + if not isinstance(payload, dict): + continue + session_id = str(payload.get("conversation_id", "") or trajectory_path.stem).strip() + if not session_id: + continue + payload["_trajectory_path"] = str(trajectory_path) + trajectories[session_id] = payload + + session_ids = set(trajectories.keys()) + for raw_path in transcript_paths: + session_id = Path(str(raw_path)).stem.strip() + if session_id: + session_ids.add(session_id) + + sessions: list[dict[str, Any]] = [] + for session_id in sorted(session_ids): + trajectory = trajectories.get(session_id, {}) + transcript_path = _find_transcript_path(session_id, transcript_paths) + turns = _parse_cursor_transcript_turns(transcript_path, warnings) if transcript_path else [] + active_skills = sorted( + { + str(item or "").strip() + for item in (trajectory.get("active_skills") or []) + if str(item or "").strip() + } + ) + if turns and active_skills: + turns[0]["injected_skills"] = active_skills + elif active_skills: + turns = [ + { + "turn_num": 1, + "prompt_text": "(local trajectory imported without transcript)", + "response_text": "", + "reasoning_content": None, + "tool_calls": [], + "read_skills": [], + "modified_skills": [], + "tool_results": [], + "tool_results_raw": [], + "tool_observations": [], + "tool_errors": [], + "injected_skills": active_skills, + "prm_score": None, + } + ] + + timestamp = str( + trajectory.get("end_time") + or trajectory.get("start_time") + or "" + ) + if not timestamp and transcript_path is not None: + try: + timestamp = datetime.fromtimestamp(transcript_path.stat().st_mtime, tz=timezone.utc).isoformat() + except OSError: + timestamp = "" + + outcome_reasons = [ + str(item or "").strip() + for item in (trajectory.get("outcome_reasons") or []) + if str(item or "").strip() + ] + sessions.append( + { + "session_id": session_id, + "timestamp": timestamp, + "user_alias": "local", + "num_turns": len(turns), + "turns": turns, + "source": "local", + "outcome": str(trajectory.get("outcome", "") or ""), + "outcome_reasons": outcome_reasons[:20], + "outcome_reason_count": len(outcome_reasons), + "active_skills": active_skills, + "transcript_path": str(transcript_path) if transcript_path is not None else "", + "trajectory_path": str(trajectory.get("_trajectory_path", "") or ""), + } + ) + + sessions.sort(key=lambda item: (str(item.get("timestamp", "") or ""), str(item.get("session_id", "") or "")), reverse=True) + return sessions + + +def _load_local_sessions(config: SkillClawConfig, warnings: list[str]) -> list[dict[str, Any]]: + sessions_by_id: dict[str, dict[str, Any]] = {} + + for session in _load_state_sessions(config, warnings): + session_id = str(session.get("session_id", "") or "") + if session_id: + sessions_by_id[session_id] = session + + for session in _load_record_sessions(config, warnings): + session_id = str(session.get("session_id", "") or "") + if not session_id: + continue + existing = sessions_by_id.get(session_id) + if existing is None: + sessions_by_id[session_id] = session + else: + sessions_by_id[session_id] = _merge_local_sessions(existing, session) + + sessions = list(sessions_by_id.values()) + sessions.sort( + key=lambda item: ( + str(item.get("timestamp", "") or ""), + str(item.get("session_id", "") or ""), + ), + reverse=True, + ) + return sessions + + +def _load_shared_skills( + config: SkillClawConfig, + warnings: list[str], +) -> tuple[dict[str, dict[str, Any]], list[dict[str, Any]], list[dict[str, Any]], dict[str, dict[str, Any]]]: + if not config.sharing_enabled or not config.dashboard_include_shared: + return {}, [], [], {} + + try: + hub = SkillHub.from_config(config) + except Exception as exc: + warnings.append(f"failed to initialize shared storage: {exc}") + return {}, [], [], {} + + try: + manifest = hub._load_remote_manifest() + except Exception as exc: + warnings.append(f"failed to load shared manifest: {exc}") + manifest = {} + + registry = SkillIDRegistry() + try: + registry.load_from_oss(hub._bucket, hub._prefix()) + except Exception as exc: + warnings.append(f"failed to load shared registry: {exc}") + + registry_entries = registry.all_entries() + skills: dict[str, dict[str, Any]] = {} + candidate_docs_by_skill: dict[str, dict[str, str]] = defaultdict(dict) + validation_jobs: list[dict[str, Any]] = [] + + try: + validation_store = ValidationStore.from_config(config) + for job in validation_store.list_jobs(): + if not isinstance(job, dict): + continue + job_id = str(job.get("job_id", "") or "") + results = validation_store.list_results(job_id) if job_id else [] + decision = validation_store.load_decision(job_id) if job_id else None + accepted_count = sum(1 for item in results if isinstance(item, dict) and item.get("accepted") is True) + rejected_count = sum(1 for item in results if isinstance(item, dict) and item.get("accepted") is not True) + score_values = [ + float(item["score"]) + for item in results + if isinstance(item, dict) + and isinstance(item.get("score"), (int, float)) + and not isinstance(item.get("score"), bool) + ] + mean_score = round(sum(score_values) / len(score_values), 3) if score_values else None + decision_status = "" + if isinstance(decision, dict): + decision_status = str(decision.get("status", "") or "") + if decision_status: + status = decision_status + elif not results: + status = "pending" + else: + status = "review" + + candidate_skill = job.get("candidate_skill") + candidate_name = "" + if isinstance(candidate_skill, dict): + candidate_name = str(candidate_skill.get("name", "") or "") + if candidate_name: + try: + candidate_md = build_skill_md(candidate_skill) + except Exception: + candidate_md = "" + if candidate_md: + candidate_docs_by_skill[candidate_name][_hash_text(candidate_md)] = candidate_md + + validation_jobs.append( + { + "job_id": job_id, + "created_at": str(job.get("created_at", "") or ""), + "skill_name": str(job.get("candidate_skill_name", "") or candidate_name), + "proposed_action": str(job.get("proposed_action", "") or ""), + "status": status, + "result_count": len(results), + "accepted_count": accepted_count, + "rejected_count": rejected_count, + "mean_score": mean_score, + "job": job, + "results": results, + "decision": decision or {}, + } + ) + except Exception as exc: + warnings.append(f"failed to load validation jobs: {exc}") + + for name, record in manifest.items(): + raw = "" + try: + raw = hub._bucket.get_object(hub._skill_key(name)).read().decode("utf-8") + except Exception as exc: + warnings.append(f"failed to fetch shared skill '{name}': {exc}") + parsed = _parse_skill_document( + raw, + fallback_name=name, + fallback_category=str(record.get("category", "general") or "general"), + ) + registry_entry = registry_entries.get(name) + if not isinstance(registry_entry, dict): + registry_entry = {} + history = registry_entry.get("history") + if not isinstance(history, list): + history = [] + enriched_history: list[dict[str, Any]] = [] + current_sha = str( + registry_entry.get("content_sha") + or record.get("sha256") + or (_hash_text(raw) if raw else "") + ) + current_version = int(registry_entry.get("version", 0) or 0) + if current_version <= 0 and current_sha: + current_version = 1 + history_latest = "" + for item in history: + if isinstance(item, dict): + version_entry = dict(item) + content_sha = str(version_entry.get("content_sha", "") or "") + snapshot_md = "" + if content_sha: + snapshot_md = candidate_docs_by_skill.get(name, {}).get(content_sha, "") + if not snapshot_md and content_sha and raw and content_sha == current_sha: + snapshot_md = raw + if snapshot_md: + parsed_snapshot = _parse_skill_document( + snapshot_md, + fallback_name=name, + fallback_category=str(record.get("category", "general") or "general"), + ) + version_entry["skill_md"] = snapshot_md + version_entry["content"] = str(parsed_snapshot.get("content") or "") + enriched_history.append(version_entry) + history_latest = _latest_timestamp(history_latest, str(version_entry.get("timestamp", "") or "")) + + skills[name] = { + "name": name, + "skill_id": str(registry_entry.get("skill_id") or _stable_skill_id(name)), + "description": str(parsed.get("description") or record.get("description") or ""), + "category": str(parsed.get("category") or record.get("category") or "general"), + "metadata": parsed.get("metadata") or {}, + "extra_frontmatter": parsed.get("extra_frontmatter") or {}, + "content": str(parsed.get("content") or ""), + "skill_md": str(parsed.get("skill_md") or ""), + "source": "shared", + "has_local": False, + "has_remote": True, + "local_path": "", + "uploaded_at": str(record.get("uploaded_at", "") or ""), + "uploaded_by": str(record.get("uploaded_by", "") or ""), + "updated_at": _latest_timestamp( + str(record.get("uploaded_at", "") or ""), + history_latest, + ), + "local_updated_at": "", + "remote_updated_at": _latest_timestamp( + str(record.get("uploaded_at", "") or ""), + history_latest, + ), + "current_version": current_version, + "current_sha": current_sha, + "local_sha": "", + "remote_sha": current_sha, + "local_inject_count": 0, + "observed_injection_count": 0, + "read_count": 0, + "modified_count": 0, + "session_count": 0, + "effectiveness": 0.0, + "positive_count": 0, + "negative_count": 0, + "neutral_count": 0, + "last_injected_at": "", + "stats": {}, + "manifest": record, + "registry": registry_entry, + "versions": enriched_history, + } + + sessions: list[dict[str, Any]] = [] + try: + prefix = f"{hub._prefix()}sessions/" + for obj in hub._bucket.iter_objects(prefix=prefix): + if not str(obj.key).endswith(".json"): + continue + try: + payload = json.loads(hub._bucket.get_object(obj.key).read().decode("utf-8")) + if isinstance(payload, dict): + sessions.append(payload) + except Exception as exc: + warnings.append(f"failed to parse session object '{obj.key}': {exc}") + except Exception as exc: + warnings.append(f"failed to list shared sessions: {exc}") + + sessions.sort(key=lambda item: (str(item.get("timestamp", "") or ""), str(item.get("session_id", "") or "")), reverse=True) + validation_jobs.sort(key=lambda item: (str(item.get("created_at", "") or ""), str(item.get("job_id", "") or "")), reverse=True) + return skills, sessions, validation_jobs, registry_entries + + +def build_dashboard_snapshot(config: SkillClawConfig) -> dict[str, Any]: + warnings: list[str] = [] + local_skills = _load_local_skills(config, warnings) + local_sessions = _load_local_sessions(config, warnings) + shared_skills, shared_sessions, validation_jobs, registry_entries = _load_shared_skills(config, warnings) + + skills_by_name: dict[str, dict[str, Any]] = { + name: dict(skill) + for name, skill in local_skills.items() + } + + for name, shared_skill in shared_skills.items(): + current = skills_by_name.get(name) + if current is None: + skills_by_name[name] = dict(shared_skill) + continue + + current["source"] = "both" + current["has_remote"] = True + current["skill_id"] = str(shared_skill.get("skill_id") or current.get("skill_id") or _stable_skill_id(name)) + current["uploaded_at"] = str(shared_skill.get("uploaded_at", "") or current.get("uploaded_at", "")) + current["uploaded_by"] = str(shared_skill.get("uploaded_by", "") or current.get("uploaded_by", "")) + current["updated_at"] = _latest_timestamp( + str(current.get("updated_at", "") or ""), + str(shared_skill.get("updated_at", "") or ""), + ) + current["local_updated_at"] = str( + current.get("local_updated_at", "") + or current.get("updated_at", "") + or "" + ) + current["local_sha"] = str( + current.get("local_sha", "") + or current.get("current_sha", "") + or "" + ) + current["remote_updated_at"] = str( + shared_skill.get("remote_updated_at", "") + or shared_skill.get("updated_at", "") + or "" + ) + current["remote_sha"] = str( + shared_skill.get("remote_sha", "") + or shared_skill.get("current_sha", "") + or "" + ) + current["current_version"] = int( + shared_skill.get("current_version", 0) + or current.get("current_version", 0) + or 0 + ) + current["current_sha"] = str(shared_skill.get("current_sha", "") or current.get("current_sha", "")) + current["manifest"] = shared_skill.get("manifest") or {} + current["registry"] = shared_skill.get("registry") or {} + current["versions"] = list(shared_skill.get("versions") or []) + current["remote_skill_md"] = shared_skill.get("skill_md", "") + current["remote_content"] = shared_skill.get("content", "") + if not current.get("description"): + current["description"] = str(shared_skill.get("description", "") or "") + if not current.get("metadata"): + current["metadata"] = shared_skill.get("metadata") or {} + if not current.get("extra_frontmatter"): + current["extra_frontmatter"] = shared_skill.get("extra_frontmatter") or {} + + usage_by_name: dict[str, dict[str, Any]] = defaultdict( + lambda: { + "observed_injection_count": 0, + "read_count": 0, + "modified_count": 0, + "session_ids": set(), + } + ) + link_counts: dict[tuple[str, str, str], int] = defaultdict(int) + session_summaries: list[dict[str, Any]] = [] + + sessions_by_id: dict[str, dict[str, Any]] = {} + for session in local_sessions + shared_sessions: + session_id = str(session.get("session_id", "") or "") + if not session_id: + continue + existing = sessions_by_id.get(session_id) + if existing is None: + sessions_by_id[session_id] = session + continue + if str(session.get("source", "") or "") == "shared": + sessions_by_id[session_id] = session + + for session in sessions_by_id.values(): + session_id = str(session.get("session_id", "") or "") + if not session_id: + continue + turns = session.get("turns") + if not isinstance(turns, list): + turns = [] + prompt_preview = "" + response_preview = "" + prm_scores: list[float] = [] + session_skill_names: set[str] = set() + injected_names_all: set[str] = set() + read_names_all: set[str] = set() + modified_names_all: set[str] = set() + + for turn in turns: + if not isinstance(turn, dict): + continue + if not prompt_preview: + prompt_preview = _truncate(str(turn.get("prompt_text", "") or "")) + if not response_preview: + response_preview = _truncate(str(turn.get("response_text", "") or "")) + + prm_score = turn.get("prm_score") + if isinstance(prm_score, (int, float)) and not isinstance(prm_score, bool): + prm_scores.append(float(prm_score)) + + injected_names = _extract_skill_names(turn.get("injected_skills")) + read_names = _extract_skill_names(turn.get("read_skills")) + modified_names = _extract_skill_names(turn.get("modified_skills")) + + injected_names_all.update(injected_names) + read_names_all.update(read_names) + modified_names_all.update(modified_names) + session_skill_names.update(injected_names) + session_skill_names.update(read_names) + session_skill_names.update(modified_names) + + for name in injected_names: + usage = usage_by_name[name] + usage["observed_injection_count"] += 1 + usage["session_ids"].add(session_id) + link_counts[(session_id, name, "injected")] += 1 + for name in read_names: + usage = usage_by_name[name] + usage["read_count"] += 1 + usage["session_ids"].add(session_id) + link_counts[(session_id, name, "read")] += 1 + for name in modified_names: + usage = usage_by_name[name] + usage["modified_count"] += 1 + usage["session_ids"].add(session_id) + link_counts[(session_id, name, "modified")] += 1 + + avg_prm_score = round(sum(prm_scores) / len(prm_scores), 3) if prm_scores else None + session_summaries.append( + { + "session_id": session_id, + "timestamp": str(session.get("timestamp", "") or ""), + "user_alias": str(session.get("user_alias", "") or ""), + "num_turns": int(session.get("num_turns", len(turns)) or len(turns)), + "avg_prm_score": avg_prm_score, + "source": str(session.get("source", "") or ""), + "outcome": str(session.get("outcome", "") or ""), + "outcome_reasons": list(session.get("outcome_reasons") or []), + "outcome_reason_count": int(session.get("outcome_reason_count", 0) or 0), + "skill_names": sorted(session_skill_names), + "injected_skills": sorted(injected_names_all), + "read_skills": sorted(read_names_all), + "modified_skills": sorted(modified_names_all), + "prompt_preview": prompt_preview, + "response_preview": response_preview, + "turns": turns, + } + ) + + for name, usage in usage_by_name.items(): + skill = skills_by_name.get(name) + if skill is None: + registry_entry = registry_entries.get(name) + if not isinstance(registry_entry, dict): + registry_entry = {} + skill = { + "name": name, + "skill_id": str(registry_entry.get("skill_id") or _stable_skill_id(name)), + "description": "", + "category": "general", + "metadata": {}, + "extra_frontmatter": {}, + "content": "", + "skill_md": "", + "source": "observed", + "has_local": False, + "has_remote": False, + "local_path": "", + "uploaded_at": "", + "uploaded_by": "", + "updated_at": "", + "local_updated_at": "", + "remote_updated_at": "", + "current_version": int(registry_entry.get("version", 0) or 0), + "current_sha": str(registry_entry.get("content_sha", "") or ""), + "local_sha": "", + "remote_sha": str(registry_entry.get("content_sha", "") or ""), + "local_inject_count": 0, + "observed_injection_count": 0, + "read_count": 0, + "modified_count": 0, + "session_count": 0, + "effectiveness": 0.0, + "positive_count": 0, + "negative_count": 0, + "neutral_count": 0, + "last_injected_at": "", + "stats": {}, + "manifest": {}, + "registry": registry_entry, + "versions": list(registry_entry.get("history") or []) if isinstance(registry_entry.get("history"), list) else [], + } + skills_by_name[name] = skill + + skill["observed_injection_count"] = int(usage["observed_injection_count"]) + skill["read_count"] = int(usage["read_count"]) + skill["modified_count"] = int(usage["modified_count"]) + skill["session_count"] = len(usage["session_ids"]) + + normalized_skills: list[dict[str, Any]] = [] + for name in sorted(skills_by_name): + skill = skills_by_name[name] + versions = [ + item + for item in (skill.get("versions") or []) + if isinstance(item, dict) + ] + if not versions and skill.get("current_sha"): + versions = [ + { + "version": int(skill.get("current_version", 0) or 1), + "content_sha": str(skill.get("current_sha", "") or ""), + "timestamp": str( + skill.get("updated_at") + or skill.get("uploaded_at") + or skill.get("last_injected_at") + or "" + ), + "action": "snapshot", + "skill_md": str(skill.get("remote_skill_md") or skill.get("skill_md") or ""), + "content": str(skill.get("remote_content") or skill.get("content") or ""), + } + ] + skill["versions"] = versions + if not skill.get("updated_at"): + skill["updated_at"] = _latest_timestamp( + str(skill.get("uploaded_at", "") or ""), + str(skill.get("last_injected_at", "") or ""), + ) + normalized_skills.append(skill) + + normalized_skills.sort( + key=lambda item: ( + -int(item.get("session_count", 0) or 0), + -int(item.get("observed_injection_count", 0) or 0), + -int(item.get("local_inject_count", 0) or 0), + str(item.get("name", "") or ""), + ) + ) + session_summaries.sort( + key=lambda item: ( + str(item.get("timestamp", "") or ""), + str(item.get("session_id", "") or ""), + ), + reverse=True, + ) + + skill_id_by_name = { + str(skill.get("name", "") or ""): str(skill.get("skill_id", "") or "") + for skill in normalized_skills + if str(skill.get("name", "") or "") + } + session_skill_links = [ + { + "session_id": session_id, + "skill_id": skill_id_by_name.get(skill_name, _stable_skill_id(skill_name)), + "skill_name": skill_name, + "relation": relation, + "count": count, + } + for (session_id, skill_name, relation), count in sorted(link_counts.items()) + ] + + return { + "generated_at": _utc_now_iso(), + "meta": { + "warnings": warnings, + "sharing_enabled": bool(config.sharing_enabled), + "dashboard_include_shared": bool(config.dashboard_include_shared), + "sharing_backend": str(config.sharing_backend or ""), + "sharing_group_id": str(config.sharing_group_id or "default"), + "sharing_local_root": str(config.sharing_local_root or ""), + "sharing_user_alias": str(config.sharing_user_alias or ""), + "skills_dir": str(config.skills_dir or ""), + "dashboard_db_path": str(config.dashboard_db_path or ""), + "dashboard_evolve_server_url": str(config.dashboard_evolve_server_url or ""), + }, + "skills": normalized_skills, + "sessions": session_summaries, + "session_skill_links": session_skill_links, + "validation_jobs": validation_jobs, + } diff --git a/skillclaw/dashboard_server.py b/skillclaw/dashboard_server.py new file mode 100644 index 0000000..70462ce --- /dev/null +++ b/skillclaw/dashboard_server.py @@ -0,0 +1,654 @@ +""" +FastAPI dashboard service for SkillClaw. +""" + +from __future__ import annotations + +import json +import logging +from contextlib import asynccontextmanager +from pathlib import Path +from typing import Any + +import httpx +import uvicorn +from fastapi import Body, FastAPI, HTTPException +from fastapi.responses import FileResponse +from fastapi.staticfiles import StaticFiles + +from .config import SkillClawConfig +from .dashboard_ingest import build_dashboard_snapshot +from .dashboard_store import DashboardStore +from .skill_hub import SkillHub + +logger = logging.getLogger(__name__) + + +def _assets_dir() -> Path: + return Path(__file__).with_name("dashboard_assets") + + +def _build_skill_filter(config: SkillClawConfig, *, no_filter: bool = False) -> dict[str, Any] | None: + if no_filter: + return None + stats_path = Path(config.skills_dir).expanduser() / "skill_stats.json" + if not stats_path.is_file(): + return None + try: + stats = json.loads(stats_path.read_text(encoding="utf-8")) + except Exception: + return None + if not isinstance(stats, dict): + return None + return { + "stats": stats, + "min_injections": int(config.sharing_push_min_injections or 0), + "min_effectiveness": float(config.sharing_push_min_effectiveness or 0.0), + } + + +def _sharing_backend(config: SkillClawConfig) -> str: + backend = str(config.sharing_backend or "").strip().lower() + if backend: + return backend + if config.sharing_local_root: + return "local" + if config.sharing_bucket or config.sharing_endpoint: + return "s3" + return "" + + +def _sharing_target(config: SkillClawConfig) -> str: + backend = _sharing_backend(config) + if backend == "local": + return f"local:{config.sharing_local_root}/{config.sharing_group_id}" + if config.sharing_bucket: + return f"{backend}:{config.sharing_bucket}/{config.sharing_group_id}" + return f"{backend}:{config.sharing_group_id}" + + +def _require_sharing_hub(config: SkillClawConfig) -> SkillHub: + if not config.sharing_enabled: + raise ValueError("skill sharing is not enabled in the current config") + backend = _sharing_backend(config) + if backend == "local" and not config.sharing_local_root: + raise ValueError("local sharing backend requires sharing_local_root") + if backend == "s3" and not config.sharing_bucket: + raise ValueError("s3 sharing backend requires sharing_bucket") + if backend == "oss" and (not config.sharing_bucket or not config.sharing_endpoint): + raise ValueError("oss sharing backend requires sharing_bucket and sharing_endpoint") + if not backend: + raise ValueError("sharing backend is not configured") + return SkillHub.from_config(config) + + +def _local_sessions_from_snapshot(snapshot: dict[str, Any]) -> list[dict[str, Any]]: + return [ + item + for item in (snapshot.get("sessions") or []) + if str(item.get("source", "") or "") == "local" + ] + + +def _normalize_selection(items: Any, *, field_name: str) -> list[str] | None: + if items is None: + return None + if not isinstance(items, list): + raise ValueError(f"'{field_name}' must be a list of strings") + normalized: list[str] = [] + seen: set[str] = set() + for item in items: + value = str(item or "").strip() + if not value or value in seen: + continue + normalized.append(value) + seen.add(value) + return normalized + + +class DashboardService: + """Owns dashboard snapshot sync, queries, and operations.""" + + def __init__(self, config: SkillClawConfig) -> None: + self.config = config + self.store = DashboardStore(config.dashboard_db_path) + + def sync(self) -> dict[str, Any]: + snapshot = build_dashboard_snapshot(self.config) + summary = self.store.replace_snapshot(snapshot) + return { + "summary": summary, + "overview": self.store.get_overview(), + } + + def _embedded_evolve_server(self): + from evolve_server.core.config import EvolveServerConfig + from evolve_server.engines.workflow import EvolveServer + from .validation_store import ValidationStore + + evolve_config = EvolveServerConfig.from_skillclaw_config(self.config) + try: + validation_store = ValidationStore.from_config(self.config) + if validation_store.list_jobs(): + evolve_config.publish_mode = "validated" + evolve_config.__post_init__() + except Exception: + pass + return EvolveServer(evolve_config) + + def pull_skills(self, *, skill_names: list[str] | None = None) -> dict[str, Any]: + hub = _require_sharing_hub(self.config) + selection = list(skill_names or []) + if selection: + result = hub.pull_skills( + self.config.skills_dir, + mirror=False, + include_names=selection, + ) + else: + result = hub.pull_skills(self.config.skills_dir) + sync_result = self.sync() + return { + "operation": "pull", + "target": _sharing_target(self.config), + "selection": { + "mode": "selected" if selection else "all", + "requested": selection, + "count": len(selection), + }, + "result": result, + "sync": sync_result["summary"], + } + + def push_skills(self, *, no_filter: bool = False) -> dict[str, Any]: + hub = _require_sharing_hub(self.config) + result = hub.push_skills( + self.config.skills_dir, + skill_filter=_build_skill_filter(self.config, no_filter=no_filter), + ) + sync_result = self.sync() + return { + "operation": "push", + "target": _sharing_target(self.config), + "result": result, + "sync": sync_result["summary"], + } + + def sync_skills(self) -> dict[str, Any]: + hub = _require_sharing_hub(self.config) + result = hub.sync_skills(self.config.skills_dir) + sync_result = self.sync() + return { + "operation": "sync", + "target": _sharing_target(self.config), + "result": result, + "sync": sync_result["summary"], + } + + def export_local_sessions(self, *, session_ids: list[str] | None = None) -> dict[str, Any]: + hub = _require_sharing_hub(self.config) + snapshot = build_dashboard_snapshot(self.config) + sessions = _local_sessions_from_snapshot(snapshot) + total_local_sessions = len(sessions) + session_lookup = { + str(item.get("session_id", "") or ""): item + for item in sessions + if str(item.get("session_id", "") or "") + } + selection = list(session_ids or []) + missing_ids: list[str] = [] + if selection: + selected_sessions: list[dict[str, Any]] = [] + for session_id in selection: + session = session_lookup.get(session_id) + if session is None: + missing_ids.append(session_id) + continue + selected_sessions.append(session) + sessions = selected_sessions + + exported = 0 + skipped = 0 + for session in sessions: + session_id = str(session.get("session_id", "") or "") + if not session_id: + continue + payload = { + "session_id": session_id, + "timestamp": str(session.get("timestamp", "") or ""), + "user_alias": str(session.get("user_alias", "") or "local"), + "num_turns": int(session.get("num_turns", 0) or 0), + "turns": list(session.get("turns") or []), + "source": "local-dashboard-export", + "outcome": str(session.get("outcome", "") or ""), + "outcome_reasons": list(session.get("outcome_reasons") or []), + } + key = f"{hub._prefix()}sessions/{session_id}.json" + content = json.dumps(payload, ensure_ascii=False, sort_keys=True) + + try: + existing = hub._bucket.get_object(key).read().decode("utf-8") + if existing == content: + skipped += 1 + continue + except Exception: + pass + + hub._bucket.put_object(key, content.encode("utf-8")) + exported += 1 + + sync_result = self.sync() + return { + "operation": "export-local-sessions", + "target": _sharing_target(self.config), + "selection": { + "mode": "selected" if selection else "all", + "requested": selection, + "count": len(selection), + }, + "result": { + "exported": exported, + "skipped": skipped, + "matched": len(sessions), + "requested": len(selection) if selection else len(sessions), + "missing": len(missing_ids), + "missing_ids": missing_ids, + "total_local_sessions": total_local_sessions, + }, + "sync": sync_result["summary"], + } + + def activate_skill_version(self, skill_id: str, *, target: str) -> dict[str, Any]: + skill = self.store.get_skill(skill_id) + if not isinstance(skill, dict): + raise ValueError("skill not found") + + skill_name = str(skill.get("name", "") or "").strip() + if not skill_name: + raise ValueError("skill name is missing") + + selected_target = str(target or "").strip() + if not selected_target: + raise ValueError("'target' is required") + + document = "" + label = "" + if selected_target == "local-current": + document = str(skill.get("skill_md") or skill.get("content") or "").strip() + label = "本地当前版本" + elif selected_target == "shared-current": + document = str(skill.get("remote_skill_md") or skill.get("remote_content") or "").strip() + label = "共享当前版本" + elif selected_target.startswith("shared-version:"): + raw_version = selected_target.split(":", 1)[1].strip() + try: + version_num = int(raw_version) + except ValueError as exc: + raise ValueError("invalid shared version target") from exc + versions = skill.get("versions") or [] + version_payload = next( + ( + item + for item in versions + if isinstance(item, dict) and int(item.get("version", 0) or 0) == version_num + ), + None, + ) + if not isinstance(version_payload, dict): + raise ValueError(f"shared version not found: v{version_num}") + document = str(version_payload.get("skill_md") or version_payload.get("content") or "").strip() + label = f"共享 v{version_num}" + else: + raise ValueError(f"unsupported activation target: {selected_target}") + + if not document: + raise ValueError("selected version does not include a document snapshot") + + local_path = Path(str(skill.get("local_path", "") or "")).expanduser() + if not str(local_path).strip() or local_path.name != "SKILL.md": + local_path = Path(self.config.skills_dir).expanduser() / skill_name / "SKILL.md" + local_path.parent.mkdir(parents=True, exist_ok=True) + local_path.write_text(document.rstrip() + "\n", encoding="utf-8") + + sync_result = self.sync() + return { + "operation": "activate-skill-version", + "skill_id": skill_id, + "skill_name": skill_name, + "target": selected_target, + "label": label, + "local_path": str(local_path), + "sync": sync_result["summary"], + } + + async def submit_validation_review( + self, + job_id: str, + *, + accepted: bool, + score: float | None = None, + notes: str = "", + auto_finalize: bool = True, + ) -> dict[str, Any]: + if not self.config.sharing_enabled: + raise ValueError("skill sharing is not enabled in the current config") + + from .validation_store import ValidationStore + + validation_store = ValidationStore.from_config(self.config) + job = validation_store.load_job(job_id) + if not isinstance(job, dict): + raise ValueError(f"validation job not found: {job_id}") + + raw_alias = str(self.config.sharing_user_alias or "").strip() + user_alias = raw_alias or "dashboard-review" + normalized_score = score + if normalized_score is None: + normalized_score = 0.95 if accepted else 0.05 + normalized_score = max(0.0, min(1.0, float(normalized_score))) + note_text = str(notes or "").strip() + + result_payload = { + "validator_mode": "manual", + "decision": "accept" if accepted else "reject", + "accepted": bool(accepted), + "score": normalized_score, + "threshold": float(job.get("min_score", 0.75) or 0.75), + "reason": note_text or f"Manual review submitted by {user_alias}.", + "notes": note_text, + "review_source": "dashboard", + } + validation_store.save_result(job_id, user_alias, result_payload) + + response = { + "operation": "submit-validation-review", + "job_id": job_id, + "user_alias": user_alias, + "result": result_payload, + } + + if auto_finalize and str(self.config.dashboard_evolve_server_url or "").strip(): + response["finalize"] = await self.trigger_evolve() + return response + + sync_result = self.sync() + response["sync"] = sync_result["summary"] + return response + + async def get_evolve_status(self) -> dict[str, Any]: + base_url = str(self.config.dashboard_evolve_server_url or "").strip() + if not base_url: + if not self.config.sharing_enabled: + return { + "configured": False, + "url": "", + } + try: + from evolve_server.storage.oss_helpers import list_session_keys + + server = self._embedded_evolve_server() + pending_keys = await server._call_storage(list_session_keys, server._bucket, server._prefix) + entries = server._id_registry.all_entries() + return { + "configured": True, + "url": "embedded://local-evolve", + "healthy": True, + "status": { + "running": False, + "pending_sessions": len(pending_keys), + "registered_skills": len(entries), + "skills": { + name: { + "skill_id": item.get("skill_id", ""), + "version": item.get("version", 0), + } + for name, item in entries.items() + }, + }, + } + except Exception as exc: + return { + "configured": True, + "url": "embedded://local-evolve", + "healthy": False, + "error": str(exc), + } + status_url = base_url.rstrip("/") + "/status" + try: + async with httpx.AsyncClient(timeout=10.0) as client: + response = await client.get(status_url) + response.raise_for_status() + payload = response.json() + return { + "configured": True, + "url": base_url, + "healthy": True, + "status": payload, + } + except Exception as exc: + return { + "configured": True, + "url": base_url, + "healthy": False, + "error": str(exc), + } + + async def trigger_evolve(self) -> dict[str, Any]: + base_url = str(self.config.dashboard_evolve_server_url or "").strip() + if not base_url: + if not self.config.sharing_enabled: + raise ValueError("skill sharing is not enabled in the current config") + + server = self._embedded_evolve_server() + result = await server.run_once() + sync_result = self.sync() + return { + "operation": "trigger-evolve", + "url": "embedded://local-evolve", + "result": result, + "sync": sync_result["summary"], + } + trigger_url = base_url.rstrip("/") + "/trigger" + async with httpx.AsyncClient(timeout=300.0) as client: + response = await client.post(trigger_url) + response.raise_for_status() + sync_result = self.sync() + return { + "operation": "trigger-evolve", + "url": trigger_url, + "result": response.json(), + "sync": sync_result["summary"], + } + + +def create_dashboard_app(config: SkillClawConfig) -> FastAPI: + service = DashboardService(config) + assets_dir = _assets_dir() + + @asynccontextmanager + async def lifespan(app: FastAPI): + service.store.initialize() + if config.dashboard_sync_on_start: + try: + service.sync() + except Exception: + logger.exception("[Dashboard] initial sync failed") + app.state.dashboard_service = service + yield + + app = FastAPI(title="SkillClaw Dashboard", lifespan=lifespan) + app.mount("/assets", StaticFiles(directory=assets_dir), name="assets") + + @app.get("/") + async def dashboard_index(): + return FileResponse(assets_dir / "index.html") + + @app.get("/api/v1/health") + async def health(): + return { + "status": "ok", + "db_path": service.store.db_path, + "meta": service.store.get_meta(), + } + + @app.get("/api/v1/overview") + async def overview(): + return service.store.get_overview() + + @app.get("/api/v1/skills") + async def list_skills( + search: str = "", + category: str = "", + source: str = "", + limit: int = 500, + ): + return { + "items": service.store.list_skills( + search=search.strip(), + category=category.strip(), + source=source.strip(), + limit=limit, + ) + } + + @app.get("/api/v1/skills/{skill_id}") + async def get_skill(skill_id: str): + payload = service.store.get_skill(skill_id) + if payload is None: + raise HTTPException(status_code=404, detail="skill not found") + return payload + + @app.post("/api/v1/skills/{skill_id}/activate") + async def activate_skill(skill_id: str, payload: dict[str, Any] | None = Body(default=None)): + try: + body = payload or {} + target = str(body.get("target", "") or "").strip() + if not target: + raise ValueError("'target' is required") + return service.activate_skill_version(skill_id, target=target) + except Exception as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + + @app.get("/api/v1/sessions") + async def list_sessions( + skill_id: str = "", + search: str = "", + limit: int = 200, + ): + return { + "items": service.store.list_sessions( + skill_id=skill_id.strip(), + search=search.strip(), + limit=limit, + ) + } + + @app.get("/api/v1/sessions/{session_id}") + async def get_session(session_id: str): + payload = service.store.get_session(session_id) + if payload is None: + raise HTTPException(status_code=404, detail="session not found") + return payload + + @app.get("/api/v1/validation/jobs") + async def validation_jobs(status: str = "", limit: int = 200): + return { + "items": service.store.list_validation_jobs( + status=status.strip(), + limit=limit, + ) + } + + @app.get("/api/v1/evolve/status") + async def evolve_status(): + return await service.get_evolve_status() + + @app.post("/api/v1/sync") + async def sync_projection(): + return service.sync() + + @app.post("/api/v1/ops/pull") + async def pull_skills(payload: dict[str, Any] | None = Body(default=None)): + try: + body = payload or {} + raw_skill_names = body.get("skill_names") + skill_names = _normalize_selection(raw_skill_names, field_name="skill_names") + if raw_skill_names is not None and not skill_names: + raise ValueError("'skill_names' must contain at least one non-empty value") + return service.pull_skills(skill_names=skill_names) + except Exception as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + + @app.post("/api/v1/ops/push") + async def push_skills(payload: dict[str, Any] | None = Body(default=None)): + try: + return service.push_skills(no_filter=bool((payload or {}).get("no_filter", False))) + except Exception as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + + @app.post("/api/v1/ops/sync") + async def sync_skills(): + try: + return service.sync_skills() + except Exception as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + + @app.post("/api/v1/ops/export-sessions") + async def export_sessions(payload: dict[str, Any] | None = Body(default=None)): + try: + body = payload or {} + raw_session_ids = body.get("session_ids") + session_ids = _normalize_selection(raw_session_ids, field_name="session_ids") + if raw_session_ids is not None and not session_ids: + raise ValueError("'session_ids' must contain at least one non-empty value") + return service.export_local_sessions(session_ids=session_ids) + except Exception as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + + @app.post("/api/v1/ops/trigger-evolve") + async def trigger_evolve(): + try: + return await service.trigger_evolve() + except Exception as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + + @app.post("/api/v1/validation/jobs/{job_id}/review") + async def submit_review(job_id: str, payload: dict[str, Any] | None = Body(default=None)): + body = payload or {} + accepted = body.get("accepted") + if not isinstance(accepted, bool): + raise HTTPException(status_code=400, detail="'accepted' must be a boolean") + + raw_score = body.get("score") + score: float | None = None + if raw_score is not None and raw_score != "": + try: + score = float(raw_score) + except (TypeError, ValueError) as exc: + raise HTTPException(status_code=400, detail="'score' must be a number in [0, 1]") from exc + if score < 0.0 or score > 1.0: + raise HTTPException(status_code=400, detail="'score' must be a number in [0, 1]") + + try: + return await service.submit_validation_review( + job_id, + accepted=accepted, + score=score, + notes=str(body.get("notes", "") or ""), + auto_finalize=bool(body.get("auto_finalize", True)), + ) + except Exception as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + + return app + + +def serve_dashboard(config: SkillClawConfig) -> None: + """Run the dashboard HTTP service.""" + app = create_dashboard_app(config) + uvicorn.run( + app, + host=str(config.dashboard_host or "127.0.0.1"), + port=int(config.dashboard_port or 3788), + log_level="info", + ) diff --git a/skillclaw/dashboard_store.py b/skillclaw/dashboard_store.py new file mode 100644 index 0000000..6a8733c --- /dev/null +++ b/skillclaw/dashboard_store.py @@ -0,0 +1,664 @@ +""" +SQLite-backed projection store for the SkillClaw dashboard. +""" + +from __future__ import annotations + +import json +import sqlite3 +from pathlib import Path +from typing import Any + + +def _json_dumps(value: Any) -> str: + return json.dumps(value, ensure_ascii=False) + + +def _json_loads(raw: str | None, default: Any) -> Any: + if not raw: + return default + try: + return json.loads(raw) + except json.JSONDecodeError: + return default + + +class DashboardStore: + """Materialized dashboard snapshot stored in SQLite.""" + + def __init__(self, db_path: str) -> None: + self.db_path = str(Path(db_path).expanduser()) + + def _connect(self) -> sqlite3.Connection: + path = Path(self.db_path) + path.parent.mkdir(parents=True, exist_ok=True) + conn = sqlite3.connect(path, timeout=30) + conn.row_factory = sqlite3.Row + return conn + + def initialize(self) -> None: + with self._connect() as conn: + conn.executescript( + """ + PRAGMA journal_mode=WAL; + + CREATE TABLE IF NOT EXISTS meta ( + key TEXT PRIMARY KEY, + value TEXT NOT NULL + ); + + CREATE TABLE IF NOT EXISTS skills ( + skill_id TEXT PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + description TEXT NOT NULL DEFAULT '', + category TEXT NOT NULL DEFAULT 'general', + source TEXT NOT NULL DEFAULT 'local', + has_local INTEGER NOT NULL DEFAULT 0, + has_remote INTEGER NOT NULL DEFAULT 0, + local_path TEXT NOT NULL DEFAULT '', + uploaded_at TEXT NOT NULL DEFAULT '', + uploaded_by TEXT NOT NULL DEFAULT '', + updated_at TEXT NOT NULL DEFAULT '', + current_version INTEGER NOT NULL DEFAULT 0, + current_sha TEXT NOT NULL DEFAULT '', + local_inject_count INTEGER NOT NULL DEFAULT 0, + observed_injection_count INTEGER NOT NULL DEFAULT 0, + read_count INTEGER NOT NULL DEFAULT 0, + modified_count INTEGER NOT NULL DEFAULT 0, + session_count INTEGER NOT NULL DEFAULT 0, + effectiveness REAL NOT NULL DEFAULT 0.0, + positive_count INTEGER NOT NULL DEFAULT 0, + negative_count INTEGER NOT NULL DEFAULT 0, + neutral_count INTEGER NOT NULL DEFAULT 0, + content TEXT NOT NULL DEFAULT '', + raw_json TEXT NOT NULL DEFAULT '{}' + ); + + CREATE INDEX IF NOT EXISTS idx_skills_name ON skills(name); + CREATE INDEX IF NOT EXISTS idx_skills_category ON skills(category); + CREATE INDEX IF NOT EXISTS idx_skills_source ON skills(source); + CREATE INDEX IF NOT EXISTS idx_skills_sessions ON skills(session_count DESC, observed_injection_count DESC); + + CREATE TABLE IF NOT EXISTS skill_versions ( + skill_id TEXT NOT NULL, + version INTEGER NOT NULL, + content_sha TEXT NOT NULL DEFAULT '', + action TEXT NOT NULL DEFAULT '', + timestamp TEXT NOT NULL DEFAULT '', + raw_json TEXT NOT NULL DEFAULT '{}', + PRIMARY KEY (skill_id, version) + ); + + CREATE INDEX IF NOT EXISTS idx_skill_versions_timestamp ON skill_versions(skill_id, timestamp DESC); + + CREATE TABLE IF NOT EXISTS sessions ( + session_id TEXT PRIMARY KEY, + timestamp TEXT NOT NULL DEFAULT '', + user_alias TEXT NOT NULL DEFAULT '', + num_turns INTEGER NOT NULL DEFAULT 0, + avg_prm_score REAL, + skill_names_json TEXT NOT NULL DEFAULT '[]', + prompt_preview TEXT NOT NULL DEFAULT '', + response_preview TEXT NOT NULL DEFAULT '', + raw_json TEXT NOT NULL DEFAULT '{}' + ); + + CREATE INDEX IF NOT EXISTS idx_sessions_timestamp ON sessions(timestamp DESC); + CREATE INDEX IF NOT EXISTS idx_sessions_user_alias ON sessions(user_alias); + + CREATE TABLE IF NOT EXISTS session_skill_links ( + session_id TEXT NOT NULL, + skill_id TEXT NOT NULL, + skill_name TEXT NOT NULL DEFAULT '', + relation TEXT NOT NULL, + count INTEGER NOT NULL DEFAULT 0, + PRIMARY KEY (session_id, skill_id, relation) + ); + + CREATE INDEX IF NOT EXISTS idx_session_skill_links_skill ON session_skill_links(skill_id, relation); + CREATE INDEX IF NOT EXISTS idx_session_skill_links_session ON session_skill_links(session_id); + + CREATE TABLE IF NOT EXISTS validation_jobs ( + job_id TEXT PRIMARY KEY, + created_at TEXT NOT NULL DEFAULT '', + skill_name TEXT NOT NULL DEFAULT '', + proposed_action TEXT NOT NULL DEFAULT '', + status TEXT NOT NULL DEFAULT '', + result_count INTEGER NOT NULL DEFAULT 0, + accepted_count INTEGER NOT NULL DEFAULT 0, + rejected_count INTEGER NOT NULL DEFAULT 0, + mean_score REAL, + raw_json TEXT NOT NULL DEFAULT '{}' + ); + + CREATE INDEX IF NOT EXISTS idx_validation_jobs_status ON validation_jobs(status); + CREATE INDEX IF NOT EXISTS idx_validation_jobs_created ON validation_jobs(created_at DESC); + """ + ) + + def replace_snapshot(self, snapshot: dict[str, Any]) -> dict[str, Any]: + self.initialize() + with self._connect() as conn: + conn.execute("DELETE FROM meta") + conn.execute("DELETE FROM skill_versions") + conn.execute("DELETE FROM session_skill_links") + conn.execute("DELETE FROM sessions") + conn.execute("DELETE FROM validation_jobs") + conn.execute("DELETE FROM skills") + + for skill in snapshot.get("skills") or []: + conn.execute( + """ + INSERT INTO skills ( + skill_id, + name, + description, + category, + source, + has_local, + has_remote, + local_path, + uploaded_at, + uploaded_by, + updated_at, + current_version, + current_sha, + local_inject_count, + observed_injection_count, + read_count, + modified_count, + session_count, + effectiveness, + positive_count, + negative_count, + neutral_count, + content, + raw_json + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + str(skill.get("skill_id", "") or ""), + str(skill.get("name", "") or ""), + str(skill.get("description", "") or ""), + str(skill.get("category", "general") or "general"), + str(skill.get("source", "local") or "local"), + 1 if skill.get("has_local") else 0, + 1 if skill.get("has_remote") else 0, + str(skill.get("local_path", "") or ""), + str(skill.get("uploaded_at", "") or ""), + str(skill.get("uploaded_by", "") or ""), + str(skill.get("updated_at", "") or ""), + int(skill.get("current_version", 0) or 0), + str(skill.get("current_sha", "") or ""), + int(skill.get("local_inject_count", 0) or 0), + int(skill.get("observed_injection_count", 0) or 0), + int(skill.get("read_count", 0) or 0), + int(skill.get("modified_count", 0) or 0), + int(skill.get("session_count", 0) or 0), + float(skill.get("effectiveness", 0.0) or 0.0), + int(skill.get("positive_count", 0) or 0), + int(skill.get("negative_count", 0) or 0), + int(skill.get("neutral_count", 0) or 0), + str(skill.get("skill_md", "") or ""), + _json_dumps(skill), + ), + ) + for version in skill.get("versions") or []: + conn.execute( + """ + INSERT INTO skill_versions ( + skill_id, + version, + content_sha, + action, + timestamp, + raw_json + ) VALUES (?, ?, ?, ?, ?, ?) + """, + ( + str(skill.get("skill_id", "") or ""), + int(version.get("version", 0) or 0), + str(version.get("content_sha", "") or ""), + str(version.get("action", "") or ""), + str(version.get("timestamp", "") or ""), + _json_dumps(version), + ), + ) + + for session in snapshot.get("sessions") or []: + conn.execute( + """ + INSERT INTO sessions ( + session_id, + timestamp, + user_alias, + num_turns, + avg_prm_score, + skill_names_json, + prompt_preview, + response_preview, + raw_json + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + str(session.get("session_id", "") or ""), + str(session.get("timestamp", "") or ""), + str(session.get("user_alias", "") or ""), + int(session.get("num_turns", 0) or 0), + float(session["avg_prm_score"]) if session.get("avg_prm_score") is not None else None, + _json_dumps(session.get("skill_names") or []), + str(session.get("prompt_preview", "") or ""), + str(session.get("response_preview", "") or ""), + _json_dumps(session), + ), + ) + + for link in snapshot.get("session_skill_links") or []: + conn.execute( + """ + INSERT INTO session_skill_links ( + session_id, + skill_id, + skill_name, + relation, + count + ) VALUES (?, ?, ?, ?, ?) + """, + ( + str(link.get("session_id", "") or ""), + str(link.get("skill_id", "") or ""), + str(link.get("skill_name", "") or ""), + str(link.get("relation", "") or ""), + int(link.get("count", 0) or 0), + ), + ) + + for job in snapshot.get("validation_jobs") or []: + conn.execute( + """ + INSERT INTO validation_jobs ( + job_id, + created_at, + skill_name, + proposed_action, + status, + result_count, + accepted_count, + rejected_count, + mean_score, + raw_json + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + str(job.get("job_id", "") or ""), + str(job.get("created_at", "") or ""), + str(job.get("skill_name", "") or ""), + str(job.get("proposed_action", "") or ""), + str(job.get("status", "") or ""), + int(job.get("result_count", 0) or 0), + int(job.get("accepted_count", 0) or 0), + int(job.get("rejected_count", 0) or 0), + float(job["mean_score"]) if job.get("mean_score") is not None else None, + _json_dumps(job), + ), + ) + + meta = dict(snapshot.get("meta") or {}) + meta["generated_at"] = str(snapshot.get("generated_at", "") or "") + meta["skill_count"] = len(snapshot.get("skills") or []) + meta["session_count"] = len(snapshot.get("sessions") or []) + meta["validation_job_count"] = len(snapshot.get("validation_jobs") or []) + for key, value in meta.items(): + conn.execute( + "INSERT INTO meta (key, value) VALUES (?, ?)", + (str(key), _json_dumps(value)), + ) + + return { + "generated_at": str(snapshot.get("generated_at", "") or ""), + "skills": len(snapshot.get("skills") or []), + "sessions": len(snapshot.get("sessions") or []), + "validation_jobs": len(snapshot.get("validation_jobs") or []), + "warnings": list((snapshot.get("meta") or {}).get("warnings") or []), + } + + def get_meta(self) -> dict[str, Any]: + self.initialize() + with self._connect() as conn: + rows = conn.execute("SELECT key, value FROM meta ORDER BY key").fetchall() + return { + str(row["key"]): _json_loads(row["value"], row["value"]) + for row in rows + } + + def _skill_summary_from_row(self, row: sqlite3.Row) -> dict[str, Any]: + return { + "skill_id": row["skill_id"], + "name": row["name"], + "description": row["description"], + "category": row["category"], + "source": row["source"], + "has_local": bool(row["has_local"]), + "has_remote": bool(row["has_remote"]), + "local_path": row["local_path"], + "uploaded_at": row["uploaded_at"], + "uploaded_by": row["uploaded_by"], + "updated_at": row["updated_at"], + "current_version": row["current_version"], + "current_sha": row["current_sha"], + "local_inject_count": row["local_inject_count"], + "observed_injection_count": row["observed_injection_count"], + "read_count": row["read_count"], + "modified_count": row["modified_count"], + "session_count": row["session_count"], + "effectiveness": row["effectiveness"], + "positive_count": row["positive_count"], + "negative_count": row["negative_count"], + "neutral_count": row["neutral_count"], + } + + def list_skills( + self, + *, + search: str = "", + category: str = "", + source: str = "", + limit: int = 500, + ) -> list[dict[str, Any]]: + self.initialize() + clauses: list[str] = [] + params: list[Any] = [] + if search: + clauses.append("(name LIKE ? OR description LIKE ?)") + needle = f"%{search}%" + params.extend([needle, needle]) + if category: + clauses.append("category = ?") + params.append(category) + if source: + clauses.append("source = ?") + params.append(source) + + query = """ + SELECT * FROM skills + """ + if clauses: + query += " WHERE " + " AND ".join(clauses) + query += """ + ORDER BY + session_count DESC, + observed_injection_count DESC, + local_inject_count DESC, + name ASC + LIMIT ? + """ + params.append(max(1, int(limit))) + + with self._connect() as conn: + rows = conn.execute(query, params).fetchall() + return [self._skill_summary_from_row(row) for row in rows] + + def get_skill(self, skill_id: str) -> dict[str, Any] | None: + self.initialize() + with self._connect() as conn: + row = conn.execute("SELECT * FROM skills WHERE skill_id = ?", (skill_id,)).fetchone() + if row is None: + return None + payload = _json_loads(row["raw_json"], {}) + payload.update(self._skill_summary_from_row(row)) + version_rows = conn.execute( + """ + SELECT raw_json + FROM skill_versions + WHERE skill_id = ? + ORDER BY version DESC, timestamp DESC + """, + (skill_id,), + ).fetchall() + related_sessions = conn.execute( + """ + SELECT + s.session_id, + s.timestamp, + s.user_alias, + s.num_turns, + s.avg_prm_score, + s.prompt_preview, + s.response_preview, + SUM(CASE WHEN l.relation = 'injected' THEN l.count ELSE 0 END) AS injected_count, + SUM(CASE WHEN l.relation = 'read' THEN l.count ELSE 0 END) AS read_count, + SUM(CASE WHEN l.relation = 'modified' THEN l.count ELSE 0 END) AS modified_count + FROM session_skill_links AS l + JOIN sessions AS s + ON s.session_id = l.session_id + WHERE l.skill_id = ? + GROUP BY + s.session_id, + s.timestamp, + s.user_alias, + s.num_turns, + s.avg_prm_score, + s.prompt_preview, + s.response_preview + ORDER BY s.timestamp DESC, s.session_id DESC + LIMIT 50 + """, + (skill_id,), + ).fetchall() + + payload["versions"] = [_json_loads(item["raw_json"], {}) for item in version_rows] + payload["related_sessions"] = [ + { + "session_id": item["session_id"], + "timestamp": item["timestamp"], + "user_alias": item["user_alias"], + "num_turns": item["num_turns"], + "avg_prm_score": item["avg_prm_score"], + "prompt_preview": item["prompt_preview"], + "response_preview": item["response_preview"], + "injected_count": item["injected_count"], + "read_count": item["read_count"], + "modified_count": item["modified_count"], + } + for item in related_sessions + ] + return payload + + def list_sessions( + self, + *, + skill_id: str = "", + search: str = "", + limit: int = 200, + ) -> list[dict[str, Any]]: + self.initialize() + clauses: list[str] = [] + params: list[Any] = [] + query = "SELECT DISTINCT s.* FROM sessions AS s" + if skill_id: + query += " JOIN session_skill_links AS l ON l.session_id = s.session_id" + clauses.append("l.skill_id = ?") + params.append(skill_id) + if search: + needle = f"%{search}%" + clauses.append("(s.session_id LIKE ? OR s.user_alias LIKE ? OR s.prompt_preview LIKE ?)") + params.extend([needle, needle, needle]) + if clauses: + query += " WHERE " + " AND ".join(clauses) + query += " ORDER BY s.timestamp DESC, s.session_id DESC LIMIT ?" + params.append(max(1, int(limit))) + + with self._connect() as conn: + rows = conn.execute(query, params).fetchall() + items: list[dict[str, Any]] = [] + for row in rows: + payload = _json_loads(row["raw_json"], {}) + items.append( + { + "session_id": row["session_id"], + "timestamp": row["timestamp"], + "user_alias": row["user_alias"], + "num_turns": row["num_turns"], + "avg_prm_score": row["avg_prm_score"], + "skill_names": _json_loads(row["skill_names_json"], []), + "prompt_preview": row["prompt_preview"], + "response_preview": row["response_preview"], + "source": str(payload.get("source", "") or ""), + "outcome": str(payload.get("outcome", "") or ""), + } + ) + return items + + def get_session(self, session_id: str) -> dict[str, Any] | None: + self.initialize() + with self._connect() as conn: + row = conn.execute("SELECT * FROM sessions WHERE session_id = ?", (session_id,)).fetchone() + if row is None: + return None + payload = _json_loads(row["raw_json"], {}) + payload.update( + { + "session_id": row["session_id"], + "timestamp": row["timestamp"], + "user_alias": row["user_alias"], + "num_turns": row["num_turns"], + "avg_prm_score": row["avg_prm_score"], + "skill_names": _json_loads(row["skill_names_json"], []), + "prompt_preview": row["prompt_preview"], + "response_preview": row["response_preview"], + } + ) + link_rows = conn.execute( + """ + SELECT skill_id, skill_name, relation, count + FROM session_skill_links + WHERE session_id = ? + ORDER BY skill_name ASC, relation ASC + """, + (session_id,), + ).fetchall() + payload["links"] = [ + { + "skill_id": item["skill_id"], + "skill_name": item["skill_name"], + "relation": item["relation"], + "count": item["count"], + } + for item in link_rows + ] + return payload + + def list_validation_jobs( + self, + *, + status: str = "", + limit: int = 200, + ) -> list[dict[str, Any]]: + self.initialize() + query = "SELECT * FROM validation_jobs" + params: list[Any] = [] + if status: + query += " WHERE status = ?" + params.append(status) + query += " ORDER BY created_at DESC, job_id DESC LIMIT ?" + params.append(max(1, int(limit))) + with self._connect() as conn: + rows = conn.execute(query, params).fetchall() + return [ + { + "job_id": row["job_id"], + "created_at": row["created_at"], + "skill_name": row["skill_name"], + "proposed_action": row["proposed_action"], + "status": row["status"], + "result_count": row["result_count"], + "accepted_count": row["accepted_count"], + "rejected_count": row["rejected_count"], + "mean_score": row["mean_score"], + "details": _json_loads(row["raw_json"], {}), + } + for row in rows + ] + + def get_overview(self) -> dict[str, Any]: + self.initialize() + with self._connect() as conn: + counts = { + "skills": int(conn.execute("SELECT COUNT(*) FROM skills").fetchone()[0]), + "local_skills": int(conn.execute("SELECT COUNT(*) FROM skills WHERE has_local = 1").fetchone()[0]), + "shared_skills": int(conn.execute("SELECT COUNT(*) FROM skills WHERE has_remote = 1").fetchone()[0]), + "sessions": int(conn.execute("SELECT COUNT(*) FROM sessions").fetchone()[0]), + "validation_jobs": int(conn.execute("SELECT COUNT(*) FROM validation_jobs").fetchone()[0]), + "open_validation_jobs": int( + conn.execute( + "SELECT COUNT(*) FROM validation_jobs WHERE status IN ('pending', 'review')" + ).fetchone()[0] + ), + "local_injections": int( + conn.execute("SELECT COALESCE(SUM(local_inject_count), 0) FROM skills").fetchone()[0] + ), + "observed_injections": int( + conn.execute("SELECT COALESCE(SUM(observed_injection_count), 0) FROM skills").fetchone()[0] + ), + "observed_reads": int( + conn.execute("SELECT COALESCE(SUM(read_count), 0) FROM skills").fetchone()[0] + ), + "observed_modifications": int( + conn.execute("SELECT COALESCE(SUM(modified_count), 0) FROM skills").fetchone()[0] + ), + } + top_skills = conn.execute( + """ + SELECT * + FROM skills + ORDER BY + session_count DESC, + observed_injection_count DESC, + local_inject_count DESC, + name ASC + LIMIT 8 + """ + ).fetchall() + recent_sessions = conn.execute( + """ + SELECT * + FROM sessions + ORDER BY timestamp DESC, session_id DESC + LIMIT 8 + """ + ).fetchall() + categories = conn.execute( + """ + SELECT category, COUNT(*) AS count + FROM skills + GROUP BY category + ORDER BY count DESC, category ASC + """ + ).fetchall() + + return { + "counts": counts, + "top_skills": [self._skill_summary_from_row(row) for row in top_skills], + "recent_sessions": [ + { + "session_id": row["session_id"], + "timestamp": row["timestamp"], + "user_alias": row["user_alias"], + "num_turns": row["num_turns"], + "avg_prm_score": row["avg_prm_score"], + "skill_names": _json_loads(row["skill_names_json"], []), + "prompt_preview": row["prompt_preview"], + "source": str(_json_loads(row["raw_json"], {}).get("source", "") or ""), + "outcome": str(_json_loads(row["raw_json"], {}).get("outcome", "") or ""), + } + for row in recent_sessions + ], + "categories": [ + { + "category": row["category"], + "count": row["count"], + } + for row in categories + ], + "meta": self.get_meta(), + } diff --git a/skillclaw/skill_hub.py b/skillclaw/skill_hub.py index 5053e7f..a04351e 100644 --- a/skillclaw/skill_hub.py +++ b/skillclaw/skill_hub.py @@ -382,6 +382,7 @@ def pull_skills( skills_dir: str, mirror: bool = True, skip_names: Optional[Collection[str]] = None, + include_names: Optional[Collection[str]] = None, ) -> dict[str, Any]: """Mirror cloud skills to local directory with backup + rollback safety. @@ -396,6 +397,10 @@ def pull_skills( local extras). skip_names: Skill names to preserve from local disk during this pull. + include_names: + Optional subset of remote skill names to download. When provided, + pull is forced into incremental mode to avoid deleting unrelated + local skills. Returns: { @@ -411,18 +416,75 @@ def pull_skills( local_dirs_by_name = self._list_local_skill_dirs(skills_dir) local_skills = {name: dirs[-1] for name, dirs in local_dirs_by_name.items() if dirs} manifest = self._load_remote_manifest() - skip_set = {str(name or "").strip() for name in (skip_names or []) if str(name or "").strip()} + skip_set = { + str(name or "").strip() + for name in (skip_names or []) + if str(name or "").strip() + } + include_set = { + str(name or "").strip() + for name in (include_names or []) + if str(name or "").strip() + } + if include_set and mirror: + mirror = False + if include_set: + manifest = { + name: rec + for name, rec in manifest.items() + if name in include_set + } + missing_names = sorted(include_set - set(manifest)) + requested_count = len(include_set) + matched_remote = len(manifest) + + def _result( + *, + downloaded: int, + skipped: int, + deleted: int, + total_remote: int, + restored_from_backup: bool, + backup_dir: str, + ) -> dict[str, Any]: + payload: dict[str, Any] = { + "downloaded": downloaded, + "skipped": skipped, + "deleted": deleted, + "total_remote": total_remote, + "restored_from_backup": restored_from_backup, + "backup_dir": backup_dir, + } + if include_set: + payload.update( + { + "requested": requested_count, + "matched_remote": matched_remote, + "missing": len(missing_names), + "missing_names": missing_names, + } + ) + return payload if not manifest: # Empty/failed manifest is treated as no-op to avoid accidental wipe. - logger.warning("[SkillHub] remote manifest empty; skip mirror pull (downloaded=0 skipped=0 deleted=0)") - return { - "downloaded": 0, - "skipped": 0, - "deleted": 0, - "total_remote": 0, - "restored_from_backup": False, - "backup_dir": "", - } + if include_set: + logger.info( + "[SkillHub] none of the requested remote skills matched the manifest: %s", + ", ".join(missing_names) or "(empty request)", + ) + else: + logger.warning( + "[SkillHub] remote manifest empty; skip mirror pull " + "(downloaded=0 skipped=0 deleted=0)" + ) + return _result( + downloaded=0, + skipped=0, + deleted=0, + total_remote=0, + restored_from_backup=False, + backup_dir="", + ) downloaded = 0 skipped = 0 @@ -474,14 +536,14 @@ def pull_skills( skipped, len(manifest), ) - return { - "downloaded": downloaded, - "skipped": skipped, - "deleted": 0, - "total_remote": len(manifest), - "restored_from_backup": False, - "backup_dir": "", - } + return _result( + downloaded=downloaded, + skipped=skipped, + deleted=0, + total_remote=len(manifest), + restored_from_backup=False, + backup_dir="", + ) parent_dir = os.path.dirname(os.path.abspath(skills_dir)) base_name = os.path.basename(os.path.abspath(skills_dir)) @@ -496,14 +558,14 @@ def pull_skills( shutil.copytree(skills_dir, backup_dir) except Exception as e: logger.warning("[SkillHub] backup before pull failed: %s", e) - return { - "downloaded": 0, - "skipped": 0, - "deleted": 0, - "total_remote": len(manifest), - "restored_from_backup": False, - "backup_dir": "", - } + return _result( + downloaded=0, + skipped=0, + deleted=0, + total_remote=len(manifest), + restored_from_backup=False, + backup_dir="", + ) os.makedirs(staging_dir, exist_ok=True) resolved_targets: dict[str, str] = {} @@ -590,14 +652,14 @@ def pull_skills( except Exception as restore_err: logger.error("[SkillHub] backup restore failed: %s", restore_err) - return { - "downloaded": 0, - "skipped": 0, - "deleted": 0, - "total_remote": len(manifest), - "restored_from_backup": restored_from_backup, - "backup_dir": backup_dir, - } + return _result( + downloaded=0, + skipped=0, + deleted=0, + total_remote=len(manifest), + restored_from_backup=restored_from_backup, + backup_dir=backup_dir, + ) finally: if os.path.isdir(staging_dir): shutil.rmtree(staging_dir, ignore_errors=True) @@ -610,14 +672,14 @@ def pull_skills( len(manifest), ) self._prune_backups(backup_root, backup_prefix, keep=3) - return { - "downloaded": downloaded, - "skipped": skipped, - "deleted": deleted, - "total_remote": len(manifest), - "restored_from_backup": False, - "backup_dir": backup_dir, - } + return _result( + downloaded=downloaded, + skipped=skipped, + deleted=deleted, + total_remote=len(manifest), + restored_from_backup=False, + backup_dir=backup_dir, + ) # ------------------------------------------------------------------ # # List remote skills # diff --git a/tests/test_dashboard.py b/tests/test_dashboard.py new file mode 100644 index 0000000..774083e --- /dev/null +++ b/tests/test_dashboard.py @@ -0,0 +1,1339 @@ +from __future__ import annotations + +import hashlib +import json +import tempfile +import textwrap +import unittest +from pathlib import Path + +from fastapi.testclient import TestClient + +from skillclaw.config import SkillClawConfig +from skillclaw.dashboard_ingest import build_dashboard_snapshot +from skillclaw.dashboard_server import DashboardService, create_dashboard_app +from skillclaw.dashboard_store import DashboardStore + + +def _sha256_text(value: str) -> str: + return hashlib.sha256(value.encode("utf-8")).hexdigest() + + +def _skill_id(name: str) -> str: + return hashlib.sha256(name.encode("utf-8")).hexdigest()[:12] + + +def _skill_doc(name: str, description: str, body: str, *, category: str = "general") -> str: + return textwrap.dedent( + f"""\ + --- + name: {name} + description: "{description}" + category: {category} + --- + + # {name} + + {body} + """ + ) + + +def _history_entry(version: int, document: str, timestamp: str, action: str) -> dict[str, object]: + return { + "version": version, + "content_sha": _sha256_text(document), + "timestamp": timestamp, + "action": action, + "skill_md": document, + "content": document, + } + + +def _transcript_record(role: str, text: str) -> dict[str, object]: + payload = text + if role == "user": + payload = f"\n{text}\n" + return { + "role": role, + "message": { + "content": [ + { + "type": "text", + "text": payload, + } + ] + }, + } + + +class DashboardFixture: + def __init__(self) -> None: + self.tempdir = tempfile.TemporaryDirectory() + self.root = Path(self.tempdir.name) + self.skills_dir = self.root / "skills" + self.share_root = self.root / "share" + self.group_dir = self.share_root / "team-alpha" + self.db_path = self.root / "dashboard.sqlite3" + + self.local_docs = self._build_local_docs() + self.shared_docs = self._build_shared_docs() + + self._create_local_skills() + self._create_local_state() + self._create_local_records() + self._create_shared_snapshot() + + self.config = SkillClawConfig( + use_skills=True, + skills_dir=str(self.skills_dir), + record_dir=str(self.root / "records"), + sharing_enabled=True, + sharing_backend="local", + sharing_local_root=str(self.share_root), + sharing_group_id="team-alpha", + sharing_user_alias="tester", + dashboard_enabled=True, + dashboard_db_path=str(self.db_path), + dashboard_sync_on_start=True, + dashboard_include_shared=True, + dashboard_evolve_server_url="", + ) + + def cleanup(self) -> None: + self.tempdir.cleanup() + + def _write_json(self, path: Path, payload: object) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(payload, indent=2), encoding="utf-8") + + def _build_local_docs(self) -> dict[str, str]: + return { + "debug-notes": _skill_doc( + "debug-notes", + "Keep a compact running log while debugging.", + """\ + ## When to use + - When the failure mode keeps changing between retries. + - When you need a short breadcrumb trail before editing code. + + ## Workflow + 1. Record the failed assumption. + 2. Capture the last observable fact. + 3. State the next probe before making a patch. + """, + category="coding", + ), + "api-contract-checklist": _skill_doc( + "api-contract-checklist", + "Verify request, auth, and schema assumptions before patching API tests.", + """\ + ## Checklist + - Confirm auth headers and tenant routing. + - Check request and response schema drift. + - Verify fixture defaults before changing handlers. + """, + category="backend", + ), + "release-rollback-runbook": _skill_doc( + "release-rollback-runbook", + "Coordinate rollback checks during incident mitigation.", + """\ + ## Rollback guardrails + - Identify blast radius and freeze new writes. + - Verify migration compatibility before rollback. + - Keep a short operator handoff note after mitigation. + """, + category="ops", + ), + "incident-timeline": _skill_doc( + "incident-timeline", + "Summarize incident progression, impact window, and mitigation sequence.", + """\ + ## Timeline template + - Start with first customer-visible symptom. + - Keep timestamps in chronological order. + - Separate hypothesis, action, and observed outcome. + """, + category="ops", + ), + } + + def _build_shared_docs(self) -> dict[str, str]: + return { + "debug-notes": _skill_doc( + "debug-notes", + "Keep a compact running log while debugging.", + """\ + ## Shared practice + - Capture the failed assumption before editing files. + - After each retry, summarize what changed and what stayed invariant. + - End with one concrete next step instead of a generic note. + """, + category="coding", + ), + "incident-timeline": _skill_doc( + "incident-timeline", + "Summarize incident progression, impact window, and mitigation sequence.", + """\ + ## Shared practice + - Anchor the timeline on customer impact and service restoration. + - Record mitigation checkpoints, not every shell command. + - Close with one unresolved question for the next responder. + """, + category="ops", + ), + "release-rollback-runbook": _skill_doc( + "release-rollback-runbook", + "Coordinate rollback checks during incident mitigation.", + """\ + ## Shared rollback path + - Confirm release identifier, migration window, and affected tenants. + - Execute rollback in the least-coupled order. + - Validate alarms, dashboards, and customer traffic after recovery. + """, + category="ops", + ), + "sql-trace": _skill_doc( + "sql-trace", + "Trace SQL state transitions during debugging.", + """\ + ## Trace format + - Log query, bind parameters, row count, and transaction scope. + - Mark where state diverges from expectation. + - Keep application log references next to query traces. + """, + category="data_analysis", + ), + "prompt-risk-screener": _skill_doc( + "prompt-risk-screener", + "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", + """\ + ## Screening loop + - Classify policy-sensitive intent first. + - Separate ambiguity from deliberate jailbreak behavior. + - Recommend the smallest safe rewrite when blocking is not required. + """, + category="governance", + ), + "handoff-brief": _skill_doc( + "handoff-brief", + "Prepare a concise operator handoff after long debugging sessions.", + """\ + ## Handoff format + - Problem statement in one sentence. + - What changed, what remains risky, and what to verify next. + - Include owners, timestamps, and the next blocking question. + """, + category="operations", + ), + } + + def _create_local_skills(self) -> None: + local_stats = { + "debug-notes": { + "inject_count": 18, + "positive_count": 10, + "negative_count": 2, + "neutral_count": 6, + "last_injected_at": "2026-04-21T01:20:00Z", + "effectiveness": 0.79, + }, + "api-contract-checklist": { + "inject_count": 12, + "positive_count": 7, + "negative_count": 1, + "neutral_count": 4, + "last_injected_at": "2026-04-21T02:00:00Z", + "effectiveness": 0.82, + }, + "release-rollback-runbook": { + "inject_count": 5, + "positive_count": 2, + "negative_count": 1, + "neutral_count": 2, + "last_injected_at": "2026-04-20T23:30:00Z", + "effectiveness": 0.58, + }, + "incident-timeline": { + "inject_count": 9, + "positive_count": 5, + "negative_count": 1, + "neutral_count": 3, + "last_injected_at": "2026-04-20T23:10:00Z", + "effectiveness": 0.74, + }, + } + + for name, document in self.local_docs.items(): + skill_dir = self.skills_dir / name + skill_dir.mkdir(parents=True, exist_ok=True) + (skill_dir / "SKILL.md").write_text(document, encoding="utf-8") + + (self.skills_dir / "skill_stats.json").write_text( + json.dumps(local_stats, indent=2), + encoding="utf-8", + ) + + def _create_shared_snapshot(self) -> None: + skills_dir = self.group_dir / "skills" + sessions_dir = self.group_dir / "sessions" + validation_jobs_dir = self.group_dir / "validation_jobs" + validation_results_dir = self.group_dir / "validation_results" + validation_decisions_dir = self.group_dir / "validation_decisions" + + for path in (skills_dir, sessions_dir, validation_jobs_dir, validation_results_dir, validation_decisions_dir): + path.mkdir(parents=True, exist_ok=True) + + for name, document in self.shared_docs.items(): + skill_dir = skills_dir / name + skill_dir.mkdir(parents=True, exist_ok=True) + (skill_dir / "SKILL.md").write_text(document, encoding="utf-8") + + manifest = [ + { + "name": "debug-notes", + "description": "Keep a compact running log while debugging.", + "category": "coding", + "sha256": _sha256_text(self.shared_docs["debug-notes"]), + "uploaded_by": "alice", + "uploaded_at": "2026-04-20T09:30:00Z", + }, + { + "name": "incident-timeline", + "description": "Summarize incident progression, impact window, and mitigation sequence.", + "category": "ops", + "sha256": _sha256_text(self.shared_docs["incident-timeline"]), + "uploaded_by": "carol", + "uploaded_at": "2026-04-20T16:25:00Z", + }, + { + "name": "release-rollback-runbook", + "description": "Coordinate rollback checks during incident mitigation.", + "category": "ops", + "sha256": _sha256_text(self.shared_docs["release-rollback-runbook"]), + "uploaded_by": "dan", + "uploaded_at": "2026-04-20T17:20:00Z", + }, + { + "name": "sql-trace", + "description": "Trace SQL state transitions during debugging.", + "category": "data_analysis", + "sha256": _sha256_text(self.shared_docs["sql-trace"]), + "uploaded_by": "bob", + "uploaded_at": "2026-04-20T09:40:00Z", + }, + { + "name": "prompt-risk-screener", + "description": "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", + "category": "governance", + "sha256": _sha256_text(self.shared_docs["prompt-risk-screener"]), + "uploaded_by": "mia", + "uploaded_at": "2026-04-20T20:10:00Z", + }, + { + "name": "handoff-brief", + "description": "Prepare a concise operator handoff after long debugging sessions.", + "category": "operations", + "sha256": _sha256_text(self.shared_docs["handoff-brief"]), + "uploaded_by": "erin", + "uploaded_at": "2026-04-20T21:10:00Z", + }, + ] + (self.group_dir / "manifest.jsonl").write_text( + "\n".join(json.dumps(item) for item in manifest) + "\n", + encoding="utf-8", + ) + + registry = { + "debug-notes": { + "skill_id": _skill_id("debug-notes"), + "version": 3, + "content_sha": _sha256_text(self.shared_docs["debug-notes"]), + "history": [ + _history_entry(1, _skill_doc("debug-notes", "Keep a compact running log while debugging.", "Capture the failing assumption before editing any file.", category="coding"), "2026-04-18T08:00:00Z", "create"), + _history_entry(2, _skill_doc("debug-notes", "Keep a compact running log while debugging.", "Capture the failing assumption and note what changed after each retry.", category="coding"), "2026-04-19T08:15:00Z", "improve"), + _history_entry(3, self.shared_docs["debug-notes"], "2026-04-20T09:30:00Z", "improve"), + ], + }, + "incident-timeline": { + "skill_id": _skill_id("incident-timeline"), + "version": 2, + "content_sha": _sha256_text(self.shared_docs["incident-timeline"]), + "history": [ + _history_entry(1, _skill_doc("incident-timeline", "Summarize incident progression, impact window, and mitigation sequence.", "Track first impact, mitigation, and restore time.", category="ops"), "2026-04-19T12:00:00Z", "create"), + _history_entry(2, self.shared_docs["incident-timeline"], "2026-04-20T16:25:00Z", "improve"), + ], + }, + "release-rollback-runbook": { + "skill_id": _skill_id("release-rollback-runbook"), + "version": 2, + "content_sha": _sha256_text(self.shared_docs["release-rollback-runbook"]), + "history": [ + _history_entry(1, _skill_doc("release-rollback-runbook", "Coordinate rollback checks during incident mitigation.", "Confirm rollback owner and migration compatibility.", category="ops"), "2026-04-19T19:30:00Z", "create"), + _history_entry(2, self.shared_docs["release-rollback-runbook"], "2026-04-20T17:20:00Z", "improve"), + ], + }, + "sql-trace": { + "skill_id": _skill_id("sql-trace"), + "version": 2, + "content_sha": _sha256_text(self.shared_docs["sql-trace"]), + "history": [ + _history_entry(1, _skill_doc("sql-trace", "Trace SQL state transitions during debugging.", "Log query text, parameters, and row counts.", category="data_analysis"), "2026-04-19T07:50:00Z", "create"), + _history_entry(2, self.shared_docs["sql-trace"], "2026-04-20T09:40:00Z", "improve"), + ], + }, + "prompt-risk-screener": { + "skill_id": _skill_id("prompt-risk-screener"), + "version": 4, + "content_sha": _sha256_text(self.shared_docs["prompt-risk-screener"]), + "history": [ + _history_entry(1, _skill_doc("prompt-risk-screener", "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", "Classify unsafe requests before suggesting changes.", category="governance"), "2026-04-18T06:15:00Z", "create"), + _history_entry(2, _skill_doc("prompt-risk-screener", "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", "Separate policy risk from simple ambiguity.", category="governance"), "2026-04-19T10:45:00Z", "improve"), + _history_entry(3, _skill_doc("prompt-risk-screener", "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", "Add a small safe-rewrite suggestion when blocking is not needed.", category="governance"), "2026-04-20T08:10:00Z", "improve"), + _history_entry(4, self.shared_docs["prompt-risk-screener"], "2026-04-20T20:10:00Z", "improve"), + ], + }, + "handoff-brief": { + "skill_id": _skill_id("handoff-brief"), + "version": 1, + "content_sha": _sha256_text(self.shared_docs["handoff-brief"]), + "history": [ + _history_entry(1, self.shared_docs["handoff-brief"], "2026-04-20T21:10:00Z", "create"), + ], + }, + } + (self.group_dir / "evolve_skill_registry.json").write_text( + json.dumps(registry, indent=2), + encoding="utf-8", + ) + + shared_sessions = [ + { + "session_id": "sess-104", + "source": "shared", + "timestamp": "2026-04-21T01:30:00Z", + "user_alias": "jane", + "num_turns": 3, + "outcome": "success", + "outcome_reasons": [ + "staging contract mismatch reproduced", + "shared handoff prepared for oncall", + ], + "turns": [ + { + "turn_num": 1, + "prompt_text": "Trace the flaky partner API contract failure.", + "response_text": "I will validate auth headers and collect a compact trace.", + "injected_skills": ["debug-notes", "api-contract-checklist"], + "read_skills": [{"skill_name": "handoff-brief"}], + "modified_skills": [], + "prm_score": 0.83, + }, + { + "turn_num": 2, + "prompt_text": "Patch the auth fixture and re-run the failing contract test.", + "response_text": "Header casing was wrong in the fixture; I updated the checklist and reran the contract path.", + "injected_skills": [], + "read_skills": [{"skill_name": "api-contract-checklist"}], + "modified_skills": [{"skill_name": "api-contract-checklist"}], + "prm_score": 0.78, + }, + { + "turn_num": 3, + "prompt_text": "Summarize the fix for the next responder.", + "response_text": "Recorded the mismatch, patch scope, and verification steps.", + "injected_skills": ["debug-notes"], + "read_skills": [], + "modified_skills": [], + "prm_score": 0.8, + }, + ], + }, + { + "session_id": "sess-103", + "source": "shared", + "timestamp": "2026-04-20T23:10:00Z", + "user_alias": "nora", + "num_turns": 2, + "outcome": "review", + "outcome_reasons": [ + "prompt policy boundary refined", + "candidate improvement queued for human review", + ], + "turns": [ + { + "turn_num": 1, + "prompt_text": "Screen a customer prompt that mixes benign analytics with policy-sensitive content.", + "response_text": "I will separate ambiguity from policy-sensitive intent first.", + "injected_skills": ["prompt-risk-screener"], + "read_skills": [], + "modified_skills": [], + "prm_score": 0.76, + }, + { + "turn_num": 2, + "prompt_text": "Rewrite the screening guidance to reduce false positives.", + "response_text": "Added a safe-rewrite suggestion path and explicit jailbreak detection notes.", + "injected_skills": [], + "read_skills": [{"skill_name": "prompt-risk-screener"}], + "modified_skills": [{"skill_name": "prompt-risk-screener"}], + "prm_score": 0.71, + }, + ], + }, + { + "session_id": "sess-102", + "source": "shared", + "timestamp": "2026-04-20T18:40:00Z", + "user_alias": "bob", + "num_turns": 2, + "outcome": "success", + "outcome_reasons": [ + "row count drift isolated to transaction scope", + ], + "turns": [ + { + "turn_num": 1, + "prompt_text": "Investigate why the SQL update did not persist.", + "response_text": "I will trace transaction boundaries and compare row counts.", + "injected_skills": ["sql-trace"], + "read_skills": [{"skill_name": "debug-notes"}], + "modified_skills": [], + "prm_score": 0.81, + }, + { + "turn_num": 2, + "prompt_text": "Patch the query logging and retry.", + "response_text": "Added query logging, confirmed the transaction scope, and updated the trace skill.", + "injected_skills": ["debug-notes"], + "read_skills": [{"skill_name": "sql-trace"}], + "modified_skills": [{"skill_name": "sql-trace"}], + "prm_score": 0.67, + }, + ], + }, + { + "session_id": "sess-101", + "source": "shared", + "timestamp": "2026-04-20T15:20:00Z", + "user_alias": "carol", + "num_turns": 2, + "outcome": "rollback", + "outcome_reasons": [ + "release toggled off after tenant write amplification", + "postmortem timeline requested", + ], + "turns": [ + { + "turn_num": 1, + "prompt_text": "Assemble an incident timeline for the tenant write spike.", + "response_text": "I will collect customer impact, mitigation steps, and restore time.", + "injected_skills": ["incident-timeline"], + "read_skills": [{"skill_name": "release-rollback-runbook"}], + "modified_skills": [], + "prm_score": 0.74, + }, + { + "turn_num": 2, + "prompt_text": "Prepare a rollback note for the release manager.", + "response_text": "Captured the rollback sequence and annotated the timeline with mitigation checkpoints.", + "injected_skills": ["release-rollback-runbook"], + "read_skills": [], + "modified_skills": [{"skill_name": "incident-timeline"}], + "prm_score": 0.69, + }, + ], + }, + { + "session_id": "sess-100", + "source": "shared", + "timestamp": "2026-04-20T11:00:00Z", + "user_alias": "alice", + "num_turns": 2, + "outcome": "success", + "outcome_reasons": [ + "query logging patch validated", + ], + "turns": [ + { + "turn_num": 1, + "prompt_text": "Investigate why the SQL update did not persist.", + "response_text": "I will inspect the transaction boundaries first.", + "injected_skills": ["debug-notes"], + "read_skills": [{"skill_name": "sql-trace"}], + "modified_skills": [], + "prm_score": 0.81, + }, + { + "turn_num": 2, + "prompt_text": "Patch the query logging and retry.", + "response_text": "Added query logging and replayed the failing path.", + "injected_skills": ["sql-trace"], + "read_skills": [], + "modified_skills": [{"skill_name": "sql-trace"}], + "prm_score": 0.67, + }, + ], + }, + ] + for payload in shared_sessions: + (sessions_dir / f"{payload['session_id']}.json").write_text( + json.dumps(payload, indent=2), + encoding="utf-8", + ) + + prompt_candidate_doc = _skill_doc( + "prompt-risk-screener", + "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", + """\ + ## Candidate change + - Add a small safe-rewrite path before hard blocking ambiguous prompts. + - Require an explicit jailbreak note when instructions conflict. + - Preserve a short rationale that a human reviewer can inspect later. + """, + category="governance", + ) + api_candidate_doc = _skill_doc( + "api-contract-checklist", + "Verify request, auth, and schema assumptions before patching API tests.", + """\ + ## Candidate checklist + - Verify auth, tenant routing, and fixture defaults before touching handlers. + - Compare contract fixtures against the latest generated schema. + - Record one rollback-safe verification step after the patch lands. + """, + category="backend", + ) + sql_candidate_doc = _skill_doc( + "sql-trace", + "Trace SQL state transitions during debugging.", + """\ + ## Candidate improvement + - Include transaction scope and row count deltas in the trace. + - Link the trace to the failing application log span. + - Mark the exact point where persistence diverged. + """, + category="data_analysis", + ) + rollback_candidate_doc = _skill_doc( + "release-rollback-runbook", + "Coordinate rollback checks during incident mitigation.", + """\ + ## Candidate rollback path + - Roll back immediately after migration lock acquisition. + - Skip secondary dashboard validation until after customer traffic stabilizes. + - Keep a terse operator note only if the incident stays open for more than 30 minutes. + """, + category="ops", + ) + + validation_jobs = [ + { + "job_id": "job-pending", + "created_at": "2026-04-21T01:40:00Z", + "candidate_skill_name": "prompt-risk-screener", + "proposed_action": "improve", + "session_ids": ["sess-103"], + "session_evidence": [ + { + "session_id": "sess-103", + "summary": "Reviewer flagged false positives when ambiguous prompts were screened too aggressively.", + "judge_overall_score": 0.71, + "avg_prm": 0.735, + } + ], + "candidate_skill": { + "name": "prompt-risk-screener", + "description": "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", + "category": "governance", + "skill_md": prompt_candidate_doc, + }, + "current_skill": { + "name": "prompt-risk-screener", + "description": "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", + "category": "governance", + "skill_md": self.shared_docs["prompt-risk-screener"], + }, + "min_results": 2, + "min_approvals": 1, + "min_score": 0.7, + "max_rejections": 1, + "rationale": "The current skill blocks too early on ambiguous prompts. A reviewer should confirm the safer rewrite path.", + }, + { + "job_id": "job-review", + "created_at": "2026-04-20T22:10:00Z", + "candidate_skill_name": "api-contract-checklist", + "proposed_action": "create", + "session_ids": ["local-004", "sess-104"], + "session_evidence": [ + { + "session_id": "local-004", + "summary": "Local run found an auth header casing mismatch before modifying handlers.", + "judge_overall_score": 0.84, + "avg_prm": 0.0, + }, + { + "session_id": "sess-104", + "summary": "Shared session confirmed the checklist generalized to a partner contract failure.", + "judge_overall_score": 0.8, + "avg_prm": 0.803, + }, + ], + "candidate_skill": { + "name": "api-contract-checklist", + "description": "Verify request, auth, and schema assumptions before patching API tests.", + "category": "backend", + "skill_md": api_candidate_doc, + }, + "min_results": 2, + "min_approvals": 2, + "min_score": 0.75, + "max_rejections": 0, + "rationale": "The checklist looks reusable, but reviewers disagree on whether it is still too API-specific.", + }, + { + "job_id": "job-rejected", + "created_at": "2026-04-20T19:45:00Z", + "candidate_skill_name": "release-rollback-runbook", + "proposed_action": "improve", + "session_ids": ["local-003", "sess-101"], + "session_evidence": [ + { + "session_id": "local-003", + "summary": "Local operator notes suggested a faster rollback shortcut.", + "judge_overall_score": 0.42, + "avg_prm": 0.0, + }, + { + "session_id": "sess-101", + "summary": "Shared incident replay showed the shortcut skipped validation steps needed by oncall.", + "judge_overall_score": 0.35, + "avg_prm": 0.715, + }, + ], + "candidate_skill": { + "name": "release-rollback-runbook", + "description": "Coordinate rollback checks during incident mitigation.", + "category": "ops", + "skill_md": rollback_candidate_doc, + }, + "current_skill": { + "name": "release-rollback-runbook", + "description": "Coordinate rollback checks during incident mitigation.", + "category": "ops", + "skill_md": self.shared_docs["release-rollback-runbook"], + }, + "min_results": 2, + "min_approvals": 2, + "min_score": 0.7, + "max_rejections": 0, + "rationale": "The candidate removed validation checks that responders still need during rollback.", + }, + { + "job_id": "job-published", + "created_at": "2026-04-20T11:05:00Z", + "candidate_skill_name": "sql-trace", + "proposed_action": "improve", + "session_ids": ["sess-100", "sess-102"], + "session_evidence": [ + { + "session_id": "sess-100", + "summary": "Initial trace isolated the missing transaction boundary.", + "judge_overall_score": 0.83, + "avg_prm": 0.74, + }, + { + "session_id": "sess-102", + "summary": "Improved trace format captured row count drift and application log correlation.", + "judge_overall_score": 0.88, + "avg_prm": 0.74, + }, + ], + "candidate_skill": { + "name": "sql-trace", + "description": "Trace SQL state transitions during debugging.", + "category": "data_analysis", + "skill_md": sql_candidate_doc, + }, + "current_skill": { + "name": "sql-trace", + "description": "Trace SQL state transitions during debugging.", + "category": "data_analysis", + "skill_md": self.shared_docs["sql-trace"], + }, + "min_results": 2, + "min_approvals": 2, + "min_score": 0.75, + "max_rejections": 0, + "rationale": "The new trace format consistently improved debugging quality across two SQL persistence failures.", + }, + ] + for payload in validation_jobs: + (validation_jobs_dir / f"{payload['job_id']}.json").write_text( + json.dumps(payload, indent=2), + encoding="utf-8", + ) + + validation_results = { + "job-review": [ + { + "job_id": "job-review", + "user_alias": "qa-ops", + "accepted": True, + "decision": "accept", + "score": 0.82, + "created_at": "2026-04-20T22:18:00Z", + "notes": "The checklist abstracts the contract debugging flow well.", + "validator_mode": "manual", + }, + { + "job_id": "job-review", + "user_alias": "sec-review", + "accepted": False, + "decision": "reject", + "score": 0.38, + "created_at": "2026-04-20T22:24:00Z", + "notes": "Still too tied to one partner auth flow.", + "validator_mode": "manual", + }, + ], + "job-rejected": [ + { + "job_id": "job-rejected", + "user_alias": "oncall-sre", + "accepted": False, + "decision": "reject", + "score": 0.41, + "created_at": "2026-04-20T19:52:00Z", + "notes": "The shortcut removes rollback validation that the operator still needs.", + "validator_mode": "manual", + }, + { + "job_id": "job-rejected", + "user_alias": "incident-commander", + "accepted": False, + "decision": "reject", + "score": 0.33, + "created_at": "2026-04-20T19:58:00Z", + "notes": "Too risky for a shared runbook.", + "validator_mode": "review", + }, + ], + "job-published": [ + { + "job_id": "job-published", + "user_alias": "alice", + "accepted": True, + "decision": "accept", + "score": 0.88, + "created_at": "2026-04-20T11:12:00Z", + "notes": "The trace format is clearer and reusable.", + "validator_mode": "manual", + }, + { + "job_id": "job-published", + "user_alias": "bob", + "accepted": True, + "decision": "accept", + "score": 0.91, + "created_at": "2026-04-20T11:13:30Z", + "notes": "Captures transaction scope and row count drift without adding noise.", + "validator_mode": "review", + }, + ], + } + for job_id, results in validation_results.items(): + result_dir = validation_results_dir / job_id + result_dir.mkdir(parents=True, exist_ok=True) + for result in results: + (result_dir / f"{result['user_alias']}.json").write_text( + json.dumps(result, indent=2), + encoding="utf-8", + ) + + validation_decisions = { + "job-published": { + "job_id": "job-published", + "status": "published", + "published_action": "improve", + "decided_at": "2026-04-20T11:14:00Z", + "reason": "Published after two positive reviews with mean score above threshold.", + }, + "job-rejected": { + "job_id": "job-rejected", + "status": "rejected", + "published_action": "improve", + "decided_at": "2026-04-20T20:05:00Z", + "reason": "Rejected because the rollback shortcut removed mandatory verification.", + }, + } + for job_id, decision in validation_decisions.items(): + (validation_decisions_dir / f"{job_id}.json").write_text( + json.dumps(decision, indent=2), + encoding="utf-8", + ) + + def _create_local_state(self) -> None: + state_dir = self.root / "state" + trajectories_dir = state_dir / "trajectories" + transcripts_root = self.root / "cursor_transcripts" + + trajectories_dir.mkdir(parents=True, exist_ok=True) + transcripts_root.mkdir(parents=True, exist_ok=True) + + conversations = [ + { + "session_id": "local-004", + "start_time": "2026-04-21T01:40:00Z", + "end_time": "2026-04-21T02:10:00Z", + "outcome": "success", + "active_skills": ["api-contract-checklist", "debug-notes"], + "outcome_reasons": [ + "auth header mismatch isolated before handler edits", + "schema fixture regenerated and verified", + ], + "turns": [ + ( + "Investigate why the partner API test still returns 401 after the fixture refactor.", + "I will validate the auth contract, capture the current request shape, and keep a short debug log before editing code.", + ), + ( + "Patch the fixture and summarize the exact verification steps.", + "The header casing was wrong in the fixture. I updated the contract checklist, reran the failing test, and recorded the verification path.", + ), + ], + }, + { + "session_id": "local-003", + "start_time": "2026-04-20T22:50:00Z", + "end_time": "2026-04-20T23:30:00Z", + "outcome": "rollback", + "active_skills": ["incident-timeline", "release-rollback-runbook"], + "outcome_reasons": [ + "tenant write amplification required rollback", + "operator notes needed a cleaner incident timeline", + ], + "turns": [ + ( + "Prepare a rollback note for the release that amplified tenant writes.", + "I will build a timeline first, then turn the rollback into a short runbook for the operator.", + ), + ( + "Summarize what remains risky after the rollback.", + "The rollback stabilized traffic, but secondary validation is still required for delayed jobs and dashboard lag.", + ), + ], + }, + { + "session_id": "local-002", + "start_time": "2026-04-20T20:50:00Z", + "end_time": "2026-04-20T21:25:00Z", + "outcome": "failure", + "active_skills": ["debug-notes"], + "outcome_reasons": [ + "state drift still not reproducible locally", + "next step is to instrument the retry worker", + ], + "turns": [ + ( + "Debug why the retry worker stops after one transient failure.", + "I will keep a compact note of each assumption and check whether the worker state changes between retries.", + ), + ( + "Summarize what is still unknown.", + "We know the retry lease expires too early, but we still need one more probe around worker heartbeats.", + ), + ], + }, + { + "session_id": "local-001", + "start_time": "2026-04-20T08:00:00Z", + "end_time": "2026-04-20T08:30:00Z", + "outcome": "failure", + "active_skills": ["debug-notes"], + "outcome_reasons": [ + "command failed: pytest tests/test_api.py", + "user correction: tests/conftest.py", + ], + "turns": [ + ( + "Please debug the failing API test.", + "I will inspect the failing test and trace the request path.", + ), + ( + "Now summarize the fix.", + "The issue was an auth header mismatch in the test fixture.", + ), + ], + }, + ] + + conv_offsets: dict[str, int] = {} + for conversation in conversations: + session_id = str(conversation["session_id"]) + transcript_dir = transcripts_root / session_id + transcript_dir.mkdir(parents=True, exist_ok=True) + transcript_path = transcript_dir / f"{session_id}.jsonl" + + transcript_lines: list[dict[str, object]] = [] + for user_text, assistant_text in conversation["turns"]: + transcript_lines.append(_transcript_record("user", user_text)) + transcript_lines.append(_transcript_record("assistant", assistant_text)) + transcript_path.write_text( + "\n".join(json.dumps(item) for item in transcript_lines) + "\n", + encoding="utf-8", + ) + conv_offsets[str(transcript_path)] = 0 + + self._write_json( + trajectories_dir / f"{session_id}.json", + { + "conversation_id": session_id, + "active_skills": conversation["active_skills"], + "outcome": conversation["outcome"], + "start_time": conversation["start_time"], + "end_time": conversation["end_time"], + "outcome_reasons": conversation["outcome_reasons"], + }, + ) + + self._write_json(state_dir / "conv_offsets.json", conv_offsets) + + def _create_local_records(self) -> None: + records_dir = self.root / "records" + records_dir.mkdir(parents=True, exist_ok=True) + + conversations = [ + { + "session_id": "local-005", + "turn": 1, + "timestamp": "2026-04-21 03:15:00", + "messages": [ + {"role": "system", "content": "Skill catalog injected"}, + { + "role": "user", + "content": "Summarize the retry-worker regression and keep the answer brief.", + }, + ], + "instruction_text": "Summarize the retry-worker regression and keep the answer brief.", + "prompt_text": "system: Skill catalog injected\n\nuser: Summarize the retry-worker regression and keep the answer brief.", + "response_text": "The worker exits after the first transient failure because the lease heartbeat stops renewing after the retry path resets its state.", + "tool_calls": [], + }, + { + "session_id": "local-005", + "turn": 2, + "timestamp": "2026-04-21 03:16:30", + "messages": [ + {"role": "system", "content": "Skill catalog injected"}, + { + "role": "user", + "content": "Now list the next two verification steps.", + }, + ], + "instruction_text": "Now list the next two verification steps.", + "prompt_text": "system: Skill catalog injected\n\nuser: Now list the next two verification steps.", + "response_text": "1. Capture lease-heartbeat timestamps across the retry boundary.\n2. Verify whether the worker resets its retry state before the heartbeat loop restarts.", + "tool_calls": [], + }, + ] + (records_dir / "conversations.jsonl").write_text( + "\n".join(json.dumps(item) for item in conversations) + "\n", + encoding="utf-8", + ) + + prm_scores = [ + { + "session_id": "local-005", + "turn": 1, + "score": 0.61, + "votes": [0.6, 0.61, 0.62], + }, + { + "session_id": "local-005", + "turn": 2, + "score": 0.67, + "votes": [0.65, 0.67, 0.69], + }, + ] + (records_dir / "prm_scores.jsonl").write_text( + "\n".join(json.dumps(item) for item in prm_scores) + "\n", + encoding="utf-8", + ) + + +class DashboardSnapshotTests(unittest.TestCase): + def setUp(self) -> None: + self.fixture = DashboardFixture() + + def tearDown(self) -> None: + self.fixture.cleanup() + + def test_snapshot_and_store_queries(self) -> None: + snapshot = build_dashboard_snapshot(self.fixture.config) + self.assertEqual(len(snapshot["skills"]), 7) + self.assertEqual(len(snapshot["sessions"]), 10) + self.assertEqual(len(snapshot["validation_jobs"]), 4) + self.assertEqual(snapshot["sessions"][0]["session_id"], "local-005") + self.assertEqual(snapshot["sessions"][0]["num_turns"], 2) + + store = DashboardStore(str(self.fixture.db_path)) + summary = store.replace_snapshot(snapshot) + self.assertEqual(summary["skills"], 7) + self.assertEqual(summary["sessions"], 10) + + overview = store.get_overview() + self.assertEqual(overview["counts"]["skills"], 7) + self.assertEqual(overview["counts"]["sessions"], 10) + self.assertEqual(overview["counts"]["validation_jobs"], 4) + self.assertEqual(overview["counts"]["open_validation_jobs"], 2) + + skills = store.list_skills() + self.assertEqual( + {item["name"] for item in skills}, + { + "api-contract-checklist", + "debug-notes", + "handoff-brief", + "incident-timeline", + "prompt-risk-screener", + "release-rollback-runbook", + "sql-trace", + }, + ) + debug_skill = next(item for item in skills if item["name"] == "debug-notes") + self.assertEqual(debug_skill["source"], "both") + self.assertEqual(debug_skill["local_inject_count"], 18) + self.assertEqual(debug_skill["session_count"], 6) + self.assertEqual(debug_skill["observed_injection_count"], 7) + + debug_detail = store.get_skill(debug_skill["skill_id"]) + self.assertIsNotNone(debug_detail) + self.assertGreaterEqual(len(debug_detail["versions"]), 3) + self.assertEqual(debug_detail["related_sessions"][0]["session_id"], "local-004") + + session_detail = store.get_session("sess-100") + self.assertIsNotNone(session_detail) + self.assertEqual(session_detail["num_turns"], 2) + self.assertEqual(len(session_detail["links"]), 4) + + local_session = store.get_session("local-001") + self.assertIsNotNone(local_session) + self.assertEqual(local_session["source"], "local") + self.assertEqual(local_session["outcome"], "failure") + self.assertEqual(len(local_session["turns"]), 2) + + record_session = store.get_session("local-005") + self.assertIsNotNone(record_session) + self.assertEqual(record_session["source"], "local") + self.assertEqual(record_session["num_turns"], 2) + self.assertEqual( + record_session["turns"][0]["prompt_text"], + "Summarize the retry-worker regression and keep the answer brief.", + ) + self.assertEqual(record_session["turns"][1]["prm_score"], 0.67) + + validation_jobs = store.list_validation_jobs() + statuses = {item["job_id"]: item["status"] for item in validation_jobs} + self.assertEqual(statuses["job-published"], "published") + self.assertEqual(statuses["job-pending"], "pending") + self.assertEqual(statuses["job-review"], "review") + self.assertEqual(statuses["job-rejected"], "rejected") + + def test_local_sessions_are_visible_without_sharing(self) -> None: + config = SkillClawConfig( + use_skills=True, + skills_dir=str(self.fixture.skills_dir), + record_dir=str(self.fixture.root / "records"), + sharing_enabled=False, + dashboard_enabled=True, + dashboard_db_path=str(self.fixture.root / "dashboard-local-only.sqlite3"), + dashboard_sync_on_start=True, + dashboard_include_shared=True, + ) + + snapshot = build_dashboard_snapshot(config) + self.assertEqual(len(snapshot["skills"]), 4) + self.assertEqual(len(snapshot["sessions"]), 5) + self.assertEqual(snapshot["sessions"][0]["session_id"], "local-005") + self.assertEqual(snapshot["sessions"][0]["source"], "local") + + def test_export_local_sessions_to_shared_storage(self) -> None: + service = DashboardService(self.fixture.config) + result = service.export_local_sessions() + self.assertEqual(result["result"]["exported"], 5) + exported_path = ( + self.fixture.share_root + / "team-alpha" + / "sessions" + / "local-001.json" + ) + self.assertTrue(exported_path.exists()) + exported_payload = json.loads(exported_path.read_text(encoding="utf-8")) + self.assertEqual(exported_payload["session_id"], "local-001") + self.assertEqual(exported_payload["source"], "local-dashboard-export") + + def test_export_selected_local_sessions_to_shared_storage(self) -> None: + service = DashboardService(self.fixture.config) + result = service.export_local_sessions(session_ids=["local-001", "missing-002"]) + self.assertEqual(result["selection"]["mode"], "selected") + self.assertEqual(result["result"]["requested"], 2) + self.assertEqual(result["result"]["matched"], 1) + self.assertEqual(result["result"]["missing"], 1) + self.assertEqual(result["result"]["missing_ids"], ["missing-002"]) + self.assertEqual(result["result"]["exported"], 1) + exported_path = ( + self.fixture.share_root + / "team-alpha" + / "sessions" + / "local-001.json" + ) + self.assertTrue(exported_path.exists()) + + +class DashboardApiTests(unittest.TestCase): + def setUp(self) -> None: + self.fixture = DashboardFixture() + + def tearDown(self) -> None: + self.fixture.cleanup() + + def test_dashboard_api_and_ui(self) -> None: + app = create_dashboard_app(self.fixture.config) + with TestClient(app) as client: + index_resp = client.get("/") + self.assertEqual(index_resp.status_code, 200) + self.assertIn("技能演化看板", index_resp.text) + self.assertNotIn("触发 evolve", index_resp.text) + self.assertNotIn("推送本地 skill", index_resp.text) + self.assertNotIn("人工审核", index_resp.text) + + health_resp = client.get("/api/v1/health") + self.assertEqual(health_resp.status_code, 200) + self.assertEqual(health_resp.json()["status"], "ok") + + overview_resp = client.get("/api/v1/overview") + self.assertEqual(overview_resp.status_code, 200) + overview = overview_resp.json() + self.assertEqual(overview["counts"]["skills"], 7) + self.assertEqual(overview["counts"]["sessions"], 10) + + skills_resp = client.get("/api/v1/skills") + self.assertEqual(skills_resp.status_code, 200) + skills = skills_resp.json()["items"] + self.assertEqual(len(skills), 7) + + debug_skill = next(item for item in skills if item["name"] == "debug-notes") + detail_resp = client.get(f"/api/v1/skills/{debug_skill['skill_id']}") + self.assertEqual(detail_resp.status_code, 200) + debug_detail = detail_resp.json() + self.assertEqual(debug_detail["name"], "debug-notes") + debug_v2 = next( + item + for item in debug_detail["versions"] + if int(item["version"]) == 2 + ) + + activate_resp = client.post( + f"/api/v1/skills/{debug_skill['skill_id']}/activate", + json={"target": "shared-version:2"}, + ) + self.assertEqual(activate_resp.status_code, 200) + self.assertEqual(activate_resp.json()["target"], "shared-version:2") + local_debug_path = self.fixture.skills_dir / "debug-notes" / "SKILL.md" + self.assertEqual(local_debug_path.read_text(encoding="utf-8").strip(), debug_v2["skill_md"].strip()) + + sessions_resp = client.get("/api/v1/sessions") + self.assertEqual(sessions_resp.status_code, 200) + self.assertEqual(len(sessions_resp.json()["items"]), 10) + + session_resp = client.get("/api/v1/sessions/sess-100") + self.assertEqual(session_resp.status_code, 200) + self.assertEqual(session_resp.json()["session_id"], "sess-100") + + validation_resp = client.get("/api/v1/validation/jobs") + self.assertEqual(validation_resp.status_code, 200) + self.assertEqual(len(validation_resp.json()["items"]), 4) + + export_selected_resp = client.post( + "/api/v1/ops/export-sessions", + json={"session_ids": ["local-001"]}, + ) + self.assertEqual(export_selected_resp.status_code, 200) + export_selected = export_selected_resp.json() + self.assertEqual(export_selected["selection"]["mode"], "selected") + self.assertEqual(export_selected["result"]["requested"], 1) + self.assertEqual(export_selected["result"]["matched"], 1) + self.assertEqual(export_selected["result"]["exported"], 1) + + pull_selected_resp = client.post( + "/api/v1/ops/pull", + json={"skill_names": ["sql-trace"]}, + ) + self.assertEqual(pull_selected_resp.status_code, 200) + pull_selected = pull_selected_resp.json() + self.assertEqual(pull_selected["selection"]["mode"], "selected") + self.assertEqual(pull_selected["result"]["requested"], 1) + self.assertEqual(pull_selected["result"]["matched_remote"], 1) + self.assertTrue((self.fixture.skills_dir / "sql-trace" / "SKILL.md").exists()) + + skills_after_pull = client.get("/api/v1/skills") + self.assertEqual(skills_after_pull.status_code, 200) + sql_trace = next( + item + for item in skills_after_pull.json()["items"] + if item["name"] == "sql-trace" + ) + self.assertEqual(sql_trace["source"], "both") + + review_resp = client.post( + "/api/v1/validation/jobs/job-pending/review", + json={ + "accepted": True, + "score": 0.91, + "notes": "Looks reusable and grounded in the session evidence.", + "auto_finalize": False, + }, + ) + self.assertEqual(review_resp.status_code, 200) + review_payload = review_resp.json() + self.assertEqual(review_payload["user_alias"], "tester") + self.assertEqual(review_payload["result"]["accepted"], True) + saved_result_path = ( + self.fixture.group_dir + / "validation_results" + / "job-pending" + / "tester.json" + ) + self.assertTrue(saved_result_path.exists()) + saved_result = json.loads(saved_result_path.read_text(encoding="utf-8")) + self.assertEqual(saved_result["decision"], "accept") + self.assertEqual(saved_result["notes"], "Looks reusable and grounded in the session evidence.") + + validation_after_review = client.get("/api/v1/validation/jobs") + self.assertEqual(validation_after_review.status_code, 200) + reviewed_job = next( + item + for item in validation_after_review.json()["items"] + if item["job_id"] == "job-pending" + ) + self.assertEqual(reviewed_job["status"], "review") + self.assertEqual(reviewed_job["result_count"], 1) + self.assertEqual(reviewed_job["accepted_count"], 1) + + evolve_status_resp = client.get("/api/v1/evolve/status") + self.assertEqual(evolve_status_resp.status_code, 200) + evolve_status = evolve_status_resp.json() + self.assertTrue(evolve_status["configured"]) + self.assertEqual(evolve_status["url"], "embedded://local-evolve") + self.assertIn("registered_skills", evolve_status["status"]) + + sync_resp = client.post("/api/v1/sync") + self.assertEqual(sync_resp.status_code, 200) + self.assertEqual(sync_resp.json()["summary"]["skills"], 7) + + +if __name__ == "__main__": + unittest.main() From 0fc718b279a35dff1346d6cf1e66a5305fc6e130 Mon Sep 17 00:00:00 2001 From: Upper9527 Date: Wed, 22 Apr 2026 15:49:59 +0800 Subject: [PATCH 2/3] docs: refresh wechat group image --- assets/image.png | Bin 379543 -> 367811 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/image.png b/assets/image.png index deed04a80dd01b6ddfb1b2e81125ded645f6e8d1..d4bfd26bf049d252b7e2f74792fef0553577bc28 100644 GIT binary patch literal 367811 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
  • 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

    QPYC5$&+5ZNr*KwfYa+xdU*NfU8 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

    FQ-`=H1KvBdP66Q^Uqn$UpNuOL_oUd*h!urFm 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

    w~R}unzfD= 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� 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

    RKO8&)00_-LRR(drfqf$v^6z9IFV&|L{6`W3 zhL?7-VMDLOZqrOLf-zDbIO0DVE^Km(9FTV?_L98sa1U@`$r-Nh^eim{HKP{cU1Wo zdlo$WD^ZY_BJ_*>(-?Oou~~+#|2FNvz4qS$8Sr0U6Z$WVK=JbbJ3^vm?8iEScx7Cm QAqGxbTtTc-#4zyx08G86=Kufz literal 379543 zcmeFZg;yNWvn>n+C%6SCxH}9k!Gl9^C%C&i!QGv~g1ZwOf-|_gy9W1fxbOY$eSgEZ z?pi%-nx5(IQ)f=quG+hra7B4ZWJG*K2nYydX(=&f2#8PI5D+jB@KE3*(6|Q7;5SGo zWyx<4RpW$5;6KDnG^9=CA8>)pTO^sAIEZ`{`2W4 z?%YrR*@yYBFH*@Z^g}=hLr9B>{BVan?O3WOJn$$^_nOx;(}zIAl2*c?)Y99vC|_Bd zLMO^ePaA#2HQVn^T|;-`WSzmCIdi=!A*y54&ToMr4Zq#AZam1jZcp$2Divt03?0_n z!;FAkS6A2h^6znE2)Hp1@$l zaACe{B>ykGuE~L3rGDSio1nE+1H)!Den9n;+fn)7y=H-T)t%C3Y)Eu>4{%`UXtyd( zkL+%yvj1wX)qfq_yy401v-M1wd;8?;abihUgY%Io7~ydspu5*XGhuZ{W)Jkw0h9Nv z*UnG2VY{}*)g2x}^cO6^H%averwo)DVrzlmI6lh!Rr%DW#G&F z0`SN?W%sG|3iu|WS)*`}UjV)tbAtbfQ@hmDpC)*3AavQjQKL$#iKZ%c^-!Z)ZDaL> zCtH$*b@gL#fDrx0VM?rE89#-pQrpYk^}8UKwD`c>ZXy($=oxMfjTGP;_?2;`3|0=*15V);EWEFikEALYdv!_U^>U(paFPU z8Cg%9{ZjE>r)|!)aerpF!1UV6=P|E7>kb~Il{h%LsZ0?~L=U(S+x%u%+sB?=n?Vjt zA4@4OT#LxxEO7Pm&d|*uzgu8mvJ{(}k=SXm;SwNe41Or>pcDRW61=k@f0#E&SX{Am z?_*n7=KVKf2RBEhZZOS7bFNigy@bVUkSFR_wl`lsu;6)~?kN=EBB+aaLGh4w*vOMWLd@J$U5+sq~ zXL>l}s#^5TTeHw7$R5aUF>jQwcPR+NY;`zvh^r=Tlj|3Fdunbg8^;0XcR!&VeX6du z%`M3;84+}bD((V6Dp`VN}lQv-C?2_mOyeJVZ2!)3V~5cwR0(0cKq#x?$`tV!~(6 zxwQ5Sr<{j_ag=}JGwPp5!p189Sqa6ARNSD&Q$cm4Bww(jQkOfrDvHB%CWd9jN*Osu z*FD92J2To!n@EiOw<~yHFRqrz<6Pj*f$!X=J8p-HPuw;vq(R2!&xMW_;6gzfxy)M? zu}=Zz_XRR%1~=9_XQSPOKEhHE$cz(7G4asAIl=PQpYFHV*g4mnHjp|Y`5QY&vlt2* zbD!)~zwzW}LvN+#k|azZ2sFZ59jBePLAOEQhp&<=*J&(!{VT%(i9m;ZO7?G~t&%N@ zind8YY@+UJ8W&_t<9s72d`<1us~X2YOULS}5tD$+dJ%M^yJNgs78cgsrx!y8rxG?i z*G^sN)l^7t*WFU@hqRNX(Z90Xq3S4PB$}YQv3iD+`{z|8xRn_}0wu2xj|>L;mWihH zS|~ifNUo3dwfRAwudiS_)4qb>5YIXtgzMr%$!pRp^}qwMYpsNdX(wBG$`Lt#hB+pK zWYHX9ef?E)IJc9W5eTsskp4I-D;Yp^ThpCq;4P~Yz57j_Gr&#W0zWn$Nkug)JgM(+ zz~swn`)`vG`pjXVY5mEg?}+MZO<9~3%=jeB=MzE~^)zN|`b^Nksg`%a28iQBvFH(wJZ0D^L(zxL4{lOO;qkOvBT{zJnI^i!b$FE;rUc3eM z$&B0wt`!fq`EOUEUnAlC_-JFA`SiKhiC>ti&xZ8B;Nb1K2gfd#g)=!_9oO3ZLEgw; z>XVJnQ>lsg+KHe1!<|zrnmo${m_(HoM!F-`hO1&46Wnwa|41R1n7p5{yFO)}1%h*J zg6T+ysymrI&1@aN#t15*Q2Qg^Z0WfNXqK*$z_lZ{jMz>FD6$&C50EfpWBmT5R(-6=~j`GBc2h8A{=+ ze|;>k#Sn*4ntMaRfV+(vE6+-k}F^U3mfSYxj4v+4B(>`Et6_GHes} z@AO2Gx>B&wxLXA@= zA(i1%9qwD-ytu;9h~=;g=N%dQg_$}vvAdD1Vy5IftkUbK(3=GSv7Doa(yAAp92nma zpv}VNPup!)v!tkiIdV3=m_^`4P~2$7hUo~O7Uu)HSJOOZ++Pz}u$9dG0A@1MJlEEF z6}RhS^iA6FzBV5p?|Y`EhNv=Q(7fPsZC69FLxq52E%=wZ+r4;9cC^(aq|!_oe0{zy zgzpvCGsO$6q)Xt{PLWskqD4`vRuLE9-HooTq^Zkt#EaD_OeTPaQC;XAy1&%a+G4jw zJ1{+*kH?)$;Xf{8Kf@(!#`+Xl_o_L;QeUHC1&*@`CYs<@aE3Ya)`!8B7?X9;-US7a!&MH~Em zznKU}ePCw$WlvQ;qUhw8vHkY%n`4^0lD{NMkwMFbOl6=k6S)PbQ8-2*|Hn+|Bg>|k`Sm(JSY`=|;8%%Rvy{j#H)0!Z(l{H|-fkLEhUn!M}; zm7tX)Izwmldwh^VI8xef%P$^5pws+8VoPVu#FOJMKD*fZzWjo5?YseNZFv2Ml=TR3 zlIjc&5_*3qXMTxqp1_k*qgnFzd&pmpad}+1dpW*e)#5$^wug`fDhz*ki3&0nmoF{V zRqV%TV|>F2aS*nN;_bFiZlgfjJYgv9zo;FpkUnc@d83jVy`34GrozE`>{hq<1LCsv z<;i4Dy>5Vz{{ENvj<0+rV8JQbcyVw!-|BBxyrt!E{_MGZFAct{SCH@NEV`jZ047(k zpzL=1cdIRXHTh^~Sh0k?v`(}@hP{5vx;{|d>Zv_YVg6_{Y#OB0)Ht)n3BJ-D@UiEtC z#P&4mX#fc(R&M)K2DY0z5C!?9Kk@-)A@JB!{g7SY$R_!lm{}T7?I^Se{umExPYrC~ zQdjn%{0T*YXdxFJ9HnP=3+zQ+>mG5y;=~5g_-##*uO(68kl&<*vhCyy5eoa8h{b-L zg-Q+MD8$UK8llqy?I2J-Y#8etsa=sC53+tr@`!KITn%sQ%L7D>D=3UQn^6+miawZ9;$o@ABC*sluLSr>%saoB`i;(E_nNu|=dI#%k zo0Lo1Kvi_23Op_69 z&>&BvO9WgDiiDA4wc){xp;1yTj9{pw-zL{--^AOQN|N_LC@nzS=Dqd~g?l%A@s;r| zQB(hfCskb%9iaas#ag6=pgNYpNl&B-9MwEk1se8G)SiQcIZp6`Z&6;&lq~np|2{30 zh(aA@&|jU4TiZ}Et4lOP2F?N4w=lKK4|2G3b-_NI8VgRwMw?ADYT>HGGkG7o1V*BI%_TFiLH8!2CMetHWy!y2u_;Bj=~~RO(h7P zt3C-GKjfV5v3R5bzBGfIapl-NX*XBjGjT_H7cXH1YSx?rE$>81bhBLgP`#sNM=MTi z2|8a>x}j_&o7bVE_fIv-_k0mA`i*<~kp!3yG|N-_zjR{)wKp60S%yTnOdV&8XIFG*0WCyhqS9iH&W^<-kdP3FDWZ1h9neAmA;)VT-UO+)notf zl>Y+&EAxcm6EkC(=4P?G)(%RaGF)NAPe9QnJ}q2*yMF$ica+;G#hLREUCpkdtopBt zuW+F9h>3YEI)3Hsjd}wss-Gd&>UkZ`@O^|BN+#)BY1KHs~>0ut(sLaznJ2z&P%sGOl2ts>qOF4iiY z)NlU7j8klTv8v$n7Kd+;z*0doefB`$0w#U`)&fS28p$@&`3ojAs%TG@~(hm}m z2sEtCUiv9A##OB(GVla*c4aO4OjbV6$}fxSsl8fxisMf7yFC zC3!aQ34i6hedT@1&|pueOj~Mcs${PA3gu@uz8hIrbDwogw(i|IWsDVfYheTV5Qz?d zNloNmAI2)Wsp&~$3aCS6+a7zNLAoA(bo6E8^KX<`u}};nYV1b`?4KM>WgohA&>M@R)ou!XR0wY z)YKq5DnYbW#c>+~oTa};Yo-)byg>&c4fPhf!#NHQ>PN6Q(7I{QVVP>n$zS+fPOWKQ z09W6Q9ldp!Qg))x>ibR*bPdtTz4wS zg4v!;-|0wViN8)LuY0+&$b?!z(1|YZYmm8ooM!_;u0jBjxQpgCbrE~De7ucbxY~C4 zk4;j^BQm6arJtYzY&TkX zv>6mV;Jh*)ZyutX@77-*wO`|#HK<1SrWuha@C7OpJn(SVMo1JDK%>L5q#WbC_?O=V zP}z~Up>1p-q8}dAI``+h7GkZxQ!zAxH7y-tuobChj4ssG+yRlH4IYPMPxa>nhI+p< zwJEiYW>yns{gb{o(aO!r;LCg+E#Wp?E#9IM^WdAY|HG88?S#@yvRQChP_XrS zJ{C3GfBw`WnQ>gD!pv8&viTW~2!BB31W0_QH)x#K-?K$)<0-{yO;X?c)cG%c zrJ|AYghi|&O&o)7YT`<0_qnDZ&Rbu(L8_OnITZOCwZlsXWFyoEq1go_~}JToa?(%LssoUMp;|d3!6DU3__2 z6|kK6&;*|HPDa*jW^nBt1s{iGz{zxJ5%LA369H0&?PFtHtC1aW5X|I1?f0dIk1+Y8 zm5dqnvmiRROZyr9O~F$eRw-%+%MjOd+(=MBNFWmk%==sNOAS}^yU=7&N+^la?fkGK z;(c)y!M5qG6bYzq>2*h8PxpZu4p3aH^gIr<(C#8u z+wL!&t;l0u!gNBY!t-oUHYzAh8>z^#%ai*TEHJ?;ZNPyv823G<=N7>knZ6vv2^JB8 zj?iD*;F~LQXKi^ET55fsJu*Zj=FDC3R>X4SoGKiTeeu3c%hRo>vA_(BW)oWhrdN5u z*nWM2R*Rurov?&k(9i_tpFk~ul4VXj#`j9j8$vtQ*mzdqO@b{`2j;>$d};U=4uC}F zPLF9dfE41~olBPi$IENM!8#*yW?W)lsj<=qG%Hr76b$0^6^zh&K5m<(1`m(yG8;^~ z_)vR4)q!hYH&S6d6dmBKL_OnQYUzL#IveLD4{3r)XID?xY6i8=1%x2I)s;gJRSjI8 z%Fiz-y6|Mn$bY9K#N@x7XUQE+2(IISnnF-(+0XFg^9g#r31>xs}1 za&h&Ju9oo;Zt)X+281a+4{HnM(=1!&WaW@-w0oE(|FG+LWMV9Bfv*%h@-vv5fd{q? z{pwDkioYY8*VF%SxR8$}`;{geEc#!LAs7_(=7{$r{}W`b{0h|hUa%+sxY~O zfhs^M_l6dv^wle$rs_|&JeZynEF9hU=GD$7*-JFuy`O22@|5PGPjozV#c{xP-WD*L z<2@|(JaV)0b6b2JCUE=ozI%SP6x2U8wdU-I<8BBzPVvzD4U;p`TaCmtbM!~MqXXD} zd*1a35b{2Gns2nKha+LGKecwuVJgp!@LZdelj)+`nl0Wln?Vg&ze?G+NY9bO=ER#N zt}c87lh^Js;JMBr*FpZE<|qOre*2`*4r?!?PgY@Wsl>r6ns(}o<+;dhEH3A4w1)O2 zGy#{Uz1+F*f>G7CTKVw#9F#pi31$2w8SQJRXC*|*pVj77n!OhhE|h~SL&o*+HOQmZOJ^y)hU_+ARV%ys#k=)VlVZQV`X+`Jgq(dh^ss@rD7 z2je>@PM>IdJ(Mx9Az88iBtcQ3yX5i{xC;>U2s)`nHC%d}|4GY%gzo;K&E&v{M}Gwy zz=&X=OHXSuO2Ym-*%(tJTf4cU4l8*peoFIs=8;Zj&3Wr7SiS0)cOs=cR0&Z0P3vsp z@Uh_%N2C_;MHjiRoiO;I&>dr2?EvmsTSUt@jX~`IObN~WV!BAWVi7lQY9n=jjRyGL z*}cz^yqaKyFuPl`nrY)O>0K9#q>tjwrhcWcbWUu~gE$)0lMKi^>g#EDQZd%hB zHwZhM&Fvo9OdrzJMjE&b0!aME1Sf+ztdOzZvLO_vK<;EnINr^#3rU&`^VToPWh(bCKc9J84@>#4}?>}b$l&sO#> z<`W_}Q3L53a8h&LoshWR}Fm z2~ZCOPjh+w{2vu`4L&H1!jhVRoA4}4G)?5jp>i?|#vSwaW|R;gfydx2>kztvnMWxX&AiZcP!*A)oD{gCnFco^wK>a_5nu!~QcVuD0s{1s;(qH@ zYEOZN87;MtHcfA`R{s?6t=9k+*VdV z@0tHxB?GEMY>j=VJ34miRqQ796<1QqVV&uXUC(9Q&VNFxZSWOhF<}Bo4I`hu;^!RGv7(2NB zk^l1G(KvQUgzW|=`sd5vBYwFl*P-9D?+-y<0{5povBay-H|~yqNP{_qVPKQCOM<#D zZar^wW1n^?3S=ccPSpMlKX+xC&DaiZ5Wlot^%NcK6LqZ;-M2YRes$>n@ufBYZxc*5 zjblx#VOqV;_mPsu=tU3CsXGQubB2$;FL!)!@Ge%GV*P-0nN6kFFgEg@y8Ip$#Z<{= zTiMj&a$_x1lj@nSx}~-zfwGf2u!9c>EiMw~9_-UUSC5@o!7aqvk!*Cj>0mdeij%B8 z-OQjqUJqMKFlsN$i1TH(S!7_oUhIIZxiEjJE``5#fOeV6_qv|d z?K*uJ({nr>7HA#c45pEEBT61ka^|p*uFU0BNjEM#n$G1TO25vS%ezdKY(7p;AA%jS zngu*^b@wZm6SB*E1cN*yL~h|xZf$Hovwdr|$~@moiMf?%hQtLM1?gMx$GIkC0Ecx(d2Z+6I?1y%G% zB2>u5=)UfHGSUDi-}fHBXTSFu_gRmfr}I9qX0M&f89|@VL#$`mH0^aUt3%7dY8q$o zGUYZ+ErLXZd8S77Zp`?(Rp9i~{s^IjY5TXn(OT|Dv)T{&$zLVO&Pr};GjR7s2ZQ2G zr_PsluwGt#+46QxX+qq-?vAcn+$IuV8_T-ev0Zx;>vxun{%EEDXmfjBhwJL3f^M3)|1bdOHl!&ENbsQ9a5wfV^zzKFS!4rd58rE(x%Gz3aH~_Wb96vif}3 zw?VSjl}&~8eK-H0cgV~(Wa56(PQ>_ihtV2DSvp(hZ2o@|JUL;U#sfKx9WbnWQ$n69 zQ}U#?UG&les}o{D+;(o8rd`* zxBm068AR~%Sm5@)JD(kkYes#5dTuA)0Rqv}wDJ!7Wb~^nAOol+xI({uH8Jm4sx9Nh zgE@x0OtvaV{m7!hk-E{WPpROe*5!k$6o~l#p4MSL@~h41p!>*+K%I-LnX4vX&NgiD z-*MvtpD%|Twe2jWIYUI-Z*^!MpE=0__fya8#GRuvg^Of)y#Dpu1%0pACsdR>6u*ag z0)oD&xz{yg!A#IZ@yrZiLAFA3pywi3!VC!rXx z0{WowO!aDFTU*qEMdt6;maOX&SvsLLg`wZnCO69*eDm+KBGlm6%6!^X7nVNoF#{a9 znXWc<&I%-`L9<`df z!XhoH!TTP2cV3?2WEwz1(UByHFE`Jt)01b+^VIx)?!vXG3{FX8l0VOKCuY?E1;|q( zKBg#Pd8aD}8$SBKnoaaYz~uma_hAhsd1^p2nH%Z3E zbBwyIn{tl?BwEjr*mxP@!WqluHF6)iy;PpZQJu{Gb3ZtI=pz8OcY2-azbtjFZU}Ub z?ZGJ}t5R4DtT7QQKPmC#DPWY?H42ZA-q6~u2nb~}V@8}6)%Ooi^$lN@l9<|x2gH=g zsz)+x99|@f2~W`Ok`8}TOAAuAUGjU3koqr)ve~PzidvdybgIa)JY$nd^RCq2ykz2Be zUnh!*Q6DVtpC*YyY%d}vtH8ImdD%UJMwnKLy_x*oHCaJ{$0Fgocjzj_wcA&1zc z$px|B!Vmgq&2mU|Y7^So{B)T$py;cqsOg3V+g6~*E8t`QymK8|dTlC?>pEtxCRu5D zysDNX!}O_9P|DZ-b%4l{i|d1@C%b$BBcXs$6TT+2o-GtE{%#im>-z@Z^|k!BUF;N& zB)ss%T?`gp#{2{Z_z|Y*@Wt1N`-YHz5fPsCczgCd{6M*Xo}9~HoOu`9k9+o8#>yCE zY6n#{*O3dBE87<@Bm{I4&Y=PZx_{M(I}{(loO1w4A*5F-0(mc?-nLfGY;Psk5{K8? z+!E!PeV@-r4At7)4!9_V$0v$A6$-Ut5vI9v9BP1Dg_Xy>)SfZ9ypBX;gb!=Y6Nw%i z>&;~uH^Jzgb8cPFFPtB}Oit8bE_fCF1Z>tfcn#<;5~UN76?dDdv3`kodfxZLiCrvj zi6jE8ephSz-t5llsI{)8qe^?UO2!S>QE^HdRf}|hQu;aut7V%fy>p&ynw+d`5|lgj zQA%YC4tz=vH5{?Lyq@;D3dbhWus)V!x0Ax$VlO=fu%acUwwrAFAle#tup{z&R^o4N z4ggr(2ABDM{r*q=!tc^+!bxq^`RP(#6{y6{=-lS~E|#rX%HgRPY^d7eaRi;$KM^1A zFEd}Z?kUw}Mz)Y6_S@$J`yU9wk#b^dk^sGB6}mI8%9HNb#XntG@8tzh^U*UCEYq0& zlA}_H$4XwJ|65vd#lHyipRW(BCQoA#H)tG}@?mu^D@;6^@yd6C~J(b(8xesllo`=hF z;rNkv+Rzuim%7L>L8f#Tc_cL|v&ayqCPSW-c3~4?ffE(ik3xq?CYk~&HL^Q#prx9X zkaM1OHP!f=@0{kmL-@pUh!X7Z6LYO$W$%2*QH5;cUXYiYCtruJnT94ha`ldfvt_JL z^~zapH;zZ3?a8z`#DYlx9!R`K>1m!a4CJsw8W9vX(zMu?ut%rK;G_&4!K*;iDUydO zLnW+Ui#b`ic5k6DdE!REni>t;$Bp=aBR`>+ngb&cTL02gMZ1S?xU}P46vh2>8fKq^ z4e39Ql@IDBN%xim(F9+`isF*a^6d8TK5{en(7HDZ= zQipzOK>Q}-eTfK-PYPliTrtBexl0TGsG`vVn86yvGaDumI{1eY>ps;5;+p9P?`HxZ zcj41oD$ZeGCXQdWvY+MSQ=j3c23!@}9`I?+2@K{PvwfvN4YtiOUbb2Lt@<$8xshU` zhf_g`(`GIyjOwF_NB`c|3i=-%T|0Bx&9R=$c~6Z^^q3QGUaXrm7%vU-$MQ=sL$2of zvZoB9mXGhBHD)a>TQqO*1-PTd-js| zTo>`0w|gUi?hf19?ye*czYM>yLfSyD53$KwVGan0zQj@Fl8nyz6e z@@RN>d=TjE4Q7%<>-U`J!k?b`+RVH8D^tpEdR})3NH+NSguXuKZd_266H)?BZHQ0L z9gtLG-W$Mbyt+xu5sIA!;r;s@^U<9JTS618o-h+F4liL|Yb4h)=hj4JgS_y>vVkJGQ@0KRv!+$gYNXJbz+?l z<{Wo~%%IoTS$p!D&w)9`9J^?FHNR2!dsGk7Yw4=zsq(^NDDalldTzinSk3NPA2)!j zHl{w@On25zKpvZw)a1Yrdd=0Vs&jDDxX@iXv}G!?$VlpNZ)vPuxKK14T zQg{R!MeWeU?0`U^=q+~+!s*EwttLLmJeyO78A<{wz(0Yhum{ud%s$_**Xg&;JE%0sDC%8$*w8!TA1}k z>SN2ZFI&g$Cf_Ulg>N(n)1+xgSbv?3e0QAWEJO6Z(NGQz#!bBmjR<|4ETH!k84aYN z>5IXH`LQK68iN`78<$U{mS%MfnW*c)EqnD0RvZ(9(Gf(WNEYud>h{DvuSK9&B2A`kfxtBrt4+A zu=&=5hN7) z;kFyu@g$d3gwl95WAUz)9`8^k&}UU_<>4cjC(Yiu?-BK?oFMo~=2eb!rJ{pE>2IGt z`5W&B?x!FMS1Zbz%K~ZbRnU=Fe3+#fOrsT8hkkpQcA%}&fYc~ZZ`!EVSdLh2&il_> zrZn2|wd>iI*I3}$O+rO#<{Z#U&D2_9nMpY3x%onoZ4C}&2exhM1wn|0h&SF^+#En} zD(IC)tIp-2o)8|pbRqck@Q=3GQSf73XKa;4=i<=B=q%~8QgFx5^?8=~c!qEu`PU=$ zU27Iu4tJByw(@FTI9ELg=m$SvMD#eWG}OX?jEs(1Rwalxc+<#_0rHm4Atv9*uxjKS zsGdeYf4#x*rIwlKxm3sHJsWwWCcU!v?d89oCn zVus%;5Hnm{`%w05mH10UmnHI;@dl|SF;&vnpi%+%6x&gTan5UcvZ$YuvMe|!3Tp6` zKj#f}B-v^j|H@q&aLyBRXk=idxef?MeNCq-KhNE`<>e?lc5N%tp-)wVGsXBR3cs9+ zOin<~L2z$TSb;^z;gGuBS!uyzH!zU!{!r6l?6h_l{OOQeJ6EDWfEE8-U7PzF-N_8Z z@6mYc)gA+?>agb-H+qRAUj}v*X>82!V!hLokvCuM z37LAJX(DCdXi#!_XdO~2)eft;@6cn$V#fRjF3r9n%itQ?wCB&{FMhW3CW0BjmgCWc zqiwt5&~?CPH47t^wQ!&wXaBZ2QniO%=xy{31&)DBh)OZdz^F+l3`DhTuKz1zc+!-e zarucgvsnj=a5pTYQ;ao5P=5-NVG%P zInd(@jAZlc97lmOQSy>i@{8==`wH$*^q5z6BZI<)R>TeqxN{h%AN0E|*Ox0+ab0fa z->=+p|Cwz;@_3jgAKxxN%>UgjX?}D0aGEE#7L8KVt1d zMp5?N{BFj<7Vlps@p6cp;Q{jpGrt$=DDeqrf~rD)t+&jLm!Apar5S2uh*M$M@^YQ# z=hDSv+(B=O_5G`b%1(^O^N!38VnL8#mQ^LXYVBJ!Kq`S!pomu&nh-@Y(Oe3!ES&yg zgapr8-<9`QahUGs#=guI7b-J#LB2z_(EGK};9F|pkEQ5%V`t$*g9)n}w7zBJ=_ky+ zC2RP`0ZmJQwdhaG!Weie;aQ`dkbN!OhDud)%!!4EFaimQAqY0@wm-uFuTZ>+s8l&K z7%>j@UGp|&21FCFF3OTaH^}5QIPF6Ltw)dx#Sn)YiK0b0a^t)TS$S_eQzI ztRRqoA2GUT<-_F7Lr1JMcHl9UWQo?S!LAE}yt<0F^=N5(_It5==QA;FH@%Es{CX!#s z9x6_X7KNF}bGEU9mh0V<#sr8o@9RF|pA7gZ zjx%M(Vp|DlEhu;x!fgKbmFBR|cS-md zK%t>G*Wc(3r!oTJ4GYe@j_L;hgEIb~5_f|n?l?u$;zT)fiNof|Dlt)M$*QTcyKBD@ z3?U`*P}m6yin{TaPI?DNk-*Szlc zvEayPG;EWf#dy0?q~eT@s}KNv!1$eu*MxbuS?JN%DR-+N(nl@OXj&}0<;u+RiJo^b zQoML%j#Y4ruJA|evB`&HYpN;VU(sQ-umHVHlPy@${QG}q!ttPbH5IL)U%<0G6H+yV z&?24cxwf;`#4}sK$=T%+)_kk1!}1z8cl!B$X;8z8a#R+MP)vh+{dg8Dl%A7~IVLVj z)oFb^$zaxmZe>ar9gh~tMQnjcMW|%$yt{h=rcSXha(fuaXa9XJo5et85Dj>LGR&eb z=g@Y25`Y~_j6z_0d+QmW@VlDG%9PZu_5~-SC^FXYLj9H+P z2#S4~GB@DB*X{B=ySzN+yJ+uYTx)$ka%|N|Kr`s)J{IvixjlCm1X5Y7pWU5@xE;T| zEiEDZ8N43&f}SqKPNf`WQLmpMVQDH#n7Eqn;VUyuo3X-S0V9&xv4cJ5&E@g12`^ei z+e9UgVzs(IerMkha2E`_6|{Kq&=B0GUDZqaV2hVB)Fg44F1eJFH)InKk##6cjyDa7 zoh*}UFtW)7`GZ{Gdyo_kr@1+1fQ$rq^(HWu*d8QP7?9;H;S-rU24K`NnGAj_{}Iq! z!8&0NtKck#5!3G4^@;)f2ZtBh5e7L{^mFTuHt&b~`k$b!_2fSNw-fz@ui=u8?X3YW zh$na%$8PTr6C^&DZ_)Qc{DQo_J{CpH<)Z`QX=v~4LD}MR=-75;weYn==*0?dPGqkI zVMtpz{XfJDwUoIHn=vbBQVcsXvQ*WeDFy$cxc0DoapoKCH)_lP6|*yF&;L!VQZkM* zg0=or!G82s5-WP=?K(aO;A-LuC1_zz$G){NOFRnlx*x4*cew7$A5y0cuuAzcVk5Cu zLSq51)$f3-uzeMzLN6D%6~{(wx(%f^gpE%%%Opb82+_*erj)-{gR>z=&s$KsKh#kgF+YDlwL1VD4*(6Ps7@Nx)?*LtnV9$`h>aw_tq) z=YF*jqaHla)`sVt@z5BZWag^kxzK7$)E%*Q zwcf`SuiuQ3+mm0y?pb9Ye9{And+%!oNxkM;RKrr6kV^GuF9BOz9eyHXx==^9H zop_?n?E)k3b}AG=oyguEX$H1QflT^U>7HS2wR&OJUAf&R2$Sodtd# zngo>(SGjHkZjKE~s(wDfF#x4k>|rhyY!TSC_w)k*Tr~!@LDCnyhg&OlT|T#$BU^Ly zCBTBv=J%cVYrl^7x95A3)jj&iM@vC{Hp%l(qCa&1a>E|k`*T%}5a!*Dw+WrxhQ8lq zZV;^rd0cedQ_Zj++qS#z9iwiz2eFx>D#ZTtcJTIwrpG{bv@8n-QOM8-Xk$4WH}gZh z)WIfdvs)D$(K*}gJc(6tT3@NxMe4|~&oXA9?r5f)+O@mdaDTZJPuf_214k;n?=HTA zUqQ)+N)x7^MWHZ)LxU${Etmf$mf|Z>R!ONvKD(VKFvc@fM!_G3asM^>Q(M1wAlnEC&O&i!OEe~;7AOpjT7Oqt9t{(-_A4pF#G^Vk*`1*}d2 zo=t!&)jQf)pX14C1B5=Tt6LL~*QdFjn)|Ckzywa>*7$y3{meBF)6m?2{ZHS$GL>9S zI?t4gi*s+bOb1;FmdAy$p28p)!=?GOd#zIQ08J{_I7U@@Q%G@Fkg;m2-(94T$YC6} zy`yg+CQchZ`s*T)Mr*X#E7a>%)^%?V0mnJI3YdrjHrLut3?Ckv$a=wFO zyZ#b(mp!w$eR+Agdt=%^dr_Z})CTmkgFleHCv*-W+-4_D!lcsI_}* z2asUgwhCfolUa$2*t@7alf5z|G=&)`xX#Aa&M*Qxb z@O4X)V~r4e=926?lWU{{v?&u{{OE8<({&9-<+wu36#W)_t1CTYd)IAqd^x2Y%Ce9GuVnsQ?XanvWc9{ zGp|d7x-8p^Qx@$6mI-;{^{30A%Gb5EpjU1bH#a3(br#Ow7SiEbMx&Foa$IzrVijbt z0cHWXCN93--e8*eX=URL$0|FNb&~qB-23t}@n?gE6vC>x8=&e~HGyH^XYBr|NZfrG z^(e$nq8S9&n{YsQGgJvrFOv~G?;!*G=ZrjLH=28q0SJJM(*woc*?>6*5R?L@LYIyZ zJDTcn$wnBSN#z(|$6Y4d!dRdw?|VGsUxhm%(@_^ulq{Z~pH~WyUn+hWeS)!cFtg(G zdf2>q*d3WG&zcC?4Q_p%U`U4?ouy!J82YcNmj0OPgy315uN^ zQ&lf(R|}9Gp%~lNImIGyP^gI`=~p;H=;rO-8eem)Jn?ylYYp9X;_#z&vcYE06!(jC%DMQD>9r@$us$vP5IzMYL}X`9Bl`ccAXf7@#5?O(-Shz*_NXE~ z{5W=hkuh6{S{5}zJEX^LDaBD8|7@*C&ZNNfY%k;bKTm{&faTKPn%~!k=p{Ex(JgNX zgpn1gKJDOmLRN~YMyctiAs3Zq7;2qeOK=k3!N;YLK1Z9Ar*tyaJ9}pQF=R;xdS;vF zR0OsJsnT4J_P7V>W%9%u55l*GX34bk_oX4SpJY%Xrzu5O^2{S5zz%MTjgt@1uwP6S z)1Df!YMDfKBfz~n98;^RZM;1&ebspY(8`L?M%#8Zr%{kl0IGGC$OY;b2nMo6(58E4 zW-&pZSQZ?J=!XafzQCqSC}}bxIZ7y5FLrN-ky~KFaVy{7!3jMVoH%S`%BJ>RHO&;} zDIfhz&)4uO9;C-tL4FeT|H4W?Hc&wTC|-*Mt$3%{?g^cfh{rGq~@b^Y33&fQMDd>t?)avsWYkma~6t%UPbN+u^y<>Z2T@x;vj&0j^ z$F^;&W7|$Twr$%sI(E`AR@AYz!ky>c*ZHu|FPI-{j9FE;hBvL=`ldcbba%dQj;$Sn zx2Wp0DY@(Zsc%q)nFeJ<_RJcG^A>H-dKRwJ|GYQ<8TBc2mA2!cv4b>_GIeM3cCg#& zV_;Mjs>g8A5^~M6CP^0<=0IXqRhEkxdj~coIg~#$!eB=bJBzh>$SxBOAXdH(I&Ny_ zfcq&mpz(noHef>i?!K98#~mHN_lg+_HkQHO19jx!!EcO^O zVmmz7r($GnQYyA>Gz!}iTs1Rrv<;yV0jAvOUdU*c8v^ zuJR<^$a<#dN5TXfXksM{0<|+Q;xqHO%>8+nB+YkC#?E4o#3na?5-o(0vIHIQii>n; z;_{#$IMPi%EPZXxRCZqb0M>ntW#(LzWyhg87CB*@EZ8pGPg*px8pqr+pz(ZqP!q(d zK$B=1pOjI^WT~%oo`1p1dWk(~ab|pL&bQxeEieY~@9_*$ZF(;nF}k3RtT7Oo{{rm-$q!4n}O5 z1c3@Fw`|M$Og1Okp)vaP<;Bfpt_~j9*;|?X*l#X{`_Rz88k&Qk$;M|T=ujjfAyVBD zeJFnsQxf^n@qT!XfGU)`i~|nEsCGJCpcZ<3JS`sqS_M>H;*D|dtJEskHvcb*GT@43 z&nz~7FykuTOhQ0-E%17g=*iljH-V&AO4+z}qsMW~tOjZqGjH2s*1jcCJ+7m|P=h$x zCReRrPAjF~Qmtas-vW7we(CV1fm^GkA7R4S$EGrw8edK=N4CXZh?EimLJt??{aaad ztvEaP62S+Ogg~vcNfhhzG3cAP(|K>SwjNRZIp_a$-+X%L%fl@ou)VWwEN5zVAo=im zo8TAxdf)ZuI3+Pr=U45Sv1apYs{qH)5dbjAd)@c=EnWFM-~EtJQZ0f%&6-xl4db~# zgs(({%pKn??$b`vMxGlfKx`ZEEup12})iqlX;Ai8) zq5J+y^aarD|9oSctJ4qo_!sb0p1sK{R%I5k^ha#WvQ24bvMD&fmZ#=_whq|;Y#k;z zZfKdn7jPozTA%~wjip5QpIK@f!|PWbw9xn^i4@UP^lE6#Hw|Fn2=8eZXx|Iz7$?-VJzpD?SMCps!vW zX6o$slX_M}Wzh8~{HJ10|C|%y05ncBo$_y}dS99QddRg|MWmVvk4sMikD@ih?Mq&a z=BJDNWa7PL9<~+lG!zVjWwEoz+3RbOab2!!HGpw_GsY;?E_lj8{U=3&qSND1Ydy8$iD2KkunkK<8)CEhr7 zYGa=rE(GQKLMC_~jLsI6C!OwAnpTk}p#kfO z0j$}({Q=>1xrj5RIa`mgOj47i;vkQ~_HE-Ca572g;GyI^ah<|QkFW^t8?RWgy$ha& z(JbW*mHTNmA{+eu?f_)p|^6PQ{Dc6 zmZhGI-z|N*HfEsEOI*O+I0Zxd}ogi1L_jO2~vDnZbe;8Bkn)qCrZ=UN3c;B z>$7>%Q~6sqf2D5leC=t$iNcKVmxI(|PHQ!_1uN$h2(8)KRIV9Bc0XYNkEKYc*;+Iz@#0t~LtR#q+ZgyO`vF0U>K z8mKMV7rE&B8d|jk>^fsR{=;$8^S=j}ss6AoFcfC1--y;1))55~;#$-gh3aL~(>p_S zlsR*9_6Tgv-Hj+m;-EnotL;AJJ8jV8(Z$u9AKR;6??3x#)lYLVYeT}SOLnGIhr@3wPyv9{YYnpIjt?}{Hrj52hu0c7dS zz?V*@kOnKoQe6$nO!hP0nS%uP0LN#eOyh=w`3XllJHeyR=>M$vC1!=1q!RE@Otg@e zl3XKiQT{VqPN2{0z~Sq-|00$X#TxI!Sc$uQ3Fdr(0Ac@ob`s2%_y5{~(yY_Je1=-1 z+3j(rxI&<%k5KQFQp!oD*WdPY%%5xz`HToF&v+2{cu(i;>nV28jZ0YQOgip@f14<{S#GK^Ms-3VE9KbGIA7p;p1Wn zU;RHd|JKL?@)=Ia$e(gnafU!k_NPR=*mjI_o!G*-#M-OS>+MdD)ym@JX6Y{aYQBL` zNo?JH^2B)DmW3%tm045zsAT|G_NU(g5yP#*T1y2!jqNtgP2*9xVrNahx zDzl9aGbeB7o?Y-#WB=y+;RZ_`L}H78ug%>tLBD^FKIydNR8t3=9@mHBtuEhS^M*Q4 zs|6L+Vbl}VFceZ;oqn$XzMT?&TtZJp9a)T3$l&_KL=x%u;s~$8%5P;WB)6Hf@1UFg zz-;D(5}m-=ouy4%XhnNR7l8KqpLzJ`KZ~<-UA8#`Xg<|^#_|R7!fj8%yj&TIkGVI3 zpJ}~qS#m=Se`BFg1FG5IfNgrY5oP7wkPFGY4-Mw_$plOPV*x&X7=0{JokSxanaI~` z)U$Y8-D#p@81~+IM%zNHq73W>UoVQ$zbfVAWl@N-@zcK3!_G3b7@&+pf#dXjBO^+R zFCVjtnklewX%MAuk;J+TE-J*i3VzP+JJB3z_B;&NOi5P~0_0IPoz&4Ixdd~n?f6JV z#sR)hH%sCoU-Pt4R?14;VtEi^hZf8oPp|AU&Pw-bp)$u4C9m7Y+S9L}$FvL@6R-%O zkW<#PT4|>+`XGU!&**_%a-vy!B*VD&c6&Nzze>Hd?QLyya`C@jHTy+kmG?rX12JMD zqkK6s?XPTqrNi-(v~qmj@4ki?@8U82w@+x`sB7b<4~SNZ8YHAhF3+$++NUR%AjBE$1TS%l(=J~d1ZsCpM_5}Y5@iw7tKyfa<3K3LZEZM55ya&vMdf5p z!py+oB<)B&m+Z3{Qfeau%4>J|dOoL!h|INto4Y-VTOXSa@1ELn7N#rD!DCsPH|3_u2Q=lk6@2?s|5p}muzBZ7w1VxmJmnQ@RIl$)7Kr7Q?UwS zoQ%C75P+m;rRVM3)ZHsAt-HV5@tRrYYi6_YkGZ!6k zUEM^gUvq}gq?@Z;@9{RPulpO7ioW^C$8;{s)aD_pM5kHI8zpG!Kibc^w*2Z?oy=GtQs|LtMCf)@Q0Ox;bLXxc{a*_ zkCn_Kbf{BI_QTX0>(QE0nm+Q>mxsXPEk&;Q22zY!BgxMgSeN(sAvVj=9wpc87{FJ8 zmt7pvn~Ru<(92kIOM}*TY~PguqfOAz;KIQ_R-1EF?WJB@^xZTa?Cl?X_)~CxxVsid z1t+v=uSxRDWu;{VS3L>!W$@v+V4|FRjjn4@p8T~dA62p z?Zpe?iTIhwoRI*`nZM}8>;O}5a(O--`=si%^RRjX6^nc+dcM35uA&TqQoT6^MJfO{ z!Vl=$vF|*xo{iJ^*N|G2Ae$1#MaiC_N9+BBsZ1cEB#{KKw+`UFB~H2pp}-Y~k|cOa z$&?&o*&soCyD5XKjaH9hMLRKxX`UVGj26)(UoIGE>;14-_)nf_3xIjW-(yIzvvY!c zkM}t^p}ifw|LvXm+A#VusuqNvRk&7dZI|QbBz4%cbauYJ@@hNl0seigXlEf*s{Iv- z5My2@#paNG5lG@3y=X<=rxJse>oJIEw=5;MzXV-)UXX-2m5DLRUOQS7X_0^(r zngn^T7BIY!&HF$y?ot&PD&DW4iV3Q_|FM~G@31tz_hoU-pHDHi$lDtVwP<0Wx#Oyt z?Zi*+Q3)MY)PmRDSSYByi@q2ZOgdV~HO#`lt*@_t<(*7OIDgOE(O%^}jtp$Q1J%!k zgu&0bFY3A-xpw1+Mw*&mcV)$)U2RikFuz}+M0|G7_EiKu3e>TTX+e@hSe}%J1DC-X zt&urh(R5MF=H2RR!?a{*Ai%T~w&T6})gAR0^qL+7eh@yGl`kU-u-YFQMv~P?R2b8i zE5RtbTJ+byc({Sc98D6STk?i#Y+7moIBfp@P!Qtlwjv?F2+1&lxE>Ja(8 zf0){UV1!#>dzaA8???G6#Q-YEnF9()4Kh1n;}T4wWHCaE;x>H!#a{&DjH2sQ#a;{D z&D1ta1+CrPyc$dPHhmTLA%gdIhM_`E>y|DVliyz+T(J=x8M6(Fup{2XLtSCJvf{kA zCoEGi2-MhM+z=IX#ev2F66x8v9*y?6&o3LnC&gVsmw$B%S_j;<3m{rAyYer;-HcmW zLLxYGPTV5u%prolsr05o#oRJ7c(j;MY7j%1_~C2fQ;K&;#QcU-H2y^1(wDy6_oC26 ztGe{7fGdThx+3a#;9NkL;C2v6+z$SNwoBw2bG=k%%+kY|b7zOnzsL#+vpz8tF4I)? zNxB5UU8mZL_Hl-;zZ`{bL+C0gl3hG2Q8Y&0JSoh%y4gQzjJY)a>MWIr>C4R7bD9NP zvBFx+oo_X8s;b*p{?}*qL2~sGsheoj>JvThxa!wg@T95L%B`JX`LZA%^fPhZkJJ|N z@+MpoLq!2U$LpQq=KFR}4nRrOEEph7MO(e0opCh2!Tvx?&6c3wP0BT*Iiu|=wCq&V zb`oZCpdist1|8SfB5&pN?UPR-E-zrtg2p<|<^7eqj(5oi>8VT=v22!6{bVxf3VhVo zKawTAI!dKI2u7ZaC5;~*Zp;~@PFB>N9`Y*d&T784W^>YtGvIdf`7h|Ec@XAu+htta zd8ZwwCsk1(3SX@QUt!gs!Jh=I$%2VvT}89t){7z2=I@0i_&Sy%cQjJefc~+uLVYB_kQZtnbID*E>EfsElldHP-x zSZQ3w*s*4$Co9M~``UGFg1+lu`d=MR?b~du7#!__C}jhwIzrjdIzp*SnqF-ak}N}r zZv05C69JLwXdbxS=?MgT5@tUkiCd<#;;0Ni)|rR|y!Z_3C3w-sAyOk?+g&Tb3GxI! zOf4+J4HVPUn*pA8?~j|stCG#5zFb+z4T_jQ#C2dKWHn3m55!Z?l}=05FOzO*SVv+d zNh?z|maSd32g!3%Gz_46yZV1YNW>LUW*>y|mp61NB$#irQ5i9wtQCJaVRH>zIaqAH z9ccBZm;(HDa6G(s)0=|ykac?<)Z>Q;LFb`|)%Aeose=H(I2SZf|~7*%S|Y&ZoHIbtYjyQ>5C8 z+a)#2(_xGsAO9c(7Yc49^kpEM#e1wA8}083NiL%BwK_VFSU(ssjZ;C>IQZNg{^Z40 za{^#dXeVmqAq5X0b_tK^|C42M6cM5-ZMAF_mD?JRCbfAsdViU{Dt?1X0c_W#JzpvG zR?r&OFF7#&g$t_{ zPn3&KIO+-0{C@p;bv--BM8xOydP&qzaDBDat7y8ChZpJ;1(z80YbxUv-we1Z`0bX% z+RdMt_4y#-hGm&aMb!aCj*?(OO1G&7>mrdBj;xcPU^`XlyRK~pw>sS!-u9o%G@JoV zV4ax_@D%;sTtO5|Et%%&zV{&N;Slf-@XH!9W+s zga}vt5?wFA%P+vo-TU%bAHc~^{>A3Bb-Tas=mDif_PhDvoem~N7yU^ph3~XXH%1b4;c4K0{AL^{NDn0nuYdSy^Vy?M-^nJ(uJyY_ zo8A_iZrc)YcJ3K2{>Lw;X5j9SHXG_1~T^5J~w$_B&bztkzR3L*LtpB`QPz zR~!(I(bSU(3R|~=O|k+ zaMB#{^El3{e<=jAwGDW3!A4YP{!bS$gE~xx?~p(mgI7U4z4xp3UEjAEB&)^}q@iA_ zHxI(gr(SR5zd+OX;VBo92QH8K?zh()ue3$%$*6;@7&&x_IkE^M8d;i@HHH|GCNU?! zS;l|2-oFbEgC6E@t* z6P`P_7S@d)Q005OvBWw0LkhPa#8NUTGEv)z;2;Jps-}VbmZt9dF_@G#We3U^n-qpV zsj$`lP$k&MRh-8xL+BRaq<}UVj<{;;YGIbwe#_+7ef-^D?EmX8ABgSeoAz*9FZ{c; zs1T4B3GIl|@}Khj4^GZ!1pT=tg?tn`Stryv)+NxMV)xzd^KfKm`LSUsf2d48?%uy= zuv6K-vYmiF;N|tF6W7%vM|yJa#~m{XHtmJP{LC#7uzAql|Mr?6&lJamiB)ad9KDFa zO>v=7jviNlUc)L&6MLLp;d=*t6IuidwA6i2lnKIBhp)WvM&sOsjyP%dPn~^JCe&77 zYs(Qf{hbV53rA&@RXZ2Y>aDiW`cZU{H*-Sf_^>~7w5dwFjQK!$5*}iZfXGoi=qUjQ z^v%RXMDZLs)$NllAVidJ|K>f=W#BC3jJ#o}8S`~WjK|7Dy5UAt9_2B98a0CkP1or! z3ySB!oGibisiW>U)4#;TJq|3btoV9#fgv>G7>P8BaXs*S`!?%Vt~W%BmU&VxOAn#G z1Aj77 zWKrv+vnXjo=<~Y0d>6qWJ?U3KXm)GUF2Apy0?0FibTo~<@r1<#(TZ8?NiZ?`n- z4RUjGe7`=PABgjrG^rIMtUo?)9^Qj-aZ1o#c{Tl!uu-s{+X$f~;hnLy_Elovt2_T1gJx+Ao+&o?Vo$sE2&r?g$wqBX$fu>Z3 z_L%22*P&GzxXfGmIP4)iR1#4wot?I*2t z;9{3QKXwtrq^%J}Kxz{`34unT`37=t1A$4VUOpENiQL?MKEIE96w&=jMpp-~Pxm~k zun)CEEVN|U@lFVo)GtjZ)>DKAtt{e2b+#0bQ%<9GWhwYPu&7S97AP8a*%EfG?xn(M z7=40o!HT%<>#D=9ebd9bg`u3sb7)s?&SdYq6g(apWoi)3-Jo2npB2Nrj*$=jeDKE8 z)|5L%`wXbWHh|lHQaoeyKIa%%r`d@k%r>yq zQMWDyS^EK`eUH>&*2av2e?hc&4;PO|lC_Z=qWd$Vz?ZF`SEqKJOcEB4y~t;o9SOL= z+u8kT?x_j)SNJzUt1w5G_%vCfz}vG3AC;qmTycQ84fCp z3LmzFCJpaX=#9cv2F;Sn`17A57NvQ{6AxpIKq(G=B!IKw(c`2@3 z1}rQ9Zcoz%-%ba6yOq~OQI0^asGuvf_qkWlb(Om9zK|?eedzwHOKr!@C8~*qvxI< z#@D`A3-McRM=YU~PJ^uA5OdV>Hf|i{;S&pV0YA?n9wT@x)j19Hl8iE`((BEqR@3PO zU7m}#=dJ`hSM%k(w|$)*t+ec5&>;B58jfhaoUhk+KDq^aUUw?H(YI^K{#+r8Nvgv& z5mi_Q*=OiR5`c(ubAz|`R-N!v@ib*h7EzdO;jg5oer2rrYQ+o)sIgD>0Qy!aOJfm6 zmdE(U#CbC1gb#)}9Y|=mN|ljOW+{o-(w=<5hjw+3HZKnL6fqu)B>y!9rhPXl624! z3hjLG%KmQUJhiqCX#BU4*LLMzn%I{^l;myOM(MJW$QFR(i_|i3NLx|tV|e2@3jeMr z4PQ25Ia52NneCI$LHRV$ryo~`r;!(CB&keN&vbwbH7)$p^!hdJtrxV3rzW#!pnw@!)^J7v2v^=+ve>FeTO zz8@<$7cXCBuhAkAD*lsszou$a(ifQh`Q>MH20@!yQ*h| z`opdm!_+NyRTzv_F6>S@GUUmyZMT8LRpAogH#u7Jw7h04LB%xP7KJIiOVtCevdMUI zj(Q18$#34f+k-L5`kfxH+oZLxTgQl*CDzvBKn>Mi%U8?!+!~~WzhS*Bni{5r>H(FE z;V+q@Q3Uz)psS^$J<`2k(rN><87(_PnnV9MqXR4Rlv)M%dR9kI|0ku{Q82>)d z)Y1_V*wAZzl{9qT@{Hb$9>#?Sb~d z#1&m+B|LBhn8YAGZ&R(uBsK$q7wU{+uTk7eA z3xU!UuegGw{Ah@B+EAe{eE|p+2n+Zu7~|qPbhHW)nQOVsOuu^f&_E}k6sRAh@)l7ds$O9={B-FhpsG4RL-S-&F*QWEO;f^5l6D^Kd_O_fy< zDH3xuoeigIvhCh$idcAh=YYAyEDcd3>O%wM)qp9ro_x@kNJv%E+Holk$gLiQlLyF; zhFv$&eE21K{N!*P_Y=c;3Y;Ymnu({ZZE20m6%l?+{4gcm=_xpbq z|3%nF*HMf4qRR8reSifjt*}i>kA*wXgpycP8~lNQ)dY__7}^rXtfz^XoK9%v#*KLf zR82Yrnhp+LgpX9mng=)FcD;E!_tsMAce5*Zelcw9m@58nq^sT3?plGqoVjUW3r~aZ zSo}LQ(#cBdtIVU%BZO5+t9Su_Y`IC)!7;Q_%E@(!5y8R@tTGy}${o>!_2C<@aD>b; zaDfZgx2qpdywU?>Q@VUJU*UFovc`O5>IXj?@d)rD}7MFQvV;kYkwzbMnkeQ>o@BknfbEpI$PA1V5A{^@g}e)tjF8 z1uLA&aA8eNU*ku>p{S7tg3FKaKiRz@A*Y^lgy5N_*vh|L;Pr_*5L>yCzbxsDcspVe znK`T3MM-S>5HXg#;-s?1Da3K!X60Q$D^69*V|xC%uAFBS#=b*GGp00)6Y;>TJ3!ZP zBib74&3^PjAyiyuijaDg9e-z&GyRM+b`eql#lvf8$(h?BBv?EGG+WFSY_fM~ru|@$ z1K zjai;WzC{X@%9k$%T7+7ugn8(fv(F-5@+9VDoGZpw9C|sfjT&f(H1)>@+|a4%;&oVs z^tfP3&;U+&OBj}`Lszqb17xrNGD1>@J}`L<>Fc%rQ!sOHdX2&)TT$03b75?-o70& znBVjBazB#@8SQ#`y#$=!Q_L)%PtO7}{gEOgp&P0kE9n=jp+FE+_3A6yG%&5$ajxdC ztmW&$^Re0L>J}{zIi@ayXx{1NZ-I%f4hnMP?_iacK$1RNki>2o>F*VcS-Dl2 zEfW&Y;nMKS9q?U>h5t%%pl`S88qGj#h&>t4EW4m8WpfvMo5_mi-b&4RHi~Ge#!U<= zhO$8cq-QchCMU8s%Rsq-uOjHMgDL^#^Luq=JNYw(b8-yvn*Zna)G13-xn9xZff`oB zc1j*wB{x;eSI+~sRiv@FnLBS`#avn%Hl71w8f^8KnQ{Zzt8%P{W7#x8JMLQuZ*Q*u zN+#EotDoG0<|9Svo>=&#Ip!IGo5(EVj{nE@?bUX8$Z0MSriJY0WJHr{$p)qVw9+RV zXTJf(?a?jJBre|t;aNyT4=y7nnDA*}%(`LPQ!o__u1y9_bSGp&3HuaWT=x;xzIkDX zm=$|G;@c9O$`VJvr4?ynfep*TG_g49Eqt2@P!d>L$;zT&8J!Co7LdmH05BWWeKX7` zxGWgnB$`oHX6ma@P(F%C0whPEO37DJ=2qeE2pRQ4f+7Es*eGQ~$eQUX=~6Rz+8|kG zVluMz`d@3BcNJIOH~Rk90~Y?*13od^;4B#my!AQpXt6)Jz*+L1SF?rW@h*hn1pvyH zI_}|T*d-tdKLaPtm$+dnW0gEI!tx{aRl)fgg{r~4h=CWEG3lBDB<2?7W99#-PArN~ zTXwHiOTa9NCmH0GX6}d#{I8*6Eb2M%67wuHt>S!tC6z*y}S2~V(v5Xu1lY!pRy@N}g)Z1Yq-l@-S!bvCvJ6dZCx8(QnxGGjY*zZ-< zmy@t%+7u#;oxDnX*I0-J={s}h+o#j-3AAn_E-sRMQ`K7;u-^Nfvx&}=xP*BcW1x07 z6r33azx?i|e1xT^SmS5&-;N#q-!6x_J?&2O4S^uAyuYv@s9;Bm$2;Mhb+B4#t``oL zLgixrqcq8aDTewBN?Tv$pFTb!Iu;DK>{vxUlkoT8dzYi!yg|apf6gRjeHx>Wq~YD~tRxiXV}n`Oq)FpxH&a zUhETZUY~w@Hq_WD-l0G-qlIrq7@#AY*DFpK6*g48#X$|HtGVjd zL5tzVg?}?i^Lam5ZH(Z^{+X5Cnmy0jwtj9C`NtC+pR04q+dA8xDkfkkk#aXT;qO^3 zE16fLWq8PEauTZu(ncsy@c6%{543NVAxp^P_N!xD7#0ewpc3=%7h46Zi$BWSQ zR4rN&>Dgg0FCT>vx6DkgLqslG4Qpi}E{u|)R8x3^9?lpzzY*L#S3;f*9Bzmo@zy%<=Ms$8>8I}K`+mrErGP9eKUlvtn14|%-I zoA_*2!QHo-1c8C+#jOD#m>8UqW1qX>l^KnxuHpbFtF zRnXJX*(U=#6$Z$qm}ckS8H z*LAZ|{wW?|PUg!0zAW-T_Se$|y*`dlfYn4NQ?8!x=DD>>Q;yVCBiL5?9dMPBBBCmr zk-s)!E@U7 zv~iIop#nwRT`#9uTLky#sFj9NsX5BK2>gW%8BAthkVDKNVMx>p5W0oCw6hGR|5>DK zg2Nz69>^yZp9wpllP(b0UKN+ZT6e+Tivh`?9)=MN+g>yuo&Z-*F8>jzx<>y2+A|2q?~2Ne@b{ZoLT_gm&*xJt zktUtdhEx(4H!tW+M;d9HC2m1bs@!)t z%`f3Ox-**;oJU&#Lz--Ja9m{vNtspA8y99XGv@JKFEZPr;u-Gmaq~%QrKcGsroGLG zP-d2Lp;A)?qalE2jOWw-H+BouU1TaF%hGvFd_Imox}7*ZGFiuq{lSl&=EzeQyo(Vg ziZ<2k+o#p*B>R`8s1(F@_^w5OL&(T^R;c$HGm(U| z0IEf2{05TT6`r=itQTMPiMTJ%ci)d+JR5m8fbW8z<=u)zGtH0R`K2nuv!5ZkfH?h5 zkUbvle*R7_zRsaR-Q^*nqI2Jq@(NDv&aDzJ++t=kJiQJs=t`YqW9$>z7&4>Z^@ns~ z0;_x?8_K+TnJs;ZD9(bbANf zoxbPHb0Ma7lDVWdBe)=LD^LL+evBi9eh`_(mH-hd=f$1k2Z{Bfzvsy_AEWA8)hATglKn zs|*Zh)9*1dvlRt=a38w0bL$RDr}!X;2X4<&Lg$RQ4g2^7%e1om<^NK91d?dh(;$nq zQzGawqiHT0^zHW{gcB!k+sin9B`faK@W4<)Wro`C~iOm{zd@K~w_LPR0&2qJ>6TKg8II2KR#S)>P1FJ7;WtbAww zf?)l&uKWn&#N?Q&CO;^~?}|&+4aC)l+F}-xDWZ>{nJYAvoq@X;`lx*E@`N?R{6Ti5 zA@}|AxCM= zy4Xr_91PXyuLe{>t6IoRt=y)c07{WrvD6+JTs23c@3ZSr<(qaB{p+`>b5;!qPpztS zXt2W#PPj~YNev7SMKajN3+%3mu0C?gkn1ws1RS7hM8=DeJ2p`81p)ndNKQ?J@JL3^ zh@e?qW0-b;tpx8yP3geZ%5kqw)DPotX{%#M3s$N^n<+~TB!wayO>x`*PiEBl8*?ww zueP+&lkny)@iw9U9J<|H(oJI!#5MgWOUJSg7yM94z*5zFe^}eQ3$OWh52|yGt^w{u z!<53xMA(^~f}9kzZ*4BmU|F1exLt}>2rUuvi-k4Oi3dlgppO2hl86PEFSR2VL&%CZ z1ZvTFq9W|y2QsEuv^fM2l(mTQ55h}0Y!%vMQChGa(IbWZGFKSa5MrmwSJd0JK=MY^ zWl?dh+&M-}2uxPAf`}INE;?hZ` zG?{9V3*!)u!F;90smG$WMB!!`IT}!b*p3!|jJ05*638j{t%);2*(RLcqxse?6U;NS zu;gL)G$|)9m<4B*C?_bOYYrSO6|2fAW2d1K07uhC>I!O2L2Mn<1?4{kR2{|6?fx%~ zJO1C|zA$5(?mR_54}uvD2@g+rV}3{yB@&3i2XtC-qX*sOe5i*fMHZeFJtD3Ou3}ZkrUsqNw08OOj9l=4(+QoX1iCGn;U6Ff0z}Jud8#W1>uE>bZ0q^CC14Xp1r1Yn=7iQS~(3 zPU?@KNI5E98_EXR88erJ4eTVeIm1+}%i(0s?#9zFqd9(#W(^5jnKBnx$GPf-+bD0w ziPI|0K1KP)l1?gRb;xvAn$$;Pn=((>>XhMJZbK1l+5ZQW``UgBu`Yjg|GM}@QpVVfqEG>rX<18otK?oZ!iY7yNCrUNzb4D~?{P2ecLUs0nc!7`!!R&N9SgOxhUem56LVCa*;1Ap*8yBt(wYIjup9yDN&{%T^=FqMA>~Fg7hF z2-8$32hJI&Sr{TmDfz1gAl_=aT3&RvC|a28gwILf(>GMB5;s3^A0Arg? zM=mCEiyl~3@N^b}B0=om$nQsv5vXMe@C^0$m%pxw`ulQ5)d_wOM_B}mi@ENT|A2iU zZLwy>XkyFiQ%n(ENm+9yxG< znQ&2(ME^fzy<>2tUDU0eq+_dN+qP}nwr$(CZQHhYY_nr_IvsrJ=RIG&r|SIN|8~u) zd#<(SxW<@oUzh%W?RlxX)F>T*cL?Jvl_D-O=rmXoN;TMlOAVwK+9i?Eer%m5snmCQjPyMe?!0$SzP+3|c z0@{s)kqpl%JpK zUr+P?K6!^5!9|cxL)YMNEJCOjLReM3+n&MBU{rq}(so4xmEeQ&lmWFcIDu1fkjEI2Q8 zg5x@CNF$b{h(MgiSPddhFF4X;G%zb|cIgyqO*iLF*lLVQ#gCSwQ*qqS8zA352E*_* z=n^2ErR_Mo^K^ffOhb<`)|SY!sIcd_mfVk+C+oEP^IB3m!+D;B4!1)o`+7d*!oVJ zq$ovkI?z56{E z^>(Ok-5&&yKll$l!o=l*eqdro023mmFXR=-4AX^uui7mO>?27p=S)Ip-T@zy5$W|) zoGNV$pBpE&ijXt!*-RN|ZD=3GjLgh-+8(aG>xvjMZBptKg;r%K}U+H29O=>lyvQFs9W zp9VX%TV3gE|3|Ts{-ao>?M%93w5LKQNsOs_FMKem&cOt9prDDFoED|DS?^@xza2 z^Xr&Wb04K0Gp*I)-- zbjdtWIxmePQfUh-%+63GPrg^9B%<>)ie(F5nW8lkKHCIVn~Yo?(b%b2WUi}FIz#&z zIJLMkQ{X$O$T#BD6+7E2FTJe;FB<=R2%YKIQs30WhzQT=EIyy|y^QGmy2tUFifZXV zP4d2L37M9lw99M6w&Wz|xjv+51-EP|bRb9$8753PzMjYfk}kYC`O^TuggGkJF#32R zh3meuFbhF6XSxD233~^K7mA5P(4_dWdhYz4;==3^X(m{(o`0uC%o~KKAc3~9GF&B) z?P>ffD05`@I!BOYC-`ZMz@scjmJ~mWt8w-= z>pe<))L|eGm>Eep9gyiLuGm15psnM-S7ON=a@6T@+L{r6lafe0gnJiC3e-j*vC19E z$v0Nr{wmtrcL+~i^5iZ}M+K1()|_f~2v)~r@EHLa>Q!c;wo8~2*?K?q3!ApsEu$eXIed8nFlY#$$U2O-HEz)fzm>yx+ z4oHuK1329S_F?m~x%iG5#J=UdCS?^521~M&2WY6sA`+QOYpz{+AXvv};1tBD<>GSQ zIc2aT>{CMsiC`cyI9QP5W@IQ4FM~i9^4OwFg5(1^FoQbcI#?(uTp(0r!Tarl`XAgz zUFP6=a&5(3s?hZq-)|O-DU0P;)kefzM>wl@lQ;zh-0xc2T+lfGH1lEBzP4s#o`CCS z31?j}qZ`Mni%;fUSAdAUO;$y@4ZTe-B6yfea*%vn9-wrDEas`o1Lx)T?NV0^TOIP3 zw4Rd~etG*$7spuH=*rrc!0qP=G z$OtCUTB#V0YO$V`VT3o6ebsN2G!A+L=|a0}K2an=5T2H`Q6oBd{1L2MU;Ez>eV@4f zd%}YM2hOH^PfNgusLqm2i{U05buu8&PGSUc6(^-l(>2tal7-B4NWVTxarK&3L02 zuhN?x^s%nt*g7@&8>kb_NkaT^zk`!-sBUm@<0hkYP^z3f|6s7fdtT)7UN z2G-v}ybe4BV~H)=9a^QVVAEa&qNRRf%72bzc)nI)p`t*j1BY@sMyNsL5|k>Vbjc8H z#m6Fj)ViYu(}MOYLHjL5hpvxIgn1%OS}Y8UNO0m9ws4Gr6O1Tw0e{PykX{IpMnx;u z;irrUQ34pJfCTI#6G4J?Az7LosG4M%oyIDSm5x}gIWsu>w2S!$@Vv(Io1Oaj zepLsuUE9yuVVt}HU4H-uY5wdGWC88f)k}7yV<1(=W_HL;L}_3H`(?x0Id|^}W{^@+ z0vn{`BPO;4!TCN(btx(W$+kcS%1pIpQjA2Isg&2*I(|l0 z6*mg9D(hjF`dj(mi0>bHukDDvCE9{E020PmGC@Hm!vL0yc_O7~3PO-~79qJT3YO*~ zgE9*yQ+O^Q&sD%!5@rCg@dMlk)an>>fTrqtu;BHFs3fF3YiHPd)r{gaX_-_nyb2|( zR4|=F3&~5t6eDNdSfdxKb0~uqDJzEDVV8_%wndDukJafA(poYT|Fp2Tuoc&O0vs~fu z3fj6WTee~=s1VkWMq6^yh!rIW0(>zQgy;&8X-FeSIWgLm>D#ulMIBXd02@LJgR4lN z7CqU}h(abVxE@@?iKyC7x?Dj^N2zmtMbRC*5bL(8^b4!TvZrvb>?%73RGF#3oVL@t z9(}d{DVpuSqHQ^#Z?SGW!RY*m62x5(KUHvuCV*0eV;NGWY*;iWRBoQ^CQq{lEmhi; zrVt#zzwi?Hq2cqxm?Y#vWdt8SnSs1zQT2)XuWMW!D%LO5eMtgR+{qFpwm0m<1W;0< z>WrCZG9F|pHvM}348hqB_V7&WbApd)Qv11nzQjknmmdBflv2sY%>B^Zq}G-PUk?Ux zrVmcg&Jk3*Nm7FC9#~~Zxh2jPJCPPNQo>4IV@rZCh7A(E5muN1xQhNBsgw*?j7~Zv z8j%v+$Z>Ez2_rIFFO>NJ$|DXs$?qMq6)<<6V3R2+7^Lg zLCO52x)K(7zUW1g2w);Fiyul?p-3tN(cizXa9S0qnT zGo%xS5Jp*X$JvG?baa6-H~|Lah6p&yLIFeN6UYfvMgujQ3(THzwB^oz^3SIb|3&Gr+-6 z7k*JfDX&aBE#f!e#7PnT(d18MyldZdF;OieH?EMuqS6u(6SAMcCC-b@L5#3# zjf#ZO(VbIoW|a^lWKH%K45n8|e_Ys9VC2_`)>Qbr_#gH6kLl-o;a;Ena?=KigzS1l zXG3&qTmm&7l!Y|&SV>rpP)}A19U{ZCbfM9RqmlOH6jeMG+~c_(HDI4g12<+Fj7^BZ zf5N7Zu$pD;L1rjTO97J8(+KH;`C7LXT6YPPm?c4#7azz0R&}9|3+F@{ zCm`RCVm*PZA1UCU9cxE8qMx`%)y<^*j!{vel4iD zM!;<}SHWX0Bi#lPXwAwKp3WQ#Smbiaow`q7Rb?-bX>@h*$V!TC+(^)t`V~5XXuUsS zX7_G<16$pzDfvHaWZJ*09BpUfHIrR2SO{s2b{?1Bb0&fVX8x!!PYcwRc{(EWf`Awb zMIa5&b|J+NMxSJH)axi+_IOXv!@Cc~iQxropJ5B7WsZfE0|ifbLxdYabc*HH5RVd& z1-0Iiq<%R@^Lyg869=)g&8)M(v6Ba2KPB~UlOGj_*T#^@elGhD9+p zO&qgQo8-G^HNC*PN**kOFalKBxM%6T{x~q5s{BZuHN}LeCqH5aHh?^lo|_872W&c7 z8HJ#h6BEU^1Vjb32pB>c0PLw`o9!0h&J%vR1Ruu?o5`5{J^FUa0@^bE~weNUL*&ep1eDKiCot> z&9AxL5&EAeug^CrA$VQf>v}z+4Z|XDItVB4@aBeng$RxKI7f_4C|f5P%CymWGS;T* zk&9S2>==G;aYH*2yhrmZ_yYBW;~`lq?NPPRR0`+BWtrO49>fDtUlT)QiO#1&X*ov9 zTnW77n&KS#V~#W}_5ry8KSU+bmCC_{?rr04`FY{NE~;S0j0pzR2u_GK{2cidmJn0f zP|4?~-#zdxp+5p(k5IWvm-V*=sOl62|R&hmTuX6mRm9C6rC(@K3gNmXudt8>a z8pcZ_nJ&K5#^Rt;g++-6lS2LFqBn2pY>HJy%Jl4^mD^yYq>S1{7>E@TsnD;R4rypB z^*CLx03+Pf*i$kJ_UV7<`hR!d#(zhq6Y-YmwjIo!2RIH^onULBXaJNNGdyDn+RBe+ z_PSK}Uyz`LBE1EO=>;P3ZcuVPtOFowssxxRs*3)pC2~TW6lH|zm4-|Qh$N68PT=E1 z1|kZ;EL8xhx^fEohoM<-dIIsf&nOvsi3S+X!4 zlJAXjP)(5Sol9JzZYXx_KUgGfs=WoZBf+7PUQnJ%BsB! zQOiqt&7fsJE;SDy5pN7uiXQ|DJsg zUDT2L(2i?d-`2i}aBHaQ*XA}o<(j`4Ey=@Tycs)1W@ z!Q0&raX(aW!}fyxutgFV4Q4*7%oxHxMs6%)44>pw5@4b?#X1^@qPzzLLvSN%RV&Z=-R&Ju~hb+^KmS%F$yRnT&2=D*=1ZJrK zvKCu7!bghoFBu{%0|Y85WncU>^(2VKiFyzY!Wmgjrq^_n(S%k2jbi?laauU-+hA$- zWyFkP*Ki@eKIl0E3#n6!PVfI(H&Mw$T?j)3ijCCbvnH&5M8QW~rHHzU;8o$yi94Mf zQ+M}`WAk~LS0dDHJ6u1*GY@7raL#JZa+o#{A$UuelGsGmp!Swszs=q$jf;u3MBpW- zPOcuS8%+iw1}4zVFP48OpNAkt0^zo>W0gDQJPiXSH7}5Fo7VO`GA?CC&bN~=-5aHL9eXRdGYSI3=AZWWXua)d_!FG9bzQDW% zphwQB%?13Xv3q06yQpq|Xd}-?uy?m%lw)W8O$0WCdm?CQzTA_V2ss+DN}ApO0k8f^ zWGAE;tHP<{KcPEeIV*vqrgaAi&xuOl%&GhAwM5`#85PYU&P+g#RgWueOkT6@vrxMJ z0|E~pUoS6z|6wch32LC4TId#YuPixP+{{|kAzde7xwpgHe*WIOfiib*&GFCs-?iWP zd>CLz=YN3L*qB)_7sZ?Fth){PUnD$*sYAMLsLKV-uQe?UohFOQD9x4KIySJ77z@_W zCV@4j=E$gUsI;za9R$?<3`7f;Yz1a(H{^3L-G(`=3(6KvR{%<68_rEBTJuOh*J7sC0 z#TAne*^E_%@LT-Q(5t*2z;w;K5kG$rG?#FHUk4rpHz8pL@KEU({IMZVLYxb626&j_5O7tFP=|`_wboT~7=#te8mmePHQ`%k zCpI|a@+9oWsXF?1`VJmHpTO!P52qpdN1r_P3=Lt3zBt3trkK{Fuy^Bzjvj5=Wy-!^ z)hLmyWDU_9Je!iwZhxnt9${@ynj0>-T>T|dRa#ADirW4qi;pL-e_c$sa(I+vYNb>Q zX8Bp)H3aC`clydrtU-=VxDfYscZ^-|E)z#1?vXwkXp~?}3FM)r7-GeP;dd3{%plG4E;7Ge zXn_(JIDR?o`cL$u!PW?-^_*US-|CNq$yVNc2ztS-Pf$&Sr z93Xs30l*yawh_F*4 zFewSB!#v-Q>*}xn>vjEUy14sGnEP+>5x0{+VJ1^9%tuan*FP`1@I6z)N!|A^k|B~O zxiuK|RIzNbD`F-4Z>4cPK|H<%swJuv{F4Pv;nTmz(y9W*L+sdByAHON0>06fp-a(Tu4bP@s@)u!s}J z(8$ZVthnPx9&*5uCm`tL2dW{VgJC-aB9n*B@{Jmtz=9~rI8(5dOM=W!3b7fiA|%BL znSb7?6IEwLJ#E?GkABpv5LQ>2`1|{RoF7y>wf6UO=OXLgl4gg*0DHtL;p(VQ!sQ6L z#?gol1|6)15lC`3^a=H2&J23E^YK0e`u1) zQ{;lKfUKK+ItH?3l9wc7AZKDaaK^O}%D^hgP(;>9V@#{Cw)B@AdL=QuLyDGuNOotY z<>K_8qnFpf6WX<5B({om0ZaEHbt|aqM5bDC6hfV~MN#-4xn0}zAC&gXtu4CK6wP8E zmI5i=XTVB=kKt#jLggorndf1H7Vclyv5E$I#2gg9FZl z4Ru&a$Zlz8jKVVIoMNi|&x!$32Y5*crCAkr5EDa;fTEH-Dn(n* zCQTYMX%c3tG+Hzm5}KUEoYWF*zcZ@uo6k^d$5IFEeQ#HlC-o=tI{_MIW2|(+gCnh{ zu&4#T9r!Ilewe^hH0M-=fz^IUvf{~7#hg3~Zz+3P^fTaK(uL)D*e|J8e%}0pZ{^GT z?u7;adGoz2TB_50gM7b+h%R z2NU?w(gR9!21=}iWfD}2N$53eP>yACK zp`DJoWi1=jDtJ8oJiYlDx+ikCDc==wSlTf&1FABjb@5ZL_1LJ&|AF}auL)nmo%5`f z4+B9_y=+_AMeGf6#XXF?JGA(^l}-r=9%y8z0@ywtExzGnqT%MWQhy{v(r>H2hGdw%aH(~&0!29!U z%`Ru?U1pvO8RgHaWD+650_lLFlo>qZjK7Zp6XqcxT429YEpz7kT zha0L?K@==jk%9yb$OVT7yuyQu*hHJcm|nzSii|d6x!}>uqHO2SYU&U9F=lBYeZZ(}i-}03Dz@o|dOEoaEXe4nm}aMvN2GqiCM~`a5?R;r z>@9p1!NWjQ9P)yX1+c)*Gg>v4;))15m(M~`rWt7kIHDX`DniHXZ-_MNj{XdsJl>uj zPOd(UJY4$kfBfI8?@jn2g<_{V$b#a3XH#3NiOmkNtc?(l!pYEn+Z^cVPopt@OE@B?Nv>vcj|jUY0$*e>>&)Ku`xGvQ?8-23)@$1W!QHX^x!uZDD5 zuQG*(TSZTYZtPIO4i@v5eh*MCgGoypEcGsh@@Y)W2K^r@(eK}#=zee54XhTdj&`9! z&?m72L@*&>;t1O^N>@QNt;B;2N~FHFLwUSo`FzIGl*0P;!l_br3T)zlK_P-pceYM$*U!uUYufxfwBacN@%P^Q&E+k8eDYa6)P_(MF;t2G9Z@x6tco>Al@K^F zs_gUTzGw;AGN}tihM1sD1F8mL5F_2F*&8_Ph{0_~Y|ta&$r89?#uZ+ zUtnZL4j^k2eqRGA@HyDQOiG6xv#PAT;%!Kl+Ks5wUzMt6Day>dhE*mMlPSThWq*8n z5qD$MAn=tm7-aqmsb`cbbx9FsfC9(QMeJPw6|r6H zub;m*=frka5!mO>sy$Z_EX)_@N$4uqAq9rtn~JpR*d>&Q56-WyhMLPv>j~t6`i~E? ziwU5^hYtn^fp*h7f+n~rsCz~%edV$kkJoRWh!8%B&s&0MVXIKS3~Rl z7vdcduOjatLBKg(Wqr20L8B_A8bV70c>csw@`K1UvdA5z&Ub}G8Y~gK2`jsGHR*Fx z{E2MB-Nzl<|Ea+I1ddB38O*{syY%o zp--TF$FEf^cM4H4Si1^-T14}5P8OK}n?zSXUp;-&^Y3NDTlggw%@Et4p3f}AJHCuq>;>jcJ`)GjS4b39xumES*Dxp9^&O?U|G4!o^Qr#mL`_`Rpp zOwDr5ac(-fm;e2^u*)%Z?Ah4JgbnvCKp;6}${5#>8A4ZQXSKo}=mlq$g=LK|=#>-w zsszl{?HH?dcqMk+d38zX(xhJ8Zw_SYrJg{QB7sq;F|UWEquQYkI9lqZc336Ey|VHR z)MN#jRyssD!cCj%XzKP81jRykO3^&`bmYf)eJIlF=;l5b0pqC@9Uw{)a=x#LU=De$ zom%hxC(WS!lV)h$n{>x*TLLDoyqFt)s8DoC7Md;Z5#hm(-6?446t(mG;#=^fI4+i* zNLB`&u&^w*Mu2yFafj&kY~%hg)>v8{bec}Zte_#vt&IHQl$!e?RP*ve4#>fnZ@iJzL%;Cv$ zqq&@HU<7Uv6P{S_5dU7bR;d0qNizjp0m{A)*r*nlU!%MEgNNT*)#9&kI97hPkmADq)JiHn0t>*6 zau<@TRb=FRP=!LbRDM}z6^yi@FDuGQA(uwIO;~Ilx)H}Ps23DB2067e6PI}J4Iulh zxmh*0{3x&A-NBp*D0N|HBhNdVBpL;J&n<_CkTiKt4s6s;HUSeQ{W9@Ip#V98 ze5+W;ipOujf_0Wp_OKdlh~LBcfa1N0tJx8;SsZ`e8ZElRa)qz6A^5lwoW7@;wLg8T5cO@VYTKVLO_T~3+_?jeugxB}?cjGgz zm^A3{AOHJ6{^uKioLchW`HtRPx`l&0ET6fxVavCF*yQs@9j{v(hR2dy;g2a+NN3>8 zj;aLPZsAZTF)^`kOvJs-ACWo4+LxxY0;#zg| zv&~1i{pY#MgL!^{p>WY{KEFTkjm`od)f^t5&y%_S#})tA+1JB&#AM;rWv;h-K5yq2 z{%5$pSYf}vgFn;AWm=fsZ+ibv%|4yaBmBNUFV}`@C9mfO(5xgBN-WHGLMODV**w)( zhRaYnPRBzeGBZ5|?2WzXfdXjF;@%rB3F~4**gZl}n%D?M<`5-{TDjHD!_ym9=I;I2 zBJ%mJztyPWi;V-NQV)(@w=38k(6ehK(56{=#sXqS!CV}NMSScTq?+=MSzN`>njDfl z`}8VwqQ6*)iHnJp(fDhAm7K6}vI;ZkLFC3d4=`CqaWGeYM0bU)skpAp;0mrSo7YuK zV~a4$!h{%SC9q74Ay2`xt_r>!MO73B(7}!&DG*zP(_s{0JE5s7)pivXX=RrI{?kQl za{p1QUD}&;=V@B|ys9kV0tG^`j1mTJ6&?O@Hy}m8s81)yhVqbadY1jZ-;?9?y?QnB z^^T7y@Dc7nfj@Wx%8D^uKwF! zkMnu8YSGhwPFBdaGWNYFpadbYh-MWlW0xU|ElKlwwhJw)3!!C2O@0*iWK*;dI=vyT zfYR(+s_=9orzE^-6FQ~!A+1-}kuY8l_ zx~co9`@@LY0ZH{XU4d{F_iuw^@=@JOfU?lQ>&GK5%A}^aFl8qu<*2xn7$sXaYri51 z2q!F8`lczVi+L68_q0rC>s&H7h@@4_Dpd|LbT7nj^GL{5$0r*Vf_+Z0K;A}^^t0y52H14jtsiPC# zS%dx?mOenR(^3F)Z9lFm2GTH81hq`J&X6v~@Xl)&GUOJ0$IT=o z1u}L^d3zQM8FB>zez&j2)0Jb&vjEI6R8zp30i}Zi;K&sjeQq9{n{%+IpI-Cqdy#}B zl}yn`8dR`}dK-184+zbFKinXn=j-=3XTf{*?&enOEcB`C>RN;9e{1XSXMT;=_vv#t zM|W$`@8j&v8pe{7m?{@7r;O&H4yrpR|4E)O=_J@y#8E>?NQ`=4s~Hg?TTzsMBKvNz z1Z>3lM2r(=*%_l86-JaUXeUr5!UulPwf3t3un0uG z13w}(p{e*8ssQK0Olad{c3{)h#n*&!lU(H~U{=*TEqc<^Mw$)WmQ~E8cUh!@q2K8k z$spr}HT0^9w1-u)9KgO6o^Susdi$T3!snlof7ES$9rNv__|g~visNyvN&rS*7>NvO zH^HP5nkq|4C&7~fXkk7tMm!K@GoFioT(nHAUXIp8t;A76-{BzZgjuQ7u~!cluf?VB zb#q_1-6}=Fz7tRm+=`CWp)j{eD2<;WUzjl6y?r#F_%!rCcH8HDIe4__j96g;A+LrG zia-hJ+RJmb2uxH2#tW8H4faH%s1_T1+;la)3+Uk9vxW7 zoabE5(bdykNHu6^%Y}768hrJ=xgHX<{>+#kfThr5#ZF(6)4j(+%S84!kZKl>UA(U^ z+sLY!?~#M@n}+H>O0i}`Vg6Cc% z9&bnX23l`++9Y^qgb><<5R1h=D8MLM7@)^@etx;8!su-j-fUc2G#rf<=& z)2ti~tbL->t|4Z#;*Ff!EY7mTswkQ12_6;)W5efk`CTZ?*Vx*8P5G!whyNSr9Fb)e zG}%eNVr$V{j5Nc#aT&2nc0}r;)!wI7&viA8wHMrUsmxQ*Hkp~{c7w@kyxq&UAzsP@ ziBXoOVe_PYGOND5iFTu9HH-$~%)3w+m7;wutxb}^W1+{D5%09XM%6U1X+YB~5PEs8 z2}SK!8kkzMKz6q5qV1Wgc2|m3l8|*ggA}?g*Nv#r?+FM`uEy(NuCD!A9B~9s?M=pb zI1i{o`&)Ne8zjM3nT3PX=0r`}gy zG_>2U%evgf0Ov(3lJ?&>H@yo-dFd>Xe2omC=0Rz06hzoXnFE#NJBd<-ZVRv*$Obdy z(3>qH5eAQUh28Lby!|bn;Sue&w9{;3)oOwf0gW(6PuHqJ06e6xyD~D&%XkH0m6Ee zjlR+HUe>kadf+HU27j7 zH#v4(A1g_$>>7h4g%u+NjAKzK?iRU1NIu&FN^rGatZy-!c{)#m zqUkLI<1{K-=UaJ}6LOtQj4`rXJSuo8xFQY0MCZf4)1FT5BCvOBS2t78p4$*-h>jHV zowyDULjSyE#lEbBr&T>Q1oh)BTI3>7SHIJ4bsxm zY9QHNW~AT-u?4(ul*u~pei2e$V3)7E9w^G+%58O7e!eau?R_k(Mw69?8cdgaD3kHZ zAza#P7SK4PX%&F9Hb0G|Zkh(3pdp&J=w#I_9ySuIy@UQx8xG4DtX4Zai^t)inOZm7 zQjV4%!FUu$h)%KT-}7nV#rGT>MZfCwxIHM=Yj5)y%*z$364ndr_iVn+nfKmxTq46a z@>;TW-*q$rgbyOvZ`}BPxZ~e{M$|rvx5wTn=l}m%0JGmaurE67v3K51zdD@_Kj(zQ zZ#i7nx%ue2_da@KRzWJ}4R<~N>T0K@HGxpY*bq)PIO~NF^)-}A_ZX>g;vmF#L2+Y= z!w95GidBVr>ur%SDQk_@)_$-$K(~a7azFXDNQQ9u;7K_w!TxL-kq_KzGT(YK74+~( z#j?a(YH_0R?XX>oJKE)M_nkJ&&$1UovB0&xWhr*bdvg(hb&Kq1+p9S_95EJZaRX<8 z%bwpn^`A}~E(hCut0YoiV=AB>5hlO0GRBl??BtbU=z%VQOZK6hkqtldNm_9)J&k7o znY@0i8DkZxm*d@aa|>T^01v29LZg7maYd^TxUS(gEp^Z|5QQOeuxw?&#pm){*RlO& zUx_z~0T>8!Z6<~p_Yt-#k9XMAyoFjQ9*^_T?i*(dADIEP?>KHUPt2U-A9+pXdvf-O~5p(uEOEhu?M9K!V)Rq&Ie- z;5uKeb@w(L+m7Q!zuxt|$oXuy-QsNb3{T&`>D(V$d!P2l>D=nNM9M<6SX)cdeRv7e zjKgKJYRLyxm=0S%*WRoQC5Tehy{Jp`P#O_Bu*Uy^`*IZB;Il8;Bqe3#K?_y&!oDrE zuIPgnNWCiSwlsgk(s+6QLNmy_o5x1dIAY0U?v+V0R-nCJ(z2i+XG?J{U2qN9Oyge) z6$dpy#Rxy7`nz&`CQ@rFLmOl>@6Tn<7Zfm7iIN?;n=q^Sw0wozr6!Wjv)o`%y$6`x zt?_nQYCM>(8;{pte>sztSr%`>S;~f{fJp&k>jR@w*m^yyV4;Dju?a+($AMRj7N-uc zIP5^slv7r=owM`KWwXBr+!#NGyLsGZvNyEV#4Q+FCaYgd-{5qaZvjZ>A$ty<+dpI3 z9d$nGy4|mNoaP1ZSO4<;5=M`o*@8G#1`d%DjBuSLIK?!!&Nu>DVP^O{kFy%1P@t5`w zd&P}~g)U1j(fZCd;@j6DBz!pDCW_?KA7I(-3HPDX2>JTZgkwL@YflL43bBzx8$i1fKAEO){Fy-#L)kb`6)-9#5Oe)ge;B%7Nu! z;!o1W=a=p$A%)9&secXSMf+bv`NCO+oB~mXk?8gC8OZZ;OjUP^fD=I?0*S<)ETxSu za}&(6y|Ara(7E}WdTo8}&3?P?r~pxG? zA&n4O8}hdQ6rl0)`dY?sF6z2(d(Q8`TsgW}T9&I{VPz;HY%Mde6AnYyG`5PAHL@nk zjvdQu+u3b!$a}Yh>+yD44QDD3c|@b7Y3Hn2-Rc;Jr$uOw&|+B^)`<&bEc_sf9#-cc z?4z)X$k0lg)oXisGYZU#TQUyY>#`QE`>!k1{_6@hyw0WWngo&scHwBgEsK2CEbYEa zMf1XTn^&g#Y52ZV-e&;M`%$&}w7YwXgAKMn^=L01_Tx9W-o4q@^KrJ?@$|Y4?)5bB zzejF1Tc?RZ#5b+!Ym(CcVNcC}#Z5yMV zxHLVJ=;&H_b*ZbSLPdn&w!PTDSZ3KQQ!%i;+}HVF8%moIx<=I97lBw@%CDP5ZVnOzH}2Czd_4_e3c=zSo2>TGKXLyYQ6l znp@$IsYUp3b0Hj}T&4Cq znHM%-AF`3}kV7i{q@ghw8oHn*@*ZI&+lf5(T5_#GT zS0QRapAVOcmL-<0?EF0o|MG*O@-_*{ukdnE$U<|GjeXVyajm~~oG5r(hnkSrY_YBK zdBGxfwvCI{ylsHXb7B0K0bK4j+n0wAG%}=1e`@aUb7zV@fh8 zt|eXEwC{?Z1%Q!tW6lL8E+c;bC70w^v8aoe9Q-v)j78KYHB{371fXUD%AJ^6-Y3E6zX0)cPmW`tVLh)^|R%>WYJXjlPNZMC`U3s^=x^BRqs=>xk&w3E=*H2&PK5a@| zb{9gWMmTsG;Ki%}*62R*>vDp$gQ9(@ry~J48;@&Nd$00fatI%1-1>k;s)zSQz*^5s ze@R^l_6c%t`Sq(}{+5*zgmTUT=bh4rK-!hlPjnsAMU z875kP^768Mp01YPLA*AQ$g0ro_zwdR8qIM7b9w^*jv0830?$Ba0}R%XrU6f@z!i|z zm$vs=_g&xlYxiB(b$9aX#m&CjP+YYiU}(01Dm>&fcbIa6C{~^{7xgc)l8?O(G7e;F zNBCMM`>NH_(rV%;g9EMSR)?HgHA_kcwc?ocla;FrdZKLiw6O-=_Mvn1R|(0Fl8(2j z4d%1dZtY(38qqw671|aYJc5`Wnp(AhgeVV9PS*mlVh1=axOv7Fzihi&JIvOXm5`Uu zm^5;23tc!)=ICy|Nz(FDUrZskP6^OuG#<}zu_GL4;B)3Q&**MLOrEvO-#|YC>-Yq7RNZ<{=j-t!)dt3REwI~}>0o)gs=+*S= zuc&UdI`J*crE-ZZ-JLqC*;iEuXa_ja(%T_+sW#k>=Th53cOq|_A2n+d1c_)%hv${Q zEB`3T$-MLDY=QkzA{AeW>WqFX+42^+neTl~gWr0aHHRYg_3OWrvH8!*crZGU|1N~} zUrf!iW*5)>E(4RXgjLPLLMrIF|M2aig_Hq@fRxiQbTC;QNiSZhtp#^HV;hr{#ug(H zDv^biM$KWgSO}3M)u4zMNGTPw3}ghL2^3qfWGTFS9m0E_^=(q_mn_73M2c<0J?r=_ zk)#Kb#oZjMK^ zWn@=|cp7TzQd5n{rE4_Nr0Jj}`%3kV^kt_;od;3D1P1H6b-{{7IQLjiPMFa2k z-6d+?P?EwzF-KItk#*jgZX)$l?ZMnC^>=1YL?k*AAyV5Ko@RwpWH;Lid!+@tUm!tb zVD2&eOK7>(Bvwn~XIXgRLpuvH2Z14$rb&Zi3@rvo7BEeLyr^0Ddv>g*IL`&o)~t{H zkU~^mzhY|noM8eFDQiRd!QimXaC;(O=%BHURM@@aV4f(gg2In0d5UeSom~Ei8e^50 z4h>_bPstojXdnvpZ%XVGS7E}In1ky=$6%xK<&{*&T${mhtSI|O3Nzi{)+WEeW>#Sm z`_2W*YVWxO*MZ-u)Zp%JizY&6Pr+z*dIcZH%l099?65uzI(pjVWem&F23FXEmB;9-R4nZ zK_@uUkR54DgrE7m4YrbVc=^#u$^t~DNRC_0Hkp(jq&Z|E$(0?MADk)RZ_73!`vxA9v2tcsx&2#{=E4% zQS07U%HtSSp{SiQ`hD$|`~Ksxa|x8+(g-RK32HXDfid&xz5T7hlyJi!Y$y0Iq(!*u zk6Ql^R5!v7L&vaFh5o{j1{*|~S~jgOgL#zWm5)Ba)oV?Ep}~$)N>X`Qvs39$M6>pl z`b63GK|L`%4{?Rz7<6WX^nj`Kk|$Cye*Q!bcarADa+If0fB$G%C!fqWz+Taau%=(> zFu|2BAS}UVSPlLa$IED`w_VdFey%Q5t!lzxf~VUDh@I!QL=$5$74(}fB>hR2fup`# zTC0227O|dg9_d_B#riHi%I-w;oU&dNq0$dq$=!N#yhkZUjNoN=9o1d1IS)#Gp#boTQ0Gn+Fzqwx#wU?8xK1QNcj#f)xlcdXF`x zqkn%7%b8Zj&0$`k$jBoZP)Kj)4u60Nu&fcx(K2Uqftlm1R=X*lxHr`D=lKu)ZvJQM zxiiMc#&|KXoSz?EZM>R&eO-x_l&IRgT2#w1>+N({YZeIesF6A8_@9>{XZk;<@qaAo|F6^NU5A@1UHm5~{?{Gs@%V#Z zpE~Sr52yA9!X^N}8(R* z2k%iVL#uhH`-m4!I_zIn=7v6(@8eZ(g@(9G$M3Na*Zw2M5#Z%dgtxklJ!}UqlbZn8 ze1_$nu3Z`66px-^G{|VO3gv2t_@j;Ux7{oeEBvO&Dt<7axB&Ois znSadiJBYD|8z(W67;J1`%-{vxM(#+VNeE31lg2hNui}i7gmTm?7Lx1$j~w2n0#hi~ z%uX`=qX=g}3+m8nuW06UTfp4_A&=y&-7@)UNrvK47NOJ1z`WlKM^SFehdyQa?BuGo zPMAubSJ#7JRT7jx@JHq&(c8q{pRa~-t3J1S$;sOKv*iba9Iv?WZEQ6h;#y|Gxm{J+ z6|ATdmB&ap5Q=Vu-16<((=YA^GkaTz;!%3Ahm8M)<3t9FqN1XQ$7xU%4Rgveo6&c8 zGG*<>N~-7eT7!1)pniTT-hty$T%I$)w<;g{hVE~PV=?ZlDU}~9k}lHIElc!*f#jLQQ7OjuPTpBT0Nwxc)Vc^a#SOsGMQ$2{Qt2b=~ufk27*dH!z+V z!3b&bwI(e&N<-GP0kDV)`&M(vDgi}iToN)IjgZ7RqyuY>WhHHM_A_6S6s)9!j z1P_~cUDWPve!G#VxJdu*CD33v>ff=Pyl`)*;*nua5OMfcRxc8#%ck>`LM6NIjBn^F z(X+VFwSH)keOzZT{DzggYQ-b)#u%3z+{(YmV9Z0^l%-cx-U7%*}w_!K<8=?!%um!4Ds{o`(6YYvVL z{+|67dw+g^E`0Ypnx&AWWS5jwqAjcfL57Encp)fBu2Ml;mC0~?e_#3Zw!#-Uz}J0d z#dgZAo<++`(9dy5`+_E#R}vH-!LufBg!Wf&4f8rYBhe^?$|EXAkLb(z<-p*;eT>G(z!Sf8rgVGax*#ff3?mUP4UsBe03UezPDb+k z0|X(qWVv{9)RTibY>AAFe0zJ_^ZuvjebPqs) z?u=r4>arUJS!q}=p-#9<&zrYT*N=W&8Y4IgS2;-+N%XyL@~7XQ{{B{dPFM9SeDo_! zdVflK?`M1M|MWWY3B0e8gzTn3y$?4Ai#ODZFpm$pF?jz$&%t*o1s&U%KpbKA{qp_q zCEMR!wi~(p%$6(4fFUO1>mymQ7s46eVUyP(6JlXsjEZ;`2xGIx)4fbx$d+fT^VkHq z1f3eZP2R7ie8Y!vt66Jzfw$RSr@S0Kh2A~B2-x~_vDHIXW7~DVY|wN0=f`FHr$6oJ zWTN2HwVt=NskiH-Jo0}lZQsb==Ex8a{~o&hwH`?%QT_C?&~vBQlg?ehfm{LAZ7ARk z?3gEl^(5isJkHQx`1a%U+r{R015JMk?-e7T?>C?8UlT8%5)GU?59+K+M!l zykNjn&ckdE=TnDy#7gT99dZn!2{B%z7ot)+vUwpvhnF}CSRt_`Lh*1q>f0|1v4~Ct z=UtT?OA3nfu}>`!jeWmoh6U5CSi-^b)@3<7$CxwK#=IXF{yi3$@l&xS{&6J3b`w8j z#-|8m#pfI*CnbZ6^4we!d$17mhOE~x@tERK^`B28ed>kB%9?;91bpqPBo9bpmk>RY zK=+?8*mNHu@lnGihk8jyf5tG}bDOHlbYOcFrAUd5s(*U?^zPGFQYY_oL{f8=s&R zAGg43hcHNESGft6Y4(lD>n{GMKK#H?3?xNi{+tehI*h=dR+;zP^7z+7P}yxT@Mv;T zDcDJQ9x!mpcn`MpS-!n6q~d3#r1$i-uWS!1KOS1GE4Cp2QDTheedNC_R zoZ&=iQ@tD(CynBjN_nUr?|-%m(eC6Cs(c!>L8slvf-kb7PEsMXfq47q_>b|n$Zx; z{`AdehO}}x=)Azc(#M|;%RGBDc9lnZsNswJaNPrwoU6wGD&G~9*i*RJ(O>^x3k9^Z zZa*$4;2U-P4(k7E9sel-RWTd$M1k2(FWTz#&0J&@0*uzo7ja< z(hWZv)O2y4ZZdm_X-xJrCj%gFNrG;`QC_-ux;+qDVbD_>=MIZ}m1|f)!t(2hbAfAQ z@X<}n&3I?$ewXjLzW3T>8R3i{lg=%t`x*WH3jKXi_3h*8(z>7yeLje2C&_n^>NPcr zE>xF!8;aeNoH)whBUET<$R_sibpbIGAVhe5>-}x({o?X(ogvXP_0?P)=JSqoIf(dK zO6*RGx~LK+e+)VqJV}}Id{~SgL?7tyH?jm*o#|QTAV}Y(h-w()v7o-~M`jDW3Mb2xh$L11eU8(s;L^Lh{mBlUI`mD--MLLaFf7s$^4F<6-W-od~Aym9*J3F5TC|m#@>8p22!E zdd=ly-ML(0;E2LMorT!YRNivmU0y0&ux5@i69CUqeBC>WKlT;DVL)p>>{5=5JN~*- z1ADNg;GVUAK2n9tw{zYsMYiuB*)mOnJ8fr-FJU-j?4 zTaOLfBsr^5Wo#$7pCZ?W-@>6xDbl`Ca?#v^hVH z;(y2$9si=bHTipBQbuYd@cMzMH0`sG{2yh>BK1GGf~C4T9U)DNwZft-3Tb8u?DrAtdR28 z5ytcPx){zC`)x3ykBkr8l-a7~9HJBRlNU5dpmKn7q~Hl)RTEH5aqNu^WPNdg-%Ydo z?ket~;CNz$DY!rbfBr#E&x1n`UaJf*rHpmY({B9She%94o98ms7wTn2Srpu&>WEbC zvD6EA2?`Y9 z_|CMa!)@};UWi=cg|x9=35cjee#xu^--TqSVX0!;^Q1u-3y)X&n(b!ziX0X`(6gwV zX`W>F_Ptp_JVZ}kskIb4;M~}CiS{d~ z;Ns4OFO^h0tXTf2F|;r4kFh5=auT-W9(Goq!(N4d)_(_WJqFQi^V~OLn`alGb*>Ws z0-VC<#wQ;Jp9J3PeB!~EIOO|u%ZEJFMN5x3#(rLhZ5VvM63pUsu>EF!U4=~+Gkk&E z!(x0rdiKtMWtVrX4aan)X5-&ev@0!7}_*6ZY1y(Zcue!Q1e( zwnugiPbQW~4~uPn*?O=Z)O&9b7NLk<^vvLbxnuHvZz5pjoSD?7Ja|Kx<61t_AXgH2 zpc7oqLe*_^!z9Vq5F09fhv;18+4E;(hO6u$-?izwTR*lb_&U4rIh*Y74wK3N8}GBkW2u5SO%=0Obvt? z>JKZ>?t)Xp)#xh_%z&1KHXJ1y8e5Lnj^U~gSX3dt#EHK$r6*TP7c7AxXj~1${ClVR zzIbKjAbPPU%1TH7>noL*{SgO2v^tf3t!^}IKnO~+19EINnYXEo`XdsjNTSfWc|xRr ziDhFBHqL;(6{U?dYLs-E6pvjUO(kN1d|wUHWjpkXioE+OAsK4j9W1-$5KB0+h(NOa z-PNe)2_1&XPAG*>vNp-{GxZmSP?prvuWQ2H1YN@`Dtj_3Ucl^miE4|rsTUU zIY(VQs+WNAql14j)~pv{eUx>hxRAwMNDNlK7uOqfG%njjw1TT+NMS&m4~nT)cb>sR zkTkykszWoTd>GL47$A0&k_7%`?|!AtfSi{NOWV^q1McjYWot=wDd-#TFwuC!V31*Lwsr&5lTzG0^k$f>Cxc4 ze_sjso~a$FB;z0`Q_3GGq=+JigN;cO(dzZ`Jo717I}{Z=_3#cz&|z*~R4c{Z^HSYo z-<(3XcVw+mY>++(05zKvdYVZ1F~{|N<@h?*GD_b@oBVZ7`v&~k>1Y)gaj5M1 zPRZG>yt-CsPYTIac6*`D1S?aiVcYp7pt!|T9niPL(&IoI);?}FR0$u&$>V3)sb|?R zsTLwcatN&&#MwEygYHTu{%WIOSr>Dr+{i^l;Ps;5P#GJctCTO5&ae|U)3L600f=&6 zF3To_o>WVAgjJJEyqD|Eszwv)mI6j>OG+U?l^XX#@nq-pLPaBO#*DY_u=9Nzh!%U@ z(H1D*!Q>}t(hN3_{YsLW%z9U4l5g&rQdw_{29rdNBs6%yE;x&7kv<2U#(+X1NrtW} zuBcpY|99UPmPxEM$Deuf!wgqCp=ew%reyANR;cG3{U>s5Sgrn0s}o(r^HW z9u`>;O{3Q6-0uU~_4(dKuYB!*OJi)b*5y2d{hPin^=-T+O~tEtkOD9}NHs9H^i>LK zJEgRfNJ99_5o+HQ-`4Ab*xN$N0H%SUgp`?bR5l@Hc-)^TY4Kv~wY)Vp-+q&O)fgbf_<5zbHd!aoV7dzNiL$tz3GosKj#miDzodU^GKKOfJ!X zrws#NJ%C2e7@ZN|`jetgNMdazXk*2!Oq|~BJ~5fW=nw^?NhNRj?gNM_wc=hsL+t%l z4F20ktm2Zz)&{KvjTL6oCQD)_Y=;Pof0x#V56$|YXQP<@;Qh75!<^w1-ol%if) zqV01wZaNmJqOsN$V+W!TZl_sd(3zFHZP>D+k1xUOooQ~o`gD3n((z#=Mvxy4)?R)$j zH}N?ldOO3DoTqUBGA(`57eYF%7m^lbo!yxGDk#S6gHO8@PccZyM8EU*vxX8Fv={6y z(Lz#ndEuFYt;Wm@%BD#<3D&6HHPo;oR}F*>*K~XFXhh;oEkwsrptD(fUt?k2W}HiZ zYmnnwrUUn#%f$%d4Viyicpk^Q#@gIqVpz53omResCshH_P0c{0wpY(P0)DZISZ=u< zUYCv?xbEbL-ZapUW&G}KSiwk3vvFPe7&QC46G+GY{Xfaze(j{Y0&EdC5$_PbLu}Ra zTC?9w>>h6#99PaSAymF?(Mlak?kDK7p3HlDCH4**KJ00JBQF1AKrVz^o=P0=aiou7 zdsMn+A^pipa<)3=91$#frVC}Zg3o!8r36L2+hXpCaG6XDi*l@nKRSviao4G1 z4|7a~)rJ(Q_nE;{_J@&Zo8;wMd;Q~318Go02K59z48^Q8*$|Mm#5mv&XWld?jBS1& z7(Ib6+OkQUE-G5x#vCTM)}og~sG~U~W6=0yG!s5gAkxvm|5hGiVbyY|{ZpOzG;Be269~P6nM#m+UIA zKjI0^pqu`#84wIxO3PQ8)7jud7oyQKm(V#Xi-)qy&kc}L^U~Y)WO4n4cIqia|Kc$K zAjZBNxQBY;B#pxc-pVSVy?O7a?pDs@M345lX#f!9*x^S61n;;O*T+)6@W_wK(6ZUR zjD#7bsVwj)QYQXch#M-VrBOEG$QCv*+c&}}y&lN4REXlVp%z@w#zqNUO&G#XS!Y$c zjOibhlp+#e*>R7-Jltd?RQJT5%OTPO*Lu>unKs?!0f}HiPSSRtjhZ7BL(Ct><)%Ea z;O1T6WWFDLF*feH87|k_;1ICPHtkZ2`QJyEYR3098N-O-_pqEnYh-yaymJ zHT$TQW+$yaOfjZ_2BTwy$6x-hlw2MgSELuBxEs3*?#S)n{TpMk+r1r$Y_DwZ91{&2 z->z1&;~~I*H_Ff1b2wFDZK&yDXxt_4IF*(MUHt6O^6FmKseiZ(Rw0 ziXG}NNp!X?LCi6v#+;||DN+nSW@kN1K}VFU&f&g>e%m>|ER(|=D_Si>NYlhHu2mRa zESTZ3?2{!0g>vM_n~0q+h@zggJQx#$zBei)Paw07LS*Jh(LmSc^ZS8>k(8S^mQnO{+}`9*BIFt8 zSnN?)&}EtZtKa0C0zWg?)3~&Ke>tg6;IM&qd(kLep#qKejz;+4U7P&9$qdL@qpT>O zR5OQH1EXpRO;AeKckDqUT=Sxei3t-#pfv7!#}q(uCJa@Zt&`Mwv;BhdJ&Fd*p(ZCT zn%X1`jGcqYN1tdo5oZ$63k&UAB$ZIX7YwN^b0B`AyJ5K^_@J8td@&T}kdiE_wp^)?^ftFi#KG&Cxd zTgU8(LC=|=I%%Wvw1$2%=hZpg@xq^)3(sG7_^&`AC4CM(HiW8WM{pEwx}E&Vfrn3u z+_Cy1S|)eoZX2m1FPpJ6i2biJ!4)YLhgFl&1lO^K0p?)-9(7CvD$=pn+s!Pvg9#z2 z!U4qMaYSsm2dhwzl`*6MLG=n5ft-)u7`H_VcFmm`RX#7K&`M#@`PsqljDpj}=fLVo z45bB%fO32(+o4nZc#Ls|qx3Q>=|-hf$6q8vlv`8u9UKvPLQr6g~~ol~8ELq8VjZ zowJKCS%rH2yH4gs^mQ}`c2{H1_KD$C&Cr;btbQLi{ht<$zJ125E9dxxnAi)>HQB!+ zZrS))p(;6yEwyeaZMS=T2Wuxe&&HR7-Fxlzh(D=BGDG0`q1lO6+7*&}#b&W8IkI-SoO8(qoN8-pzCN$eASAT19^!j=1Ngp&h^pn>M&!Y^}48Q8E3?1IuckFOjRnf2C7cy3kk{s04e2``7e;LlYc!HF_-yk zRv5p=L3y*&wzTpxC3yfL)w0ARq!3=m$m_EKzhuj9f>x;j1=N5gUI;BL>ZT_&0e(;d zIx;JA%?O}+8t>GMHRpC5a4od17O4EXNbrD>y_ISBVap~634=%!t%w~TAMew7a?*$O zU(^p_6fA%MHeqtRJo3%WmZ+an78>c7V>R+&kKl=^2nS|r*ApJgx=IF%k7?Fl}SR3OqK@DuNnOhQ!|zD$nn zRnC^cT?#a19BmHNs>iSw1wtuH;50)wD_BM_K{q;fp1K`KUwpiAubDh2fU{flam#f8 zb|~%U$lc`mPa9E$f6%Bdwqt+&I_nX0J*}itf=AsCsr3<&ZT6i z)VXcg>e&8r&}?LBG5bpuCZJZqCX{$@LElTy^bOKY?DWQ4GP+qa(%r{chyhTAm4Mb2Dt;Y(_nKUTU>b`hw;#IMwJo zz}4EY2CYL{o`-UcxN;I^7^#qdBv3ux0j7pltTqOB6s(gpok%;HC(S@_R_)VqG`GQ# zOy;3aqtLjIQXwSSBH5&S=Sje-I5r=l;lOFHzjIJ$i)LXYnu!5=!zzi`h;6Vw&&(}k zx{H<`BSPcwKaUJPSHzx_Po3ih250+TrEw1e`@@Yk)p=-@oyu7Cf&MrK)!!Qi&e`Hn zUEr{4Ia?N&UGsS=vFZcjCi>%L@TsLvRFuhNuq~zMfKlSDn~k;!=1??}R}~AxCgsdm z-ntNYZy)geO~?d~)3X4rq9DCH!umec7{~a;c}#qZs&kPdqB84gPC`ezoHuAam4>R4 zC$yKtazsk8mtA(!4Ir>s(`)br*lvppH;PzZ&R zCt*9Cd%Nh*7w_3I5W0LNxwtUQ)PQgq1HMHCVEHARL$2!mfQnf;36Z(P4B zzFk%wo(Q8qM^YTV*BovZCc&S_W|szfO}Uu+hQ|e<02M{_@pRFCU6Wp%yjv%@_Vt$v zYXdo6s{g~Dfe`k`#@y3|Y^-ghptHz+Nz?Zjj7B9!rPwHSW|3cgh?gI+vY5!~HxDwv zIfv?>F}F9I-!3q^|8+=Ug%(?RQez{lB&?Pn9hj+70qsa&El!049ZkDp?e>lDeOtP(`Pih#%VhCjI6v3&d! z5V&x=gZ`}ta3Y_2BrnX)a9(Xdzge#snisGrW0{;nDU6VTeFxVsd^RgF$>V= zx_%i6SO?vVVZy~ONwfPWIRnSzQbNeVtWfEMMwJpt^Yo^@!Mt+*R`PS_h)J7X<}TUw zfDY(;+k~v%n10-iewB|efK`L24g9nl_T=9%SUg<@G$)IjSHCq-0w5F_BTIZP3!V$s zChE++JeDFp4+_M%N;!KJV{XujF;YAtyT}TaMP5#dTL%>nFZXld5>JA~#LPs@+$Q?8 z;e3WykDWDVU_pXCGr<h(>_r5|~g0uZ5NlMwLRsOGG2y(w<^2~eF%}rx?5}An@gAFfh;DEBvkPcueoGw+D zLABSjd)A={D=Mjx3wEOC@b|Sr{NJ+xpj|sgaePHNNHKb^v$M&mMl6RN{>&+<+|6-o zZsT^l^`%3fRyErWVJTbtZcR&(5Qh2o-U*T?l8?Ey*YG~6uJ1CUI z?&Jou6QE*%=PCH*NRDBNHS1~LJ+D4-Dov_$RDytAW(poi;q)0N+KaA+e`NX0AT$( zT24Mr+H9;>A!2IqSDJDkG0=LZp_ZV7cPETOy%wSGOb2x>!H(p&)BDrAXjpFupDp3N z?soBebo2I46f$!1*h}ECWe^BV@kv-i(|uIw>s-f-`l``sI1l)O=}5}??=zPRK7QFQ;^06 z`h>FXH|)fYyDma^VN`;F5Djc(YDgM{!xeT9(1uTD*{koB?z0$Cx1OTL*BXr zb8$v#(UO!-M?GI50P!zca5et&8y&zV^>nZ4JxuSI z6~e4MUK7JRsl4Qpo!8wbEuT#3-!pt4atMgd|U z{Gde@%`R;FtnIM~X;qIPJB?Wc2Xm2DaoM5@p_?UL@Z9>$nSOqgLtQ7Rqeg3%N^Qbw zwuSIWq=sDEV`3ZENevR1;T{k&EFm1*ZT9 z?%cRSH_{4UEqlI6BC>fes@ni9Ce2KFP$@pE5vfP3k2C$Tj9kychnbV`F@sj4Viq(v zfD7I6>k8!4VMVb-!c*QC%I)(+^q*uH)m!+ANc@nMQ*Z?lWZ{%wzIHLY!u@l86tK5w z)0NPago=?3Uno!di0DHj+SFYhe+bi^$MOVD>d0;_5Zjs=Eq-q=$BZ%oAKPiQH^nc} z)t7bV47WbIH-g)9&5(Ck7#R^H;GNGt$0ErLTE(ni;Gdn$w~ZM>D6$-ks*azh3QJE8 z{dNWAOEEy8geF9j?_|;LYDZJf23Jf+{Pv5c#5NHn{zsG8+c;A_cVw<1VKm9S0y$AL zz+b9i+UiqF(Nww}-{%N;PAqOOCo>IBBxSVoR?bhky>b=J_uARrZv(k?N7#FVoJJq7 zd`qv~pReq4?%Kx-XHCfzp$2?*1ikX_2DGSoxa({c!#qe7s1go%tl&r-s301Nr_d2b8xOzSlGO-EF#R`P_L+}`~1v15;SX}f`lp6*>v!9J~W@e19szLrsE z+b!^7gVXT{v46XkBZZYYf6j@8pTC*ARmM2W1lVCI3e<8Mn=`kE2RGNF{ZTY|(NGoM z*RoHs#_7PK?SBgV%ETzwm+;-B&MByq)(Q3xq$cP8M}YxlPu@&V9I^y~9~`t8ad!&O zJlL|ym_*uS*lWr-wxmuPwJ|CYwHfxsOGysqkx33IZHQQ7O{zvP48KI=!Y!$pnQ1O7 zj}WB%rX=tY!IO-G#O9#f*_m*qyO1w9!&MVRVub+w&=d*Sqk*s2cUG0;ULio)so8%d zAV5~{xS8O3o5#lbE@7sl#z^S9{dEFR*#c=;ujE$8P^~6(>A;|>89unLl&Euy1vmj+ctsJsh`nMEwW3U(BLm{pcc)Kn7@o(QfTOmhyc{|VEBC3gl6S?-?l`wd@zz1(OrJaVf{74K7VNKlo+ zJZp1$qro2boxXk%k^-g|J zn|{i7MJkHYVJtgV0z)(otSW7SY)GxS*=v#qMPSl;2E`MNl{OEIYzkuW9qD=Az#? z@WG)#E3fZ%m+2W@S99jDSDZT@&EJhx+_Bh#l`E9f)>O4D_1Pf&u`@cHg3UCiXPjW^ z-Rm`ktK&Pv&YBLw_Yf$9@;`xH-d~22wGk|m9!NkyqVPyNM1uczW;9Pt&;f6>(5g?4 ztV+~vmZ~a0FJ}yy;lW48bJQ^OS< z)XGrK$QIq7uF$4Lj;2se3*y(pc2*`q?AFZFItk=L*A#n~zB6dj?yn30noaC_)A+5- z>IIh)4og##;yEe`duJSc0bOaB#Q}31PvjqnBuEcX$DUzE$LJKZ{(5w8x>3fE;;=~n zhZN6vaO8gISthRPPEPEUsF(%EWrb|(YZ}GcisPTQc1tszJ4u8POcdg5sXu9D3rYi? zyq21!R#ftt7@kA@1zl8I#UV;jnpAxiqC&$0DQ7eo#)0o>S1$G`*Z%h6!Af z?lH{xSw#3_l7!0{C>|-u2-5mE7Th)xOq|hBaD$5c9g5z|-O9=}*q?!TN0`YdRu(yN(+NxFZOLlMfD{m_(rc26;@W&G1n&ntr5m(*_

    g{0mjzqh1b-jWD88FPQ!K+ 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 RPT|-eHdc<7WOJ{C{{kG+`RV`w From 63f548f3ec5d992943c84e3c7cc1505c4b9d6bad Mon Sep 17 00:00:00 2001 From: Upper9527 Date: Wed, 22 Apr 2026 16:17:43 +0800 Subject: [PATCH 3/3] style: fix dashboard lint issues --- skillclaw/config_store.py | 3 +- skillclaw/dashboard_ingest.py | 138 +++++++++-------------- skillclaw/dashboard_server.py | 11 +- skillclaw/dashboard_store.py | 12 +- skillclaw/skill_hub.py | 24 +--- tests/test_dashboard.py | 205 ++++++++++++++++++++++++---------- 6 files changed, 212 insertions(+), 181 deletions(-) diff --git a/skillclaw/config_store.py b/skillclaw/config_store.py index 2018d96..95ef4f2 100644 --- a/skillclaw/config_store.py +++ b/skillclaw/config_store.py @@ -345,8 +345,7 @@ def to_skillclaw_config(self) -> SkillClawConfig: dashboard_host=str(dashboard.get("host", "127.0.0.1") or "127.0.0.1"), dashboard_port=int(dashboard.get("port", 3788) or 3788), dashboard_db_path=str( - dashboard.get("db_path", str(CONFIG_DIR / "dashboard.db")) - or str(CONFIG_DIR / "dashboard.db") + dashboard.get("db_path", str(CONFIG_DIR / "dashboard.db")) or str(CONFIG_DIR / "dashboard.db") ), dashboard_sync_on_start=bool(dashboard.get("sync_on_start", True)), dashboard_include_shared=bool(dashboard.get("include_shared", True)), diff --git a/skillclaw/dashboard_ingest.py b/skillclaw/dashboard_ingest.py index c50682a..87bd479 100644 --- a/skillclaw/dashboard_ingest.py +++ b/skillclaw/dashboard_ingest.py @@ -15,8 +15,8 @@ import yaml -from evolve_server.core.utils import build_skill_md from evolve_server.core.skill_registry import SkillIDRegistry +from evolve_server.core.utils import build_skill_md from .config import SkillClawConfig from .skill_hub import SkillHub @@ -202,12 +202,9 @@ def _parse_skill_document( if not isinstance(skillclaw_meta, dict): skillclaw_meta = {} - category = str( - skillclaw_meta.get("category") - or fm.get("category") - or fallback_category - or "general" - ).strip() or "general" + category = ( + str(skillclaw_meta.get("category") or fm.get("category") or fallback_category or "general").strip() or "general" + ) name = str(fm.get("name") or fallback_name or "").strip() description = str(fm.get("description") or "").strip() extra_frontmatter = {k: v for k, v in fm.items() if k not in _CORE_FRONTMATTER_KEYS} @@ -440,9 +437,7 @@ def _load_record_prm_scores(record_dir: Path, warnings: list[str]) -> dict[tuple try: payload = json.loads(raw_line) except json.JSONDecodeError: - warnings.append( - f"failed to parse PRM record '{prm_scores_path}' line {line_no}" - ) + warnings.append(f"failed to parse PRM record '{prm_scores_path}' line {line_no}") continue if not isinstance(payload, dict): continue @@ -486,9 +481,7 @@ def _load_record_sessions(config: SkillClawConfig, warnings: list[str]) -> list[ try: payload = json.loads(raw_line) except json.JSONDecodeError: - warnings.append( - f"failed to parse conversation record '{conversations_path}' line {line_counter}" - ) + warnings.append(f"failed to parse conversation record '{conversations_path}' line {line_counter}") continue if not isinstance(payload, dict): continue @@ -637,16 +630,11 @@ def _merge_local_sessions(base: dict[str, Any], overlay: dict[str, Any]) -> dict list(overlay.get("turns") or []), ) merged["turns"] = merged_turns - merged["timestamp"] = ( - _latest_timestamp( - str(base.get("timestamp", "") or ""), - str(overlay.get("timestamp", "") or ""), - ) - or str(overlay.get("timestamp", "") or base.get("timestamp", "") or "") - ) - merged["user_alias"] = str( - overlay.get("user_alias", "") or base.get("user_alias", "") or "local" - ) + merged["timestamp"] = _latest_timestamp( + str(base.get("timestamp", "") or ""), + str(overlay.get("timestamp", "") or ""), + ) or str(overlay.get("timestamp", "") or base.get("timestamp", "") or "") + merged["user_alias"] = str(overlay.get("user_alias", "") or base.get("user_alias", "") or "local") merged["num_turns"] = max( int(base.get("num_turns", 0) or 0), int(overlay.get("num_turns", 0) or 0), @@ -670,15 +658,9 @@ def _merge_local_sessions(base: dict[str, Any], overlay: dict[str, Any]) -> dict if str(item or "").strip() } ) - merged["transcript_path"] = str( - base.get("transcript_path", "") or overlay.get("transcript_path", "") or "" - ) - merged["trajectory_path"] = str( - base.get("trajectory_path", "") or overlay.get("trajectory_path", "") or "" - ) - merged["record_path"] = str( - overlay.get("record_path", "") or base.get("record_path", "") or "" - ) + merged["transcript_path"] = str(base.get("transcript_path", "") or overlay.get("transcript_path", "") or "") + merged["trajectory_path"] = str(base.get("trajectory_path", "") or overlay.get("trajectory_path", "") or "") + merged["record_path"] = str(overlay.get("record_path", "") or base.get("record_path", "") or "") return merged @@ -714,11 +696,7 @@ def _load_state_sessions(config: SkillClawConfig, warnings: list[str]) -> list[d transcript_path = _find_transcript_path(session_id, transcript_paths) turns = _parse_cursor_transcript_turns(transcript_path, warnings) if transcript_path else [] active_skills = sorted( - { - str(item or "").strip() - for item in (trajectory.get("active_skills") or []) - if str(item or "").strip() - } + {str(item or "").strip() for item in (trajectory.get("active_skills") or []) if str(item or "").strip()} ) if turns and active_skills: turns[0]["injected_skills"] = active_skills @@ -741,11 +719,7 @@ def _load_state_sessions(config: SkillClawConfig, warnings: list[str]) -> list[d } ] - timestamp = str( - trajectory.get("end_time") - or trajectory.get("start_time") - or "" - ) + timestamp = str(trajectory.get("end_time") or trajectory.get("start_time") or "") if not timestamp and transcript_path is not None: try: timestamp = datetime.fromtimestamp(transcript_path.stat().st_mtime, tz=timezone.utc).isoformat() @@ -753,9 +727,7 @@ def _load_state_sessions(config: SkillClawConfig, warnings: list[str]) -> list[d timestamp = "" outcome_reasons = [ - str(item or "").strip() - for item in (trajectory.get("outcome_reasons") or []) - if str(item or "").strip() + str(item or "").strip() for item in (trajectory.get("outcome_reasons") or []) if str(item or "").strip() ] sessions.append( { @@ -774,7 +746,13 @@ def _load_state_sessions(config: SkillClawConfig, warnings: list[str]) -> list[d } ) - sessions.sort(key=lambda item: (str(item.get("timestamp", "") or ""), str(item.get("session_id", "") or "")), reverse=True) + sessions.sort( + key=lambda item: ( + str(item.get("timestamp", "") or ""), + str(item.get("session_id", "") or ""), + ), + reverse=True, + ) return sessions @@ -914,11 +892,7 @@ def _load_shared_skills( if not isinstance(history, list): history = [] enriched_history: list[dict[str, Any]] = [] - current_sha = str( - registry_entry.get("content_sha") - or record.get("sha256") - or (_hash_text(raw) if raw else "") - ) + current_sha = str(registry_entry.get("content_sha") or record.get("sha256") or (_hash_text(raw) if raw else "")) current_version = int(registry_entry.get("version", 0) or 0) if current_version <= 0 and current_sha: current_version = 1 @@ -1002,8 +976,20 @@ def _load_shared_skills( except Exception as exc: warnings.append(f"failed to list shared sessions: {exc}") - sessions.sort(key=lambda item: (str(item.get("timestamp", "") or ""), str(item.get("session_id", "") or "")), reverse=True) - validation_jobs.sort(key=lambda item: (str(item.get("created_at", "") or ""), str(item.get("job_id", "") or "")), reverse=True) + sessions.sort( + key=lambda item: ( + str(item.get("timestamp", "") or ""), + str(item.get("session_id", "") or ""), + ), + reverse=True, + ) + validation_jobs.sort( + key=lambda item: ( + str(item.get("created_at", "") or ""), + str(item.get("job_id", "") or ""), + ), + reverse=True, + ) return skills, sessions, validation_jobs, registry_entries @@ -1013,10 +999,7 @@ def build_dashboard_snapshot(config: SkillClawConfig) -> dict[str, Any]: local_sessions = _load_local_sessions(config, warnings) shared_skills, shared_sessions, validation_jobs, registry_entries = _load_shared_skills(config, warnings) - skills_by_name: dict[str, dict[str, Any]] = { - name: dict(skill) - for name, skill in local_skills.items() - } + skills_by_name: dict[str, dict[str, Any]] = {name: dict(skill) for name, skill in local_skills.items()} for name, shared_skill in shared_skills.items(): current = skills_by_name.get(name) @@ -1033,30 +1016,14 @@ def build_dashboard_snapshot(config: SkillClawConfig) -> dict[str, Any]: str(current.get("updated_at", "") or ""), str(shared_skill.get("updated_at", "") or ""), ) - current["local_updated_at"] = str( - current.get("local_updated_at", "") - or current.get("updated_at", "") - or "" - ) - current["local_sha"] = str( - current.get("local_sha", "") - or current.get("current_sha", "") - or "" - ) + current["local_updated_at"] = str(current.get("local_updated_at", "") or current.get("updated_at", "") or "") + current["local_sha"] = str(current.get("local_sha", "") or current.get("current_sha", "") or "") current["remote_updated_at"] = str( - shared_skill.get("remote_updated_at", "") - or shared_skill.get("updated_at", "") - or "" - ) - current["remote_sha"] = str( - shared_skill.get("remote_sha", "") - or shared_skill.get("current_sha", "") - or "" + shared_skill.get("remote_updated_at", "") or shared_skill.get("updated_at", "") or "" ) + current["remote_sha"] = str(shared_skill.get("remote_sha", "") or shared_skill.get("current_sha", "") or "") current["current_version"] = int( - shared_skill.get("current_version", 0) - or current.get("current_version", 0) - or 0 + shared_skill.get("current_version", 0) or current.get("current_version", 0) or 0 ) current["current_sha"] = str(shared_skill.get("current_sha", "") or current.get("current_sha", "")) current["manifest"] = shared_skill.get("manifest") or {} @@ -1211,7 +1178,9 @@ def build_dashboard_snapshot(config: SkillClawConfig) -> dict[str, Any]: "stats": {}, "manifest": {}, "registry": registry_entry, - "versions": list(registry_entry.get("history") or []) if isinstance(registry_entry.get("history"), list) else [], + "versions": ( + list(registry_entry.get("history") or []) if isinstance(registry_entry.get("history"), list) else [] + ), } skills_by_name[name] = skill @@ -1223,21 +1192,14 @@ def build_dashboard_snapshot(config: SkillClawConfig) -> dict[str, Any]: normalized_skills: list[dict[str, Any]] = [] for name in sorted(skills_by_name): skill = skills_by_name[name] - versions = [ - item - for item in (skill.get("versions") or []) - if isinstance(item, dict) - ] + versions = [item for item in (skill.get("versions") or []) if isinstance(item, dict)] if not versions and skill.get("current_sha"): versions = [ { "version": int(skill.get("current_version", 0) or 1), "content_sha": str(skill.get("current_sha", "") or ""), "timestamp": str( - skill.get("updated_at") - or skill.get("uploaded_at") - or skill.get("last_injected_at") - or "" + skill.get("updated_at") or skill.get("uploaded_at") or skill.get("last_injected_at") or "" ), "action": "snapshot", "skill_md": str(skill.get("remote_skill_md") or skill.get("skill_md") or ""), diff --git a/skillclaw/dashboard_server.py b/skillclaw/dashboard_server.py index 70462ce..e1cfe00 100644 --- a/skillclaw/dashboard_server.py +++ b/skillclaw/dashboard_server.py @@ -83,11 +83,7 @@ def _require_sharing_hub(config: SkillClawConfig) -> SkillHub: def _local_sessions_from_snapshot(snapshot: dict[str, Any]) -> list[dict[str, Any]]: - return [ - item - for item in (snapshot.get("sessions") or []) - if str(item.get("source", "") or "") == "local" - ] + return [item for item in (snapshot.get("sessions") or []) if str(item.get("source", "") or "") == "local"] def _normalize_selection(items: Any, *, field_name: str) -> list[str] | None: @@ -124,6 +120,7 @@ def sync(self) -> dict[str, Any]: def _embedded_evolve_server(self): from evolve_server.core.config import EvolveServerConfig from evolve_server.engines.workflow import EvolveServer + from .validation_store import ValidationStore evolve_config = EvolveServerConfig.from_skillclaw_config(self.config) @@ -191,9 +188,7 @@ def export_local_sessions(self, *, session_ids: list[str] | None = None) -> dict sessions = _local_sessions_from_snapshot(snapshot) total_local_sessions = len(sessions) session_lookup = { - str(item.get("session_id", "") or ""): item - for item in sessions - if str(item.get("session_id", "") or "") + str(item.get("session_id", "") or ""): item for item in sessions if str(item.get("session_id", "") or "") } selection = list(session_ids or []) missing_ids: list[str] = [] diff --git a/skillclaw/dashboard_store.py b/skillclaw/dashboard_store.py index 6a8733c..3e109c2 100644 --- a/skillclaw/dashboard_store.py +++ b/skillclaw/dashboard_store.py @@ -77,7 +77,8 @@ def initialize(self) -> None: CREATE INDEX IF NOT EXISTS idx_skills_name ON skills(name); CREATE INDEX IF NOT EXISTS idx_skills_category ON skills(category); CREATE INDEX IF NOT EXISTS idx_skills_source ON skills(source); - CREATE INDEX IF NOT EXISTS idx_skills_sessions ON skills(session_count DESC, observed_injection_count DESC); + CREATE INDEX IF NOT EXISTS idx_skills_sessions + ON skills(session_count DESC, observed_injection_count DESC); CREATE TABLE IF NOT EXISTS skill_versions ( skill_id TEXT NOT NULL, @@ -326,10 +327,7 @@ def get_meta(self) -> dict[str, Any]: self.initialize() with self._connect() as conn: rows = conn.execute("SELECT key, value FROM meta ORDER BY key").fetchall() - return { - str(row["key"]): _json_loads(row["value"], row["value"]) - for row in rows - } + return {str(row["key"]): _json_loads(row["value"], row["value"]) for row in rows} def _skill_summary_from_row(self, row: sqlite3.Row) -> dict[str, Any]: return { @@ -600,9 +598,7 @@ def get_overview(self) -> dict[str, Any]: "observed_injections": int( conn.execute("SELECT COALESCE(SUM(observed_injection_count), 0) FROM skills").fetchone()[0] ), - "observed_reads": int( - conn.execute("SELECT COALESCE(SUM(read_count), 0) FROM skills").fetchone()[0] - ), + "observed_reads": int(conn.execute("SELECT COALESCE(SUM(read_count), 0) FROM skills").fetchone()[0]), "observed_modifications": int( conn.execute("SELECT COALESCE(SUM(modified_count), 0) FROM skills").fetchone()[0] ), diff --git a/skillclaw/skill_hub.py b/skillclaw/skill_hub.py index a04351e..b7fa406 100644 --- a/skillclaw/skill_hub.py +++ b/skillclaw/skill_hub.py @@ -416,24 +416,12 @@ def pull_skills( local_dirs_by_name = self._list_local_skill_dirs(skills_dir) local_skills = {name: dirs[-1] for name, dirs in local_dirs_by_name.items() if dirs} manifest = self._load_remote_manifest() - skip_set = { - str(name or "").strip() - for name in (skip_names or []) - if str(name or "").strip() - } - include_set = { - str(name or "").strip() - for name in (include_names or []) - if str(name or "").strip() - } + skip_set = {str(name or "").strip() for name in (skip_names or []) if str(name or "").strip()} + include_set = {str(name or "").strip() for name in (include_names or []) if str(name or "").strip()} if include_set and mirror: mirror = False if include_set: - manifest = { - name: rec - for name, rec in manifest.items() - if name in include_set - } + manifest = {name: rec for name, rec in manifest.items() if name in include_set} missing_names = sorted(include_set - set(manifest)) requested_count = len(include_set) matched_remote = len(manifest) @@ -465,6 +453,7 @@ def _result( } ) return payload + if not manifest: # Empty/failed manifest is treated as no-op to avoid accidental wipe. if include_set: @@ -473,10 +462,7 @@ def _result( ", ".join(missing_names) or "(empty request)", ) else: - logger.warning( - "[SkillHub] remote manifest empty; skip mirror pull " - "(downloaded=0 skipped=0 deleted=0)" - ) + logger.warning("[SkillHub] remote manifest empty; skip mirror pull (downloaded=0 skipped=0 deleted=0)") return _result( downloaded=0, skipped=0, diff --git a/tests/test_dashboard.py b/tests/test_dashboard.py index 774083e..a720a0a 100644 --- a/tests/test_dashboard.py +++ b/tests/test_dashboard.py @@ -351,8 +351,28 @@ def _create_shared_snapshot(self) -> None: "version": 3, "content_sha": _sha256_text(self.shared_docs["debug-notes"]), "history": [ - _history_entry(1, _skill_doc("debug-notes", "Keep a compact running log while debugging.", "Capture the failing assumption before editing any file.", category="coding"), "2026-04-18T08:00:00Z", "create"), - _history_entry(2, _skill_doc("debug-notes", "Keep a compact running log while debugging.", "Capture the failing assumption and note what changed after each retry.", category="coding"), "2026-04-19T08:15:00Z", "improve"), + _history_entry( + 1, + _skill_doc( + "debug-notes", + "Keep a compact running log while debugging.", + "Capture the failing assumption before editing any file.", + category="coding", + ), + "2026-04-18T08:00:00Z", + "create", + ), + _history_entry( + 2, + _skill_doc( + "debug-notes", + "Keep a compact running log while debugging.", + "Capture the failing assumption and note what changed after each retry.", + category="coding", + ), + "2026-04-19T08:15:00Z", + "improve", + ), _history_entry(3, self.shared_docs["debug-notes"], "2026-04-20T09:30:00Z", "improve"), ], }, @@ -361,7 +381,17 @@ def _create_shared_snapshot(self) -> None: "version": 2, "content_sha": _sha256_text(self.shared_docs["incident-timeline"]), "history": [ - _history_entry(1, _skill_doc("incident-timeline", "Summarize incident progression, impact window, and mitigation sequence.", "Track first impact, mitigation, and restore time.", category="ops"), "2026-04-19T12:00:00Z", "create"), + _history_entry( + 1, + _skill_doc( + "incident-timeline", + "Summarize incident progression, impact window, and mitigation sequence.", + "Track first impact, mitigation, and restore time.", + category="ops", + ), + "2026-04-19T12:00:00Z", + "create", + ), _history_entry(2, self.shared_docs["incident-timeline"], "2026-04-20T16:25:00Z", "improve"), ], }, @@ -370,7 +400,17 @@ def _create_shared_snapshot(self) -> None: "version": 2, "content_sha": _sha256_text(self.shared_docs["release-rollback-runbook"]), "history": [ - _history_entry(1, _skill_doc("release-rollback-runbook", "Coordinate rollback checks during incident mitigation.", "Confirm rollback owner and migration compatibility.", category="ops"), "2026-04-19T19:30:00Z", "create"), + _history_entry( + 1, + _skill_doc( + "release-rollback-runbook", + "Coordinate rollback checks during incident mitigation.", + "Confirm rollback owner and migration compatibility.", + category="ops", + ), + "2026-04-19T19:30:00Z", + "create", + ), _history_entry(2, self.shared_docs["release-rollback-runbook"], "2026-04-20T17:20:00Z", "improve"), ], }, @@ -379,7 +419,17 @@ def _create_shared_snapshot(self) -> None: "version": 2, "content_sha": _sha256_text(self.shared_docs["sql-trace"]), "history": [ - _history_entry(1, _skill_doc("sql-trace", "Trace SQL state transitions during debugging.", "Log query text, parameters, and row counts.", category="data_analysis"), "2026-04-19T07:50:00Z", "create"), + _history_entry( + 1, + _skill_doc( + "sql-trace", + "Trace SQL state transitions during debugging.", + "Log query text, parameters, and row counts.", + category="data_analysis", + ), + "2026-04-19T07:50:00Z", + "create", + ), _history_entry(2, self.shared_docs["sql-trace"], "2026-04-20T09:40:00Z", "improve"), ], }, @@ -388,9 +438,39 @@ def _create_shared_snapshot(self) -> None: "version": 4, "content_sha": _sha256_text(self.shared_docs["prompt-risk-screener"]), "history": [ - _history_entry(1, _skill_doc("prompt-risk-screener", "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", "Classify unsafe requests before suggesting changes.", category="governance"), "2026-04-18T06:15:00Z", "create"), - _history_entry(2, _skill_doc("prompt-risk-screener", "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", "Separate policy risk from simple ambiguity.", category="governance"), "2026-04-19T10:45:00Z", "improve"), - _history_entry(3, _skill_doc("prompt-risk-screener", "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", "Add a small safe-rewrite suggestion when blocking is not needed.", category="governance"), "2026-04-20T08:10:00Z", "improve"), + _history_entry( + 1, + _skill_doc( + "prompt-risk-screener", + "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", + "Classify unsafe requests before suggesting changes.", + category="governance", + ), + "2026-04-18T06:15:00Z", + "create", + ), + _history_entry( + 2, + _skill_doc( + "prompt-risk-screener", + "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", + "Separate policy risk from simple ambiguity.", + category="governance", + ), + "2026-04-19T10:45:00Z", + "improve", + ), + _history_entry( + 3, + _skill_doc( + "prompt-risk-screener", + "Screen prompts for policy, jailbreak, and ambiguity risks before execution.", + "Add a small safe-rewrite suggestion when blocking is not needed.", + category="governance", + ), + "2026-04-20T08:10:00Z", + "improve", + ), _history_entry(4, self.shared_docs["prompt-risk-screener"], "2026-04-20T20:10:00Z", "improve"), ], }, @@ -433,7 +513,10 @@ def _create_shared_snapshot(self) -> None: { "turn_num": 2, "prompt_text": "Patch the auth fixture and re-run the failing contract test.", - "response_text": "Header casing was wrong in the fixture; I updated the checklist and reran the contract path.", + "response_text": ( + "Header casing was wrong in the fixture; " + "I updated the checklist and reran the contract path." + ), "injected_skills": [], "read_skills": [{"skill_name": "api-contract-checklist"}], "modified_skills": [{"skill_name": "api-contract-checklist"}], @@ -464,7 +547,9 @@ def _create_shared_snapshot(self) -> None: "turns": [ { "turn_num": 1, - "prompt_text": "Screen a customer prompt that mixes benign analytics with policy-sensitive content.", + "prompt_text": ( + "Screen a customer prompt that mixes benign analytics with policy-sensitive content." + ), "response_text": "I will separate ambiguity from policy-sensitive intent first.", "injected_skills": ["prompt-risk-screener"], "read_skills": [], @@ -505,7 +590,9 @@ def _create_shared_snapshot(self) -> None: { "turn_num": 2, "prompt_text": "Patch the query logging and retry.", - "response_text": "Added query logging, confirmed the transaction scope, and updated the trace skill.", + "response_text": ( + "Added query logging, confirmed the transaction scope, and updated the trace skill." + ), "injected_skills": ["debug-notes"], "read_skills": [{"skill_name": "sql-trace"}], "modified_skills": [{"skill_name": "sql-trace"}], @@ -537,7 +624,9 @@ def _create_shared_snapshot(self) -> None: { "turn_num": 2, "prompt_text": "Prepare a rollback note for the release manager.", - "response_text": "Captured the rollback sequence and annotated the timeline with mitigation checkpoints.", + "response_text": ( + "Captured the rollback sequence and annotated the timeline with mitigation checkpoints." + ), "injected_skills": ["release-rollback-runbook"], "read_skills": [], "modified_skills": [{"skill_name": "incident-timeline"}], @@ -638,7 +727,9 @@ def _create_shared_snapshot(self) -> None: "session_evidence": [ { "session_id": "sess-103", - "summary": "Reviewer flagged false positives when ambiguous prompts were screened too aggressively.", + "summary": ( + "Reviewer flagged false positives when ambiguous prompts were screened too aggressively." + ), "judge_overall_score": 0.71, "avg_prm": 0.735, } @@ -659,7 +750,10 @@ def _create_shared_snapshot(self) -> None: "min_approvals": 1, "min_score": 0.7, "max_rejections": 1, - "rationale": "The current skill blocks too early on ambiguous prompts. A reviewer should confirm the safer rewrite path.", + "rationale": ( + "The current skill blocks too early on ambiguous prompts. " + "A reviewer should confirm the safer rewrite path." + ), }, { "job_id": "job-review", @@ -691,7 +785,9 @@ def _create_shared_snapshot(self) -> None: "min_approvals": 2, "min_score": 0.75, "max_rejections": 0, - "rationale": "The checklist looks reusable, but reviewers disagree on whether it is still too API-specific.", + "rationale": ( + "The checklist looks reusable, but reviewers disagree on whether it is still too API-specific." + ), }, { "job_id": "job-rejected", @@ -708,7 +804,9 @@ def _create_shared_snapshot(self) -> None: }, { "session_id": "sess-101", - "summary": "Shared incident replay showed the shortcut skipped validation steps needed by oncall.", + "summary": ( + "Shared incident replay showed the shortcut skipped validation steps needed by oncall." + ), "judge_overall_score": 0.35, "avg_prm": 0.715, }, @@ -767,7 +865,9 @@ def _create_shared_snapshot(self) -> None: "min_approvals": 2, "min_score": 0.75, "max_rejections": 0, - "rationale": "The new trace format consistently improved debugging quality across two SQL persistence failures.", + "rationale": ( + "The new trace format consistently improved debugging quality across two SQL persistence failures." + ), }, ] for payload in validation_jobs: @@ -897,11 +997,15 @@ def _create_local_state(self) -> None: "turns": [ ( "Investigate why the partner API test still returns 401 after the fixture refactor.", - "I will validate the auth contract, capture the current request shape, and keep a short debug log before editing code.", + "I will validate the auth contract, capture the current " + "request shape, and keep a short debug log before editing " + "code.", ), ( "Patch the fixture and summarize the exact verification steps.", - "The header casing was wrong in the fixture. I updated the contract checklist, reran the failing test, and recorded the verification path.", + "The header casing was wrong in the fixture. I updated the " + "contract checklist, reran the failing test, and recorded " + "the verification path.", ), ], }, @@ -922,7 +1026,8 @@ def _create_local_state(self) -> None: ), ( "Summarize what remains risky after the rollback.", - "The rollback stabilized traffic, but secondary validation is still required for delayed jobs and dashboard lag.", + "The rollback stabilized traffic, but secondary validation " + "is still required for delayed jobs and dashboard lag.", ), ], }, @@ -939,11 +1044,13 @@ def _create_local_state(self) -> None: "turns": [ ( "Debug why the retry worker stops after one transient failure.", - "I will keep a compact note of each assumption and check whether the worker state changes between retries.", + "I will keep a compact note of each assumption and check " + "whether the worker state changes between retries.", ), ( "Summarize what is still unknown.", - "We know the retry lease expires too early, but we still need one more probe around worker heartbeats.", + "We know the retry lease expires too early, but we still " + "need one more probe around worker heartbeats.", ), ], }, @@ -1018,8 +1125,15 @@ def _create_local_records(self) -> None: }, ], "instruction_text": "Summarize the retry-worker regression and keep the answer brief.", - "prompt_text": "system: Skill catalog injected\n\nuser: Summarize the retry-worker regression and keep the answer brief.", - "response_text": "The worker exits after the first transient failure because the lease heartbeat stops renewing after the retry path resets its state.", + "prompt_text": ( + "system: Skill catalog injected\n\nuser: Summarize the " + "retry-worker regression and keep the answer brief." + ), + "response_text": ( + "The worker exits after the first transient failure because " + "the lease heartbeat stops renewing after the retry path " + "resets its state." + ), "tool_calls": [], }, { @@ -1035,7 +1149,11 @@ def _create_local_records(self) -> None: ], "instruction_text": "Now list the next two verification steps.", "prompt_text": "system: Skill catalog injected\n\nuser: Now list the next two verification steps.", - "response_text": "1. Capture lease-heartbeat timestamps across the retry boundary.\n2. Verify whether the worker resets its retry state before the heartbeat loop restarts.", + "response_text": ( + "1. Capture lease-heartbeat timestamps across the retry " + "boundary.\n2. Verify whether the worker resets its retry " + "state before the heartbeat loop restarts." + ), "tool_calls": [], }, ] @@ -1164,12 +1282,7 @@ def test_export_local_sessions_to_shared_storage(self) -> None: service = DashboardService(self.fixture.config) result = service.export_local_sessions() self.assertEqual(result["result"]["exported"], 5) - exported_path = ( - self.fixture.share_root - / "team-alpha" - / "sessions" - / "local-001.json" - ) + exported_path = self.fixture.share_root / "team-alpha" / "sessions" / "local-001.json" self.assertTrue(exported_path.exists()) exported_payload = json.loads(exported_path.read_text(encoding="utf-8")) self.assertEqual(exported_payload["session_id"], "local-001") @@ -1184,12 +1297,7 @@ def test_export_selected_local_sessions_to_shared_storage(self) -> None: self.assertEqual(result["result"]["missing"], 1) self.assertEqual(result["result"]["missing_ids"], ["missing-002"]) self.assertEqual(result["result"]["exported"], 1) - exported_path = ( - self.fixture.share_root - / "team-alpha" - / "sessions" - / "local-001.json" - ) + exported_path = self.fixture.share_root / "team-alpha" / "sessions" / "local-001.json" self.assertTrue(exported_path.exists()) @@ -1230,11 +1338,7 @@ def test_dashboard_api_and_ui(self) -> None: self.assertEqual(detail_resp.status_code, 200) debug_detail = detail_resp.json() self.assertEqual(debug_detail["name"], "debug-notes") - debug_v2 = next( - item - for item in debug_detail["versions"] - if int(item["version"]) == 2 - ) + debug_v2 = next(item for item in debug_detail["versions"] if int(item["version"]) == 2) activate_resp = client.post( f"/api/v1/skills/{debug_skill['skill_id']}/activate", @@ -1281,11 +1385,7 @@ def test_dashboard_api_and_ui(self) -> None: skills_after_pull = client.get("/api/v1/skills") self.assertEqual(skills_after_pull.status_code, 200) - sql_trace = next( - item - for item in skills_after_pull.json()["items"] - if item["name"] == "sql-trace" - ) + sql_trace = next(item for item in skills_after_pull.json()["items"] if item["name"] == "sql-trace") self.assertEqual(sql_trace["source"], "both") review_resp = client.post( @@ -1301,12 +1401,7 @@ def test_dashboard_api_and_ui(self) -> None: review_payload = review_resp.json() self.assertEqual(review_payload["user_alias"], "tester") self.assertEqual(review_payload["result"]["accepted"], True) - saved_result_path = ( - self.fixture.group_dir - / "validation_results" - / "job-pending" - / "tester.json" - ) + saved_result_path = self.fixture.group_dir / "validation_results" / "job-pending" / "tester.json" self.assertTrue(saved_result_path.exists()) saved_result = json.loads(saved_result_path.read_text(encoding="utf-8")) self.assertEqual(saved_result["decision"], "accept") @@ -1315,9 +1410,7 @@ def test_dashboard_api_and_ui(self) -> None: validation_after_review = client.get("/api/v1/validation/jobs") self.assertEqual(validation_after_review.status_code, 200) reviewed_job = next( - item - for item in validation_after_review.json()["items"] - if item["job_id"] == "job-pending" + item for item in validation_after_review.json()["items"] if item["job_id"] == "job-pending" ) self.assertEqual(reviewed_job["status"], "review") self.assertEqual(reviewed_job["result_count"], 1)

    ~0A*K5y8% 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 z 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⁢_iZ~|^X3pR+CzVbAsE^-gbhR=eIJAIl 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