crewly 1.4.78 → 1.4.80
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/config/skills/agent/core/heartbeat/execute.sh +3 -24
- package/config/skills/agent/core/report-progress/execute.sh +0 -2
- package/config/skills/agent/core/report-status/execute.sh +6 -0
- package/config/skills/orchestrator/get-agent-status/execute.sh +10 -28
- package/config/sops/developer/git-workflow.md +3 -48
- package/dist/backend/backend/src/constants.d.ts +15 -19
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +15 -35
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +2 -11
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js +25 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +2 -3
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/relay.controller.js +1 -12
- package/dist/backend/backend/src/controllers/cloud/relay.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +1 -4
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.controller.js +3 -9
- package/dist/backend/backend/src/controllers/project/project.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.js +1 -3
- package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +29 -39
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +54 -105
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/middleware/require-auth.middleware.d.ts +9 -17
- package/dist/backend/backend/src/middleware/require-auth.middleware.d.ts.map +1 -1
- package/dist/backend/backend/src/middleware/require-auth.middleware.js +10 -60
- package/dist/backend/backend/src/middleware/require-auth.middleware.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +0 -27
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js +1 -24
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +7 -5
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +4 -13
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js +7 -37
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +0 -18
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +5 -79
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +0 -7
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +3 -24
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js +48 -5
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +8 -2
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +10 -2
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +48 -29
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +2 -2
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/backend/backend/src/services/core/config.service.js +1 -1
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +0 -15
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +2 -0
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js +31 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +1 -1
- package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +2 -9
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +32 -47
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/response-router.service.d.ts +3 -21
- package/dist/backend/backend/src/services/messaging/response-router.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/response-router.service.js +5 -68
- package/dist/backend/backend/src/services/messaging/response-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +1 -3
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/monitoring.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/monitoring.service.js +6 -12
- package/dist/backend/backend/src/services/monitoring/monitoring.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.js +0 -17
- package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js +0 -31
- package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +0 -8
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.js +0 -29
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +2 -2
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +0 -9
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js +0 -61
- package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +52 -84
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +15 -0
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +57 -10
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts +82 -46
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.js +160 -185
- package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/task-tracking.types.d.ts +1 -1
- package/dist/backend/backend/src/types/task-tracking.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/task-tracking.types.js.map +1 -1
- package/dist/backend/backend/src/utils/file-io.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/file-io.utils.js +1 -14
- package/dist/backend/backend/src/utils/file-io.utils.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +15 -19
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +15 -35
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/core/config.service.js +1 -1
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js +0 -15
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/utils/file-io.utils.d.ts.map +1 -1
- package/dist/cli/backend/src/utils/file-io.utils.js +1 -14
- package/dist/cli/backend/src/utils/file-io.utils.js.map +1 -1
- package/frontend/dist/assets/{index-0837baf4.js → index-e830dc67.js} +78 -78
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import * as os from 'os';
|
|
13
13
|
import * as path from 'path';
|
|
14
|
-
import { readFile, writeFile, mkdir
|
|
14
|
+
import { readFile, writeFile, mkdir } from 'fs/promises';
|
|
15
15
|
import { v4 as uuidv4 } from 'uuid';
|
|
16
16
|
import { LoggerService } from '../core/logger.service.js';
|
|
17
17
|
/**
|
|
@@ -19,67 +19,106 @@ import { LoggerService } from '../core/logger.service.js';
|
|
|
19
19
|
*/
|
|
20
20
|
const CRON_CHECK_INTERVAL_MS = 60_000;
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
* Uses Intl.DateTimeFormat for zero-dependency timezone support.
|
|
22
|
+
* Extract date/time parts from a Date in a specific IANA timezone.
|
|
24
23
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
24
|
+
* Uses Intl.DateTimeFormat to convert the UTC instant into the target
|
|
25
|
+
* timezone, then extracts numeric minute, hour, dayOfWeek, dayOfMonth,
|
|
26
|
+
* and month fields.
|
|
27
|
+
*
|
|
28
|
+
* @param date - The Date object (represents a UTC instant)
|
|
29
|
+
* @param tz - IANA timezone string (e.g. "America/New_York", "Asia/Shanghai")
|
|
30
|
+
* @returns Object with minute, hour, dayOfWeek (0=Sun), dayOfMonth, month (1-12)
|
|
28
31
|
*/
|
|
29
|
-
function
|
|
30
|
-
const
|
|
31
|
-
timeZone:
|
|
32
|
-
hour: 'numeric',
|
|
33
|
-
|
|
32
|
+
export function getDatePartsInTimezone(date, tz) {
|
|
33
|
+
const formatter = new Intl.DateTimeFormat('en-US', {
|
|
34
|
+
timeZone: tz,
|
|
35
|
+
hour: 'numeric',
|
|
36
|
+
minute: 'numeric',
|
|
37
|
+
weekday: 'short',
|
|
38
|
+
day: 'numeric',
|
|
39
|
+
month: 'numeric',
|
|
34
40
|
hour12: false,
|
|
35
41
|
});
|
|
36
|
-
const partsMap =
|
|
37
|
-
for (const
|
|
38
|
-
partsMap
|
|
42
|
+
const partsMap = new Map();
|
|
43
|
+
for (const p of formatter.formatToParts(date)) {
|
|
44
|
+
partsMap.set(p.type, p.value);
|
|
39
45
|
}
|
|
40
|
-
const
|
|
46
|
+
const weekdayStr = partsMap.get('weekday') || '';
|
|
47
|
+
const weekdayMap = {
|
|
48
|
+
Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6,
|
|
49
|
+
};
|
|
41
50
|
return {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
dayOfWeek: weekdayMap[
|
|
45
|
-
dayOfMonth: parseInt(partsMap
|
|
46
|
-
month: parseInt(partsMap
|
|
51
|
+
minute: parseInt(partsMap.get('minute') || '0', 10),
|
|
52
|
+
hour: parseInt(partsMap.get('hour') || '0', 10),
|
|
53
|
+
dayOfWeek: weekdayMap[weekdayStr] ?? 0,
|
|
54
|
+
dayOfMonth: parseInt(partsMap.get('day') || '1', 10),
|
|
55
|
+
month: parseInt(partsMap.get('month') || '1', 10),
|
|
47
56
|
};
|
|
48
57
|
}
|
|
49
58
|
/**
|
|
50
|
-
* Parse a cron
|
|
59
|
+
* Parse a single cron field spec into a set of allowed values.
|
|
60
|
+
* Supports: `*`, single number, ranges (`1-5`), lists (`1,3,5`),
|
|
61
|
+
* and step values (`*\/5`, `10-30/5`).
|
|
51
62
|
*
|
|
52
|
-
* @param spec -
|
|
53
|
-
* @
|
|
63
|
+
* @param spec - The cron field string (e.g. "*", "5", "1-5", "1,3,5", "*\/10")
|
|
64
|
+
* @param min - Minimum allowed value for this field (inclusive)
|
|
65
|
+
* @param max - Maximum allowed value for this field (inclusive)
|
|
66
|
+
* @returns Set of matching integer values, or null for wildcard (match any)
|
|
54
67
|
*/
|
|
55
|
-
function
|
|
68
|
+
export function parseCronField(spec, min, max) {
|
|
56
69
|
if (spec === '*')
|
|
57
|
-
return null;
|
|
58
|
-
const
|
|
70
|
+
return null; // wildcard
|
|
71
|
+
const result = new Set();
|
|
59
72
|
for (const part of spec.split(',')) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
const stepMatch = part.match(/^(.+)\/(\d+)$/);
|
|
74
|
+
if (stepMatch) {
|
|
75
|
+
const [, rangePart, stepStr] = stepMatch;
|
|
76
|
+
const step = parseInt(stepStr, 10);
|
|
77
|
+
let start = min;
|
|
78
|
+
let end = max;
|
|
79
|
+
if (rangePart !== '*') {
|
|
80
|
+
const dashIdx = rangePart.indexOf('-');
|
|
81
|
+
if (dashIdx !== -1) {
|
|
82
|
+
start = parseInt(rangePart.slice(0, dashIdx), 10);
|
|
83
|
+
end = parseInt(rangePart.slice(dashIdx + 1), 10);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
start = parseInt(rangePart, 10);
|
|
87
|
+
end = max;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
for (let v = start; v <= end; v += step) {
|
|
91
|
+
result.add(v);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else if (part.includes('-')) {
|
|
95
|
+
const [startStr, endStr] = part.split('-');
|
|
96
|
+
const start = parseInt(startStr, 10);
|
|
97
|
+
const end = parseInt(endStr, 10);
|
|
98
|
+
for (let v = start; v <= end; v++) {
|
|
99
|
+
result.add(v);
|
|
100
|
+
}
|
|
64
101
|
}
|
|
65
102
|
else {
|
|
66
|
-
|
|
103
|
+
result.add(parseInt(part, 10));
|
|
67
104
|
}
|
|
68
105
|
}
|
|
69
|
-
return
|
|
106
|
+
return result;
|
|
70
107
|
}
|
|
71
108
|
/**
|
|
72
109
|
* Parse a cron expression and calculate the next run time.
|
|
73
110
|
* Supports standard 5-field cron: minute hour day-of-month month day-of-week.
|
|
111
|
+
* Each field supports: `*`, numbers, ranges (`1-5`), lists (`1,3,5`),
|
|
112
|
+
* and step values (`*\/5`).
|
|
74
113
|
*
|
|
75
|
-
* All
|
|
76
|
-
*
|
|
77
|
-
*
|
|
114
|
+
* All field matching is done in the specified timezone so that a cron like
|
|
115
|
+
* "0 9 * * *" in Asia/Shanghai fires at 09:00 Shanghai time regardless of
|
|
116
|
+
* the server's local timezone.
|
|
78
117
|
*
|
|
79
118
|
* @param cronExpression - Standard 5-field cron expression
|
|
80
|
-
* @param timezone - IANA timezone (e.g.
|
|
119
|
+
* @param timezone - IANA timezone (e.g. "UTC", "America/New_York")
|
|
81
120
|
* @param after - Calculate next run after this date (defaults to now)
|
|
82
|
-
* @returns ISO string of next run time (UTC)
|
|
121
|
+
* @returns ISO string of next run time (always UTC)
|
|
83
122
|
*/
|
|
84
123
|
export function getNextRunTime(cronExpression, timezone, after) {
|
|
85
124
|
const now = after || new Date();
|
|
@@ -87,23 +126,24 @@ export function getNextRunTime(cronExpression, timezone, after) {
|
|
|
87
126
|
if (parts.length !== 5) {
|
|
88
127
|
throw new Error(`Invalid cron expression: expected 5 fields, got ${parts.length}`);
|
|
89
128
|
}
|
|
90
|
-
const [
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
const
|
|
129
|
+
const minuteSet = parseCronField(parts[0], 0, 59);
|
|
130
|
+
const hourSet = parseCronField(parts[1], 0, 23);
|
|
131
|
+
const domSet = parseCronField(parts[2], 1, 31);
|
|
132
|
+
const monthSet = parseCronField(parts[3], 1, 12);
|
|
133
|
+
const dowSet = parseCronField(parts[4], 0, 6);
|
|
94
134
|
const candidate = new Date(now.getTime());
|
|
95
135
|
// Advance by 1 minute minimum to avoid re-triggering
|
|
96
136
|
candidate.setSeconds(0, 0);
|
|
97
137
|
candidate.setMinutes(candidate.getMinutes() + 1);
|
|
98
|
-
// Try up to
|
|
99
|
-
for (let i = 0; i <
|
|
100
|
-
//
|
|
101
|
-
const
|
|
102
|
-
const minuteMatch =
|
|
103
|
-
const hourMatch =
|
|
104
|
-
const domMatch =
|
|
105
|
-
const monthMatch =
|
|
106
|
-
const dowMatch = dowSet
|
|
138
|
+
// Try up to 8 days of minutes (covers full week + buffer for day-of-week crons)
|
|
139
|
+
for (let i = 0; i < 8 * 24 * 60; i++) {
|
|
140
|
+
// Extract fields in the TARGET timezone, not server-local
|
|
141
|
+
const tp = getDatePartsInTimezone(candidate, timezone);
|
|
142
|
+
const minuteMatch = !minuteSet || minuteSet.has(tp.minute);
|
|
143
|
+
const hourMatch = !hourSet || hourSet.has(tp.hour);
|
|
144
|
+
const domMatch = !domSet || domSet.has(tp.dayOfMonth);
|
|
145
|
+
const monthMatch = !monthSet || monthSet.has(tp.month);
|
|
146
|
+
const dowMatch = !dowSet || dowSet.has(tp.dayOfWeek);
|
|
107
147
|
if (minuteMatch && hourMatch && domMatch && monthMatch && dowMatch) {
|
|
108
148
|
return candidate.toISOString();
|
|
109
149
|
}
|
|
@@ -114,6 +154,12 @@ export function getNextRunTime(cronExpression, timezone, after) {
|
|
|
114
154
|
}
|
|
115
155
|
/**
|
|
116
156
|
* Service for managing cron tasks.
|
|
157
|
+
*
|
|
158
|
+
* Lifecycle:
|
|
159
|
+
* 1. Get singleton via `getInstance()`
|
|
160
|
+
* 2. Wire callbacks: `setExecutionCallback()`, `setAgentStatusCallback()`, `setAgentStartCallback()`
|
|
161
|
+
* 3. Call `start()` to begin the evaluation loop
|
|
162
|
+
* 4. On startup, call `recalculateAllNextRunTimes()` to self-heal stale values
|
|
117
163
|
*/
|
|
118
164
|
export class CronTaskService {
|
|
119
165
|
static instance = null;
|
|
@@ -156,72 +202,32 @@ export class CronTaskService {
|
|
|
156
202
|
this.executionCallback = callback;
|
|
157
203
|
}
|
|
158
204
|
/**
|
|
159
|
-
* Set the callback
|
|
205
|
+
* Set the callback for checking agent online status.
|
|
206
|
+
* Called before executing a task to verify the target agent is reachable.
|
|
207
|
+
* Should treat both 'active' and 'started' states as online.
|
|
160
208
|
*
|
|
161
|
-
* @param callback -
|
|
209
|
+
* @param callback - Async function returning true if agent is online
|
|
162
210
|
*/
|
|
163
211
|
setAgentStatusCallback(callback) {
|
|
164
212
|
this.agentStatusCallback = callback;
|
|
165
213
|
}
|
|
166
214
|
/**
|
|
167
|
-
* Set the callback
|
|
215
|
+
* Set the callback for auto-starting an offline agent.
|
|
216
|
+
* Called when a cron task fires but the target agent is offline.
|
|
168
217
|
*
|
|
169
|
-
* @param callback -
|
|
218
|
+
* @param callback - Async function that starts an agent, returns true on success
|
|
170
219
|
*/
|
|
171
220
|
setAgentStartCallback(callback) {
|
|
172
221
|
this.agentStartCallback = callback;
|
|
173
222
|
}
|
|
174
|
-
/**
|
|
175
|
-
* Recalculate nextRunAt for all enabled tasks using their stored timezone.
|
|
176
|
-
*
|
|
177
|
-
* On backend startup, existing tasks may have stale nextRunAt values computed
|
|
178
|
-
* with a different server timezone (e.g. 12h off for Asia/Shanghai vs EDT).
|
|
179
|
-
* This self-heal step ensures every task's nextRunAt is correct for its timezone.
|
|
180
|
-
*
|
|
181
|
-
* @returns Number of tasks whose nextRunAt was updated
|
|
182
|
-
*/
|
|
183
|
-
async recalculateAllNextRunTimes() {
|
|
184
|
-
const store = await this.loadStore();
|
|
185
|
-
let updated = 0;
|
|
186
|
-
const now = new Date();
|
|
187
|
-
for (const task of store.tasks) {
|
|
188
|
-
if (!task.enabled)
|
|
189
|
-
continue;
|
|
190
|
-
const correctedNextRun = getNextRunTime(task.cronExpression, task.timezone, now);
|
|
191
|
-
if (task.nextRunAt !== correctedNextRun) {
|
|
192
|
-
this.logger.info('Recalculated nextRunAt for cron task', {
|
|
193
|
-
id: task.id,
|
|
194
|
-
oldNextRunAt: task.nextRunAt,
|
|
195
|
-
newNextRunAt: correctedNextRun,
|
|
196
|
-
timezone: task.timezone,
|
|
197
|
-
});
|
|
198
|
-
task.nextRunAt = correctedNextRun;
|
|
199
|
-
updated++;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
if (updated > 0) {
|
|
203
|
-
await this.saveStore(store);
|
|
204
|
-
this.logger.info('Recalculated nextRunAt for cron tasks on startup', { count: updated });
|
|
205
|
-
}
|
|
206
|
-
return updated;
|
|
207
|
-
}
|
|
208
223
|
/**
|
|
209
224
|
* Start the cron task evaluation loop.
|
|
210
225
|
* Checks every minute for tasks whose nextRunAt has passed.
|
|
211
|
-
*
|
|
212
|
-
* On startup, recalculates nextRunAt for all tasks to self-heal stale
|
|
213
|
-
* timezone-dependent values (#286).
|
|
214
226
|
*/
|
|
215
227
|
start() {
|
|
216
228
|
if (this.timer)
|
|
217
229
|
return;
|
|
218
230
|
this.logger.info('Starting cron task service', { intervalMs: CRON_CHECK_INTERVAL_MS });
|
|
219
|
-
// #286: Self-heal stale nextRunAt values on startup
|
|
220
|
-
this.recalculateAllNextRunTimes().catch((error) => {
|
|
221
|
-
this.logger.warn('Failed to recalculate cron task nextRunAt on startup', {
|
|
222
|
-
error: error instanceof Error ? error.message : String(error),
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
231
|
this.timer = setInterval(async () => {
|
|
226
232
|
try {
|
|
227
233
|
await this.evaluateTasks();
|
|
@@ -249,6 +255,40 @@ export class CronTaskService {
|
|
|
249
255
|
isRunning() {
|
|
250
256
|
return this.timer !== null;
|
|
251
257
|
}
|
|
258
|
+
/**
|
|
259
|
+
* Recalculate nextRunAt for all enabled tasks using the stored timezone.
|
|
260
|
+
* This self-heals stale values from older versions that computed nextRunAt
|
|
261
|
+
* in the server's local timezone instead of the task's specified timezone.
|
|
262
|
+
*
|
|
263
|
+
* Should be called once on backend startup, before start().
|
|
264
|
+
*
|
|
265
|
+
* @returns Number of tasks whose nextRunAt was updated
|
|
266
|
+
*/
|
|
267
|
+
async recalculateAllNextRunTimes() {
|
|
268
|
+
const store = await this.loadStore();
|
|
269
|
+
let updated = 0;
|
|
270
|
+
for (const task of store.tasks) {
|
|
271
|
+
if (!task.enabled)
|
|
272
|
+
continue;
|
|
273
|
+
const after = task.lastRunAt ? new Date(task.lastRunAt) : undefined;
|
|
274
|
+
const recalculated = getNextRunTime(task.cronExpression, task.timezone, after);
|
|
275
|
+
if (recalculated !== task.nextRunAt) {
|
|
276
|
+
this.logger.info('Self-healed stale nextRunAt', {
|
|
277
|
+
id: task.id,
|
|
278
|
+
old: task.nextRunAt,
|
|
279
|
+
new: recalculated,
|
|
280
|
+
timezone: task.timezone,
|
|
281
|
+
});
|
|
282
|
+
task.nextRunAt = recalculated;
|
|
283
|
+
updated++;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (updated > 0) {
|
|
287
|
+
await this.saveStore(store);
|
|
288
|
+
this.logger.info('Recalculated nextRunAt for stale tasks', { count: updated });
|
|
289
|
+
}
|
|
290
|
+
return updated;
|
|
291
|
+
}
|
|
252
292
|
/**
|
|
253
293
|
* Create a new cron task.
|
|
254
294
|
*
|
|
@@ -353,11 +393,9 @@ export class CronTaskService {
|
|
|
353
393
|
}
|
|
354
394
|
/**
|
|
355
395
|
* Evaluate all enabled tasks and execute those whose nextRunAt has passed.
|
|
356
|
-
*
|
|
357
|
-
*
|
|
358
|
-
*
|
|
359
|
-
* the agent. If still offline, skips the task and logs a warning instead of
|
|
360
|
-
* silently dropping it.
|
|
396
|
+
* If an agentStatusCallback is set, checks whether the target agent is online
|
|
397
|
+
* before execution. If the agent is offline and an agentStartCallback is set,
|
|
398
|
+
* attempts to auto-start the agent before executing.
|
|
361
399
|
*/
|
|
362
400
|
async evaluateTasks() {
|
|
363
401
|
const store = await this.loadStore();
|
|
@@ -369,47 +407,39 @@ export class CronTaskService {
|
|
|
369
407
|
const nextRun = new Date(task.nextRunAt);
|
|
370
408
|
if (nextRun > now)
|
|
371
409
|
continue;
|
|
372
|
-
// Task is due — check agent status before
|
|
373
|
-
this.logger.info('Cron task due', {
|
|
374
|
-
id: task.id,
|
|
375
|
-
target: task.targetAgent,
|
|
376
|
-
nextRunAt: task.nextRunAt,
|
|
377
|
-
});
|
|
378
|
-
// #268: Check if target agent is online
|
|
410
|
+
// Task is due — check agent status before executing
|
|
379
411
|
let agentOnline = true;
|
|
380
412
|
if (this.agentStatusCallback) {
|
|
381
413
|
try {
|
|
382
|
-
agentOnline = await this.agentStatusCallback(task.targetAgent);
|
|
414
|
+
agentOnline = await this.agentStatusCallback(task.targetAgent, task.targetTeamId);
|
|
383
415
|
}
|
|
384
416
|
catch (error) {
|
|
385
|
-
this.logger.warn('Agent status check failed, assuming
|
|
417
|
+
this.logger.warn('Agent status check failed, assuming offline', {
|
|
386
418
|
id: task.id,
|
|
387
419
|
target: task.targetAgent,
|
|
388
420
|
error: error instanceof Error ? error.message : String(error),
|
|
389
421
|
});
|
|
422
|
+
agentOnline = false;
|
|
390
423
|
}
|
|
391
424
|
}
|
|
392
|
-
//
|
|
425
|
+
// Auto-start offline agent if callback is available
|
|
393
426
|
if (!agentOnline && this.agentStartCallback) {
|
|
394
|
-
this.logger.info('
|
|
427
|
+
this.logger.info('Agent offline for cron task, attempting auto-start', {
|
|
395
428
|
id: task.id,
|
|
396
429
|
target: task.targetAgent,
|
|
397
|
-
teamId: task.targetTeamId,
|
|
398
430
|
});
|
|
399
431
|
try {
|
|
400
432
|
const started = await this.agentStartCallback(task.targetAgent, task.targetTeamId);
|
|
401
433
|
if (started) {
|
|
402
434
|
agentOnline = true;
|
|
403
|
-
|
|
404
|
-
else {
|
|
405
|
-
this.logger.warn('Failed to auto-start agent for cron task', {
|
|
435
|
+
this.logger.info('Agent auto-started successfully', {
|
|
406
436
|
id: task.id,
|
|
407
437
|
target: task.targetAgent,
|
|
408
438
|
});
|
|
409
439
|
}
|
|
410
440
|
}
|
|
411
441
|
catch (error) {
|
|
412
|
-
this.logger.
|
|
442
|
+
this.logger.error('Agent auto-start failed', {
|
|
413
443
|
id: task.id,
|
|
414
444
|
target: task.targetAgent,
|
|
415
445
|
error: error instanceof Error ? error.message : String(error),
|
|
@@ -417,17 +447,20 @@ export class CronTaskService {
|
|
|
417
447
|
}
|
|
418
448
|
}
|
|
419
449
|
if (!agentOnline) {
|
|
420
|
-
this.logger.warn('
|
|
450
|
+
this.logger.warn('Skipping cron task — agent offline and auto-start unavailable', {
|
|
421
451
|
id: task.id,
|
|
422
452
|
target: task.targetAgent,
|
|
423
453
|
});
|
|
424
|
-
//
|
|
425
|
-
// Advance nextRunAt so the same task isn't retried every minute
|
|
454
|
+
// Still advance nextRunAt to prevent re-evaluating the same missed slot
|
|
426
455
|
task.nextRunAt = getNextRunTime(task.cronExpression, task.timezone, now);
|
|
427
456
|
updated = true;
|
|
428
457
|
continue;
|
|
429
458
|
}
|
|
430
|
-
|
|
459
|
+
this.logger.info('Cron task due, executing', {
|
|
460
|
+
id: task.id,
|
|
461
|
+
target: task.targetAgent,
|
|
462
|
+
nextRunAt: task.nextRunAt,
|
|
463
|
+
});
|
|
431
464
|
try {
|
|
432
465
|
if (this.executionCallback) {
|
|
433
466
|
await this.executionCallback(task);
|
|
@@ -439,7 +472,7 @@ export class CronTaskService {
|
|
|
439
472
|
error: error instanceof Error ? error.message : String(error),
|
|
440
473
|
});
|
|
441
474
|
}
|
|
442
|
-
// Update run times
|
|
475
|
+
// Update run times regardless of execution success
|
|
443
476
|
task.lastRunAt = now.toISOString();
|
|
444
477
|
task.nextRunAt = getNextRunTime(task.cronExpression, task.timezone, now);
|
|
445
478
|
updated = true;
|
|
@@ -450,81 +483,23 @@ export class CronTaskService {
|
|
|
450
483
|
}
|
|
451
484
|
/**
|
|
452
485
|
* Load the cron task store from disk.
|
|
453
|
-
*
|
|
454
|
-
* Recovery strategy:
|
|
455
|
-
* 1. Try the main file (cron-tasks.json)
|
|
456
|
-
* 2. If corrupted (JSON parse error), try the backup (.bak)
|
|
457
|
-
* 3. Only return empty store for genuine ENOENT (file never existed)
|
|
458
|
-
*
|
|
459
|
-
* This prevents data loss when the main file is corrupted by a
|
|
460
|
-
* crash during write.
|
|
461
486
|
*/
|
|
462
487
|
async loadStore() {
|
|
463
|
-
// Try main file
|
|
464
488
|
try {
|
|
465
489
|
const data = await readFile(this.storeFile, 'utf-8');
|
|
466
|
-
|
|
467
|
-
if (!store || !Array.isArray(store.tasks)) {
|
|
468
|
-
throw new Error('Invalid store format: missing tasks array');
|
|
469
|
-
}
|
|
470
|
-
return store;
|
|
490
|
+
return JSON.parse(data);
|
|
471
491
|
}
|
|
472
|
-
catch
|
|
473
|
-
const isNotFound = mainError instanceof Error &&
|
|
474
|
-
('code' in mainError && mainError.code === 'ENOENT');
|
|
475
|
-
if (isNotFound) {
|
|
476
|
-
// File never existed — this is normal for first run
|
|
477
|
-
return { tasks: [] };
|
|
478
|
-
}
|
|
479
|
-
// Main file is corrupted or unreadable — try backup
|
|
480
|
-
this.logger.warn('Main cron-tasks.json failed to load, trying backup', {
|
|
481
|
-
error: mainError instanceof Error ? mainError.message : String(mainError),
|
|
482
|
-
});
|
|
483
|
-
try {
|
|
484
|
-
const backupData = await readFile(this.storeFile + '.bak', 'utf-8');
|
|
485
|
-
const backupStore = JSON.parse(backupData);
|
|
486
|
-
if (backupStore && Array.isArray(backupStore.tasks)) {
|
|
487
|
-
this.logger.info('Recovered cron tasks from backup', { count: backupStore.tasks.length });
|
|
488
|
-
// Restore main file from backup
|
|
489
|
-
await writeFile(this.storeFile, backupData, 'utf-8');
|
|
490
|
-
return backupStore;
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
catch {
|
|
494
|
-
// Backup also failed
|
|
495
|
-
}
|
|
496
|
-
this.logger.error('Both main and backup cron-tasks.json are unreadable, returning empty store');
|
|
492
|
+
catch {
|
|
497
493
|
return { tasks: [] };
|
|
498
494
|
}
|
|
499
495
|
}
|
|
500
496
|
/**
|
|
501
|
-
* Save the cron task store to disk
|
|
502
|
-
*
|
|
503
|
-
* Uses write-to-temp-then-rename pattern to prevent corruption:
|
|
504
|
-
* 1. Write new data to a .tmp file
|
|
505
|
-
* 2. Copy current file to .bak (backup)
|
|
506
|
-
* 3. Atomically rename .tmp to main file
|
|
507
|
-
*
|
|
508
|
-
* If the process crashes during step 1, the main file is untouched.
|
|
509
|
-
* If it crashes during step 3, the .bak file has the previous state.
|
|
497
|
+
* Save the cron task store to disk.
|
|
510
498
|
*/
|
|
511
499
|
async saveStore(store) {
|
|
512
500
|
const dir = path.dirname(this.storeFile);
|
|
513
501
|
await mkdir(dir, { recursive: true });
|
|
514
|
-
|
|
515
|
-
const bakFile = this.storeFile + '.bak';
|
|
516
|
-
const data = JSON.stringify(store, null, 2);
|
|
517
|
-
// Step 1: Write to temp file
|
|
518
|
-
await writeFile(tmpFile, data, 'utf-8');
|
|
519
|
-
// Step 2: Backup current file (best-effort, may not exist)
|
|
520
|
-
try {
|
|
521
|
-
await copyFile(this.storeFile, bakFile);
|
|
522
|
-
}
|
|
523
|
-
catch {
|
|
524
|
-
// No existing file to back up — first save
|
|
525
|
-
}
|
|
526
|
-
// Step 3: Atomically rename temp to main
|
|
527
|
-
await rename(tmpFile, this.storeFile);
|
|
502
|
+
await writeFile(this.storeFile, JSON.stringify(store, null, 2), 'utf-8');
|
|
528
503
|
}
|
|
529
504
|
}
|
|
530
505
|
//# sourceMappingURL=cron-task.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron-task.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/workflow/cron-task.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cron-task.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/workflow/cron-task.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,7 @@ export declare function getCriticalEventTypes(): EventType[];
|
|
|
49
49
|
/**
|
|
50
50
|
* Fields that can trigger events when changed
|
|
51
51
|
*/
|
|
52
|
-
export type ChangedField = 'agentStatus' | 'workingStatus' | 'contextUsage' | 'oauthUrl' | 'taskStatus' | 'hierarchyAction'
|
|
52
|
+
export type ChangedField = 'agentStatus' | 'workingStatus' | 'contextUsage' | 'oauthUrl' | 'taskStatus' | 'hierarchyAction';
|
|
53
53
|
/**
|
|
54
54
|
* An agent lifecycle event published to the event bus
|
|
55
55
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.types.d.ts","sourceRoot":"","sources":["../../../../../backend/src/types/event-bus.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;GAEG;AACH,eAAO,MAAM,WAAW,0YAyBd,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"event-bus.types.d.ts","sourceRoot":"","sources":["../../../../../backend/src/types/event-bus.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,7 @@ export const CRITICAL_EVENT_TYPES = new Set([
|
|
|
47
47
|
'task:failed',
|
|
48
48
|
'task:cancelled',
|
|
49
49
|
'task:input_required',
|
|
50
|
+
'agent:idle',
|
|
50
51
|
'agent:inactive',
|
|
51
52
|
'agent:context_critical',
|
|
52
53
|
'hierarchy:escalation',
|
|
@@ -58,7 +59,6 @@ export const CRITICAL_EVENT_TYPES = new Set([
|
|
|
58
59
|
*/
|
|
59
60
|
export const INFO_EVENT_TYPES = new Set([
|
|
60
61
|
'agent:status_changed',
|
|
61
|
-
'agent:idle',
|
|
62
62
|
'agent:busy',
|
|
63
63
|
'agent:active',
|
|
64
64
|
'agent:context_warning',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.types.js","sourceRoot":"","sources":["../../../../../backend/src/types/event-bus.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,yBAAyB;IACzB,sBAAsB;IACtB,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,gBAAgB;IAChB,uBAAuB;IACvB,wBAAwB;IACxB,iBAAiB;IAEjB,2BAA2B;IAC3B,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,qBAAqB;IACrB,6BAA6B;IAC7B,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAEhB,iCAAiC;IACjC,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;CACb,CAAC;AAcX;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2B,IAAI,GAAG,CAAC;IAClE,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,qBAAqB;IACrB,gBAAgB;IAChB,wBAAwB;IACxB,sBAAsB;CACvB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA2B,IAAI,GAAG,CAAC;IAC9D,sBAAsB;IACtB,YAAY;IACZ,
|
|
1
|
+
{"version":3,"file":"event-bus.types.js","sourceRoot":"","sources":["../../../../../backend/src/types/event-bus.types.ts"],"names":[],"mappings":"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"}
|