This commit is contained in:
Raven Scott
2026-05-20 21:02:45 -04:00
parent 1f3f4b24a2
commit 14d0980b4f
734 changed files with 682 additions and 746 deletions
@@ -0,0 +1,61 @@
#!/usr/bin/env bare
// Basic usage example for hyper-p2p-presence
// Run with: bare examples/basic.js or pear run examples/basic.js
const HyperP2PPresence = require('../index.js')
const bareProcess = require('bare-process')
const { setTimeout } = require('bare-timers')
async function runExample() {
console.log('🚀 Starting hyper-p2p-presence example...')
const presence = new HyperP2PPresence({
topic: 'example-presence-demo-2026',
metadata: {
username: 'DemoAgent',
status: 'exploring',
version: '0.1.0'
},
announceInterval: 15000,
expiry: 60000
})
presence.on('ready', () => {
console.log('✅ Presence system ready. Your public key:', presence.getSelf()?.publicKey?.slice(0, 16) + '...')
})
presence.on('peer-joined', (peer) => {
console.log('👋 Peer joined:', peer.metadata.username || peer.publicKey.slice(0, 8), 'online:', peer.online)
})
presence.on('peer-left', (peer) => {
console.log('👋 Peer left:', peer.publicKey.slice(0, 8))
})
presence.on('self-presence', (self) => {
console.log('📡 Self presence updated. Status:', self.metadata.status)
})
await presence.ready()
// Simulate status change after 10 seconds
setTimeout(async () => {
console.log('🔄 Updating metadata...')
await presence.updateMetadata({ status: 'thinking about new modules' })
}, 10000)
// Keep running for demo
console.log('Press Ctrl+C to exit gracefully...')
bareProcess.on('SIGINT', async () => {
console.log('\n🛑 Shutting down presence system...')
await presence.close()
console.log('✅ Clean shutdown complete.')
bareProcess.exit(0)
})
}
runExample().catch(err => {
console.error('Example failed:', err)
bareProcess.exit(1)
})