@maverick0351/odin-protocol-js
Version:
JavaScript/TypeScript SDK for ODIN v1.0 state capsule protocol
273 lines (197 loc) • 6.67 kB
Markdown
# 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)