Test run on case 1130-25 revealed critical gaps. This commit fixes: HEARTBEAT.md (#1, #11): - Agents MUST wake CEO after completing any task (wakeup request) - New "blocked" status option — agents cannot mark "done" if something failed - Fallback: direct DB insert if API wake doesn't work legal-analyst.md (#2): - New step 6: completeness checks BEFORE finishing - Verify all appeal/response documents extracted successfully - Verify all extracted documents produced claims - Verify classification is correct (no claims from committee) - If any check fails → status = "blocked", not "done" legal-ceo.md (#3, #6, #7, #12, #13, #14, #15): - Step A rewritten with 3 sub-checks: A1: extraction completeness (no missing documents) A2: negative checks (wrong classification, abnormal counts, missing parties) A3: methodology compliance (syllogisms, CREAC prep, steel-man, etc.) - Any failure blocks progress to step B legal-qa.md (#6 reinforcement): - New step 2b: negative checks on the written decision - Missing issues, bare quotes, empty formulas, mixed findings/conclusions Also: - Synced all agent files to /home/chaim/legal-ai/ (Paperclip reads from there) - Synced methodology + lessons + corpus docs - Fixed claim classification in DB: 20 committee/applicant claims → response (#5) Remaining gaps (3): - #4: Paperclip cache may need restart to pick up new definitions - #7: Matmon document retry (25K words, 0 claims extracted) - #9: 53 appellant claims may need synthesis (high but not blocking) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
124 lines
4.5 KiB
Markdown
124 lines
4.5 KiB
Markdown
# HEARTBEAT.md — רשימת ביצוע לכל ריצה
|
||
|
||
## שפה — כלל עליון
|
||
|
||
**כל הפלט שלך חייב להיות בעברית בלבד.** זה כולל:
|
||
- Comments ב-Paperclip
|
||
- הודעות סטטוס
|
||
- תיאורי שגיאות
|
||
- סיכומים ודיווחים
|
||
- חשיבה פנימית (thinking)
|
||
|
||
אין יוצאים מן הכלל. גם שמות tools, פקודות, ונתיבי קבצים — ההסבר סביבם בעברית.
|
||
|
||
---
|
||
|
||
הרץ את הרשימה הזו בכל heartbeat.
|
||
|
||
## 1. זיהוי
|
||
|
||
- וודא שאתה יודע מי אתה: `$PAPERCLIP_AGENT_ID`
|
||
- בדוק הקשר: `$PAPERCLIP_TASK_ID`, `$PAPERCLIP_WAKE_REASON`
|
||
|
||
## 2. בדוק תיבת דואר
|
||
|
||
```bash
|
||
curl -s -H "Authorization: Bearer $PAPERCLIP_API_KEY" "$PAPERCLIP_API_URL/api/agents/me/inbox-lite"
|
||
```
|
||
|
||
- תעדוף: `in_progress` קודם, אחר כך `todo`
|
||
- אם `PAPERCLIP_TASK_ID` מוגדר — תעדף אותו
|
||
|
||
## 3. Checkout ועבודה
|
||
|
||
```bash
|
||
curl -s -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
|
||
"$PAPERCLIP_API_URL/api/issues/{issue-id}/checkout"
|
||
```
|
||
|
||
- עבוד על המשימה לפי ההוראות ב-AGENTS.md שלך
|
||
- השתמש בכלים המשפטיים (legal-ai MCP)
|
||
|
||
## 4. דיווח — חובה!
|
||
|
||
**לפני שאתה מסיים, תמיד:**
|
||
|
||
### 4א. פרסם comment על ה-issue
|
||
```bash
|
||
curl -s -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
|
||
-H "Content-Type: application/json" \
|
||
"$PAPERCLIP_API_URL/api/issues/{issue-id}/comments" \
|
||
-d '{"body": "סיכום העבודה..."}'
|
||
```
|
||
|
||
### 4ב. קבע סטטוס — done או blocked
|
||
|
||
**אם המשימה הושלמה בהצלחה** (כל המסמכים חולצו, כל הבדיקות עברו, אין חסימות):
|
||
```bash
|
||
curl -s -X PATCH -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
|
||
-H "Content-Type: application/json" \
|
||
"$PAPERCLIP_API_URL/api/issues/{issue-id}" \
|
||
-d '{"status": "done"}'
|
||
```
|
||
|
||
**אם המשימה נכשלה או חסומה** (מסמך לא חולץ, timeout, חוסר מידע, שגיאה שלא ניתנת לפתרון):
|
||
```bash
|
||
curl -s -X PATCH -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
|
||
-H "Content-Type: application/json" \
|
||
"$PAPERCLIP_API_URL/api/issues/{issue-id}" \
|
||
-d '{"status": "blocked"}'
|
||
```
|
||
**אסור** לסיים issue כ-"done" אם יש כשל שלא טופל. "done" = הכל הושלם בהצלחה. אם משהו נכשל — "blocked".
|
||
|
||
### 4ג. העֵר את העוזר המשפטי (CEO) — חובה!
|
||
אחרי כל סיום משימה (done או blocked), **העֵר את העוזר המשפטי** כדי שיבדוק תוצאות ויחליט על הצעד הבא:
|
||
```bash
|
||
curl -s -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
|
||
-H "Content-Type: application/json" \
|
||
"$PAPERCLIP_API_URL/api/agents/752cebdd-6748-4a04-aacd-c7ab0294ef33/wake" \
|
||
-d '{"reason": "סוכן [שמך] סיים משימה [issue-id] בסטטוס [done/blocked]. נדרשת בדיקה והחלטה על הצעד הבא."}'
|
||
```
|
||
אם ה-API הזה לא עובד, השתמש ב-DB ישירות:
|
||
```bash
|
||
PGPASSWORD="paperclip" psql -h 127.0.0.1 -p 54329 -U paperclip -d paperclip -c "
|
||
INSERT INTO agent_wakeup_requests (company_id, agent_id, source, reason, status, requested_by_actor_type)
|
||
VALUES (
|
||
(SELECT company_id FROM agents WHERE id = '$PAPERCLIP_AGENT_ID'),
|
||
'752cebdd-6748-4a04-aacd-c7ab0294ef33',
|
||
'agent_completion',
|
||
'סוכן סיים משימה — נדרשת בדיקה והחלטה על הצעד הבא',
|
||
'pending',
|
||
'agent'
|
||
);"
|
||
```
|
||
|
||
## 5. התראת מייל — כשנדרשת תשובה אנושית
|
||
|
||
**כשהתוצאה דורשת החלטה או תשובה של חיים**, שלח מייל:
|
||
|
||
```bash
|
||
python3 /home/chaim/legal-ai/scripts/notify.py \
|
||
"נדרשת תשובתך — [תיאור קצר]" \
|
||
"תוכן ההודעה עם סיכום מה נדרש"
|
||
```
|
||
|
||
**מתי לשלוח — תמיד:**
|
||
- **סיום כל משימה** — עם סיכום קצר של מה בוצע
|
||
- בקשה לקביעת תוצאה (דחייה/קבלה/חלקית)
|
||
- בקשה לאישור כיוון נימוק
|
||
- דוח QA שנכשל (צריך החלטה על תיקונים)
|
||
- החלטה מוכנה לביקורת דפנה
|
||
- כל מצב שדורש פעולה אנושית ולא יכול להתקדם לבד
|
||
- שגיאה שלא ניתן לפתור ללא התערבות
|
||
|
||
**מתי לא לשלוח:**
|
||
- עדכוני סטטוס ביניים (רק בסיום)
|
||
- שגיאות טכניות שאפשר לפתור לבד
|
||
|
||
## 6. Release
|
||
|
||
```bash
|
||
curl -s -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
|
||
"$PAPERCLIP_API_URL/api/issues/{issue-id}/release"
|
||
```
|