# סיכום סשן — 0046
תאריך: 2026-06-05 20:40
אפליקציה: VitruAgent (ויטרו)
נושא: אבחון בילינג קולי + עדכון M2 לפי Cloud Summit '26 + תרשים VIT-015

## מה נבנה/הושלם
1. **אבחון מלא של "השיחה לא עבדה" → בילינג AI Studio.**
   - גילוי מפתח: הקוד **השתנה** ממה שב-PLAN. הקול עובר דרך **Gemini Developer API (מפתח AI Studio)**
     ב-WebSocket גולמי (`gemini_live_client.dart`), מודל `gemini-3.1-flash-live-preview` — **לא** Vertex,
     **לא** firebase_ai. Firebase/vitpmis משמש רק לכלים (Firestore).
   - אומת שכל צד התשתית של vitpmis תקין: Blaze פעיל, חשבון בילינג פתוח (ILS), Vertex AI + Gemini API +
     Firebase AI Logic מופעלים — אבל **לא רלוונטי** לקול.
   - **בדיקת WebSocket אמיתית** (Node 24 built-in WebSocket) על המפתח שהמשתמש שמר ב-`מפתח גמיני.txt`:
     `gemini-3.1-flash-live-preview` → `CLOSE 1011 "prepayment credits depleted"`. שלושה מודלי Live ישנים
     (2.5-native-audio, 2.0-flash-live, gemini-live-2.5) → `CLOSE 1008 not found`.
   - **מסקנה:** המודל בקוד נכון ועדכני; החוסם היחיד הוא **בילינג** — המפתח שייך ל-"Default Gemini Project"
     (נוצר 4.6.2026) על **prepay בלי קרדיטים**. מצב מ-screenshot של AI Studio: VitPMIS = Tier 1 + billing
     account (...488F) **בלי** אזהרת No-credits; Default Gemini Project + VitSiteReport = prepay + No credits.
   - **פתרון (טרם בוצע):** להשתמש במפתח של VitPMIS.

2. **עדכון `PLAN.md` M2 לפי Cloud Summit '26** (משימה מובנית של המשתמש, סדר עבודה 1-4).
   קראתי 4 מסמכי מקור: `כנס גוגל 4.6.2026\insights-and-recommendations.html` (§4, §9.1, §3.2/3.3/3.7),
   זיכרון `reference-cloud-summit-26.md`, PLAN.md, agent_tools.dart.

3. **orchestrate skeleton** — `backend/functions/orchestrate/`: index.js + 4 מודולים, JSDoc חוזים, placeholders.

4. **טבלת סיווג 12 כלים** — 4 קריאה=direct, 8 כתיבה=through-orchestrate. (9.1 כתבה "9"; בפועל 12.)

5. **`kVitruSystemPrompt` חדש** — template רב-תאגידי + `buildVitruSystemPrompt()` + HARD RULES. analyze נקי.

6. **תרשים VIT-015** + הגשה לנייד (קובץ עצמאי + cloudflared tunnel).

## החלטות שהתקבלו
- **הכרעת משתמש: "מסלול Vertex מלא"** — PLAN M2 נרשם נאמן להחלטות B/C (VertexAiSessionService +
  mintRealtimeToken על Vertex), **למרות** שהקוד עובד היום על Developer API וההערה בקוד טוענת
  ש-3.1 Live חשוף רק שם. הסיכון (רגרסיית עברית / זמינות Vertex) **אושר במפורש** ותועד כחוסם P0.
- המשתמש ביקש שאני אכריע בצעדים 3-4 ("מה שאתה ממליץ") → אישרתי את הסיווג והחלתי את ה-prompt.
- הגשה לנייד: cloudflared tunnel (חשיפה זמנית) אושרה ע"י המשתמש מול Firebase Hosting / תמונה.

## בעיות שנפתרו
- **הגשת HTML לנייד:** קובץ HTML מצורף **לא לחיץ** בלקוח הנייד. הרשת מסומנת **Public** + חוקי block ל-python.exe
  → שרת LAN inbound חסום (שינוי firewall/קטגוריה דורש admin שאין לכלי). פתרון: שרת על **127.0.0.1** (loopback,
  לא מסונן) + **cloudflared quick tunnel** (חיבור יוצא, עוקף firewall) → URL ציבורי זמני. עבד (HTTP 200).
- בדיקת מפתח/מודל בלי websockets/ws מותקנים: **Node 24 כולל `WebSocket` גלובלי מובנה**.

## מה לא עבד / להיזהר
- **אסור לחפש מפתחות `AIza` ברחבי האקוסיסטם** — ה-classifier חוסם כ-credential exploration. לקרוא קובץ ספציפי
  שהמשתמש הצביע עליו זה כן בסדר.
- מפתח ה-Gemini הוא בפורמט **`AQ.`** (ephemeral-style), לא `AIzaSy...` — ובכל זאת תקף ל-models.list ול-Live WS.
- python http.server **ייחסם** ב-Public inbound; loopback-only עוקף. cloudflared דורש הורדה (54MB, אין במכונה).
- **שני מצבי ארכיטקטורה בסתירה:** קוד=Developer API (עובד), PLAN=Vertex (יעד). לא לבלבל בסשן הבא.

## קבצים שנוצרו/שונו
- שונה: `VitruAgent\PLAN.md` (M2 הוחלף + בלוק החלטות נעולות עודכן + Changelog)
- שונה: `VitruAgent\lib\services\agent_tools.dart` (kVitruSystemPrompt → template+build+HARD RULES, const→final)
- נוצר: `VitruAgent\backend\functions\orchestrate\{index,routing,session_affinity,admission,circuit_breaker}.js`
- נוצר: `VitruAgent\VitruAgent-architecture-diagram.html` (VIT-015) + `...standalone.html`
- קיים מהמשתמש: `VitruAgent\מפתח גמיני.txt` (מפתח Default Project — להחליף ל-VitPMIS)
- נוקו: צילומי PNG זמניים, cloudflared tunnel נסגר, שרת מקומי נעצר.

## הצעד הבא
1. **בילינג:** המשתמש מביא מפתח VitPMIS → לשים ב-`מפתח גמיני.txt` → בדיקת WebSocket (Node) שמחזיר
   `setupComplete` במקום 1011 → build עם `--dart-define=GEMINI_API_KEY=<vitpmis>`.
2. **M2:** לאמת זמינות `gemini-3.1-flash-live-preview` ב-Vertex על vitpmis לפני כתיבת ה-Cloud Functions.
   אם זמין → לממש mintRealtimeToken + orchestrate (4 רכיבים). אם לא → לחזור לדיון A/B/C עם המשתמש.
3. E2E קולי על מכשיר אמיתי.
