# कमांड-लाइन टूल

Windows, macOS या Linux पर oleafly कमांड इंस्टॉल करें, टर्मिनल या CI से प्रोजेक्ट बिल्ड और जाँचें, किसी ऑनलाइन LaTeX सेवा के साथ सिंक करें, और उसके MCP सर्वर और स्किल से कोडिंग एजेंट कनेक्ट करें।

Oleafly के साथ `oleafly` आता है, एक कमांड-लाइन टूल जो ऐप वाले प्रोजेक्ट पर ही काम करता है। टर्मिनल, स्क्रिप्ट या CI से कोई पेपर बिल्ड या जाँचें। किसी कोडिंग एजेंट को अपने प्रोजेक्ट तक पहुँचने का भरोसेमंद रास्ता दें। किसी ऑनलाइन LaTeX सेवा या Oleafly सर्वर के साथ सिंक करें, या ऐप खोले बिना Oleafly एजेंट चलाएँ।

यह हर प्लेटफ़ॉर्म पर ऐप के भीतर ही आता है। यह पेज Oleafly 0.4.8 और उसके बाद के कमांड बताता है। पुराने संस्करणों में कम कमांड थे, इसलिए जिन स्क्रिप्ट पर यह निर्भर हों उनमें अपना Oleafly संस्करण पिन करें।

## इंस्टॉल करें

| सिस्टम | ऐप इसे कहाँ रखता है | `oleafly` को अपनी PATH पर रखें |
|---|---|---|
| Windows | ऐप के बगल में `oleafly-cli.exe`: सेटअप प्रोग्राम के लिए `%LOCALAPPDATA%\Oleafly` में, या MSI पैकेज के लिए `C:\Program Files\Oleafly` में | **Settings → General** में **Terminal command** पंक्ति पर **Install** इसे `%LOCALAPPDATA%\Oleafly\bin\oleafly.exe` में कॉपी करता है और उस फ़ोल्डर को आपकी PATH में जोड़ देता है |
| macOS | `Oleafly.app/Contents/MacOS/oleafly-cli` | **Terminal command** पंक्ति पर **Install** `oleafly` को `/usr/local/bin` में लिंक करता है अगर आप वहाँ लिख सकते हैं, वरना `~/.local/bin` में |
| Linux पैकेज (.deb, .rpm) | `/usr/bin/oleafly-cli` | कुछ करना नहीं है: पैकेज `/usr/bin/oleafly` इंस्टॉल कर देता है |
| Linux AppImage | AppImage के अंदर | **Install** इसे `~/.local/bin/oleafly` में कॉपी करता है |

Oleafly जिन प्रोग्रामों को शुरू करता है, जैसे उसका अपना टर्मिनल और CLI एजेंट, उन्हें `oleafly` हमेशा उनकी PATH पर मिलता है, इंस्टॉल करने से पहले भी। `OLEAFLY_CLI` वेरिएबल में उसका पूरा पाथ रहता है।

### Windows

1. **Settings → General** खोलें और **Terminal command** पंक्ति पर **Install** चुनें।
2. नई PowerShell या Command Prompt विंडो खोलें। जो विंडो पहले से खुली थीं, वे पुरानी PATH रखती हैं।
3. जाँचें कि यह काम करता है:

```powershell
Get-Command oleafly
oleafly version
```

उसी पंक्ति पर **Remove** कॉपी को मिटा देता है और फ़ोल्डर को आपकी PATH से फिर हटा देता है। जब Oleafly अपडेट होता है, तो वह अगली बार शुरू होने पर कॉपी को ताज़ा कर देता है।

### macOS

पहले Oleafly को अपने Applications फ़ोल्डर में ले जाएँ। डिस्क इमेज से चल रही प्रति **Install** के बजाय "Move Oleafly to your Applications folder first" दिखाती है।

कमांड ऐप का एक लिंक है, इसलिए Oleafly अपडेट करने पर कमांड भी अपडेट हो जाता है। अगर फ़ोल्डर आपकी PATH पर नहीं है, तो पंक्ति वह लाइन दिखाती है जिसे आपको अपनी शेल प्रोफ़ाइल में जोड़ना है। `command -v oleafly` से जाँचें।

### Linux

.deb और .rpm पैकेज इंस्टॉल होते ही `oleafly` को आपकी PATH पर रख देते हैं। `oleafly` अकेला चलाने पर ऐप खुल जाता है।

AppImage को एक प्रति चाहिए, क्योंकि AppImage के अंदर की फ़ाइलें उसके बंद होते ही चली जाती हैं। जब आप AppImage को नए से बदल देते हैं, तो पंक्ति **Update** देती है। अगर `~/.local/bin` आपकी PATH पर नहीं है, तो पंक्ति वह लाइन दिखाती है जिसे जोड़ना है।

### जाँचें कि यह काम करता है

`oleafly version` ऐप का संस्करण और वे इंजन छापता है जो कमांड इस्तेमाल करेगा। `oleafly doctor` इंजन, ऐप, Git, टर्मिनल कमांड और आपके MCP क्लाइंट जाँचता है, और जो कुछ गायब हो उसका उपाय छापता है। यह प्रोजेक्ट के बाहर भी चलता है।

## प्रोजेक्ट बिल्ड करें

`oleafly .` मौजूदा फ़ोल्डर को ऐप में खोलता है। बाकी हर कमांड उसी फ़ोल्डर पर काम करता है जिसमें आप हैं; `-C` के बाद कोई पाथ देने पर वह कहीं और के फ़ोल्डर पर काम करता है।

```sh
cd ~/papers/thesis
oleafly init --engine typst
oleafly build
oleafly log --diagnostics
oleafly -C ~/papers/review --json build
```

- `oleafly init` मौजूदा फ़ोल्डर को प्रोजेक्ट बना देता है। `--engine` में `tectonic`, `latexmk`, `typst` या `markdown` दिया जा सकता है।
- `oleafly new` के बाद कोई फ़ोल्डर, `--template` और टेम्पलेट id देने पर टेम्पलेट से प्रोजेक्ट बनता है। `oleafly templates list --all` सभी टेम्पलेट सूचीबद्ध करता है।
- `oleafly build` प्रोजेक्ट के इंजन और सेटिंग्स का उपयोग करता है, ठीक ऐप की तरह: Oleafly के साथ आने वाले Tectonic, Typst और Pandoc, या आपका इंस्टॉल किया हुआ LaTeX। `--main` प्रोजेक्ट का कोई दूसरा दस्तावेज़ बिल्ड करता है, `--compiler` latexmk प्रोजेक्ट के लिए LaTeX कंपाइलर चुनता है, `-o` PDF की प्रति कहीं और रखता है और `--timeout` सेकंड में सीमा तय करता है।
- ऐप में जिस फ़ोल्डर को आपने उसी जगह खोला है, वह वहाँ चुने गए इंजन और मुख्य दस्तावेज़ से, ऐप के अपने बिल्ड फ़ोल्डर में बिल्ड होता है।
- ऐप और कमांड एक ही प्रोजेक्ट कभी एक साथ बिल्ड नहीं करते: दूसरा पहले के खत्म होने का इंतज़ार करता है। असफल बिल्ड आख़िरी अच्छा PDF बनाए रखता है।
- `oleafly watch` हर बार सेव करने पर दोबारा बिल्ड करता है। `oleafly log --diagnostics` त्रुटियाँ और चेतावनियाँ फ़ाइल और लाइन के साथ सूचीबद्ध करता है, और `oleafly clean` बिल्ड आउटपुट हटा देता है।

Typst की बारीकियों के लिए [Typst प्रोजेक्ट](/docs/typst/#build-from-the-command-line) देखें।

## कोडिंग एजेंट से इस्तेमाल करें

कोडिंग एजेंट तब सबसे अच्छा काम करते हैं जब कमांड उन्हें तीन चीज़ें दे: प्रोजेक्ट के नक्शे के लिए `oleafly context`, उनके पढ़ने लायक नतीजों के लिए `--json`, और ऐसे एग्ज़िट कोड जो बताएँ कि क्या गलत हुआ। किसी एजेंट को कनेक्ट करने के तीन तरीके हैं।

### oleafly-cli स्किल

Oleafly `oleafly-cli` नाम की एक स्किल के साथ आता है। वह एजेंट को कमांड, JSON आउटपुट, एग्ज़िट कोड और वह लूप सिखाती है जो सबसे अच्छा चलता है: संदर्भ पढ़ें, संपादित करें, बिल्ड करें, डायग्नॉस्टिक्स पढ़ें, पहली त्रुटि ठीक करें।

Oleafly के टर्मिनल और उसके शुरू किए CLI एजेंट में, इस स्किल को किसी भी दूसरी स्किल की तरह चुनें। जो एजेंट आप खुद चलाते हैं उसके लिए **Settings → AI Assistant → Skills → Share skills with other agents on this computer** चालू करें। तब Oleafly अपनी स्किलें, `oleafly-cli` समेत, उन फ़ोल्डरों में लिंक कर देता है जिन्हें दूसरे कोडिंग एजेंट पढ़ते हैं, जैसे `~/.claude/skills`, `~/.codex/skills` और `~/.agents/skills`। जो एजेंट किसी और फ़ोल्डर को पढ़ते हैं, उनके लिए `oleafly skills path` बताता है कि स्किलें कहाँ हैं।

### MCP से किसी एजेंट को कनेक्ट करें

`oleafly mcp` एक MCP सर्वर है जो स्टैंडर्ड इनपुट और आउटपुट पर बात करता है। जब ऐप में आपका प्रोजेक्ट खुला होता है, तो यह कॉल ऐप के अपने [MCP सर्वर](/docs/mcp/) तक पहुँचा देता है, इसलिए एजेंट को ऐप का हर टूल और आपके अनुमोदन प्रॉम्प्ट मिलते हैं। वरना यह अकेले काम करता है, रीड टूल (प्रोजेक्ट की स्थिति, प्रोजेक्ट का नक्शा, फ़ाइलें, खोज, लॉग, doctor रिपोर्ट, साइटेशन लुकअप) और `compile` के साथ। कॉपी करने के लिए कोई URL या टोकन नहीं है और इंस्टॉल करने के लिए Node.js नहीं।

सबसे तेज़ सेटअप `oleafly mcp config --client` है, जिसके बाद `claude-code`, `claude-desktop`, `codex`, `cursor` या `gemini` आता है। यह उस क्लाइंट की प्रविष्टि छापता है; `--write` जोड़ने पर वह आपके लिए जोड़ दी जाती है, क्लाइंट की फ़ाइल के बैकअप के साथ। इसके बाद क्लाइंट को रीस्टार्ट या दोबारा कनेक्ट करें। प्रोजेक्ट के भीतर यह प्रोजेक्ट की सेटिंग्स में लिखता है; बाहर यह आपकी यूज़र सेटिंग्स में लिखता है, कमांड के पूरे पाथ के साथ, क्योंकि डेस्कटॉप से शुरू किए ऐप आपकी PATH नहीं देख पाते।

#### Claude Code

```sh
claude mcp add --scope user oleafly -- oleafly mcp
```

प्रोजेक्ट के भीतर `oleafly mcp config --client claude-code --write` इसके बजाय सर्वर को प्रोजेक्ट की `.mcp.json` में जोड़ता है।

#### Claude Desktop

Claude Desktop सर्वर प्रोजेक्ट फ़ोल्डर के बिना शुरू करता है, इसलिए उसकी प्रविष्टि हमेशा ऐप के ज़रिए काम करती है: Oleafly को अपने प्रोजेक्ट के साथ खुला रखें। `oleafly` का पूरा पाथ इस्तेमाल करें। Windows पर पाथ में हर बैकस्लैश दोगुना लिखें।

```json title="claude_desktop_config.json"
{
  "mcpServers": {
    "oleafly": {
      "command": "/usr/local/bin/oleafly",
      "args": ["mcp", "--bridge", "always"]
    }
  }
}
```

फ़ाइल macOS पर `~/Library/Application Support/Claude` में और Windows पर `%APPDATA%\Claude` में है।

#### Codex

```toml title="~/.codex/config.toml"
[mcp_servers.oleafly]
command = "oleafly"
args = ["mcp"]
tool_timeout_sec = 300
```

#### Cursor

हर प्रोजेक्ट के लिए `~/.cursor/mcp.json` इस्तेमाल करें, या किसी एक प्रोजेक्ट के भीतर `.cursor/mcp.json`।

```json title="~/.cursor/mcp.json"
{
  "mcpServers": {
    "oleafly": {
      "command": "oleafly",
      "args": ["mcp"]
    }
  }
}
```

#### Gemini CLI

```json title="~/.gemini/settings.json"
{
  "mcpServers": {
    "oleafly": {
      "command": "oleafly",
      "args": ["mcp"],
      "timeout": 300000
    }
  }
}
```

### एजेंट को पूरा प्रोजेक्ट दें

`oleafly context` प्रोजेक्ट का नक्शा बनाता है: उसकी फ़ाइलें, आउटलाइन, लेबल, साइटेशन, गायब फ़ाइलें, अनसुलझे संदर्भ और पिछले बिल्ड की समस्याएँ। `--format md` प्रॉम्प्ट में पेस्ट करने लायक टेक्स्ट देता है; `--format json` वही नक्शा किसी प्रोग्राम के लिए देता है।

## सबमिट करने से पहले पेपर जाँचें

`oleafly check` प्रोजेक्ट पर [Preflight जाँचें](/docs/preflight/) चलाता है, उन्हीं नतीजों के साथ जो Preflight पैनल देता है: संदर्भ, साइटेशन, लेबल, गायब फ़ाइलें, ग्रंथसूची फ़ील्ड, फ़िगर और ब्लाइंड रिव्यू के लिए गुमनामी। जिन जाँचों को कंपाइल हुआ PDF चाहिए, वे पिछले बिल्ड का उपयोग करती हैं।

`oleafly lint` LaTeX और BibTeX जाँचें चलाता है, और जिन बिल्ड में यह शामिल है उनमें स्पेलिंग और ग्रामर भी। `--fix` वे सुधार लागू करता है जिन्हें लागू करना सुरक्षित है।

दोनों `--format human`, `json` या `sarif` लेते हैं, और `--exit-code` से वे समस्याएँ मिलने पर 9 के साथ बाहर निकलते हैं। SARIF GitHub जैसी कोड-स्कैनिंग सेवाओं के साथ काम करता है: रिपोर्ट `oleafly check --format sarif -o preflight.sarif` से लिखें, `upload-sarif` ऐक्शन से अपलोड करें, और हर निष्कर्ष पुल रिक्वेस्ट में अपनी लाइन पर दिखता है।

## ऑनलाइन LaTeX सेवा के साथ सिंक करें

`oleafly remote` आपके ऑनलाइन LaTeX सेवा अकाउंट से प्रोजेक्ट डाउनलोड करता है और किसी फ़ोल्डर को उनमें से एक के साथ सिंक रखता है, उसी मर्ज के साथ जो ऐप इस्तेमाल करता है।

### साइन इन करें

साइन-इन ऐप के एन्क्रिप्टेड स्टोर में रहते हैं, इसलिए ऐप में किया गया साइन-इन कमांड लाइन पर भी चलता है और कमांड लाइन का ऐप में।

- `oleafly auth login online --with-token` सेवा की अकाउंट सेटिंग्स से लिया गया Git टोकन सहेजता है। लिंक और सिंक करने के लिए यह चाहिए।
- `oleafly auth login online --from-browser firefox` इस कंप्यूटर के किसी ब्राउज़र से आपका साइन-इन कॉपी करता है, प्रोजेक्ट सूचीबद्ध और डाउनलोड करने के लिए। Firefox हर सिस्टम पर काम करता है; Chrome, Edge और Brave macOS पर काम करते हैं। `--cookie-stdin` इसके बजाय सेशन कुकी पढ़ता है।
- `oleafly auth login git --host https://gitlab.com` किसी Git होस्ट का टोकन सहेजता है।
- `oleafly auth status` हर साइन-इन और वह कहाँ से आया, बिना कोई सीक्रेट दिखाए, सूचीबद्ध करता है।
- `oleafly auth logout` साइन-इन हटाता है।

:::caution[टोकन अपनी शेल हिस्ट्री से बाहर रखें]
टोकन स्टैंडर्ड इनपुट पर दिए जाते हैं, जैसे `oleafly auth login online --with-token < token.txt`, कभी आर्ग्युमेंट के रूप में नहीं। टर्मिनल में कमांड उन्हें माँगता है और आप जो टाइप करते हैं वह दिखाई नहीं देता। `oleafly auth token` स्क्रिप्ट के लिए सहेजा हुआ टोकन छापता है, इसलिए उसके आउटपुट को पासवर्ड की तरह सँभालें।
:::

### प्रोजेक्ट इम्पोर्ट और सिंक करें

```sh
oleafly remote list
oleafly remote import 64a1f0c2e5b7 --into ~/papers
cd ~/papers/thesis
oleafly remote link
oleafly remote sync
```

- `oleafly remote import` प्रोजेक्ट को नए फ़ोल्डरों में डाउनलोड करता है। यह किसी भी अकाउंट के साथ काम करता है।
- `oleafly remote link` किसी फ़ोल्डर को सेवा के Git इंटीग्रेशन के ज़रिए उसके ऑनलाइन प्रोजेक्ट से जोड़ता है, जिसके लिए Git टोकन चाहिए।
- `oleafly remote sync` ऑनलाइन बदलाव फ़ोल्डर में मर्ज करता है और आपके बदलाव भेजता है। `--dry-run` दिखाता है कि क्या बदलेगा और `--no-push` बिना भेजे मर्ज करता है।
- जब कोई फ़ाइल दोनों तरफ़ बदली हो, तो सिंक कुछ नहीं लिखता और 8 के साथ बाहर निकलता है। इसे `--resolve` के साथ दोबारा चलाएँ, और हर फ़ाइल के लिए उसके पाथ के बाद `=local` या `=remote` दें।
- `oleafly remote diff` दिखाता है कि क्या अलग है; `--exit-code` के साथ यह फ़ाइलें अलग होने पर 9 के साथ और टकराव होने पर 8 के साथ बाहर निकलता है। `--latexdiff --pdf` आपके बदलावों का मार्क-अप किया हुआ PDF बनाता है, आपकी TeX डिस्ट्रीब्यूशन के latexdiff का उपयोग करके।
- `oleafly remote status`, `oleafly remote unlink` और `oleafly remote open` लिंक दिखाते हैं, उसे हटाते हैं और प्रोजेक्ट को आपके ब्राउज़र में खोलते हैं।

## Oleafly सर्वर के साथ काम करें

`oleafly server sign-in` के बाद सर्वर का पता देने पर कमांड लाइन उस कोड से साइन इन होती है जिसे आप अपने ब्राउज़र में मंज़ूर करते हैं। कमांड लाइन सर्वर पर ऐप से अलग अपना डिवाइस है।

- `oleafly server status` और `oleafly server projects` आपके सर्वर और साझा प्रोजेक्ट दिखाते हैं।
- `oleafly server share` प्रोजेक्ट का लिंक दिखाता है और लिंक शेयरिंग और कमेंट चालू या बंद करता है।
- `oleafly server members` प्रोजेक्ट के लोगों की सूची देता है और उन्हें जोड़ता, हटाता या बदलता है। शेयरिंग और सदस्य केवल मालिक बदल सकता है।
- `oleafly server comments` कमेंट सूचीबद्ध करता है, जोड़ता है, उनका जवाब देता है और उन्हें हल करता है। जो कमेंट तुरंत नहीं भेजा जा सकता, वह रखा जाता है और अगली बार भेजा जाता है।

किसी प्रोजेक्ट को पहली बार साझा करना ऐप में होता है। [लाइव सहयोग](/docs/collaboration/) देखें।

## टर्मिनल से Oleafly एजेंट चलाएँ

`oleafly ask` कुछ बदले बिना प्रोजेक्ट के बारे में सवाल का जवाब देता है। `oleafly agent run` कोई काम करता है।

```sh
oleafly ask "Which sections cite Smith 2021?"
oleafly agent run --allow write "Fix the overfull boxes in chapter 3"
```

- एजेंट प्रोजेक्ट को हमेशा पढ़ सकता है। `--allow` में `write`, `commands` या `network` जोड़े जाते हैं, और जो आपने अनुमति नहीं दी उसे वह मना कर देता है। वह कभी रुककर सवाल नहीं पूछता।
- बदलाव पहले `.oleafly/agent-runs/` के रिव्यू फ़ोल्डर में जाते हैं। `oleafly agent apply` के बाद वह फ़ोल्डर देने पर वे प्रोजेक्ट में लिखे जाते हैं, और रन पर `--apply` उन्हें तुरंत लिख देता है।
- प्रोवाइडर, मॉडल और effort ऐप की सेटिंग्स से आते हैं, या `--provider`, `--model` और `--effort` से। कुंजी प्रोवाइडर के अपने एनवायरनमेंट वेरिएबल से आती है, जैसे `ANTHROPIC_API_KEY`, या ऐप के एन्क्रिप्टेड स्टोर से।
- `--json` रन खत्म होने पर एक नतीजा छापता है, और `--events` काम के दौरान हर घटना के लिए एक JSON लाइन जोड़ता है।

### Oleafly बंद करने के बाद भी रिसर्च टास्क चालू रखें

किसी [रिसर्च टास्क](/docs/research-tasks/) को **Keep running when Oleafly is closed** चिह्नित करें। जब आप बाहर निकलते हैं, एक छोटा बैकग्राउंड हेल्पर उन टास्क को सँभाल लेता है और उनके प्रयोग चलते रहते हैं। जिस चरण को आपकी मंज़ूरी चाहिए, वह टास्क को रोक देता है और एक नोटिफ़िकेशन भेजता है। जब आप Oleafly दोबारा खोलते हैं, वह टास्क वापस ले लेता है और दिखाता है कि क्या हुआ। इसे बंद करें, या साइन इन करते समय हेल्पर शुरू करें, **Settings → Research → Background tasks** में। `oleafly daemon status` दिखाता है कि हेल्पर क्या कर रहा है।

## कमांड संदर्भ

हर कमांड अपने विकल्प `--help` से समझाता है। पूरा संदर्भ रिपॉज़िटरी में है: [docs/cli.md](https://github.com/Oleafly/Oleafly/blob/main/docs/cli.md)।

### प्रोजेक्ट और बिल्ड

| कमांड | क्या करता है |
|---|---|
| `oleafly open` | किसी फ़ोल्डर को ऐप में खोलता है (मौजूदा के लिए `oleafly .`) |
| `oleafly init` | मौजूदा फ़ोल्डर को प्रोजेक्ट बनाता है |
| `oleafly new` | प्रोजेक्ट बनाता है, नाम देने पर टेम्पलेट से |
| `oleafly templates` | टेम्पलेट सूचीबद्ध करता है और किसी एक को दिखाता है |
| `oleafly build` | प्रोजेक्ट बिल्ड करता है |
| `oleafly watch` | हर सेव पर दोबारा बिल्ड करता है |
| `oleafly clean` | बिल्ड आउटपुट हटाता है |
| `oleafly log` | पिछले बिल्ड का लॉग या उसकी समस्याएँ दिखाता है |
| `oleafly doctor` | इंजन, ऐप और आपका सेटअप जाँचता है |
| `oleafly version` | संस्करण और इस्तेमाल हो रहे इंजन दिखाता है |
| `oleafly project info` | प्रोजेक्ट की सेटिंग्स दिखाता है |
| `oleafly projects list` | ऐप के प्रोजेक्ट सूचीबद्ध करता है |
| `oleafly config` | प्रोजेक्ट और ऐप की सेटिंग्स पढ़ता और सेट करता है |

### लेखन और संदर्भ

| कमांड | क्या करता है |
|---|---|
| `oleafly cite` | DOI, arXiv id, ISBN या PubMed id के लिए BibTeX छापता है; `--add` उसे ग्रंथसूची में जोड़ता है |
| `oleafly literature` | OpenAlex, Semantic Scholar, Crossref, arXiv और PubMed में खोजता है |
| `oleafly bib check` | ऐसी प्रविष्टियाँ ढूँढता है जो किसी असली रिकॉर्ड से मेल नहीं खातीं |
| `oleafly bib clean` | साइटेशन कुंजियाँ ठीक करता है और डुप्लिकेट हटाता है; `--apply` बदलाव लिख देता है |
| `oleafly stats` | शब्द, हेडिंग, फ़िगर और समीकरण गिनता है |
| `oleafly synctex` | सोर्स की किसी लाइन को PDF से जोड़ता है और वापस |
| `oleafly export` | दस्तावेज़ को Word, HTML, Markdown, EPUB और अन्य में एक्सपोर्ट करता है |
| `oleafly convert` | एक फ़ाइल को दूसरे फ़ॉर्मैट में बदलता है |
| `oleafly typst` | Typst संस्करण सूचीबद्ध, इंस्टॉल और हटाता है |
| `oleafly checkpoint` | ऐप के चेकपॉइंट सूचीबद्ध करता है, उनकी तुलना करता है और उनकी प्रति बनाता है |

### एजेंट और ऑटोमेशन

| कमांड | क्या करता है |
|---|---|
| `oleafly context` | किसी व्यक्ति या एजेंट के लिए प्रोजेक्ट का नक्शा बनाता है |
| `oleafly mcp` | MCP सर्वर चलाता है; `mcp config` किसी क्लाइंट को सेट अप करता है |
| `oleafly skills` | स्किलें सूचीबद्ध करता है और बताता है कि वे कहाँ हैं |
| `oleafly ask` | प्रोजेक्ट के बारे में सवाल का जवाब देता है |
| `oleafly agent` | किसी काम पर Oleafly एजेंट चलाता है |
| `oleafly daemon` | वह हेल्पर चलाता और नियंत्रित करता है जो टास्क चालू रखता है |

### जाँचें

| कमांड | क्या करता है |
|---|---|
| `oleafly check` | Preflight जाँचें चलाता है |
| `oleafly lint` | LaTeX, BibTeX, स्पेलिंग और ग्रामर की जाँचें चलाता है |

### अकाउंट और सिंक

| कमांड | क्या करता है |
|---|---|
| `oleafly auth` | ऑनलाइन LaTeX सेवाओं, Oleafly सर्वर और Git होस्ट में साइन इन कराता है |
| `oleafly remote` | ऑनलाइन प्रोजेक्ट इम्पोर्ट, लिंक और सिंक करता है |
| `oleafly server` | Oleafly सर्वर के साथ काम करता है: प्रोजेक्ट, शेयरिंग, सदस्य, कमेंट |

### शेल और मदद

| कमांड | क्या करता है |
|---|---|
| `oleafly completions` | bash, zsh, fish, PowerShell या elvish के लिए शेल कंप्लीशन छापता है |
| `oleafly man` | मैनुअल पेज छापता है |
| `oleafly help exit-codes` | एग्ज़िट कोड समझाता है |

### हर कमांड के विकल्प

| विकल्प | क्या करता है |
|---|---|
| `-C` के बाद एक पाथ | कमांड को किसी दूसरे प्रोजेक्ट फ़ोल्डर पर चलाता है |
| `--json` | एक JSON नतीजा छापता है |
| `--events` | नतीजे से पहले प्रगति JSON लाइनों के रूप में छापता है |
| `--quiet` | केवल नतीजा छापता है |
| `--log` | कंपाइलर लॉग `none`, `tail` या `full` दिखाता है |
| `--no-input` | कभी कोई सवाल नहीं पूछता |
| `--color` | रंग `auto`, `always` या `never` इस्तेमाल करता है |

## स्क्रिप्ट के लिए आउटपुट

### JSON आउटपुट

`--json` के साथ हर कमांड एक JSON ऑब्जेक्ट छापता है: `schema_version`, `ok`, `command`, कमांड के अपने फ़ील्ड और `warnings`। जब कोई कमांड विफल होता है, तो `error` में एक `kind`, एक स्थिर `code` और एक `message` होता है। जब मदद करे, तब उसमें `hint`, `details`, और `"retryable": true` भी होता है, अगर दोबारा कोशिश करना काम कर सकता हो। किसी फ़ील्ड पर भरोसा करने से पहले `schema_version` जाँचें।

```json
{
  "schema_version": 1,
  "type": "result",
  "ok": false,
  "command": "remote sync",
  "error": {
    "kind": "conflict",
    "code": "remote.conflicts",
    "message": "2 files changed both here and online.",
    "hint": "Pick a side with --resolve PATH=local or --resolve PATH=remote, then sync again.",
    "details": { "conflicts": ["main.tex", "refs.bib"] }
  },
  "warnings": []
}
```

`--events` नतीजे से पहले हर प्रगति घटना के लिए एक JSON लाइन जोड़ता है।

### एग्ज़िट कोड

`oleafly help exit-codes` वही तालिका छापता है।

| कोड | मतलब |
|---|---|
| 0 | यह काम कर गया |
| 1 | Oleafly के भीतर कुछ गड़बड़ हुई |
| 2 | कमांड का गलत उपयोग हुआ, या आगे बढ़ने के लिए उसे `--yes` चाहिए |
| 3 | प्रोजेक्ट गायब या अमान्य है, या कोई पाथ उसके बाहर इशारा करता है |
| 4 | जिस टूल या Oleafly ऐप की ज़रूरत है, वह इंस्टॉल नहीं है |
| 5 | बिल्ड विफल हुआ |
| 6 | आपको साइन इन करना होगा |
| 7 | नेटवर्क विफल हुआ |
| 8 | प्रोजेक्ट को कोई और थामे हुए है, या सिंक में टकराव हैं |
| 9 | किसी जाँच को समस्याएँ मिलीं |
| 130 | आपने Ctrl+C दबाया |

### सवाल, रंग और लॉग

टर्मिनल के बिना कमांड कभी कोई सवाल नहीं पूछता। `--no-input` भी सवाल बंद कर देता है, और `CI` वेरिएबल भी; जिस कमांड को हाँ चाहिए, वह तब एग्ज़िट कोड 2 के साथ विफल होता है और `--yes` माँगता है। `NO_COLOR` या `--color never` रंग बंद कर देता है। जो पाथ प्रोजेक्ट से बाहर जाएँगे, उन्हें मना कर दिया जाता है।

### एनवायरनमेंट वेरिएबल

| वेरिएबल | उपयोग |
|---|---|
| `OLEAFLY_DATA_DIR` | Oleafly का डेटा फ़ोल्डर, जब वह `~/.oleafly` न हो |
| `OLEAFLY_TECTONIC`, `OLEAFLY_LATEXMK`, `OLEAFLY_TYPST`, `OLEAFLY_PANDOC` | Oleafly को मिले कंपाइलर की जगह इस्तेमाल होने वाला कंपाइलर |
| `OLEAFLY_APP` | वह Oleafly ऐप जिसे `oleafly open` शुरू करता है |
| `OLEAFLY_ONLINE_GIT_TOKEN` | ऑनलाइन LaTeX सेवा का Git टोकन, जो सहेजे हुए टोकन की जगह इस्तेमाल होता है |
| `OLEAFLY_CLI` | Oleafly उन प्रोग्रामों के लिए सेट करता है जिन्हें वह शुरू करता है: कमांड का पूरा पाथ |
| `CI` | सेट होने पर कमांड कभी कोई सवाल नहीं पूछता |
| `NO_COLOR` | सेट होने पर आउटपुट में रंग नहीं होता |

## समस्या निवारण

| आप क्या देखते हैं | क्या आज़माएँ |
|---|---|
| `oleafly` नहीं मिलता | नया टर्मिनल खोलें। फिर Windows पर `Get-Command oleafly` या macOS और Linux पर `command -v oleafly` से जाँचें, और Settings जो लाइन दिखाता है उसे अपनी शेल प्रोफ़ाइल में जोड़ें |
| `oleafly doctor` किसी इंजन के गायब होने की रिपोर्ट देता है | उसे उस कमांड से इंस्टॉल करें जो doctor छापता है, या प्रोजेक्ट को एक बार ऐप में खोलें |
| कोई MCP क्लाइंट सर्वर शुरू नहीं कर पाता | कॉन्फ़िगर किया कमांड टर्मिनल में चलाएँ, `oleafly mcp config` से मिला पूरा पाथ इस्तेमाल करें, और `oleafly doctor` चलाएँ |
| एग्ज़िट कोड 6 | `oleafly auth status` चलाएँ, फिर दोबारा साइन इन करें |
| सिंक के दौरान एग्ज़िट कोड 8 | सिंक को दोबारा चलाएँ, और जिन फ़ाइलों की सूची मिले उनमें से हर एक के लिए `--resolve` दें |
| macOS पर, Settings "Move Oleafly to your Applications folder first" कहता है | ऐप को ले जाएँ, उसे Applications से खोलें, फिर **Install** चुनें |

## संबंधित पेज

- [Typst प्रोजेक्ट](/docs/typst/#build-from-the-command-line)
- [MCP से कनेक्ट करें](/docs/mcp/)
- [CLI एजेंट](/docs/cli-agents/)
- [Preflight जाँचें](/docs/preflight/)
- [रिसर्च टास्क](/docs/research-tasks/)
