# הקשר להמשך ישיר — 0040
תאריך: 2026-06-03 09:32
אפליקציה: VitruAgent (ויטרו)

## מה בנוי עכשיו
- **תוכנית חדשה מאושרת** (אחרי שאנטיגרביטי נכשל): `C:\Users\elyas\.claude\plans\precious-percolating-turing.md`
- **M0 ✓** — מחיקת כל J.A.R.V.I.S (lib/PLAN/docx/backend), שם הסוכן = "ויטרו". `backend/`→`backend_OLD/`.
  `firebase_options.dart` כבר מצביע ל-`vitpmis` (עסקי).
- **M1 ליבה ✓** — `lib/services/agent_tools.dart`: 9 כלים מעל `FirestoreService` (list_domains,
  list_projects, find_project, list_tasks, create_project, add_task, complete_task,
  update_task_status, update_project_status) + adapter ל-OpenAI (`openAiToolDefs`) + `dispatch()` +
  `kVitruSystemPrompt`. `flutter analyze` נקי.
- `PLAN.md` בריפו עודכן לארכיטקטורה החדשה עם סטטוס M0✓/M1✓.

## הצעד הבא
**M2 — שיחה קולית רציפה (OpenAI Realtime).** חוסם: מפתח OpenAI API (לא מנוי ChatGPT) + Blaze ב-vitpmis.
המשתמש שאל אם בטוח לשלוח מפתח בצ'אט — נעניתי: לא, להזין דרך `firebase functions:secrets:set OPENAI_API_KEY`.
**רצף לבנות (אפשר לפני שיש מפתח — הכל מחווט ומוכן):**
1. `functions/` ב-vitpmis: Cloud Function `mintRealtimeToken` (auth Firebase → ephemeral token,
   model `gpt-realtime-mini`, tools מ-`AgentTools.openAiToolDefs()`, secret OPENAI_API_KEY).
2. `lib/screens/agent/agent_screen.dart` (מחליף `live_mode/`): WebRTC ל-OpenAI, אודיו דו-כיווני,
   Voice Orb, תמלול חי RTL, לולאת tools (`function_call`→`AgentTools.dispatch`→`function_call_output`),
   בקרת עלות (תקרת זמן + idle disconnect + counter).
3. חיווט ב-`lib/main.dart` (מסך הסוכן כברירת מחדל); מחיקת `lib/screens/live_mode/` + הסרת
   `web_socket_channel`/`audioplayers` מ-pubspec; +package WebRTC (flutter_webrtc).

## קבצים רלוונטיים לסשן הבא
- `lib/services/agent_tools.dart` (הכלים — מוכן)
- `lib/services/firestore_service.dart` (ה-CRUD שהכלים עוטפים)
- `lib/main.dart` (AppShell — לחווט מסך הסוכן)
- `lib/screens/live_mode/live_mode_screen.dart` (להחליף)
- `C:\Users\elyas\.claude\plans\precious-percolating-turing.md` (התוכנית המלאה)
