@moltos/sdk 0.5.2 → 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/index.d.ts +1 -1
- package/dist/index.js +1 -1
- 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 +38 -11
package/dist/cli.js
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* MoltOS CLI - The official command-line interface for MoltOS
|
|
5
|
+
*
|
|
6
|
+
* Commands:
|
|
7
|
+
* init Initialize a new MoltOS project
|
|
8
|
+
* agent start Start your local agent
|
|
9
|
+
* agent status Check agent status
|
|
10
|
+
* fs write Write file to ClawFS (Merkle-verified)
|
|
11
|
+
* fs read Read file from ClawFS (integrity-checked)
|
|
12
|
+
* fs snapshot Create immutable checkpoint
|
|
13
|
+
* fs temporal Query state at snapshot
|
|
14
|
+
* fs evidence Generate cryptographic evidence
|
|
15
|
+
* tap status Check TAP reputation
|
|
16
|
+
*
|
|
17
|
+
* Usage:
|
|
18
|
+
* npx @moltos/sdk@latest init
|
|
19
|
+
* npx @moltos/sdk agent start
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
const commander_1 = require("commander");
|
|
23
|
+
const init_1 = require("./commands/init");
|
|
24
|
+
const agent_1 = require("./commands/agent");
|
|
25
|
+
const fs_1 = require("./commands/fs");
|
|
26
|
+
const tap_1 = require("./tap");
|
|
27
|
+
const register_1 = require("./commands/register");
|
|
28
|
+
const cloud_1 = require("./commands/cloud");
|
|
29
|
+
const VERSION = '0.6.0';
|
|
30
|
+
commander_1.program
|
|
31
|
+
.name('moltos')
|
|
32
|
+
.description('MoltOS - The Agent Operating System')
|
|
33
|
+
.version(VERSION, '-v, --version')
|
|
34
|
+
.helpOption('-h, --help', 'Display help');
|
|
35
|
+
// Main commands
|
|
36
|
+
commander_1.program
|
|
37
|
+
.command('init')
|
|
38
|
+
.description('Initialize a new MoltOS project with ClawID and ClawFS')
|
|
39
|
+
.option('-d, --dir <directory>', 'Installation directory', '.')
|
|
40
|
+
.option('-n, --name <name>', 'Agent name')
|
|
41
|
+
.option('--skip-preflight', 'Skip preflight checks')
|
|
42
|
+
.option('--dry-run', 'Show what would be installed without making changes')
|
|
43
|
+
.action(init_1.initCommand);
|
|
44
|
+
commander_1.program
|
|
45
|
+
.command('register')
|
|
46
|
+
.description('Register your agent with the MoltOS network')
|
|
47
|
+
.option('--genesis', 'Register as Genesis Agent (requires --id)')
|
|
48
|
+
.option('--id <clawId>', 'Agent ClawID (required for genesis)')
|
|
49
|
+
.option('--name <name>', 'Agent display name')
|
|
50
|
+
.action(register_1.registerCommand);
|
|
51
|
+
// Agent commands
|
|
52
|
+
const agent = commander_1.program
|
|
53
|
+
.command('agent')
|
|
54
|
+
.description('Manage your local MoltOS agent');
|
|
55
|
+
agent
|
|
56
|
+
.command('start')
|
|
57
|
+
.description('Start your agent daemon with heartbeat')
|
|
58
|
+
.action(() => (0, agent_1.agentCommand)('start'));
|
|
59
|
+
agent
|
|
60
|
+
.command('stop')
|
|
61
|
+
.description('Stop your agent gracefully')
|
|
62
|
+
.action(() => (0, agent_1.agentCommand)('stop'));
|
|
63
|
+
agent
|
|
64
|
+
.command('status')
|
|
65
|
+
.description('Check agent status and health')
|
|
66
|
+
.action(() => (0, agent_1.agentCommand)('status'));
|
|
67
|
+
// Filesystem commands - FULL CLAWFS INTEGRATION
|
|
68
|
+
const fsCmd = commander_1.program
|
|
69
|
+
.command('fs')
|
|
70
|
+
.description('ClawFS - Cryptographic filesystem with Merkle trees');
|
|
71
|
+
fsCmd
|
|
72
|
+
.command('write')
|
|
73
|
+
.description('Write file with Blake3 hash + Merkle verification')
|
|
74
|
+
.requiredOption('-f, --file <path>', 'File path')
|
|
75
|
+
.requiredOption('-c, --content <data>', 'File content')
|
|
76
|
+
.action((options) => (0, fs_1.fsCommand)('write', options));
|
|
77
|
+
fsCmd
|
|
78
|
+
.command('read')
|
|
79
|
+
.description('Read file with integrity verification')
|
|
80
|
+
.argument('<path>', 'File path to read')
|
|
81
|
+
.action((filePath) => (0, fs_1.fsCommand)('read', { file: filePath }));
|
|
82
|
+
fsCmd
|
|
83
|
+
.command('list')
|
|
84
|
+
.alias('ls')
|
|
85
|
+
.description('List all files and snapshots')
|
|
86
|
+
.action(() => (0, fs_1.fsCommand)('ls', {}));
|
|
87
|
+
fsCmd
|
|
88
|
+
.command('snapshot')
|
|
89
|
+
.description('Create immutable checkpoint with signed Merkle root')
|
|
90
|
+
.option('-d, --description <text>', 'Snapshot description')
|
|
91
|
+
.action((options) => (0, fs_1.fsCommand)('snapshot', options));
|
|
92
|
+
fsCmd
|
|
93
|
+
.command('temporal')
|
|
94
|
+
.description('Query temporal state (memory patterns)')
|
|
95
|
+
.option('--since <snapshotId>', 'Show changes since snapshot')
|
|
96
|
+
.option('--at <snapshotId>', 'Show state at specific snapshot')
|
|
97
|
+
.action((options) => (0, fs_1.fsCommand)('temporal', options));
|
|
98
|
+
fsCmd
|
|
99
|
+
.command('evidence')
|
|
100
|
+
.description('Generate cryptographic evidence for Arbitra disputes')
|
|
101
|
+
.requiredOption('-f, --file <path>', 'File to generate evidence for')
|
|
102
|
+
.option('-s, --snapshot <id>', 'Specific snapshot (default: latest)')
|
|
103
|
+
.action((options) => (0, fs_1.fsCommand)('evidence', options));
|
|
104
|
+
fsCmd
|
|
105
|
+
.command('stats')
|
|
106
|
+
.description('Show ClawFS statistics')
|
|
107
|
+
.action(() => (0, fs_1.fsCommand)('stats', {}));
|
|
108
|
+
// TAP commands
|
|
109
|
+
const tapCmd = commander_1.program
|
|
110
|
+
.command('tap')
|
|
111
|
+
.description('TAP - Trust and Attestation Protocol');
|
|
112
|
+
tapCmd
|
|
113
|
+
.command('status')
|
|
114
|
+
.description('Check TAP reputation status')
|
|
115
|
+
.option('--clawid <id>', 'Check specific ClawID')
|
|
116
|
+
.action((options) => (0, tap_1.tapCommand)('status', options));
|
|
117
|
+
tapCmd
|
|
118
|
+
.command('attest')
|
|
119
|
+
.description('Record attestation for another agent')
|
|
120
|
+
.requiredOption('--agent <clawId>', 'Agent to attest')
|
|
121
|
+
.requiredOption('--rating <1-5>', 'Rating (1-5)')
|
|
122
|
+
.option('--job <id>', 'Job ID')
|
|
123
|
+
.option('--outcome <success|failure>', 'Job outcome')
|
|
124
|
+
.action((options) => (0, tap_1.tapCommand)('attest', options));
|
|
125
|
+
tapCmd
|
|
126
|
+
.command('verify')
|
|
127
|
+
.description('Verify TAP cache integrity')
|
|
128
|
+
.action(() => (0, tap_1.tapCommand)('verify', {}));
|
|
129
|
+
// Cloud deployment commands
|
|
130
|
+
const cloudCmd = commander_1.program
|
|
131
|
+
.command('cloud')
|
|
132
|
+
.description('ClawCloud - One-command production deployment');
|
|
133
|
+
cloudCmd
|
|
134
|
+
.command('deploy [swarm-type]')
|
|
135
|
+
.description('Deploy swarm to production (fly.io, railway, docker, k8s)')
|
|
136
|
+
.option('--provider <name>', 'Deployment provider (fly.io, railway, docker, kubernetes)', 'auto')
|
|
137
|
+
.option('--region <code>', 'Deployment region', 'iad')
|
|
138
|
+
.option('--name <name>', 'Swarm name')
|
|
139
|
+
.option('--env <vars...>', 'Environment variables (KEY=value)')
|
|
140
|
+
.option('--min-instances <n>', 'Minimum instances', '1')
|
|
141
|
+
.option('--max-instances <n>', 'Maximum instances')
|
|
142
|
+
.option('--cpu <cores>', 'CPU cores (overrides TAP allocation)')
|
|
143
|
+
.option('--memory <mb>', 'Memory in MB (overrides TAP allocation)')
|
|
144
|
+
.option('--no-clawfs', 'Disable ClawFS persistence')
|
|
145
|
+
.option('--no-metrics', 'Disable Prometheus metrics')
|
|
146
|
+
.option('--with-clawforge', 'Enable ClawForge policy enforcement')
|
|
147
|
+
.option('--strategy <type>', 'Deployment strategy (rolling, blue-green, immediate)', 'rolling')
|
|
148
|
+
.option('--snapshot <id>', 'Restore from ClawFS snapshot')
|
|
149
|
+
.option('--dry-run', 'Generate configs without deploying')
|
|
150
|
+
.action((swarmType, options) => (0, cloud_1.deployCommand)(swarmType, options));
|
|
151
|
+
commander_1.program.parse();
|
|
152
|
+
// If no command provided, show help
|
|
153
|
+
if (!process.argv.slice(2).length) {
|
|
154
|
+
commander_1.program.outputHelp();
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Runtime - Real agent process management
|
|
3
|
+
*
|
|
4
|
+
* The agent runtime:
|
|
5
|
+
* 1. Loads configuration from .moltos/
|
|
6
|
+
* 2. Decrypts ClawID private key
|
|
7
|
+
* 3. Starts heartbeat loop
|
|
8
|
+
* 4. Maintains persistent state
|
|
9
|
+
* 5. Handles graceful shutdown
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Main agent command handler
|
|
13
|
+
*/
|
|
14
|
+
export declare function agentCommand(action: 'start' | 'stop' | 'status'): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAwUH;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAcrF"}
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Runtime - Real agent process management
|
|
4
|
+
*
|
|
5
|
+
* The agent runtime:
|
|
6
|
+
* 1. Loads configuration from .moltos/
|
|
7
|
+
* 2. Decrypts ClawID private key
|
|
8
|
+
* 3. Starts heartbeat loop
|
|
9
|
+
* 4. Maintains persistent state
|
|
10
|
+
* 5. Handles graceful shutdown
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.agentCommand = agentCommand;
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const crypto = __importStar(require("crypto"));
|
|
50
|
+
const PID_FILE = '.moltos/agent.pid';
|
|
51
|
+
const STATE_FILE = '.moltos/agent-state.json';
|
|
52
|
+
const LOG_FILE = '.moltos/agent.log';
|
|
53
|
+
/**
|
|
54
|
+
* Load and parse configuration
|
|
55
|
+
*/
|
|
56
|
+
function loadConfig() {
|
|
57
|
+
try {
|
|
58
|
+
const configPath = path.join(process.cwd(), '.moltos', 'config.yaml');
|
|
59
|
+
if (!fs.existsSync(configPath)) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
// Simple YAML parser (for production, use a proper YAML library)
|
|
63
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
64
|
+
const config = {};
|
|
65
|
+
let currentSection = '';
|
|
66
|
+
for (const line of content.split('\n')) {
|
|
67
|
+
if (line.startsWith('#') || line.trim() === '')
|
|
68
|
+
continue;
|
|
69
|
+
if (!line.startsWith(' ') && line.includes(':')) {
|
|
70
|
+
const [key] = line.split(':');
|
|
71
|
+
currentSection = key.trim();
|
|
72
|
+
config[currentSection] = {};
|
|
73
|
+
}
|
|
74
|
+
else if (line.startsWith(' ') && line.includes(':')) {
|
|
75
|
+
const [key, value] = line.trim().split(':').map(s => s.trim());
|
|
76
|
+
if (currentSection) {
|
|
77
|
+
config[currentSection][key] = value?.replace(/"/g, '') || '';
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return config;
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Decrypt private key using password
|
|
89
|
+
*/
|
|
90
|
+
function decryptPrivateKey(encryptedData, password) {
|
|
91
|
+
const data = JSON.parse(encryptedData);
|
|
92
|
+
const salt = Buffer.from(data.salt, 'base64');
|
|
93
|
+
const iv = Buffer.from(data.iv, 'base64');
|
|
94
|
+
const authTag = Buffer.from(data.authTag, 'base64');
|
|
95
|
+
const encrypted = data.encrypted;
|
|
96
|
+
// Derive key using PBKDF2
|
|
97
|
+
const key = crypto.pbkdf2Sync(password, salt, 100000, 32, 'sha256');
|
|
98
|
+
// Decrypt using AES-256-GCM
|
|
99
|
+
const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);
|
|
100
|
+
decipher.setAuthTag(authTag);
|
|
101
|
+
let decrypted = decipher.update(encrypted, 'hex', 'utf8');
|
|
102
|
+
decrypted += decipher.final('utf8');
|
|
103
|
+
return decrypted;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Load password from secure file
|
|
107
|
+
*/
|
|
108
|
+
function loadPassword() {
|
|
109
|
+
try {
|
|
110
|
+
const passFile = path.join(process.cwd(), '.moltos', '.keypass');
|
|
111
|
+
if (!fs.existsSync(passFile))
|
|
112
|
+
return null;
|
|
113
|
+
return fs.readFileSync(passFile, 'utf8');
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Write log entry
|
|
121
|
+
*/
|
|
122
|
+
function log(message, type = 'info') {
|
|
123
|
+
const timestamp = new Date().toISOString();
|
|
124
|
+
const prefix = type === 'error' ? '[ERR]' : type === 'heartbeat' ? '[HBT]' : '[INF]';
|
|
125
|
+
const entry = `${timestamp} ${prefix} ${message}\n`;
|
|
126
|
+
fs.appendFileSync(LOG_FILE, entry);
|
|
127
|
+
if (type !== 'heartbeat') {
|
|
128
|
+
console.log(message);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Save agent state
|
|
133
|
+
*/
|
|
134
|
+
function saveState(state) {
|
|
135
|
+
fs.writeFileSync(STATE_FILE, JSON.stringify(state, null, 2));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Load agent state
|
|
139
|
+
*/
|
|
140
|
+
function loadState() {
|
|
141
|
+
try {
|
|
142
|
+
if (!fs.existsSync(STATE_FILE))
|
|
143
|
+
return null;
|
|
144
|
+
return JSON.parse(fs.readFileSync(STATE_FILE, 'utf8'));
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Send heartbeat to registry (mock for now)
|
|
152
|
+
*/
|
|
153
|
+
async function sendHeartbeat(config, state) {
|
|
154
|
+
state.lastHeartbeat = new Date().toISOString();
|
|
155
|
+
state.heartbeatCount++;
|
|
156
|
+
saveState(state);
|
|
157
|
+
log(`Heartbeat #${state.heartbeatCount} sent`, 'heartbeat');
|
|
158
|
+
// In production, this would make an API call to the registry
|
|
159
|
+
// For now, just update local state
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Start the agent daemon
|
|
163
|
+
*/
|
|
164
|
+
async function startAgent() {
|
|
165
|
+
// Check if already running
|
|
166
|
+
if (fs.existsSync(PID_FILE)) {
|
|
167
|
+
const existingPid = parseInt(fs.readFileSync(PID_FILE, 'utf8'));
|
|
168
|
+
try {
|
|
169
|
+
// Check if process exists
|
|
170
|
+
process.kill(existingPid, 0);
|
|
171
|
+
console.log('⚠ Agent is already running (PID: ' + existingPid + ')');
|
|
172
|
+
console.log(' Run "moltos agent stop" first to restart.');
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// Process doesn't exist, stale PID file
|
|
177
|
+
fs.unlinkSync(PID_FILE);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Load configuration
|
|
181
|
+
const config = loadConfig();
|
|
182
|
+
if (!config) {
|
|
183
|
+
console.error('✗ No MoltOS project found. Run "npx @moltos/sdk init" first.');
|
|
184
|
+
process.exit(1);
|
|
185
|
+
}
|
|
186
|
+
// Load password for key decryption
|
|
187
|
+
const password = loadPassword();
|
|
188
|
+
if (!password) {
|
|
189
|
+
console.error('✗ Encryption password not found. Re-run init?');
|
|
190
|
+
process.exit(1);
|
|
191
|
+
}
|
|
192
|
+
// Load and decrypt ClawID
|
|
193
|
+
const clawIdPath = path.join(process.cwd(), '.moltos', 'clawid.json');
|
|
194
|
+
const privateKeyPath = path.join(process.cwd(), '.moltos', 'clawid.key');
|
|
195
|
+
if (!fs.existsSync(clawIdPath) || !fs.existsSync(privateKeyPath)) {
|
|
196
|
+
console.error('✗ ClawID not found. Run "npx @moltos/sdk init" first.');
|
|
197
|
+
process.exit(1);
|
|
198
|
+
}
|
|
199
|
+
const clawId = JSON.parse(fs.readFileSync(clawIdPath, 'utf8'));
|
|
200
|
+
const encryptedPrivateKey = fs.readFileSync(privateKeyPath, 'utf8');
|
|
201
|
+
// Decrypt private key (verifies password works)
|
|
202
|
+
try {
|
|
203
|
+
const privateKey = decryptPrivateKey(encryptedPrivateKey, password);
|
|
204
|
+
log('Private key decrypted successfully');
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
console.error('✗ Failed to decrypt private key. Password may be incorrect.');
|
|
208
|
+
process.exit(1);
|
|
209
|
+
}
|
|
210
|
+
// Write PID file
|
|
211
|
+
fs.writeFileSync(PID_FILE, process.pid.toString());
|
|
212
|
+
// Initialize state
|
|
213
|
+
const state = {
|
|
214
|
+
pid: process.pid,
|
|
215
|
+
startedAt: new Date().toISOString(),
|
|
216
|
+
lastHeartbeat: new Date().toISOString(),
|
|
217
|
+
status: 'running',
|
|
218
|
+
heartbeatCount: 0,
|
|
219
|
+
};
|
|
220
|
+
saveState(state);
|
|
221
|
+
console.log(`🤖 Starting MoltOS agent "${config.agent.name}"...`);
|
|
222
|
+
console.log(` ClawID: ${config.agent.clawId}`);
|
|
223
|
+
console.log(` PID: ${process.pid}`);
|
|
224
|
+
console.log(` Log: ${LOG_FILE}`);
|
|
225
|
+
log(`Agent started - ${config.agent.name} (${config.agent.clawId})`);
|
|
226
|
+
// Start heartbeat loop
|
|
227
|
+
const heartbeatInterval = setInterval(() => {
|
|
228
|
+
sendHeartbeat(config, state);
|
|
229
|
+
}, 30000); // Every 30 seconds
|
|
230
|
+
// Handle shutdown
|
|
231
|
+
process.on('SIGINT', () => {
|
|
232
|
+
log('Received SIGINT, shutting down gracefully...');
|
|
233
|
+
clearInterval(heartbeatInterval);
|
|
234
|
+
state.status = 'stopped';
|
|
235
|
+
saveState(state);
|
|
236
|
+
fs.unlinkSync(PID_FILE);
|
|
237
|
+
log('Agent stopped');
|
|
238
|
+
process.exit(0);
|
|
239
|
+
});
|
|
240
|
+
process.on('SIGTERM', () => {
|
|
241
|
+
log('Received SIGTERM, shutting down gracefully...');
|
|
242
|
+
clearInterval(heartbeatInterval);
|
|
243
|
+
state.status = 'stopped';
|
|
244
|
+
saveState(state);
|
|
245
|
+
fs.unlinkSync(PID_FILE);
|
|
246
|
+
log('Agent stopped');
|
|
247
|
+
process.exit(0);
|
|
248
|
+
});
|
|
249
|
+
// Keep process alive
|
|
250
|
+
console.log(' Agent is running. Press Ctrl+C to stop.');
|
|
251
|
+
// Initial heartbeat
|
|
252
|
+
await sendHeartbeat(config, state);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Stop the agent daemon
|
|
256
|
+
*/
|
|
257
|
+
function stopAgent() {
|
|
258
|
+
if (!fs.existsSync(PID_FILE)) {
|
|
259
|
+
console.log('⚠ Agent is not running.');
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
const pid = parseInt(fs.readFileSync(PID_FILE, 'utf8'));
|
|
263
|
+
try {
|
|
264
|
+
process.kill(pid, 'SIGTERM');
|
|
265
|
+
console.log('🛑 Stopping agent...');
|
|
266
|
+
// Wait a bit for graceful shutdown
|
|
267
|
+
setTimeout(() => {
|
|
268
|
+
try {
|
|
269
|
+
process.kill(pid, 0); // Check if still running
|
|
270
|
+
console.log(' Force killing...');
|
|
271
|
+
process.kill(pid, 'SIGKILL');
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
// Process already stopped
|
|
275
|
+
}
|
|
276
|
+
if (fs.existsSync(PID_FILE)) {
|
|
277
|
+
fs.unlinkSync(PID_FILE);
|
|
278
|
+
}
|
|
279
|
+
console.log(' Agent stopped.');
|
|
280
|
+
}, 2000);
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
console.log('⚠ Agent process not found (may have crashed).');
|
|
284
|
+
fs.unlinkSync(PID_FILE);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Get agent status
|
|
289
|
+
*/
|
|
290
|
+
function getStatus() {
|
|
291
|
+
const config = loadConfig();
|
|
292
|
+
if (!config) {
|
|
293
|
+
console.log('⚠ No MoltOS project found in this directory.');
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
const state = loadState();
|
|
297
|
+
const isRunning = fs.existsSync(PID_FILE);
|
|
298
|
+
console.log('📊 Agent Status:');
|
|
299
|
+
console.log(` Name: ${config.agent.name}`);
|
|
300
|
+
console.log(` ClawID: ${config.agent.clawId}`);
|
|
301
|
+
console.log(` State: ${isRunning ? '🟢 Running' : '🔴 Stopped'}`);
|
|
302
|
+
if (state) {
|
|
303
|
+
const uptime = state.startedAt
|
|
304
|
+
? Math.floor((Date.now() - new Date(state.startedAt).getTime()) / 1000 / 60)
|
|
305
|
+
: 0;
|
|
306
|
+
console.log(` Uptime: ${uptime}m`);
|
|
307
|
+
console.log(` Heartbeats: ${state.heartbeatCount}`);
|
|
308
|
+
console.log(` Last Heartbeat: ${state.lastHeartbeat || 'Never'}`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Main agent command handler
|
|
313
|
+
*/
|
|
314
|
+
async function agentCommand(action) {
|
|
315
|
+
switch (action) {
|
|
316
|
+
case 'start':
|
|
317
|
+
await startAgent();
|
|
318
|
+
break;
|
|
319
|
+
case 'stop':
|
|
320
|
+
stopAgent();
|
|
321
|
+
break;
|
|
322
|
+
case 'status':
|
|
323
|
+
getStatus();
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* MoltOS Cloud Deployment Command
|
|
4
|
+
*
|
|
5
|
+
* One-command production deployment:
|
|
6
|
+
* claw cloud deploy trading
|
|
7
|
+
* claw cloud deploy --provider fly.io
|
|
8
|
+
* claw cloud deploy --provider railway
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - Automatic ClawFS volume provisioning
|
|
12
|
+
* - Firecracker microVM configuration
|
|
13
|
+
* - Reputation-weighted resource allocation
|
|
14
|
+
* - Prometheus observability auto-exposed
|
|
15
|
+
* - Rollback via ClawFS snapshots
|
|
16
|
+
*/
|
|
17
|
+
export interface DeployOptions {
|
|
18
|
+
provider?: 'fly.io' | 'railway' | 'docker' | 'kubernetes';
|
|
19
|
+
region?: string;
|
|
20
|
+
name?: string;
|
|
21
|
+
env?: string[];
|
|
22
|
+
minInstances?: number;
|
|
23
|
+
maxInstances?: number;
|
|
24
|
+
cpu?: number;
|
|
25
|
+
memory?: string;
|
|
26
|
+
withClawFS?: boolean;
|
|
27
|
+
withMetrics?: boolean;
|
|
28
|
+
withClawForge?: boolean;
|
|
29
|
+
strategy?: 'rolling' | 'blue-green' | 'immediate';
|
|
30
|
+
snapshot?: string;
|
|
31
|
+
dryRun?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Main deployment command
|
|
35
|
+
*/
|
|
36
|
+
export declare function deployCommand(swarmType: string | undefined, options: DeployOptions): Promise<void>;
|
|
37
|
+
//# sourceMappingURL=cloud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,aAAa;IAE5B,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;IAG1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IAGf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,QAAQ,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;IAGlD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAuBD;;GAEG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,YAAY,EAC7B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CA8Gf"}
|