Metadata-Version: 2.4
Name: lazarus-cms
Version: 5.15.0
Summary: AI-Powered CMS that builds websites from a chat prompt
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: flask>=3.0
Requires-Dist: requests>=2.31
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: tomli>=1.1.0; python_version < "3.11" and extra == "dev"
Dynamic: license-file

# Lazarus CMS

یک CMS مبتنی بر هوش مصنوعی که از روی یک پرامپت چت، وب‌سایت کامل تولید می‌کند.

## معماری

لازاروس توضیحات کاربر را مثل یک کامپایلر پردازش می‌کند:

```
پرامپت چت → Proposal → Blueprint → ISA (۲۷ opcode) → برنامهٔ ASM → اجراکنندهٔ فایل‌به‌فایل → سایت خروجی
```

- `engine/` — کامپایلر ISA، اسمبلر، موتورهای proposal/blueprint، پروفایل‌های معماری
- `modules/` — ماشین حالت گفتگو (Session)، اجراکننده (Executor)، سیستم تعمیر (Repair)، صف کارها (Jobs)
- `web/` — رابط Flask با CSRF، rate-limit و مدیریت تنظیمات

## مدل اعتماد (WEBCLI-09)

این محصول برای **یک اپراتور واحدِ قابل اعتماد** طراحی شده است. در معماری وجود ندارد و وجودش هدف نیست:

- حساب ادمین فقط یکی است؛ هیچ مفهوم user/tenant/owner در session، job، history، config و دایرکتوری خروجی وجود ندارد.
- همهٔ state در سطح پردازه/home مشترک است: هر نشست احراز‌هویت‌شده به کل history، همهٔ jobها (poll و stop) و کل config دسترسی دارد.

بنابراین **instance را بین کاربران یا تیم‌ها به اشتراک نگذارید** و آن را خصوصی نگه دارید (loopback، یا reverse proxy با TLS برای یک اپراتور). اشتراک‌گذاری با یک principal غیرقابل‌اعتماد، confidentiality و integrity را فوراً می‌شکند — این یک limitation مستند است، نه یک باگ قابل‌فیکس با یک فلگ. جداسازی واقعی چندکاربره/چند-tenant نیازمند تغییر طراحی (identity پایدار، RBAC، namespace مستقل برای config/key/memory/output و `owner_id` روی jobها) است.

## اجرا

```bash
pip install -e .          # نصب
lazarus                   # اجرای سرور روی http://127.0.0.1:5000
lazarus --host 0.0.0.0 --port 8080 --expose-insecure   # ریسک HTTP خام را می‌پذیرد
```

اتصال غیر-loopback بدون `--expose-insecure` رد می‌شود: سرور داخلی TLS ندارد و کوکی نشست بدون `Secure` سفر می‌کند. قرارداد پشتیبانی‌شده برای production، loopback + reverse proxy با TLS است (در آن حالت کوکی `Secure` و هدر HSTS خودکار فعال می‌شوند).

اولین اجرا setup ادمین را نشان می‌دهد؛ مدل API (مثلاً GLM) را در تنظیمات وارد کنید و از صفحهٔ چت سایت بسازید.

## تست‌ها

```bash
pip install -e ".[dev]"
pytest
```

تست‌ها کاملاً آفلاین با یک مدل stub اجرا می‌شوند؛ هیچ کلید API لازم نیست.

## حالت‌های build

- `standard` — ساخت کامل با بازبینی انسانی در هر مرحله
- `quick` — مسیر سریع‌تر با تعداد فراخوانی کمتر، مناسب تکرارهای توسعه

## وضعیت

نسخهٔ ۵٫۱۵٫۰ (نسخهٔ مرجع همیشه `lazarus.__version__` است — pyproject از همان می‌خواند). شناخته‌شده‌ترین نقاط ضعف فعلی (مستند در گزارش بازبینی فنی):

- اجرای زندهٔ کامل «پرامپت تا سایت» هنوز روی سخت‌افزار واقعی تثبیت نشده است
- حلقهٔ repair در برابر خطاهای آبشاری (چند فایل خراب هم‌زمان) محدودیت بودجه دارد

## کار تیمی

- [CONTRIBUTING.md](CONTRIBUTING.md) — چرخهٔ کار برنچ/PR، پیام کامیت، قوانین توسعه
- [docs/REVIEW_PLAN.md](docs/REVIEW_PLAN.md) — نقشهٔ بازبینی عمیق چهارنفرهٔ کل کد (فاز فعلی پروژه)

قانون فعلی: همهٔ تغییرها از طریق برنچ + Pull Request؛ `main` مستقیم پوش نمی‌شود.
