From e5168fe79d57617fb9c57910f3649d21b0f37b76 Mon Sep 17 00:00:00 2001 From: Chaim Date: Wed, 10 Jun 2026 09:33:44 +0000 Subject: [PATCH] refactor(web-ui): disambiguate Paperclip agent DTO; document platform-presentation boundary (R3, G12, #112) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ממצא: התוכנית המקורית (namespace ל-paperclip.* ב-types.ts) בלתי-ישימה — types.ts נוצר-אוטומטית מ-OpenAPI ("Do not make direct changes"); הפניות-Paperclip שם רק משקפות את ה-API של ה-backend, ונשלטות ע"י מודלי-ה-Pydantic, לא ע"י הפרונט. הפרונט אינו שכבת-אינטליגנציה — הפניות-Paperclip בו הן הצגת-נתוני-פלטפורמה (activity feed, קישור לדאשבורד, סטטוס-ארכוב) או UI-ניהול מוצהר (paperclip-tab/agents-tab) — כולן shell-adjacent לגיטימי תחת G12. הבעיה האמיתית-והישימה: התנגשות-שם — `PaperclipAgent` הוגדר פעמיים עם shapes שונים (config ב-paperclip-agents.ts מול activity ב-agents.ts). פוצל: ה-activity-DTO → `PaperclipAgentStatus`; ה-config שומר `PaperclipAgent`. + הערת-כותרת שמסמנת את agents.ts כמודול הצגת-פלטפורמה מוצהר. מזין את R4 (#113): leak-guard חייב להחריג קבצים-נוצרים (types.ts) ולא לכלול את הפרונט בהיקף שכבת-האינטליגנציה המוגנת. אימות: tsc --noEmit נקי; eslint נקי על הקבצים ששונו. Invariants: G12 (גבול-פלטפורמה מוצהר בפרונט), G2 (הסרת שם-טיפוס כפול-משמעות). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/components/cases/agent-status-widget.tsx | 4 ++-- web-ui/src/lib/api/agents.ts | 14 +++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/web-ui/src/components/cases/agent-status-widget.tsx b/web-ui/src/components/cases/agent-status-widget.tsx index 6bb13ce..499addd 100644 --- a/web-ui/src/components/cases/agent-status-widget.tsx +++ b/web-ui/src/components/cases/agent-status-widget.tsx @@ -1,7 +1,7 @@ "use client"; import { useAgentActivity } from "@/lib/api/agents"; -import type { PaperclipAgent } from "@/lib/api/agents"; +import type { PaperclipAgentStatus } from "@/lib/api/agents"; import { Bot } from "lucide-react"; /* ── Status dot colors ───────────────────────────────────────── */ @@ -26,7 +26,7 @@ function statusDot(status: string) { /* ── Agent row ───────────────────────────────────────────────── */ -function AgentRow({ agent }: { agent: PaperclipAgent }) { +function AgentRow({ agent }: { agent: PaperclipAgentStatus }) { return (