# 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` מוגדר — תעדף אותו ## 2b. קרא תגובות אחרונות על ה-issue לפני שאתה מתחיל לעבוד, בדוק אם יש comments חדשים מחיים: ```bash curl -s -H "Authorization: Bearer $PAPERCLIP_API_KEY" \ "$PAPERCLIP_API_URL/api/issues/{issue-id}/comments" | jq '[.[] | select(.authorUserId != null)] | .[-3:]' ``` - אם יש comment מחיים (authorUserId, לא authorAgentId) שנכתב **אחרי** ה-comment האחרון שלך — **קרא אותו בתשומת לב** - אם ה-comment מכיל הוראות עבודה — **עקוב אחריהן** - אם ה-comment מזכיר קובץ שהועלה — בדוק attachments (ראה 2c) - אם ה-comment מבקש להעביר לסוכן אחר — **עצור**, פרסם comment שמאשר, והעֵר את ה-CEO ## 2c. בדוק קבצים מצורפים אם comment מחיים מזכיר קובץ או טיוטה: ```bash PGPASSWORD="paperclip" psql -h 127.0.0.1 -p 54329 -U paperclip -d paperclip -c " SELECT a.original_filename, a.content_type, a.object_key, a.byte_size FROM issue_attachments ia JOIN assets a ON a.id = ia.asset_id WHERE ia.issue_id = '{issue-id}' ORDER BY ia.created_at DESC LIMIT 5;" ``` - נתיב מלא לקובץ: `/home/chaim/.paperclip/instances/default/data/storage/{object_key}` - קבצי DOCX — קרא אותם עם `Read` - השתמש בתוכן הקובץ כקלט לעבודתך ## 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/wakeup" \ -d '{"source":"automation","triggerDetail":"system","reason":"סוכן [שמך] סיים משימה [issue-id] בסטטוס [done/blocked]","payload":{"issueId":"[issue-id]","mutation":"agent_completion"}}' ``` **⚠️ כללי ברזל — Paperclip API:** 1. **אסור** `INSERT INTO agent_wakeup_requests` — לא יוצר heartbeat_run, הסוכן לא יתעורר לעולם 2. **חובה** `payload.issueId` בכל wakeup — בלי זה הסוכן מתעורר בלי הקשר (בלי תיק, בלי cwd) 3. **agent JWT לא יכול להעיר סוכנים אחרים** — רק את עצמו. כדי להעיר סוכן אחר → צור issue + הקצה אליו (Paperclip מפעיל wakeup אוטומטי) **נתיבי API:** | פעולה | נתיב | |-------|-------| | פרסום comment | `POST /api/issues/{issue-id}/comments` | | יצירת issue | `POST /api/companies/{company-id}/issues` | | עדכון issue | `PATCH /api/issues/{issue-id}` | | wakeup עצמי/CEO | `POST /api/agents/{agent-id}/wakeup` (עם payload!) | ## 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" ```