יכולות הפלטפורמה

config.json אחד: 1010 מתודות, 16 סוגי פריסה, 72 שלבי מסלול.

העמוד הזה עוסק בקובץ ולא במוצר. config.json הוא המניפסט של הפלטפורמה, וכמעט כל שאלה על מה ש-Xuda יודעת לעשות נענית בקריאת מפתח אחד בו. האובייקט cpi_methods מחזיק 1010 רשומות, וחיפוש שם יחיד באובייקט הזה הוא כל משטח ה-API: אין טבלת ניתוב, אין קליינט מיוצר, אין מקום שני לרשום בו משהו. 678 מהרשומות נושאות private: true, ולכן מפתח API חיצוני יכול לפנות ל-332 מהן, ורשימת הכלים של MCP נבנית מאותה קבוצה עצמה. חמש מחרוזות clearance מכסות את כל הקטלוג: user על 681 רשומות, admin על 253, public על 51, developer על 15 ו-user_access על 5. 880 רשומות מצהירות על שדות עם טיפוסים, 2009 הגדרות שדה בסך הכול, 1103 מהן חובה, ו-158 ממפתחות השדות הם נתיבים מנוקדים כגון data.create_datacenter.app_region. deploy_type מונה 16 מחרוזות, ו-deploy_type_in_beta נוקב בארבע מהן, router, android, emitter ו-mcp, ש-deploy_app מסרב להן עם קוד -2. PLAN_OBJ מחזיק 72 שלבים מתומחרים על פני 16 קטגוריות, ולכל אחד מ-16 הסולמות יש שלב של $0. PRICE_OBJ.server_slugs מחזיק 58 slugs, בנויים מ-5 סוגי שרת מוצלבים עם 3 קבוצות שרת. מפת modules מצהירה על 45 שמות, ומודול עולה לפי שם ולא לפי import: msg_broker מחבר את XUDA_HOME/cpi עם שם המודול ב-common/msg_broker.mjs שורה 43, ומשלב /node_modules/@xuda.io כאשר is_debug הוא false, וכך הוא ב-config.json. כל ספירה בעמוד הזה נכונה לעותק של config.json שבריפו. config_dev.json חולק עליו בארבעה מקומות, וההערה בסוף אומרת בדיוק היכן.

1010 מתודות, 332 מהן מפתח חיצוני יכול לקרוא
16 סוגי פריסה, 4 נדחים כ-beta
72 שלבים מתומחרים על פני 16 סולמות
config.json אחד: 1010 מתודות, 16 סוגי פריסה, 72 שלבי מסלול.
במה בונים

שישה משטחים, קובץ config אחד מאחורי כולם.

Studio, סביבת העבודה, התוספים, ה-API, זירת המסחר ו-Slim אינם שישה מוצרים עם שישה backends. הם שישה מבטים על אותו אובייקט בן 1010 רשומות, והמפתחות שעל רשומה קובעים מי מהם יכול להגיע אליה: private קובע אם מפתח חיצוני רואה אותה בכלל, clearance קובע איזה אישור הזדהות נקרא, min_plan קובע איזה שלב מנוי נדרש, ו-microservice קובע איזה מודול עונה.

1010

מתודות מוצהרות ב-cpi_methods, אובייקט אחד, חיפוש אחד

16

סוגי פריסה מוצהרים, ארבעה מהם נדחים כ-beta

72

שלבי מסלול מתומחרים על פני 16 סולמות, לכל אחד שלב של $0

58

slugs של שרתים, 5 סוגי שרת מוצלבים עם 3 קבוצות שרת

קובץ אחד, שישה קטלוגים

שישה קטלוגים יושבים בקובץ אחד, ולכל אחד מהם קורא אחר.

אין טבלת ניתוב, אין קובץ הרשאות ואין שירות תמחור נפרד. config.json מחזיק שישה אובייקטים שאינם מפנים זה לזה לעולם, וכל אחד מהם נקרא במקום אחד או שניים בעץ. cpi_methods קובע מה ניתן לקריאה, deploy_type מה אפשר להתחיל, PLAN_OBJ כמה עולה שלב, PRICE_OBJ כמה עולים שרת או תוספת, modules איזה תהליך עולה, region_geo היכן נוחתת נקודה על המפה. קריאה לרוחב כל שורה מגלה את הקורא שצורך אותה, ואחריה קריאת שני הכרטיסים המקווקווים, שהם הצמדים שאינם קיימים.

כל ספירה למעלה נקראה מהעותק של config.json שבריפו. config_dev.json הוא קובץ אחר עם סכומים אחרים: 1030 מתודות מול 1010, 17 סוגי פריסה מול 16, כאשר mpa ו-full_stack_vps נוכחים ו-router חסר, והוא מעביר את אותן 30 מתודות של support_module ל-ticket_module, שלו כן יש תיקיית מקור. הצורה נכונה בשני הקבצים. הסכומים שייכים לאחד מהם.
הסולמות

שישה עשר סולמות מתומחרים, ושניים מהם יכולים לסרב לקריאה.

PLAN_OBJ מחזיק 72 שלבים מתומחרים על פני 16 קטגוריות, וכל אחת מ-16 נפתחת ב-$0. מה שהטבלה משווה אינו מחיר, אלא טווח הגעה. בדיוק שני מפתחות מסלול קיימים ב-cpi_methods: min_plan, על 30 מתוך 1010 הרשומות, ו-min_support_plan, על 1. שניהם נקראים על ידי אותן ארבע שורות ב-http_module, isValidPlan, שמחזירה true ברגע ש-min_plan חסר ואחרת משווה שני שדות rank ב-PLAN_OBJ, פעם אחת לכל בקשה. ארבעה עשר מתוך שישה עשר הסולמות, 61 שלבים ביניהם, אינם יכולים לסרב כאן לאף קריאה. קריאת השורה השלישית תחילה: היא אומרת לאיזו עמודה יש שיניים.

מנוי
AI Workspace
תמיכה
13 הסולמות האחרים
שלבים78, הסולם הארוך ביותר בקובץ453 על פני 13 קטגוריות
טווח מחירים$0, $49, $149, $399, $1,999, $4,999, ושביעי ששדה המחיר שלו הוא המחרוזת המילולית call ולא מספרמ-$0 עד $230 לחודש$0, $100, $1,500, $4,500מ-$0 עד $299, כאשר השלב העליון הוא trust_center Scale
רשומות שנוקבות בו כרצפה30 מתוך 1010, דרך min_plan: 19 pro, 6 agency, 4 team, 1 freeאין. אף רשומה אינה נוקבת בשלב של סביבת עבודהבדיוק 1, ה-min_support_plan היחיד בקובץאין. אף מפתח מסלול אחר אינו מופיע על שום רשומה
מה מסרב למי שנמצא מתחתיוisValidPlan, ארבע שורות של חשבון ב-http_module, נקראת פעם אחת לכל בקשהשום דבר בקטלוג הזה. מה שחוסם דרגה של סביבת עבודה אינו ה-dispatcherאותה רשומה יחידה, ושום דבר אחר מתוך 1010שום דבר כאן. commerce, drive, email, tickets ו-trust_center אינם חוסמים אף מתודה בקטלוג הזה
לאן ממשיכים

שישה עמודים: על מה מריצים משהו, וכמה זה עולה.

העמוד הזה טען לגבי הצורה: קובץ אחד מכריע הכול, ורובו מוכרע בכך שמפתח קיים ולא בכך שנכתב כלל. ששת העמודים שלמטה הם הפרטים, והם נחלקים בדיוק לשניים. שלושת הראשונים עונים מה אפשר להתחיל והיכן זה רץ: 16 סוגי פריסה, 17 מפתחות גאוגרפיים, 58 slugs של שרתים. שלושת האחרונים עונים כמה עולה שלב והאם הוא יכול לסרב למשהו: המנוי, שיכול, על 30 מתודות; AI Workspace, שאינו יכול; והתמיכה, שיכולה, על אחת בדיוק.

מה אפשר להתחיל
16 סוגי הפריסה

deploy_type נוקב ב-16 מחרוזות ו-deploy_type_in_beta נוקב ב-4 מאותן 16, router, android, emitter ו-mcp, וכל אחת מהן נדחית על ידי deploy_app עם קוד -2. לצידן יושבות 21 מתודות ה-deploy_ ב-cpi_methods ו-9 התוספות המתומחרות, $15 עבור pwa או preview, $75 עבור emitter.

מעבר לסוגים
היכן זה רץ
אזורים ומרכזי נתונים

region_geo מחזיק 17 מפתחות, כל אחד מהם קו רוחב, קו אורך ושם תצוגה: 9 קודי ערים, 5 מקבצים יבשתיים ו-3 אזורי החווה hel1, fsn1 ו-us1. בחירה באחד מהם היא ארגומנט עם טיפוס, לא הגדרה: data.create_datacenter.app_region הוא אחד מ-158 הנתיבים המנוקדים בחוזה השדות.

קריאה על האזורים
כמה עולה שרת
58 ה-slugs של השרתים

PRICE_OBJ.server_slugs הוא רשת, לא רשימה: 5 ערכי server_types, shared, optimized, performance, large ו-service, מוצלבים עם 3 ערכי server_group, deployment, managed ו-vps. ה-slug קובע כמה עולה השרת ואינו קובע דבר לגבי מה מותר לקרוא: אף מפתח שרת אינו מופיע על רשומת cpi_methods.

השוואת slugs
הרצפה עם השיניים
7 שלבי המנוי

$0, $49, $149, $399, $1,999, $4,999, ושביעי ששדה המחיר שלו הוא המחרוזת המילולית call ולא מספר. זהו הסולם היחיד שיכול לסרב לקריאה: 30 מתוך 1010 רשומות cpi_methods נוקבות בשלב כ-min_plan, 19 pro, 6 agency, 4 team ו-1 free.

השוואת דרגות
מתומחר, לא חסום
AI Workspace, 8 שלבים

מ-$0 עד $230 לחודש, ועם 8 שלבים הסולם הארוך ביותר ב-PLAN_OBJ. אף רשומת cpi_methods אינה נוקבת בשלב של סביבת עבודה כרצפה, ולכן שום דבר ב-dispatcher אינו מסרב בגלל שלב שגוי. מה שהדרגה קונה נקבע במקום אחר.

קריאה על הסולם
השער האחר
תמיכה, 4 שלבים

$0, $100, $1,500 ו-$4,500. בדיוק רשומה אחת ב-cpi_methods נוקבת ב-min_support_plan, מה שהופך אותו למפתח המסלול השני והאחרון שה-dispatcher קורא, ולשער הצר ביותר בקובץ: ברוחב מתודה אחת.

מעבר לדרגות התמיכה
מגבלות בכנות

שמונה דברים שהעמוד הזה והפלטפורמה הזו אינם עושים, החל בשניים על העמוד הזה.

  • העמוד הזה הוא אינדקס והוא נשאר כזה. תשעה בלוקים מול עשרים אצל אחיו אינם השמטה: העמוד שהוא החליף היה שתי כותרות וקריאה לפעולה, ולכן הוא מאנדקס את המדור במקום להפוך למסה נוספת עליו. ההסבר נמצא בעמוד שאליו כל כרטיס מצביע.
  • כל ספירה בעמוד הזה נקראה מתוך עותק config.json שבריפו ביום שהעמוד נכתב, והקובץ הזה זז. צורת הקובץ היא הטענה שנשארת; הסכומים הם תצלום של קומיט אחד, ומספר שסטה הוא באג בעמוד הזה ולא הבטחה על הפלטפורמה.
  • שני שלישים מה-API סגורים בפני קורא חיצוני. 678 מתוך 1010 הרשומות ב-cpi_methods נושאות private: true, ואף מפתח API אינו חוצה את הדגל הזה בשום מצב. מה שקורא חיצוני יכול להגיע אליו הוא 332 מתודות, ורשימת הכלים של MCP נבנית מאותה קבוצה עצמה. רק 10 רשומות מגדירות private: false במפורש, ולכן מה שהופך מתודה לנגישה מבחוץ הוא בדרך כלל היעדרו של מפתח ולא החלטה לפתוח אותה.
  • שישה עשר סולמות מתומחרים, ושניים מהם חוסמים כאן משהו. PLAN_OBJ מחזיק 72 שלבים מתומחרים על פני 16 קטגוריות, ואילו cpi_methods נוקב בשני מפתחות מסלול בדיוק: min_plan על 30 מתוך 1010 הרשומות, 19 pro, 6 agency, 4 team ו-1 free, ו-min_support_plan על אחת בדיוק. 14 הסולמות האחרים, ביניהם commerce, drive, email, tickets ו-trust_center, אינם חוסמים דבר דרך הקטלוג הזה.
  • חמש תוספות פריסה מתומחרות בלי שום דבר מאחוריהן. PRICE_OBJ גובה $45 על כל אחת מ-android, ios, windows, linux ו-macos, ו-cpi_methods אינו מצהיר על אף מתודת deploy_ שיוצרת אחת מהחמש. לארבע מתוך תשע התוספות המתומחרות יש כזו. מחיר בקטלוג אינו ראיה לכך שקיימת מתודה שאפשר לרכוש כנגדה.
  • רבע מרשימת סוגי הפריסה אינו ניתן להתחלה בקונפיגורציה שנשלחת. deploy_type מחזיק 16 מחרוזות, deploy_type_in_beta מחזיק 4 מהן, router, android, emitter ו-mcp, ו-deploy_app בודק את שתי הרשימות ומחזיר קוד -2 בשני המקרים, ב-cpi/deploy_module/index.mjs שורות 139 עד 144. ארבעת אלה מוצהרים ונדחים על ידי אותו קובץ עצמו.
  • הקונפיגורציה שנשלחת וקונפיגורציית הפיתוח חולקות זו על זו לגבי הפלטפורמה. config_dev.json מצהיר על 1030 מתודות מול 1010, מוסיף 20 ואינו מסיר אף אחת, ומונה 17 סוגי פריסה מול 16: הוא נושא mpa ו-full_stack_vps במקום שבו config.json נושא router. הוא גם מנתב 30 מתודות ל-ticket_module שאותן config.json מנתב ל-support_module, שמוצהר במפת modules ואין לו תיקיית מקור ב-cpi/ כלל. שתי הקונפיגורציות חולקות זו על זו בשאלה מי עונה לפנייה, וכל ספירה בעמוד הזה נכונה ל-config.json ולא לכל שרת.
  • אין מגביל קצב על /cpi. router_module מעביר את מקרה ה-cpi ישירות ל-localhost:3007 בלי middleware לפניו, בשורות 2493 עד 2521, ואילו שלושת דליי express-rate-limit יושבים על /login, על הטפסים הציבוריים ועל נתיבי החנות. גם אין נעילה על ניסיונות כושלים בנתיב הזה. קריאות מאומתות מוגבלות לפי היקף אישור ההזדהות, לא לפי קצב הבקשות.
קריאת הפלטפורמה

שש שאלות שקובץ קונפיגורציה עונה עליהן מהר יותר מרשימת יכולות

כל תשובה נוקבת בקובץ ובספירה שממנה הגיעה, כך שאפשר לפתוח את הריפו ולחלוק עליה.

פלטפורמה שאפשר לקרוא היא פלטפורמה שאפשר לחלוק עליה.

כל מספר בעמוד הזה יצא משני דברים שאפשר לפתוח ולבדוק: config.json ועץ ה-cpi/ שלצידו. זו הגרסה הכנה של רשימת יכולות, והיא גם הדרך האיטית להיכנס. מי שמגיע עם צורה בראש במקום זאת, טופס שצריך להישלח לאנשהו, קובץ שצריך לנחות באחסון, פרויקט שצריך לשבת באזור אחד, ימצא שהעמוד המקביל ממפה צורה שמגיעה אל שם המתודה שמטפלת בה, וזו העבודה שהמוקד הזה באמת נמצא כאן בשבילה. כדאי להתחיל שם, ולחזור לכאן כשרוצים לדעת מה אותה מתודה רשאית לעשות ומי רשאי לקרוא לה.