Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FLEXFORGE — OKX.AI ASP (merged: نصف A + نصف B)

سرویس تولید کارت/پوستر آنچین برای OKX.AI — مدل A2MCP، پرداخت per-call با x402 روی X Layer. ۵ سرویس، یک endpoint.

type قیمت (USDT) ابعاد نیاز به
trade-flex-card 3 1200×675
meme-card 3 1200×675
milestone-certificate 5 1400×990 input_data.address
wallet-identity-poster 9 1000×1250 input_data.address
project-stat-cover 5 1200×630 input_data.token_address

اجرا (لوکال — بدون Chromium و بدون کلید API)

npm install
npm run test:render   # هر ۵ تمپلیت → PNG در ./out
npm run dev           # سرور با X402_DEV_SKIP=1 و رندر wkhtmltoimage

تست فلوی پرداخت:

# بدون پرداخت → 402 استاندارد x402
curl -i -X POST localhost:3000/generate -H 'Content-Type: application/json' \
  -d '{"type":"trade-flex-card","input_data":{"pair":"BTC/USDT","pnl_percent":18.4,"entry_price":60000,"exit_price":71000,"side":"LONG"}}'

# با پرداخت (dev-skip) → عکس
curl -s -X POST localhost:3000/generate -H 'Content-Type: application/json' \
  -H "X-PAYMENT: $(echo '{"test":true}' | base64)" \
  -d '{"type":"meme-card","input_data":{"quote":"gm","author_handle":"@you"}}'

API

  • POST /generate{ type, input_data } → پرداخت x402 → (fetch دیتای آنچین در صورت نیاز) → { image_url }
    • برای سرویس‌های آنچین اگه input_data.stats رو خودت بدی، fetch انجام نمی‌شه (مفید برای دمو/تست بدون کلید).
  • GET /services — کاتالوگ (برای ثبت ASP)
  • GET /leaderboard — تاپ Degen Score ها (مجانی، وایرال؛ نیاز به Redis)
  • GET /health, GET /images/:file

جریان داخلی

POST /generate
  └─ requirePayment (lib/payment/x402-middleware.js — نصف B)
       402 + accepts[] اگر پرداخت نشده / verify+settle با facilitator اگر شده
  └─ inject onchain stats (lib/onchain/* — نصف B، کش Redis، OKX→Etherscan→Covalent)
  └─ templates[type].buildHtml(data)   (هر ۵ تمپلیت)
  └─ render(html, dims)  (lib/render.js — نصف A، Playwright / wkhtmltoimage)
  └─ saveImage → { image_url }

دیپلوی (Railway)

  1. Push به GitHub → Railway → Deploy from GitHub (Dockerfile با Chromium آماده‌ست)
  2. Variables — حداقل این‌ها:
    PUBLIC_BASE_URL=https://<app>.up.railway.app
    X402_PAY_TO=<آدرس Agentic Wallet>
    X402_FACILITATOR_URL=<broker که OKX موقع ثبت ASP می‌ده>
    OKX_API_KEY / OKX_API_SECRET / OKX_API_PASSPHRASE
    UPSTASH_REDIS_REST_URL / UPSTASH_REDIS_REST_TOKEN
    AGENT_HANDLE / AGENT_URL   (بعد از لیست شدن)
    
    تا وقتی facilitator واقعی نداری: X402_DEV_SKIP=1 (⚠️ قبل از go-live حذفش کن — بدونش پرداخت fail-closed هست یعنی عکس مجانی داده نمی‌شه).
  3. کامل‌ترین لیست env در .env.example.

⚠️ عکس‌ها روی دیسک موقت ذخیره می‌شن؛ برای پروداکشن یه Volume به /app/out وصل کن (OUT_DIR=/app/out) یا saveImage رو به R2/S3 سوئیچ کن.

ثبت ASP روی OKX.AI

  1. npx skills add okx/onchainos-skills --yes -g داخل Claude Code
  2. لاگین Agentic Wallet → آدرس رو در X402_PAY_TO بذار
  3. ثبت هر ۵ سرویس با endpoint https://<app>.up.railway.app/generate، قیمت‌ها از جدول بالا / GET /services
  4. Submit برای لیستینگ → AGENT_HANDLE و AGENT_URL رو با مقادیر واقعی پر کن و ری‌دیپلوی (واترمارک همه‌ی عکس‌ها از همینا ساخته می‌شه)

کارهای باقی‌مانده قبل از go-live

  • تست پرداخت واقعی با facilitator/broker OKX (تا الان فقط dev-skip و فرمت استاندارد تست شده)
  • یک run واقعی getWalletStats/getTokenStats با کلید OKX API و تطبیق نام فیلدها در fromOkx()
  • Volume یا R2/S3 برای ماندگاری عکس‌ها
  • AGENT_HANDLE/AGENT_URL بعد از لیست شدن

تست‌های پاس‌شده در مرج

  • ✅ هر ۵ تمپلیت → PNG (ابعاد اختصاصی هر کدوم)
  • ✅ 402 استاندارد از middleware واقعی نصف B (مبلغ atomic درست: poster=9 USDT → "9000000")
  • ✅ paid flow → image_url → دانلود PNG واقعی
  • ✅ بدون کلید API → خطای تمیز "All providers failed" (بدون crash)
  • ✅ بدون Redis → کش حافظه‌ای + leaderboard خالی (بدون crash)
  • ✅ type ناشناخته → 400
  • 🔧 فیکس‌شده در مرج: ترتیب لود ESM در render.js؛ overlap واترمارک با حاشیه در certificate

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages