fix(config): קריאת config מותאמת ל-scope של חברה (Paperclip 2026.722.0) #7

Merged
chaim merged 1 commits from fix/company-scoped-plugin-config into main 2026-07-25 16:42:20 +00:00
Owner

מה זה מתקן

מיגרציה 0164_plugin_config_company_scope (Paperclip 2026.722.0) הפכה את plugin_config ל-scoped לפי חברה. מאז, ctx.config.get() בלי companyId זורק company context is required בכל מקום שבו ה-host לא יכול לגזור חברה מההקשר.

הפלאגין קרא config בתוך setup(). ל-worker initialisation אין חברה בהגדרה — ולכן ההפעלה כולה נכשלה בשדרוג מ-2026.609.0:

Plugin ... is not allowed to perform "config.get": company context is required
plugin-loader: loadAll complete {total:1, succeeded:0, failed:1}

הגשר Paperclip ↔ legal-ai היה מת: אפס כלים, אין ניתוב תגובות, אין סנכרון סטטוסים.

מה השתנה

  • src/legal-api.ts — הקונסטרקטור מקבל BaseUrlSource = string | (() => string | Promise<string>), וה-URL נפתר בתוך request(). נגיעה נקודתית: this.baseUrl שימש במקום אחד בלבד, ולכן 17 ה-tool handlers לא נגעו.
  • src/worker.tssetup() כבר לא קורא config; LegalApi נבנה עם resolver עצל. נוסף resolveApiBase() שפותר לפי הסדר: companyId מפורש → גזירת ה-host מההקשר → סריקת החברות ב-CEO_AGENT_IDShttp://localhost:8085.
  • package.json@paperclipai/plugin-sdk ל-2026.722.0.

מקור ה-companyId לפי סוג handler:

handler מקור
tools runCtx.companyId
data params.companyId
jobs מתוזמנים איןPluginJobContext לא כולל companyId, ולכן נשענים על הסריקה

אימות

tsc עבר בלי שגיאות מול ה-SDK החדש (כלומר אין breaking changes נוספים במשטח שהפלאגין משתמש בו), biome check נקי.

הקוד רץ בפרודקשן מאז 2026-07-25 — Paperclip טוען את הפלאגין מ-/home/chaim/plugin-legal-ai ישירות. חתימת הרישום זהה למצב שלפני השדרוג:

plugin activated successfully {"eventSubscriptions":2,"jobs":4,"webhooks":1,"tools":9}

plugin_logs נקי מ-warn/error, וה-config נפתר מהערך האמיתי (https://legal-ai.nautilus.marcusgroup.org) ולא מברירת המחדל.

הערה לתחזוקה

אחרי תיקון קוד, restart לבדו לא מספיק — הפלאגין נשאר תקוע ב-status=error וה-loader מדלג על כל מה שאינו ready. צריך Enable מה-UI או paperclipai plugin enable. מתועד ב-paperclip-configCUSTOMIZATIONS.md §4.

🤖 Generated with Claude Code

## מה זה מתקן מיגרציה `0164_plugin_config_company_scope` (Paperclip `2026.722.0`) הפכה את `plugin_config` ל-scoped לפי חברה. מאז, `ctx.config.get()` **בלי** companyId זורק `company context is required` בכל מקום שבו ה-host לא יכול לגזור חברה מההקשר. הפלאגין קרא config בתוך `setup()`. ל-worker initialisation אין חברה בהגדרה — ולכן ההפעלה כולה נכשלה בשדרוג מ-`2026.609.0`: ``` Plugin ... is not allowed to perform "config.get": company context is required plugin-loader: loadAll complete {total:1, succeeded:0, failed:1} ``` הגשר Paperclip ↔ legal-ai היה מת: אפס כלים, אין ניתוב תגובות, אין סנכרון סטטוסים. ## מה השתנה - **`src/legal-api.ts`** — הקונסטרקטור מקבל `BaseUrlSource = string | (() => string | Promise<string>)`, וה-URL נפתר בתוך `request()`. נגיעה נקודתית: `this.baseUrl` שימש במקום אחד בלבד, ולכן 17 ה-tool handlers לא נגעו. - **`src/worker.ts`** — `setup()` כבר לא קורא config; `LegalApi` נבנה עם resolver עצל. נוסף `resolveApiBase()` שפותר לפי הסדר: companyId מפורש → גזירת ה-host מההקשר → סריקת החברות ב-`CEO_AGENT_IDS` → `http://localhost:8085`. - **`package.json`** — `@paperclipai/plugin-sdk` ל-`2026.722.0`. מקור ה-companyId לפי סוג handler: | handler | מקור | |---------|------| | tools | `runCtx.companyId` | | data | `params.companyId` | | jobs מתוזמנים | **אין** — `PluginJobContext` לא כולל companyId, ולכן נשענים על הסריקה | ## אימות `tsc` עבר בלי שגיאות מול ה-SDK החדש (כלומר אין breaking changes נוספים במשטח שהפלאגין משתמש בו), `biome check` נקי. הקוד **רץ בפרודקשן** מאז 2026-07-25 — Paperclip טוען את הפלאגין מ-`/home/chaim/plugin-legal-ai` ישירות. חתימת הרישום זהה למצב שלפני השדרוג: ``` plugin activated successfully {"eventSubscriptions":2,"jobs":4,"webhooks":1,"tools":9} ``` `plugin_logs` נקי מ-warn/error, וה-config נפתר מהערך האמיתי (`https://legal-ai.nautilus.marcusgroup.org`) ולא מברירת המחדל. ## הערה לתחזוקה אחרי תיקון קוד, **restart לבדו לא מספיק** — הפלאגין נשאר תקוע ב-`status=error` וה-loader מדלג על כל מה שאינו `ready`. צריך Enable מה-UI או `paperclipai plugin enable`. מתועד ב-`paperclip-config` → `CUSTOMIZATIONS.md` §4. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-07-25 16:41:02 +00:00
מיגרציה 0164_plugin_config_company_scope הפכה את config של פלאגינים
ל-company-scoped, ו-`ctx.config.get()` בלי companyId זורק
"company context is required" כשה-host לא יכול לגזור חברה מההקשר.
ב-setup() אין חברה בהגדרה, ולכן הקריאה שם הפילה את הפעלת הפלאגין כולו
בשדרוג מ-2026.609.0 (status=error, 0 כלים רשומים).

- setup() כבר לא קורא config; LegalApi מקבל resolver עצל במקום URL קבוע
  (baseUrl שימש במקום אחד בלבד, ולכן 17 ה-tool handlers לא נגעו)
- resolveApiBase() פותר לפי הסדר: companyId מפורש → גזירת ה-host
  מההקשר → סריקת החברות ב-CEO_AGENT_IDS → ברירת מחדל
- data handlers מעבירים params.companyId; jobs מתוזמנים חסרי חברה
  (PluginJobContext לא כולל companyId) ולכן נשענים על הסריקה
- שדרוג @paperclipai/plugin-sdk ל-2026.722.0

מאומת: הפלאגין עולה עם אותה חתימת רישום כמו לפני השדרוג —
eventSubscriptions:2, jobs:4, webhooks:1, tools:9, בלי warnings.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
chaim merged commit 3da37e1519 into main 2026-07-25 16:42:20 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/plugin-legal-ai#7