#!/usr/bin/env tsx
/**
 * Check chain execution groups status
 */

import { createClient } from '@supabase/supabase-js';
import * as dotenv from 'dotenv';
import * as path from 'path';
import * as crypto from 'crypto';

// Load environment variables
dotenv.config({ path: path.resolve(process.cwd(), '.env') });

async function main() {
  const url = process.env.PIT_SUPABASE_URL;
  const serviceKey = process.env.PIT_SUPABASE_SERVICE_ROLE_KEY;
  const repoKey = process.env.PIT_REPO_KEY;

  if (!url || !serviceKey || !repoKey) {
    throw new Error('Missing required environment variables');
  }

  const supabaseClient = createClient(url, serviceKey);
  
  // Get repo_id
  const keyHash = crypto.createHash('sha256').update(repoKey).digest('hex');
  const { data: keyData, error: keyError } = await supabaseClient
    .from('repo_keys')
    .select('repo_id')
    .eq('key_hash', keyHash)
    .single();

  if (keyError || !keyData) {
    throw new Error('Invalid repository key');
  }

  const repoId = keyData.repo_id;
  console.log('Repository ID:', repoId);

  // Get all chain groups
  const { data: groups, error } = await supabaseClient
    .from('chain_execution_groups')
    .select('*')
    .eq('repo_id', repoId)
    .order('created_at', { ascending: false })
    .limit(10);

  if (error) {
    console.error('Error fetching chain groups:', error);
    return;
  }

  console.log(`\nFound ${groups?.length || 0} chain execution groups:\n`);
  
  for (const group of groups || []) {
    console.log(`Chain: ${group.chain_id}`);
    console.log(`  Group ID: ${group.group_id}`);
    console.log(`  Status: ${group.status}`);
    console.log(`  Process ID: ${group.process_id}`);
    console.log(`  Start: ${group.start_time}`);
    console.log(`  End: ${group.end_time || 'N/A'}`);
    console.log(`  Executions: ${group.total_executions}`);
    console.log(`  Tokens: ${group.total_tokens}`);
    console.log();
  }
}

main().catch(console.error);