@farazirfan/costar-server-executor 1.7.53 → 1.7.55
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/agent/pi-embedded-runner/system-prompt.d.ts.map +1 -1
- package/dist/agent/pi-embedded-runner/system-prompt.js +39 -0
- package/dist/agent/pi-embedded-runner/system-prompt.js.map +1 -1
- package/dist/cron/local-run-log.d.ts +35 -0
- package/dist/cron/local-run-log.d.ts.map +1 -0
- package/dist/cron/local-run-log.js +153 -0
- package/dist/cron/local-run-log.js.map +1 -0
- package/dist/cron/local-store.d.ts +86 -0
- package/dist/cron/local-store.d.ts.map +1 -0
- package/dist/cron/local-store.js +199 -0
- package/dist/cron/local-store.js.map +1 -0
- package/dist/db/local-database.d.ts +134 -0
- package/dist/db/local-database.d.ts.map +1 -0
- package/dist/db/local-database.js +419 -0
- package/dist/db/local-database.js.map +1 -0
- package/dist/heartbeat/runner.d.ts +18 -0
- package/dist/heartbeat/runner.d.ts.map +1 -1
- package/dist/heartbeat/runner.js +122 -6
- package/dist/heartbeat/runner.js.map +1 -1
- package/dist/middleware/auth.d.ts +13 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +67 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/routes/db-ops.d.ts +11 -0
- package/dist/routes/db-ops.d.ts.map +1 -0
- package/dist/routes/db-ops.js +266 -0
- package/dist/routes/db-ops.js.map +1 -0
- package/dist/routes/sandbox-ops.d.ts +15 -0
- package/dist/routes/sandbox-ops.d.ts.map +1 -0
- package/dist/routes/sandbox-ops.js +306 -0
- package/dist/routes/sandbox-ops.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +57 -1
- package/dist/server.js.map +1 -1
- package/dist/services/backup-service.d.ts +49 -0
- package/dist/services/backup-service.d.ts.map +1 -0
- package/dist/services/backup-service.js +113 -0
- package/dist/services/backup-service.js.map +1 -0
- package/dist/services/s3-file-watcher.d.ts +79 -0
- package/dist/services/s3-file-watcher.d.ts.map +1 -0
- package/dist/services/s3-file-watcher.js +191 -0
- package/dist/services/s3-file-watcher.js.map +1 -0
- package/dist/web-server.d.ts +7 -0
- package/dist/web-server.d.ts.map +1 -1
- package/dist/web-server.js +71 -18
- package/dist/web-server.js.map +1 -1
- package/dist/workspace/templates.d.ts +1 -1
- package/dist/workspace/templates.d.ts.map +1 -1
- package/dist/workspace/templates.js +22 -6
- package/dist/workspace/templates.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/system-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAYzD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAcrD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AA8BF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IACtC,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC,WAAW,EAAE,CA6Bf;
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/system-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAYzD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAcrD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AA8BF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IACtC,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC,WAAW,EAAE,CA6Bf;AAsZD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAmHzE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,GACnB,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,CAGnC"}
|
|
@@ -252,6 +252,45 @@ function buildHeartbeatsSection() {
|
|
|
252
252
|
"- Empty HEARTBEAT.md is fine — it saves API calls until something needs monitoring",
|
|
253
253
|
"- Think like a thoughtful assistant: what would the user want tracked based on their recent activity?",
|
|
254
254
|
"",
|
|
255
|
+
"### Conversation Intelligence",
|
|
256
|
+
"",
|
|
257
|
+
"Your session includes conversation history from the user's mobile app. When you receive a",
|
|
258
|
+
"[Conversation Intelligence] prompt, it means new user conversations arrived since your last heartbeat.",
|
|
259
|
+
"This is your most powerful source of proactive signals — the user reveals interests, plans, and needs naturally.",
|
|
260
|
+
"",
|
|
261
|
+
"**What to look for in recent conversations:**",
|
|
262
|
+
"- Topics discussed repeatedly → long-term interest (add to MEMORY.md User Intelligence)",
|
|
263
|
+
"- Specific prices, thresholds, or targets mentioned → monitoring opportunity (add to HEARTBEAT.md)",
|
|
264
|
+
"- Upcoming dates, meetings, trips, deadlines → time-sensitive prep (create cron job or HEARTBEAT.md item)",
|
|
265
|
+
"- Unfinished research or open questions → follow-up opportunity (continue the work now)",
|
|
266
|
+
"- Expressed wishes: 'I should...', 'I need to...', 'remind me...' → actionable intent",
|
|
267
|
+
"- Frustrations or complaints → improvement opportunity (find solutions proactively)",
|
|
268
|
+
"",
|
|
269
|
+
"**User Intelligence Profile (maintain in MEMORY.md):**",
|
|
270
|
+
"",
|
|
271
|
+
"Build and maintain a 'User Intelligence' section in MEMORY.md. This compounds over time:",
|
|
272
|
+
"```",
|
|
273
|
+
"## User Intelligence",
|
|
274
|
+
"",
|
|
275
|
+
"### Active Interests",
|
|
276
|
+
"- Cryptocurrency (Bitcoin, ETH) — monitors prices, buy target $88k",
|
|
277
|
+
"",
|
|
278
|
+
"### Routine Patterns",
|
|
279
|
+
"- Checks email every morning ~9am",
|
|
280
|
+
"- Asks about market updates on weekday mornings",
|
|
281
|
+
"",
|
|
282
|
+
"### Upcoming Events",
|
|
283
|
+
"- Tokyo trip: March 15-22 (flight booked, hotel TBD)",
|
|
284
|
+
"",
|
|
285
|
+
"### Communication Preferences",
|
|
286
|
+
"- Prefers brief, actionable notifications",
|
|
287
|
+
"- Morning briefings welcome before 9am",
|
|
288
|
+
"```",
|
|
289
|
+
"",
|
|
290
|
+
"This section is loaded into EVERY session (yours and the mobile app's),",
|
|
291
|
+
"so both executors benefit from what you learn. Update it whenever you discover something new.",
|
|
292
|
+
"The goal: every day you should know your user better than yesterday.",
|
|
293
|
+
"",
|
|
255
294
|
"### Logging What You Did",
|
|
256
295
|
"",
|
|
257
296
|
"At the END of every heartbeat/cron cycle, call `complete_task` with:",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/system-prompt.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/system-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Cron Run Log — JSONL execution history (OpenClaw pattern)
|
|
3
|
+
* One file per job: ~/.costar/cron/runs/{jobId}.jsonl
|
|
4
|
+
* Part of Phase 5: Direct Client → Sandbox Architecture.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - One JSON line per execution
|
|
8
|
+
* - Pruned at 2MB / 2000 lines (configurable)
|
|
9
|
+
* - Sequential write queue to prevent corruption
|
|
10
|
+
*/
|
|
11
|
+
export type CronRunLogEntry = {
|
|
12
|
+
ts: string;
|
|
13
|
+
jobId: string;
|
|
14
|
+
jobName: string;
|
|
15
|
+
status: "ok" | "error" | "skipped";
|
|
16
|
+
error?: string;
|
|
17
|
+
summary?: string;
|
|
18
|
+
durationMs?: number;
|
|
19
|
+
nextRunAt?: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Append a run log entry (sequential queue per job).
|
|
23
|
+
*/
|
|
24
|
+
export declare function appendRunLog(entry: CronRunLogEntry): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Read recent run log entries for a job.
|
|
27
|
+
* Returns newest first.
|
|
28
|
+
*/
|
|
29
|
+
export declare function readRunLog(jobId: string, limit?: number): CronRunLogEntry[];
|
|
30
|
+
/**
|
|
31
|
+
* Read run logs across all jobs (for dashboard).
|
|
32
|
+
* Returns newest first.
|
|
33
|
+
*/
|
|
34
|
+
export declare function readAllRunLogs(limit?: number): CronRunLogEntry[];
|
|
35
|
+
//# sourceMappingURL=local-run-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-run-log.d.ts","sourceRoot":"","sources":["../../src/cron/local-run-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAuBF;;GAEG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE;AAuBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,eAAe,EAAE,CA0BhF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,GAAE,MAAY,GAAG,eAAe,EAAE,CAoCrE"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Cron Run Log — JSONL execution history (OpenClaw pattern)
|
|
3
|
+
* One file per job: ~/.costar/cron/runs/{jobId}.jsonl
|
|
4
|
+
* Part of Phase 5: Direct Client → Sandbox Architecture.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - One JSON line per execution
|
|
8
|
+
* - Pruned at 2MB / 2000 lines (configurable)
|
|
9
|
+
* - Sequential write queue to prevent corruption
|
|
10
|
+
*/
|
|
11
|
+
import fs from "node:fs";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
import { resolveCoStarDir } from "../cli/paths.js";
|
|
14
|
+
// ═══════════════════════════════════════════════════════
|
|
15
|
+
// PATHS
|
|
16
|
+
// ═══════════════════════════════════════════════════════
|
|
17
|
+
function getRunsDir() {
|
|
18
|
+
return path.join(resolveCoStarDir(), "cron", "runs");
|
|
19
|
+
}
|
|
20
|
+
function getRunLogPath(jobId) {
|
|
21
|
+
// Sanitize jobId to prevent path traversal
|
|
22
|
+
const safe = jobId.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
23
|
+
return path.join(getRunsDir(), `${safe}.jsonl`);
|
|
24
|
+
}
|
|
25
|
+
// ═══════════════════════════════════════════════════════
|
|
26
|
+
// WRITE OPERATIONS
|
|
27
|
+
// ═══════════════════════════════════════════════════════
|
|
28
|
+
/** Write queue to prevent concurrent writes */
|
|
29
|
+
const writeQueue = new Map();
|
|
30
|
+
/**
|
|
31
|
+
* Append a run log entry (sequential queue per job).
|
|
32
|
+
*/
|
|
33
|
+
export async function appendRunLog(entry) {
|
|
34
|
+
const logPath = getRunLogPath(entry.jobId);
|
|
35
|
+
// Chain writes sequentially per job
|
|
36
|
+
const existing = writeQueue.get(entry.jobId) ?? Promise.resolve();
|
|
37
|
+
const next = existing.then(() => doAppend(logPath, entry));
|
|
38
|
+
writeQueue.set(entry.jobId, next);
|
|
39
|
+
await next;
|
|
40
|
+
}
|
|
41
|
+
async function doAppend(logPath, entry) {
|
|
42
|
+
try {
|
|
43
|
+
const dir = path.dirname(logPath);
|
|
44
|
+
if (!fs.existsSync(dir)) {
|
|
45
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
46
|
+
}
|
|
47
|
+
const line = JSON.stringify(entry) + "\n";
|
|
48
|
+
fs.appendFileSync(logPath, line, "utf-8");
|
|
49
|
+
// Check if pruning needed
|
|
50
|
+
await pruneIfNeeded(logPath);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error(`[CRON-LOG] Error appending to ${logPath}:`, error);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// ═══════════════════════════════════════════════════════
|
|
57
|
+
// READ OPERATIONS
|
|
58
|
+
// ═══════════════════════════════════════════════════════
|
|
59
|
+
/**
|
|
60
|
+
* Read recent run log entries for a job.
|
|
61
|
+
* Returns newest first.
|
|
62
|
+
*/
|
|
63
|
+
export function readRunLog(jobId, limit = 200) {
|
|
64
|
+
const logPath = getRunLogPath(jobId);
|
|
65
|
+
if (!fs.existsSync(logPath)) {
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
const content = fs.readFileSync(logPath, "utf-8");
|
|
70
|
+
const lines = content.split("\n").filter((l) => l.trim());
|
|
71
|
+
const entries = [];
|
|
72
|
+
for (const line of lines) {
|
|
73
|
+
try {
|
|
74
|
+
entries.push(JSON.parse(line));
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Skip malformed lines
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Return newest first, limited
|
|
81
|
+
return entries.reverse().slice(0, limit);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error(`[CRON-LOG] Error reading ${logPath}:`, error);
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Read run logs across all jobs (for dashboard).
|
|
90
|
+
* Returns newest first.
|
|
91
|
+
*/
|
|
92
|
+
export function readAllRunLogs(limit = 100) {
|
|
93
|
+
const runsDir = getRunsDir();
|
|
94
|
+
if (!fs.existsSync(runsDir)) {
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
const allEntries = [];
|
|
98
|
+
try {
|
|
99
|
+
const files = fs.readdirSync(runsDir).filter((f) => f.endsWith(".jsonl"));
|
|
100
|
+
for (const file of files) {
|
|
101
|
+
const filePath = path.join(runsDir, file);
|
|
102
|
+
try {
|
|
103
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
104
|
+
const lines = content.split("\n").filter((l) => l.trim());
|
|
105
|
+
for (const line of lines) {
|
|
106
|
+
try {
|
|
107
|
+
allEntries.push(JSON.parse(line));
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Skip malformed
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Skip unreadable files
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
console.error("[CRON-LOG] Error reading all run logs:", error);
|
|
121
|
+
}
|
|
122
|
+
// Sort newest first, limit
|
|
123
|
+
allEntries.sort((a, b) => (b.ts || "").localeCompare(a.ts || ""));
|
|
124
|
+
return allEntries.slice(0, limit);
|
|
125
|
+
}
|
|
126
|
+
// ═══════════════════════════════════════════════════════
|
|
127
|
+
// PRUNING (OpenClaw pattern)
|
|
128
|
+
// ═══════════════════════════════════════════════════════
|
|
129
|
+
const MAX_BYTES = 2 * 1024 * 1024; // 2MB
|
|
130
|
+
const KEEP_LINES = 2000;
|
|
131
|
+
async function pruneIfNeeded(logPath) {
|
|
132
|
+
try {
|
|
133
|
+
const stat = fs.statSync(logPath);
|
|
134
|
+
if (stat.size <= MAX_BYTES)
|
|
135
|
+
return;
|
|
136
|
+
const content = fs.readFileSync(logPath, "utf-8");
|
|
137
|
+
const lines = content.split("\n").filter((l) => l.trim());
|
|
138
|
+
if (lines.length <= KEEP_LINES)
|
|
139
|
+
return;
|
|
140
|
+
// Keep only the most recent KEEP_LINES
|
|
141
|
+
const kept = lines.slice(-KEEP_LINES);
|
|
142
|
+
const newContent = kept.join("\n") + "\n";
|
|
143
|
+
// Atomic write
|
|
144
|
+
const tmpPath = logPath + `.tmp.${process.pid}`;
|
|
145
|
+
fs.writeFileSync(tmpPath, newContent, "utf-8");
|
|
146
|
+
fs.renameSync(tmpPath, logPath);
|
|
147
|
+
console.log(`[CRON-LOG] Pruned ${logPath}: ${lines.length} → ${kept.length} entries`);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// Ignore pruning errors
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=local-run-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-run-log.js","sourceRoot":"","sources":["../../src/cron/local-run-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAiBnD,0DAA0D;AAC1D,QAAQ;AACR,0DAA0D;AAE1D,SAAS,UAAU;IACjB,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,2CAA2C;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,0DAA0D;AAC1D,mBAAmB;AACnB,0DAA0D;AAE1D,+CAA+C;AAC/C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAsB;IACvD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE3C,oCAAoC;IACpC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3D,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAElC,MAAM,IAAI,CAAC;AACb,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAe,EAAE,KAAsB;IAC7D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC1C,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1C,0BAA0B;QAC1B,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,0DAA0D;AAC1D,kBAAkB;AAClB,0DAA0D;AAE1D;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,QAAgB,GAAG;IAC3D,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAErC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB,GAAG;IAChD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAsB,EAAE,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE1E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAE1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC;wBACH,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACpC,CAAC;oBAAC,MAAM,CAAC;wBACP,iBAAiB;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAED,2BAA2B;IAC3B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,0DAA0D;AAC1D,6BAA6B;AAC7B,0DAA0D;AAE1D,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AACzC,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,KAAK,UAAU,aAAa,CAAC,OAAe;IAC1C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS;YAAE,OAAO;QAEnC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1D,IAAI,KAAK,CAAC,MAAM,IAAI,UAAU;YAAE,OAAO;QAEvC,uCAAuC;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAE1C,eAAe;QACf,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;QAChD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/C,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEhC,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,KAAK,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Cron Store — File-based JSON cron job storage (OpenClaw pattern)
|
|
3
|
+
* Replaces Supabase cron_jobs table. Jobs stored in ~/.costar/cron/jobs.json.
|
|
4
|
+
* Part of Phase 5: Direct Client → Sandbox Architecture.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Atomic writes (temp file → rename)
|
|
8
|
+
* - Auto .bak on every save
|
|
9
|
+
* - OpenClaw-compatible job format
|
|
10
|
+
*/
|
|
11
|
+
export type CronJobLocal = {
|
|
12
|
+
id: string;
|
|
13
|
+
user_id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
instruction: string;
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
schedule_type: "cron" | "every" | "at";
|
|
18
|
+
/** Cron expression (for schedule_type=cron) */
|
|
19
|
+
cron_expression?: string;
|
|
20
|
+
/** Interval in ms (for schedule_type=every) */
|
|
21
|
+
schedule_value?: number;
|
|
22
|
+
/** ISO datetime (for schedule_type=at) */
|
|
23
|
+
schedule_at?: string;
|
|
24
|
+
/** IANA timezone */
|
|
25
|
+
timezone?: string;
|
|
26
|
+
/** Delete job after successful run (for one-shot 'at' jobs) */
|
|
27
|
+
delete_after_run?: boolean;
|
|
28
|
+
/** Current status */
|
|
29
|
+
status: "active" | "paused" | "completed" | "error";
|
|
30
|
+
/** Next scheduled run time */
|
|
31
|
+
next_run_at?: string;
|
|
32
|
+
/** Retry tracking */
|
|
33
|
+
retry_count: number;
|
|
34
|
+
max_retries: number;
|
|
35
|
+
/** Metadata */
|
|
36
|
+
created_at: string;
|
|
37
|
+
updated_at: string;
|
|
38
|
+
};
|
|
39
|
+
export type CronStoreFile = {
|
|
40
|
+
version: 1;
|
|
41
|
+
jobs: CronJobLocal[];
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Load jobs from disk. Returns empty store if file doesn't exist.
|
|
45
|
+
*/
|
|
46
|
+
export declare function loadJobs(): CronStoreFile;
|
|
47
|
+
/**
|
|
48
|
+
* Save jobs to disk with atomic write + backup.
|
|
49
|
+
*/
|
|
50
|
+
export declare function saveJobs(store: CronStoreFile): void;
|
|
51
|
+
/**
|
|
52
|
+
* Get all jobs for a user.
|
|
53
|
+
*/
|
|
54
|
+
export declare function getAllJobs(userId: string, enabledOnly?: boolean): CronJobLocal[];
|
|
55
|
+
/**
|
|
56
|
+
* Get a job by ID.
|
|
57
|
+
*/
|
|
58
|
+
export declare function getJobById(jobId: string): CronJobLocal | null;
|
|
59
|
+
/**
|
|
60
|
+
* Get jobs that are due to run (next_run_at <= now).
|
|
61
|
+
*/
|
|
62
|
+
export declare function getDueJobs(userId: string): CronJobLocal[];
|
|
63
|
+
/**
|
|
64
|
+
* Create a new cron job.
|
|
65
|
+
*/
|
|
66
|
+
export declare function addJob(params: {
|
|
67
|
+
userId: string;
|
|
68
|
+
name: string;
|
|
69
|
+
instruction: string;
|
|
70
|
+
scheduleType: "cron" | "every" | "at";
|
|
71
|
+
cronExpression?: string;
|
|
72
|
+
scheduleValue?: number;
|
|
73
|
+
scheduleAt?: string;
|
|
74
|
+
timezone?: string;
|
|
75
|
+
deleteAfterRun?: boolean;
|
|
76
|
+
maxRetries?: number;
|
|
77
|
+
}): CronJobLocal;
|
|
78
|
+
/**
|
|
79
|
+
* Update an existing job.
|
|
80
|
+
*/
|
|
81
|
+
export declare function updateJob(jobId: string, updates: Partial<CronJobLocal>): CronJobLocal | null;
|
|
82
|
+
/**
|
|
83
|
+
* Remove a job.
|
|
84
|
+
*/
|
|
85
|
+
export declare function removeJob(jobId: string): boolean;
|
|
86
|
+
//# sourceMappingURL=local-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/cron/local-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACvC,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB;IACrB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;IACpD,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB,CAAC;AAkBF;;GAEG;AACH,wBAAgB,QAAQ,IAAI,aAAa,CAoCxC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAwBnD;AAiBD;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,YAAY,EAAE,CAOvF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAG7D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAWzD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,YAAY,CA4Bf;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAmB5F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAYhD"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Cron Store — File-based JSON cron job storage (OpenClaw pattern)
|
|
3
|
+
* Replaces Supabase cron_jobs table. Jobs stored in ~/.costar/cron/jobs.json.
|
|
4
|
+
* Part of Phase 5: Direct Client → Sandbox Architecture.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Atomic writes (temp file → rename)
|
|
8
|
+
* - Auto .bak on every save
|
|
9
|
+
* - OpenClaw-compatible job format
|
|
10
|
+
*/
|
|
11
|
+
import fs from "node:fs";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
import { resolveCoStarDir } from "../cli/paths.js";
|
|
14
|
+
// ═══════════════════════════════════════════════════════
|
|
15
|
+
// PATHS
|
|
16
|
+
// ═══════════════════════════════════════════════════════
|
|
17
|
+
function getCronDir() {
|
|
18
|
+
return path.join(resolveCoStarDir(), "cron");
|
|
19
|
+
}
|
|
20
|
+
function getStorePath() {
|
|
21
|
+
return path.join(getCronDir(), "jobs.json");
|
|
22
|
+
}
|
|
23
|
+
// ═══════════════════════════════════════════════════════
|
|
24
|
+
// FILE I/O (OpenClaw atomic write pattern)
|
|
25
|
+
// ═══════════════════════════════════════════════════════
|
|
26
|
+
/**
|
|
27
|
+
* Load jobs from disk. Returns empty store if file doesn't exist.
|
|
28
|
+
*/
|
|
29
|
+
export function loadJobs() {
|
|
30
|
+
const storePath = getStorePath();
|
|
31
|
+
try {
|
|
32
|
+
if (!fs.existsSync(storePath)) {
|
|
33
|
+
return { version: 1, jobs: [] };
|
|
34
|
+
}
|
|
35
|
+
const raw = fs.readFileSync(storePath, "utf-8");
|
|
36
|
+
const parsed = JSON.parse(raw);
|
|
37
|
+
// Validate
|
|
38
|
+
if (!parsed.version || !Array.isArray(parsed.jobs)) {
|
|
39
|
+
console.warn("[CRON-STORE] Invalid store file format, returning empty");
|
|
40
|
+
return { version: 1, jobs: [] };
|
|
41
|
+
}
|
|
42
|
+
return parsed;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error("[CRON-STORE] Error loading store:", error);
|
|
46
|
+
// Try .bak file
|
|
47
|
+
const bakPath = storePath + ".bak";
|
|
48
|
+
if (fs.existsSync(bakPath)) {
|
|
49
|
+
try {
|
|
50
|
+
const raw = fs.readFileSync(bakPath, "utf-8");
|
|
51
|
+
const parsed = JSON.parse(raw);
|
|
52
|
+
console.log("[CRON-STORE] Recovered from backup file");
|
|
53
|
+
return parsed;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
console.error("[CRON-STORE] Backup file also corrupted");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return { version: 1, jobs: [] };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Save jobs to disk with atomic write + backup.
|
|
64
|
+
*/
|
|
65
|
+
export function saveJobs(store) {
|
|
66
|
+
const storePath = getStorePath();
|
|
67
|
+
const dir = getCronDir();
|
|
68
|
+
// Ensure directory exists
|
|
69
|
+
if (!fs.existsSync(dir)) {
|
|
70
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
71
|
+
}
|
|
72
|
+
const json = JSON.stringify(store, null, 2);
|
|
73
|
+
// Create .bak of current file
|
|
74
|
+
if (fs.existsSync(storePath)) {
|
|
75
|
+
try {
|
|
76
|
+
fs.copyFileSync(storePath, storePath + ".bak");
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Ignore backup errors
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Atomic write: temp file → rename
|
|
83
|
+
const tmpPath = storePath + `.tmp.${process.pid}`;
|
|
84
|
+
fs.writeFileSync(tmpPath, json, "utf-8");
|
|
85
|
+
fs.renameSync(tmpPath, storePath);
|
|
86
|
+
}
|
|
87
|
+
// ═══════════════════════════════════════════════════════
|
|
88
|
+
// CRUD OPERATIONS
|
|
89
|
+
// ═══════════════════════════════════════════════════════
|
|
90
|
+
/**
|
|
91
|
+
* Generate a random ID.
|
|
92
|
+
*/
|
|
93
|
+
function generateId() {
|
|
94
|
+
const bytes = new Uint8Array(16);
|
|
95
|
+
crypto.getRandomValues(bytes);
|
|
96
|
+
return Array.from(bytes)
|
|
97
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
98
|
+
.join("");
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get all jobs for a user.
|
|
102
|
+
*/
|
|
103
|
+
export function getAllJobs(userId, enabledOnly = false) {
|
|
104
|
+
const store = loadJobs();
|
|
105
|
+
let jobs = store.jobs.filter((j) => j.user_id === userId);
|
|
106
|
+
if (enabledOnly) {
|
|
107
|
+
jobs = jobs.filter((j) => j.enabled);
|
|
108
|
+
}
|
|
109
|
+
return jobs;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get a job by ID.
|
|
113
|
+
*/
|
|
114
|
+
export function getJobById(jobId) {
|
|
115
|
+
const store = loadJobs();
|
|
116
|
+
return store.jobs.find((j) => j.id === jobId) ?? null;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get jobs that are due to run (next_run_at <= now).
|
|
120
|
+
*/
|
|
121
|
+
export function getDueJobs(userId) {
|
|
122
|
+
const store = loadJobs();
|
|
123
|
+
const now = new Date().toISOString();
|
|
124
|
+
return store.jobs.filter((j) => {
|
|
125
|
+
if (j.user_id !== userId)
|
|
126
|
+
return false;
|
|
127
|
+
if (!j.enabled)
|
|
128
|
+
return false;
|
|
129
|
+
if (j.status !== "active")
|
|
130
|
+
return false;
|
|
131
|
+
if (!j.next_run_at)
|
|
132
|
+
return false;
|
|
133
|
+
return j.next_run_at <= now;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Create a new cron job.
|
|
138
|
+
*/
|
|
139
|
+
export function addJob(params) {
|
|
140
|
+
const store = loadJobs();
|
|
141
|
+
const now = new Date().toISOString();
|
|
142
|
+
const job = {
|
|
143
|
+
id: generateId(),
|
|
144
|
+
user_id: params.userId,
|
|
145
|
+
name: params.name,
|
|
146
|
+
instruction: params.instruction,
|
|
147
|
+
enabled: true,
|
|
148
|
+
schedule_type: params.scheduleType,
|
|
149
|
+
cron_expression: params.cronExpression,
|
|
150
|
+
schedule_value: params.scheduleValue,
|
|
151
|
+
schedule_at: params.scheduleAt,
|
|
152
|
+
timezone: params.timezone,
|
|
153
|
+
delete_after_run: params.deleteAfterRun,
|
|
154
|
+
status: "active",
|
|
155
|
+
retry_count: 0,
|
|
156
|
+
max_retries: params.maxRetries ?? 3,
|
|
157
|
+
created_at: now,
|
|
158
|
+
updated_at: now,
|
|
159
|
+
};
|
|
160
|
+
store.jobs.push(job);
|
|
161
|
+
saveJobs(store);
|
|
162
|
+
console.log(`[CRON-STORE] Created job: ${job.name} (${job.id})`);
|
|
163
|
+
return job;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Update an existing job.
|
|
167
|
+
*/
|
|
168
|
+
export function updateJob(jobId, updates) {
|
|
169
|
+
const store = loadJobs();
|
|
170
|
+
const idx = store.jobs.findIndex((j) => j.id === jobId);
|
|
171
|
+
if (idx === -1)
|
|
172
|
+
return null;
|
|
173
|
+
const job = store.jobs[idx];
|
|
174
|
+
const updated = {
|
|
175
|
+
...job,
|
|
176
|
+
...updates,
|
|
177
|
+
id: job.id, // Never overwrite ID
|
|
178
|
+
user_id: job.user_id, // Never overwrite user
|
|
179
|
+
updated_at: new Date().toISOString(),
|
|
180
|
+
};
|
|
181
|
+
store.jobs[idx] = updated;
|
|
182
|
+
saveJobs(store);
|
|
183
|
+
return updated;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Remove a job.
|
|
187
|
+
*/
|
|
188
|
+
export function removeJob(jobId) {
|
|
189
|
+
const store = loadJobs();
|
|
190
|
+
const before = store.jobs.length;
|
|
191
|
+
store.jobs = store.jobs.filter((j) => j.id !== jobId);
|
|
192
|
+
if (store.jobs.length < before) {
|
|
193
|
+
saveJobs(store);
|
|
194
|
+
console.log(`[CRON-STORE] Removed job: ${jobId}`);
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=local-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../src/cron/local-store.ts"],"names":[],"mappings":"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"}
|