# סיכום סשן — 0040
תאריך: 2026-06-03 09:32
אפליקציה: VitruAgent (ויטרו)
נושא: תכנון מחדש + תיקון השורש שאנטיגרביטי נכשל בו

## הקשר
המשתמש ניסה לבנות את VitruAgent עם Antigravity (ה-IDE של גוגל) והוא "לא הצליח". ביקש שאלמד
את כל הקבצים, אבין מה ניסה לבנות, ואכתוב תוכנית חדשה.

## אבחון — למה אנטיגרביטי נכשל (אומת מול ה-SDK המותקן)
- הקליפה (Flutter UI — עץ, משימות, לוגין, ניווט) תקינה — VitruAgent הוא קלון של VitPMIS.
- **הלב — `backend/index.js`, שרת תווך Node ל-Gemini Live API — נכתב מול API שלא קיים:**
  - `ai.clients.createLiveClient(...)` — ל-`@google/genai` v2.6 **אין `ai.clients`**. ה-API האמיתי הוא
    `ai.live.connect({model, config, callbacks})`. אימתתי בהרצת node שבדקה את ה-object keys.
  - EventEmitter `session.on('content')/send({realtimeInput})/connect()` במקום ה-API ה-callback-based
    (`sendRealtimeInput`/`sendToolResponse`).
  - `firebase-admin` מאותחל בלי credentials → גם Function Calling נופל בשקט ל-mock data.
  - תוצאה: השרת זרק על החיבור הראשון, תפס את החריגה, סגר את ה-socket. **"M1 בוצע" מעולם לא היה אמיתי.**

## החזון (חידוד מהמשתמש תוך כדי)
VitruAgent = **המוח** של כל האקוסיסטם — מרכז ומארגן את כל הדאטה והתהליכים, שואב מכל
האפליקציות/התוכנות/הגוגלים, ומנגיש ויזואלית (עץ) **ובשיחה קולית רציפה וזורמת** (לא הקלטה-ושליחה).
דרש למחוק כל אזכור J.A.R.V.I.S.

## החלטות שהתקבלו (4 שאלות למשתמש)
1. **קול:** רציף/זורם, לא turn-based. ספק = **OpenAI Realtime API** (העדפת משתמש), הזול → `gpt-realtime-mini`.
   הערה כנה שנמסרה: מנוי ChatGPT ≠ גישת API (חיוב נפרד). fallback = Gemini Live דרך firebase_ai.
2. **מוח/דאטה:** לתכנן את כל המקורות מההתחלה (aggregator מלא), בנייה בשלבים.
3. **Firebase:** שימוש חוזר ב-`vitpmis` (עסקי) כ-hub.
4. **MVP:** לדבר עם המשימות/הפרויקטים (קריאה+כתיבה לעץ).
- **תוצאה על "בלי שרת":** הבחירה ב-OpenAI + cross-project מחזירה שכבת Cloud Functions מינימלית
  (token + אגרגציה), לא שרת always-on.

## מה נבנה/הושלם
- **M0:** סקראב J.A.R.V.I.S מ-`projects_screen.dart` (tooltip→"שיחה עם ויטרו"),
  `live_mode_screen.dart` (title→"ויטרו"), `PLAN.md` (title), ה-docx (היה בתוך `<w:delText>` tracked-deletion —
  הוסר ע"י rewrite של word/document.xml בזיפ דרך python), ו-`backend_OLD/index.js` (→"Vitru").
  `backend/`→`backend_OLD/` (Rename-Item; mv של bash נכשל ב-"Device or resource busy", PowerShell הצליח).
- **M1 ליבה:** `lib/services/agent_tools.dart` — registry של 9 כלים, סכמת JSON אחת, `dispatch(name,args)`
  שמחזיר תמיד Map JSON-safe (שגיאות כ-`{error}`, לא זורק), `openAiToolDefs()`, `kVitruSystemPrompt`.
  כלי כתיבה מקבלים IDs; הסוכן פותר שם→id דרך find_project/list_tasks. מחיקות לא נחשפו ככלי (אישור ב-UI).
  `flutter analyze lib\services\agent_tools.dart` → No issues found.

## החלטות אבטחה
- מפתח OpenAI לא נשלח בצ'אט. ייכנס דרך `firebase functions:secrets:set OPENAI_API_KEY --project vitpmis`
  (המשתמש מריץ; אני אף פעם לא רואה את הערך). הקוד יקרא עם `defineSecret`. אופציה ב': `functions/.env` (gitignored).
  כלל: אם מפתח נחשף — Revoke+Create חדש ב-platform.openai.com.

## מה לא עבד / להיזהר
- אין git ב-VitruAgent (`Is a git repository: false`) — ארכוב = move ידני.
- `web_socket_channel`/`audioplayers` עדיין ב-pubspec כי `live_mode_screen.dart` מייבא אותם —
  הסרה רק כשמוחקים את live_mode ב-M2 (אחרת build שבור).
- vitvital/vitsitereport הם Firebase projects **נפרדים** מ-vitpmis → קריאה חוצת-פרויקט דורשת
  Cloud Function עם service-account/secret per-project, או secondary Firebase apps. VitClip — היסטוריה
  local-only (SharedPreferences), צריך sync ל-Firestore קודם.

## קבצים שנוצרו/שונו
- נוצר: `lib/services/agent_tools.dart`
- שונה: `lib/screens/projects/projects_screen.dart` (tooltip), `lib/screens/live_mode/live_mode_screen.dart` (title),
  `PLAN.md` (נכתב מחדש לארכיטקטורה החדשה), `# PLAN ערוכה VitruAgent .docx` (סקראב), `backend_OLD/index.js`
- הועבר: `backend/` → `backend_OLD/`
- תוכנית: `C:\Users\elyas\.claude\plans\precious-percolating-turing.md` (מאושרת)

## הצעד הבא
M2 — Cloud Function `mintRealtimeToken` + `lib/screens/agent/agent_screen.dart` (WebRTC, Voice Orb,
לולאת tools, בקרת עלות) + חיווט ב-main.dart + מחיקת live_mode והסרת deps. ראה context-now ל-0040.
חוסם חיצוני: מפתח OpenAI + אישור Blaze ב-vitpmis.
