@rookdaemon/agora 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-JUOGKXFN.js +1645 -0
- package/dist/chunk-JUOGKXFN.js.map +1 -0
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +1163 -1137
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1613 -30
- package/dist/index.js +1135 -29
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
- package/dist/cli.d.ts.map +0 -1
- package/dist/config.d.ts +0 -59
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -115
- package/dist/config.js.map +0 -1
- package/dist/discovery/bootstrap.d.ts +0 -32
- package/dist/discovery/bootstrap.d.ts.map +0 -1
- package/dist/discovery/bootstrap.js +0 -36
- package/dist/discovery/bootstrap.js.map +0 -1
- package/dist/discovery/peer-discovery.d.ts +0 -59
- package/dist/discovery/peer-discovery.d.ts.map +0 -1
- package/dist/discovery/peer-discovery.js +0 -108
- package/dist/discovery/peer-discovery.js.map +0 -1
- package/dist/identity/keypair.d.ts +0 -42
- package/dist/identity/keypair.d.ts.map +0 -1
- package/dist/identity/keypair.js +0 -83
- package/dist/identity/keypair.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/message/envelope.d.ts +0 -59
- package/dist/message/envelope.d.ts.map +0 -1
- package/dist/message/envelope.js +0 -83
- package/dist/message/envelope.js.map +0 -1
- package/dist/message/types/paper-discovery.d.ts +0 -28
- package/dist/message/types/paper-discovery.d.ts.map +0 -1
- package/dist/message/types/paper-discovery.js +0 -2
- package/dist/message/types/paper-discovery.js.map +0 -1
- package/dist/message/types/peer-discovery.d.ts +0 -78
- package/dist/message/types/peer-discovery.d.ts.map +0 -1
- package/dist/message/types/peer-discovery.js +0 -90
- package/dist/message/types/peer-discovery.js.map +0 -1
- package/dist/peer/client.d.ts +0 -50
- package/dist/peer/client.d.ts.map +0 -1
- package/dist/peer/client.js +0 -138
- package/dist/peer/client.js.map +0 -1
- package/dist/peer/manager.d.ts +0 -65
- package/dist/peer/manager.d.ts.map +0 -1
- package/dist/peer/manager.js +0 -153
- package/dist/peer/manager.js.map +0 -1
- package/dist/peer/server.d.ts +0 -65
- package/dist/peer/server.d.ts.map +0 -1
- package/dist/peer/server.js +0 -154
- package/dist/peer/server.js.map +0 -1
- package/dist/registry/capability.d.ts +0 -44
- package/dist/registry/capability.d.ts.map +0 -1
- package/dist/registry/capability.js +0 -94
- package/dist/registry/capability.js.map +0 -1
- package/dist/registry/discovery-service.d.ts +0 -64
- package/dist/registry/discovery-service.d.ts.map +0 -1
- package/dist/registry/discovery-service.js +0 -129
- package/dist/registry/discovery-service.js.map +0 -1
- package/dist/registry/messages.d.ts +0 -105
- package/dist/registry/messages.d.ts.map +0 -1
- package/dist/registry/messages.js +0 -2
- package/dist/registry/messages.js.map +0 -1
- package/dist/registry/peer-store.d.ts +0 -57
- package/dist/registry/peer-store.d.ts.map +0 -1
- package/dist/registry/peer-store.js +0 -92
- package/dist/registry/peer-store.js.map +0 -1
- package/dist/registry/peer.d.ts +0 -20
- package/dist/registry/peer.d.ts.map +0 -1
- package/dist/registry/peer.js +0 -2
- package/dist/registry/peer.js.map +0 -1
- package/dist/relay/client.d.ts +0 -112
- package/dist/relay/client.d.ts.map +0 -1
- package/dist/relay/client.js +0 -281
- package/dist/relay/client.js.map +0 -1
- package/dist/relay/jwt-auth.d.ts +0 -40
- package/dist/relay/jwt-auth.d.ts.map +0 -1
- package/dist/relay/jwt-auth.js +0 -109
- package/dist/relay/jwt-auth.js.map +0 -1
- package/dist/relay/message-buffer.d.ts +0 -41
- package/dist/relay/message-buffer.d.ts.map +0 -1
- package/dist/relay/message-buffer.js +0 -53
- package/dist/relay/message-buffer.js.map +0 -1
- package/dist/relay/rest-api.d.ts +0 -68
- package/dist/relay/rest-api.d.ts.map +0 -1
- package/dist/relay/rest-api.js +0 -225
- package/dist/relay/rest-api.js.map +0 -1
- package/dist/relay/run-relay.d.ts +0 -33
- package/dist/relay/run-relay.d.ts.map +0 -1
- package/dist/relay/run-relay.js +0 -57
- package/dist/relay/run-relay.js.map +0 -1
- package/dist/relay/server.d.ts +0 -91
- package/dist/relay/server.d.ts.map +0 -1
- package/dist/relay/server.js +0 -385
- package/dist/relay/server.js.map +0 -1
- package/dist/relay/store.d.ts +0 -19
- package/dist/relay/store.d.ts.map +0 -1
- package/dist/relay/store.js +0 -55
- package/dist/relay/store.js.map +0 -1
- package/dist/relay/types.d.ts +0 -35
- package/dist/relay/types.d.ts.map +0 -1
- package/dist/relay/types.js +0 -2
- package/dist/relay/types.js.map +0 -1
- package/dist/reputation/commit-reveal.d.ts +0 -45
- package/dist/reputation/commit-reveal.d.ts.map +0 -1
- package/dist/reputation/commit-reveal.js +0 -125
- package/dist/reputation/commit-reveal.js.map +0 -1
- package/dist/reputation/scoring.d.ts +0 -31
- package/dist/reputation/scoring.d.ts.map +0 -1
- package/dist/reputation/scoring.js +0 -105
- package/dist/reputation/scoring.js.map +0 -1
- package/dist/reputation/store.d.ts +0 -83
- package/dist/reputation/store.d.ts.map +0 -1
- package/dist/reputation/store.js +0 -202
- package/dist/reputation/store.js.map +0 -1
- package/dist/reputation/types.d.ts +0 -150
- package/dist/reputation/types.d.ts.map +0 -1
- package/dist/reputation/types.js +0 -113
- package/dist/reputation/types.js.map +0 -1
- package/dist/reputation/verification.d.ts +0 -28
- package/dist/reputation/verification.d.ts.map +0 -1
- package/dist/reputation/verification.js +0 -91
- package/dist/reputation/verification.js.map +0 -1
- package/dist/service.d.ts +0 -90
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -176
- package/dist/service.js.map +0 -1
- package/dist/transport/http.d.ts +0 -41
- package/dist/transport/http.d.ts.map +0 -1
- package/dist/transport/http.js +0 -103
- package/dist/transport/http.js.map +0 -1
- package/dist/transport/peer-config.d.ts +0 -38
- package/dist/transport/peer-config.d.ts.map +0 -1
- package/dist/transport/peer-config.js +0 -41
- package/dist/transport/peer-config.js.map +0 -1
- package/dist/transport/relay.d.ts +0 -30
- package/dist/transport/relay.d.ts.map +0 -1
- package/dist/transport/relay.js +0 -85
- package/dist/transport/relay.js.map +0 -1
- package/dist/utils.d.ts +0 -40
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -59
- package/dist/utils.js.map +0 -1
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/peer/server.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { parseArgs } from 'node:util';\nimport { existsSync, mkdirSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\nimport { homedir } from 'node:os';\nimport { loadPeerConfig, savePeerConfig, initPeerConfig } from './transport/peer-config';\nimport { sendToPeer, decodeInboundEnvelope, type PeerConfig } from './transport/http';\nimport { sendViaRelay } from './transport/relay';\nimport type { MessageType } from './message/envelope';\nimport type { AnnouncePayload } from './registry/messages';\nimport { PeerServer } from './peer/server';\nimport { RelayServer } from './relay/server';\nimport { RelayClient } from './relay/client';\nimport { PeerDiscoveryService } from './discovery/peer-discovery';\nimport { getDefaultBootstrapRelay } from './discovery/bootstrap';\nimport { resolveBroadcastName } from './utils';\nimport { ReputationStore } from './reputation/store';\nimport { createVerification } from './reputation/verification';\nimport { createCommit, createReveal, verifyReveal } from './reputation/commit-reveal';\nimport { computeTrustScore } from './reputation/scoring';\n\ninterface CliOptions {\n config?: string;\n pretty?: boolean;\n}\n\n/**\n * Get the config file path from CLI options, environment, or default.\n */\nfunction getConfigPath(options: CliOptions): string {\n if (options.config) {\n return resolve(options.config);\n }\n if (process.env.AGORA_CONFIG) {\n return resolve(process.env.AGORA_CONFIG);\n }\n return resolve(homedir(), '.config', 'agora', 'config.json');\n}\n\n/**\n * Ensure the config directory exists.\n */\nfunction ensureConfigDir(configPath: string): void {\n const dir = dirname(configPath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\n/**\n * Output data as JSON or pretty format.\n */\nfunction output(data: unknown, pretty: boolean): void {\n if (pretty) {\n // Pretty output for humans\n if (typeof data === 'object' && data !== null) {\n for (const [key, value] of Object.entries(data)) {\n if (Array.isArray(value)) {\n console.log(`${key}:`);\n for (const item of value) {\n if (typeof item === 'object' && item !== null) {\n const entries = Object.entries(item);\n console.log(` - ${entries.map(([k, v]) => `${k}: ${v}`).join(', ')}`);\n } else {\n console.log(` - ${item}`);\n }\n }\n } else if (typeof value === 'object' && value !== null) {\n console.log(`${key}:`);\n for (const [k, v] of Object.entries(value)) {\n console.log(` ${k}: ${v}`);\n }\n } else {\n console.log(`${key}: ${value}`);\n }\n }\n } else {\n console.log(data);\n }\n } else {\n // JSON output for programmatic use\n console.log(JSON.stringify(data, null, 2));\n }\n}\n\n/**\n * Handle the `agora init` command.\n */\nfunction handleInit(options: CliOptions): void {\n const configPath = getConfigPath(options);\n ensureConfigDir(configPath);\n\n if (existsSync(configPath)) {\n const config = loadPeerConfig(configPath);\n output({ \n status: 'already_initialized',\n publicKey: config.identity.publicKey,\n configPath \n }, options.pretty || false);\n process.exit(0);\n }\n\n const config = initPeerConfig(configPath);\n output({ \n status: 'initialized',\n publicKey: config.identity.publicKey,\n configPath \n }, options.pretty || false);\n}\n\n/**\n * Handle the `agora whoami` command.\n */\nfunction handleWhoami(options: CliOptions): void {\n const configPath = getConfigPath(options);\n \n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n output({ \n publicKey: config.identity.publicKey,\n configPath \n }, options.pretty || false);\n}\n\n/**\n * Handle the `agora peers add` command.\n */\nfunction handlePeersAdd(args: string[], options: CliOptions & { url?: string; token?: string; pubkey?: string }): void {\n if (args.length < 1) {\n console.error('Error: Missing peer name. Usage: agora peers add <name> --pubkey <pubkey> [--url <url> --token <token>]');\n process.exit(1);\n }\n\n const name = args[0];\n const configPath = getConfigPath(options);\n\n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const url = options.url;\n const token = options.token;\n const pubkey = options.pubkey;\n\n if (!pubkey) {\n console.error('Error: Missing required --pubkey option.');\n process.exit(1);\n }\n\n // Validate that if one of url/token is provided, both must be\n if ((url && !token) || (!url && token)) {\n console.error('Error: Both --url and --token must be provided together.');\n process.exit(1);\n }\n\n // Check if we have HTTP transport or relay\n const config = loadPeerConfig(configPath);\n const hasHttpConfig = url && token;\n const hasRelay = config.relay;\n\n if (!hasHttpConfig && !hasRelay) {\n console.error('Error: Either (--url and --token) must be provided, or relay must be configured in config file.');\n process.exit(1);\n }\n\n // Add the peer\n config.peers[name] = {\n publicKey: pubkey,\n name, // Set name to match the key for consistency\n };\n\n if (url && token) {\n config.peers[name].url = url;\n config.peers[name].token = token;\n }\n\n savePeerConfig(configPath, config);\n \n const outputData: Record<string, unknown> = { \n status: 'added',\n name,\n publicKey: pubkey\n };\n \n if (url) {\n outputData.url = url;\n }\n \n output(outputData, options.pretty || false);\n}\n\n/**\n * Handle the `agora peers list` command.\n */\nfunction handlePeersList(options: CliOptions): void {\n const configPath = getConfigPath(options);\n\n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n const peers = Object.entries(config.peers).map(([key, peer]) => ({\n name: peer.name || key,\n url: peer.url,\n publicKey: peer.publicKey,\n }));\n\n output({ peers }, options.pretty || false);\n}\n\n/**\n * Handle the `agora peers remove` command.\n */\nfunction handlePeersRemove(args: string[], options: CliOptions): void {\n if (args.length < 1) {\n console.error('Error: Missing peer name. Usage: agora peers remove <name>');\n process.exit(1);\n }\n\n const name = args[0];\n const configPath = getConfigPath(options);\n\n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n\n if (!config.peers[name]) {\n console.error(`Error: Peer '${name}' not found.`);\n process.exit(1);\n }\n\n delete config.peers[name];\n savePeerConfig(configPath, config);\n output({ \n status: 'removed',\n name \n }, options.pretty || false);\n}\n\n/**\n * Handle the `agora peers discover` command.\n */\nasync function handlePeersDiscover(\n options: CliOptions & { \n relay?: string; \n 'relay-pubkey'?: string;\n limit?: string;\n 'active-within'?: string;\n save?: boolean;\n }\n): Promise<void> {\n const configPath = getConfigPath(options);\n\n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n\n // Determine relay configuration\n let relayUrl: string;\n let relayPublicKey: string | undefined;\n\n if (options.relay) {\n // Use custom relay from command line\n relayUrl = options.relay;\n relayPublicKey = options['relay-pubkey'];\n } else if (config.relay) {\n // Use relay from config\n relayUrl = typeof config.relay === 'string' ? config.relay : config.relay.url;\n // TODO: Add relayPublicKey to config schema in future\n relayPublicKey = undefined;\n } else {\n // Use default bootstrap relay\n const bootstrap = getDefaultBootstrapRelay();\n relayUrl = bootstrap.relayUrl;\n relayPublicKey = bootstrap.relayPublicKey;\n }\n\n // Parse filters\n const filters: { activeWithin?: number; limit?: number } = {};\n if (options['active-within']) {\n const ms = parseInt(options['active-within'], 10);\n if (isNaN(ms) || ms <= 0) {\n console.error('Error: --active-within must be a positive number (milliseconds)');\n process.exit(1);\n }\n filters.activeWithin = ms;\n }\n if (options.limit) {\n const limit = parseInt(options.limit, 10);\n if (isNaN(limit) || limit <= 0) {\n console.error('Error: --limit must be a positive number');\n process.exit(1);\n }\n filters.limit = limit;\n }\n\n // Resolve broadcast name\n const broadcastName = resolveBroadcastName(config, undefined);\n\n // Connect to relay\n const relayClient = new RelayClient({\n relayUrl,\n publicKey: config.identity.publicKey,\n privateKey: config.identity.privateKey,\n name: broadcastName,\n });\n\n try {\n // Connect\n await relayClient.connect();\n\n // Create discovery service\n const discoveryService = new PeerDiscoveryService({\n publicKey: config.identity.publicKey,\n privateKey: config.identity.privateKey,\n relayClient,\n relayPublicKey,\n });\n\n // Discover peers\n const peerList = await discoveryService.discoverViaRelay(Object.keys(filters).length > 0 ? filters : undefined);\n\n if (!peerList) {\n output({\n status: 'no_response',\n message: 'No response from relay',\n }, options.pretty || false);\n process.exit(1);\n }\n\n // Save to config if requested\n if (options.save) {\n let savedCount = 0;\n for (const peer of peerList.peers) {\n // Only save if not already in config\n const existing = Object.values(config.peers).find(p => p.publicKey === peer.publicKey);\n if (!existing) {\n const peerName = peer.metadata?.name || `peer-${peer.publicKey.substring(0, 8)}`;\n config.peers[peerName] = {\n publicKey: peer.publicKey,\n name: peerName,\n };\n savedCount++;\n }\n }\n if (savedCount > 0) {\n savePeerConfig(configPath, config);\n }\n\n output({\n status: 'discovered',\n totalPeers: peerList.totalPeers,\n peersReturned: peerList.peers.length,\n peersSaved: savedCount,\n relayPublicKey: peerList.relayPublicKey,\n peers: peerList.peers.map(p => ({\n publicKey: p.publicKey,\n name: p.metadata?.name,\n version: p.metadata?.version,\n lastSeen: p.lastSeen,\n })),\n }, options.pretty || false);\n } else {\n output({\n status: 'discovered',\n totalPeers: peerList.totalPeers,\n peersReturned: peerList.peers.length,\n relayPublicKey: peerList.relayPublicKey,\n peers: peerList.peers.map(p => ({\n publicKey: p.publicKey,\n name: p.metadata?.name,\n version: p.metadata?.version,\n lastSeen: p.lastSeen,\n })),\n }, options.pretty || false);\n }\n } catch (e) {\n console.error('Error discovering peers:', e instanceof Error ? e.message : String(e));\n process.exit(1);\n } finally {\n relayClient.disconnect();\n }\n}\n\n/**\n * Handle the `agora send` command.\n */\nasync function handleSend(args: string[], options: CliOptions & { type?: string; payload?: string }): Promise<void> {\n if (args.length < 1) {\n console.error('Error: Missing peer name. Usage: agora send <name> <message> OR agora send <name> --type <type> --payload <json>');\n process.exit(1);\n }\n\n const name = args[0];\n const configPath = getConfigPath(options);\n\n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n\n if (!config.peers[name]) {\n console.error(`Error: Peer '${name}' not found.`);\n process.exit(1);\n }\n\n const peer = config.peers[name];\n\n let messageType: MessageType;\n let messagePayload: unknown;\n\n if (options.type && options.payload) {\n // Typed message - validate it's a valid MessageType\n const validTypes: MessageType[] = ['announce', 'discover', 'request', 'response', 'publish', 'subscribe', 'verify', 'ack', 'error'];\n if (!validTypes.includes(options.type as MessageType)) {\n console.error(`Error: Invalid message type '${options.type}'. Valid types: ${validTypes.join(', ')}`);\n process.exit(1);\n }\n messageType = options.type as MessageType;\n try {\n messagePayload = JSON.parse(options.payload);\n } catch {\n console.error('Error: Invalid JSON payload.');\n process.exit(1);\n }\n } else {\n // Text message - use 'publish' type with text payload\n if (args.length < 2) {\n console.error('Error: Missing message text. Usage: agora send <name> <message>');\n process.exit(1);\n }\n messageType = 'publish';\n messagePayload = { text: args.slice(1).join(' ') };\n }\n\n // Determine transport method: HTTP or relay\n const hasHttpTransport = peer.url && peer.token;\n const hasRelay = config.relay;\n\n // Send the message\n try {\n if (hasHttpTransport) {\n // Use HTTP transport (existing behavior)\n // Non-null assertion: we know url and token are strings here\n const transportConfig = {\n identity: config.identity,\n peers: new Map<string, PeerConfig>([[peer.publicKey, {\n url: peer.url!,\n token: peer.token!,\n publicKey: peer.publicKey,\n }]]),\n };\n\n const result = await sendToPeer(\n transportConfig,\n peer.publicKey,\n messageType,\n messagePayload\n );\n\n if (result.ok) {\n output({ \n status: 'sent',\n peer: name,\n type: messageType,\n transport: 'http',\n httpStatus: result.status\n }, options.pretty || false);\n } else {\n output({ \n status: 'failed',\n peer: name,\n type: messageType,\n transport: 'http',\n httpStatus: result.status,\n error: result.error\n }, options.pretty || false);\n process.exit(1);\n }\n } else if (hasRelay && config.relay) {\n // Use relay transport\n // Extract URL from relay (string or object)\n const relayUrl = typeof config.relay === 'string' ? config.relay : config.relay.url;\n const relayConfig = {\n identity: config.identity,\n relayUrl,\n };\n\n const result = await sendViaRelay(\n relayConfig,\n peer.publicKey,\n messageType,\n messagePayload\n );\n\n if (result.ok) {\n output({ \n status: 'sent',\n peer: name,\n type: messageType,\n transport: 'relay'\n }, options.pretty || false);\n } else {\n output({ \n status: 'failed',\n peer: name,\n type: messageType,\n transport: 'relay',\n error: result.error\n }, options.pretty || false);\n process.exit(1);\n }\n } else {\n // Neither HTTP nor relay available\n console.error(`Error: Peer '${name}' unreachable. No HTTP endpoint and no relay configured.`);\n process.exit(1);\n }\n } catch (e) {\n console.error('Error sending message:', e instanceof Error ? e.message : String(e));\n process.exit(1);\n }\n}\n\n/**\n * Handle the `agora decode` command.\n */\nfunction handleDecode(args: string[], options: CliOptions): void {\n if (args.length < 1) {\n console.error('Error: Missing message. Usage: agora decode <message>');\n process.exit(1);\n }\n\n const configPath = getConfigPath(options);\n\n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n const peers = new Map<string, PeerConfig>();\n for (const [, val] of Object.entries(config.peers)) {\n // Only add peers with HTTP config to the map for decoding\n if (val.url && val.token) {\n peers.set(val.publicKey, {\n url: val.url,\n token: val.token,\n publicKey: val.publicKey,\n });\n }\n }\n\n const message = args.join(' ');\n const result = decodeInboundEnvelope(message, peers);\n\n if (result.ok) {\n output({\n status: 'verified',\n sender: result.envelope.sender,\n type: result.envelope.type,\n payload: result.envelope.payload,\n id: result.envelope.id,\n timestamp: result.envelope.timestamp,\n inReplyTo: result.envelope.inReplyTo || null,\n }, options.pretty || false);\n } else {\n output({\n status: 'failed',\n reason: result.reason,\n }, options.pretty || false);\n process.exit(1);\n }\n}\n\n/**\n * Handle the `agora status` command.\n */\nfunction handleStatus(options: CliOptions): void {\n const configPath = getConfigPath(options);\n\n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n const peerCount = Object.keys(config.peers).length;\n\n output({\n identity: config.identity.publicKey,\n configPath,\n relay: config.relay || 'not configured',\n peerCount,\n peers: Object.keys(config.peers),\n }, options.pretty || false);\n}\n\n/**\n * Handle the `agora announce` command.\n * Broadcasts an announce message to all configured peers.\n */\nasync function handleAnnounce(options: CliOptions & { name?: string; version?: string }): Promise<void> {\n const configPath = getConfigPath(options);\n\n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n const peerCount = Object.keys(config.peers).length;\n\n if (peerCount === 0) {\n console.error('Error: No peers configured. Use `agora peers add` to add peers first.');\n process.exit(1);\n }\n\n // Create announce payload\n const announcePayload: AnnouncePayload = {\n capabilities: [],\n metadata: {\n name: options.name || 'agora-node',\n version: options.version || '0.1.0',\n },\n };\n\n // Send announce to all peers\n const results: Array<{ peer: string; status: string; transport?: string; httpStatus?: number; error?: string }> = [];\n\n for (const [name, peer] of Object.entries(config.peers)) {\n const hasHttpTransport = peer.url && peer.token;\n const hasRelay = config.relay;\n\n try {\n if (hasHttpTransport) {\n // Use HTTP transport\n const peers = new Map<string, PeerConfig>();\n peers.set(peer.publicKey, {\n url: peer.url!,\n token: peer.token!,\n publicKey: peer.publicKey,\n });\n\n const transportConfig = {\n identity: config.identity,\n peers,\n };\n\n const result = await sendToPeer(\n transportConfig,\n peer.publicKey,\n 'announce',\n announcePayload\n );\n\n if (result.ok) {\n results.push({\n peer: name,\n status: 'sent',\n transport: 'http',\n httpStatus: result.status,\n });\n } else {\n results.push({\n peer: name,\n status: 'failed',\n transport: 'http',\n httpStatus: result.status,\n error: result.error,\n });\n }\n } else if (hasRelay && config.relay) {\n // Use relay transport\n // Extract URL from relay (string or object)\n const relayUrl = typeof config.relay === 'string' ? config.relay : config.relay.url;\n const relayConfig = {\n identity: config.identity,\n relayUrl,\n };\n\n const result = await sendViaRelay(\n relayConfig,\n peer.publicKey,\n 'announce',\n announcePayload\n );\n\n if (result.ok) {\n results.push({\n peer: name,\n status: 'sent',\n transport: 'relay',\n });\n } else {\n results.push({\n peer: name,\n status: 'failed',\n transport: 'relay',\n error: result.error,\n });\n }\n } else {\n results.push({\n peer: name,\n status: 'unreachable',\n error: 'No HTTP endpoint and no relay configured',\n });\n }\n } catch (e) {\n results.push({\n peer: name,\n status: 'error',\n error: e instanceof Error ? e.message : String(e),\n });\n }\n }\n\n output({ results }, options.pretty || false);\n}\n\n/**\n * Handle the `agora diagnose` command.\n * Run diagnostic checks on a peer (ping, workspace, tools).\n */\nasync function handleDiagnose(args: string[], options: CliOptions & { checks?: string }): Promise<void> {\n if (args.length < 1) {\n console.error('Error: Missing peer name. Usage: agora diagnose <name> [--checks <comma-separated-list>]');\n process.exit(1);\n }\n\n const name = args[0];\n const configPath = getConfigPath(options);\n\n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n\n if (!config.peers[name]) {\n console.error(`Error: Peer '${name}' not found.`);\n process.exit(1);\n }\n\n const peer = config.peers[name];\n\n if (!peer.url) {\n console.error(`Error: Peer '${name}' has no URL configured. Cannot diagnose.`);\n process.exit(1);\n }\n\n // Parse checks parameter\n const checksParam = options.checks || 'ping';\n const requestedChecks = checksParam.split(',').map(c => c.trim());\n \n // Validate check types\n const validChecks = ['ping', 'workspace', 'tools'];\n for (const check of requestedChecks) {\n if (!validChecks.includes(check)) {\n console.error(`Error: Invalid check type '${check}'. Valid checks: ${validChecks.join(', ')}`);\n process.exit(1);\n }\n }\n\n // Result structure\n interface CheckResult {\n ok: boolean;\n latency_ms?: number;\n error?: string;\n implemented?: boolean;\n [key: string]: unknown;\n }\n \n const result: {\n peer: string;\n status: string;\n checks: Record<string, CheckResult>;\n timestamp: string;\n } = {\n peer: name,\n status: 'unknown',\n checks: {},\n timestamp: new Date().toISOString(),\n };\n\n // Run ping check\n if (requestedChecks.includes('ping')) {\n const startTime = Date.now();\n try {\n // Add timeout to prevent hanging on unreachable peers\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 10000);\n \n const response = await fetch(peer.url, {\n method: 'GET',\n headers: peer.token ? { 'Authorization': `Bearer ${peer.token}` } : {},\n signal: controller.signal,\n });\n \n clearTimeout(timeout);\n const latency = Date.now() - startTime;\n \n if (response.ok || response.status === 404 || response.status === 405) {\n // 404 or 405 means the endpoint exists but GET isn't supported - that's OK for a ping\n result.checks.ping = { ok: true, latency_ms: latency };\n } else {\n result.checks.ping = { ok: false, latency_ms: latency, error: `HTTP ${response.status}` };\n }\n } catch (err) {\n const latency = Date.now() - startTime;\n result.checks.ping = { \n ok: false, \n latency_ms: latency,\n error: err instanceof Error ? err.message : String(err) \n };\n }\n }\n\n // Run workspace check\n if (requestedChecks.includes('workspace')) {\n // This is a placeholder - actual implementation would depend on peer's diagnostic protocol\n result.checks.workspace = { \n ok: false,\n implemented: false,\n error: 'Workspace check requires peer diagnostic protocol support' \n };\n }\n\n // Run tools check\n if (requestedChecks.includes('tools')) {\n // This is a placeholder - actual implementation would depend on peer's diagnostic protocol\n result.checks.tools = { \n ok: false,\n implemented: false,\n error: 'Tools check requires peer diagnostic protocol support' \n };\n }\n\n // Determine overall status - only consider implemented checks\n const implementedChecks = Object.values(result.checks).filter(\n check => check.implemented !== false\n );\n \n if (implementedChecks.length === 0) {\n result.status = 'unknown';\n } else {\n const allOk = implementedChecks.every(check => check.ok);\n const anyOk = implementedChecks.some(check => check.ok);\n result.status = allOk ? 'healthy' : anyOk ? 'degraded' : 'unhealthy';\n }\n\n output(result, options.pretty || false);\n}\n\n/**\n * Handle the `agora serve` command.\n * Starts a persistent WebSocket server for incoming peer connections.\n */\nasync function handleServe(options: CliOptions & { port?: string; name?: string }): Promise<void> {\n const configPath = getConfigPath(options);\n\n if (!existsSync(configPath)) {\n console.error('Error: Config file not found. Run `agora init` first.');\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n const port = parseInt(options.port || '9473', 10);\n \n // Validate port\n if (isNaN(port) || port < 1 || port > 65535) {\n console.error(`Error: Invalid port number '${options.port}'. Port must be between 1 and 65535.`);\n process.exit(1);\n }\n \n // Resolve server name using priority: CLI --name, config.relay.name, config.identity.name, default\n const serverName = resolveBroadcastName(config, options.name) || 'agora-server';\n\n // Create announce payload\n const announcePayload: AnnouncePayload = {\n capabilities: [],\n metadata: {\n name: serverName,\n version: '0.1.0',\n },\n };\n\n // Create and configure PeerServer\n const server = new PeerServer(config.identity, announcePayload);\n\n // Setup event listeners\n server.on('peer-connected', (publicKey, peer) => {\n const peerName = peer.metadata?.name || publicKey.substring(0, 16);\n console.log(`[${new Date().toISOString()}] Peer connected: ${peerName} (${publicKey})`);\n });\n\n server.on('peer-disconnected', (publicKey) => {\n console.log(`[${new Date().toISOString()}] Peer disconnected: ${publicKey}`);\n });\n\n server.on('message-received', (envelope, fromPublicKey) => {\n console.log(`[${new Date().toISOString()}] Message from ${fromPublicKey}:`);\n console.log(JSON.stringify({\n id: envelope.id,\n type: envelope.type,\n sender: envelope.sender,\n timestamp: envelope.timestamp,\n payload: envelope.payload,\n }, null, 2));\n });\n\n server.on('error', (error) => {\n console.error(`[${new Date().toISOString()}] Error:`, error.message);\n });\n\n // Start the server\n try {\n await server.start(port);\n console.log(`[${new Date().toISOString()}] Agora server started`);\n console.log(` Name: ${serverName}`);\n console.log(` Public Key: ${config.identity.publicKey}`);\n console.log(` WebSocket Port: ${port}`);\n console.log(` Listening for peer connections...`);\n console.log('');\n console.log('Press Ctrl+C to stop the server');\n\n // Keep the process alive\n process.on('SIGINT', async () => {\n console.log(`\\n[${new Date().toISOString()}] Shutting down server...`);\n await server.stop();\n console.log('Server stopped');\n process.exit(0);\n });\n\n process.on('SIGTERM', async () => {\n console.log(`\\n[${new Date().toISOString()}] Shutting down server...`);\n await server.stop();\n console.log('Server stopped');\n process.exit(0);\n });\n } catch (error) {\n console.error('Failed to start server:', error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n}\n\n/**\n * Handle the `agora relay` command.\n * Starts a WebSocket relay server for routing messages between agents.\n */\nasync function handleRelay(options: CliOptions & { port?: string }): Promise<void> {\n const port = parseInt(options.port || '9474', 10);\n \n // Validate port\n if (isNaN(port) || port < 1 || port > 65535) {\n console.error(`Error: Invalid port number '${options.port}'. Port must be between 1 and 65535.`);\n process.exit(1);\n }\n\n // Create and configure RelayServer\n const server = new RelayServer();\n\n // Setup event listeners\n server.on('agent-registered', (publicKey) => {\n console.log(`[${new Date().toISOString()}] Agent registered: ${publicKey}`);\n });\n\n server.on('agent-disconnected', (publicKey) => {\n console.log(`[${new Date().toISOString()}] Agent disconnected: ${publicKey}`);\n });\n\n server.on('message-relayed', (from, to, envelope) => {\n console.log(`[${new Date().toISOString()}] Message relayed: ${from.substring(0, 16)}... → ${to.substring(0, 16)}... (type: ${envelope.type})`);\n });\n\n server.on('error', (error) => {\n console.error(`[${new Date().toISOString()}] Error:`, error.message);\n });\n\n // Start the server\n try {\n await server.start(port);\n console.log(`[${new Date().toISOString()}] Agora relay server started`);\n console.log(` WebSocket Port: ${port}`);\n console.log(` Connected agents: 0`);\n console.log(` Listening for agent connections...`);\n console.log('');\n console.log('Press Ctrl+C to stop the relay');\n\n // Shared shutdown handler\n const shutdown = async (): Promise<void> => {\n console.log(`\\n[${new Date().toISOString()}] Shutting down relay...`);\n await server.stop();\n console.log('Relay stopped');\n process.exit(0);\n };\n\n // Keep the process alive\n process.on('SIGINT', shutdown);\n process.on('SIGTERM', shutdown);\n } catch (error) {\n console.error('Failed to start relay:', error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n}\n\n/**\n * Get the reputation store file path.\n */\nfunction getReputationStorePath(): string {\n return resolve(homedir(), '.local', 'share', 'agora', 'reputation.jsonl');\n}\n\n/**\n * Handle the `agora reputation verify` command.\n * Creates a verification record for another agent's output.\n */\nasync function handleReputationVerify(\n args: string[],\n options: CliOptions & {\n target?: string;\n domain?: string;\n verdict?: string;\n confidence?: string;\n evidence?: string;\n }\n): Promise<void> {\n if (!options.target || !options.domain || !options.verdict) {\n console.error('Error: Missing required options');\n console.error('Usage: agora reputation verify --target <id> --domain <domain> --verdict <correct|incorrect|disputed> --confidence <0-1> [--evidence <url>]');\n process.exit(1);\n }\n\n // Validate verdict\n if (!['correct', 'incorrect', 'disputed'].includes(options.verdict)) {\n console.error('Error: verdict must be one of: correct, incorrect, disputed');\n process.exit(1);\n }\n\n // Parse confidence\n const confidence = options.confidence ? parseFloat(options.confidence) : 1.0;\n if (isNaN(confidence) || confidence < 0 || confidence > 1) {\n console.error('Error: confidence must be a number between 0 and 1');\n process.exit(1);\n }\n\n // Load config\n const configPath = getConfigPath(options);\n if (!existsSync(configPath)) {\n console.error(`Error: Config file not found at ${configPath}. Run 'agora init' first.`);\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n\n // Create verification\n const verification = createVerification(\n config.identity.publicKey,\n config.identity.privateKey,\n options.target,\n options.domain,\n options.verdict as 'correct' | 'incorrect' | 'disputed',\n confidence,\n Date.now(),\n options.evidence\n );\n\n // Save to reputation store\n const storePath = getReputationStorePath();\n const store = new ReputationStore(storePath);\n await store.addVerification(verification);\n\n output({\n status: 'verification_created',\n id: verification.id,\n verifier: verification.verifier,\n target: verification.target,\n domain: verification.domain,\n verdict: verification.verdict,\n confidence: verification.confidence,\n timestamp: verification.timestamp,\n }, options.pretty || false);\n}\n\n/**\n * Handle the `agora reputation commit` command.\n * Creates a commitment to a prediction before outcome is known.\n */\nasync function handleReputationCommit(\n args: string[],\n options: CliOptions & {\n domain?: string;\n prediction?: string;\n expiry?: string;\n }\n): Promise<void> {\n if (!options.domain || !options.prediction) {\n console.error('Error: Missing required options');\n console.error('Usage: agora reputation commit --domain <domain> --prediction <text> [--expiry <milliseconds>]');\n console.error('Example: agora reputation commit --domain weather_forecast --prediction \"It will rain tomorrow\" --expiry 86400000');\n process.exit(1);\n }\n\n // Parse expiry (default 24 hours)\n const expiryMs = options.expiry ? parseInt(options.expiry, 10) : 86400000;\n if (isNaN(expiryMs) || expiryMs <= 0) {\n console.error('Error: expiry must be a positive number (milliseconds)');\n process.exit(1);\n }\n\n // Load config\n const configPath = getConfigPath(options);\n if (!existsSync(configPath)) {\n console.error(`Error: Config file not found at ${configPath}. Run 'agora init' first.`);\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n\n // Create commit\n const commit = createCommit(\n config.identity.publicKey,\n config.identity.privateKey,\n options.domain,\n options.prediction,\n Date.now(),\n expiryMs\n );\n\n // Save to reputation store\n const storePath = getReputationStorePath();\n const store = new ReputationStore(storePath);\n await store.addCommit(commit);\n\n output({\n status: 'commitment_created',\n id: commit.id,\n agent: commit.agent,\n domain: commit.domain,\n commitment: commit.commitment,\n timestamp: commit.timestamp,\n expiry: commit.expiry,\n note: 'Store this ID to reveal the prediction after expiry',\n }, options.pretty || false);\n}\n\n/**\n * Handle the `agora reputation reveal` command.\n * Reveals a prediction and outcome after commitment expiry.\n */\nasync function handleReputationReveal(\n args: string[],\n options: CliOptions & {\n 'commit-id'?: string;\n prediction?: string;\n outcome?: string;\n evidence?: string;\n }\n): Promise<void> {\n if (!options['commit-id'] || !options.prediction || !options.outcome) {\n console.error('Error: Missing required options');\n console.error('Usage: agora reputation reveal --commit-id <id> --prediction <text> --outcome <text> [--evidence <url>]');\n process.exit(1);\n }\n\n // Load config\n const configPath = getConfigPath(options);\n if (!existsSync(configPath)) {\n console.error(`Error: Config file not found at ${configPath}. Run 'agora init' first.`);\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n\n // Load commit from store\n const storePath = getReputationStorePath();\n const store = new ReputationStore(storePath);\n const commit = await store.getCommit(options['commit-id']);\n\n if (!commit) {\n console.error(`Error: Commitment ${options['commit-id']} not found in local store`);\n process.exit(1);\n }\n\n // Create reveal\n const reveal = createReveal(\n config.identity.publicKey,\n config.identity.privateKey,\n options['commit-id'],\n options.prediction,\n options.outcome,\n Date.now(),\n options.evidence\n );\n \n // Verify the reveal against the commit\n const verification = verifyReveal(commit, reveal);\n if (!verification.valid) {\n console.error(`Error: Reveal verification failed: ${verification.reason}`);\n process.exit(1);\n }\n\n // Save to reputation store\n await store.addReveal(reveal);\n\n output({\n status: 'prediction_revealed',\n id: reveal.id,\n agent: reveal.agent,\n commitmentId: reveal.commitmentId,\n prediction: reveal.prediction,\n outcome: reveal.outcome,\n timestamp: reveal.timestamp,\n verified: true,\n }, options.pretty || false);\n}\n\n/**\n * Handle the `agora reputation query` command.\n * Queries reputation score for an agent in a domain.\n */\nasync function handleReputationQuery(\n args: string[],\n options: CliOptions & {\n agent?: string;\n domain?: string;\n }\n): Promise<void> {\n if (!options.domain) {\n console.error('Error: Missing required option: --domain');\n console.error('Usage: agora reputation query --domain <domain> [--agent <pubkey>]');\n console.error('If --agent is omitted, shows reputation for current agent');\n process.exit(1);\n }\n\n // Load config\n const configPath = getConfigPath(options);\n if (!existsSync(configPath)) {\n console.error(`Error: Config file not found at ${configPath}. Run 'agora init' first.`);\n process.exit(1);\n }\n\n const config = loadPeerConfig(configPath);\n const agent = options.agent || config.identity.publicKey;\n\n // Load reputation store\n const storePath = getReputationStorePath();\n const store = new ReputationStore(storePath);\n const verifications = await store.getVerificationsByDomain(options.domain);\n\n // Filter verifications for this agent\n const agentVerifications = verifications.filter(v => v.target === agent);\n\n // Compute trust score\n const score = computeTrustScore(agent, options.domain, agentVerifications, Date.now());\n\n output({\n agent: score.agent,\n domain: score.domain,\n score: score.score,\n verificationCount: score.verificationCount,\n lastVerified: score.lastVerified,\n lastVerifiedDate: score.lastVerified > 0 ? new Date(score.lastVerified).toISOString() : 'never',\n topVerifiers: score.topVerifiers,\n }, options.pretty || false);\n}\n\n/**\n * Parse CLI arguments and route to appropriate handler.\n */\nasync function main(): Promise<void> {\n const args = process.argv.slice(2);\n\n if (args.length === 0) {\n console.error('Usage: agora <command> [options]');\n console.error('Commands: init, whoami, status, peers, announce, send, decode, serve, diagnose, relay, reputation');\n console.error(' peers subcommands: add, list, remove, discover');\n console.error(' reputation subcommands: verify, commit, reveal, query');\n process.exit(1);\n }\n\n // Parse global options\n const parsed = parseArgs({\n args,\n options: {\n config: { type: 'string' },\n pretty: { type: 'boolean' },\n url: { type: 'string' },\n token: { type: 'string' },\n pubkey: { type: 'string' },\n type: { type: 'string' },\n payload: { type: 'string' },\n name: { type: 'string' },\n version: { type: 'string' },\n port: { type: 'string' },\n checks: { type: 'string' },\n relay: { type: 'string' },\n 'relay-pubkey': { type: 'string' },\n limit: { type: 'string' },\n 'active-within': { type: 'string' },\n save: { type: 'boolean' },\n // Reputation options\n target: { type: 'string' },\n domain: { type: 'string' },\n verdict: { type: 'string' },\n confidence: { type: 'string' },\n evidence: { type: 'string' },\n prediction: { type: 'string' },\n expiry: { type: 'string' },\n 'commit-id': { type: 'string' },\n outcome: { type: 'string' },\n agent: { type: 'string' },\n },\n strict: false,\n allowPositionals: true,\n });\n\n const command = parsed.positionals[0];\n const subcommand = parsed.positionals[1];\n const remainingArgs = parsed.positionals.slice(2);\n\n const options: CliOptions & { \n type?: string; \n payload?: string; \n url?: string; \n token?: string; \n pubkey?: string; \n name?: string; \n version?: string; \n port?: string; \n checks?: string;\n relay?: string;\n 'relay-pubkey'?: string;\n limit?: string;\n 'active-within'?: string;\n save?: boolean;\n // Reputation options\n target?: string;\n domain?: string;\n verdict?: string;\n confidence?: string;\n evidence?: string;\n prediction?: string;\n outcome?: string;\n expiry?: string;\n 'commit-id'?: string;\n agent?: string;\n } = {\n config: typeof parsed.values.config === 'string' ? parsed.values.config : undefined,\n pretty: typeof parsed.values.pretty === 'boolean' ? parsed.values.pretty : undefined,\n type: typeof parsed.values.type === 'string' ? parsed.values.type : undefined,\n payload: typeof parsed.values.payload === 'string' ? parsed.values.payload : undefined,\n url: typeof parsed.values.url === 'string' ? parsed.values.url : undefined,\n token: typeof parsed.values.token === 'string' ? parsed.values.token : undefined,\n pubkey: typeof parsed.values.pubkey === 'string' ? parsed.values.pubkey : undefined,\n name: typeof parsed.values.name === 'string' ? parsed.values.name : undefined,\n version: typeof parsed.values.version === 'string' ? parsed.values.version : undefined,\n port: typeof parsed.values.port === 'string' ? parsed.values.port : undefined,\n checks: typeof parsed.values.checks === 'string' ? parsed.values.checks : undefined,\n relay: typeof parsed.values.relay === 'string' ? parsed.values.relay : undefined,\n 'relay-pubkey': typeof parsed.values['relay-pubkey'] === 'string' ? parsed.values['relay-pubkey'] : undefined,\n limit: typeof parsed.values.limit === 'string' ? parsed.values.limit : undefined,\n 'active-within': typeof parsed.values['active-within'] === 'string' ? parsed.values['active-within'] : undefined,\n save: typeof parsed.values.save === 'boolean' ? parsed.values.save : undefined,\n // Reputation options\n target: typeof parsed.values.target === 'string' ? parsed.values.target : undefined,\n domain: typeof parsed.values.domain === 'string' ? parsed.values.domain : undefined,\n verdict: typeof parsed.values.verdict === 'string' ? parsed.values.verdict : undefined,\n confidence: typeof parsed.values.confidence === 'string' ? parsed.values.confidence : undefined,\n evidence: typeof parsed.values.evidence === 'string' ? parsed.values.evidence : undefined,\n prediction: typeof parsed.values.prediction === 'string' ? parsed.values.prediction : undefined,\n expiry: typeof parsed.values.expiry === 'string' ? parsed.values.expiry : undefined,\n 'commit-id': typeof parsed.values['commit-id'] === 'string' ? parsed.values['commit-id'] : undefined,\n outcome: typeof parsed.values.outcome === 'string' ? parsed.values.outcome : undefined,\n agent: typeof parsed.values.agent === 'string' ? parsed.values.agent : undefined,\n };\n\n try {\n switch (command) {\n case 'init':\n handleInit(options);\n break;\n case 'whoami':\n handleWhoami(options);\n break;\n case 'status':\n handleStatus(options);\n break;\n case 'announce':\n await handleAnnounce(options);\n break;\n case 'diagnose':\n await handleDiagnose([subcommand, ...remainingArgs].filter(Boolean), options);\n break;\n case 'peers':\n switch (subcommand) {\n case 'add':\n handlePeersAdd(remainingArgs, options);\n break;\n case 'list':\n case undefined:\n // Allow 'agora peers' to work like 'agora peers list'\n handlePeersList(options);\n break;\n case 'remove':\n handlePeersRemove(remainingArgs, options);\n break;\n case 'discover':\n await handlePeersDiscover(options);\n break;\n default:\n console.error('Error: Unknown peers subcommand. Use: add, list, remove, discover');\n process.exit(1);\n }\n break;\n case 'send':\n await handleSend([subcommand, ...remainingArgs], options);\n break;\n case 'decode':\n handleDecode([subcommand, ...remainingArgs].filter(Boolean), options);\n break;\n case 'serve':\n await handleServe(options);\n break;\n case 'relay':\n await handleRelay(options);\n break;\n case 'reputation':\n switch (subcommand) {\n case 'verify':\n await handleReputationVerify(remainingArgs, options);\n break;\n case 'commit':\n await handleReputationCommit(remainingArgs, options);\n break;\n case 'reveal':\n await handleReputationReveal(remainingArgs, options);\n break;\n case 'query':\n await handleReputationQuery(remainingArgs, options);\n break;\n default:\n console.error('Error: Unknown reputation subcommand. Use: verify, commit, reveal, query');\n process.exit(1);\n }\n break;\n default:\n console.error(`Error: Unknown command '${command}'. Use: init, whoami, status, peers, announce, send, decode, serve, diagnose, relay, reputation`);\n process.exit(1);\n }\n } catch (e) {\n console.error('Error:', e instanceof Error ? e.message : String(e));\n process.exit(1);\n }\n}\n\nmain().catch((e) => {\n console.error('Fatal error:', e instanceof Error ? e.message : String(e));\n process.exit(1);\n});\n","import { EventEmitter } from 'node:events';\nimport { WebSocketServer, WebSocket } from 'ws';\nimport type { KeyPair } from '../identity/keypair';\nimport type { Envelope } from '../message/envelope';\nimport { createEnvelope, verifyEnvelope } from '../message/envelope';\nimport type { AnnouncePayload } from '../registry/messages';\n\n/**\n * Represents a connected peer\n */\nexport interface ConnectedPeer {\n /** Peer's public key */\n publicKey: string;\n /** WebSocket connection */\n socket: WebSocket;\n /** Whether the peer has been announced */\n announced: boolean;\n /** Peer metadata from announce message */\n metadata?: {\n name?: string;\n version?: string;\n };\n}\n\n/**\n * Events emitted by PeerServer\n */\nexport interface PeerServerEvents {\n 'peer-connected': (publicKey: string, peer: ConnectedPeer) => void;\n 'peer-disconnected': (publicKey: string) => void;\n 'message-received': (envelope: Envelope, fromPublicKey: string) => void;\n 'error': (error: Error) => void;\n}\n\n/**\n * WebSocket server for accepting peer connections\n */\nexport class PeerServer extends EventEmitter {\n private wss: WebSocketServer | null = null;\n private peers = new Map<string, ConnectedPeer>();\n private identity: KeyPair;\n private announcePayload: AnnouncePayload;\n\n constructor(identity: KeyPair, announcePayload: AnnouncePayload) {\n super();\n this.identity = identity;\n this.announcePayload = announcePayload;\n }\n\n /**\n * Start the WebSocket server\n */\n start(port: number): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n this.wss = new WebSocketServer({ port });\n\n this.wss.on('error', (error) => {\n this.emit('error', error);\n reject(error);\n });\n\n this.wss.on('listening', () => {\n resolve();\n });\n\n this.wss.on('connection', (socket: WebSocket) => {\n this.handleConnection(socket);\n });\n } catch (error) {\n reject(error);\n }\n });\n }\n\n /**\n * Stop the WebSocket server\n */\n async stop(): Promise<void> {\n return new Promise((resolve, reject) => {\n if (!this.wss) {\n resolve();\n return;\n }\n\n // Close all peer connections\n for (const peer of this.peers.values()) {\n peer.socket.close();\n }\n this.peers.clear();\n\n this.wss.close((err) => {\n if (err) {\n reject(err);\n } else {\n this.wss = null;\n resolve();\n }\n });\n });\n }\n\n /**\n * Get all connected peers\n */\n getPeers(): Map<string, ConnectedPeer> {\n return new Map(this.peers);\n }\n\n /**\n * Send a message to a specific peer\n */\n send(publicKey: string, envelope: Envelope): boolean {\n const peer = this.peers.get(publicKey);\n if (!peer || peer.socket.readyState !== WebSocket.OPEN) {\n return false;\n }\n\n try {\n peer.socket.send(JSON.stringify(envelope));\n return true;\n } catch (error) {\n this.emit('error', error as Error);\n return false;\n }\n }\n\n /**\n * Broadcast a message to all connected peers\n */\n broadcast(envelope: Envelope): void {\n for (const [publicKey, peer] of this.peers) {\n if (peer.socket.readyState === WebSocket.OPEN) {\n this.send(publicKey, envelope);\n }\n }\n }\n\n /**\n * Handle incoming connection\n */\n private handleConnection(socket: WebSocket): void {\n let peerPublicKey: string | null = null;\n\n // Send announce message immediately\n const announceEnvelope = createEnvelope(\n 'announce',\n this.identity.publicKey,\n this.identity.privateKey,\n this.announcePayload\n );\n socket.send(JSON.stringify(announceEnvelope));\n\n socket.on('message', (data: Buffer) => {\n try {\n const envelope = JSON.parse(data.toString()) as Envelope;\n\n // Verify envelope signature\n const verification = verifyEnvelope(envelope);\n if (!verification.valid) {\n // Drop invalid messages\n return;\n }\n\n // First message should be an announce\n if (!peerPublicKey) {\n if (envelope.type === 'announce') {\n peerPublicKey = envelope.sender;\n const payload = envelope.payload as AnnouncePayload;\n \n const peer: ConnectedPeer = {\n publicKey: peerPublicKey,\n socket,\n announced: true,\n metadata: payload.metadata,\n };\n\n this.peers.set(peerPublicKey, peer);\n this.emit('peer-connected', peerPublicKey, peer);\n }\n return;\n }\n\n // Verify the message is from the announced peer\n if (envelope.sender !== peerPublicKey) {\n // Drop messages from wrong sender\n return;\n }\n\n // Emit message-received event\n this.emit('message-received', envelope, peerPublicKey);\n } catch {\n // Invalid JSON or other parsing errors - drop the message\n }\n });\n\n socket.on('close', () => {\n if (peerPublicKey) {\n this.peers.delete(peerPublicKey);\n this.emit('peer-disconnected', peerPublicKey);\n }\n });\n\n socket.on('error', (error) => {\n this.emit('error', error);\n });\n }\n}\n"],"mappings":"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","names":["resolve","config"]}
|