इस प्रोजेक्ट के बारे में

# Gremlins Gremlins एक Rust CLI टूल है जो बैकग्राउंड कोडिंग एजेंट (जिन्हें "gremlins" कहा जाता है) लॉन्च करता है ताकि वे पूरे सॉफ़्टवेयर डेवलपमेंट चक्र को स्वायत्त रूप से निष्पादित कर सकें: plan → implement → review-code → address-code। किसी लक्ष्य या GitHub इश्यू को देखते हुए, एक gremlin बिना किसी मानवीय हस्तक्षेप के एंड-टू-एंड चलता है, आर्टिफैक्ट्स को प्रति-उपयोगकर्ता स्टेट डायरेक्टरी में लिखता है और वैकल्पिक रूप से एक pull request खोलता है। एक फ्लीट मैनेजर चल रहे, रुके हुए और समाप्त gremlins को ट्रैक करता है, और stop, land, और close जैसे ऑपरेशन प्रदान करता है। **स्थिति:** बिल्कुल नया और सक्रिय रूप से विकसित। अपरिष्कृत किनारों, स्ट्रीम टाइमआउट, और समानांतर gremlins से कभी-कभार merge conflicts की अपेक्षा करें। ## मुख्य विशेषताएँ - **स्वायत्त पाइपलाइन:** मानवीय हस्तक्षेप के बिना plan, implement, review, और address-code चरणों को चलाता है। - **फ्लीट प्रबंधन:** CLI सबकमांड के माध्यम से gremlins को ट्रैक, stop, land, close, और साफ़ करें। - **मल्टी-रेपो समर्थन:** विभिन्न रिपॉज़िटरी से gremlins लॉन्च करें; स्टेट प्रति gremlin अलग रहती है। - **क्यू सिस्टम:** क्यू किए गए gremlin लॉन्च को add, list, run, requeue, और clear करें। - **समानांतर निष्पादन:** fan-out/fan-in सेमांटिक्स के साथ कई review या अन्य चरणों को एक साथ चलाएँ। - **आर्टिफैक्ट बाइंडिंग:** URI (file, git, opaque) और interpolation के माध्यम से चरणों के बीच डेटा पास करें। - **अनुकूलन योग्य परिभाषाएँ:** पुन: प्रयोज्य पैटर्न, prompts, और client overrides के साथ YAML-आधारित स्टेज परिभाषाएँ। - **GitHub एकीकरण:** PR खोलें, Copilot reviews का अनुरोध करें, CI checks की प्रतीक्षा करें, और `gh` CLI के माध्यम से merge करें। ## CLI सबकमांड - `launch <name>` — परिभाषा नाम से एक बैकग्राउंड gremlin शुरू करें। - `resume` — किसी मौजूदा gremlin को उसके रिकॉर्ड किए गए चरण से फिर से spawn करें। - `stop` — चल रहे gremlin को SIGTERM भेजें। - `land` — समाप्त gremlin को वर्तमान ब्रांच पर land करें। - `rm` — किसी gremlin की स्टेट डायरेक्टरी और worktree हटाएँ। - `close` — किसी gremlin को closed के रूप में चिह्नित करें। - `log` — gremlin की लॉग फ़ाइल को tail करें। - `ack` / `skip` — मानवीय इनपुट की प्रतीक्षा कर रहे gremlin को acknowledge या skip करें। - `queue` — लॉन्च क्यू प्रबंधित करें (add, list, run, requeue, clear, set-state, stop)। - `prompt-for-assistant` — assistant setup prompt प्रिंट करें। - `artifacts` — आर्टिफैक्ट keys और bindings का निरीक्षण करें। - `clean` — समाप्त gremlin स्टेट डायरेक्टरियों को साफ़ करें। ## कॉन्फ़िगरेशन Gremlins स्टेज के साथ YAML परिभाषाएँ उपयोग करता है। मुख्य कॉन्फ़िगरेशन तत्वों में शामिल हैं: - **`default_client`:** आवश्यक `provider:model` स्ट्रिंग (जैसे, `xai:grok-4`)। - **`base_ref`:** worktrees को ब्रांच करने के लिए Git ref (डिफ़ॉल्ट `current`)। - **`github_integration`:** `gh` CLI एकीकरण सक्षम करता है। - **`bootstrap`:** CLI source flags, launch commands, प्रति-worktree commands, और artifact bindings। - **`prompts` / `prompt_dir`:** नामित prompt map और prompt resolution के लिए डायरेक्टरी। - **`stage-definitions`:** पुन: प्रयोज्य नामित स्टेज पैटर्न। - **`land`:** landing के लिए कस्टम exec स्टेज (जैसे, `gh pr merge`)। - **`stages`:** स्टेज या समानांतर समूहों की क्रमबद्ध सूची। ### स्टेज प्रकार **Primitives:** `agent`, `exec`, `loop`, `parallel`, `sequence`। **Recipes:** पूर्वनिर्धारित YAML स्टेज जैसे `plan`, `plan-gh`, `implement`, `verify`, `github-open-pr`, `github-push-to-pr-branch`, `github-request-copilot-review`, `github-wait-copilot`, `github-wait-ci`। ### समानांतर समूह `type: parallel` और `body:` सूची के साथ sibling स्टेज को एक साथ चलाएँ। `max_concurrent`, `cancel_on_error`, और `error_policy` (any/all) का समर्थन करता है। ### आर्टिफैक्ट बाइंडिंग स्टेज URI के माध्यम से आर्टिफैक्ट को bind और interpolate कर सकते हैं: - `file://session/<name>` — Session artifact फ़ाइल। - `git://ref/<name>` — Git ref नाम। - `git://commit/<sha>` — Commit SHA। - `git://range/<base>..<head>` — Commit range/log। - `opaque://pr/<n>` — Opaque PR identifier। ## इंस्टॉलेशन `gh` (GitHub CLI) और `git` की आवश्यकता है। `cargo build` से बिल्ड करें। Make targets में `test`, `rust-test`, `rust-fmt`, `rust-fmt-check`, `rust-clippy`, और `check` शामिल हैं। ## उदाहरण ```sh gremlins launch local # bundled local.yaml gremlins launch gh # bundled gh.yaml gremlins launch gh --plan '#42' --wait ``` प्रोजेक्ट-लोकल परिभाषाएँ `.gremlins/<name>.yaml` के माध्यम से bundled परिभाषाओं को override कर सकती हैं। ## उपयोग के मामले - GitHub इश्यू से नियमित कोड परिवर्तनों को स्वचालित करना। - विभिन्न मॉडलों या फोकस के साथ समानांतर कोड समीक्षाएँ चलाना। - रिपॉज़िटरी में कई स्वायत्त कोडिंग एजेंट प्रबंधित करना। - CI/CD और GitHub वर्कफ़्लो (PR निर्माण, Copilot समीक्षाएँ, CI checks) के साथ एकीकरण।