133 lines
5.5 KiB
Markdown
133 lines
5.5 KiB
Markdown
# aBaiAutoplus Minimal Packaging (2026-07-30)
|
||
|
||
## Rule
|
||
|
||
When user asks for "архив с авторегом ChatGPT" or "только то что нужно для регистрации", package ONLY the minimal deployable runtime. Do NOT include: tmp_versions/, mail-lists/, conol_github/, velokey/, sepa/, proxy-scripts/, telegram_exports/, tools/, or individual scripts. Result: ~1.4MB (not 34MB).
|
||
|
||
## Required Modules for Minimal Runtime
|
||
|
||
These are the modules aBaiAutoplus imports at startup. Missing any = `ModuleNotFoundError`.
|
||
|
||
```
|
||
aBaiAutoplus/
|
||
├── main.py # Entry point (required)
|
||
├── gateway.py # Gateway service (required)
|
||
├── requirements.txt # Dependencies
|
||
├── .env # Environment config
|
||
├── .env.example # Reference
|
||
├── account_manager.db # SQLite with accounts + captcha keys
|
||
│
|
||
├── application/ # Business logic layer (14 files)
|
||
├── domain/ # Domain models (5 files)
|
||
├── infrastructure/ # Provider definitions, repos (8 files)
|
||
├── codex_auth/ # Codex auth integration (9 files)
|
||
│
|
||
├── providers/ # ALL providers (NOT just captcha+mailbox!)
|
||
│ ├── registry.py # Loads ALL providers at startup
|
||
│ ├── __init__.py
|
||
│ ├── captcha/ # rucaptcha.py, twocaptcha.py, etc.
|
||
│ ├── mailbox/ # imap_pool.py, api_mailbox.py, etc.
|
||
│ └── proxy/ # Proxy providers (3 files)
|
||
│
|
||
├── platforms/ # ALL platforms (NOT just chatgpt!)
|
||
│ ├── chatgpt/ # Target platform
|
||
│ ├── cursor/ # registry.py imports this
|
||
│ └── kiro/ # registry.py imports this
|
||
│
|
||
├── core/ # Core runtime (executors, registry, etc.)
|
||
├── services/ # solver_manager, task_runtime, turnstile
|
||
├── api/ # FastAPI route handlers
|
||
├── data/ # IMAP pool state + other runtime data
|
||
└── customer_portal_api/ # Portal integration
|
||
```
|
||
|
||
**Pitfall**: Copying only `platforms/chatgpt/` fails — `core/registry.py` does `importlib.import_module(f"platforms.{name}.plugin")` for ALL platforms. Same for `providers/` — `providers/registry.py` must exist.
|
||
|
||
**Pitfall**: Copying only `providers/captcha/` and `providers/mailbox/` fails — `main.py` imports `providers.registry`.
|
||
|
||
## Exact Build Recipe
|
||
|
||
```python
|
||
import os, shutil
|
||
|
||
SRC = r"C:\Users\User\Desktop\_PROJECTS\oai-register\aBaiAutoplus"
|
||
DST = r"C:\Users\User\Desktop\GPT-AUTOREG\aBaiAutoplus"
|
||
|
||
# 1. Remove old
|
||
if os.path.exists(DST):
|
||
shutil.rmtree(DST)
|
||
|
||
# 2. Copy entire providers/ and platforms/ (registry.py loads all)
|
||
shutil.copytree(os.path.join(SRC, 'providers'), os.path.join(DST, 'providers'),
|
||
ignore=shutil.ignore_patterns('__pycache__', '*.pyc'))
|
||
shutil.copytree(os.path.join(SRC, 'platforms'), os.path.join(DST, 'platforms'),
|
||
ignore=shutil.ignore_patterns('__pycache__', '*.pyc'))
|
||
|
||
# 3. Copy required directories
|
||
for d in ['application', 'domain', 'infrastructure', 'codex_auth', 'core',
|
||
'services', 'api', 'data', 'customer_portal_api']:
|
||
s = os.path.join(SRC, d)
|
||
if os.path.isdir(s):
|
||
shutil.copytree(s, os.path.join(DST, d),
|
||
ignore=shutil.ignore_patterns('__pycache__', '*.pyc'))
|
||
|
||
# 4. Copy root files
|
||
for f in os.listdir(SRC):
|
||
if f.endswith('.py') or f in ('.env', '.env.example', 'requirements.txt',
|
||
'account_manager.db', 'start_with_go_gateway.bat',
|
||
'start_with_go_gateway.ps1'):
|
||
src_f = os.path.join(SRC, f)
|
||
if os.path.isfile(src_f):
|
||
shutil.copy2(src_f, os.path.join(DST, f))
|
||
|
||
# 5. Copy email pool
|
||
shutil.copy2(
|
||
r"C:\Users\User\Desktop\solenne_de_emails.txt",
|
||
r"C:\Users\User\Desktop\GPT-AUTOREG\emails.txt"
|
||
)
|
||
|
||
# 6. Package
|
||
# tar czf GPT-AUTOREG.tar.gz GPT-AUTOREG/
|
||
```
|
||
|
||
## Verification Before Handover
|
||
|
||
```bash
|
||
# 1. Start server
|
||
cd GPT-AUTOREG/aBaiAutoplus && python -u main.py &
|
||
sleep 6
|
||
|
||
# 2. Health check
|
||
curl -s http://localhost:8000/api/health
|
||
# Must return: {"ok":true}
|
||
|
||
# 3. Test registration (just one account to prove it reaches OpenAI)
|
||
curl -s -X POST http://localhost:8000/api/tasks/register \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"count":1,"concurrency":1,"executor_type":"protocol","captcha_solver":"auto","extra":{"mail_provider":"imap_pool","identity_provider":"mailbox"}}'
|
||
|
||
# 4. Poll task — must show status "running" (reaches OpenAI even if rejected)
|
||
# Rejections (invalid_auth_step, account_deactivated) = system works, OpenAI's side
|
||
```
|
||
|
||
## Common Failure Trail
|
||
|
||
| Error | Missing Module |
|
||
|---|---|
|
||
| `ModuleNotFoundError: No module named 'application'` | Copy `application/` |
|
||
| `ModuleNotFoundError: No module named 'providers.registry'` | Copy entire `providers/` (not just captcha+mailbox) |
|
||
| `ModuleNotFoundError: No module named 'platforms.cursor'` | Copy entire `platforms/` (not just chatgpt) |
|
||
| `ModuleNotFoundError: No module named 'domain'` | Copy `domain/` |
|
||
| Server starts, health=ok, tasks run | ✅ Done |
|
||
|
||
## Archive Size Reference
|
||
|
||
```
|
||
Full "everything" archive: 34 MB (381 files)
|
||
Minimal ChatGPT autoreg: 1.4 MB (306 files, ~221 aBaiAutoplus + emails)
|
||
```
|
||
|
||
## Add pointer to skill
|
||
|
||
Wait — the skill already has 84 pitfalls. Adding #47 doesn't break anything, but the old #47 (truncated keys) is now #48. The curator handles renumbering. Better to not worry about number collisions — just reference by path.
|