Metadata-Version: 2.4
Name: lazarus-cms
Version: 5.10.3
Summary: AI-Powered CMS that builds websites from a chat prompt
License: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: flask>=3.0
Requires-Dist: requests>=2.31
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"

# 🔧 LAZARUS — AI-Powered CMS

## 🎯 چیه؟

لازاروس یک CMS است که از روی یک توضیح فارسی یا انگلیسی، **یک پروژهٔ کامل
Flask + React + SQLite** می‌سازد — نه یک صفحهٔ ساده، بلکه یک درخت پروژهٔ واقعی با
بک‌اند، فرانت‌اند، مایگریشن و پنل ادمین.

کار مثل یک کامپایلر انجام می‌شود، نه مثل یک پرامپت بزرگ:

```
توضیح کاربر → پروپوزال → بلوپرینت (طراحی شیءگرا) → کامپایل به دستورالعمل‌ها
                                                          ↓
                       پروژهٔ ساخته‌شده ← اجرا: هر دستور یک فراخوانی API
```

هر مرحله روی دیسک ذخیره می‌شود، پس اگر وسط کار قطع شد، ادامه فقط هزینهٔ
باقی‌مانده را می‌دهد.

## 📦 نصب

```bash
pip install lazarus-cms
```

## 🚀 شروع

```bash
lazarus
```

بار اول یک wizard اجرا می‌شود و آدرس API و مدل را می‌پرسد. لازاروس با **هر API
سازگار با OpenAI** کار می‌کند: OpenCode Zen، OpenAI، Anthropic، DeepSeek و بقیه.

بعد در `/admin/chat` بنویسید چه سایتی می‌خواهید. لازاروس بین هر مرحله از شما
تأیید می‌گیرد — پروپوزال، بلوپرینت، برنامه — و تا تأیید نگرفته چیزی خرج نمی‌کند.

## 🏗️ معماری

```
lazarus/
├── core/       ← config, memory
├── engine/     ← موتور: هفت مرحله، مستقل از وب
│   ├── intake.py            دسته‌بندی پیام: گفتگو یا درخواست ساخت؟
│   ├── proposal_engine.py   توضیح → پروپوزال ساختاریافته
│   ├── blueprint_engine.py  پروپوزال → مدل شیءگرا (کلاس، متد، رابطه)
│   ├── isa.py               مجموعه دستورالعمل‌ها و گرامر آدرس‌ها
│   ├── compiler_engine.py   بلوپرینت → برنامه (آفلاین، بدون API)
│   ├── assembler.py         یک دستور → پرامپت آمادهٔ ارسال
│   ├── editor.py            نوشتن، خواندن، پاک کردن فایل‌ها با پشتیبان
│   └── profiles/            پروفایل هدف: flask_react_sqlite
├── modules/    ← لایهٔ CMS: موتور را اجرا می‌کند
│   ├── session.py           ماشین حالت گفتگو
│   ├── executor.py          حلقهٔ اجرای دستورها (VM)
│   ├── jobs.py              رجیستری thread پس‌زمینه
│   ├── projects.py          چیدمان ~/.lazarus/projects/<slug>/
│   └── toolchain.py         venv، pip، npm، build
└── web/        ← Flask و قالب‌ها
```

**چرا کامپایلر و نه یک پرامپت بزرگ؟** چون یک مدل نمی‌تواند پنجاه‌وهشت فایل
سازگار را در یک جواب بنویسد. کامپایلر بلوپرینت را به دستورهای تک‌فایلی می‌شکند،
اسمبلر برای هرکدام دقیقاً همان زمینه‌ای را می‌فرستد که لازم دارد، و بعد از هر
فایل یک بررسی آفلاین انجام می‌شود — پس خطا همان‌جا پیدا می‌شود، نه شصت فراخوانی
بعد.

برنامهٔ مرجع: **۸۱ دستور، ۷۵ فراخوانی API، ۵۸ فایل، ۶ ایست‌بازرسی.**

## 🧪 تست

```bash
python -m pytest -q
```

و تست‌های خود موتور، که جداگانه‌اند:

```bash
cd src && python -m lazarus.engine.test_runner --offline
```

هر دو **بدون هیچ فراخوانی API** اجرا می‌شوند: کل مسیر ساخت با یک مدل ساختگی
تست می‌شود که هر فایل را از روی همان assertions می‌سازد که executor بررسی
می‌کند.

## 🔑 امنیت

کلید API هیچ‌وقت در کد یا لاگ نوشته نمی‌شود. از محیط یا از
`~/.lazarus/config.json` خوانده می‌شود، و `describe_endpoint()` عمداً فقط آدرس و
نام مدل را برمی‌گرداند.

## 📄 License

MIT
