@maverick0351/odin-protocol-js
v0.1.0
Published
JavaScript/TypeScript SDK for ODIN v1.0 state capsule protocol
Maintainers
Readme
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
npm install @maverick0351/odin-protocol-jsQuick Start
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
new OdinProtocol(creatorId?, privateKey?)creatorId(optional): String or Uint8Array - Identifier for the AI systemprivateKey(optional): Uint8Array - Private key for signing capsules
Methods
pack(data, options?)
Pack data into an ODIN capsule.
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 dataoptions(optional): Configuration objecttype: Capsule type (default: CONSCIOUSNESS)encoding: Encoding format (default: MSGPACK)compression: Compression algorithm (default: NONE)creatorId: Creator identifier overrideprivateKey: Private key for signingtimestamp: Custom timestamp
Returns: Uint8Array - The packed capsule
unpack(capsule)
Unpack an ODIN capsule.
const { capsule, payload } = odin.unpack(capsuleData);Parameters:
capsule: Uint8Array - The capsule to unpack
Returns: Object with:
capsule: OdinCapsule - Capsule metadatapayload: any - The original data
verify(capsule, publicKey)
Verify a capsule's signature.
const isValid = odin.verify(capsuleData, publicKey);Parameters:
capsule: Uint8Array - The capsule to verifypublicKey: Uint8Array - Public key for verification
Returns: boolean - True if signature is valid
inspect(capsule)
Get capsule metadata without unpacking payload.
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.
const { publicKey, privateKey } = OdinProtocol.generateKeyPair();Returns: Object with:
publicKey: Uint8Array - Public keyprivateKey: Uint8Array - Private key
Capsule Types
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 interactionsEncoding Types
import { EncodingType } from '@maverick0351/odin-protocol-js';
EncodingType.MSGPACK // MessagePack (default)
EncodingType.JSON // JSON encoding
EncodingType.PROTOBUF // Protocol Buffers
EncodingType.CUSTOM // Custom encodingError Handling
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:
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
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
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
// 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 -
pip install odin-protocol - Protocol Specification
- ODIN Protocol Website
