parameters: services: _defaults: autowire: true autoconfigure: true App\: resource: '../src/' exclude: - '../src/Domain/' - '../src/Kernel.php' App\Domain\Article\Repository\ArticleRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineArticleRepository App\Domain\Article\Repository\ArticleTypeRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineArticleTypeRepository App\Domain\Channel\Repository\PlatformRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrinePlatformRepository App\Domain\Order\Repository\CustomerRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineCustomerRepository App\Domain\Order\Repository\OrderRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineOrderRepository App\Domain\Storage\Repository\StoragePathRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineStoragePathRepository App\Domain\Article\Repository\ArticlePhotoRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineArticlePhotoRepository App\Domain\Article\Repository\AttributeValueRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineAttributeValueRepository App\Domain\Channel\Repository\ChannelFieldRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineChannelFieldRepository App\Domain\Channel\Repository\ArticleTypePlatformConfigRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineArticleTypePlatformConfigRepository App\Domain\Channel\Repository\AttributeMappingRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineAttributeMappingRepository App\Application\Storage\StorageManagerInterface: alias: App\Infrastructure\Storage\LocalStorageManager App\Domain\Auth\Repository\UserRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineUserRepository App\Domain\Auth\Repository\ApiKeyRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineApiKeyRepository # Switch between Ollama and Mistral by changing the alias target below App\Infrastructure\AI\OllamaClientInterface: alias: App\Infrastructure\AI\MistralClient App\Infrastructure\AI\OllamaClient: arguments: $ollamaBaseUrl: '%env(OLLAMA_BASE_URL)%' App\Infrastructure\AI\MistralClient: arguments: $mistralApiKey: '%env(MISTRAL_API_KEY)%' $mistralBaseUrl: '%env(MISTRAL_BASE_URL)%' App\Infrastructure\AI\AiConfigService: arguments: $visionModel: '%env(AI_VISION_MODEL)%' $textModel: '%env(AI_TEXT_MODEL)%' $ollamaBaseUrl: '%env(OLLAMA_BASE_URL)%' $mistralBaseUrl: '%env(MISTRAL_BASE_URL)%' $mistralApiKey: '%env(MISTRAL_API_KEY)%' App\Infrastructure\AI\Agent\OllamaVisionAgent: arguments: $model: '%env(AI_VISION_MODEL)%' App\Infrastructure\AI\Agent\SpecsResearchAgent: arguments: $model: '%env(AI_TEXT_MODEL)%' App\Infrastructure\Search\WebSearchInterface: alias: App\Infrastructure\Search\TavilyWebSearch App\Infrastructure\Search\TavilyWebSearch: arguments: $apiKey: '%env(TAVILY_API_KEY)%' App\Infrastructure\AI\Agent\JsonCodingAgent: arguments: $model: '%env(AI_TEXT_MODEL)%' App\Infrastructure\AI\Agent\EbayTextAgent: arguments: $model: '%env(AI_TEXT_MODEL)%' App\Domain\Pipeline\Repository\AIPipelineJobRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineAIPipelineJobRepository App\Domain\AI\Repository\PromptTemplateRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrinePromptTemplateRepository App\Domain\I18n\Repository\TranslationRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineTranslationRepository App\Infrastructure\Console\BackupCommand: arguments: $backupDir: '%kernel.project_dir%/var/backups' $databaseUrl: '%env(DATABASE_URL)%' App\Application\Channel\ChannelAdapterRegistry: arguments: $adapters: !tagged_iterator app.channel_adapter App\Infrastructure\Channel\Ebay\EbayAdapter: tags: ['app.channel_adapter'] App\Infrastructure\Channel\Ebay\EbayOAuthClient: arguments: $clientId: '%env(EBAY_CLIENT_ID)%' $clientSecret: '%env(EBAY_CLIENT_SECRET)%' $oauthBaseUrl: '%env(EBAY_OAUTH_BASE_URL)%' $cache: '@cache.app' App\Infrastructure\Channel\Ebay\EbayInventoryApiClient: arguments: $apiBaseUrl: '%env(EBAY_API_BASE_URL)%' $marketplaceId: '%env(EBAY_MARKETPLACE_ID)%' App\Infrastructure\Channel\Ebay\EbayTaxonomyService: arguments: $apiBaseUrl: '%env(EBAY_API_BASE_URL)%' $marketplaceId: '%env(EBAY_MARKETPLACE_ID)%' $cache: '@cache.app' App\Infrastructure\Channel\Ebay\EbayWebhookVerifier: arguments: $verificationToken: '%env(EBAY_VERIFICATION_TOKEN)%' $endpointUrl: '%env(EBAY_ENDPOINT_URL)%' App\Domain\Order\Repository\InvoiceRepositoryInterface: alias: App\Infrastructure\Persistence\Repository\DoctrineInvoiceRepository App\Infrastructure\Channel\Frappe\FrappeHttpClient: arguments: $baseUrl: '%env(FRAPPE_ERP_BASE_URL)%' $apiKey: '%env(FRAPPE_ERP_API_KEY)%' $apiSecret: '%env(FRAPPE_ERP_API_SECRET)%' App\Infrastructure\Channel\Frappe\FrappeErpAdapter: arguments: $genericItemCode: '%env(FRAPPE_GENERIC_ITEM_CODE)%' App\Application\Order\ErpAdapterInterface: alias: App\Infrastructure\Channel\Frappe\FrappeErpAdapter App\Application\Order\CustomerResolverInterface: alias: App\Infrastructure\Order\CustomerResolver App\Application\Order\InvoiceMailerInterface: alias: App\Infrastructure\Mail\SymfonyInvoiceMailer App\Infrastructure\Mail\SymfonyInvoiceMailer: arguments: $supplierEmail: '%env(SUPPLIER_EMAIL)%' $senderEmail: '%env(SENDER_EMAIL)%' App\Infrastructure\Channel\Ebay\EbayFulfillmentApiClient: arguments: $apiBaseUrl: '%env(EBAY_API_BASE_URL)%'