/ mock-email-export.js
mock-email-export.js
  1  #!/usr/bin/env node
  2  
  3  /**
  4   * Mock Email Export Script
  5   *
  6   * Simulates a conversation ending and triggers email export with test data.
  7   * This allows quick iteration on email generation without running a full video call.
  8   *
  9   * Usage: node mock-email-export.js
 10   */
 11  
 12  const mockInvocations = [
 13    {
 14      dreamUUID: '550e8400-e29b-41d4-a716-446655440000',
 15      nodeName: 'InterBrain',
 16      timestamp: new Date(),
 17      githubRepoUrl: 'github.com/ProjectLiminality/InterBrain'
 18    },
 19    {
 20      dreamUUID: 'test-uuid-1',
 21      nodeName: 'TestNode1',
 22      timestamp: new Date(),
 23      radicleId: 'rad:z4SmnVEi6cBjjSScqqG541pZkbFDP'
 24    },
 25    {
 26      dreamUUID: 'test-uuid-2',
 27      nodeName: 'TestNode2',
 28      timestamp: new Date(),
 29      radicleId: 'rad:zWyXQGs2bqjAbSgjAuNdkWq1bQjG'
 30    }
 31  ];
 32  
 33  const senderDid = 'did:key:z6MksAEMTumQbRK1dvFqt7Xt5YHMRPsmhhS2jfhxzbsDUWX5';
 34  const senderName = 'InterfaceGuy';
 35  
 36  console.log('📧 Mock Email Export Data');
 37  console.log('==========================');
 38  console.log('');
 39  console.log('Sender:', senderName);
 40  console.log('DID:', senderDid);
 41  console.log('');
 42  console.log('Invoked Nodes:');
 43  mockInvocations.forEach((inv, i) => {
 44    console.log(`${i + 1}. ${inv.nodeName}`);
 45    if (inv.radicleId) console.log(`   Radicle: ${inv.radicleId}`);
 46    if (inv.githubRepoUrl) console.log(`   GitHub: ${inv.githubRepoUrl}`);
 47  });
 48  console.log('');
 49  
 50  // Generate the URIs
 51  const vaultName = 'DreamVault';
 52  
 53  // Individual clone links
 54  console.log('Individual Clone Links:');
 55  console.log('');
 56  
 57  // InterBrain with collaboration handshake
 58  const interbrainUri = `obsidian://interbrain-clone?repo=github.com/ProjectLiminality/InterBrain&senderDid=${encodeURIComponent(senderDid)}&senderName=${encodeURIComponent(senderName)}`;
 59  console.log(`1. InterBrain:`);
 60  console.log(`   ${interbrainUri}`);
 61  console.log('');
 62  
 63  // Radicle nodes with collaboration handshake
 64  mockInvocations.forEach((inv, i) => {
 65    if (inv.radicleId) {
 66      const uri = `obsidian://interbrain-clone?id=${inv.radicleId}&senderDid=${encodeURIComponent(senderDid)}&senderName=${encodeURIComponent(senderName)}`;
 67      console.log(`${i + 2}. ${inv.nodeName}:`);
 68      console.log(`   ${uri}`);
 69      console.log('');
 70    }
 71  });
 72  
 73  // Batch clone link (all identifiers)
 74  const allIds = mockInvocations.map(inv => inv.radicleId || inv.githubRepoUrl).filter(Boolean);
 75  const batchUri = `obsidian://interbrain-clone-batch?ids=${encodeURIComponent(allIds.join(','))}&senderDid=${encodeURIComponent(senderDid)}&senderName=${encodeURIComponent(senderName)}`;
 76  console.log('Batch Clone Link (all nodes):');
 77  console.log(`   ${batchUri}`);
 78  console.log('');
 79  
 80  // Install script links
 81  console.log('Install Script Links:');
 82  console.log('');
 83  
 84  // Conservative install (just InterBrain + Alice's identity)
 85  const conservativeInstallUri = `obsidian://interbrain-clone?repo=github.com/ProjectLiminality/InterBrain&senderDid=${encodeURIComponent(senderDid)}&senderName=${encodeURIComponent(senderName)}`;
 86  const conservativeInstall = `curl -fsSL https://raw.githubusercontent.com/ProjectLiminality/InterBrain/main/install.sh | bash -s -- --uri "${conservativeInstallUri}"`;
 87  console.log('Conservative Install (InterBrain + sender connection):');
 88  console.log(conservativeInstall);
 89  console.log('');
 90  
 91  // Full install (all shared nodes)
 92  const fullInstall = `curl -fsSL https://raw.githubusercontent.com/ProjectLiminality/InterBrain/main/install.sh | bash -s -- --uri "${batchUri}"`;
 93  console.log('Full Install (all shared DreamNodes):');
 94  console.log(fullInstall);
 95  console.log('');
 96  
 97  console.log('==========================');
 98  console.log('✅ Mock data generated successfully');
 99  console.log('');
100  console.log('To test email generation:');
101  console.log('1. Copy one of the install commands above');
102  console.log('2. The email service should include these in the footer');
103  console.log('3. Test by running a mock conversation end in Obsidian');