feat(seance): predecessor by-case לצריכת-סוכן דרך ה-plugin (#220 המשך) #410
Reference in New Issue
Block a user
Delete Branch "worktree-predecessor-by-case"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
מה
צעד-Backend של follow-up #1 (predecessor לסוכנים). מוסיף נתיב by-case ל-predecessor כך שכלי-ה-plugin
legal_predecessor_context(PR נפרד ב-plugin-legal-ai) יוכל לספק לסוכן "מה ריצות קודמות על התיק הסיקו" — הסוכנים חושבים ב-case_number, לא ב-issue-UUID.איך
get_predecessor_for_case(case_number)— האח case-scoped שלget_predecessor_context(by-issue): מזהה את פרויקט-התיק, ומחזירsummaryשל ריצות-heartbeat_runsשהסתיימו על-פני כל issues של התיק, newest-first, עם summary בלבד (ריצות cancelled ריקות מסוננות)._shape_predecessor_run— נתיב-shaping יחיד ל-by-issue+by-case (G2).i.id::text = payload->>'issueId'(לא cast של payload חופשי ל-uuid — payload פגום לא שובר את ה-query).pc_get_predecessor_for_case(read-only); endpointGET /api/operations/cases/{case_number}/predecessor.למה plugin ולא mcp→web
זו ההכרעה מהדיון: הכלי יחיה ב-
plugin-legal-ai(המעטפת המוצהרת — מותר לה לדבר גם Paperclip וגם legal-ai web), לא ב-mcp-server(הליבה נשארת עיוורת-פלטפורמה, G12). ה-backend כאן הוא ה-endpoint הדומייני שהכלי יקרא.בדיקות
18 pytest (2 חדשות: shaping+identifier, case-לא-נמצא). ✅
אומת חי read-only:
1043-02-26/8125-09-24→ מסקנות-דיספוזיציה אמיתיות ("הפקתי את טיוטת-הביניים…", "The loop is now broken durably…").המשך (מוצהר)
plugin-legal-ai: כליlegal_predecessor_context(case_number)שקורא ל-endpoint (בונהnpm build→ plugin install →pm2 restart paperclip).🤖 Generated with Claude Code
מוסיף get_predecessor_for_case(case_number) — האח case-scoped של get_predecessor_context (by-issue). סוכנים חושבים ב-case_number (לא issue-UUID), לכן זהו הנתיב שכלי-ה-plugin legal_predecessor_context (PR נפרד ב-plugin-legal-ai) יקרא. מחזיר מסקנות (summary) של ריצות-heartbeat שהסתיימו על-פני issues של התיק, newest-first, עם summary בלבד (ריצות cancelled ריקות מסוננות). - shaper משותף _shape_predecessor_run (G2 — נתיב-shaping יחיד ל-by-issue+by-case). - join בטוח i.id::text = payload->>'issueId' (לא cast של payload חופשי ל-uuid). - Port pc_get_predecessor_for_case (read-only); endpoint GET /api/operations/cases/{case_number}/predecessor. - 2 בדיקות (shaping+identifier, case-לא-נמצא). אומת חי: 1043-02-26/8125-09-24 מחזירים מסקנות-דיספוזיציה אמיתיות. Invariants: G12 (fetch מהמעטפת, המגע מהשער; הכלי יחיה ב-plugin=מעטפת מוצהרת, לא ב-mcp-server), G2 (shaper יחיד). המשך: PR ב-plugin-legal-ai (כלי) + הוראת-HEARTBEAT. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>