@moltos/sdk 0.7.1 ā 0.7.3
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/dist/cli.js +380 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/arbitra.d.ts +54 -0
- package/dist/commands/arbitra.d.ts.map +1 -0
- package/dist/commands/arbitra.js +321 -0
- package/dist/commands/arbitra.js.map +1 -0
- package/dist/commands/clawid-cmd.d.ts +18 -0
- package/dist/commands/clawid-cmd.d.ts.map +1 -0
- package/dist/commands/clawid-cmd.js +217 -0
- package/dist/commands/clawid-cmd.js.map +1 -0
- package/dist/lib/forge.d.ts +139 -0
- package/dist/lib/forge.d.ts.map +1 -0
- package/dist/lib/forge.js +461 -0
- package/dist/lib/forge.js.map +1 -0
- package/dist/lib/scheduler.d.ts +138 -0
- package/dist/lib/scheduler.d.ts.map +1 -0
- package/dist/lib/scheduler.js +597 -0
- package/dist/lib/scheduler.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.fileDispute = fileDispute;
|
|
37
|
+
exports.viewDispute = viewDispute;
|
|
38
|
+
exports.voteDispute = voteDispute;
|
|
39
|
+
exports.listDisputes = listDisputes;
|
|
40
|
+
exports.arbitraCommand = arbitraCommand;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const MIN_DISPUTE_STAKE = 100; // TAP stake required
|
|
44
|
+
const DISPUTE_WINDOW_HOURS = 48; // Evidence period
|
|
45
|
+
/**
|
|
46
|
+
* File a new dispute
|
|
47
|
+
*/
|
|
48
|
+
async function fileDispute(options, clawId, privateKey, tapScore) {
|
|
49
|
+
console.log('šļø Filing Arbitra Dispute\n');
|
|
50
|
+
// Validate stake
|
|
51
|
+
const stake = parseInt(options.stake || String(MIN_DISPUTE_STAKE), 10);
|
|
52
|
+
if (stake < MIN_DISPUTE_STAKE) {
|
|
53
|
+
console.error(`ā Minimum stake is ${MIN_DISPUTE_STAKE} TAP`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (tapScore < stake) {
|
|
57
|
+
console.error(`ā Insufficient TAP. You have ${tapScore}, need ${stake}`);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Load evidence if provided
|
|
61
|
+
let evidenceData = null;
|
|
62
|
+
if (options.evidence) {
|
|
63
|
+
const evidencePath = path.resolve(options.evidence);
|
|
64
|
+
if (!fs.existsSync(evidencePath)) {
|
|
65
|
+
console.error(`ā Evidence file not found: ${evidencePath}`);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
evidenceData = fs.readFileSync(evidencePath, 'utf8');
|
|
69
|
+
}
|
|
70
|
+
// Create dispute record
|
|
71
|
+
const disputeId = `disp_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
72
|
+
const dispute = {
|
|
73
|
+
id: disputeId,
|
|
74
|
+
jobId: options.jobId,
|
|
75
|
+
initiator: clawId,
|
|
76
|
+
respondent: options.respondent,
|
|
77
|
+
reason: options.reason,
|
|
78
|
+
evidence: evidenceData,
|
|
79
|
+
stake,
|
|
80
|
+
status: 'pending_evidence',
|
|
81
|
+
createdAt: new Date().toISOString(),
|
|
82
|
+
evidenceDeadline: new Date(Date.now() + DISPUTE_WINDOW_HOURS * 60 * 60 * 1000).toISOString(),
|
|
83
|
+
votes: {},
|
|
84
|
+
};
|
|
85
|
+
// Store locally
|
|
86
|
+
const disputesPath = path.join(process.cwd(), '.moltos', 'disputes.json');
|
|
87
|
+
const disputes = fs.existsSync(disputesPath)
|
|
88
|
+
? JSON.parse(fs.readFileSync(disputesPath, 'utf8'))
|
|
89
|
+
: {};
|
|
90
|
+
disputes[disputeId] = dispute;
|
|
91
|
+
fs.writeFileSync(disputesPath, JSON.stringify(disputes, null, 2));
|
|
92
|
+
// Sign dispute
|
|
93
|
+
const { default: ed25519 } = await Promise.resolve().then(() => __importStar(require('@noble/ed25519')));
|
|
94
|
+
const message = JSON.stringify({
|
|
95
|
+
disputeId,
|
|
96
|
+
jobId: options.jobId,
|
|
97
|
+
reason: options.reason,
|
|
98
|
+
stake,
|
|
99
|
+
});
|
|
100
|
+
const signature = await ed25519.signAsync(Buffer.from(message), Buffer.from(privateKey, 'base64'));
|
|
101
|
+
console.log(`ā
Dispute filed: ${disputeId}`);
|
|
102
|
+
console.log(` Job: ${options.jobId}`);
|
|
103
|
+
console.log(` Against: ${options.respondent}`);
|
|
104
|
+
console.log(` Stake: ${stake} TAP`);
|
|
105
|
+
console.log(` Evidence deadline: ${dispute.evidenceDeadline}`);
|
|
106
|
+
console.log(`\nš Next steps:`);
|
|
107
|
+
console.log(` 1. Both parties submit evidence within ${DISPUTE_WINDOW_HOURS} hours`);
|
|
108
|
+
console.log(` 2. Committee will be selected`);
|
|
109
|
+
console.log(` 3. Voting opens for 15 minutes`);
|
|
110
|
+
if (options.json) {
|
|
111
|
+
console.log(JSON.stringify({
|
|
112
|
+
success: true,
|
|
113
|
+
disputeId,
|
|
114
|
+
status: 'pending_evidence',
|
|
115
|
+
evidenceDeadline: dispute.evidenceDeadline,
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* View dispute details
|
|
121
|
+
*/
|
|
122
|
+
async function viewDispute(options) {
|
|
123
|
+
const disputesPath = path.join(process.cwd(), '.moltos', 'disputes.json');
|
|
124
|
+
if (!fs.existsSync(disputesPath)) {
|
|
125
|
+
console.error('ā No disputes found');
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const disputes = JSON.parse(fs.readFileSync(disputesPath, 'utf8'));
|
|
129
|
+
const dispute = disputes[options.disputeId];
|
|
130
|
+
if (!dispute) {
|
|
131
|
+
console.error(`ā Dispute not found: ${options.disputeId}`);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (options.json) {
|
|
135
|
+
console.log(JSON.stringify(dispute, null, 2));
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
console.log(`\nš Dispute: ${dispute.id}`);
|
|
139
|
+
console.log(` Status: ${dispute.status}`);
|
|
140
|
+
console.log(` Job: ${dispute.jobId}`);
|
|
141
|
+
console.log(` Initiator: ${dispute.initiator}`);
|
|
142
|
+
console.log(` Respondent: ${dispute.respondent}`);
|
|
143
|
+
console.log(` Stake: ${dispute.stake} TAP`);
|
|
144
|
+
console.log(` Created: ${dispute.createdAt}`);
|
|
145
|
+
if (dispute.evidenceDeadline) {
|
|
146
|
+
const deadline = new Date(dispute.evidenceDeadline);
|
|
147
|
+
const now = new Date();
|
|
148
|
+
const hoursLeft = Math.max(0, (deadline.getTime() - now.getTime()) / (60 * 60 * 1000));
|
|
149
|
+
console.log(` Evidence window: ${hoursLeft.toFixed(1)} hours remaining`);
|
|
150
|
+
}
|
|
151
|
+
if (dispute.committee) {
|
|
152
|
+
console.log(`\nš„ Committee (${dispute.committee.length} members):`);
|
|
153
|
+
dispute.committee.forEach((member) => {
|
|
154
|
+
const voted = dispute.votes[member] ? 'ā
' : 'ā³';
|
|
155
|
+
console.log(` ${voted} ${member}`);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
if (dispute.resolution) {
|
|
159
|
+
console.log(`\nāļø Resolution: ${dispute.resolution}`);
|
|
160
|
+
console.log(` Executed: ${dispute.resolvedAt || 'Pending'}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Submit vote as committee member
|
|
165
|
+
*/
|
|
166
|
+
async function voteDispute(options, clawId, privateKey) {
|
|
167
|
+
const disputesPath = path.join(process.cwd(), '.moltos', 'disputes.json');
|
|
168
|
+
if (!fs.existsSync(disputesPath)) {
|
|
169
|
+
console.error('ā No disputes found');
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const disputes = JSON.parse(fs.readFileSync(disputesPath, 'utf8'));
|
|
173
|
+
const dispute = disputes[options.disputeId];
|
|
174
|
+
if (!dispute) {
|
|
175
|
+
console.error(`ā Dispute not found: ${options.disputeId}`);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
// Verify membership
|
|
179
|
+
if (!dispute.committee?.includes(clawId)) {
|
|
180
|
+
console.error('ā You are not on this dispute\'s committee');
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// Check voting window
|
|
184
|
+
if (dispute.status !== 'voting') {
|
|
185
|
+
console.error(`ā Voting not open. Status: ${dispute.status}`);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
// Check deadline
|
|
189
|
+
if (dispute.votingDeadline) {
|
|
190
|
+
const deadline = new Date(dispute.votingDeadline);
|
|
191
|
+
if (new Date() > deadline) {
|
|
192
|
+
console.error('ā Voting window has closed');
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Sign vote
|
|
197
|
+
const { default: ed25519 } = await Promise.resolve().then(() => __importStar(require('@noble/ed25519')));
|
|
198
|
+
const message = JSON.stringify({
|
|
199
|
+
disputeId: options.disputeId,
|
|
200
|
+
voter: clawId,
|
|
201
|
+
vote: options.vote,
|
|
202
|
+
timestamp: Date.now(),
|
|
203
|
+
});
|
|
204
|
+
const signature = await ed25519.signAsync(Buffer.from(message), Buffer.from(privateKey, 'base64'));
|
|
205
|
+
// Record vote
|
|
206
|
+
dispute.votes[clawId] = {
|
|
207
|
+
vote: options.vote,
|
|
208
|
+
reason: options.reason,
|
|
209
|
+
timestamp: new Date().toISOString(),
|
|
210
|
+
signature: Buffer.from(signature).toString('base64'),
|
|
211
|
+
};
|
|
212
|
+
fs.writeFileSync(disputesPath, JSON.stringify(disputes, null, 2));
|
|
213
|
+
console.log(`ā
Vote recorded: ${options.vote}`);
|
|
214
|
+
console.log(` Dispute: ${options.disputeId}`);
|
|
215
|
+
const voteCount = Object.keys(dispute.votes).length;
|
|
216
|
+
const totalMembers = dispute.committee.length;
|
|
217
|
+
console.log(` Progress: ${voteCount}/${totalMembers} votes cast`);
|
|
218
|
+
if (options.json) {
|
|
219
|
+
console.log(JSON.stringify({
|
|
220
|
+
success: true,
|
|
221
|
+
vote: options.vote,
|
|
222
|
+
progress: `${voteCount}/${totalMembers}`,
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* List disputes
|
|
228
|
+
*/
|
|
229
|
+
async function listDisputes(options) {
|
|
230
|
+
const disputesPath = path.join(process.cwd(), '.moltos', 'disputes.json');
|
|
231
|
+
if (!fs.existsSync(disputesPath)) {
|
|
232
|
+
if (options.json) {
|
|
233
|
+
console.log(JSON.stringify({ disputes: [] }));
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
console.log('No disputes found');
|
|
237
|
+
}
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const disputes = JSON.parse(fs.readFileSync(disputesPath, 'utf8'));
|
|
241
|
+
const statusFilter = options.status || 'all';
|
|
242
|
+
const limit = parseInt(options.limit || '20', 10);
|
|
243
|
+
const filtered = Object.values(disputes)
|
|
244
|
+
.filter((d) => statusFilter === 'all' || d.status === statusFilter)
|
|
245
|
+
.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())
|
|
246
|
+
.slice(0, limit);
|
|
247
|
+
if (options.json) {
|
|
248
|
+
console.log(JSON.stringify({ disputes: filtered }, null, 2));
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
if (filtered.length === 0) {
|
|
252
|
+
console.log('No disputes found');
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
console.log(`\nāļø Arbitra Disputes (${filtered.length})\n`);
|
|
256
|
+
for (const d of filtered) {
|
|
257
|
+
const icon = d.status === 'resolved' ? 'ā
' :
|
|
258
|
+
d.status === 'voting' ? 'š³ļø' :
|
|
259
|
+
d.status === 'pending_evidence' ? 'š' : 'ā³';
|
|
260
|
+
console.log(`${icon} ${d.id}`);
|
|
261
|
+
console.log(` Job: ${d.jobId}`);
|
|
262
|
+
console.log(` Status: ${d.status}`);
|
|
263
|
+
console.log(` Stake: ${d.stake} TAP`);
|
|
264
|
+
console.log(` Created: ${new Date(d.createdAt).toLocaleDateString()}`);
|
|
265
|
+
if (d.votes) {
|
|
266
|
+
const voteCount = Object.keys(d.votes).length;
|
|
267
|
+
const total = d.committee?.length || 7;
|
|
268
|
+
console.log(` Votes: ${voteCount}/${total}`);
|
|
269
|
+
}
|
|
270
|
+
console.log('');
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* CLI command handler
|
|
275
|
+
*/
|
|
276
|
+
async function arbitraCommand(action, options) {
|
|
277
|
+
// Load credentials
|
|
278
|
+
const fs = require('fs');
|
|
279
|
+
const path = require('path');
|
|
280
|
+
const clawIdPath = path.join(process.cwd(), '.moltos', 'clawid.json');
|
|
281
|
+
const cachePath = path.join(process.cwd(), '.moltos', 'tap-cache.db');
|
|
282
|
+
const passPath = path.join(process.cwd(), '.moltos', '.keypass');
|
|
283
|
+
if (!fs.existsSync(clawIdPath)) {
|
|
284
|
+
console.error('ā No ClawID found. Run "moltos init" first.');
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const clawId = JSON.parse(fs.readFileSync(clawIdPath, 'utf8'));
|
|
288
|
+
// Get TAP score
|
|
289
|
+
let tapScore = 1000;
|
|
290
|
+
if (fs.existsSync(cachePath)) {
|
|
291
|
+
const cache = JSON.parse(fs.readFileSync(cachePath, 'utf8'));
|
|
292
|
+
const rep = cache.localReputation?.[clawId.id];
|
|
293
|
+
if (rep)
|
|
294
|
+
tapScore = rep.score;
|
|
295
|
+
}
|
|
296
|
+
// Decrypt private key
|
|
297
|
+
const crypto = require('crypto');
|
|
298
|
+
const keyPath = path.join(process.cwd(), '.moltos', 'clawid.key');
|
|
299
|
+
const encryptedKey = fs.readFileSync(keyPath, 'utf8');
|
|
300
|
+
const keyData = JSON.parse(encryptedKey);
|
|
301
|
+
const key = crypto.pbkdf2Sync(fs.readFileSync(passPath, 'utf8'), Buffer.from(keyData.salt, 'base64'), 100000, 32, 'sha256');
|
|
302
|
+
const decipher = crypto.createDecipheriv('aes-256-gcm', key, Buffer.from(keyData.iv, 'base64'));
|
|
303
|
+
decipher.setAuthTag(Buffer.from(keyData.authTag, 'base64'));
|
|
304
|
+
let privateKey = decipher.update(keyData.encrypted, 'hex', 'utf8');
|
|
305
|
+
privateKey += decipher.final('utf8');
|
|
306
|
+
switch (action) {
|
|
307
|
+
case 'file':
|
|
308
|
+
await fileDispute(options, clawId.id, privateKey, tapScore);
|
|
309
|
+
break;
|
|
310
|
+
case 'view':
|
|
311
|
+
await viewDispute(options);
|
|
312
|
+
break;
|
|
313
|
+
case 'vote':
|
|
314
|
+
await voteDispute(options, clawId.id, privateKey);
|
|
315
|
+
break;
|
|
316
|
+
case 'list':
|
|
317
|
+
await listDisputes(options);
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=arbitra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arbitra.js","sourceRoot":"","sources":["../../src/commands/arbitra.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export ClawID to portable package
|
|
3
|
+
*/
|
|
4
|
+
export declare function exportClawId(outputPath: string, password: string): Promise<boolean>;
|
|
5
|
+
/**
|
|
6
|
+
* Import ClawID from portable package
|
|
7
|
+
*/
|
|
8
|
+
export declare function importClawId(packagePath: string, password: string, force?: boolean): Promise<boolean>;
|
|
9
|
+
/**
|
|
10
|
+
* CLI command handler
|
|
11
|
+
*/
|
|
12
|
+
export declare function clawIdCommand(action: 'export' | 'import', options: {
|
|
13
|
+
output?: string;
|
|
14
|
+
file?: string;
|
|
15
|
+
force?: boolean;
|
|
16
|
+
json?: boolean;
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=clawid-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clawid-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/clawid-cmd.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CA+ElB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,OAAO,CAAC,CAsGlB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAC3B,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3E,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.exportClawId = exportClawId;
|
|
37
|
+
exports.importClawId = importClawId;
|
|
38
|
+
exports.clawIdCommand = clawIdCommand;
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const crypto = __importStar(require("crypto"));
|
|
42
|
+
/**
|
|
43
|
+
* Export ClawID to portable package
|
|
44
|
+
*/
|
|
45
|
+
async function exportClawId(outputPath, password) {
|
|
46
|
+
const moltosPath = path.join(process.cwd(), '.moltos');
|
|
47
|
+
const clawIdPath = path.join(moltosPath, 'clawid.json');
|
|
48
|
+
const keyPath = path.join(moltosPath, 'clawid.key');
|
|
49
|
+
if (!fs.existsSync(clawIdPath) || !fs.existsSync(keyPath)) {
|
|
50
|
+
console.error('ā No ClawID found. Run "moltos init" first.');
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
const clawId = JSON.parse(fs.readFileSync(clawIdPath, 'utf8'));
|
|
54
|
+
const encryptedKeyData = JSON.parse(fs.readFileSync(keyPath, 'utf8'));
|
|
55
|
+
// Decrypt private key with stored password
|
|
56
|
+
const keyPassPath = path.join(moltosPath, '.keypass');
|
|
57
|
+
if (!fs.existsSync(keyPassPath)) {
|
|
58
|
+
console.error('ā Key password not found. Cannot export.');
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
const keyPassword = fs.readFileSync(keyPassPath, 'utf8');
|
|
62
|
+
const key = crypto.pbkdf2Sync(keyPassword, Buffer.from(encryptedKeyData.salt, 'base64'), 100000, 32, 'sha256');
|
|
63
|
+
const decipher = crypto.createDecipheriv('aes-256-gcm', key, Buffer.from(encryptedKeyData.iv, 'base64'));
|
|
64
|
+
decipher.setAuthTag(Buffer.from(encryptedKeyData.authTag, 'base64'));
|
|
65
|
+
let privateKey = decipher.update(encryptedKeyData.encrypted, 'hex', 'utf8');
|
|
66
|
+
privateKey += decipher.final('utf8');
|
|
67
|
+
// Re-encrypt with export password
|
|
68
|
+
const exportSalt = crypto.randomBytes(16);
|
|
69
|
+
const exportKey = crypto.pbkdf2Sync(password, exportSalt, 100000, 32, 'sha256');
|
|
70
|
+
const exportIv = crypto.randomBytes(12);
|
|
71
|
+
const cipher = crypto.createCipheriv('aes-256-gcm', exportKey, exportIv);
|
|
72
|
+
let encryptedPrivateKey = cipher.update(privateKey, 'utf8', 'hex');
|
|
73
|
+
encryptedPrivateKey += cipher.final('hex');
|
|
74
|
+
const authTag = cipher.getAuthTag();
|
|
75
|
+
// Create package
|
|
76
|
+
const packageData = {
|
|
77
|
+
version: '1.0',
|
|
78
|
+
clawId: clawId.id,
|
|
79
|
+
publicKey: clawId.publicKey,
|
|
80
|
+
encryptedPrivateKey,
|
|
81
|
+
salt: exportSalt.toString('base64'),
|
|
82
|
+
iv: exportIv.toString('base64'),
|
|
83
|
+
authTag: authTag.toString('base64'),
|
|
84
|
+
createdAt: new Date().toISOString(),
|
|
85
|
+
checksum: '', // Will be computed
|
|
86
|
+
};
|
|
87
|
+
// Compute checksum
|
|
88
|
+
const checksumData = { ...packageData, checksum: undefined };
|
|
89
|
+
packageData.checksum = crypto
|
|
90
|
+
.createHash('blake3')
|
|
91
|
+
.update(JSON.stringify(checksumData))
|
|
92
|
+
.digest('hex');
|
|
93
|
+
// Write package
|
|
94
|
+
fs.writeFileSync(outputPath, JSON.stringify(packageData, null, 2));
|
|
95
|
+
console.log(`ā
ClawID exported: ${outputPath}`);
|
|
96
|
+
console.log(` Identity: ${clawId.id}`);
|
|
97
|
+
console.log(` Created: ${packageData.createdAt}`);
|
|
98
|
+
console.log(` š Encrypted with your password`);
|
|
99
|
+
console.log(`\nā ļø Keep this file secure. Anyone with the password controls your identity.`);
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Import ClawID from portable package
|
|
104
|
+
*/
|
|
105
|
+
async function importClawId(packagePath, password, force = false) {
|
|
106
|
+
if (!fs.existsSync(packagePath)) {
|
|
107
|
+
console.error(`ā Package not found: ${packagePath}`);
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const moltosPath = path.join(process.cwd(), '.moltos');
|
|
111
|
+
// Check for existing identity
|
|
112
|
+
const existingClawIdPath = path.join(moltosPath, 'clawid.json');
|
|
113
|
+
if (fs.existsSync(existingClawIdPath) && !force) {
|
|
114
|
+
console.error('ā ClawID already exists. Use --force to overwrite.');
|
|
115
|
+
console.error(' Warning: This will replace your current identity!');
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
// Load and verify package
|
|
119
|
+
const packageData = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
|
|
120
|
+
// Verify checksum
|
|
121
|
+
const checksumData = { ...packageData, checksum: undefined };
|
|
122
|
+
const computedChecksum = crypto
|
|
123
|
+
.createHash('blake3')
|
|
124
|
+
.update(JSON.stringify(checksumData))
|
|
125
|
+
.digest('hex');
|
|
126
|
+
if (computedChecksum !== packageData.checksum) {
|
|
127
|
+
console.error('ā Package integrity check failed. File may be corrupted.');
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
// Decrypt private key
|
|
131
|
+
const salt = Buffer.from(packageData.salt, 'base64');
|
|
132
|
+
const iv = Buffer.from(packageData.iv, 'base64');
|
|
133
|
+
const authTag = Buffer.from(packageData.authTag, 'base64');
|
|
134
|
+
const key = crypto.pbkdf2Sync(password, salt, 100000, 32, 'sha256');
|
|
135
|
+
try {
|
|
136
|
+
const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);
|
|
137
|
+
decipher.setAuthTag(authTag);
|
|
138
|
+
let privateKey = decipher.update(packageData.encryptedPrivateKey, 'hex', 'utf8');
|
|
139
|
+
privateKey += decipher.final('utf8');
|
|
140
|
+
// Verify keypair integrity
|
|
141
|
+
const { default: ed25519 } = await Promise.resolve().then(() => __importStar(require('@noble/ed25519')));
|
|
142
|
+
const publicKeyFromPrivate = await ed25519.getPublicKeyAsync(Buffer.from(privateKey, 'base64'));
|
|
143
|
+
if (Buffer.from(publicKeyFromPrivate).toString('base64') !== packageData.publicKey) {
|
|
144
|
+
console.error('ā Invalid password or corrupted package.');
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
// Write to .moltos directory
|
|
148
|
+
fs.mkdirSync(moltosPath, { recursive: true });
|
|
149
|
+
// Store ClawID
|
|
150
|
+
fs.writeFileSync(existingClawIdPath, JSON.stringify({
|
|
151
|
+
id: packageData.clawId,
|
|
152
|
+
publicKey: packageData.publicKey,
|
|
153
|
+
createdAt: new Date().toISOString(),
|
|
154
|
+
}, null, 2));
|
|
155
|
+
// Store encrypted key
|
|
156
|
+
const keySalt = crypto.randomBytes(16);
|
|
157
|
+
const keyIv = crypto.randomBytes(12);
|
|
158
|
+
const keyPass = crypto.randomBytes(32).toString('hex');
|
|
159
|
+
const encryptKey = crypto.pbkdf2Sync(keyPass, keySalt, 100000, 32, 'sha256');
|
|
160
|
+
const keyCipher = crypto.createCipheriv('aes-256-gcm', encryptKey, keyIv);
|
|
161
|
+
let encryptedKey = keyCipher.update(privateKey, 'utf8', 'hex');
|
|
162
|
+
encryptedKey += keyCipher.final('hex');
|
|
163
|
+
const keyAuthTag = keyCipher.getAuthTag();
|
|
164
|
+
fs.writeFileSync(path.join(moltosPath, 'clawid.key'), JSON.stringify({
|
|
165
|
+
encrypted: encryptedKey,
|
|
166
|
+
salt: keySalt.toString('base64'),
|
|
167
|
+
iv: keyIv.toString('base64'),
|
|
168
|
+
authTag: keyAuthTag.toString('base64'),
|
|
169
|
+
}, null, 2));
|
|
170
|
+
// Store password
|
|
171
|
+
fs.writeFileSync(path.join(moltosPath, '.keypass'), keyPass);
|
|
172
|
+
console.log(`ā
ClawID imported: ${packageData.clawId}`);
|
|
173
|
+
console.log(` Original export: ${packageData.createdAt}`);
|
|
174
|
+
console.log(` Identity ready to use`);
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
console.error('ā Import failed. Wrong password or corrupted package.');
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* CLI command handler
|
|
184
|
+
*/
|
|
185
|
+
async function clawIdCommand(action, options) {
|
|
186
|
+
switch (action) {
|
|
187
|
+
case 'export': {
|
|
188
|
+
const outputPath = options.output || `clawid-${Date.now()}.json`;
|
|
189
|
+
// Prompt for password (in real implementation, use inquirer)
|
|
190
|
+
console.log('š Enter export password (this will encrypt your private key):');
|
|
191
|
+
// For now, use a generated secure password
|
|
192
|
+
const password = crypto.randomBytes(32).toString('hex');
|
|
193
|
+
console.log(` (Generated secure password: ${password.slice(0, 16)}...)`);
|
|
194
|
+
console.log(` Save this password! You'll need it to import.`);
|
|
195
|
+
const success = await exportClawId(outputPath, password);
|
|
196
|
+
if (success && options.json) {
|
|
197
|
+
console.log(JSON.stringify({ success: true, path: outputPath }));
|
|
198
|
+
}
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
case 'import': {
|
|
202
|
+
if (!options.file) {
|
|
203
|
+
console.error('ā Required: --file <package.json>');
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
console.log('š Enter import password:');
|
|
207
|
+
// Mock password for demo
|
|
208
|
+
const password = 'demo-password-change-in-production';
|
|
209
|
+
const success = await importClawId(options.file, password, options.force);
|
|
210
|
+
if (success && options.json) {
|
|
211
|
+
console.log(JSON.stringify({ success: true, clawId: 'imported' }));
|
|
212
|
+
}
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=clawid-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clawid-cmd.js","sourceRoot":"","sources":["../../src/commands/clawid-cmd.ts"],"names":[],"mappings":"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"}
|