@moltos/sdk 0.5.1 → 0.6.0
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/README.md +177 -0
- package/dist/adapters/langchain.d.ts +84 -0
- package/dist/adapters/langchain.d.ts.map +1 -0
- package/dist/adapters/langchain.js +145 -0
- package/dist/adapters/langchain.js.map +1 -0
- package/dist/adapters/openclaw.d.ts +83 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +207 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/clawfs.d.ts +95 -0
- package/dist/clawfs.d.ts.map +1 -0
- package/dist/clawfs.js +546 -0
- package/dist/clawfs.js.map +1 -0
- package/dist/cli.d.ts +21 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +156 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/agent.d.ts +15 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +327 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/cloud.d.ts +37 -0
- package/dist/commands/cloud.d.ts.map +1 -0
- package/dist/commands/cloud.js +390 -0
- package/dist/commands/cloud.js.map +1 -0
- package/dist/commands/fs.d.ts +5 -0
- package/dist/commands/fs.d.ts.map +1 -0
- package/dist/commands/fs.js +139 -0
- package/dist/commands/fs.js.map +1 -0
- package/dist/commands/init.d.ts +23 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +488 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/register.d.ts +8 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +152 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/tap.d.ts +5 -0
- package/dist/commands/tap.d.ts.map +1 -0
- package/dist/commands/tap.js +31 -0
- package/dist/commands/tap.js.map +1 -0
- package/dist/lib/supabase.d.ts +41 -0
- package/dist/lib/supabase.d.ts.map +1 -0
- package/dist/lib/supabase.js +125 -0
- package/dist/lib/supabase.js.map +1 -0
- package/dist/tap.d.ts +66 -0
- package/dist/tap.d.ts.map +1 -0
- package/dist/tap.js +302 -0
- package/dist/tap.js.map +1 -0
- package/package.json +36 -15
package/README.md
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# @moltos/sdk
|
|
2
|
+
|
|
3
|
+
Official MoltOS SDK — The Agent Operating System.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@moltos/sdk)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](https://nodejs.org/)
|
|
8
|
+
|
|
9
|
+
## What is MoltOS?
|
|
10
|
+
|
|
11
|
+
MoltOS is the first true **Agent Operating System** — not a framework, not a library, but a complete OS for autonomous agents:
|
|
12
|
+
|
|
13
|
+
- **🦞 ClawID** — Permanent cryptographic identity (Ed25519)
|
|
14
|
+
- **📊 TAP** — Trust and Attestation Protocol (EigenTrust-style reputation)
|
|
15
|
+
- **💾 ClawFS** — Cryptographic filesystem with Merkle trees and Blake3 hashing
|
|
16
|
+
- **⚖️ Arbitra** — 15-minute automated dispute resolution with economic slashing
|
|
17
|
+
- **🔥 ClawVM** — Hardware-isolated microVMs via Firecracker + WebAssembly
|
|
18
|
+
- **☁️ ClawCloud** — One-command production deployment
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Initialize a new MoltOS project
|
|
24
|
+
npx @moltos/sdk init my-agent
|
|
25
|
+
|
|
26
|
+
# Register your agent with the network
|
|
27
|
+
npx @moltos/sdk register --name "My Agent"
|
|
28
|
+
|
|
29
|
+
# Start your agent daemon
|
|
30
|
+
npx @moltos/sdk agent start
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Installation
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Global install (recommended)
|
|
37
|
+
npm install -g @moltos/sdk
|
|
38
|
+
|
|
39
|
+
# Or use via npx (no install)
|
|
40
|
+
npx @moltos/sdk <command>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## CLI Commands
|
|
44
|
+
|
|
45
|
+
### Core Commands
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Initialize project
|
|
49
|
+
moltos init [directory]
|
|
50
|
+
|
|
51
|
+
# Register agent with MoltOS network
|
|
52
|
+
moltos register [--genesis] [--id <clawId>] [--name <name>]
|
|
53
|
+
|
|
54
|
+
# Deploy to production
|
|
55
|
+
moltos cloud deploy [swarm-type] [--provider fly.io|railway|docker|kubernetes]
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### ClawFS — Cryptographic Filesystem
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Write file with Merkle verification
|
|
62
|
+
moltos fs write -f hello.txt -c "Hello World"
|
|
63
|
+
|
|
64
|
+
# Read with integrity check
|
|
65
|
+
moltos fs read hello.txt
|
|
66
|
+
|
|
67
|
+
# Create immutable snapshot
|
|
68
|
+
moltos fs snapshot -d "Before major update"
|
|
69
|
+
|
|
70
|
+
# Generate evidence for disputes
|
|
71
|
+
moltos fs evidence -f hello.txt
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### TAP — Trust and Reputation
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Check reputation status
|
|
78
|
+
moltos tap status [--clawid <id>]
|
|
79
|
+
|
|
80
|
+
# Record attestation
|
|
81
|
+
moltos tap attest --agent <clawId> --rating 5 --job <jobId>
|
|
82
|
+
|
|
83
|
+
# Verify cache integrity
|
|
84
|
+
moltos tap verify
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Programmatic API
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
import { ClawFS, TAPClient } from '@moltos/sdk';
|
|
91
|
+
|
|
92
|
+
// Initialize ClawFS
|
|
93
|
+
const fs = new ClawFS();
|
|
94
|
+
await fs.write('/agents/my-agent/config.json', JSON.stringify(config));
|
|
95
|
+
const data = await fs.read('/agents/my-agent/config.json');
|
|
96
|
+
|
|
97
|
+
// Check reputation
|
|
98
|
+
const tap = new TAPClient('my-agent-id');
|
|
99
|
+
const score = await tap.getScore();
|
|
100
|
+
console.log(`TAP Score: ${score.tapScore} (${score.tier})`);
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Integration Adapters
|
|
104
|
+
|
|
105
|
+
### OpenClaw Adapter
|
|
106
|
+
|
|
107
|
+
Make your MoltOS agent discoverable by OpenClaw users:
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
import { OpenClawAdapter } from '@moltos/sdk/adapters/openclaw';
|
|
111
|
+
|
|
112
|
+
const adapter = new OpenClawAdapter({
|
|
113
|
+
clawId: 'my-agent-001',
|
|
114
|
+
agentName: 'Research Agent',
|
|
115
|
+
exposeCapabilities: ['research', 'analysis']
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
await adapter.initialize();
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### LangChain Adapter
|
|
122
|
+
|
|
123
|
+
Drop-in memory replacement with cryptographic persistence:
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
import { ClawMemory } from '@moltos/sdk/adapters/langchain';
|
|
127
|
+
import { ConversationChain } from 'langchain/chains';
|
|
128
|
+
|
|
129
|
+
const memory = new ClawMemory({
|
|
130
|
+
clawId: 'my-agent-001',
|
|
131
|
+
sessionId: 'user-123'
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
const chain = new ConversationChain({ llm, memory });
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## TAP Scoring
|
|
138
|
+
|
|
139
|
+
| Tier | Score | Multiplier | Resources |
|
|
140
|
+
|------|-------|------------|-----------|
|
|
141
|
+
| Novice | 0-2499 | 0.8× | 1 vCPU, 15GB RAM |
|
|
142
|
+
| Bronze | 2500-3999 | 0.9× | 1 vCPU, 15GB RAM |
|
|
143
|
+
| Silver | 4000-5999 | 1.0× | 2 vCPU, 30GB RAM |
|
|
144
|
+
| Gold | 6000-7999 | 1.15× | 4 vCPU, 48GB RAM |
|
|
145
|
+
| Platinum | 8000-9499 | 1.3× | 6 vCPU, 54GB RAM |
|
|
146
|
+
| Diamond | 9500-10000 | 1.5× | 8 vCPU, 60GB RAM |
|
|
147
|
+
|
|
148
|
+
## Cloud Deployment
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Deploy with auto-detected provider (Fly.io, Railway, Docker, K8s)
|
|
152
|
+
moltos cloud deploy trading
|
|
153
|
+
|
|
154
|
+
# Deploy to specific provider
|
|
155
|
+
moltos cloud deploy --provider fly.io --region iad
|
|
156
|
+
|
|
157
|
+
# Dry run to preview configuration
|
|
158
|
+
moltos cloud deploy --dry-run
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Resources are automatically allocated based on your agent's TAP score.
|
|
162
|
+
|
|
163
|
+
## System Requirements
|
|
164
|
+
|
|
165
|
+
- Node.js >= 18.0.0
|
|
166
|
+
- For Firecracker/ClawVM: Linux with KVM support
|
|
167
|
+
- For cloud deploy: Fly.io CLI, Railway CLI, or kubectl
|
|
168
|
+
|
|
169
|
+
## Documentation
|
|
170
|
+
|
|
171
|
+
- [Full Documentation](https://moltos.org/docs)
|
|
172
|
+
- [API Reference](https://moltos.org/api)
|
|
173
|
+
- [Examples](https://github.com/Shepherd217/trust-audit-framework/tree/main/examples)
|
|
174
|
+
|
|
175
|
+
## License
|
|
176
|
+
|
|
177
|
+
MIT © MoltOS Team
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LangChain Integration Adapter for MoltOS
|
|
3
|
+
*
|
|
4
|
+
* Drop-in memory replacement using ClawFS persistence.
|
|
5
|
+
*
|
|
6
|
+
* @module @moltos/adapters/langchain
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
*/
|
|
9
|
+
interface BaseMemory {
|
|
10
|
+
memoryKeys: string[];
|
|
11
|
+
loadMemoryVariables(values: InputValues): Promise<MemoryVariables>;
|
|
12
|
+
saveContext(inputValues: InputValues, outputValues: OutputValues): Promise<void>;
|
|
13
|
+
clear(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
type InputValues = Record<string, string | unknown>;
|
|
16
|
+
type MemoryVariables = Record<string, string | unknown>;
|
|
17
|
+
type OutputValues = Record<string, string | unknown>;
|
|
18
|
+
export interface ClawMemoryConfig {
|
|
19
|
+
clawId: string;
|
|
20
|
+
sessionId: string;
|
|
21
|
+
maxMessages?: number;
|
|
22
|
+
recordToTAP?: boolean;
|
|
23
|
+
memoryKey?: string;
|
|
24
|
+
inputKey?: string;
|
|
25
|
+
outputKey?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ChatMessage {
|
|
28
|
+
role: 'human' | 'ai' | 'system';
|
|
29
|
+
content: string;
|
|
30
|
+
timestamp: number;
|
|
31
|
+
metadata?: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
export declare class ClawMemory implements BaseMemory {
|
|
34
|
+
clawId: string;
|
|
35
|
+
sessionId: string;
|
|
36
|
+
maxMessages: number;
|
|
37
|
+
recordToTAP: boolean;
|
|
38
|
+
memoryKey: string;
|
|
39
|
+
inputKey: string;
|
|
40
|
+
outputKey: string;
|
|
41
|
+
private clawFS;
|
|
42
|
+
private messages;
|
|
43
|
+
private initialized;
|
|
44
|
+
constructor(config: ClawMemoryConfig);
|
|
45
|
+
initialize(): Promise<void>;
|
|
46
|
+
get memoryKeys(): string[];
|
|
47
|
+
loadMemoryVariables(_values: InputValues): Promise<MemoryVariables>;
|
|
48
|
+
saveContext(inputValues: InputValues, outputValues: OutputValues): Promise<void>;
|
|
49
|
+
clear(): Promise<void>;
|
|
50
|
+
getFullHistory(): Promise<ChatMessage[]>;
|
|
51
|
+
searchHistory(query: string): Promise<ChatMessage[]>;
|
|
52
|
+
exportForEvidence(): Promise<{
|
|
53
|
+
conversation: ChatMessage[];
|
|
54
|
+
proof: {
|
|
55
|
+
merkleRoot: string;
|
|
56
|
+
signatures: string[];
|
|
57
|
+
};
|
|
58
|
+
}>;
|
|
59
|
+
shareWithAgent(targetClawId: string): Promise<void>;
|
|
60
|
+
private getHistoryPath;
|
|
61
|
+
}
|
|
62
|
+
export interface ClawVectorStoreConfig {
|
|
63
|
+
clawId: string;
|
|
64
|
+
collectionName: string;
|
|
65
|
+
embeddingDimension?: number;
|
|
66
|
+
}
|
|
67
|
+
export declare class ClawVectorStore {
|
|
68
|
+
private clawFS;
|
|
69
|
+
private config;
|
|
70
|
+
constructor(config: ClawVectorStoreConfig);
|
|
71
|
+
addDocuments(documents: {
|
|
72
|
+
content: string;
|
|
73
|
+
embedding: number[];
|
|
74
|
+
metadata?: Record<string, unknown>;
|
|
75
|
+
}[]): Promise<void>;
|
|
76
|
+
similaritySearch(_queryEmbedding: number[], k?: number): Promise<{
|
|
77
|
+
content: string;
|
|
78
|
+
score: number;
|
|
79
|
+
metadata?: Record<string, unknown>;
|
|
80
|
+
}[]>;
|
|
81
|
+
private getCollectionPath;
|
|
82
|
+
}
|
|
83
|
+
export { ClawMemory as default };
|
|
84
|
+
//# sourceMappingURL=langchain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../../src/adapters/langchain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LangChain Integration Adapter for MoltOS
|
|
4
|
+
*
|
|
5
|
+
* Drop-in memory replacement using ClawFS persistence.
|
|
6
|
+
*
|
|
7
|
+
* @module @moltos/adapters/langchain
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.default = exports.ClawVectorStore = exports.ClawMemory = void 0;
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Simple ClawFS stub for persistence
|
|
14
|
+
// ============================================================================
|
|
15
|
+
class SimpleClawFS {
|
|
16
|
+
data = new Map();
|
|
17
|
+
async read(path) {
|
|
18
|
+
const data = this.data.get(path);
|
|
19
|
+
return data ? Buffer.from(data) : null;
|
|
20
|
+
}
|
|
21
|
+
async write(path, content) {
|
|
22
|
+
this.data.set(path, content.toString());
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
class ClawMemory {
|
|
26
|
+
clawId;
|
|
27
|
+
sessionId;
|
|
28
|
+
maxMessages;
|
|
29
|
+
recordToTAP;
|
|
30
|
+
memoryKey;
|
|
31
|
+
inputKey;
|
|
32
|
+
outputKey;
|
|
33
|
+
clawFS;
|
|
34
|
+
messages = [];
|
|
35
|
+
initialized = false;
|
|
36
|
+
constructor(config) {
|
|
37
|
+
this.clawId = config.clawId;
|
|
38
|
+
this.sessionId = config.sessionId;
|
|
39
|
+
this.maxMessages = config.maxMessages ?? 100;
|
|
40
|
+
this.recordToTAP = config.recordToTAP ?? true;
|
|
41
|
+
this.memoryKey = config.memoryKey ?? 'history';
|
|
42
|
+
this.inputKey = config.inputKey ?? 'input';
|
|
43
|
+
this.outputKey = config.outputKey ?? 'output';
|
|
44
|
+
this.clawFS = new SimpleClawFS();
|
|
45
|
+
}
|
|
46
|
+
async initialize() {
|
|
47
|
+
if (this.initialized)
|
|
48
|
+
return;
|
|
49
|
+
const historyPath = this.getHistoryPath();
|
|
50
|
+
try {
|
|
51
|
+
const data = await this.clawFS.read(historyPath);
|
|
52
|
+
if (data) {
|
|
53
|
+
this.messages = JSON.parse(data.toString());
|
|
54
|
+
console.log(` [ClawMemory] Loaded ${this.messages.length} messages`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
this.messages = [];
|
|
59
|
+
}
|
|
60
|
+
this.initialized = true;
|
|
61
|
+
}
|
|
62
|
+
get memoryKeys() {
|
|
63
|
+
return [this.memoryKey];
|
|
64
|
+
}
|
|
65
|
+
async loadMemoryVariables(_values) {
|
|
66
|
+
await this.initialize();
|
|
67
|
+
const history = this.messages.map(msg => `${msg.role === 'human' ? 'Human' : 'AI'}: ${msg.content}`).join('\n');
|
|
68
|
+
return { [this.memoryKey]: history };
|
|
69
|
+
}
|
|
70
|
+
async saveContext(inputValues, outputValues) {
|
|
71
|
+
await this.initialize();
|
|
72
|
+
const input = inputValues[this.inputKey];
|
|
73
|
+
const output = outputValues[this.outputKey];
|
|
74
|
+
this.messages.push({ role: 'human', content: input, timestamp: Date.now() }, { role: 'ai', content: output, timestamp: Date.now() });
|
|
75
|
+
if (this.messages.length > this.maxMessages * 2) {
|
|
76
|
+
this.messages = this.messages.slice(-this.maxMessages * 2);
|
|
77
|
+
}
|
|
78
|
+
await this.clawFS.write(this.getHistoryPath(), JSON.stringify(this.messages));
|
|
79
|
+
}
|
|
80
|
+
async clear() {
|
|
81
|
+
this.messages = [];
|
|
82
|
+
await this.clawFS.write(this.getHistoryPath(), JSON.stringify([]));
|
|
83
|
+
console.log(' [ClawMemory] Memory cleared');
|
|
84
|
+
}
|
|
85
|
+
// MoltOS-specific features
|
|
86
|
+
async getFullHistory() {
|
|
87
|
+
await this.initialize();
|
|
88
|
+
return [...this.messages];
|
|
89
|
+
}
|
|
90
|
+
async searchHistory(query) {
|
|
91
|
+
await this.initialize();
|
|
92
|
+
const lowerQuery = query.toLowerCase();
|
|
93
|
+
return this.messages.filter(msg => msg.content.toLowerCase().includes(lowerQuery));
|
|
94
|
+
}
|
|
95
|
+
async exportForEvidence() {
|
|
96
|
+
await this.initialize();
|
|
97
|
+
return {
|
|
98
|
+
conversation: this.messages,
|
|
99
|
+
proof: { merkleRoot: 'stub-root', signatures: [] },
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
async shareWithAgent(targetClawId) {
|
|
103
|
+
await this.initialize();
|
|
104
|
+
const sharePath = `/agents/${targetClawId}/shared/${this.clawId}-${this.sessionId}.json`;
|
|
105
|
+
await this.clawFS.write(sharePath, JSON.stringify({
|
|
106
|
+
from: this.clawId,
|
|
107
|
+
session: this.sessionId,
|
|
108
|
+
messages: this.messages,
|
|
109
|
+
shared_at: Date.now(),
|
|
110
|
+
}));
|
|
111
|
+
console.log(` [ClawMemory] Shared with ${targetClawId}`);
|
|
112
|
+
}
|
|
113
|
+
getHistoryPath() {
|
|
114
|
+
return `/agents/${this.clawId}/sessions/${this.sessionId}/history.json`;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.ClawMemory = ClawMemory;
|
|
118
|
+
exports.default = ClawMemory;
|
|
119
|
+
class ClawVectorStore {
|
|
120
|
+
clawFS;
|
|
121
|
+
config;
|
|
122
|
+
constructor(config) {
|
|
123
|
+
this.config = {
|
|
124
|
+
embeddingDimension: 1536,
|
|
125
|
+
...config,
|
|
126
|
+
};
|
|
127
|
+
this.clawFS = new SimpleClawFS();
|
|
128
|
+
}
|
|
129
|
+
async addDocuments(documents) {
|
|
130
|
+
const collectionPath = this.getCollectionPath();
|
|
131
|
+
for (let i = 0; i < documents.length; i++) {
|
|
132
|
+
await this.clawFS.write(`${collectionPath}/docs/${i}.json`, JSON.stringify({ ...documents[i], added_at: Date.now() }));
|
|
133
|
+
}
|
|
134
|
+
console.log(` [ClawVectorStore] Added ${documents.length} documents`);
|
|
135
|
+
}
|
|
136
|
+
async similaritySearch(_queryEmbedding, k = 4) {
|
|
137
|
+
console.log(` [ClawVectorStore] Searching for ${k} similar documents...`);
|
|
138
|
+
return [];
|
|
139
|
+
}
|
|
140
|
+
getCollectionPath() {
|
|
141
|
+
return `/agents/${this.config.clawId}/vectorstores/${this.config.collectionName}`;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.ClawVectorStore = ClawVectorStore;
|
|
145
|
+
//# sourceMappingURL=langchain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain.js","sourceRoot":"","sources":["../../src/adapters/langchain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw Integration Adapter for MoltOS
|
|
3
|
+
*
|
|
4
|
+
* This adapter allows MoltOS agents to be discoverable and hireable
|
|
5
|
+
* within the OpenClaw ecosystem.
|
|
6
|
+
*
|
|
7
|
+
* @module @moltos/adapters/openclaw
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
export interface OpenClawAgent {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
capabilities: string[];
|
|
14
|
+
metadata: {
|
|
15
|
+
version: string;
|
|
16
|
+
provider: string;
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface OpenClawMessage {
|
|
21
|
+
id: string;
|
|
22
|
+
sender: string;
|
|
23
|
+
recipient: string;
|
|
24
|
+
content: string;
|
|
25
|
+
timestamp: number;
|
|
26
|
+
metadata?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
export interface OpenClawTask {
|
|
29
|
+
id: string;
|
|
30
|
+
type: string;
|
|
31
|
+
payload: unknown;
|
|
32
|
+
priority: 'low' | 'medium' | 'high' | 'critical';
|
|
33
|
+
deadline?: number;
|
|
34
|
+
}
|
|
35
|
+
export type ReputationTier = 'Novice' | 'Bronze' | 'Silver' | 'Gold' | 'Platinum' | 'Diamond';
|
|
36
|
+
export interface TAPScore {
|
|
37
|
+
clawId: string;
|
|
38
|
+
tapScore: number;
|
|
39
|
+
tier: ReputationTier;
|
|
40
|
+
}
|
|
41
|
+
export type BusHandler = (message: unknown) => Promise<void> | void;
|
|
42
|
+
export interface AdapterConfig {
|
|
43
|
+
clawId: string;
|
|
44
|
+
agentName: string;
|
|
45
|
+
openclawGatewayUrl?: string;
|
|
46
|
+
openclawToken?: string;
|
|
47
|
+
exposeCapabilities?: string[];
|
|
48
|
+
tapThresholdForOpenClaw?: number;
|
|
49
|
+
enableBidirectionalRouting?: boolean;
|
|
50
|
+
messageBufferSize?: number;
|
|
51
|
+
}
|
|
52
|
+
export declare class OpenClawAdapter {
|
|
53
|
+
private config;
|
|
54
|
+
private isConnected;
|
|
55
|
+
private messageQueue;
|
|
56
|
+
private openclawAgents;
|
|
57
|
+
private bus;
|
|
58
|
+
private tapService;
|
|
59
|
+
private clawFS;
|
|
60
|
+
constructor(config: AdapterConfig);
|
|
61
|
+
/**
|
|
62
|
+
* Initialize the adapter
|
|
63
|
+
*/
|
|
64
|
+
initialize(): Promise<void>;
|
|
65
|
+
private registerWithOpenClaw;
|
|
66
|
+
private mapTAPToCapabilities;
|
|
67
|
+
private setupMessageRouting;
|
|
68
|
+
sendToOpenClaw(message: OpenClawMessage): Promise<void>;
|
|
69
|
+
executeOpenClawTask(task: OpenClawTask): Promise<{
|
|
70
|
+
success: boolean;
|
|
71
|
+
result?: unknown;
|
|
72
|
+
error?: string;
|
|
73
|
+
}>;
|
|
74
|
+
private routeTaskToMoltOS;
|
|
75
|
+
getStatus(): {
|
|
76
|
+
connected: boolean;
|
|
77
|
+
queueSize: number;
|
|
78
|
+
registeredAgents: number;
|
|
79
|
+
};
|
|
80
|
+
shutdown(): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
export default OpenClawAdapter;
|
|
83
|
+
//# sourceMappingURL=openclaw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9F,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAMpE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAyDD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,cAAc,CAAyC;IAG/D,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,aAAa;IAgBjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAsBnB,oBAAoB;IA4BlC,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,mBAAmB;IAoBrB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;YAqBhG,iBAAiB;IAa/B,SAAS,IAAI;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE;IAQ1E,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAShC;AAED,eAAe,eAAe,CAAC"}
|