عن المشروع

Launchstack هو محرك TypeScript لبناء تطبيقات أصلية بالذكاء الاصطناعي، يُشحن مع تطبيق مرجعي Next.js يوضح كيفية تكامل الأجزاء. يغطي المحرك الاستيعاب، OCR، RAG، الرسم المعرفي، تجريدات LLM والمهام الخلفية، منظمًا كحزم متعددة الطبقات خلف منافذ مصنفة. هيكل المستودع المستودع هو مساحة عمل pnpm، وليس تطبيقًا بحد ذاته؛ أوامر المستوى الجذر محدودة بـ lint وtypecheck وformat وسكربتات Changesets، ويجب استهداف أوامر الحزم باستخدام --filter. apps/web هو مضيف Next.js (واجهة المستخدم، المصادقة، قبول الأوامر، القراءات المتزامنة). apps/worker هو منسق سير العمل الدائم الذي يستهلك صندوق استيعاب ويستضيف المهام الخلفية. apps/landing هو موقع التسويق العام المنفصل وليس جزءًا من عمليات النشر ذاتية الاستضافة. يعيش المحرك في packages/protocol وevidence وapplication وadapters، مع packages/core كواجهة توافق فوقها، وpackages/features تحتوي على ميزات عمودية. services/ يحتوي على خدمات حوسبة غير مساحية (محول مستندات Node، بالإضافة إلى خدمات نسخ Python وتحرير المستندات). البنية Core يكشف منافذ يربطها المضيف؛ تعتمد الميزات فقط على تلك المنافذ ولا تصل أبدًا إلى التطبيق أو الإطار. يمتلك المضيف البيئة والمصادقة والتوجيه وينفذ منافذ مثل التخزين (S3)، توزيع المهام (Inngest)، الاعتمادات وRAG. createEngine(config) يفتح تجمع قاعدة البيانات ويسجل الفتحات؛ يتم تكوين عدة أنظمة فرعية عبر استدعاءات تسجيل منفصلة. تُقرأ الفتحات بتكاسل، لذا يجب ضبطها قبل أول استخدام. تُخزن حالة المحرك على globalThis، مما يحمي من إعادة تقييم HMR في Next.js ولكنه يعني محركًا واحدًا لكل عملية. يعلن ESLint حدود الاستيراد core/features/host ويفرضها CI؛ لا تقرأ حزم المحرك process.env. التشغيل المتطلبات هي Node 20+ وpnpm 10.15.1. Docker Compose هو المسار الموصى به، مع حزمة خفيفة وملف OCR يضيف Docling؛ تغطي أهداف make عمليات التشغيل والسجلات والإيقاف ومسح الحجم down-clean. بدون Docker، تحتاج إلى Postgres مع امتداد pgvector، ثم تشغيل الترحيلات، وبذر اختياري، وخادم تطوير Next.js، والعامل، واختياريًا واجهة Inngest للتطوير. يقبل خادم الويب التطويري التحميلات لكنه لا يعالج شيئًا، لذا يجب تشغيل العامل بجانبه أو تبقى المستندات في قائمة الانتظار. DATABASE_URL وBETTER_AUTH_SECRET مطلوبان للتشغيل. تكوين الدردشة تصل الدردشة إلى نقطة نهاية واحدة تنفذ بروتوكول OpenAI chat-completions، افتراضيًا إلى نقطة نهاية Google Gemini المتوافقة مع OpenAI عبر GOOGLE_AI_API_KEY. تُصل المزودات الأخرى عن طريق ضبط CHAT_BASE_URL واختياريًا CHAT_API_KEY؛ المتغيرات الخاصة بالمورد مثل OPENAI_API_KEY أو OLLAMA_BASE_URL لا تكوين الدردشة. يُعلن النموذج الذي يتعامل مع الدردشة العامة والاستخراج والاستدلال والصور في ملف YAML مع إعدادات مسبقة ومسارات؛ لا يُستنتج السلوك من معرفات النماذج، والمسارات المتخصصة تفشل مغلقة. تكوين الدردشة مستقل عن التضمينات وOCR والنسخ وإعادة الترتيب وتحويل النص إلى كلام. قدرات التطبيق المرجعي يُظهر التطبيق مصادقة طرف أول بأدوار لكل مساحة عمل، وصول على مستوى المجلد، دعوات وسجل تدقيق؛ تحميل مستندات مع OCR اختياري عبر عدة مزودات؛ PostgreSQL مع استرجاع دلالي pgvector؛ دردشة ذكاء اصطناعي مع حمايات تشمل مرشح PII وتأريض وبوابة ثقة؛ تحليل تنبؤي للمستندات (ثمانية أنواع مستندات محددة، مع قبول المحقق الحالي للعقود والمالية والتقنية والامتثال والعامة)؛ خط تسويق لـ Reddit وX وLinkedIn وBluesky؛ مهام خلفية مدعومة بـ Inngest؛ وتتبع اختياري بـ LangSmith. مصادر الاستيعاب يقرأ الخط صادرات من Notion وGoogle Docs/Sheets وGoogle Drive Takeout وSlack وGitHub بدون OAuth، بجانب محولات PDF وDOCX وPPTX وXLSX وMarkdown وHTML والنص والصور من الدرجة الأولى. ملاحظة موثقة: ZipAdapter يتخطى محولات JSON والصور للإدخالات داخل الأرشيف، لذا فإن تصدير Slack كـ ZIP من JSON لا ينتج صفحات. الاستضافة الذاتية والحالة النشرات ذاتية الاستضافة ما لم يكن DEPLOYMENT_MODE=cloud؛ يُسجل الاستخدام لكن لا يُقيَّد، لا تُحمَّل تتبع أو أصول CDN، وأول تسجيل يصبح مالك مساحة العمل. حزم المحرك لم تُنشر بعد على npm؛ حتى إصدار Changesets الأول، يُستهلك المحرك بتشغيل المستودع. المشروع مرخص Apache-2.0 ويرحب بالمساهمات، مع قضية واحدة لكل PR وChangesets لتغييرات المحرك.