<?php

namespace App\Console;

use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use App\Console\Commands\ImportLegacyUsers;
use App\Console\Commands\ImportCategories;
use App\Console\Commands\MigrateFeaturedWorks;
use App\Console\Commands\BackfillArtworkEmbeddingsCommand;
use App\Console\Commands\BackfillArtworkVectorIndexCommand;
use App\Console\Commands\IndexArtworkVectorsCommand;
use App\Console\Commands\SearchArtworkVectorsCommand;
use App\Console\Commands\AggregateSimilarArtworkAnalyticsCommand;
use App\Console\Commands\AcademyCoursesSyncFoundationsCommand;
use App\Console\Commands\AggregateFeedAnalyticsCommand;
use App\Console\Commands\AggregateTagInteractionAnalyticsCommand;
use App\Console\Commands\SeedTagInteractionDemoCommand;
use App\Console\Commands\EvaluateFeedWeightsCommand;
use App\Console\Commands\AiTagArtworksCommand;
use App\Console\Commands\GenerateArtworkAiSuggestionsCommand;
use App\Console\Commands\SyncCountriesCommand;
use App\Console\Commands\CompareFeedAbCommand;
use App\Console\Commands\DispatchCollectionMaintenanceCommand;
use App\Console\Commands\RecalculateTrendingCommand;
use App\Console\Commands\RecalculateRankingsCommand;
use App\Console\Commands\MetricsSnapshotHourlyCommand;
use App\Console\Commands\RecalculateHeatCommand;
use App\Uploads\Commands\CleanupUploadsCommand;
use App\Console\Commands\NormalizeArtworkSlugsCommand;
use App\Console\Commands\PublishScheduledArtworksCommand;
use App\Console\Commands\PublishScheduledNewsCommand;
use App\Console\Commands\PublishScheduledNovaCardsCommand;
use App\Console\Commands\BuildSitemapsCommand;
use App\Console\Commands\BuildWorldWebStoryAssetsCommand;
use App\Console\Commands\ListSitemapReleasesCommand;
use App\Console\Commands\GenerateWorldWebStoriesCommand;
use App\Console\Commands\PublishSitemapsCommand;
use App\Console\Commands\RollbackSitemapReleaseCommand;
use App\Console\Commands\SyncCollectionLifecycleCommand;
use App\Console\Commands\ValidateWorldWebStoriesCommand;
use App\Console\Commands\ValidateSitemapsCommand;
use App\Console\Commands\AuditArtworkDownloadFilesCommand;
use App\Console\Commands\InspectArtworkOriginalCommand;
use App\Console\Commands\ZipUnsupportedArtworkOriginalsCommand;
use App\Console\Commands\SendTestMail;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array<int, class-string>
     */
    protected $commands = [
        ImportLegacyUsers::class,
        \App\Console\Commands\EnforceUsernamePolicy::class,
        ImportCategories::class,
        MigrateFeaturedWorks::class,
        \App\Console\Commands\AvatarsMigrate::class,
        	\App\Console\Commands\AvatarsBulkUpdate::class,
        \App\Console\Commands\ResetAllUserPasswords::class,
        CleanupUploadsCommand::class,
        BuildSitemapsCommand::class,
        GenerateWorldWebStoriesCommand::class,
        BuildWorldWebStoryAssetsCommand::class,
        ValidateWorldWebStoriesCommand::class,
        PublishSitemapsCommand::class,
        ListSitemapReleasesCommand::class,
        RollbackSitemapReleaseCommand::class,
        NormalizeArtworkSlugsCommand::class,
        PublishScheduledArtworksCommand::class,
        PublishScheduledNewsCommand::class,
        PublishScheduledNovaCardsCommand::class,
        SyncCollectionLifecycleCommand::class,
        ValidateSitemapsCommand::class,
        AuditArtworkDownloadFilesCommand::class,
        InspectArtworkOriginalCommand::class,
        ZipUnsupportedArtworkOriginalsCommand::class,
        SendTestMail::class,
        DispatchCollectionMaintenanceCommand::class,
        AcademyCoursesSyncFoundationsCommand::class,
        BackfillArtworkEmbeddingsCommand::class,
        BackfillArtworkVectorIndexCommand::class,
        IndexArtworkVectorsCommand::class,
        SearchArtworkVectorsCommand::class,
        AggregateSimilarArtworkAnalyticsCommand::class,
        AggregateFeedAnalyticsCommand::class,
        AggregateTagInteractionAnalyticsCommand::class,
        SeedTagInteractionDemoCommand::class,
        EvaluateFeedWeightsCommand::class,
        CompareFeedAbCommand::class,
        AiTagArtworksCommand::class,
        GenerateArtworkAiSuggestionsCommand::class,
        SyncCountriesCommand::class,
        \App\Console\Commands\AuditMissingMigratedUsersCommand::class,
        \App\Console\Commands\MigrateFollows::class,
        RecalculateTrendingCommand::class,
        RecalculateRankingsCommand::class,
        MetricsSnapshotHourlyCommand::class,
        RecalculateHeatCommand::class,
        \App\Console\Commands\RebuildCreatorErasCommand::class,
        \App\Console\Commands\AuditOrphanedArtworksCommand::class,
        \App\Console\Commands\FlagLegacyUsersForMigrationCommand::class,
        \App\Console\Commands\ExportLegacyPasswordsCommand::class,
        \App\Console\Commands\HashLegacyPlainPasswordsCommand::class,
        \App\Console\Commands\GenerateAiBiographyCommand::class,
        \App\Console\Commands\InspectAiBiographyCommand::class,
        \App\Console\Commands\ReviewQueueAiBiographyCommand::class,
        \App\Console\Commands\ValidateAiBiographyCommand::class,
    ];

    /**
     * Define the application's command schedule.
     */
    protected function schedule(\Illuminate\Console\Scheduling\Schedule $schedule): void
    {
        // The active runtime schedule lives in routes/console.php via bootstrap/app.php.
        // Keep the kernel empty so recurring work is not registered twice.
    }

    /**
     * Register the commands for the application.
     */
    protected function commands(): void
    {
        $this->load(__DIR__ . '/Commands');

        require base_path('routes/console.php');
    }
}
