दस्तावेज़
स्थानीय विकास
एपीआई प्रक्रिया, डेटा निर्देशिका और क्लाइंट मोड को स्पष्ट रूप से चुनें।
अंग्रेज़ी से स्वचालित रूप से अनुवादित। अंग्रेज़ी मूल देखें
विकास प्रक्रियाएँ
एक पूर्ण डेस्कटॉप विकास सत्र में एक रस्ट शेल, एक Bun साइडकार और वाइट चलता है। शेल देशी सुविधाएँ प्रदान करता है और साइडकार की देखरेख करता है; वाइट वेबव्यू एसेट्स और हॉट रीलोड की आपूर्ति करता है। bun run desktop:dev उन प्रक्रियाओं को शुरू करने से पहले बाइनरी और माइग्रेशन संसाधन तैयार करता है।
तेज़ स्क्रीन कार्य के लिए डेस्कटॉप चलाएँ dev अकेले स्क्रिप्ट. App.tsx इन-मेमोरी पूर्वावलोकन एपीआई का चयन केवल टौरी के बाहर और केवल तब ही करता है VITE_SIDECAR_URL अनुपस्थित है. असमर्थित एपीआई संग्रहों के लिए पूर्वावलोकन विफलताओं के 501 लौटने की उम्मीद है। दृढ़ता, प्राधिकरण, स्ट्रीमिंग एआई और सर्वर सेवाओं के लिए लाइव साइडकार का उपयोग करें।
CADCAMFUN_TOKEN=local-development-token CADCAMFUN_DATA_DIR=/tmp/cadcamfun-development CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle" bun --no-env-file apps/sidecar/src/main.ts उपरोक्त टोकन एक पृथक स्थानीय विकास प्रक्रिया का एक उदाहरण है। अपना स्वयं का मूल्य चुनें. स्टड को खुला रखें: इसे बंद करने से साइडकार रुक जाती है। सर्वर एक JSON प्रिंट करता है ready इसके क्षणिक बंदरगाह के साथ घटना /api/health प्रतिक्रिया देता है; लॉग stderr पर जाते हैं।
VITE_SIDECAR_URL=http://127.0.0.1:43111 VITE_SIDECAR_TOKEN=local-development-token bun run --filter @cadcamfun/desktop dev पोर्ट 43111 को रेडी-इवेंट पोर्ट से बदलें और चलने से पहले उस साइडकार को दिए गए टोकन का उपयोग करें। Vite, Tauri डेवलपमेंट URL से मेल खाते हुए, सख्त पोर्ट चयन के साथ पोर्ट 1420 का उपयोग करता है। साइडकार HTTP लोकलहोस्ट/लूपबैक पर ब्राउज़र CORS मूल और समर्थित Tauri मूल की अनुमति देता है; संरक्षित मार्गों के लिए इसे अभी भी उचित प्राधिकरण की आवश्यकता है।
डेटा निर्देशिकाएं और माइग्रेशन
साइडकार खुलती है <CADCAMFUN_DATA_DIR>/cadcamfun.db. टौरी अपनी स्वयं की एप्लिकेशन डेटा निर्देशिका चुनती है और इसे बच्चे को भेजती है। एक मैन्युअल प्रक्रिया आपके द्वारा प्रदान की गई निर्देशिका का उपयोग करती है। ये डेटाबेस स्वतंत्र हैं, भले ही उनका फ़ाइल नाम समान हो।
सीएलआई माइग्रेशन स्क्रिप्ट पढ़ती है DATABASE_URL और अन्यथा उपयोग करता है ./data/cadcamfun.db इसकी कार्यशील निर्देशिका के सापेक्ष। जड़ db:migrate अंदर चलता है packages/db. जानबूझकर सीएलआई संचालन के लिए एक पूर्ण फ़ाइल यूआरएल चुनें; लॉग में दिखाए गए संबंधित फ़ाइल नाम से लक्ष्य का अनुमान न लगाएं।
DATABASE_URL=file:/tmp/cadcamfun-cli/cadcamfun.db bun run db:migrate स्कीमा परिवर्तन की उत्पत्ति होती है packages/db/src/schema.ts. दौड़ना bun run db:generate, जेनरेट किए गए माइग्रेशन की समीक्षा करें और इसे पहले एक अलग डेटाबेस पर लागू करें। साइडकार का उपयोग करता है CADCAMFUN_MIGRATIONS_DIR जब प्रदान किया गया; पैकेज्ड बिल्ड जेनरेट की गई निर्देशिका को संसाधन के रूप में चरणबद्ध करता है।
डेटाबेस परत वाल और विदेशी कुंजियाँ सक्षम करती है। जब किसी मौजूदा फ़ाइल को माइग्रेशन की आवश्यकता होती है, तो अपग्रेड पथ उसके नीचे एक बैकअप बनाता है backups/ और नवीनतम पांच मिलान स्वचालित बैकअप को बरकरार रखता है। पहला निर्माण, एक अपरिवर्तित स्कीमा और इन-मेमोरी डेटाबेस अपग्रेड बैकअप नहीं बनाते हैं। मैन्युअल पुनर्प्राप्ति परिचालन से पहले डेटा को स्वतंत्र रूप से सुरक्षित रखें।
लक्षित जाँचें
bun run --filter @cadcamfun/core typecheck
bun test packages/core
bun run --filter @cadcamfun/desktop typecheck
bun test apps/desktop/src/viewport
bun run --cwd packages/web check
bun run --cwd packages/web build परिवर्तित सीमा के अनुसार चेक का चयन करें। शुद्ध ज्यामिति परिवर्तनों के लिए ज्यामिति दावे की आवश्यकता होती है; एपीआई अनुबंध परिवर्तनों के लिए जेनरेटेड-क्लाइंट जांच और प्रभावित हैंडलर की आवश्यकता होती है; दृढ़ता परिवर्तन के लिए रिपॉजिटरी और माइग्रेशन परीक्षणों की आवश्यकता होती है; यूआई इंटरैक्शन परिवर्तनों के लिए प्रासंगिक घटक और रनटाइम प्रवाह की आवश्यकता होती है। जड़ test स्क्रिप्ट शामिल है packages, apps, और scripts.
नेटिव शेल चेक से चलते हैं apps/desktop/src-tauri साथ cargo clippy --all-targets -- -D warnings और cargo test. लक्ष्य साइडकार और माइग्रेशन को पहले चरणबद्ध करें, क्योंकि टौरी के निर्माण संदर्भ में वे संसाधन शामिल हैं। ऑपरेटिंग-सिस्टम एकीकरण परीक्षणों के लिए मूल डेस्कटॉप और किचेन की आवश्यकता हो सकती है।
रनटाइम कॉन्फ़िगरेशन
apps/sidecar/src/config.ts साइडकार कॉन्फ़िगरेशन परत का स्वामी है। आवश्यक इनपुट हैं CADCAMFUN_TOKEN और CADCAMFUN_DATA_DIR. CADCAMFUN_MIGRATIONS_DIR माइग्रेशन संसाधनों का चयन करता है। डिफ़ॉल्ट AI होस्ट है nikcli; CADCAMFUN_AI_HOST=direct प्रत्यक्ष कॉल का चयन करता है, और CADCAMFUN_AI_OFFLINE ऑफ़लाइन/परीक्षण ऑपरेशन का समर्थन करता है।
वैकल्पिक कॉन्फ़िगरेशन में एप्लिकेशन यूआरएल और डेवलपमेंट ऑथ लिंक, स्ट्राइप क्रेडेंशियल्स और मूल्य पहचानकर्ता, व्यवस्थापक/क्रॉन सेटिंग्स, और शामिल हैं OTEL_EXPORTER_OTLP_ENDPOINT. प्रासंगिक प्रदाता कॉन्फ़िगरेशन के बिना बिलिंग अनुपलब्ध है; टेलीमेट्री निर्यात इसके कलेक्टर एंडपॉइंट के बिना बंद है। केवल अपने प्रवाह के लिए आवश्यक इनपुट की आपूर्ति करें।
ब्राउज़र एंडपॉइंट वैरिएबल वाइट कॉन्फ़िगरेशन हैं, साइडकार कॉन्फ़िगरेशन नहीं। एक सहयोगी जोड़ी में एक अलग टोकन और HTTPS पता होता है। एक स्टैंडअलोन एक्शन-ब्रिज टोकन का अपना दायरा और जीवनकाल होता है। इन क्रेडेंशियल्स को एक-दूसरे से प्रतिस्थापित न करें.
स्पष्ट प्रक्रिया कॉन्फ़िगरेशन या एप्लिकेशन सेटिंग्स का उपयोग करें। नमूना साइडकार कमांड Bun की पर्यावरण-फ़ाइल लोडिंग को अक्षम कर देता है। लॉग या दस्तावेज़ीकरण उदाहरणों में कभी भी वास्तविक टोकन, मॉडल कुंजियाँ, पेयरिंग लिंक या हस्ताक्षर सामग्री प्रिंट न करें।
प्रभाव और संसाधन स्वामित्व
रिपॉजिटरी पिन पर प्रभाव पड़ता है 4.0.0-rc.112. सेवाओं का उपयोग Context.Service, कार्यान्वयन परतों के माध्यम से प्रदान किए जाते हैं, और संचालन टाइप किए गए प्रभाव लौटाते हैं। स्थापित का उपयोग करें effect/ai-docs/src इस एपीआई को बदलते समय दस्तावेज़ीकरण, जिसमें इसके अस्थिर HTTP मॉड्यूल भी शामिल हैं।
सीमाओं पर बाहरी इनपुट को डिकोड करें। टाइप की गई त्रुटियों में विदेशी अपवादों को मैप करें, स्थिर त्रुटि टैग को संरक्षित करें, और एक स्कोप्ड परत को डेटाबेस हैंडल, वर्कर्स, स्ट्रीम और सर्वर संसाधनों का मालिक बनने दें। साइडकार का शटडाउन प्रवाह पैरेंट शटडाउन इवेंट, स्टडिन क्लोजर और रनटाइम रुकावट को संभालता है; लॉग और प्रोटोकॉल स्टडआउट के अलग-अलग गंतव्य हैं।
कोर सीएडी/सीएएम गणना कम्प्यूटेशनल हॉट पथों में सरल कार्य बनी हुई है। सीमा पर सत्यापन को लपेटने के लिए प्रत्येक ज्यामिति ऑपरेशन को एक प्रभाव के अंदर रखने की आवश्यकता नहीं होती है। कोर ज्यामिति इकाई सम्मेलनों का उपयोग करें और उचित किनारे पर प्रदर्शन/निर्यात रूपांतरण करें। कोण बनाने में रेडियन का उपयोग होता है; कुछ फीचर पैरामीटर और सीएएम रोटरी-अक्ष मान स्पष्ट रूप से डिग्री का उपयोग करते हैं।
स्टार्टअप समस्या निवारण
- विटे बंदरगाह पर कब्ज़ा: मुफ़्त पोर्ट 1420 या मौजूदा विकास सर्वर को रोकें; सख्त पोर्ट मोड चुपचाप दूसरे पोर्ट का चयन नहीं करता है।
- बूट पुनः प्रयास करता रहता है: साइडकार तैयार/त्रुटि आउटपुट और माइग्रेशन पथ का निरीक्षण करें। ऐप अपने कनेक्शन बजट के रहते हुए समापन बिंदु को फिर से हल करता है।
- सर्वर तुरंत बाहर निकल जाता है: आवश्यक कॉन्फ़िगरेशन की जांच करें और क्या लॉन्चिंग प्रक्रिया बंद हो गई है।
- परियोजनाएँ गायब: डेटा निर्देशिका, एपीआई एंडपॉइंट और क्या ऐप नकली क्लाइंट का उपयोग कर रहा है, इसकी पुष्टि करें।
- 401 प्रतिक्रियाएँ: सत्यापित करें कि क्लाइंट पिछले लॉन्च के बजाय वर्तमान प्रक्रिया के टोकन का उपयोग कर रहा है।
- ब्राउज़र पूर्वावलोकन में 501: उस एपीआई संग्रह के लिए एक वास्तविक साइडकार का उपयोग करें।
- मूल संदर्भ निर्माण विफल रहता है: सही लक्ष्य के लिए साइडकार बाइनरी और माइग्रेशन संसाधनों को चरणबद्ध करें।
दस्तावेज़ीकरण और साथी विकास
bun run --cwd packages/web start एस्ट्रो अकेले चलाता है. bun run --cwd packages/web dev एस्ट्रो प्लस स्थानीय स्टूडियो एपीआई शुरू करता है। दस्तावेज़ीकरण जाँच मार्ग सूचकांक को मान्य करती है; बिल्ड एस्ट्रो संकलन और प्रीरेंडरिंग को मान्य करता है।
आईओएस के लिए, bun run --cwd apps/mobile start कस्टम डेवलपमेंट क्लाइंट के लिए मेट्रो शुरू करता है। bun run --cwd apps/mobile ios मूल ऐप बनाता/चलाता है; build केवल जावास्क्रिप्ट निर्यात करता है। नेटिव पिनिंग के लिए स्थानीय स्विफ्ट मॉड्यूल की आवश्यकता होती है और यह एक्सपो गो में नहीं चल सकता।
bun scripts/build.ts --help रिलीज़ पाइपलाइन के विकल्पों को सूचीबद्ध करता है। --only=resources पुनर्निर्माण के बिना प्रवासन को पुनर्स्थापित करता है, और --dry-run बिना कुछ लिखे योजना को प्रिंट करता है।
प्रक्रिया कॉन्फ़िगरेशन संदर्भ
| चर | Default/requirement | उपयोग |
|---|---|---|
CADCAMFUN_TOKEN | आवश्यक | शेल या डेवलपमेंट लॉन्चर द्वारा आपूर्ति किया गया बियरर टोकन। |
CADCAMFUN_DATA_DIR | आवश्यक | साइडकार डेटाबेस और एप्लिकेशन सेवा स्थिति। |
CADCAMFUN_MIGRATIONS_DIR | वैकल्पिक | उत्पन्न माइग्रेशन का फ़ोल्डर. जब कोई फ़ोल्डर प्रदान नहीं किया जाता है तो डेटाबेस परत माइग्रेशन छोड़ देती है। |
CADCAMFUN_AI_HOST | nikcli | nikcli एंबेडेड होस्ट या direct एआई कॉल करता है। |
CADCAMFUN_AI_OFFLINE | असत्य | ऑफ़लाइन/परीक्षण एआई ऑपरेशन; स्थानीय स्थानापन्न मॉडल नहीं. |
CADCAMFUN_AI_MINIMAX_BASE_URL | अनसेट | वैकल्पिक एंबेडेड-होस्ट मिनीमैक्स एंडपॉइंट ओवरराइड। |
CADCAMFUN_APP_URL | अनसेट | प्रमाणीकरण लिंक में उपयोग किया जाने वाला एप्लिकेशन मूल। |
CADCAMFUN_DEBUG_LINKS | असत्य | विकास प्राधिकरण प्रतिक्रियाएँ रीसेट/मैजिक लिंक को उजागर कर सकती हैं। |
OTEL_EXPORTER_OTLP_ENDPOINT | अनसेट | कॉन्फ़िगर होने पर टेलीमेट्री निर्यात सक्षम करता है। |
VITE_SIDECAR_URL, VITE_SIDECAR_TOKEN | अनसेट | ब्राउज़र वेबव्यू कनेक्शन; वास्तविक साइडकार के लिए दोनों की आवश्यकता होती है। |
DATABASE_URL | सीएलआई-विशिष्ट डिफ़ॉल्ट | डेटाबेस माइग्रेशन/जेनरेशन टूल लक्ष्य, साइडकार कॉन्फ़िगरेशन से स्वतंत्र। |
बूलियन इनपुट को इफ़ेक्ट कॉन्फ़िगरेशन द्वारा डिकोड किया जाता है, मनमाने ढंग से स्ट्रिंग सत्यता द्वारा नहीं। स्पष्ट सत्य/गलत मानों का प्रयोग करें। अज्ञात एआई होस्ट शाब्दिक डिकोडिंग विफल हो जाती है। प्रक्रिया बनाने से पहले आपूर्ति कॉन्फ़िगरेशन; पैरेंट टर्मिनल वैरिएबल बदलने से पहले से चल रहा साइडकार अपडेट नहीं होता है।
किसी स्पष्ट डेटाबेस के विरुद्ध स्टूडियो का उपयोग करें
स्थानीय स्टूडियो एपीआई लूपबैक पोर्ट 4396 पर सुनता है। इसकी पथ प्राथमिकता है CADCAMFUN_DB, तब DATABASE_URL के साथ file: उपसर्ग हटा दिया गया, फिर रिपॉजिटरी-रूट data/cadcamfun.db. यह डेटाबेस पैकेज के डिफ़ॉल्ट सीएलआई कार्य-निर्देशिका पथ से भिन्न है। यह केवल मौजूदा डेटाबेस को खोलता है और किसी को स्वचालित रूप से बनाता/माइग्रेट नहीं करता है।
DATABASE_URL=file:/tmp/cadcamfun-studio/cadcamfun.db bun run db:migrate
CADCAMFUN_DB=/tmp/cadcamfun-studio/cadcamfun.db bun run --cwd packages/web dev पहला कमांड फ़ाइल को इनिशियलाइज़ करता है। दूसरा उस पथ के विरुद्ध स्टूडियो प्लस एस्ट्रो शुरू करता है। एक ताजा माइग्रेटेड स्कीमा में उपयोगकर्ता/पासवर्ड सत्र केवल इसलिए शामिल नहीं है क्योंकि यह मौजूद है; स्टूडियो साइन-इन के लिए एक उपयुक्त खाते की आवश्यकता होती है। इसके प्रमाणित अनुरोध स्टूडियो सत्र कुकी का उपयोग करते हैं और वैध सत्र के बिना 401 लौटाते हैं।
जब फ़ाइल गुम हो जाती है, तो स्टूडियो एपीआई चयनित पथ के साथ 503 लौटाता है। जब एस्ट्रो सहयोगी स्टूडियो प्रक्रिया के बिना चलता है, तो प्रॉक्सी किया जाता है /studio/api अनुरोध पोर्ट 4396 तक नहीं पहुंच सकते. दस्तावेज़ीकरण पृष्ठ स्वयं विकसित किए जा सकते हैं packages/web start स्टूडियो प्रारंभ किए बिना.
कार्यान्वयन एंकर: packages/web/script/dev.ts, script/studio-server.ts, astro.config.mjs, packages/db/src/migrate.ts, और apps/sidecar/src/config.ts.
एक दोहराने योग्य विकास पाश
- एक डिस्पोजेबल साइडकार डेटा निर्देशिका और स्पष्ट माइग्रेशन फ़ोल्डर चुनें।
- एक इंटरैक्टिव टर्मिनल में साइडकार शुरू करें और पोर्ट को उसके तैयार इवेंट से रिकॉर्ड करें।
- मेल खाते URL/टोकन के साथ किसी अन्य टर्मिनल में Vite प्रारंभ करें, या इसके पर्यवेक्षित साइडकार के साथ मूल ऐप खोलें।
- एक क्रिया को पुन: प्रस्तुत करें और उसकी प्रतिक्रिया और बनी हुई स्थिति का निरीक्षण करें।
- बैकएंड परिवर्तनों के लिए, साइडकार को पुनरारंभ करें, यदि ब्राउज़र का पोर्ट बदल गया है तो उसे अपडेट करें और कार्रवाई को दोहराएं।
- प्रक्रिया को उसके सामान्य व्यवधान या पैरेंट शटडाउन पथ से रोकें ताकि संसाधनों को अंतिम रूप दिया जा सके।
साइडकार HTTP स्कोप को संक्षेप में हटा देता है, चेकप्वाइंट वाल को बंद कर देता है, और सामान्य स्कोप शटडाउन पर SQLite को बंद कर देता है। उस पथ के बिना किसी प्रक्रिया को ख़त्म करने से उड़ान के दौरान काम बाधित हो सकता है। एक स्रोत संपादन टौरी द्वारा पहले से ही पर्यवेक्षित संकलित बाइनरी को प्रतिस्थापित नहीं करता है; संकलित व्यवहार का परीक्षण करते समय साइडकार का पुनर्निर्माण करें।
संकलित-रनटाइम सत्यापन के लिए, scripts/smoke-sidecar.ts एक चयनित बाइनरी को एक पृथक होम/डेटा निर्देशिका और ऑफ़लाइन एआई के साथ चला सकते हैं। यह तत्परता/स्वास्थ्य/कार्य व्यवहार को मापता है और कर्नेल कार्य का अभ्यास करता है। बिना --binary यह पहले एक अस्थायी निष्पादन योग्य संकलित करता है, इसलिए निर्माण लागत की योजना बनाएं; इसका परिणाम स्रोत-स्तरीय परीक्षणों से अलग है।
कौन सी प्रक्रिया कहां चलती है
| आज्ञा | प्रारंभ होगा | डेटा निर्देशिका | डेटाबेस |
|---|---|---|---|
bun run desktop:dev | संकलित साइडकार + तौरी देव विंडो | टॉरी द्वारा चुनी गई एप्लिकेशन डेटा निर्देशिका | <dataDir>/cadcamfun.db |
मैनुअल साइडकार (bun apps/sidecar/src/main.ts) | केवल साइडकार, एक अल्पकालिक लूपबैक पोर्ट पर | CADCAMFUN_DATA_DIR | <dataDir>/cadcamfun.db |
bun run db:migrate | माइग्रेशन स्क्रिप्ट | — | DATABASE_URL या packages/db/data/cadcamfun.db |
bun run --filter @cadcamfun/web studio | स्थानीय स्टूडियो | — | CADCAMFUN_DB, DATABASE_URL या data/cadcamfun.db |
bun run --filter @cadcamfun/web dev | दस्तावेज़ साइट | — | — |
चार अलग-अलग डेटाबेस डिफ़ॉल्ट
ये प्रवेश बिंदु कोई डिफ़ॉल्ट पथ साझा नहीं करते हैं. जब आपको एक ही फ़ाइल को देखने के लिए दो टूल की आवश्यकता हो तो पथ को स्पष्ट रूप से सेट करें।
परिवर्तन प्रकार के अनुसार आंतरिक लूप
| आप बदल गये | दौड़ना |
|---|---|
कर्नेल कोड इन packages/core | bun test packages/core |
में एक अनुबंध packages/api | bun run generate, bun run generate:check, साइडकार परीक्षण, फिर दस्तावेज़ generate:api-reference |
| एक साइडकार हैंडलर या सेवा | bun test apps/sidecar |
| स्कीमा | bun run db:generate, नया माइग्रेशन फ़ोल्डर प्रतिबद्ध करें, bun scripts/build.ts --only=resources |
Rust लगना src-tauri | cargo clippy और cargo test में apps/desktop/src-tauri |
| दस्तावेज़ पृष्ठ | bun run typecheck और bun run build में packages/web |