# הקשר להמשך ישיר — 0042
תאריך: 2026-06-03 14:00
אפליקציה: VitruAgent (ויטרו)
המשך מ-0040 (M1) → M2 = שיחה קולית רציפה.

## מה בנוי עכשיו (M2 בקוד ✓)
- **12 כלים** ב-`lib/services/agent_tools.dart` (M1 9 + 3 חדשים: `update_task_due_date`,
  `update_task_priority`, `update_task_title`). `dispatch()` JSON-safe, `openAiToolDefs()`,
  `kVitruSystemPrompt`. 23/23 unit tests ירוק.
- **Cloud Function** `functions/index.js` ב-VitruAgent: callable v2, Node 22, europe-west1,
  secret `OPENAI_API_KEY`, מודל `gpt-realtime-mini` עם fallback `gpt-4o-realtime-mini`,
  server-VAD, Whisper he, voice param נשלח מהקליינט. `agent_tools_schema.js` מקביל ל-Dart.
  `firebase.json` עם בלוק `functions`.
- **`lib/screens/agent/agent_screen.dart`** (~750 שורות) — flutter_webrtc, DataChannel
  `oai-events`, SDP exchange ידני, Voice Orb 7 states, תמלול חי RTL, לולאת tools מלאה.
  בקרות: mute toggle, retry, settings sheet (voice/cap/idle), onboarding sheet, auto-scroll,
  AppLifecycle pause ב-background, permission_handler עם "פתח הגדרות" ב-permanently-denied.
- **`agent_prefs.dart`** — voice/sessionCapSec/idleTimeoutSec ב-SharedPreferences + defaults.
- **`agent_onboarding.dart`** — 8 דוגמאות phrases ב-3 קבוצות, first-launch one-shot.
- **AndroidManifest**: `FOREGROUND_SERVICE_MICROPHONE` + Bluetooth.
- **main.dart**: AgentScreen = tab 0 (6 tabs: ויטרו/עץ/משימות/פרויקטים/ציר/הגדרות).
- **pubspec**: +flutter_webrtc 0.12.5, +cloud_functions 5.1.3, +shared_preferences 2.3.2,
  +permission_handler 11.3.1. -audioplayers.
- **בקרת עלות**: 5 דק׳/סשן, 30s idle, 20 דק׳/יום soft cap (warn 16, block 20).
- **Tests**: `test/services/agent_tools_test.dart` 23/23 ירוק. `flutter analyze` נקי בקוד החדש.
- **PLAN.md** עודכן ל-M2 ✓ (קוד).

## חוסמים שמחכים לפעולת משתמש
1. **vitpmis ב-Spark** (אומת ב-`gcloud billing projects describe vitpmis` → `billingEnabled=false`).
   פעולה: Firebase Console → vitpmis → Upgrade plan → Blaze (שימוש חוזר בחשבון החיוב הקיים
   של vitvital/vitsitereport/vitclip).
2. **OPENAI_API_KEY** לא בסשן: `firebase functions:secrets:set OPENAI_API_KEY --project=vitpmis`
   (פעולת משתמש — Claude לא רואה ערך).

## עדכון 0042b — Pivot ל-Gemini Live
- המשתמש החליט "OpenAI מידי יקר" אחרי שראה תעריפים.
- בחר ב-**Vertex AI דרך firebase_ai** (Live API, Gemini 2.0 flash live).
- `functions/` הועברה ל-`functions_OLD_openai/`. אין צורך ב-Function/secret/API key.
- pubspec: -flutter_webrtc, -cloud_functions, +flutter_sound 9.x.
- `agent_screen.dart` נכתב מחדש לחלוטין: FirebaseAI.vertexAI → liveGenerativeModel → connect().
  Mic: record PCM 16kHz, Player: flutter_sound PCM 24kHz.
- `agent_tools.dart` קיבל `geminiTool()` (12 FunctionDeclarations).
- `agent_prefs.dart` קולות חדשים: Puck/Charon/Kore/Fenrir/Aoede.
- Tool response workaround כי firebase_ai 2.3.0 אין `sendToolResponse` ציבורית — דרך
  `Content('function', [FunctionResponse(...)])`.
- Tests 23/23 ירוק, analyze נקי.
- **חוסם יחיד שנשאר:** vitpmis Blaze upgrade (Vertex AI requirement).

## הצעד הבא (0044 — רק Blaze upgrade ע"י המשתמש)
פעולת משתמש בלבד:
```
Firebase Console → vitpmis → Upgrade plan → Blaze
```
לא צריך OPENAI key, לא צריך Function deploy, לא צריך secrets:set. אחרי שדרוג:
```powershell
cd "D:\Vitruvius Ecosystem\VitruAgent"
"C:\flutter\bin\flutter.bat" run
```

**אימות E2E:** Google sign-in → "מה הפרויקטים שלי?" (list_projects קריאה) → "תוסיף משימה X
לפרויקט Y" (find_project→add_task, מופיע בעץ) → "סמן Z כבוצע" (find→complete_task).

## קבצים רלוונטיים לסשן הבא
- `lib/services/agent_tools.dart` (12 כלים — מוכן)
- `lib/screens/agent/agent_screen.dart` (Voice agent UI — מוכן)
- `lib/screens/agent/agent_prefs.dart`, `agent_onboarding.dart`
- `functions/index.js`, `functions/agent_tools_schema.js`, `functions/package.json`
- `firebase.json` (עם `functions` block)
- `test/services/agent_tools_test.dart` (23/23 ירוק)
- `PLAN.md` — M0/M1/M2 ✓

## Memory entries מסשן 0042
- `project-vitpmis-spark-blocker.md` — תזכורת לבדוק Blaze לפני deploy
- `reference-agent-tools-schema-mirror.md` — Dart+JS schemas חייבים סנכרון ידני
