ویب ایڈمن ایک کھڑکی ہے، حقیقت کا دوسرا ذریعہ نہیں
APX ویب ایڈمن پینل سسٹم کا مرکز نہیں ہے۔
ڈیزائن سخت ہے۔ daemon اسٹیٹ (state) کا مالک ہے۔ ویب UI ایک مقامی کلائنٹ ہے۔ یہ فرق اہمیت رکھتا ہے۔ یہ فیصلہ کرتا ہے کہ حقیقت کہاں موجود ہے اور ڈیٹا کتنا مختلف (drift) ہو سکتا ہے۔
APC پورٹیبل کانٹیکسٹ لیئر فراہم کرتا ہے۔ APX رن ٹائم اور ٹولنگ لیئر فراہم کرتا ہے۔ ویب ایڈمن APX کا حصہ ہے۔ یہ آپ کو براؤزر میں رن ٹائم کا معائنہ کرنے کی اجازت دیتا ہے۔ یہ پروجیکٹ کی حقیقت کی اپنی کوئی کاپی نہیں رکھتا۔
آرکیٹیکچر اس طرح کام کرتا ہے:
- daemon ایک مقامی HTTP سرور چلاتا ہے۔
- ہر سطح (surface) HTTP کے ذریعے daemon سے بات کرتی ہے۔
- ویب ایڈمن daemon کے ذریعے فراہم کیا جاتا ہے۔
- براؤزر daemon سے ایک ٹوکن حاصل کرتا ہے۔
براؤزر کوئی ہم پلہ (peer) ڈیٹا بیس نہیں ہے۔ یہ محض ایک سطح ہے۔ جب ویب پینل حقیقت کا دوسرا ذریعہ بن جاتا ہے، تو یہ ناکام ہو جاتا ہے۔
اسٹیٹ (state) کی دو کاپیاں غلطیوں کا باعث بنتی ہیں:
- CLI ایک چیز لکھتا ہے جبکہ UI کچھ اور دکھاتا ہے۔
- براؤزر سیشن ایک کنفیگریشن (config) میں ترمیم کرتا ہے لیکن daemon پرانا ڈیٹا استعمال کرتا ہے۔
- ری لوڈ کرنے پر ایک پروجیکٹ نظر آتا ہے جبکہ دوسرا ٹیب پرانا (stale) ڈیٹا دکھاتا ہے۔
- UI کی اصلاح کبھی بھی اصل رن ٹائم تک نہیں پہنچ پاتی۔
APX براؤزر کو ہلکا (thin) رکھ کر اس سے بچتا ہے۔ UI، daemon سے پوچھتا ہے۔ daemon، core سے پوچھتا ہے۔ core اصل بیکنگ اسٹور کو پڑھتا یا لکھتا ہے۔ یہ زنجیر سادہ ہے۔ سادہ ہونا اچھا ہے۔
ایک اچھا مقامی پینل تین کام کرتا ہے:
- لائیو اسٹیٹ (live state) دکھانا۔
- ایک چھوٹا ایکشن (action) بھیجنا۔
- ایکشن کے بعد دوبارہ تصدیق (revalidate) کرنا۔
پینل آپ کو پروجیکٹس، ایجنٹس، روٹینز، سیشنز، MCPs اور سیٹنگز براؤز کرنے کی اجازت دیتا ہے۔ یہ سسٹم کا ایک نظارہ (view) ہے، سسٹم کی کوئی الگ شاخ (fork) نہیں ہے۔
نفاذ (implementation) کی تفصیلات اسے مقامی رکھتی ہیں:
- Dev mode Vite استعمال کرتا ہے اور daemon کو پراکسی کرتا ہے۔
- Production، daemon سے بنی ہوئی ایپ فراہم کرتا ہے۔
- Same origin، آتھ (auth) اور روٹنگ کو سادہ رکھتا ہے۔
- براؤزر کو کبھی بھی براہ راست ریپوزٹری (repo) لکھنے کی رسائی کی ضرورت نہیں ہوتی۔
فائدہ بصری نکھار (visual polish) نہیں ہے۔ فائدہ یہ ہے کہ ہر ایکشن ایک ہی بیک اینڈ کے ذریعے حل ہوتا ہے۔
اگر آپ پینل میں کوئی سیٹنگ تبدیل کرتے ہیں، تو پینل وہ تبدیلی daemon کو بھیج دیتا ہے۔ daemon پروجیکٹ اسٹور کو اپ ڈیٹ کرتا ہے۔ اگلا رینڈر (render) اسی حقیقت کے ذریعے پڑھتا ہے جسے CLI پڑھتا ہے۔ ایک سسٹم، کئی سطحیں۔
UI آپ کے پروجیکٹ کو نقصان پہنچائے بغیر غائب ہو سکتا ہے۔ آپ ٹیب بند کر سکتے ہیں یا مشین تبدیل کر سکتے ہیں۔ اسٹیٹ (state) daemon اور .apc/ فولڈر میں رہتی ہے۔
ذہنی ماڈل (mental model) سادہ ہے:
- APC: پروجیکٹ کیا ہے۔
- APX: پروجیکٹ کیسے چلتا ہے۔
- Web admin: اس رن ٹائم کا ایک نظارہ (window) ہے۔
اس حد (boundary) کو صاف رکھیں۔ اسٹیک (stack) قابلِ تبدیلی رہتا ہے۔ براؤزر اختیاری رہتا ہے۔ daemon مستند (authoritative) رہتا ہے۔ پروجیکٹ پورٹیبل رہتا ہے۔
Source: https://dev.to/agentprojectcontext/the-web-admin-is-a-window-not-a-second-source-of-truth-2aip
Optional learning community: https://t.me/GyaanSetuAi