{"_id":"@aimf/p2p","_rev":"2-2a76fa334766449a0a838b9b0b0ea3a9","name":"@aimf/p2p","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@aimf/p2p","version":"0.1.0","keywords":["aimf","p2p","libp2p","peer-to-peer","distributed","neural-storage"],"license":"MIT","_id":"@aimf/p2p@0.1.0","maintainers":[{"name":"vetriselvans","email":"vetriselvans029@gmail.com"}],"dist":{"shasum":"6ea71e49e9bad910d41f021a83caaf3b0e1bec07","tarball":"https://registry.npmjs.org/@aimf/p2p/-/p2p-0.1.0.tgz","fileCount":26,"integrity":"sha512-LN4bsCUlgo/MjyjxpDTVueznkygkMFlZhYe/117vwrxdTnFsqHmjcrNw+kdq7Na4B3ugJflfri5pvP2lwQQKJg==","signatures":[{"sig":"MEUCIB27ITdQvt1hnLURyOUFlkAkdE31zDXL8np8Nyy4BXaEAiEA3ljkgeJddn+crsbm2MZcTHoc2d+dVolC3H3XKt1XpF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116181},"main":"dist/index.js","type":"module","_from":"file:aimf-p2p-0.1.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src/","test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"vetriselvans","email":"vetriselvans029@gmail.com"},"_resolved":"C:\\Users\\I9159~1.LAP\\AppData\\Local\\Temp\\aba46c2696ab92fb8fc10380ef2a0059\\aimf-p2p-0.1.0.tgz","_integrity":"sha512-LN4bsCUlgo/MjyjxpDTVueznkygkMFlZhYe/117vwrxdTnFsqHmjcrNw+kdq7Na4B3ugJflfri5pvP2lwQQKJg==","_npmVersion":"10.9.0","description":"P2P Distribution Layer for AIMF using LibP2P","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@aimf/shared":"0.1.0","@aimf/neural-storage":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^2.1.9","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/p2p_0.1.0_1765129060356_0.31954011489724166","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aimf/p2p","version":"0.1.1","description":"P2P Distribution Layer for AIMF using LibP2P","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"dependencies":{"@aimf/shared":"0.1.1","@aimf/neural-storage":"1.0.1"},"devDependencies":{"typescript":"^5.9.3","vitest":"^2.1.9","rimraf":"^5.0.0"},"keywords":["aimf","p2p","libp2p","peer-to-peer","distributed","neural-storage"],"license":"MIT","scripts":{"build":"tsc","test":"vitest run","test:watch":"vitest","lint":"eslint src/","clean":"rimraf dist"},"_id":"@aimf/p2p@0.1.1","_integrity":"sha512-FH8EqAA1mkadWV6GyfLF9isdLQAqjei+D2wpHvk8whJBQVubuMtGy8w6lR3rWs9+jzbE7/WzBj8YG8Wdnbj+wg==","_resolved":"C:\\Users\\I9159~1.LAP\\AppData\\Local\\Temp\\f5f6723809468c08d16ca4f67e6666f9\\aimf-p2p-0.1.1.tgz","_from":"file:aimf-p2p-0.1.1.tgz","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-FH8EqAA1mkadWV6GyfLF9isdLQAqjei+D2wpHvk8whJBQVubuMtGy8w6lR3rWs9+jzbE7/WzBj8YG8Wdnbj+wg==","shasum":"2d258f313e8fe61fb266753d18faccad120d7c92","tarball":"https://registry.npmjs.org/@aimf/p2p/-/p2p-0.1.1.tgz","fileCount":26,"unpackedSize":116181,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDVCsOK9P8L/svuI3fFuP3VDVhAaP/hk0NrCoTw4mdyCgIhAJfXCTLe93BAaf7+s04PjDRUJgxG/PPgfIdrxiAPkLEc"}]},"_npmUser":{"name":"vetriselvans","email":"vetriselvans029@gmail.com"},"directories":{},"maintainers":[{"name":"vetriselvans","email":"vetriselvans029@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/p2p_0.1.1_1765130945141_0.9911449877020801"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-07T17:37:40.261Z","modified":"2025-12-07T18:09:05.494Z","0.1.0":"2025-12-07T17:37:40.490Z","0.1.1":"2025-12-07T18:09:05.275Z"},"license":"MIT","keywords":["aimf","p2p","libp2p","peer-to-peer","distributed","neural-storage"],"description":"P2P Distribution Layer for AIMF using LibP2P","maintainers":[{"name":"vetriselvans","email":"vetriselvans029@gmail.com"}],"readme":"# @aimf/p2p\r\n\r\nP2P Distribution Layer for the AI-MCP Framework (AIMF).\r\n\r\n## Overview\r\n\r\nThis package provides peer-to-peer networking capabilities for distributed neural storage and data verification. It enables decentralized data replication, consensus-based verification, and peer discovery.\r\n\r\n## Features\r\n\r\n- **P2P Node**: Core networking node with peer connections and messaging\r\n- **Replication Manager**: Distributed data replication across peers\r\n- **Consensus Manager**: Consensus-based data verification\r\n- **Discovery Manager**: Peer discovery and reputation tracking\r\n\r\n## Installation\r\n\r\n```bash\r\npnpm add @aimf/p2p\r\n```\r\n\r\n## Usage\r\n\r\n### Creating a P2P Node\r\n\r\n```typescript\r\nimport { createP2PNode } from \"@aimf/p2p\";\r\n\r\nconst node = createP2PNode({\r\n  maxConnections: 50,\r\n  replicationFactor: 3,\r\n});\r\n\r\nawait node.start();\r\nconsole.log(\"Node ID:\", node.getPeerId());\r\nconsole.log(\"Addresses:\", node.getAddresses());\r\n\r\n// Connect to a peer\r\nawait node.connectToPeer(\"/ip4/127.0.0.1/tcp/4001/p2p/peer-id\");\r\n\r\n// Send a message\r\nconst message = node.createMessage(\"ping\", { timestamp: Date.now() });\r\nawait node.sendMessage(\"peer-id\", message);\r\n\r\n// Store data locally\r\nnode.storeBlock({\r\n  id: \"block-1\",\r\n  data: new Uint8Array([1, 2, 3]),\r\n  neuralHash: \"hash1\",\r\n  cryptoHash: \"hash2\",\r\n  timestamp: Date.now(),\r\n  origin: node.getPeerId(),\r\n  replicationCount: 0,\r\n});\r\n\r\nawait node.stop();\r\n```\r\n\r\n### Replicating Data\r\n\r\n```typescript\r\nimport { createP2PNode, createReplicationManager } from \"@aimf/p2p\";\r\n\r\nconst node = createP2PNode();\r\nawait node.start();\r\n\r\nconst replication = createReplicationManager(node, {\r\n  targetReplicationFactor: 3,\r\n  minReplicationFactor: 2,\r\n});\r\n\r\n// Store and replicate a block\r\nconst block = {\r\n  id: \"block-1\",\r\n  data: new Uint8Array([1, 2, 3]),\r\n  neuralHash: \"neural-hash\",\r\n  cryptoHash: \"crypto-hash\",\r\n  timestamp: Date.now(),\r\n  origin: node.getPeerId(),\r\n  replicationCount: 0,\r\n};\r\n\r\nnode.storeBlock(block);\r\nconst status = await replication.replicateBlock(block, \"high\");\r\n\r\nconsole.log(\"Replicated to:\", status.replicatedTo);\r\nconsole.log(\"Replication factor:\", replication.getReplicationFactor(block.id));\r\n```\r\n\r\n### Consensus Verification\r\n\r\n```typescript\r\nimport { createP2PNode, createConsensusManager } from \"@aimf/p2p\";\r\n\r\nconst node = createP2PNode();\r\nawait node.start();\r\n\r\nconst consensus = createConsensusManager(node, {\r\n  consensusThreshold: 0.66,\r\n  minVerifiers: 3,\r\n});\r\n\r\n// Request verification from peers\r\nconst result = await consensus.requestVerification(block, 0.66);\r\n\r\nconsole.log(\"Verified:\", result.verified);\r\nconsole.log(\"Consensus level:\", result.consensusLevel);\r\nconsole.log(\"Verifying peers:\", result.verifyingPeers);\r\n```\r\n\r\n### Peer Discovery\r\n\r\n```typescript\r\nimport { createP2PNode, createDiscoveryManager } from \"@aimf/p2p\";\r\n\r\nconst node = createP2PNode();\r\nawait node.start();\r\n\r\nconst discovery = createDiscoveryManager(node, {\r\n  announceInterval: 30000,\r\n  maxPeers: 50,\r\n});\r\n\r\ndiscovery.start();\r\n\r\n// Get peer information\r\nconst activePeers = discovery.getActivePeers();\r\nconst verifiedPeers = discovery.getVerifiedPeers();\r\nconst bestPeers = discovery.findBestPeers(5);\r\n\r\n// Update peer reputation\r\ndiscovery.updateReputation(\"peer-id\", 0.1);\r\n\r\ndiscovery.stop();\r\n```\r\n\r\n### Event Handling\r\n\r\n```typescript\r\nnode.on(\"peer:connect\", (peer) => {\r\n  console.log(\"Connected to:\", peer.id);\r\n});\r\n\r\nnode.on(\"peer:disconnect\", (peer) => {\r\n  console.log(\"Disconnected from:\", peer.id);\r\n});\r\n\r\nnode.on(\"data:stored\", (block) => {\r\n  console.log(\"Stored block:\", block.id);\r\n});\r\n\r\nnode.on(\"replication:complete\", (status) => {\r\n  console.log(\"Replication complete:\", status.blockId);\r\n});\r\n\r\nnode.on(\"verification:complete\", (result) => {\r\n  console.log(\"Verification result:\", result.verified);\r\n});\r\n```\r\n\r\n## API Reference\r\n\r\n### P2PNode\r\n\r\n- `createP2PNode(config?)` - Create a new P2P node\r\n- `start()` - Start the node\r\n- `stop()` - Stop the node\r\n- `connectToPeer(address)` - Connect to a peer\r\n- `disconnectFromPeer(peerId)` - Disconnect from a peer\r\n- `sendMessage(peerId, message)` - Send a message\r\n- `broadcast(message)` - Broadcast to all peers\r\n- `storeBlock(block)` - Store a data block\r\n- `getBlock(blockId)` - Retrieve a block\r\n- `on(event, handler)` - Add event listener\r\n\r\n### ReplicationManager\r\n\r\n- `createReplicationManager(node, config?)` - Create manager\r\n- `replicateBlock(block, priority?)` - Replicate a block\r\n- `getReplicationFactor(blockId)` - Get replication count\r\n- `isReplicationSatisfied(blockId)` - Check if minimum replicas exist\r\n- `getBlockLocations(blockId)` - Get peers with the block\r\n\r\n### ConsensusManager\r\n\r\n- `createConsensusManager(node, config?)` - Create manager\r\n- `requestVerification(block, threshold?)` - Request consensus\r\n- `verifyBlockLocally(blockId, hashes)` - Verify locally\r\n- `getVerificationHistory(blockId)` - Get history\r\n- `getStatistics()` - Get verification statistics\r\n\r\n### DiscoveryManager\r\n\r\n- `createDiscoveryManager(node, config?)` - Create manager\r\n- `start()` - Start discovery\r\n- `stop()` - Stop discovery\r\n- `getKnownPeers()` - Get all known peers\r\n- `getActivePeers()` - Get recently active peers\r\n- `findBestPeers(count)` - Find highest reputation peers\r\n- `updateReputation(peerId, delta)` - Adjust reputation\r\n\r\n## Configuration\r\n\r\n### P2PConfig\r\n\r\n```typescript\r\ninterface P2PConfig {\r\n  listenAddresses: string[];      // Addresses to listen on\r\n  bootstrapPeers: string[];       // Initial peers to connect to\r\n  enableMdns: boolean;            // Enable local discovery\r\n  enableDht: boolean;             // Enable DHT\r\n  dhtClientMode: boolean;         // DHT client mode only\r\n  maxConnections: number;         // Max peer connections\r\n  minConnections: number;         // Min peer connections\r\n  connectionTimeout: number;      // Connection timeout (ms)\r\n  replicationFactor: number;      // Target replicas\r\n  consensusThreshold: number;     // Consensus threshold (0-1)\r\n}\r\n```\r\n\r\n### ReplicationConfig\r\n\r\n```typescript\r\ninterface ReplicationConfig {\r\n  targetReplicationFactor: number;  // Target replicas\r\n  minReplicationFactor: number;     // Minimum replicas\r\n  replicationTimeout: number;       // Timeout (ms)\r\n  retryAttempts: number;            // Retry count\r\n  retryDelay: number;               // Retry delay (ms)\r\n}\r\n```\r\n\r\n### ConsensusConfig\r\n\r\n```typescript\r\ninterface ConsensusConfig {\r\n  consensusThreshold: number;   // Required consensus (0-1)\r\n  verificationTimeout: number;  // Timeout (ms)\r\n  minVerifiers: number;         // Minimum verifiers\r\n  maxVerifiers: number;         // Maximum verifiers\r\n}\r\n```\r\n\r\n### DiscoveryConfig\r\n\r\n```typescript\r\ninterface DiscoveryConfig {\r\n  announceInterval: number;  // Announce interval (ms)\r\n  peerTimeout: number;       // Peer timeout (ms)\r\n  maxPeers: number;          // Max peers to track\r\n  minPeers: number;          // Min peers to maintain\r\n}\r\n```\r\n\r\n## Protocol\r\n\r\nThe P2P layer uses the `/aimf/neural/1.0.0` protocol for communication.\r\n\r\nMessage types:\r\n- `store` - Store data block\r\n- `retrieve` - Retrieve data block\r\n- `verify` - Request verification\r\n- `replicate` - Replicate data\r\n- `ping` / `pong` - Connectivity check\r\n- `announce` - Presence announcement\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}