שמרו על קטלוג עדכני
הריצו מחדש את הגילוי כשה-API משתנה, חברו אותו ל-CI, ותנו לזיהוי הסחיפה בזמן ריצה לתפוס את מה שחמק.
קטלוג היכולות מתאר את ה-API שלכם ברגע שבו הרצתם את הגילוי. ממשקי API משתנים — לכן עדכניות היא לולאה, לא אירוע חד-פעמי: הריצו מחדש את הגילוי בעת שינוי, אוטומטו אותו ב-CI, ותנו לזיהוי הסחיפה בזמן ריצה לתפוס את מה שחמק.
הריצו מחדש את הגילוי בכל שינוי ב-API
הרצה חוזרת של init בטוחה מתוכנן: החילוץ דטרמיניסטי, קובץ הקטלוג (.syncanix/catalog.json) נכתב מחדש מהקוד הנוכחי שלכם, והקטלוג המרוענן עולה לאותו מרחב עבודה. אין שלב הגירה — ההרצה החוזרת היא-היא העדכון.
npx syncanix initהעריכה שלכם שורדת את ההרצ ה החוזרת: רשומות ב-.syncanixignore מוחרגות בכל הרצה כי הקובץ חי במאגר שלכם, וההתאמות לכל יכולת שעשיתם בלוח הבקרה קשורות ליכולת וחלות שוב אחרי סריקה מחודשת — ההישרדות הזו מכוסה בבדיקת אינטגרציה, לא במוסכמה.
אוטומציה: גילוי ב-CI
ב-CI הריצו את init ללא אינטראקציה עם --yes והזדהו עם משתנה הסביבה SYNCANIX_API_KEY (הנפיקו מפתח בלוח הבקרה ושמרו אותו כסוד CI — אותו מפתח ש-syncanix login היה כותב מקומית). תהליך GitHub Actions מינימלי:
# .github/workflows/syncanix-catalog.yml
name: Refresh Syncanix catalog
on:
push:
branches: [main]
jobs:
refresh:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npx syncanix init --yes
env:
SYNCANIX_API_KEY: ${{ secrets.SYNCANIX_API_KEY }}הריצו אותו בדחיפות לענף הראשי (או רק כשנתיבי קוד ה-API משתנים, עם מסנני הנתיבים של ה-CI שלכם). המשימה מחלצת מחדש, מעלה מחדש, והעוזר שלכם קולט את הקטלוג המרוענן — בלי שום פריסה של Syncanix עצמו.
זיהוי סחיפה בזמן ריצה (Node SDK)
גם עם CI, נקודת קצה יכולה לצאת לאוויר בלי שהגילוי ראה אותה. ה-SDK של Node צופה בתעבורה אמיתית בדיוק בשביל זה: הוא נרשם לערוץ האבחון של HTTP המובנה ב-Node — בלי monkey-patching ובעלות אפסית במנוחה — ומשווה כל בקשה נכנסת למול סט היכולות המוכר.
בקשות שלא תואמות שום יכולת מוכרת פולטות אירוע סחיפה מסוג נקודת-קצה-חדשה, אחרי דה-דופליקציה, וה-SDK מעלה אותו למרחב העבודה — כך שלוח הבקרה מראה לכם נקודות קצה שמשרתות תעבורת ייצור ואינן מוכרות לקטלוג. התייחסו לאירוע סחיפה כאות להריץ מחדש את הגילוי.
מונורפו וקודבייס רב-לשוני
הריצו את init פעם אחת משורש המאגר. הגילוי מזהה כל מחסנית framework שהוא מוצא — בין workspaces ובין שפות — מחלץ כל אחת וממזג את התוצאות לקטלוג אחד; מונורפו עם, למשל, API של NestJS ושירות FastAPI מפיק סט יכולות משולב. אם מחסנית מזוהה לא נכון, נעלו אותה עם --framework.