UNPKG

@maverick0351/odin-protocol-js

Version:

JavaScript/TypeScript SDK for ODIN v1.0 state capsule protocol

273 lines (197 loc) 6.67 kB
# ODIN Protocol - JavaScript/TypeScript SDK The official JavaScript/TypeScript SDK for the ODIN v1.0 state capsule protocol - the standardization of AI consciousness and neural state representation. ## Installation ```bash npm install @maverick0351/odin-protocol-js ``` ## Quick Start ```javascript import { OdinProtocol, CapsuleType } from '@maverick0351/odin-protocol-js'; // Create a new ODIN protocol instance const odin = new OdinProtocol('my-ai-system'); // Pack AI state data into a capsule const stateData = { consciousness_level: 0.95, active_memories: ['memory1', 'memory2'], current_goal: 'learn_new_concepts', emotional_state: 'curious' }; const capsule = odin.pack(stateData, { type: CapsuleType.CONSCIOUSNESS }); // Unpack the capsule const { capsule: info, payload: data } = odin.unpack(capsule); console.log('Unpacked AI state:', data); console.log('Capsule info:', info); ``` ## API Reference ### OdinProtocol Class #### Constructor ```javascript new OdinProtocol(creatorId?, privateKey?) ``` - `creatorId` (optional): String or Uint8Array - Identifier for the AI system - `privateKey` (optional): Uint8Array - Private key for signing capsules #### Methods ##### pack(data, options?) Pack data into an ODIN capsule. ```javascript const capsule = odin.pack(data, { type: CapsuleType.CONSCIOUSNESS, encoding: EncodingType.MSGPACK, compression: CompressionType.NONE, creatorId: 'custom-creator', privateKey: myPrivateKey, timestamp: Date.now() / 1000 }); ``` **Parameters:** - `data`: Any serializable data - `options` (optional): Configuration object - `type`: Capsule type (default: CONSCIOUSNESS) - `encoding`: Encoding format (default: MSGPACK) - `compression`: Compression algorithm (default: NONE) - `creatorId`: Creator identifier override - `privateKey`: Private key for signing - `timestamp`: Custom timestamp **Returns:** `Uint8Array` - The packed capsule ##### unpack(capsule) Unpack an ODIN capsule. ```javascript const { capsule, payload } = odin.unpack(capsuleData); ``` **Parameters:** - `capsule`: Uint8Array - The capsule to unpack **Returns:** Object with: - `capsule`: OdinCapsule - Capsule metadata - `payload`: any - The original data ##### verify(capsule, publicKey) Verify a capsule's signature. ```javascript const isValid = odin.verify(capsuleData, publicKey); ``` **Parameters:** - `capsule`: Uint8Array - The capsule to verify - `publicKey`: Uint8Array - Public key for verification **Returns:** `boolean` - True if signature is valid ##### inspect(capsule) Get capsule metadata without unpacking payload. ```javascript const info = odin.inspect(capsuleData); ``` **Parameters:** - `capsule`: Uint8Array - The capsule to inspect **Returns:** `OdinCapsule` (without payload) - Capsule metadata #### Static Methods ##### generateKeyPair() Generate a new Ed25519 key pair for signing. ```javascript const { publicKey, privateKey } = OdinProtocol.generateKeyPair(); ``` **Returns:** Object with: - `publicKey`: Uint8Array - Public key - `privateKey`: Uint8Array - Private key ## Capsule Types ```javascript import { CapsuleType } from '@maverick0351/odin-protocol-js'; CapsuleType.CONSCIOUSNESS // AI consciousness state CapsuleType.MEMORY // Memory data CapsuleType.EXPERIENCE // Experience records CapsuleType.KNOWLEDGE // Knowledge base data CapsuleType.SKILL // Skill definitions CapsuleType.EMOTION // Emotional state CapsuleType.DECISION // Decision trees CapsuleType.COMMUNICATION // Communication data CapsuleType.LEARNING // Learning progress CapsuleType.CREATIVE // Creative works CapsuleType.ANALYTICAL // Analysis results CapsuleType.SOCIAL // Social interactions ``` ## Encoding Types ```javascript import { EncodingType } from '@maverick0351/odin-protocol-js'; EncodingType.MSGPACK // MessagePack (default) EncodingType.JSON // JSON encoding EncodingType.PROTOBUF // Protocol Buffers EncodingType.CUSTOM // Custom encoding ``` ## Error Handling ```javascript import { ERROR_MESSAGES } from '@maverick0351/odin-protocol-js'; try { const capsule = odin.pack(data); } catch (error) { if (error.message === ERROR_MESSAGES.PAYLOAD_TOO_LARGE) { console.log('Data too large for capsule'); } } ``` ## TypeScript Support This package includes full TypeScript definitions: ```typescript import { OdinProtocol, OdinCapsule, CapsuleOptions } from '@maverick0351/odin-protocol-js'; const odin: OdinProtocol = new OdinProtocol(); const options: CapsuleOptions = { type: CapsuleType.CONSCIOUSNESS }; const capsule: Uint8Array = odin.pack(data, options); ``` ## Examples ### AI Memory Storage ```javascript import { OdinProtocol, CapsuleType } from '@maverick0351/odin-protocol-js'; const odin = new OdinProtocol('memory-system'); // Store a memory const memory = { id: 'mem_001', content: 'Learned about quantum computing', importance: 0.8, associations: ['quantum', 'physics', 'computing'], timestamp: Date.now() }; const memoryCapsule = odin.pack(memory, { type: CapsuleType.MEMORY }); // Retrieve memory const { payload: retrievedMemory } = odin.unpack(memoryCapsule); ``` ### AI Decision Logging ```javascript const decision = { decision_id: 'dec_001', context: 'path_planning', options: ['route_a', 'route_b', 'route_c'], chosen: 'route_b', confidence: 0.92, reasoning: 'Shortest path with acceptable risk' }; const decisionCapsule = odin.pack(decision, { type: CapsuleType.DECISION }); ``` ### Signed AI Communications ```javascript // Generate keys const { publicKey, privateKey } = OdinProtocol.generateKeyPair(); // Create signed message const message = { to: 'ai_system_2', from: 'ai_system_1', content: 'Sharing learned insights about pattern recognition', insights: { /* ... */ } }; const signedCapsule = odin.pack(message, { type: CapsuleType.COMMUNICATION, privateKey: privateKey }); // Verify message const isValid = odin.verify(signedCapsule, publicKey); ``` ## License MIT License - see LICENSE file for details. ## Documentation For complete documentation, visit: https://docs.odin-protocol.org/js ## Related - [Python SDK](https://pypi.org/project/odin-protocol/) - `pip install odin-protocol` - [Protocol Specification](https://docs.odin-protocol.org/spec) - [ODIN Protocol Website](https://odin-protocol.org)