@aiassesstech/mighty-mark 0.6.5 → 0.6.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"check-runner.d.ts","sourceRoot":"","sources":["../../src/checks/check-runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAe,aAAa,EAAgB,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAavD,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGpE,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa;IAK7D,mEAAmE;IAC7D,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAgExD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAY1B,wCAAwC;IAClC,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;CAkDzF"}
1
+ {"version":3,"file":"check-runner.d.ts","sourceRoot":"","sources":["../../src/checks/check-runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAe,aAAa,EAAgB,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAevD,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGpE,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa;IAK7D,mEAAmE;IAC7D,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAsExD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAY1B,wCAAwC;IAClC,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;CAwDzF"}
@@ -15,6 +15,8 @@ import { runFleetTransportChecks } from './fleet-transport.js';
15
15
  import { runAlertingChecks } from './alerting-health.js';
16
16
  import { runSecurityChecks } from './security-hardening.js';
17
17
  import { runTemporalChecks } from './temporal-pipeline.js';
18
+ import { runCronHealthChecks } from './cron-health.js';
19
+ import { runFleetCommunicationChecks } from './fleet-communication.js';
18
20
  import { classifyHealth } from '../notify/alert-classifier.js';
19
21
  import { getHostname } from './check-context.js';
20
22
  export class CheckRunner {
@@ -53,6 +55,10 @@ export class CheckRunner {
53
55
  allChecks.push(...security);
54
56
  const temporal = await runTemporalChecks(ctx);
55
57
  allChecks.push(...temporal);
58
+ const cron = await runCronHealthChecks(ctx);
59
+ allChecks.push(...cron);
60
+ const communication = await runFleetCommunicationChecks(ctx);
61
+ allChecks.push(...communication);
56
62
  const summary = summarize(allChecks);
57
63
  const status = classifyHealth(summary.failed, summary.warnings);
58
64
  let uptimeStr;
@@ -130,6 +136,12 @@ export class CheckRunner {
130
136
  case 'temporal':
131
137
  checks = await runTemporalChecks(ctx);
132
138
  break;
139
+ case 'cron':
140
+ checks = await runCronHealthChecks(ctx);
141
+ break;
142
+ case 'communication':
143
+ checks = await runFleetCommunicationChecks(ctx);
144
+ break;
133
145
  default:
134
146
  checks = [];
135
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"check-runner.js","sourceRoot":"","sources":["../../src/checks/check-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-runner.js","sourceRoot":"","sources":["../../src/checks/check-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Cron Integration Health Checks — verifies Noah's cron scheduler is
3
+ * dispatching jobs and agents are responding.
4
+ *
5
+ * Reads Noah's SQLite database (cron_jobs table) to assess:
6
+ * C1: Cron schedule completeness — all expected jobs exist
7
+ * C2: Cron execution freshness — jobs are actually running
8
+ * C3: Cron failure rate — failed vs successful recent executions
9
+ * C4: Cron fleet dispatch — cron/scheduled messages reaching agents
10
+ * C5: Cron agent response — cron/completed messages returning to Noah
11
+ * C6: Stale next_run detection — jobs with past-due next_run values
12
+ *
13
+ * All checks are passive (read-only from Noah DB + fleet-bus audit logs).
14
+ */
15
+ import type { CheckResult } from '../types/health.js';
16
+ import { type CheckContext } from './check-context.js';
17
+ export declare function checkCronScheduleCompleteness(ctx?: CheckContext): Promise<CheckResult>;
18
+ export declare function checkCronExecutionFreshness(ctx?: CheckContext): Promise<CheckResult>;
19
+ export declare function checkCronFailureRate(ctx?: CheckContext): Promise<CheckResult>;
20
+ export declare function checkCronFleetDispatch(ctx?: CheckContext): Promise<CheckResult>;
21
+ export declare function checkCronAgentResponses(ctx?: CheckContext): Promise<CheckResult>;
22
+ export declare function checkStaleNextRun(ctx?: CheckContext): Promise<CheckResult>;
23
+ export declare function runCronHealthChecks(ctx?: CheckContext): Promise<CheckResult[]>;
24
+ //# sourceMappingURL=cron-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-health.d.ts","sourceRoot":"","sources":["../../src/checks/cron-health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA2EjF,wBAAsB,6BAA6B,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAsD5F;AAMD,wBAAsB,2BAA2B,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAmD1F;AAMD,wBAAsB,oBAAoB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA0CnF;AAMD,wBAAsB,sBAAsB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAkCrF;AAMD,wBAAsB,uBAAuB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAuCtF;AAMD,wBAAsB,iBAAiB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA0ChF;AAMD,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CASpF"}
@@ -0,0 +1,320 @@
1
+ /**
2
+ * Cron Integration Health Checks — verifies Noah's cron scheduler is
3
+ * dispatching jobs and agents are responding.
4
+ *
5
+ * Reads Noah's SQLite database (cron_jobs table) to assess:
6
+ * C1: Cron schedule completeness — all expected jobs exist
7
+ * C2: Cron execution freshness — jobs are actually running
8
+ * C3: Cron failure rate — failed vs successful recent executions
9
+ * C4: Cron fleet dispatch — cron/scheduled messages reaching agents
10
+ * C5: Cron agent response — cron/completed messages returning to Noah
11
+ * C6: Stale next_run detection — jobs with past-due next_run values
12
+ *
13
+ * All checks are passive (read-only from Noah DB + fleet-bus audit logs).
14
+ */
15
+ import fs from 'node:fs';
16
+ import path from 'node:path';
17
+ import { resolveOpenClawHome, now } from './check-context.js';
18
+ const CATEGORY = 'cron';
19
+ const EXPECTED_AGENTS = ['jessie', 'grillo', 'nole', 'mighty-mark', 'sam'];
20
+ const EXPECTED_INTERNAL_JOBS = [
21
+ 'capture_fleet_snapshot',
22
+ 'verify_hash_chains',
23
+ 'evaluate_lifecycle_phase',
24
+ ];
25
+ function getNoahDbPath(ctx) {
26
+ if (ctx?.noahDataDir) {
27
+ return path.join(ctx.noahDataDir, 'noah-temporal.db');
28
+ }
29
+ return path.join(resolveOpenClawHome(), '.noah-data', 'noah-temporal.db');
30
+ }
31
+ let _betterSqlite3;
32
+ async function loadDatabase() {
33
+ if (_betterSqlite3 !== undefined)
34
+ return _betterSqlite3;
35
+ try {
36
+ const mod = await import('better-sqlite3');
37
+ _betterSqlite3 = mod.default ?? mod;
38
+ return _betterSqlite3;
39
+ }
40
+ catch {
41
+ _betterSqlite3 = null;
42
+ return null;
43
+ }
44
+ }
45
+ function result(name, status, message, start) {
46
+ return { name, category: CATEGORY, status, message, timestamp: now(), durationMs: Date.now() - start };
47
+ }
48
+ function getFleetBusDir(ctx) {
49
+ return ctx?.fleetBusDir ?? path.join(resolveOpenClawHome(), 'workspace', 'fleet-bus');
50
+ }
51
+ function readAuditEvents(auditDir, agentId) {
52
+ const jsonlPath = path.join(auditDir, `${agentId}.audit.jsonl`);
53
+ if (!fs.existsSync(jsonlPath))
54
+ return [];
55
+ try {
56
+ const content = fs.readFileSync(jsonlPath, 'utf-8').trim();
57
+ if (!content)
58
+ return [];
59
+ const events = [];
60
+ for (const line of content.split('\n')) {
61
+ if (!line.trim())
62
+ continue;
63
+ try {
64
+ events.push(JSON.parse(line));
65
+ }
66
+ catch { /* skip */ }
67
+ }
68
+ return events;
69
+ }
70
+ catch {
71
+ return [];
72
+ }
73
+ }
74
+ // ────────────────────────────────────────────────────────────────
75
+ // C1: Cron Schedule Completeness
76
+ // ────────────────────────────────────────────────────────────────
77
+ export async function checkCronScheduleCompleteness(ctx) {
78
+ const start = Date.now();
79
+ const NAME = 'Cron schedule completeness';
80
+ const dbPath = getNoahDbPath(ctx);
81
+ if (!fs.existsSync(dbPath)) {
82
+ return result(NAME, 'warn', 'Noah database not found', start);
83
+ }
84
+ const Database = await loadDatabase();
85
+ if (!Database)
86
+ return result(NAME, 'warn', 'better-sqlite3 not available', start);
87
+ try {
88
+ const db = new Database(dbPath, { readonly: true });
89
+ let hasCronTable = true;
90
+ try {
91
+ db.prepare('SELECT 1 FROM cron_jobs LIMIT 1').get();
92
+ }
93
+ catch {
94
+ hasCronTable = false;
95
+ }
96
+ if (!hasCronTable) {
97
+ db.close();
98
+ return result(NAME, 'fail', 'No cron_jobs table — CronManager has not initialized', start);
99
+ }
100
+ const jobs = db.prepare('SELECT id, name, target_agent, enabled FROM cron_jobs').all();
101
+ db.close();
102
+ const agentJobs = jobs.filter(j => j.target_agent && j.target_agent !== 'noah');
103
+ const internalJobs = jobs.filter(j => !j.target_agent || j.target_agent === 'noah');
104
+ const coveredAgents = new Set(agentJobs.map(j => j.target_agent));
105
+ const missingAgents = EXPECTED_AGENTS.filter(a => !coveredAgents.has(a));
106
+ const coveredInternal = new Set(internalJobs.map(j => j.name));
107
+ const missingInternal = EXPECTED_INTERNAL_JOBS.filter(j => !coveredInternal.has(j));
108
+ const issues = [];
109
+ if (missingAgents.length > 0)
110
+ issues.push(`Missing agent schedules: ${missingAgents.join(', ')}`);
111
+ if (missingInternal.length > 0)
112
+ issues.push(`Missing internal jobs: ${missingInternal.join(', ')}`);
113
+ const disabled = jobs.filter(j => !j.enabled);
114
+ if (disabled.length > 0)
115
+ issues.push(`${disabled.length} job(s) disabled: ${disabled.map(j => j.name).join(', ')}`);
116
+ if (issues.length === 0) {
117
+ return result(NAME, 'pass', `${jobs.length} cron jobs configured (${agentJobs.length} agent, ${internalJobs.length} internal)`, start);
118
+ }
119
+ const hasMissing = missingAgents.length > 0 || missingInternal.length > 0;
120
+ return result(NAME, hasMissing ? 'fail' : 'warn', issues.join('; '), start);
121
+ }
122
+ catch (err) {
123
+ return result(NAME, 'warn', `Schedule check failed: ${err.message}`, start);
124
+ }
125
+ }
126
+ // ────────────────────────────────────────────────────────────────
127
+ // C2: Cron Execution Freshness
128
+ // ────────────────────────────────────────────────────────────────
129
+ export async function checkCronExecutionFreshness(ctx) {
130
+ const start = Date.now();
131
+ const NAME = 'Cron jobs executing on schedule';
132
+ const dbPath = getNoahDbPath(ctx);
133
+ if (!fs.existsSync(dbPath))
134
+ return result(NAME, 'warn', 'Noah database not found', start);
135
+ const Database = await loadDatabase();
136
+ if (!Database)
137
+ return result(NAME, 'warn', 'better-sqlite3 not available', start);
138
+ try {
139
+ const db = new Database(dbPath, { readonly: true });
140
+ const jobs = db.prepare('SELECT name, last_run, run_count, enabled, target_agent FROM cron_jobs WHERE enabled = 1').all();
141
+ db.close();
142
+ if (jobs.length === 0) {
143
+ return result(NAME, 'warn', 'No enabled cron jobs found', start);
144
+ }
145
+ const neverRun = jobs.filter(j => !j.last_run);
146
+ const stale = [];
147
+ const healthy = [];
148
+ const now_ms = Date.now();
149
+ for (const j of jobs) {
150
+ if (!j.last_run)
151
+ continue;
152
+ const hoursSince = (now_ms - new Date(j.last_run).getTime()) / (1000 * 60 * 60);
153
+ if (hoursSince > 25) {
154
+ stale.push(`${j.name} (${hoursSince.toFixed(1)}h ago)`);
155
+ }
156
+ else {
157
+ healthy.push(j.name);
158
+ }
159
+ }
160
+ if (stale.length === 0 && neverRun.length === 0) {
161
+ return result(NAME, 'pass', `${healthy.length} jobs executed within 25h`, start);
162
+ }
163
+ const issues = [];
164
+ if (stale.length > 0)
165
+ issues.push(`Stale: ${stale.join(', ')}`);
166
+ if (neverRun.length > 0)
167
+ issues.push(`Never run: ${neverRun.map(j => j.name).join(', ')}`);
168
+ return result(NAME, stale.length > 0 ? 'fail' : 'warn', issues.join('; '), start);
169
+ }
170
+ catch (err) {
171
+ return result(NAME, 'warn', `Freshness check failed: ${err.message}`, start);
172
+ }
173
+ }
174
+ // ────────────────────────────────────────────────────────────────
175
+ // C3: Cron Failure Rate
176
+ // ────────────────────────────────────────────────────────────────
177
+ export async function checkCronFailureRate(ctx) {
178
+ const start = Date.now();
179
+ const NAME = 'Cron job failure rate';
180
+ const dbPath = getNoahDbPath(ctx);
181
+ if (!fs.existsSync(dbPath))
182
+ return result(NAME, 'warn', 'Noah database not found', start);
183
+ const Database = await loadDatabase();
184
+ if (!Database)
185
+ return result(NAME, 'warn', 'better-sqlite3 not available', start);
186
+ try {
187
+ const db = new Database(dbPath, { readonly: true });
188
+ const jobs = db.prepare('SELECT name, last_status, run_count, target_agent FROM cron_jobs WHERE enabled = 1').all();
189
+ db.close();
190
+ if (jobs.length === 0) {
191
+ return result(NAME, 'warn', 'No enabled cron jobs', start);
192
+ }
193
+ const failedJobs = jobs.filter(j => j.last_status === 'failure' || j.last_status === 'failed');
194
+ const failureRate = failedJobs.length / jobs.length;
195
+ if (failedJobs.length === 0) {
196
+ return result(NAME, 'pass', `0/${jobs.length} jobs in failure state`, start);
197
+ }
198
+ const detail = failedJobs.map(j => j.name).join(', ');
199
+ if (failureRate > 0.5) {
200
+ return result(NAME, 'fail', `${failedJobs.length}/${jobs.length} jobs failed (${(failureRate * 100).toFixed(0)}%): ${detail}`, start);
201
+ }
202
+ return result(NAME, 'warn', `${failedJobs.length}/${jobs.length} jobs in failure state: ${detail}`, start);
203
+ }
204
+ catch (err) {
205
+ return result(NAME, 'warn', `Failure rate check failed: ${err.message}`, start);
206
+ }
207
+ }
208
+ // ────────────────────────────────────────────────────────────────
209
+ // C4: Cron Fleet Dispatch (audit-based)
210
+ // ────────────────────────────────────────────────────────────────
211
+ export async function checkCronFleetDispatch(ctx) {
212
+ const start = Date.now();
213
+ const NAME = 'Cron dispatch: Noah sending cron/scheduled to agents';
214
+ const auditDir = path.join(getFleetBusDir(ctx), 'audit');
215
+ if (!fs.existsSync(auditDir)) {
216
+ return result(NAME, 'warn', 'Fleet-bus audit directory not found', start);
217
+ }
218
+ const noahEvents = readAuditEvents(auditDir, 'noah');
219
+ const cutoff = Date.now() - 25 * 60 * 60 * 1000;
220
+ const recentCronDispatches = noahEvents.filter(e => e.method === 'cron/scheduled' &&
221
+ e.timestamp && new Date(e.timestamp).getTime() > cutoff);
222
+ if (recentCronDispatches.length === 0) {
223
+ return result(NAME, 'warn', 'No cron/scheduled dispatches from Noah in last 25h', start);
224
+ }
225
+ const targetAgents = new Set(recentCronDispatches.map(e => e.to).filter(Boolean));
226
+ const delivered = recentCronDispatches.filter(e => e.outcome === 'delivered' || e.outcome === 'success');
227
+ const failed = recentCronDispatches.filter(e => e.outcome === 'routing_rejected' || e.outcome === 'error');
228
+ const msg = `${recentCronDispatches.length} dispatches to ${targetAgents.size} agents in 25h (${delivered.length} delivered, ${failed.length} failed)`;
229
+ if (failed.length > delivered.length) {
230
+ return result(NAME, 'fail', msg, start);
231
+ }
232
+ if (failed.length > 0) {
233
+ return result(NAME, 'warn', msg, start);
234
+ }
235
+ return result(NAME, 'pass', msg, start);
236
+ }
237
+ // ────────────────────────────────────────────────────────────────
238
+ // C5: Cron Agent Responses (audit-based)
239
+ // ────────────────────────────────────────────────────────────────
240
+ export async function checkCronAgentResponses(ctx) {
241
+ const start = Date.now();
242
+ const NAME = 'Cron response: agents returning cron/completed to Noah';
243
+ const auditDir = path.join(getFleetBusDir(ctx), 'audit');
244
+ if (!fs.existsSync(auditDir)) {
245
+ return result(NAME, 'warn', 'Fleet-bus audit directory not found', start);
246
+ }
247
+ const cutoff = Date.now() - 25 * 60 * 60 * 1000;
248
+ const respondingAgents = [];
249
+ const silentAgents = [];
250
+ for (const agent of EXPECTED_AGENTS) {
251
+ const events = readAuditEvents(auditDir, agent);
252
+ const cronResponses = events.filter(e => e.method === 'cron/completed' &&
253
+ e.timestamp && new Date(e.timestamp).getTime() > cutoff);
254
+ if (cronResponses.length > 0) {
255
+ respondingAgents.push(agent);
256
+ }
257
+ else {
258
+ silentAgents.push(agent);
259
+ }
260
+ }
261
+ if (silentAgents.length === 0) {
262
+ return result(NAME, 'pass', `All ${respondingAgents.length} agents responded with cron/completed in 25h`, start);
263
+ }
264
+ if (respondingAgents.length === 0) {
265
+ return result(NAME, 'fail', `No agents sent cron/completed in 25h — cron handlers may not be wired`, start);
266
+ }
267
+ return result(NAME, 'warn', `${respondingAgents.length}/${EXPECTED_AGENTS.length} agents responding. Silent: ${silentAgents.join(', ')}`, start);
268
+ }
269
+ // ────────────────────────────────────────────────────────────────
270
+ // C6: Stale next_run Detection
271
+ // ────────────────────────────────────────────────────────────────
272
+ export async function checkStaleNextRun(ctx) {
273
+ const start = Date.now();
274
+ const NAME = 'Cron next_run values not stale';
275
+ const dbPath = getNoahDbPath(ctx);
276
+ if (!fs.existsSync(dbPath))
277
+ return result(NAME, 'warn', 'Noah database not found', start);
278
+ const Database = await loadDatabase();
279
+ if (!Database)
280
+ return result(NAME, 'warn', 'better-sqlite3 not available', start);
281
+ try {
282
+ const db = new Database(dbPath, { readonly: true });
283
+ const jobs = db.prepare('SELECT name, next_run, enabled FROM cron_jobs WHERE enabled = 1 AND next_run IS NOT NULL').all();
284
+ db.close();
285
+ if (jobs.length === 0) {
286
+ return result(NAME, 'warn', 'No enabled jobs with next_run set', start);
287
+ }
288
+ const now_ms = Date.now();
289
+ const staleJobs = jobs.filter(j => {
290
+ const nextMs = new Date(j.next_run).getTime();
291
+ const hoursOverdue = (now_ms - nextMs) / (1000 * 60 * 60);
292
+ return hoursOverdue > 2;
293
+ });
294
+ if (staleJobs.length === 0) {
295
+ return result(NAME, 'pass', `All ${jobs.length} jobs have fresh next_run`, start);
296
+ }
297
+ const detail = staleJobs.map(j => {
298
+ const hoursOverdue = ((now_ms - new Date(j.next_run).getTime()) / (1000 * 60 * 60)).toFixed(1);
299
+ return `${j.name} (${hoursOverdue}h overdue)`;
300
+ }).join(', ');
301
+ return result(NAME, staleJobs.length > jobs.length / 2 ? 'fail' : 'warn', `${staleJobs.length}/${jobs.length} jobs have stale next_run: ${detail}`, start);
302
+ }
303
+ catch (err) {
304
+ return result(NAME, 'warn', `Stale check failed: ${err.message}`, start);
305
+ }
306
+ }
307
+ // ────────────────────────────────────────────────────────────────
308
+ // Orchestrator
309
+ // ────────────────────────────────────────────────────────────────
310
+ export async function runCronHealthChecks(ctx) {
311
+ return [
312
+ await checkCronScheduleCompleteness(ctx),
313
+ await checkCronExecutionFreshness(ctx),
314
+ await checkCronFailureRate(ctx),
315
+ await checkCronFleetDispatch(ctx),
316
+ await checkCronAgentResponses(ctx),
317
+ await checkStaleNextRun(ctx),
318
+ ];
319
+ }
320
+ //# sourceMappingURL=cron-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-health.js","sourceRoot":"","sources":["../../src/checks/cron-health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAqB,MAAM,oBAAoB,CAAC;AAEjF,MAAM,QAAQ,GAAG,MAAe,CAAC;AAEjC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAU,CAAC;AAEpF,MAAM,sBAAsB,GAAG;IAC7B,wBAAwB;IACxB,oBAAoB;IACpB,0BAA0B;CAClB,CAAC;AAEX,SAAS,aAAa,CAAC,GAAkB;IACvC,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;AAC5E,CAAC;AAGD,IAAI,cAAiD,CAAC;AAEtD,KAAK,UAAU,YAAY;IACzB,IAAI,cAAc,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC3C,cAAc,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;QACpC,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,cAAc,GAAG,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CACb,IAAY,EACZ,MAA6B,EAC7B,OAAe,EACf,KAAa;IAEb,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;AACzG,CAAC;AAED,SAAS,cAAc,CAAC,GAAkB;IACxC,OAAO,GAAG,EAAE,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACxF,CAAC;AAWD,SAAS,eAAe,CAAC,QAAgB,EAAE,OAAe;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO,cAAc,CAAC,CAAC;IAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,mEAAmE;AACnE,iCAAiC;AACjC,mEAAmE;AAEnE,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,GAAkB;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,4BAA4B,CAAC;IAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;IAElF,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC;YAAC,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,GAAG,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,YAAY,GAAG,KAAK,CAAC;QAAC,CAAC;QAE5F,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,sDAAsD,EAAE,KAAK,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAElF,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;QAEX,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC;QAChF,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC;QAEpF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAa,CAAC,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClG,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpG,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,qBAAqB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EACxB,GAAG,IAAI,CAAC,MAAM,0BAA0B,SAAS,CAAC,MAAM,WAAW,YAAY,CAAC,MAAM,YAAY,EAAE,KAAK,CAAC,CAAC;QAC/G,CAAC;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,0BAA2B,GAAa,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,+BAA+B;AAC/B,mEAAmE;AAEnE,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,GAAkB;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,iCAAiC,CAAC;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAE1F,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;IAElF,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,0FAA0F,CAC3F,CAAC,GAAG,EAEH,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;QAEX,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,CAAC,QAAQ;gBAAE,SAAS;YAC1B,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAChF,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,2BAA2B,EAAE,KAAK,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE3F,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACpF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,2BAA4B,GAAa,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,wBAAwB;AACxB,mEAAmE;AAEnE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAkB;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,uBAAuB,CAAC;IACrC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAE1F,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;IAElF,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,oFAAoF,CACrF,CAAC,GAAG,EAEH,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;QAEX,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;QAC/F,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAEpD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtD,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EACxB,GAAG,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,iBAAiB,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9G,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EACxB,GAAG,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,2BAA2B,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,8BAA+B,GAAa,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,wCAAwC;AACxC,mEAAmE;AAEnE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,GAAkB;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,sDAAsD,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAEzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,qCAAqC,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjD,CAAC,CAAC,MAAM,KAAK,gBAAgB;QAC7B,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CACxD,CAAC;IAEF,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,oDAAoD,EAAE,KAAK,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IACzG,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,kBAAkB,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAE3G,MAAM,GAAG,GAAG,GAAG,oBAAoB,CAAC,MAAM,kBAAkB,YAAY,CAAC,IAAI,mBAAmB,SAAS,CAAC,MAAM,eAAe,MAAM,CAAC,MAAM,UAAU,CAAC;IAEvJ,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,mEAAmE;AACnE,yCAAyC;AACzC,mEAAmE;AAEnE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,GAAkB;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,wDAAwD,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAEzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,qCAAqC,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAChD,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACtC,CAAC,CAAC,MAAM,KAAK,gBAAgB;YAC7B,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CACxD,CAAC;QAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EACxB,OAAO,gBAAgB,CAAC,MAAM,8CAA8C,EAAE,KAAK,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EACxB,uEAAuE,EAAE,KAAK,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EACxB,GAAG,gBAAgB,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,+BAA+B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACzH,CAAC;AAED,mEAAmE;AACnE,+BAA+B;AAC/B,mEAAmE;AAEnE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAkB;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,gCAAgC,CAAC;IAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAE1F,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;IAElF,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,0FAA0F,CAC3F,CAAC,GAAG,EAAgE,CAAC;QACtE,EAAE,CAAC,KAAK,EAAE,CAAC;QAEX,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAChC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;YAC9C,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1D,OAAO,YAAY,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,2BAA2B,EAAE,KAAK,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC/B,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/F,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,YAAY,YAAY,CAAC;QAChD,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACtE,GAAG,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,8BAA8B,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,uBAAwB,GAAa,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,eAAe;AACf,mEAAmE;AAEnE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAkB;IAC1D,OAAO;QACL,MAAM,6BAA6B,CAAC,GAAG,CAAC;QACxC,MAAM,2BAA2B,CAAC,GAAG,CAAC;QACtC,MAAM,oBAAoB,CAAC,GAAG,CAAC;QAC/B,MAAM,sBAAsB,CAAC,GAAG,CAAC;QACjC,MAAM,uBAAuB,CAAC,GAAG,CAAC;QAClC,MAAM,iBAAiB,CAAC,GAAG,CAAC;KAC7B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Fleet Communication Health Checks — verifies every interaction path in the
3
+ * fleet-bus routing table is healthy.
4
+ *
5
+ * Audit-based checks (read fleet-bus audit logs):
6
+ * F1: Grillo→Noah assessment/result delivery (direct fleet-bus path)
7
+ * F2: Per-method delivery breakdown — every method type actually flowing
8
+ * F3: Routing coverage — all expected agent-to-agent paths have recent traffic
9
+ * F4: Assessment result triple-send — Jessie + Noah + assessed agent all receive
10
+ *
11
+ * Active probe (requires fleetBusSend in CheckContext):
12
+ * T6: Pipeline liveness probe — trigger dry-run assessment, verify Noah ingests
13
+ *
14
+ * @see SPEC-FLEET-BUS-COMMUNICATION-SUPPLEMENT-1.0
15
+ * @see SPEC-MIGHTY-MARK-TEMPORAL-PIPELINE-HEALTH-CHECKS-1.0 (T6)
16
+ */
17
+ import type { CheckResult } from '../types/health.js';
18
+ import { type CheckContext } from './check-context.js';
19
+ export declare function checkGrilloToNoahDelivery(ctx?: CheckContext): Promise<CheckResult>;
20
+ export declare function checkMethodDeliveryBreakdown(ctx?: CheckContext): Promise<CheckResult>;
21
+ export declare function checkRoutingCoverage(ctx?: CheckContext): Promise<CheckResult>;
22
+ export declare function checkAssessmentTripleSend(ctx?: CheckContext): Promise<CheckResult>;
23
+ export declare function checkPipelineLiveness(ctx?: CheckContext): Promise<CheckResult>;
24
+ export declare function runFleetCommunicationChecks(ctx?: CheckContext): Promise<CheckResult[]>;
25
+ //# sourceMappingURL=fleet-communication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-communication.d.ts","sourceRoot":"","sources":["../../src/checks/fleet-communication.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmGjF,wBAAsB,yBAAyB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAuCxF;AAMD,wBAAsB,4BAA4B,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA+C3F;AAMD,wBAAsB,oBAAoB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA6CnF;AAMD,wBAAsB,yBAAyB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA2CxF;AAMD,wBAAsB,qBAAqB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAsDpF;AAMD,wBAAsB,2BAA2B,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAa5F"}