@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,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClawScheduler - Persistent Task Scheduler for MoltOS
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Hybrid checkpointing: WASM state serialization (primary) + Firecracker snapshots (fallback)
|
|
6
|
+
* - Dual triggers: Cron-based and event-based (ClawBus webhooks)
|
|
7
|
+
* - ClawFS storage with optional remote replication
|
|
8
|
+
* - Persistent daemon with automatic restart from last checkpoint
|
|
9
|
+
*
|
|
10
|
+
* Architecture:
|
|
11
|
+
* - Scheduler daemon runs as background process
|
|
12
|
+
* - Tasks are defined as WASM modules or shell commands
|
|
13
|
+
* - State serialized to ClawFS on each checkpoint
|
|
14
|
+
* - Failed tasks auto-restart from last known good state
|
|
15
|
+
*/
|
|
16
|
+
export type TaskTrigger = {
|
|
17
|
+
type: 'cron';
|
|
18
|
+
expression: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: 'event';
|
|
21
|
+
topic: string;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'once';
|
|
24
|
+
delayMs?: number;
|
|
25
|
+
};
|
|
26
|
+
export type CheckpointMode = 'wasm' | 'firecracker' | 'auto';
|
|
27
|
+
export interface TaskConfig {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
command: string;
|
|
31
|
+
args?: string[];
|
|
32
|
+
workingDir?: string;
|
|
33
|
+
env?: Record<string, string>;
|
|
34
|
+
trigger: TaskTrigger;
|
|
35
|
+
checkpointMode: CheckpointMode;
|
|
36
|
+
checkpointInterval?: number;
|
|
37
|
+
maxRetries: number;
|
|
38
|
+
timeout?: number;
|
|
39
|
+
replicate?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface TaskState {
|
|
42
|
+
id: string;
|
|
43
|
+
status: 'pending' | 'running' | 'paused' | 'failed' | 'completed';
|
|
44
|
+
pid?: number;
|
|
45
|
+
startedAt?: string;
|
|
46
|
+
lastCheckpoint?: string;
|
|
47
|
+
checkpointId?: string;
|
|
48
|
+
runCount: number;
|
|
49
|
+
failCount: number;
|
|
50
|
+
lastError?: string;
|
|
51
|
+
envSnapshot?: Record<string, string>;
|
|
52
|
+
}
|
|
53
|
+
export interface Checkpoint {
|
|
54
|
+
id: string;
|
|
55
|
+
taskId: string;
|
|
56
|
+
timestamp: string;
|
|
57
|
+
type: 'wasm' | 'firecracker';
|
|
58
|
+
statePath: string;
|
|
59
|
+
metadata: {
|
|
60
|
+
pid?: number;
|
|
61
|
+
cwd: string;
|
|
62
|
+
env: Record<string, string>;
|
|
63
|
+
exitCode?: number;
|
|
64
|
+
};
|
|
65
|
+
merkleRoot: string;
|
|
66
|
+
}
|
|
67
|
+
export interface Schedule {
|
|
68
|
+
tasks: TaskConfig[];
|
|
69
|
+
global: {
|
|
70
|
+
defaultCheckpointInterval: number;
|
|
71
|
+
maxConcurrentTasks: number;
|
|
72
|
+
replicateByDefault: boolean;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export declare class ClawScheduler {
|
|
76
|
+
private tasks;
|
|
77
|
+
private states;
|
|
78
|
+
private processes;
|
|
79
|
+
private cronCache;
|
|
80
|
+
private clawfs;
|
|
81
|
+
private privateKey;
|
|
82
|
+
private clawId;
|
|
83
|
+
private isRunning;
|
|
84
|
+
private checkInterval?;
|
|
85
|
+
private checkpointIntervals;
|
|
86
|
+
private eventListeners;
|
|
87
|
+
constructor(baseDir: string, clawId: string, privateKey: string);
|
|
88
|
+
private get schedulePath();
|
|
89
|
+
private get statePath();
|
|
90
|
+
private loadSchedule;
|
|
91
|
+
private saveState;
|
|
92
|
+
/**
|
|
93
|
+
* Add a new scheduled task
|
|
94
|
+
*/
|
|
95
|
+
addTask(config: Omit<TaskConfig, 'id'>): TaskConfig;
|
|
96
|
+
private saveSchedule;
|
|
97
|
+
/**
|
|
98
|
+
* Remove a task
|
|
99
|
+
*/
|
|
100
|
+
removeTask(taskId: string): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Start a specific task
|
|
103
|
+
*/
|
|
104
|
+
startTask(taskId: string, fromCheckpoint?: string): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* Stop a running task
|
|
107
|
+
*/
|
|
108
|
+
stopTask(taskId: string): void;
|
|
109
|
+
private createCheckpoint;
|
|
110
|
+
private loadCheckpoint;
|
|
111
|
+
/**
|
|
112
|
+
* Start the scheduler daemon
|
|
113
|
+
*/
|
|
114
|
+
start(): void;
|
|
115
|
+
/**
|
|
116
|
+
* Stop the scheduler daemon
|
|
117
|
+
*/
|
|
118
|
+
stop(): void;
|
|
119
|
+
private checkCronTriggers;
|
|
120
|
+
/**
|
|
121
|
+
* Subscribe to a ClawBus topic for event triggers
|
|
122
|
+
*/
|
|
123
|
+
subscribeEvent(topic: string, handler: (data: unknown) => void): void;
|
|
124
|
+
/**
|
|
125
|
+
* Emit an event to trigger event-based tasks
|
|
126
|
+
*/
|
|
127
|
+
emitEvent(topic: string, data: unknown): void;
|
|
128
|
+
getStatus(): {
|
|
129
|
+
isRunning: boolean;
|
|
130
|
+
taskCount: number;
|
|
131
|
+
runningCount: number;
|
|
132
|
+
tasks: TaskState[];
|
|
133
|
+
};
|
|
134
|
+
getTaskLogs(taskId: string): string;
|
|
135
|
+
}
|
|
136
|
+
export declare function schedulerCommand(action: 'start' | 'stop' | 'status' | 'add' | 'remove' | 'logs', options: any, clawId: string, privateKey: string): Promise<void>;
|
|
137
|
+
export default ClawScheduler;
|
|
138
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/lib/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE;QACN,yBAAyB,EAAE,MAAM,CAAC;QAClC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH;AAsKD,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAC,CAAiB;IACvC,OAAO,CAAC,mBAAmB,CAA0C;IACrE,OAAO,CAAC,cAAc,CAAuD;gBAG3E,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM;IAYpB,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,SAAS;IAKjB;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,UAAU;IA0BnD,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAcnC;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8FvE;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;YA+BhB,gBAAgB;IA2B9B,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACH,KAAK,IAAI,IAAI;IAeb;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAOrE;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAsB7C,SAAS,IAAI;QACX,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,SAAS,EAAE,CAAC;KACpB;IASD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAOpC;AAMD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,EAC/D,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAoGf;AAED,eAAe,aAAa,CAAC"}
|