lousho add يثبّت أداة أو مهارة أو قناة أو جدولًا زمنيًا أو خانة ذاكرة في
مجلد وكيل من سجل. السجل مجرد JSON
ثابت: فهرس ومستند لكل عنصر يحمل محتويات ملفاته.
تُنسخ الملفات إلى مشروعك شيفرةً مصدرية تملكها وتستطيع تعديلها. لا يوجد
محمِّل إضافات في وقت التشغيل، ولا يُنفَّذ أو يُستورد أي شيء من السجل
أثناء الإضافة.
لا يوجد سجل مستضاف حتى الآن. وجّه lousho add إلى سجل عبر --registry أو
متغير البيئة LOUSHO_REGISTRY؛ ودون أي منهما يفشل بالخطأ
LOUSHO_CONFIG_INVALID ويبيّن كيف تمرّر سجلًا.
قبل أن يكتب أي شيء، يطبع
lousho add بيان الصلاحيات (manifest)
والملفات التي سيكتبها، ثم يسأل [y/N].
الصيغة
الفهرس هو{ items: [{ name, type, description, url | path }] }. وtype أحد
القيم tool أو skill أو channel أو schedule أو memory. يحدّد url / path موقع
مستند العنصر؛ والمسار النسبي يُحلّ نسبةً إلى موقع الفهرس نفسه.
كل مستند عنصر يكون بهذا الشكل:
index.json:
name وtype في المستند مدخله في الفهرس،
ويتكوّن الاسم من أحرف وأرقام و. و_ و-. المستند الذي لا يطابق
الصيغة يُعطي الخطأ LOUSHO_REGISTRY_INVALID، مع ذكر الحقول المعنية.
بيان الصلاحيات
permissions يصرّح بما يستطيع العنصر فعله، لتقرر قبل
تثبيته. كله اختياري؛ وما يغيب يُعرض بالقيمة “none” / “no”.
البيان هو ما يقول المؤلف إن الشيفرة تفعله. الـ SDK لا يفرضه،
وهو ليس بيئة معزولة: اقرأ الملفات التي يسردها (يعرضها
--dry-run) كما
تقرأ أي اعتمادية قبل تشغيلها.
قواعد الأمان
- كل
files[].pathيجب أن يكون نسبيًا ومطبَّعًا (normalized) وبشرطات مائلة أمامية: لا..، ولا مسار مطلق، ولا حرف قرص (C:)، ولا شرطات مائلة عكسية، ولا مقاطع فارغة أو.. وبعد حلّ الروابط الرمزية (symlinks) يجب أن يبقى داخل مجلد الوكيل، ولا يُكتب أبدًا عبر رابط رمزي إلى هدفه. - يجب أن يكون الملف داخل المجلد الذي يسمح به نوع عنصره:
toolفيtools/، وskillفيskills/<name>/، وchannelفيchannels/، وscheduleفيschedules/، وmemoryفيmemory/. - لا تُستبدل الملفات الموجودة دون
--overwrite. تُفحص كل الملفات قبل كتابة أي منها، فالعنصر المعيب لا يكتب شيئًا. وكل إخفاق من هذه يكونLOUSHO_REGISTRY_UNSAFE_PATHأوLOUSHO_REGISTRY_FILE_EXISTS. - الحد الأقصى للملف 256 KiB وللعنصر 1 MiB؛ ولمستند السجل مليونا حرف.
- لا تُقرأ إلا عناوين
http(s)والمسارات المحلية، بمهلة 15 ثانية لكل عملية جلب (وإلاLOUSHO_REGISTRY_UNREACHABLE). - تُطبع
dependenciesفي صورة سطرnpm install ...لتنفّذه أنت. الأمر لا يثبّت حزمًا أبدًا.