दस्तावेज़
साइडकार
स्थानीय Bun सेवा जो दृढ़ता, प्रमाणित HTTP, विनिर्माण सेवाओं, परियोजना इतिहास और सहायक का मालिक है।
अंग्रेज़ी से स्वचालित रूप से अनुवादित। अंग्रेज़ी मूल देखें
रनटाइम जिम्मेदारियाँ
साइडकार डेस्कटॉप और स्थानीय विकास एकीकरण द्वारा साझा किया गया Bun बैकएंड है। यह SQLite खोलता है, रिपॉजिटरी और डोमेन सेवाओं की आपूर्ति करता है, स्कीमा-परिभाषित HTTP API प्रदान करता है, और सहायक और वर्कफ़्लो एकीकरण को होस्ट करता है। टौरी शेल पैकेज्ड बाइनरी शुरू करता है और मशीन-पठनीय स्टार्टअप इवेंट से अपने निर्दिष्ट पोर्ट का पता लगाता है।
apps/sidecar/src/layers.ts प्रदत्त एपीआई, हैंडलर, प्राधिकरण, रिपॉजिटरी और सेवाओं की रचना करता है। सशुल्क चेकआउट और एआई मॉडल जैसे वैकल्पिक प्रदाताओं को उनकी सेवाओं के माध्यम से कॉन्फ़िगर किया गया है; उनकी अनुपस्थिति डेटाबेस रिकॉर्ड को कार्यशील बाह्य एकीकरण में नहीं बदलती है।
प्रक्रिया और शटडाउन प्रोटोकॉल
मुख्य HTTP सर्वर ही बाइंड होता है 127.0.0.1, बंदरगाह के साथ 0 इसलिए ऑपरेटिंग सिस्टम एक उपलब्ध पोर्ट चुनता है। स्ट्रीम किए गए इवेंट के बीच लंबी सहायक कॉल को शांत रहने की अनुमति देने के लिए HTTP निष्क्रिय टाइमआउट अक्षम है। स्कोप को अंतिम रूप देने से पहले ग्रेसफुल HTTP शटडाउन को 500 मिलीसेकंड के लिए कॉन्फ़िगर किया गया है।
एपीआई की सार्वजनिक स्वास्थ्य जांच सफल होने के बाद, प्रक्रिया stdout पर एक तैयार ईवेंट प्रिंट करती है। स्टार्टअप विफलता एक त्रुटि घटना प्रिंट करती है और एक असफल निकास कोड सेट करती है। परिचालन लॉग JSON के रूप में stderr पर जाते हैं; stdout मूल प्रक्रिया प्रोटोकॉल के लिए आरक्षित है।
{"event":"ready","port":53211}
{"event":"error","message":"Startup failure details"} एक न्यूलाइन-टर्मिनेटेड stdin संदेश event: "shutdown", stdin क्लोज़र, SIGINT, या SIGTERM सर्वर स्कोप जारी करता है। विकृत मूल संदेशों को नजरअंदाज कर दिया जाता है, और एक बड़ी अधूरी पंक्ति को छोड़ दिया जाता है। फ़ाइनलाइज़र स्वामित्व वाली सेवाओं को रोकते हैं और चेकपॉइंट/SQLite को बंद करते हैं। केवल व्यवधान समाप्ति को स्वच्छ निकास के रूप में रिपोर्ट किया जाता है।
आवश्यक विन्यास
AppConfigService प्रक्रिया कॉन्फ़िगरेशन को एक बार पढ़ता है apps/sidecar/src/config.ts. CADCAMFUN_TOKEN आवश्यक एप्लिकेशन वाहक टोकन है और CADCAMFUN_DATA_DIR आवश्यक एप्लिकेशन डेटा निर्देशिका है। डेटाबेस पथ है <dataDir>/cadcamfun.db. CADCAMFUN_MIGRATIONS_DIR वैकल्पिक है और SQL माइग्रेशन फ़ोल्डर की आपूर्ति करता है; इसके बिना डेटाबेस परत एप्लिकेशन माइग्रेशन लागू नहीं करती है।
डेस्कटॉप लॉन्च कॉन्फ़िगरेशन की आपूर्ति करता है। प्रत्यक्ष विकास के लिए, लॉन्चिंग शेल में उन कॉन्फ़िगरेशन नामों को प्रदान करें और रिपॉजिटरी रूट से पैकेज की स्टार्ट स्क्रिप्ट चलाएं:
bun run --filter @cadcamfun/sidecar start साइडकार पैकेज परिभाषित करता है start और typecheck स्क्रिप्ट. पैकेज्ड बाइनरी संकलन का स्वामित्व साइडकार-पैकेज के बजाय रिपॉजिटरी रिलीज़ स्क्रिप्ट के पास होता है build आज्ञा।
वैकल्पिक विन्यास
CADCAMFUN_APP_URLप्रमाणीकरण लिंक के लिए आधार निर्धारित करता है;CADCAMFUN_DEBUG_LINKSडिबग रीसेट/मैजिक लिंक और डिफ़ॉल्ट को गलत पर लौटाने में सक्षम बनाता है।CADCAMFUN_AI_HOSTहैnikcli(डिफ़ॉल्ट; चैट एम्बेडेड वार्तालाप होस्ट के माध्यम से चलती है) याdirect(केवल एआई एसडीके)।CADCAMFUN_AI_OFFLINE(बूलियन, डिफ़ॉल्ट गलत) वैकल्पिक मॉडल-कैटलॉग नेटवर्क पथ को अक्षम कर देता है।CADCAMFUN_AI_MINIMAX_BASE_URLमिनीमैक्स के समापन बिंदु को ओवरराइड करता है।STRIPE_SECRET_KEYस्ट्राइप प्रदाता को सक्षम बनाता है;STRIPE_PRICE_BASIC,STRIPE_PRICE_PRO, औरSTRIPE_PRICE_ENTERPRISEभुगतान-योजना कीमतों की आपूर्ति करें।STRIPE_WEBHOOK_SECRETहस्ताक्षरित वेबहुक सत्यापन के लिए आवश्यक है।CRON_SECRETक्रॉन मार्ग रहस्य की आपूर्ति करता है; इसके बिना स्थानीय एप्लिकेशन अतिरिक्त क्रॉन रहस्य के बिना उस रूट को कॉल कर सकता है।ADMIN_EMAILएक विरासत प्रशासक पहचान जाँच है; डिफ़ॉल्ट रूप से स्थानीय प्रोफ़ाइल अपने स्वयं के इंस्टॉलेशन का व्यवस्थापक है।OTEL_EXPORTER_OTLP_ENDPOINTकॉन्फ़िगर किए गए ओटीएलपी टेलीमेट्री निर्यात को सक्षम बनाता है। समापन बिंदु के बिना, बाहरी टेलीमेट्री निर्यात बंद है।
ये सभी नाम एक ही स्थान पर पढ़े जाते हैं, AppConfigService; टोकन और स्ट्राइप गुप्त कुंजी को संशोधित मानों के रूप में रखा जाता है ताकि वे लॉग में दिखाई न दें। एआई प्रदाता कुंजियाँ क्रेडेंशियल एपीआई और समर्पित क्रेडेंशियल फ़ाइल के माध्यम से प्रबंधित की जाती हैं। उन्हें विक्रेता एपीआई-कुंजी पर्यावरण सेटिंग्स के रूप में नहीं पढ़ा जाता है AppConfigService.
HTTP एक्सेस और एपीआई खोज
साइडकार प्रकाशित करता है /api/openapi.json अपने सेवित अनुबंध के लिए और संरक्षित समूहों पर बियरर मिडलवेयर का उपयोग करता है। दूसरा वैकल्पिक सत्र हेडर अभिनय खाता चुनता है। स्थानीय प्रोफ़ाइल को इसके अंतर्गत बनाया या पुन: उपयोग किया जाता है local@cadcamfun.local, खाता साइन-इन के बिना इंस्टॉलेशन को प्रयोग योग्य बनाए रखना।
सीओआरएस मानता है tauri://localhost, HTTP/HTTPS tauri.localhost, और HTTP लोकलहोस्ट या 127.0.0.1 एक वैकल्पिक पोर्ट के साथ उत्पन्न होता है। अन्य मूल को कोई अनुमत-मूल प्रतिक्रिया शीर्षलेख नहीं मिलता है। CORS एक ब्राउज़र नीति है; बियरर मिडलवेयर संरक्षित मार्गों के लिए अभिगम नियंत्रण बना रहता है।
प्रदत्त समूह डिज़ाइन संसाधन, विनिर्माण उत्पादन और सत्यापन, सटीक सीएडी, लाइब्रेरी, लागत, एआई, वीसीएस/वर्कफ़्लो, ईवेंट, साथी नियंत्रण, पहचान, संगठन, अधिसूचनाएं, फ़ाइलें, प्लगइन्स, बिलिंग, एनालिटिक्स, वेटलिस्ट, एमसीपी और स्थानीय स्थिति को कवर करते हैं। विधि और पेलोड विवरण के लिए चल रहे ओपनएपीआई दस्तावेज़ से परामर्श लें।
एक्टिंग-अकाउंट हेडर है x-session-token. इसके बिना, या ऐसे टोकन के साथ जो किसी मौजूदा उपयोगकर्ता के लिए सत्र टोकन के रूप में सत्यापित नहीं होता है, अनुरोध स्थानीय प्रोफ़ाइल के रूप में कार्य करते हैं (src/http/authorization.ts).
स्रोत संगठन
main.ts स्कोप्ड सर्वर और पैरेंट प्रोटोकॉल लॉन्च करता है। config.ts आपूर्ति विन्यास, layers.ts तार निर्भरताएँ, startup.ts शेयर की तैयारी और लूपबैक पोर्ट, shutdown.ts पैरेंट शटडाउन संदेशों को पढ़ता है, और observability.ts वैकल्पिक टेलीमेट्री कॉन्फ़िगर करता है।
http/ सेवाओं के लिए मान्य अनुरोधों को मैप करता है। repos/ संसाधनों को ड्रिज़ल क्वेरीज़ और संसाधन पहुंच नियमों में मैप करता है। services/ क्रॉस-संसाधन व्यवहार का समन्वय करता है, और plugins/ इसमें वर्कर-होस्ट और ब्राउज़र बूटस्ट्रैप कार्यान्वयन शामिल हैं।
हैंडलर समूह
हैंडलर को संसाधन के आधार पर समूहीकृत किया जाता है: प्रोजेक्ट, चित्र, घटक, टूलपाथ और अतिरिक्त, टूलपाथ जनरेटर, सटीक सीएडी, सामग्री/उपकरण/मशीन कॉन्फ़िगरेशन और उनके भंडारण मार्ग, लाइब्रेरी, लागत, फ़ाइलें, संगठन, सूचनाएं, उपयोगकर्ता/ऑथ, बिलिंग, एनालिटिक्स, वेटलिस्ट, एमसीपी, विविध एप्लिकेशन सेवाएं, कुंजी-मूल्य स्थिति, एआई, वीसीएस, इवेंट और साथी प्रबंधन।
entity-io.ts शेयर इकाई आयात/निर्यात सहायक। authorization.ts एप्लिकेशन और स्कोप्ड ब्रिज क्रेडेंशियल लागू करता है। एक हैंडलर का घोषित पेलोड पहले ही स्कीमा डिकोडिंग पास कर चुका है; सेवा-स्तरीय सत्यापन अभी भी संदर्भ, स्वामित्व, साक्ष्य स्थिरता और डोमेन बाधाओं की जाँच करता है।
डोमेन सेवा संरचना
एआई सेवाएं ड्राइंग और सीएएम क्रियाएं, पैरामीट्रिक/सटीक निरीक्षण, प्रोजेक्ट संदर्भ, मेमोरी, वर्कर जर्नल और प्लगइन टूल की आपूर्ति करती हैं। cam-program.ts कैप्चर किए गए विनिर्माण अनुरोधों को दोबारा चलाता है और सेव के दौरान मूल साक्ष्य को मान्य करता है। इतिहास सेवाएँ स्नैपशॉट, संरक्षित-शाखा नियम, GitHub परिवहन और वर्कफ़्लो निष्पादन लागू करती हैं।
अन्य सेवाओं के पास फ़ाइल भंडारण, लागत गणना, स्थानीय प्रोफ़ाइल और अभिनय-उपयोगकर्ता स्थिति, टोकन हस्ताक्षर/निरस्तीकरण, ब्रिज क्रेडेंशियल, भुगतान, अधिसूचनाएं, लाइव इवेंट और साथी जीवनचक्र हैं। प्रभाव परतें अपने संसाधनों का स्वामी होती हैं इसलिए शटडाउन उन्हें निर्भरता क्रम में जारी करता है।
भंडार सीमा
रिपॉजिटरी साझा का उपयोग करते हैं Database.query दृढ़ता और टाइप की गई भंडारण विफलताओं के लिए सेवा। वे संग्रहीत JSON को डिकोड करते हैं और संसाधन-विशिष्ट पहुंच लागू करते हैं या प्राधिकरण सहायक प्रदान करते हैं। HTTP हैंडलर डोमेन/भंडारण विफलताओं को उनकी घोषित प्रतिक्रिया त्रुटियों में अनुवादित करते हैं; ज्यामिति गणनाएँ अंदर रहती हैं @cadcamfun/core.
प्लगइन एकीकरण
सामान्य कार्यकर्ता मेज़बान अंदर है plugins/host.ts. उत्पादन सहायक प्लगइन सेवा लोड स्पष्ट रूप से सक्षम है ai:tool एप्लिकेशन प्लगइन निर्देशिका से एक्सटेंशन। ब्राउज़र ज़िप इंस्टॉलर और बूटस्ट्रैप एपीआई अपने स्वयं के मेनिफेस्ट और स्टोरेज पथ का उपयोग करते हैं। देखना प्लग-इन किसी एक्सटेंशन प्रारूप का चयन करने या किसी क्षमता को तार-तार करने से पहले।
सहयोगी HTTPS गेटवे
सहयोगी गेटवे एक अलग ऑप्ट-इन HTTPS श्रोता है जो पहले से सक्षम सेटिंग को फिर से शुरू कर सकता है। यह नेटवर्क क्लाइंट के लिए आईपीवी 4 को बांधता है, एक जेनरेटेड सर्टिफिकेट प्रस्तुत करता है जिसे नीचे रखा जाता है <dataDir>/companion, और स्कोप्ड रिवोकेबल डिवाइस टोकन का उपयोग करता है। युग्मन एक प्रमाणपत्र फ़िंगरप्रिंट प्रदान करता है ताकि मोबाइल ट्रांसपोर्ट डेस्कटॉप को पिन कर सके।
गेटवे एक स्पष्ट रूट अनुमति-सूची की जांच करता है और एप्लिकेशन टोकन के साथ लूपबैक एपीआई में स्वीकृत अनुरोधों को अग्रेषित करता है। युग्मित फ़ोन को कभी भी वह एप्लिकेशन टोकन प्राप्त नहीं होता है। अनुमति-सूची में क्रेडेंशियल प्रशासन, प्लगइन इंस्टॉलेशन, फ़ाइल प्रबंधन और बिलिंग शामिल नहीं है। किसी डिवाइस को रद्द करने या गेटवे को अक्षम करने से उसकी नेटवर्क पहुंच समाप्त हो जाती है।
तत्परता एवं निदान
तैयार घटना का मतलब है कि सर्वर परत निर्माण के बाद स्थानीय HTTP स्वास्थ्य जांच सफल हुई। इसका मतलब यह नहीं है कि मॉडल प्रदाता ने अनुरोध स्वीकार कर लिया है, चेकआउट कॉन्फ़िगर किया गया है, या प्रत्येक वैकल्पिक नेटवर्क सेवा पहुंच योग्य है। उन सेवाओं का उनकी अपनी स्थिति और परिणाम समापन बिंदुओं के माध्यम से निदान करें।
स्टार्टअप त्रुटि के लिए, प्रोटोकॉल संदेश और प्रासंगिक stderr घटनाओं को बनाए रखें, कॉन्फ़िगरेशन और माइग्रेशन की जांच करें, और डेटा निर्देशिका की पहुंच का निरीक्षण करें। लॉन्च बियरर टोकन या प्रदाता क्रेडेंशियल सामग्री को कभी भी डायग्नोस्टिक आउटपुट में पेस्ट न करें।
डेटा स्वामित्व
स्थायी डेटा में SQLite डेटाबेस और माइग्रेशन बैकअप, फ़ाइल संग्रहण, AI क्रेडेंशियल/कॉन्फ़िगरेशन स्थिति, प्रमाणीकरण रहस्य और निरस्तीकरण रिकॉर्ड, प्लगइन संपत्ति और साथी प्रमाणपत्र शामिल हैं। संपूर्ण एप्लिकेशन डेटा निर्देशिका का बैकअप लेते समय या किसी इंस्टॉलेशन को स्थानांतरित करते समय उसे सुरक्षित रखें। साइडकार का जीवनकाल कनेक्शन होता है; ग्राहकों के पास न तो SQLite हैंडल और न ही मुख्य वाहक टोकन जारी करने का स्वामित्व है।
एक डिस्पोजेबल स्थानीय उदाहरण लॉन्च करें
इन आदेशों को एक समर्पित टर्मिनल में रिपॉजिटरी रूट पर चलाएँ। निर्देशिका नई है, टोकन प्रिंट किए बिना स्थानीय रूप से उत्पन्न होता है, माइग्रेशन स्पष्ट होते हैं, और प्रत्यक्ष/ऑफ़लाइन एआई मोड इस स्टार्टअप जांच के लिए एम्बेडेड वार्तालाप होस्ट को आयात करने से बचाता है। openssl इस शेल उदाहरण में यादृच्छिक लॉन्च टोकन की आपूर्ति करता है।
export CADCAMFUN_DATA_DIR="$(mktemp -d /tmp/cadcamfun-docs.XXXXXX)"
export CADCAMFUN_TOKEN="$(openssl rand -hex 32)"
export CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle"
export CADCAMFUN_AI_HOST=direct
export CADCAMFUN_AI_OFFLINE=1
bun run --filter @cadcamfun/sidecar start एक निश्चित संख्या मानने के बजाय तैयार इवेंट के पोर्ट को पढ़ें। सेवा चलने के दौरान stdin को खुला रखें; पहले से ही समाप्त इनपुट स्रोत से पाइपिंग इसे बंद करने के लिए कहती है। डेटाबेस को रिलीज़ करने के लिए SIGTERM या शटडाउन प्रोटोकॉल का उपयोग करें। बाहर निकलने के बाद डिस्पोजेबल निर्देशिका निरीक्षण के लिए उपलब्ध रहती है।
क्लाइंट शेल में पहले से ही उपलब्ध कनेक्शन यूआरएल और उसके टोकन के साथ, संरक्षित पहुंच के साथ सार्वजनिक जीवंतता की तुलना करें:
curl --fail-with-body "$CADCAMFUN_URL/api/health"
curl --fail-with-body -H "Authorization: Bearer $CADCAMFUN_TOKEN" "$CADCAMFUN_URL/version"
curl --fail-with-body -H "Authorization: Bearer $CADCAMFUN_TOKEN" "$CADCAMFUN_URL/api/projects" स्रोत: apps/sidecar/src/main.ts, config.ts, shutdown.ts, और test/process.test.ts.
लॉग और वैकल्पिक टेलीमेट्री
Stderr JSON लॉग और stdout तैयार/त्रुटि घटनाओं के अलग-अलग उपभोक्ता हैं। एक लॉन्चर को पूरी स्टडआउट लाइनों को पार्स करना चाहिए और स्टडर को अलग से अग्रेषित करना चाहिए या बनाए रखना चाहिए। एक अनुरोध जो तैयार होने के बाद विफल हो जाता है वह एक एप्लिकेशन त्रुटि है, दूसरा स्टार्टअप ईवेंट नहीं।
कब OTEL_EXPORTER_OTLP_ENDPOINT कॉन्फ़िगर किया गया है, ObservabilityLive स्पैन/लॉग और आवधिक मीट्रिक निर्यात के लिए बैचिंग सेट अप करता है। यह जुड़ता है /v1/traces, /v1/metrics, और /v1/logs अनुगामी स्लैश हटाने के बाद आपूर्ति किए गए कलेक्टर बेस पर। जैसे कलेक्टर आधार की आपूर्ति करें http://collector:4318, पहले से ही प्रत्ययित सिग्नल यूआरएल के बजाय।
संसाधन सेवा का नाम है cadcamfun-sidecar और इसका संस्करण एप्लिकेशन कॉन्फ़िगरेशन से आता है। मानक ओपनटेलीमेट्री संसाधन वातावरण सेटिंग्स एसडीके द्वारा नियंत्रित की जाती हैं। नेटवर्क निर्यात वैकल्पिक है, जबकि कोई कलेक्टर कॉन्फ़िगर नहीं होने पर स्थानीय stderr उपलब्ध रहता है।
स्रोत: apps/sidecar/src/observability.ts और main.ts.
असफल सीमा को पहचानें
| लक्षण | संभावित सीमा और जाँच |
|---|---|
| प्रक्रिया तैयार होने से पहले ही समाप्त हो जाती है | प्रोटोकॉल त्रुटि और stderr पढ़ें। आवश्यक कॉन्फ़िगरेशन, निर्देशिका पहुंच, माइग्रेशन पहचान और सेवा निर्माण की जाँच करें। |
| स्वास्थ्य उत्तर लेकिन संरक्षित मार्ग वापसी 401 | इस लॉन्च के लिए टोकन का उपयोग करें, खाता सत्र टोकन या पूर्व लॉन्च के टोकन का नहीं। एक ब्रिज टोकन केवल अपने दो कार्य मार्गों को खोलता है। |
| एक अनुरोध कर्ल में काम करता है लेकिन ब्राउज़र में विफल रहता है | ब्राउज़र की उत्पत्ति और उड़ान पूर्व प्रतिक्रिया का निरीक्षण करें। अनुमति-सूची समर्थित टॉरी और HTTP लूपबैक मूल की अनुमति देती है; वाहक पहुंच अभी भी आवश्यक है. |
| लॉन्च के बाद तैयार पोर्ट पहुंच योग्य नहीं है | जांचें कि क्या माता-पिता ने stdin बंद कर दिया है या शेल ने बच्चे को पुनः प्रारंभ कर दिया है। मुख्य एपीआई केवल लूपबैक को बांधता है और फोन-फेसिंग गेटवे नहीं है। |
| सहयोगी गेटवे सक्षम करने में विफल रहता है | प्रमाणपत्र, पोर्ट-बाइंड और सतत-सेटिंग्स त्रुटियाँ पढ़ें। स्पष्ट पोर्ट 1024 से 65535 तक पूर्णांक होने चाहिए; सेटिंग्स को सहेजने में विफलता नए श्रोता को रोक देती है। |
| डेटा एक टूल में दिखाई देता है लेकिन दूसरे में नहीं | यह मानने से पहले कि संसाधन खो गए हैं, साइडकार, वेब स्टूडियो और माइग्रेशन सीएलआई के लिए स्पष्ट डेटाबेस पथों की तुलना करें। |
वास्तविक-प्रक्रिया जीवनचक्र परीक्षण ईओएफ, एक स्प्लिट शटडाउन JSON लाइन और SIGTERM को कवर करते हैं, फिर उसी डेटा निर्देशिका को पुनरारंभ करते हैं और निरंतर परियोजनाओं को सत्यापित करते हैं। बाहर निकलने के बाद वे वाल का निरीक्षण भी करते हैं। यह स्रोत प्रक्रिया के जीवनचक्र व्यवहार को स्थापित करता है; पैकेज्ड शेल और मशीन-विशिष्ट डिलीवरी को अभी भी अपने स्वयं के सत्यापन की आवश्यकता है।
स्रोत: apps/sidecar/test/process.test.ts, src/http/authorization.ts, src/layers.ts, और src/services/companion.ts.
स्टार्टअप अनुक्रम विस्तार से
- शेल 32 यादृच्छिक बाइट्स का एक लॉन्च टोकन उत्पन्न करता है, जिसे 64 वर्णों के रूप में हेक्स-एन्कोड किया जाता है, और साइडकार को शुरू करता है
CADCAMFUN_TOKEN,CADCAMFUN_DATA_DIR, औरCADCAMFUN_MIGRATIONS_DIR. AppConfigServiceसभी सेटिंग्स को एक बार पढ़ता है। एक अनुपलब्ध आवश्यक सेटिंग एक के साथ स्टार्टअप को विफल कर देती हैerrorआयोजन।- डेटाबेस परत खुलती है
<dataDir>/cadcamfun.db, वाल मोड और विदेशी कुंजी सक्षम करता है, और माइग्रेशन निर्देशिका से माइग्रेशन लागू करता है। - परतें बनी हैं: डेटाबेस, फिर रिपॉजिटरी, फिर सेवाएँ, फिर HTTP हैंडलर। प्रत्येक संसाधन का स्वामित्व एक परत के पास होता है, इसलिए शटडाउन इसे रिवर्स निर्भरता क्रम में जारी करता है।
- HTTP सर्वर बाइंड होता है
127.0.0.1पोर्ट 0 पर, और ऑपरेटिंग सिस्टम एक निःशुल्क पोर्ट चुनता है। - सार्वजनिक स्वास्थ्य मार्ग की जांच की जाती है। इसके बाद ही उत्तर मिलता है
{"event":"ready","port":N}स्टडआउट करने के लिए लिखा गया है। - शेल उस लाइन के लिए 60 सेकंड तक प्रतीक्षा करता है और साइडकार को अधिकतम एक बार पुनः आरंभ करता है। वेबव्यू 125 सेकंड तक प्रतीक्षा करता है
get_sidecar_endpoint, फिर जुड़ता है।
| धारा | किया जाता है | उपभोक्ता |
|---|---|---|
| stdout | बिल्कुल एक ready या error JSON लाइन | मूल प्रक्रिया (शेल या आपकी स्क्रिप्ट)। |
| stderr | JSON परिचालन लॉग | लॉग फ़ाइलें और निदान. पंक्तियाँ जिनमें क्रेडेंशियल हो सकते हैं (उदाहरण के लिए Bearer, secret, या cadcamfun_token) शेल द्वारा पुनः संपादित किया जाता है। |
| stdin | {"event":"shutdown"} पंक्तियाँ; ईओएफ भी बंद हो गया | साइडकार का शटडाउन रीडर। अधिक आकार वाली या विकृत रेखाओं को नजरअंदाज कर दिया जाता है। |
प्रमाणीकरण मॉडल
| क्रेडेंशियल | जहाँ से यह आया | यह क्या खुलता है |
|---|---|---|
टोकन लॉन्च करें (Authorization: Bearer) | प्रति लॉन्च शेल द्वारा उत्पन्न, या मैन्युअल रन के लिए आपके द्वारा सेट किया गया | लूपबैक एपीआई का प्रत्येक संरक्षित मार्ग। |
सत्र टोकन (x-session-token) | साइन-इन प्रवाह; डेटाबेस के बगल में संग्रहीत प्रति-इंस्टॉलेशन रहस्य द्वारा हस्ताक्षरित | अभिनय उपयोगकर्ता का चयन करता है. यदि गुम या अमान्य है, तो अनुरोध कार्य करते हैं local@cadcamfun.local. |
| ब्रिज टोकन | POST /api/ai/bridge/tokens; एक बार दिखाया गया | एक प्रोजेक्ट के लिए केवल कार्रवाई सूची और मंगलाचरण मार्ग, समाप्ति तक पढ़ें या पढ़ें-लिखें (डिफ़ॉल्ट 30 दिन, अधिकतम 365)। |
| सहयोगी डिवाइस टोकन | जोड़ी बनाना; युग्मन लिंक के अंदर एक बार दिखाया गया; केवल SHA-256 हैश के रूप में संग्रहीत | सहयोगी गेटवे के अनुमत-सूचीबद्ध मार्ग, HTTPS पर। |
हस्ताक्षरित टोकन जारीकर्ता के साथ HS256 का उपयोग करते हैं cadcamfun. निरस्त किए गए टोकन इस रूप में सत्यापित होते हैं invalid, और अज्ञात या जाली टोकन को निरस्तीकरण द्वारा नजरअंदाज कर दिया जाता है। हस्ताक्षर रहस्य प्रति इंस्टॉलेशन एक बार उत्पन्न होता है और डेटा निर्देशिका में संग्रहीत होता है, इसलिए पुनरारंभ से पहले जारी किए गए लिंक बाद में भी सत्यापित होते हैं।
लॉन्च टोकन को लॉग से बाहर रखें
लॉन्च टोकन को संपूर्ण स्थानीय एपीआई के लिए पासवर्ड की तरह समझें। स्क्रिप्ट को इसे परिवेश से पढ़ना चाहिए और इसे कभी भी प्रिंट नहीं करना चाहिए। जब किसी अन्य प्रोग्राम या डिवाइस को संकीर्ण पहुंच की आवश्यकता हो तो ब्रिज या डिवाइस टोकन का उपयोग करें।
डेटा डायरेक्टरी में क्या रहता है
| पथ | सामग्री |
|---|---|
cadcamfun.db (+ -wal, -shm) | वाल मोड में SQLite डेटाबेस। |
auth-secret | सत्र और लिंक टोकन के लिए प्रति-इंस्टॉलेशन हस्ताक्षर रहस्य। |
companion/ | गेटवे प्रमाणपत्र और निजी कुंजी (केवल स्वामी की अनुमति)। |
plugins/ | enabled.json और प्रति सहायक प्लगइन एक फ़ोल्डर। |
| फ़ाइल भंडारण | अपलोड की गई फ़ाइलें (स्थानीय बकेट)। |
साइडकार बंद होने पर, या वाल चेकपॉइंट बंद होने के बाद पूरी निर्देशिका का बैकअप लें। केवल नकल कर रहे हैं cadcamfun.db जबकि साइडकार चलाने से हाल के लेख छूट सकते हैं जो अभी भी वाल फ़ाइल में हैं।
तैयार लाइन पर कब्जा कर लिया गया
CADCAMFUN_TOKEN=t CADCAMFUN_DATA_DIR="$(mktemp -d)" \
CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle" \
CADCAMFUN_AI_HOST=direct CADCAMFUN_AI_OFFLINE=true \
bun --no-env-file apps/sidecar/src/main.ts
# stdout: {"event":"ready","port":43461} प्रत्येक प्रारंभ पर ऑपरेटिंग सिस्टम द्वारा पोर्ट का चयन किया जाता है। माइग्रेशन और लेयर्स तैयार होने के बाद लाइन पहला स्टडआउट आउटपुट है, इसलिए जो क्लाइंट इसे देखता है वह तुरंत एपीआई को कॉल कर सकता है। स्टडिन को खुला रखें: इसे बंद करना शटडाउन सिग्नल है।