#!/usr/bin/env node
// Simple verification script to check if all Stripe tools are present in the source
const fs = require('fs');
const path = require('path');
console.log('π Verifying Stripe Tools Registration...\n');
// Read the source file
const sourceFile = path.join(__dirname, 'src', 'index.ts');
const sourceContent = fs.readFileSync(sourceFile, 'utf8');
// Expected modern Stripe tools that should be present
const expectedStripeTools = [
'stripe_create_payment_method',
'stripe_attach_payment_method',
'stripe_list_payment_methods',
'stripe_create_setup_intent',
'stripe_create_payment_link',
'stripe_create_price',
'stripe_create_coupon',
'stripe_create_invoice',
'stripe_finalize_invoice',
'stripe_create_refund',
'stripe_list_disputes',
'stripe_create_transfer',
'stripe_get_balance',
'stripe_list_balance_transactions',
'stripe_list_events',
'stripe_create_account',
'stripe_create_account_link'
];
// Advanced Stripe features
const advancedStripeTools = [
'stripe_create_treasury_financial_account',
'stripe_create_climate_order',
'stripe_create_terminal_connection_token',
'stripe_create_issuing_card',
'stripe_create_app_secret',
'stripe_create_identity_verification_session',
'stripe_create_tax_calculation'
];
// Basic Stripe tools
const basicStripeTools = [
'stripe_create_product',
'stripe_create_customer',
'stripe_create_checkout_session',
'stripe_create_payment_intent',
'stripe_retrieve_customer',
'stripe_update_customer',
'stripe_cancel_subscription',
'list_stripe_products',
'list_stripe_customers',
'list_stripe_subscriptions',
'stripe_handle_webhook',
'sync_stripe_products'
];
// Check for all tools
console.log('π Checking Modern Stripe Tools:');
let presentModern = 0;
expectedStripeTools.forEach(tool => {
const isPresent = sourceContent.includes(`'${tool}'`) || sourceContent.includes(`"${tool}"`);
console.log(` ${isPresent ? 'β
' : 'β'} ${tool}`);
if (isPresent) presentModern++;
});
console.log(`\nπ Modern Tools: ${presentModern}/${expectedStripeTools.length} present\n`);
console.log('π Checking Advanced Stripe Features:');
let presentAdvanced = 0;
advancedStripeTools.forEach(tool => {
const isPresent = sourceContent.includes(`'${tool}'`) || sourceContent.includes(`"${tool}"`);
console.log(` ${isPresent ? 'β
' : 'β'} ${tool}`);
if (isPresent) presentAdvanced++;
});
console.log(`\n㪠Advanced Tools: ${presentAdvanced}/${advancedStripeTools.length} present\n`);
console.log('βοΈ Checking Basic Stripe Tools:');
let presentBasic = 0;
basicStripeTools.forEach(tool => {
const isPresent = sourceContent.includes(`'${tool}'`) || sourceContent.includes(`"${tool}"`);
console.log(` ${isPresent ? 'β
' : 'β'} ${tool}`);
if (isPresent) presentBasic++;
});
console.log(`\nπ Basic Tools: ${presentBasic}/${basicStripeTools.length} present\n`);
// Check for service initialization
const hasStripeInit = sourceContent.includes('this.stripeService = new StripeService');
const hasEmailInit = sourceContent.includes('this.emailService = new EmailService');
console.log('π§ Service Initialization:');
console.log(` ${hasStripeInit ? 'β
' : 'β'} Stripe service initialization`);
console.log(` ${hasEmailInit ? 'β
' : 'β'} Email service initialization`);
// Check for conditional tool registration
const hasStripeCondition = sourceContent.includes('if (this.stripeService)');
console.log(` ${hasStripeCondition ? 'β
' : 'β'} Conditional Stripe tool registration`);
// Count total tools
const allTools = [...expectedStripeTools, ...advancedStripeTools, ...basicStripeTools];
const totalPresent = presentModern + presentAdvanced + presentBasic;
console.log('\nπ Summary:');
console.log(`π Total Stripe Tools Expected: ${allTools.length}`);
console.log(`β
Total Stripe Tools Found: ${totalPresent}`);
console.log(`π Coverage: ${Math.round((totalPresent / allTools.length) * 100)}%`);
// Check .env.example for Stripe configuration
const envFile = path.join(__dirname, '.env.example');
if (fs.existsSync(envFile)) {
const envContent = fs.readFileSync(envFile, 'utf8');
const hasStripeKey = envContent.includes('STRIPE_SECRET_KEY');
console.log(`π Stripe configuration in .env.example: ${hasStripeKey ? 'β
' : 'β'}`);
}
// Final assessment
if (totalPresent >= allTools.length * 0.9) {
console.log('\nπ SUCCESS: Comprehensive Stripe integration detected!');
console.log(' All major Stripe tools are properly registered.');
} else if (totalPresent >= allTools.length * 0.7) {
console.log('\nβ οΈ PARTIAL: Most Stripe tools are present.');
console.log(' Some advanced features may be missing.');
} else {
console.log('\nβ INCOMPLETE: Many Stripe tools are missing.');
console.log(' Stripe integration may not be fully functional.');
}
console.log('\n⨠Verification completed!');