@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.
@@ -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"}