OpportunitiesEntities
Docs
    Ring Platform

    Decentralized Self-building Future

    Sign In
    Entities
    Opportunities
    Store
    Docs
    Platform Concepts
    RING EconomySonoratek LLCGlobal ImpactAI Meets Web3
    Get Started
    Quick StartCalculatorRoadmap
    Privacy|Contact
    v1.104.17|Sonoratek LLC

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)
    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Generative Gallery

    Generative Gallery is Ring Platform’s shared media field for NFT create, multi-vendor product forms, and File Cabinet detail-panel Image/Video chat. Operators upload images or generate ImageConductor variations, enrich prompts with Ghost-write (TextConductor + web search), and keep history in a hidden tool chat (genmedia:…) that never clutters Messages.

    Use Founder / Developer tabs in the docs sidebar to filter this page. Founders see operator value and surfaces; developers see modules, billing, and verified paths.

    Where it ships

    SurfaceRole
    NFT create wizardCollection cover + mint media via GenerativeMediaField (scope: 'nft')
    Vendor / admin product formProduct image gallery (scope: 'product'); Agent Knowledge Research is a separate WebConductor path — see Store
    File Cabinet detail panelImage chat / Video chat → GenerativeMediaEditorFsModal (scope: 'cabinet'); sibling save under source parent
    Product detail galleryPrefers derivatives.thumb / webpUrl for strip; lightbox uses original
    News cards / hero / OGpickImageSrc → card / hero / og; blur LQIP when present
    AvataravatarThumb (sync_thumb) preferred over photoURL original
    Chat image bubblesMessageAttachment.derivatives.thumb preferred over original URL
    NFT mint + listingsOff-chain Metaplex JSON (image, optional animation_url, properties.files)

    SSOT module: features/generative-media/. Scopes: nft | product | cabinet | editor.

    Why this matters for your clone

    • One field, several desks — store catalog photos, member NFT art, and cabinet enhance/enlive share one generative UX.
    • Credit-first spend — Ghost-write and image generation debit platform credits through WalletConductor before the turn runs.
    • Clean inbox — generation history lives in a hidden product-tool conversation (generative_gallery / genmedia:).
    • Research vs Generate — Store Research (WebConductor) harvests citation-backed web photos into File Cabinet …/alt; Generative Gallery creates or enhances pixels. Gallery attach from research stays Use in gallery (explicit).
    • Cabinet siblings — enhance/enlive saves next to the source file as {name}-enhanced-… or {name}-enlive-… so originals stay intact.

    NFT Marketplace

    Member create/mint/list — Generative Gallery is the media path.

    Multi-Vendor Store

    Product forms + Agent Knowledge Research (WebConductor) + Use in gallery.

    Architecture

    Credit-first generative turns run through server actions → features/generative-media/service.ts → ImageConductor / TextConductor, with optional WebP derive and FCM/in-app notify when generation completes in the background.

    Generative gallery image turn

    Cabinet entry path (Phase G — shipped)

    StepDetail
    UI triggerfile-cabinet-detail-panel.tsx — Image chat / Video chat on image files when canGenerate
    Desktop hostfile-cabinet-desktop.tsx opens GenerativeMediaEditorFsModal with scope="cabinet"
    Save actionsaveGeneratedMediaToDesktopAction in app/_actions/file-cabinet.ts

    Related documentation

    Related documentation

    Real-Time Messaging

    Depends-on: Conversation.type vs metadata.kind — tool chats reuse the product channel.

    NFT Exhibition Marketplace

    Same-workflow: Generative Gallery on member create/mint/list.

    Multi-Vendor Store

    Same-workflow: product gallery field plus WebConductor Agent Knowledge Research.

    Ring File Cabinet

    Next-step: detail-panel Image/Video chat and sibling save under parentId.

    Generative Gallery

    Generative Gallery is Ring Platform’s shared media field for NFT create, multi-vendor product forms, and File Cabinet detail-panel Image/Video chat. Operators upload images or generate ImageConductor variations, enrich prompts with Ghost-write (TextConductor + web search), and keep history in a hidden tool chat (genmedia:…) that never clutters Messages.

    Use Founder / Developer tabs in the docs sidebar to filter this page. Founders see operator value and surfaces; developers see modules, billing, and verified paths.

    Where it ships

    SurfaceRole
    NFT create wizardCollection cover + mint media via GenerativeMediaField (scope: 'nft')
    Vendor / admin product formProduct image gallery (scope: 'product'); Agent Knowledge Research is a separate WebConductor path — see Store
    File Cabinet detail panelImage chat / Video chat → GenerativeMediaEditorFsModal (scope: 'cabinet'); sibling save under source parent
    Product detail galleryPrefers derivatives.thumb / webpUrl for strip; lightbox uses original
    News cards / hero / OGpickImageSrc → card / hero / og; blur LQIP when present
    AvataravatarThumb (sync_thumb) preferred over photoURL original
    Chat image bubblesMessageAttachment.derivatives.thumb preferred over original URL
    NFT mint + listingsOff-chain Metaplex JSON (image, optional animation_url, properties.files)

    SSOT module: features/generative-media/. Scopes: nft | product | cabinet | editor.

    Why this matters for your clone

    • One field, several desks — store catalog photos, member NFT art, and cabinet enhance/enlive share one generative UX.
    • Credit-first spend — Ghost-write and image generation debit platform credits through WalletConductor before the turn runs.
    • Clean inbox — generation history lives in a hidden product-tool conversation (generative_gallery / genmedia:).
    • Research vs Generate — Store Research (WebConductor) harvests citation-backed web photos into File Cabinet …/alt; Generative Gallery creates or enhances pixels. Gallery attach from research stays Use in gallery (explicit).
    • Cabinet siblings — enhance/enlive saves next to the source file as {name}-enhanced-… or {name}-enlive-… so originals stay intact.

    NFT Marketplace

    Member create/mint/list — Generative Gallery is the media path.

    Multi-Vendor Store

    Product forms + Agent Knowledge Research (WebConductor) + Use in gallery.

    Architecture

    Credit-first generative turns run through server actions → features/generative-media/service.ts → ImageConductor / TextConductor, with optional WebP derive and FCM/in-app notify when generation completes in the background.

    Generative gallery image turn

    Cabinet entry path (Phase G — shipped)

    StepDetail
    UI triggerfile-cabinet-detail-panel.tsx — Image chat / Video chat on image files when canGenerate
    Desktop hostfile-cabinet-desktop.tsx opens GenerativeMediaEditorFsModal with scope="cabinet"
    Save actionsaveGeneratedMediaToDesktopAction in app/_actions/file-cabinet.ts

    Related documentation

    Related documentation

    Real-Time Messaging

    Depends-on: Conversation.type vs metadata.kind — tool chats reuse the product channel.

    NFT Exhibition Marketplace

    Same-workflow: Generative Gallery on member create/mint/list.

    Multi-Vendor Store

    Same-workflow: product gallery field plus WebConductor Agent Knowledge Research.

    Ring File Cabinet

    Next-step: detail-panel Image/Video chat and sibling save under parentId.

    Generative Gallery

    Generative Gallery is Ring Platform’s shared media field for NFT create, multi-vendor product forms, and File Cabinet detail-panel Image/Video chat. Operators upload images or generate ImageConductor variations, enrich prompts with Ghost-write (TextConductor + web search), and keep history in a hidden tool chat (genmedia:…) that never clutters Messages.

    Use Founder / Developer tabs in the docs sidebar to filter this page. Founders see operator value and surfaces; developers see modules, billing, and verified paths.

    Where it ships

    SurfaceRole
    NFT create wizardCollection cover + mint media via GenerativeMediaField (scope: 'nft')
    Vendor / admin product formProduct image gallery (scope: 'product'); Agent Knowledge Research is a separate WebConductor path — see Store
    File Cabinet detail panelImage chat / Video chat → GenerativeMediaEditorFsModal (scope: 'cabinet'); sibling save under source parent
    Product detail galleryPrefers derivatives.thumb / webpUrl for strip; lightbox uses original
    News cards / hero / OGpickImageSrc → card / hero / og; blur LQIP when present
    AvataravatarThumb (sync_thumb) preferred over photoURL original
    Chat image bubblesMessageAttachment.derivatives.thumb preferred over original URL
    NFT mint + listingsOff-chain Metaplex JSON (image, optional animation_url, properties.files)

    SSOT module: features/generative-media/. Scopes: nft | product | cabinet | editor.

    Why this matters for your clone

    • One field, several desks — store catalog photos, member NFT art, and cabinet enhance/enlive share one generative UX.
    • Credit-first spend — Ghost-write and image generation debit platform credits through WalletConductor before the turn runs.
    • Clean inbox — generation history lives in a hidden product-tool conversation (generative_gallery / genmedia:).
    • Research vs Generate — Store Research (WebConductor) harvests citation-backed web photos into File Cabinet …/alt; Generative Gallery creates or enhances pixels. Gallery attach from research stays Use in gallery (explicit).
    • Cabinet siblings — enhance/enlive saves next to the source file as {name}-enhanced-… or {name}-enlive-… so originals stay intact.

    NFT Marketplace

    Member create/mint/list — Generative Gallery is the media path.

    Multi-Vendor Store

    Product forms + Agent Knowledge Research (WebConductor) + Use in gallery.

    Architecture

    Credit-first generative turns run through server actions → features/generative-media/service.ts → ImageConductor / TextConductor, with optional WebP derive and FCM/in-app notify when generation completes in the background.

    Generative gallery image turn

    Cabinet entry path (Phase G — shipped)

    StepDetail
    UI triggerfile-cabinet-detail-panel.tsx — Image chat / Video chat on image files when canGenerate
    Desktop hostfile-cabinet-desktop.tsx opens GenerativeMediaEditorFsModal with scope="cabinet"
    Save actionsaveGeneratedMediaToDesktopAction in app/_actions/file-cabinet.ts

    Related documentation

    Related documentation

    Real-Time Messaging

    Depends-on: Conversation.type vs metadata.kind — tool chats reuse the product channel.

    NFT Exhibition Marketplace

    Same-workflow: Generative Gallery on member create/mint/list.

    Multi-Vendor Store

    Same-workflow: product gallery field plus WebConductor Agent Knowledge Research.

    Ring File Cabinet

    Next-step: detail-panel Image/Video chat and sibling save under parentId.

    File Cabinet

    Detail-panel Image/Video chat entry and sibling save.

    WalletConductor

    spendCredits powers generative billing today.

    Operator checklist

    • Ensure ImageConductor / TextConductor providers are configured.
    • Fund platform credits (GENERATIVE_CREDIT_* optional overrides).
    • Prefer ring_filebase so uploads return a full derivatives map.
    • Train vendors: Upload | Generate on the product form; Research for web harvest; cabinet Image chat for polish.
    • On NFT listings, verify showcase thumbs/animation when creators attach multi-item galleries.

    Typical journeys

    Founder view — Upload, Generate, or Cabinet enhance
    Naming
    {base}-enhanced-{ts}.{ext} for images; {base}-enlive-{ts}.{ext} for video (base from source filename)
    ParentparentId: genSourceNode.parentId — sibling of the source, not a new root dump
    Pipelinecabinet.genmedia.sibling_save in scripts/PIPELINES.md

    Modules

    PathRole
    features/generative-media/types.tsGalleryItem, scopes nft | product | cabinet | editor, buildGenMediaChatKey → genmedia:scope:entity:page:field
    features/generative-media/billing.tsCredit-first WalletConductor.spendCredits + generative_usage ledger
    features/generative-media/service.tsHidden tool chat, upload, Ghost-write, ImageConductor / video turns
    features/generative-media/nft-metadata.tsMetaplex JSON + upload helpers
    features/generative-media/parse-product-images.tsFormData URL gallery for vendor/admin
    features/generative-media/components/generative-media-field.tsxUpload | Generate tabs SSOT widget
    features/generative-media/components/generative-media-editor-fs-modal.tsxFullscreen history + Ghost-write + Use this image
    app/_actions/generative-media.tslistGenMediaMessagesAction, runGenMediaImageAction, runGhostWriteAction, …
    lib/file/media-asset.tspickImageSrc / pickGalleryDisplayUrl display SSOT
    features/chat/services/conversation-service.tsisHiddenToolConversation

    Auth gates (verified)

    1. 1

      Session required — all generative-media server actions call auth(); unauthenticated → Unauthorized.

    2. 2

      NFT scope needs member+ — requireMember = true when scope === 'nft'.

    3. 3

      Product / cabinet scopes — signed-in actor (vendor/admin form or cabinet owner path).

    Billing (credit-first)

    ActionEnv keyDefault credits
    Ghost-writeGENERATIVE_CREDIT_GHOST_WRITE5
    Image genGENERATIVE_CREDIT_IMAGE15
    Video gen (priced; studio polish TBD)GENERATIVE_CREDIT_VIDEO50

    Flow: soft-idempotent on referenceId in generative_usage → balance check → WalletConductor.spendCredits → ledger row.

    Conversation channel reuse

    FieldValue
    type'product'
    metadata.kind'generative_gallery'
    metadata.hiddenFromInboxtrue
    metadata.productId / subjectgenmedia:{scope}:{entity}:{page}:{field}

    Store product-agent chats also use type: 'product' with a real catalog productId and no tool kind — they remain visible in Messages.

    WalletConductor

    Depends-on: credit spend used by generative billing.

    RingFileBase (object storage API)

    Depends-on: object storage + fileId_v_* derivative ladders.

    Generative Images (ImageConductor)

    Deep-dive: lower-level ImageConductor / storage notes.

    File Cabinet

    Detail-panel Image/Video chat entry and sibling save.

    WalletConductor

    spendCredits powers generative billing today.

    Operator checklist

    • Ensure ImageConductor / TextConductor providers are configured.
    • Fund platform credits (GENERATIVE_CREDIT_* optional overrides).
    • Prefer ring_filebase so uploads return a full derivatives map.
    • Train vendors: Upload | Generate on the product form; Research for web harvest; cabinet Image chat for polish.
    • On NFT listings, verify showcase thumbs/animation when creators attach multi-item galleries.

    Typical journeys

    Founder view — Upload, Generate, or Cabinet enhance
    Naming
    {base}-enhanced-{ts}.{ext} for images; {base}-enlive-{ts}.{ext} for video (base from source filename)
    ParentparentId: genSourceNode.parentId — sibling of the source, not a new root dump
    Pipelinecabinet.genmedia.sibling_save in scripts/PIPELINES.md

    Modules

    PathRole
    features/generative-media/types.tsGalleryItem, scopes nft | product | cabinet | editor, buildGenMediaChatKey → genmedia:scope:entity:page:field
    features/generative-media/billing.tsCredit-first WalletConductor.spendCredits + generative_usage ledger
    features/generative-media/service.tsHidden tool chat, upload, Ghost-write, ImageConductor / video turns
    features/generative-media/nft-metadata.tsMetaplex JSON + upload helpers
    features/generative-media/parse-product-images.tsFormData URL gallery for vendor/admin
    features/generative-media/components/generative-media-field.tsxUpload | Generate tabs SSOT widget
    features/generative-media/components/generative-media-editor-fs-modal.tsxFullscreen history + Ghost-write + Use this image
    app/_actions/generative-media.tslistGenMediaMessagesAction, runGenMediaImageAction, runGhostWriteAction, …
    lib/file/media-asset.tspickImageSrc / pickGalleryDisplayUrl display SSOT
    features/chat/services/conversation-service.tsisHiddenToolConversation

    Auth gates (verified)

    1. 1

      Session required — all generative-media server actions call auth(); unauthenticated → Unauthorized.

    2. 2

      NFT scope needs member+ — requireMember = true when scope === 'nft'.

    3. 3

      Product / cabinet scopes — signed-in actor (vendor/admin form or cabinet owner path).

    Billing (credit-first)

    ActionEnv keyDefault credits
    Ghost-writeGENERATIVE_CREDIT_GHOST_WRITE5
    Image genGENERATIVE_CREDIT_IMAGE15
    Video gen (priced; studio polish TBD)GENERATIVE_CREDIT_VIDEO50

    Flow: soft-idempotent on referenceId in generative_usage → balance check → WalletConductor.spendCredits → ledger row.

    Conversation channel reuse

    FieldValue
    type'product'
    metadata.kind'generative_gallery'
    metadata.hiddenFromInboxtrue
    metadata.productId / subjectgenmedia:{scope}:{entity}:{page}:{field}

    Store product-agent chats also use type: 'product' with a real catalog productId and no tool kind — they remain visible in Messages.

    WalletConductor

    Depends-on: credit spend used by generative billing.

    RingFileBase (object storage API)

    Depends-on: object storage + fileId_v_* derivative ladders.

    Generative Images (ImageConductor)

    Deep-dive: lower-level ImageConductor / storage notes.

    File Cabinet

    Detail-panel Image/Video chat entry and sibling save.

    WalletConductor

    spendCredits powers generative billing today.

    Operator checklist

    • Ensure ImageConductor / TextConductor providers are configured.
    • Fund platform credits (GENERATIVE_CREDIT_* optional overrides).
    • Prefer ring_filebase so uploads return a full derivatives map.
    • Train vendors: Upload | Generate on the product form; Research for web harvest; cabinet Image chat for polish.
    • On NFT listings, verify showcase thumbs/animation when creators attach multi-item galleries.

    Typical journeys

    Founder view — Upload, Generate, or Cabinet enhance
    Naming
    {base}-enhanced-{ts}.{ext} for images; {base}-enlive-{ts}.{ext} for video (base from source filename)
    ParentparentId: genSourceNode.parentId — sibling of the source, not a new root dump
    Pipelinecabinet.genmedia.sibling_save in scripts/PIPELINES.md

    Modules

    PathRole
    features/generative-media/types.tsGalleryItem, scopes nft | product | cabinet | editor, buildGenMediaChatKey → genmedia:scope:entity:page:field
    features/generative-media/billing.tsCredit-first WalletConductor.spendCredits + generative_usage ledger
    features/generative-media/service.tsHidden tool chat, upload, Ghost-write, ImageConductor / video turns
    features/generative-media/nft-metadata.tsMetaplex JSON + upload helpers
    features/generative-media/parse-product-images.tsFormData URL gallery for vendor/admin
    features/generative-media/components/generative-media-field.tsxUpload | Generate tabs SSOT widget
    features/generative-media/components/generative-media-editor-fs-modal.tsxFullscreen history + Ghost-write + Use this image
    app/_actions/generative-media.tslistGenMediaMessagesAction, runGenMediaImageAction, runGhostWriteAction, …
    lib/file/media-asset.tspickImageSrc / pickGalleryDisplayUrl display SSOT
    features/chat/services/conversation-service.tsisHiddenToolConversation

    Auth gates (verified)

    1. 1

      Session required — all generative-media server actions call auth(); unauthenticated → Unauthorized.

    2. 2

      NFT scope needs member+ — requireMember = true when scope === 'nft'.

    3. 3

      Product / cabinet scopes — signed-in actor (vendor/admin form or cabinet owner path).

    Billing (credit-first)

    ActionEnv keyDefault credits
    Ghost-writeGENERATIVE_CREDIT_GHOST_WRITE5
    Image genGENERATIVE_CREDIT_IMAGE15
    Video gen (priced; studio polish TBD)GENERATIVE_CREDIT_VIDEO50

    Flow: soft-idempotent on referenceId in generative_usage → balance check → WalletConductor.spendCredits → ledger row.

    Conversation channel reuse

    FieldValue
    type'product'
    metadata.kind'generative_gallery'
    metadata.hiddenFromInboxtrue
    metadata.productId / subjectgenmedia:{scope}:{entity}:{page}:{field}

    Store product-agent chats also use type: 'product' with a real catalog productId and no tool kind — they remain visible in Messages.

    WalletConductor

    Depends-on: credit spend used by generative billing.

    RingFileBase (object storage API)

    Depends-on: object storage + fileId_v_* derivative ladders.

    Generative Images (ImageConductor)

    Deep-dive: lower-level ImageConductor / storage notes.

    1. Docs
    2. /Features
    3. /Generative Gallery

    Updated Aug 3, 20265 min listen

    1. Docs
    2. /Features
    3. /Generative Gallery

    Updated Aug 3, 20265 min listen

    1. Docs
    2. /Features
    3. /Generative Gallery

    Updated Aug 3, 20265 min listen