दस्तावेज़
वास्तुकला
डेस्कटॉप, साइडकार, मोबाइल कंपेनियन और दस्तावेज़ीकरण साइट पर निष्पादन सीमाएँ, अनुरोध प्रवाह, दृढ़ता और विस्तार बिंदु।
अंग्रेज़ी से स्वचालित रूप से अनुवादित। अंग्रेज़ी मूल देखें
प्रक्रियाएँ और विश्वास सीमाएँ
टौरी के पास मूल विंडो एकीकरण, सुरक्षित क्रेडेंशियल कमांड, मेनू, अपडेट और साइडकार जीवनचक्र है। इसका वेबव्यू SolidJS एप्लिकेशन चलाता है। संकलित Bun साइडकार डेटाबेस खोलता है और HTTP पर कार्य करता है 127.0.0.1 एक ऑपरेटिंग-सिस्टम-निर्दिष्ट पोर्ट के साथ। फ्रंटएंड SQLite नहीं खोलता है।
साइडकार का प्रवेश बिंदु है apps/sidecar/src/main.ts. यह HTTP सर्वर बनाता है, एप्लिकेशन लेयर्स, जांच बनाता है /api/health, और फिर चुने हुए पोर्ट वाले JSON तत्परता इवेंट को प्रिंट करता है। लॉग को stderr पर रूट किया जाता है ताकि stdout शेल प्रोटोकॉल के लिए उपलब्ध रहे।
मोबाइल साथी एक स्पष्ट रूप से युग्मित डेस्कटॉप गेटवे तक पहुंचता है। इसका मूल परिवहन और डिवाइस क्रेडेंशियल डेस्कटॉप वेबव्यू के लूपबैक कनेक्शन से अलग हैं। दस्तावेज़ीकरण वर्कर एक अलग परिनियोजन है और इसका उपयोगकर्ता के डेस्कटॉप से कोई अंतर्निहित संबंध नहीं है।
पुस्तकालय निर्भरताएँ
@cadcamfun/core इसमें CAD, ड्राइंग और CAM गणना शामिल है। यह स्कीमा और सीमा एकीकरण के लिए प्रभाव पर निर्भर करता है; एल्गोरिथम लूप सामान्य टाइपस्क्रिप्ट हैं। @cadcamfun/api hTTP इनपुट, आउटपुट, त्रुटियाँ और स्ट्रीम घोषित करने के लिए मुख्य प्रकार और स्कीमा आयात करता है।
@cadcamfun/db एप्लिकेशन डेटाबेस सेवा, स्कीमा और माइग्रेशन लॉजिक का स्वामी है। साइडकार इसे कोर, एपीआई, एआई, प्लगइन एसडीके, वीसीएस और वर्कफ़्लो पैकेज के साथ जोड़ती है। इसके भंडार डेटाबेस सेवा का उपयोग करते हैं; हैंडलर रिपॉजिटरी और सेवाओं को सौंपते हैं।
डेस्कटॉप दोनों को आयात करता है @cadcamfun/api और @cadcamfun/core. यह इफ़ेक्ट क्लाइंट के माध्यम से रनटाइम पर एपीआई का उपयोग करता है और सीएडी/सीएएम सुविधाओं और व्यूपोर्ट में कोर ज्यामिति का उपयोग करता है। मोबाइल एपीआई पैकेज पर निर्भर करता है और अपने क्लाइंट में सहयोगी अनुरोधों को लपेटता है। स्टैंडअलोन निकल्ली प्लगइन बैकएंड कार्यान्वयन आयात करने के बजाय HTTP पर चल रहे एप्लिकेशन की एक्शन कैटलॉग की खोज करता है।
HTTP अनुरोध जीवनचक्र
- वेबव्यू नेटिव शेल से साइडकार कनेक्शन प्राप्त करता है।
apps/desktop/src/app/client.tsबियरर प्राधिकरण और एक वैकल्पिक खाता सत्र टोकन के साथ एक प्रभाव HttpApi क्लाइंट बनाता है।packages/api/src/client.tsअन्य उपभोक्ताओं के लिए पुन: प्रयोज्य अनुबंध ग्राहक की आपूर्ति करता है।apps/sidecar/src/layers.tsअसेम्बलServedApi, हैंडलर, प्राधिकरण, सीओआरएस, और साझा सेवा परतें।- हैंडलर अनुबंध इनपुट को मान्य करता है, सेवाओं का समाधान करता है, गणना या दृढ़ता करता है, और घोषित सफलता या त्रुटि प्रतिनिधित्व लौटाता है। स्ट्रीमिंग एंडपॉइंट अपने घोषित स्ट्रीम प्रोटोकॉल को सुरक्षित रखते हैं।
सीओआरएस टौरी उत्पादन उत्पत्ति और विकास में उपयोग किए जाने वाले HTTP लूपबैक उत्पत्ति की अनुमति देता है। यह प्राधिकरण को प्रतिस्थापित नहीं करता है. एपीआई कई प्रतिक्रिया लिफाफा शैलियों को उजागर करता है; उपभोक्ताओं को प्रत्येक प्रतिक्रिया का एक ही आकार मानने के बजाय प्रत्येक समापन बिंदु की स्कीमा का पालन करना चाहिए।
सेवा जीवनचक्र और भंडारण
प्रभाव परतें एप्लिकेशन दायरे के भीतर डेटाबेस और साझा सेवाओं को प्राप्त करती हैं। डेटाबेस परत अपनी मूल निर्देशिका बनाती है, वाल और विदेशी कुंजियों को सक्षम करती है, वैकल्पिक रूप से माइग्रेशन लागू करती है, और क्वेरी विफलताओं को एक ऑपरेशन नाम के साथ लपेटती है। अंतिमीकरण एक ट्रंकेटिंग वाल चेकपॉइंट का प्रयास करता है और SQLite हैंडल को बंद कर देता है।
The DatabaseLive परत का चयन करता है dataDir/cadcamfun.db. स्टार्टअप पर माइग्रेशन लागू करने के लिए एक माइग्रेशन फ़ोल्डर प्रदान किया जाना चाहिए। एआई क्रेडेंशियल, प्लगइन स्थिति, वीसीएस ऑब्जेक्ट, वर्कफ़्लो निष्पादन और फ़ाइल भंडारण को उनके संबंधित सेवा इंटरफेस के माध्यम से नियंत्रित किया जाता है; भंडारण विवरण उनके मॉड्यूल पृष्ठों पर वर्णित हैं।
स्थानीय स्टूडियो में packages/web/script/studio-server.ts एक अतिरिक्त Bun प्रक्रिया है. यह सीधे कॉन्फ़िगर किए गए मौजूदा एप्लिकेशन डेटाबेस को खोलता है और लूपबैक पोर्ट 4396 पर प्रमाणित अवलोकन डेटा प्रदान करता है। इसके विकास प्रॉक्सी और कुकी सत्र टौरी साइडकार कनेक्शन से स्वतंत्र हैं।
लाइव प्रोजेक्ट इवेंट (पुल अनुरोध, कमिट, वर्कफ़्लो रन और सहायक सत्र चरण) इन-प्रोसेस इवेंट सेवा के माध्यम से प्रकाशित किए जाते हैं। एक नया ग्राहक पहले सबसे हाल के मिलान वाले इवेंट 20 तक प्राप्त करता है और फिर लाइव, वैकल्पिक रूप से प्रोजेक्ट और इवेंट प्रकार के आधार पर फ़िल्टर किया जाता है (apps/sidecar/src/services/live-events.ts).
विस्तार सीमाएँ
दो प्लगइन एकीकरण हैं. एप्लिकेशन प्लगइन एसडीके मैनिफ़ेस्ट, क्षमताओं, सक्रियण और होस्ट अनुबंधों को परिभाषित करता है। निक्ली ब्रिज एक बाहरी सहायक को पंजीकृत सीएडी/सीएएम क्रियाओं को उजागर करता है। HTTP रजिस्ट्री रूट के माध्यम से प्लगइन इंस्टॉल करना रनटाइम होस्ट में मॉड्यूल को सक्रिय करने से एक अलग ऑपरेशन है।
वर्कफ़्लो पार्सिंग और शेड्यूलिंग लाइव रहते हैं packages/workflow. सेवा-समर्थित चरण साइडकार परतों द्वारा पंजीकृत होते हैं, जबकि शुद्ध प्रोजेक्ट और सीएएम चरण उनके आपूर्ति किए गए इनपुट के साथ चल सकते हैं। वीसीएस अपनी लाइब्रेरी में ऑब्जेक्ट हैश, डिफ, मर्ज और गिटहब ट्रांसपोर्ट ऑपरेशंस की गणना करता है; साइडकार सेवाएँ उन परिचालनों को प्रोजेक्ट दृढ़ता से जोड़ती हैं।
वेब दस्तावेज़ सहायक प्रदान किए गए दस्तावेज़ को पुनः प्राप्त करता है और भंडारण कॉन्फ़िगर होने पर गाइड कलाकृतियों को प्रकाशित कर सकता है। यह दस्तावेज़ीकरण प्रश्नों का उत्तर देता है; यह CAD/CAM एप्लिकेशन की स्थानीय प्रोजेक्ट एक्सेस को इनहेरिट नहीं करता है।
कनेक्शन और क्रेडेंशियल सीमाएँ
| क्रेडेंशियल | उद्देश्य | सीमा |
|---|---|---|
| आवेदन वाहक टोकन | संरक्षित साइडकार मार्गों के लिए स्थानीय एप्लिकेशन को स्वीकार करें। | साइडकार लॉन्च के लिए जेनरेट/आपूर्ति की गई; वेबव्यू इसे मूल कनेक्शन के माध्यम से प्राप्त करता है। |
x-session-token | स्वीकृत आवेदन के पीछे कार्यरत खाते का चयन करें। | अनुपस्थित, अमान्य, समाप्त हो चुका या अनाथ सत्र स्थानीय प्रोफ़ाइल पर वापस आ जाता है। |
| सहयोगी डिवाइस टोकन | गेटवे मार्गों पर व्यक्तिगत रूप से युग्मित फ़ोन स्वीकार करें। | अलग HTTPS गेटवे और इसकी विधि/पथ अनुमति-सूची द्वारा जाँच की गई। |
| एआई ब्रिज टोकन | किसी एकल प्रोजेक्ट के लिए अनुमत कार्रवाइयों को किसी बाहरी एजेंट के सामने उजागर करें। | दो एक्शन ब्रिज एंडपॉइंट्स को स्वीकार करता है और पढ़ने या पढ़ने/लिखने के दायरे को लागू करता है। |
| प्रदाता एपीआई कुंजी | आउटबाउंड मॉडल कॉल प्रमाणित करें। | साइडकार क्रेडेंशियल सेवा द्वारा प्रबंधित; एप्लिकेशन प्राधिकरण का विकल्प नहीं। |
| गिटहब टोकन | अनुरोधित मिरर ऑपरेशन निष्पादित करें। | उस कॉल के लिए प्रदान किया गया x-github-token; प्रोजेक्ट स्नैपशॉट डेटा नहीं. |
प्राधिकरण स्तरित है. बियरर मिडलवेयर को पास करने से किसी विशेष ड्राइंग या प्रोजेक्ट का स्वामित्व साबित नहीं होता है; हैंडलर और रिपॉजिटरी उन संसाधनों की जाँच करते हैं। इसी प्रकार जोड़ी बनाने से फ़ोन अप्रतिबंधित साइडकार क्लाइंट में नहीं बदल जाता है। क्रेडेंशियल चुनने से पहले विशिष्ट समापन बिंदु और सहयोगी नीति से परामर्श लें।
प्राधिकरण एडाप्टर है apps/sidecar/src/http/authorization.ts. साथी और पुल के फैसले उनकी अपनी सेवाओं में रहते हैं। उन रास्तों को अलग रखने से एआई प्रदाता के रहस्य को बदले बिना खोए हुए डिवाइस या एक एकीकरण टोकन को रद्द किया जा सकता है।
विफलता अलगाव
तत्परता घटना से पहले की विफलताएं साइडकार आरंभीकरण से संबंधित हैं: कॉन्फ़िगरेशन, डेटाबेस अपग्रेड, सेवा निर्माण, या HTTP स्टार्टअप। तैयारी के बाद विफलताएं किसी प्रदाता, फ़ाइल सिस्टम ऑपरेशन, एंडपॉइंट या क्लाइंट सत्र के लिए विशिष्ट हो सकती हैं। शेल का जीवनचक्र और वेबव्यू का कनेक्शन-पुनर्प्रयास बजट अलग-अलग हैं; जब पुनरारंभ श्रवण पोर्ट को बदलता है तो दोनों का निरीक्षण करें।
एक डिस्कनेक्टेड एआई स्ट्रीम जरूरी नहीं कि उसके सर्वर-साइड वार्तालाप को रोक दे। संपादन निर्देश दोबारा भेजने से पहले सत्र स्थिति पुनर्प्राप्त करें। एक विफल वर्कफ़्लो अपनी ट्रिगरिंग प्रतिबद्धता को वापस नहीं लेता है। एक असफल रिमोट पुश स्थानीय इतिहास को नहीं मिटाता है। ये भेद नेटवर्क विफलता को ऐसे संभालने से रोकते हैं जैसे कि कोई सतत ऑपरेशन कभी हुआ ही न हो।
विफल एपीआई अनुरोध के लिए, इसकी विधि, पथ, स्थिति, समापन बिंदु आईडी और प्रासंगिक गैर-गुप्त पहचानकर्ताओं को रिकॉर्ड करें। दौड़ने की तुलना करें /api/openapi.json साथ दस्तावेज़ीकरण अनुबंध स्नैपशॉट जब क्लाइंट और सर्वर संस्करण भिन्न होते हैं. पिछले साइडकार लॉन्च के टोकन के साथ समस्या निवारण से बचें।
स्रोत पथ द्वारा आर्किटेक्चर स्नैपशॉट
| क्षेत्र | यह कहाँ रहता है | सबसे पहले क्या पढ़ें |
|---|---|---|
| डेस्कटॉप शेल (Rust) | apps/desktop/src-tauri/src/ | sidecar.rs (पर्यवेक्षक), commands.rs, updater.rs, menu.rs, tray.rs, secrets.rs |
| डेस्कटॉप यूआई | apps/desktop/src/ | app/, features/ (सीएडी, कैम, एआई, चैट, प्रोजेक्ट, टूलपाथ, प्लगइन्स,…), viewport/, shared/ |
| साइडकार प्रवेश | apps/sidecar/src/main.ts | हाथ मिलाने के लिए तैयार, परतें अंदर layers.ts, कॉन्फ़िगरेशन में config.ts |
| HTTP हैंडलर | apps/sidecar/src/http/ | प्रति समूह एक फ़ाइल, उदा. toolpath-generator.ts, ai.ts, kv.ts |
| सेवाएँ और भंडार | apps/sidecar/src/services/, repos/ | cam-program.ts, companion.ts, auth-tokens.ts, storage.ts |
| अनुबंध | packages/api/src/ | index.ts, groups/, errors.ts, client.ts |
| गुठली | packages/core/src/ | cad/history.ts, cad/sketch.ts, cam/kernel/, cam/post/ |
| सहायक | packages/ai/src/ | actions/, tools/, nikcli/, prompts/ |
| भंडारण | packages/db/src/ | index.ts, upgrade.ts, schema.ts |
| इतिहास | packages/vcs/, packages/workflow/ | रिपॉजिटरी एपीआई, मर्ज, वर्कफ़्लो स्कीमा |
| साथी | apps/mobile/ | app/ मार्ग, lib/ कनेक्शन और युग्मन |
ट्रेस: लॉन्च से पहले अनुरोध तक
- तौरी शुरू होती है और पर्यवेक्षक अंदर आता है
sidecar.rsएक यादृच्छिक टोकन उत्पन्न करता है। - यह पैदा होता है
sidecar-<triple>साथCADCAMFUN_TOKEN,CADCAMFUN_DATA_DIRऔरCADCAMFUN_MIGRATIONS_DIR. - साइडकार इसके कॉन्फ़िगरेशन को पढ़ता है, SQLite (WAL, विदेशी कुंजी) खोलता है, बैकअप लेता है और यदि आवश्यक हो तो माइग्रेट करता है, और इसकी सेवा परतें बनाता है।
- यह बांधता है
127.0.0.1एक अल्पकालिक पोर्ट पर और stdout पर एक JSON तैयार लाइन प्रिंट करता है। पर्यवेक्षक इसके लिए 60 सेकंड तक प्रतीक्षा करता है। - पर्यवेक्षक उत्सर्जित करता है
sidecar-status{ state: "ready", port }; वेबव्यू कॉल करता हैget_sidecar_endpointके लिए{ baseUrl, token }. - वेबव्यू बनता है
ApiClient.layer({ baseUrl, token })और प्रोजेक्ट लोड करना प्रारंभ करता है.
यदि साइडकार बाहर निकल जाता है, तो पर्यवेक्षक इसे एक बार पुनः आरंभ करता है और नए पोर्ट की घोषणा करता है; दूसरी विफलता स्थिति को वहीं छोड़ देती है failed. नौकरी छोड़ने पर, पर्यवेक्षक शटडाउन लाइन लिखता है, 2 सेकंड तक प्रतीक्षा करता है, और फिर प्रक्रिया को दोहराता है; जैसे ही इसका दायरा बंद होता है, डेटाबेस परत वाल चौकियों को चेक करती है।
ट्रेस: एक निर्माण अनुरोध
- सीएएम कार्यक्षेत्र ड्राइंग तत्वों और स्टॉक और कॉल को कैप्चर करता है
POST /api/toolpaths/manufacture. - वाहक मिडलवेयर अनुरोध स्वीकार करता है; शरीर के विरुद्ध डिकोड किया गया है
CamKernelRequest. runKernelRequestमेंservices/cam-program.tsकॉलcam.kernel.jobOfSnapshot; तैयारी के मुद्दे 400 बन जाते हैं।cam.kernel.runJobसंचालन की योजना बनाता है या उसका अनुसरण करता है, कटिंग डेटा की गणना करता है, टूलपाथ बनाता है, मशीन की बोली के लिए एनसी पोस्ट करता है और दावों का मूल्यांकन करने के लिए इसे वोक्सल स्टॉक पर दोबारा चलाता है।- परिणाम के विरुद्ध डिकोड किया गया है
CamKernelResultऔर लौट आया. जब तक क्लाइंट पोर्टेबल दस्तावेज़ के साथ टूलपाथ को सहेज नहीं लेता, तब तक कुछ भी संग्रहीत नहीं किया जाता है, जिस बिंदु पर साइडकार कैप्चर किए गए अनुरोध को फिर से चलाता है और तुलना करता है।