-
released this
2026-06-21 14:17:27 +03:00 | 0 commits to main since this releaseשיוך מסמכי AI לתיקיית CaseFiles
מסמכים שנוצרים (מתבנית או חופשי) משויכים לתיקיית "מסמכים" של התיק כאשר CaseFilesCore מותקן.
התקנה
הורד את
SmartAssistant-2.11.0.zipוהתקן דרך Administration → Extensions.Downloads
-
released this
2026-06-03 11:14:20 +03:00 | 2 commits to main since this releaseמה תוקן בגרסה הזו
איחוד מתן השמות למסמכים שנוצרים דרך שירה, וריסון מלא של שמות שה-AI בוחר.
שינוי
- מסמך חופשי ומסמך מתבנית מקבלים שם לפי הנושא בלבד (בלי תאריך, בלי שם איש קשר, בלי מקף רחב). השם מתואם בין ה-CRM, הקובץ המצורף והקובץ בתיקיית הרשת.
- המסמך נשמר לתיקיית התיק הנכונה (קודם לעיתים נשמר לתיקיית ברירת מחדל כללית).
- כל שם שה-AI בוחר (קובץ, תיקייה, שינוי שם, העברה) עובר ניקוי בצד השרת, עם טיפול אוטומטי בכפילויות. ה-AI כבר לא יכול לקבוע שם קובץ גולמי.
התקנה
דורש NetworkStorageIntegration בגרסה 5.9.0 ומעלה.
הורד אתSmartAssistant-2.10.5.zipוהתקן דרך Administration → Extensions, ואז בצע Rebuild.Downloads
-
released this
2026-05-27 13:12:35 +03:00 | 3 commits to main since this releaseתיקון משלים ל-2.10.3
ה-AssistantRule היה חסר
clientDefs/AssistantRule.json(אותו gap שתיקנתי ל-CaseMemory ב-2.10.3). תוצאה: לחיצה על/#AssistantRuleבנאב גרמה ל-404 בקונסול:/client/custom/modules/smart-assistant/src/controllers/assistant-rule.js Failed to load resource: 404(זה ה-EspoCRM frontend convention probe — מנסה לטעון JS controller ספציפי, וכשלא נמצא נופל ל-404 נראה בקונסול.)
תיקון
הוספת
Resources/metadata/clientDefs/AssistantRule.jsonעם:{ "controller": "controllers/record", "color": "#5e8c61", "iconClass": "fas fa-list-check", ... }עכשיו ה-frontend משתמש ב-default record controller של EspoCRM ולא מנסה לטעון קובץ JS שלא קיים.
אימות
לאחר ההתקנה, גישה ל-/#AssistantRule תציג רשימה רגילה ללא 404 בקונסול. דף /#CaseMemory כבר תוקן ב-2.10.3.
התקנה
הורד
SmartAssistant-2.10.4.zipוהתקן דרך Administration → Extensions. אחרי ההתקנה: Clear Cache + Ctrl+Shift+F5.Downloads
-
released this
2026-05-27 12:52:34 +03:00 | 4 commits to main since this releaseתיקונים שמשלימים את 2.10.0/2.10.1/2.10.2
המשתמש לא ראה את ה-entities של שירה ב-Admin → Layout Manager, וקיבל 404 בקונסול על
case-memory.js. שני באגים נפרדים:1. AssistantRule לא הופיע ב-Layout Manager
scopes/AssistantRule.jsonהיה חסרcustomizable: true. EspoCRM מסתיר entities שאינם customizable מ-Admin → Entity Manager → Layouts. ארבע ה-entities האחרים של שירה (AssistantPrompt, AssistantSkill, UserProfile, CaseMemory) כבר היו עם הדגל הזה — רק AssistantRule לא.2. CaseMemory מחזיר 404 על JS controller
clientDefs/CaseMemory.jsonלא היה קיים בכלל. ה-API החזיר אובייקט ריק ב-Metadata, וה-frontend נפל ל-convention default שמנסה לטעוןclient/custom/modules/smart-assistant/src/controllers/case-memory.js(קובץ שלא יצרנו). זה גרם ל-404 ב-browser console.הוספת
Resources/metadata/clientDefs/CaseMemory.jsonעםcontroller: controllers/record(ה-default של EspoCRM) פותרת ללא JS מותאם.אימות בפרודקשן
GET /api/v1/Metadata?key=scopes.AssistantRule.customizable→trueGET /api/v1/Metadata?key=clientDefs.CaseMemory→ אובייקט מלא עם controller, icon, filters
התקנה
הורד
SmartAssistant-2.10.3.zipוהתקן דרך Administration → Extensions. אחרי ההתקנה: Clear Cache + Ctrl+Shift+F5.Downloads
-
released this
2026-05-27 12:37:02 +03:00 | 5 commits to main since this releaseתיקון קריטי — התקנה דרך Admin → Extensions נכשלה
ניסיון להעלות את
SmartAssistant-2.10.0.zipאו2.10.1.zipדרך Admin → Extensions החזיר HTTP 500:Class "AfterInstall" not found.הסיבה
ה-installer של EspoCRM (
application/Espo/Core/Upgrades/Actions/Base.php:397) טוען אתscripts/AfterInstall.phpבעזרתrequire_onceואז קוראnew AfterInstall()— בלי namespace. ה-class חייב להיות class טופ-לבל, לא תחת namespace.הגרסאות 2.10.0/2.10.1 שלי הכריזו:
namespace Espo\Modules\SmartAssistant\Scripts; class AfterInstall { ... }אז
new AfterInstall()חיפש את ה-class בroot ולא מצא. ההתקנה התרסקה אחרי שכבר העתיק קבצים.התיקון
הסרת ה-namespace. ה-class עכשיו מבני באותו pattern כמו
GoogleIntegration/scripts/AfterInstall.phpשמותקן בהצלחה זה חודשים:use Espo\Core\Container; class AfterInstall { public function run(Container $container, $params = null): void { ... } }התקנה
הורד
SmartAssistant-2.10.2.zipוהתקן דרך Administration → Extensions. הפעם ההתקנה תרוץ ב-completion ויזרעו 7 ה-AssistantPrompt rows אוטומטית (אם כבר קיימים — דילוג).Downloads
-
released this
2026-05-27 12:13:12 +03:00 | 6 commits to main since this releaseתיקוני UI לגרסה 2.10.0
לאחר התקנת 2.10.0 בפרודקשן התגלו שתי בעיות תצוגה:
1. CaseMemory מחזיר 404 בנאב
הפנייה ל-
/#CaseMemoryהחזירה שגיאה כי ה-entity לא היה לו Controller class. הוא היה זמין רק דרך relation panels של Case ודרך actions של SmartAssistant — מעולם לא כ-CRUD ישיר. הוספת קובץ אחדControllers/CaseMemory.php(יורש מ-Record) פותרת.זה אותו תיקון של AssistantRule בגרסה 2.9.2.
2. רשימות מציגות רק עמודה אחת
ה-layouts נשמרו בנתיב
Resources/metadata/layouts/...במקום ב-Resources/layouts/.... EspoCRM לא מצא אותם ונפל ל-default generic. תוצאה: 5 ה-entities (AssistantPrompt, AssistantRule, AssistantSkill, CaseMemory, UserProfile) הציגו רק עמודת שם.הועברו 12 קובצי layout למיקום הנכון.
אימות אחר התיקון
GET /api/v1/{Entity}/layout/listמחזיר 200 עם כל העמודות לכל אחת מ-5 ה-entities.GET /api/v1/CaseMemory?maxSize=5מחזיר 200 עם 65 רשומות.
התקנה
הורד
SmartAssistant-2.10.1.zipוהתקן דרך Administration → Extensions. אחרי ההתקנה: Clear Cache + רענון מלא של הדפדפן (Ctrl+Shift+F5).Downloads
-
released this
2026-05-27 11:35:03 +03:00 | 8 commits to main since this releaseגרסה חדשה — ניהול מלא של שירה דרך ה-UI של EspoCRM
הגרסה הזו פותחת אזור חדש בממשק הניהול: ניהול שירה. כל הטקסט שמרכיב את ה-system prompt של שירה (פרסונה, חוקי כלים, סגנון כתיבה, חוקי התנהגות, מיומנויות, פרופילי משתמשים, זיכרון תיקים) ניתן עכשיו לצפייה ועריכה ישירות מ-EspoCRM, בלי צורך ב-deploy של קוד.
ארכיטקטורה: Layered Defaults
EspoCRM DB (admin עורך) ↓ ContextProvider PHP (כל request) ↓ context['assistantPrompts', 'userProfile', 'availableSkills', 'assistantRules'] ↓ shira-hermes prompt_builder.py ↓ (אם DB row חסר/לא פעיל → fallback ל-default מובנה בקוד)עיקרון בטיחות: מחיקת כל הרשומות ב-UI לא מבריקה את שירה. ה-defaults תמיד שם.
מה חדש
ישויות חדשות:
AssistantPrompt— סעיפי ה-system prompt של שירה (7 רשומות נזרעות בהתקנה).AssistantSkill— מיומנויות (workflows) של שירה.UserProfile— פרופיל אישי לכל עורך/ת דין.
שינויי ממשק:
- AssistantRule כעת ב-navbar (היה נסתר עם
tab: false). - CaseMemory כעת ב-navbar עם גישת חיפוש כללית.
- אזור Admin חדש "ניהול שירה" שמרכז את כל החמש: פרומפטים, כללים, מיומנויות, פרופילים, זיכרון תיקים.
עורך מותאם:
- שדה ה-content של פרומפטים/מיומנויות/פרופילים מציג textarea ב-monospace עם
dir=auto(RTL/LTR מותאם אוטומטית) ו-min-height 500px. נוח לעבודה בעברית, אנגלית, ו-JSON snippets מעורבים.
תיקונים תלויים
-
save_memory bug: גרסת 2.9.x של shira-hermes יצרה Notes עם prefix "🧠" במקום רשומות CaseMemory. תיקנו ל-route דרך
SmartAssistant/action/executeToolשמכוון נכון ל-CaseMemoryService. מיגרציה של Notes לגאסיים זמינה ב-shira-hermes/scripts/migrate_legacy_memory_notes.py. -
שמירת חוקים: בנוסף לתיקון v2.9.2 (Controller class), עכשיו AssistantRule מופיע גם ב-navbar הרגיל.
תיקון תלוי ב-shira-hermes
הגרסה הזו פועלת לצד commit
72f08e5שלshira-hermesשמשנה אתprompt_builder.pyלקרוא מ-context לפי key, עם fallback ל-defaults. עדכון ה-image של shira-hermes נדרש.התקנה
הורד את
SmartAssistant-2.10.0.zipוהתקן דרך Administration → Extensions. ה-AfterInstall hook יזרע אוטומטית את 7 ברירות המחדל של ה-prompts. אחרי ההתקנה: Clear Cache ורענון UI.זמינות
ניהול שירה > פרומפטים → ערוך את
tool_rulesלהוסיף משפט. ה-chat הבא ישתמש בערך החדש.מיגרציית Notes לגאסיים: דאקר אקסק ל-shira-hermes prod והרץ:
python3 scripts/migrate_legacy_memory_notes.py --dry-run # בדוק python3 scripts/migrate_legacy_memory_notes.py # רץDownloads
-
released this
2026-05-27 09:50:44 +03:00 | 9 commits to main since this releaseתיקון — endpoint של AssistantRule לא היה חשוף
הגרסה הזו פותרת תקלה שגרמה לשירה לומר "✅ כלל חדש נשמר" כשבפועל הכלל לא נשמר.
הבעיה
save_ruleשל שירה קורא ל-POST /api/v1/AssistantRule. למרות שה-entity הוגדר כראוי ב-scopes/AssistantRule.json(entity=true, object=true, acl=true), EspoCRM החזיר HTTP 404 בלוג:Controller 'AssistantRule' does not exist.הסיבה: ל-EspoCRM נדרשת מחלקת Controller כדי לחשוף entity דרך ה-API הסטנדרטי. אם המחלקה לא קיימת, גם אם ה-metadata תקין, ה-endpoint לא יעבוד.
התיקון
קובץ חדש:
Controllers/AssistantRule.phpשמורש מ-Espo\Core\Controllers\Record. שורה אחת, חושפת את כל ה-CRUD הסטנדרטי (GET/POST/PUT/DELETE) עם אכיפת ACL.נבדק בפרודקשן אחר התיקון:
GET /api/v1/AssistantRulereturns 200 וברשימהPOST /api/v1/AssistantRuleיוצר רשומה ומחזיר 200- שני הכללים שהמשתמש ביקש לשמור (חיפוש בתת-תיקיות, איסור em-dash) נשמרו בהצלחה ב-DB
תיקון משלים ב-shira-hermes
נמסר ב-commit
06b27e9: הוסף ל-system prompt כללVERIFY TOOL RESULTשמחייב לקרוא את תוצאת הכלי לפני דיווח הצלחה למשתמש. כך אם save_rule (או כל כלי אחר) יחזיר שגיאה, המודל יודיע על הכישלון במקום לשקר.התקנה
הורד את
SmartAssistant-2.9.2.zipוהתקן דרך Administration → Extensions. לאחר ההתקנה: Clear Cache.Downloads
-
released this
2026-05-26 17:02:30 +03:00 | 10 commits to main since this releaseתיקון קריטי — קריאת מסמכי DOCX לאסיסטנט AI
הגרסה הזו פותרת תקלה קריטית שהתגלתה בפרודקשן: שירה (האסיסטנט AI) המציאה לחלוטין את תוכן כתב הערעור של תיק לקוח אמיתי, וכתבה את הפרטים הפיקטיביים ל-CRM (משימה, פגישה, זיכרון תיק) — כי המנגנון לקריאת DOCX שתק והחזיר NULL במקום להציג שגיאה.
הבעיה
DocumentAnalyzer::extractFromDocxהסתמך על הספרייהPhpOffice\PhpWord. בקונטיינר הפרודקשן של EspoCRM, קבצי הספרייה אכן קיימים תחתvendor/, אבל המחלקה לא רשומה ב-PSR-4 autoload של composer. כתוצאה מכך,class_exists()החזיר שקרית באופן שקט, השיטה החזירה NULL, ה-OCR fallback רץ רק על תמונת החתימה במסמך — והמודל המציא ערעור פיקטיבי על "פגיעת ברך" במקום הערעור האמיתי על תסמונת תעלה קרפלית (CTS).התיקון
נטילת התלות ב-PHPWord. הפונקציה כעת קוראת ישירות את
word/document.xmlמתוך ה-zip של ה-DOCX באמצעותZipArchiveו-regex פשוט. גישה זו:- לא תלויה ב-composer/PHPWord — לא מסתכנת עוד בכשל שקט
- חזקה יותר — מטפלת בטבלאות, הערות שוליים, hyperlinks (PHPWord פיספסה אותם כי ה-element walker שלה רק ברמה אחת)
- נבדקה על המסמך המקורי בפרודקשן — חילצה 80 פסקאות / 16,633 תווים נקיים (לעומת 0 לפני התיקון)
תיקון משלים ב-shira-hermes
הוא משוחרר במקביל (commit 7b517e1) ומוסיף הגנה כפולה: גם ה-OCR fallback מצידו קורא כעת את
word/document.xml, וגם הוא מסרב לעבד תוצאת OCR ריקה ולא מאפשר למודל להמציא תוכן.התקנה
הורד את
SmartAssistant-2.9.1.zipוהתקן דרך Administration → Extensions. לאחר ההתקנה — Clear Cache + Rebuild.Downloads
-
released this
2026-05-14 16:18:04 +03:00 | 11 commits to main since this releaseמה חדש בגרסה הזו
שירה כבר לא נתקעת כשמבקשים ממנה ליצור מסמך. גם אם אין תבנית מתאימה
לתיק — היא מנסחת מכתב לבד, שומרת בתיק, ומעתיקה לתיקיית הרשת.
בנוסף, שירה קיבלה הרשאות מלאות לנהל את תיקיית הרשת של הלקוח —
אבל מבלי הרשאה למחוק קבצים פיזית.יצירת מסמכים חופשיים (כלי חדש:
create_document)- שירה מנסחת DOCX עברי RTL מלא תוכן (כותרת, נמען, גוף).
- תומך ב-markdown קל:
#/##/###לכותרות,**מודגש**,*נטוי*, רשימות עם-. - המסמך נשמר כ-Document בתיק וגם כקובץ בתיקיית הרשת (
/var/www/html/data/network-storage/<התיק>/). - שם הקובץ:
YYYY-MM-DD - <הכותרת>.docx. תאריך עברי באמצע (לדוגמה: "14 במאי 2026").
ניהול תיקיית הרשת של התיק (5 כלים חדשים)
שירה יכולה לבצע רק בתוך תיקיית התיק הנוכחי:
create_subfolder— יוצרת תיקיית משנה (תומך בנתיב עמוק כמוחוזים/2026/).rename_item— שינוי שם של קובץ או תיקייה.move_item— העברת קובץ בין תיקיות משנה.write_document_to_folder— כתיבת קובץ גולמי (base64) לתיקייה.mark_document_for_deletion— סימון למחיקה (לא מוחק פיזית!).
פרוטוקול ה-soft-delete: שירה לא מוחקת קבצים. כשמבקשים ממנה למחוק, היא מעבירה את הקובץ
לתיקייהמסמכים למחיקה/בתוך התיק עם הקידומתלמחיקה -. עורך הדין רואה את הקבצים האלה
ומוחק ידנית את מה שצריך. בנוסף, ב-CRM נשמרים שדותmarkedForDeletionAtו-markedForDeletionBy
לצורכי ביקורת.תיקון: התראות אי-פעילות שגויות
עד עכשיו תיק עם סטטוס "ממתין לדיון" או "ממתין להחלטה" קיבל התראה של "X ימים ללא פעילות"
— גם אם אין מה לעשות בתיק כי מחכים לבית המשפט. עכשיו:- ממתין להחלטה — לא מתריע אף פעם.
- ממתין לדיון — לא מתריע אם יש תאריך דיון עתידי. אם הסטטוס כן ממתין לדיון אבל אין דיון מתוזמן —
זה תיק תקוע ועדיין יתריע (זה מה שאנחנו רוצים).
תיקים 32 ו-16 בפרודקשן היו דוגמא לבאג הזה.
תיקון: תבניות בתיק שלא הופיעו
הסיבה ש-Shira הציגה את הקטע TEMPLATES ריק לחלוטין הייתה באג בשאילתה ב-
CaseContextBuilder:
היא חיפשה בעמודהentityTypeבמקוםtargetEntityType. עכשיו תבניות פעילות (isActive=true)
מוצגות נכון, יחד עם קטגוריה ותיאור — שירה יכולה לבחור את התבנית הנכונה לפי הקונטקסט.התקנה
הורד את
SmartAssistant-2.9.0.zipוהתקן דרך Administration → Extensions.אחרי ההתקנה: שום פעולה ידנית נדרשת. תוסף ה-
Documentיקבל אוטומטית את השדות החדשים
(markedForDeletionAt,markedForDeletionBy) בריבילד שירוץ עם ההתקנה.תלות זוגית: הפעולות החדשות דורשות את
shira-hermes 0.4+(פורסם במקביל) כדי שהכלים החדשים יופיעו לשירה.
ב-dev/prod הוא נפרס אוטומטית דרך CI/CD כשהקוד נדחף לראשי.Downloads