منصوبے کے بارے میں

claude-print، Claude Code کے انٹرایکٹو ٹرمینل UI (TUI) کے گرد ایک کمانڈ لائن ریپر ہے۔ اس کا مقصد واضح اور محدود ہے: Anthropic ہیڈ لیس موڈ (`claude -p` یا SDK/pipe راستہ) کو ایک علیحدہ Agent SDK کریڈٹ پول کے ذریعے بھیجتا ہے، جبکہ صرف انٹرایکٹو TUI کو لامحدود سبسکرپشن کے تحت بل کیا جاتا ہے۔ README کے مطابق، بلنگ کا راستہ `claude` بائنری کے اندر ایک `isatty` چیک کے ذریعے طے کیا جاتا ہے — TTY آؤٹ پٹ سیشن کو `cc_entrypoint=cli` کے طور پر ٹیگ کرتا ہے، جبکہ پائپ اسے `cc_entrypoint=sdk-cli` کے طور پر ٹیگ کرتا ہے۔ claude-print ایک PTY مختص کرتا ہے، اس کے ذریعے TUI کو چلاتا ہے، اور `claude -p` کے آؤٹ پٹ کے ساتھ ہم آہنگ رہنے کی کوشش کرتا ہے جبکہ بلنگ سبسکرپشن کے خلاف کی جاتی ہے۔ README کے مطابق یہ کیسے کام کرتا ہے: - یہ PTY کے تحت `claude` کو شروع کرتا ہے تاکہ `isatty` سچ (true) واپس کرے۔ - یہ ایک بار آنے والے پروجیکٹ ٹرسٹ ڈائیلاگ کی نگرانی کرتا ہے اور خودکار طور پر تصدیقی کی-پریس (keypress) بھیجتا ہے۔ - یہ بریکٹڈ-پیسٹ (bracketed-paste) اسکیپ سیکوئنسز کا استعمال کرتے ہوئے پرامپٹ شامل کرتا ہے، تاکہ TUI اسے شیل تشریح کے بغیر صارف کے ان پٹ کے طور پر تسلیم کرے۔ - یہ ایک عارضی Claude Code Stop ہک انسٹال کرتا ہے جو FIFO میں لکھتا ہے؛ پراسیس اس ریڈ (read) پر بلاک ہو جاتا ہے۔ - یہ JSONL سیشن ٹرانسکرپٹ کو پڑھتا ہے، اسسٹنٹ کی باری نکالتا ہے، اور اسے مطلوبہ فارمیٹ میں جاری کرتا ہے۔ ان پٹ ایک پوزیشنل آرگیومنٹ، `--input-file` یا non-TTY stdin سے آ سکتا ہے؛ یہ آپس میں باہمی طور پر خصوصی (mutually exclusive) ہیں۔ آؤٹ پٹ فارمیٹس `text` (ڈیفالٹ)، `json` (ایک سنگل لائن آبجیکٹ جس میں result، session_id، num_turns، duration_ms، cost_usd، claude_version اور ٹوکن کاؤنٹ کے ساتھ ایک usage آبجیکٹ جیسے فیلڈز ہوتے ہیں) اور `stream-json` (ٹرانسکرپٹ ایونٹس کا ریئل ٹائم JSONL ری پلے) ہیں۔ دستاویزی جھنڈوں (flags) میں `--model`، `--max-turns`، `--allowedTools`/`--disallowedTools`، `--dangerously-skip-permissions`، ٹائم آؤٹ کے کئی آپشنز (wall-clock, first-output, stream-json, Stop hook)، `--claude-binary`، `--config`، `--no-inherit-hooks`، `--verbose`، `--check`، `--version` اور `--help` شامل ہیں۔ کامیابی (0)، اسسٹنٹ کی غلطی (1)، اندرونی غلطی (2)، ان پٹ غلطی (4)، ٹائم آؤٹ (124) اور SIGINT (130) کے لیے ایگزٹ کوڈز دستاویزی ہیں۔ کنفیگریشن اختیاری TOML ہے جو `$XDG_CONFIG_HOME/claude-print/config.toml` یا `~/.config/claude-print/config.toml` پر ہو سکتی ہے، جسے `--config` کے ذریعے تبدیل کیا جا سکتا ہے۔ دستاویزی کیز (keys) `model`، `inherit_hooks`، `max_turns` اور `timeout_secs` ہیں، جو کہ اختیاری ہیں، اور ان کی تصدیق کی جاتی ہے: فائل نہ ہونے پر ڈیفالٹس استعمال ہوتے ہیں، لیکن ناقابلِ خوانی، غلط یا رینج سے باہر کنفیگریشن وارننگ کے بجائے اسٹیٹس 2 کے ساتھ ختم ہو جاتی ہے۔ انسٹالیشن `sh install.sh` کے ذریعے ہے، جو GitHub Releases سے ایک پری-بلٹ اسٹیٹک musl بائنری ڈاؤن لوڈ کرتا ہے، `--check` چلاتا ہے، اور اختیاری طور پر NEEDLE فلیٹ ڈسپچ کے لیے ایک اڈاپٹر YAML کو `~/.needle/agents/` میں کاپی کرتا ہے۔ Cargo کے ساتھ سورس سے بلڈ کرنے کا طریقہ بھی دستاویزی ہے۔ صرف x86_64 Linux سپورٹڈ ہے؛ aarch64/ARM اور Windows ConPTY واضح طور پر اس کے دائرہ کار سے باہر ہیں۔ README میں بلنگ کی تصدیق کے اسکرپٹس بھی دستاویزی ہیں جو `entrypoint` فیلڈ کے لیے تازہ ترین ٹرانسکرپٹ کا معائنہ کرتے ہیں اور ایک روزانہ کینری سروس/ٹائمر موجود ہے۔ بیان کردہ حدود: صرف Linux PTY ایلوکیشن، `claude` بائنری کا پہلے سے انسٹال اور مستند (authenticated) ہونا ضروری ہے، فی کال صرف ایک پرامپٹ (ملٹی ٹرن سیشن موڈ نہیں)، اور براہ راست HTTP کال کے مقابلے میں تقریباً 2-5 سیکنڈز کی اسٹارٹ اپ لیٹنسی۔ ایک اہم آپریشنل ضرورت یہ ہے کہ `HOME` ایک غیر خالی، موجود اور لکھنے کے قابل ڈائریکٹری پر سیٹ ہونا چاہیے؛ یہ ٹول جان بوجھ کر `/root` کا اندازہ نہیں لگاتا یا passwd ڈیٹا بیس سے رجوع نہیں کرتا، اور موجودہ بلڈز سیشن اسٹارٹ اپ، `--check` اور `--version` سے پہلے اس معاہدے کو نافذ کرتے ہیں۔ ٹربل شوٹنگ نوٹس میں غائب `/dev/ptmx`، Stop ہکس کا نہ چلنا، اور ٹرانسکرپٹ ریس کنڈیشنز شامل ہیں۔