@aiassesstech/grillo 0.1.0

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.
Files changed (121) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/LICENSE +21 -0
  3. package/README.md +512 -0
  4. package/SKILL.md +87 -0
  5. package/dist/api/server.d.ts +68 -0
  6. package/dist/api/server.d.ts.map +1 -0
  7. package/dist/api/server.js +596 -0
  8. package/dist/api/server.js.map +1 -0
  9. package/dist/audit/audit-log.d.ts +88 -0
  10. package/dist/audit/audit-log.d.ts.map +1 -0
  11. package/dist/audit/audit-log.js +195 -0
  12. package/dist/audit/audit-log.js.map +1 -0
  13. package/dist/certification/certificate.d.ts +80 -0
  14. package/dist/certification/certificate.d.ts.map +1 -0
  15. package/dist/certification/certificate.js +176 -0
  16. package/dist/certification/certificate.js.map +1 -0
  17. package/dist/cli/bin.d.ts +8 -0
  18. package/dist/cli/bin.d.ts.map +1 -0
  19. package/dist/cli/bin.js +12 -0
  20. package/dist/cli/bin.js.map +1 -0
  21. package/dist/cli/config-loader.d.ts +66 -0
  22. package/dist/cli/config-loader.d.ts.map +1 -0
  23. package/dist/cli/config-loader.js +243 -0
  24. package/dist/cli/config-loader.js.map +1 -0
  25. package/dist/cli/runner.d.ts +27 -0
  26. package/dist/cli/runner.d.ts.map +1 -0
  27. package/dist/cli/runner.js +388 -0
  28. package/dist/cli/runner.js.map +1 -0
  29. package/dist/commands/grillo-commands.d.ts +50 -0
  30. package/dist/commands/grillo-commands.d.ts.map +1 -0
  31. package/dist/commands/grillo-commands.js +752 -0
  32. package/dist/commands/grillo-commands.js.map +1 -0
  33. package/dist/commands/inline-commands.d.ts +16 -0
  34. package/dist/commands/inline-commands.d.ts.map +1 -0
  35. package/dist/commands/inline-commands.js +277 -0
  36. package/dist/commands/inline-commands.js.map +1 -0
  37. package/dist/commands/router.d.ts +56 -0
  38. package/dist/commands/router.d.ts.map +1 -0
  39. package/dist/commands/router.js +154 -0
  40. package/dist/commands/router.js.map +1 -0
  41. package/dist/config/defaults.d.ts +9 -0
  42. package/dist/config/defaults.d.ts.map +1 -0
  43. package/dist/config/defaults.js +78 -0
  44. package/dist/config/defaults.js.map +1 -0
  45. package/dist/config/schema.d.ts +573 -0
  46. package/dist/config/schema.d.ts.map +1 -0
  47. package/dist/config/schema.js +142 -0
  48. package/dist/config/schema.js.map +1 -0
  49. package/dist/dashboard/metrics.d.ts +100 -0
  50. package/dist/dashboard/metrics.d.ts.map +1 -0
  51. package/dist/dashboard/metrics.js +282 -0
  52. package/dist/dashboard/metrics.js.map +1 -0
  53. package/dist/dashboard/ui.d.ts +19 -0
  54. package/dist/dashboard/ui.d.ts.map +1 -0
  55. package/dist/dashboard/ui.js +951 -0
  56. package/dist/dashboard/ui.js.map +1 -0
  57. package/dist/discovery/discovery-adapter.d.ts +94 -0
  58. package/dist/discovery/discovery-adapter.d.ts.map +1 -0
  59. package/dist/discovery/discovery-adapter.js +114 -0
  60. package/dist/discovery/discovery-adapter.js.map +1 -0
  61. package/dist/discovery/discovery-service.d.ts +77 -0
  62. package/dist/discovery/discovery-service.d.ts.map +1 -0
  63. package/dist/discovery/discovery-service.js +240 -0
  64. package/dist/discovery/discovery-service.js.map +1 -0
  65. package/dist/drift/detector.d.ts +51 -0
  66. package/dist/drift/detector.d.ts.map +1 -0
  67. package/dist/drift/detector.js +148 -0
  68. package/dist/drift/detector.js.map +1 -0
  69. package/dist/drift/fleet-anomaly.d.ts +28 -0
  70. package/dist/drift/fleet-anomaly.d.ts.map +1 -0
  71. package/dist/drift/fleet-anomaly.js +186 -0
  72. package/dist/drift/fleet-anomaly.js.map +1 -0
  73. package/dist/events/event-bus.d.ts +209 -0
  74. package/dist/events/event-bus.d.ts.map +1 -0
  75. package/dist/events/event-bus.js +184 -0
  76. package/dist/events/event-bus.js.map +1 -0
  77. package/dist/frameworks/framework-registry.d.ts +116 -0
  78. package/dist/frameworks/framework-registry.d.ts.map +1 -0
  79. package/dist/frameworks/framework-registry.js +241 -0
  80. package/dist/frameworks/framework-registry.js.map +1 -0
  81. package/dist/index.d.ts +94 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +254 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/monitoring/continuous-monitor.d.ts +61 -0
  86. package/dist/monitoring/continuous-monitor.d.ts.map +1 -0
  87. package/dist/monitoring/continuous-monitor.js +191 -0
  88. package/dist/monitoring/continuous-monitor.js.map +1 -0
  89. package/dist/notifications/notifier.d.ts +21 -0
  90. package/dist/notifications/notifier.d.ts.map +1 -0
  91. package/dist/notifications/notifier.js +119 -0
  92. package/dist/notifications/notifier.js.map +1 -0
  93. package/dist/notifications/templates.d.ts +14 -0
  94. package/dist/notifications/templates.d.ts.map +1 -0
  95. package/dist/notifications/templates.js +105 -0
  96. package/dist/notifications/templates.js.map +1 -0
  97. package/dist/orchestration/orchestrator.d.ts +99 -0
  98. package/dist/orchestration/orchestrator.d.ts.map +1 -0
  99. package/dist/orchestration/orchestrator.js +426 -0
  100. package/dist/orchestration/orchestrator.js.map +1 -0
  101. package/dist/orchestration/queue.d.ts +17 -0
  102. package/dist/orchestration/queue.d.ts.map +1 -0
  103. package/dist/orchestration/queue.js +121 -0
  104. package/dist/orchestration/queue.js.map +1 -0
  105. package/dist/orchestration/scheduler.d.ts +26 -0
  106. package/dist/orchestration/scheduler.d.ts.map +1 -0
  107. package/dist/orchestration/scheduler.js +110 -0
  108. package/dist/orchestration/scheduler.js.map +1 -0
  109. package/dist/registry/agent-registry.d.ts +106 -0
  110. package/dist/registry/agent-registry.d.ts.map +1 -0
  111. package/dist/registry/agent-registry.js +349 -0
  112. package/dist/registry/agent-registry.js.map +1 -0
  113. package/dist/registry/types.d.ts +158 -0
  114. package/dist/registry/types.d.ts.map +1 -0
  115. package/dist/registry/types.js +44 -0
  116. package/dist/registry/types.js.map +1 -0
  117. package/dist/reports/compliance-report.d.ts +66 -0
  118. package/dist/reports/compliance-report.d.ts.map +1 -0
  119. package/dist/reports/compliance-report.js +208 -0
  120. package/dist/reports/compliance-report.js.map +1 -0
  121. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,254 @@
1
+ /**
2
+ * @aiassesstech/grillo — Grillo Cricket
3
+ *
4
+ * The Conscience for AI. Independent assessment coordinator agent
5
+ * for multi-agent OpenClaw deployments.
6
+ *
7
+ * Grillo manages:
8
+ * - Agent Registry: track all agents in the fleet
9
+ * - Assessment Orchestration: prioritize and run assessments via CompSi SDK
10
+ * - Drift Detection: TDI-based score monitoring
11
+ * - Fleet Anomaly Detection: correlated degradation across providers/models
12
+ * - Dual-Mode Commands: backward-compat /assess + fleet `grillo -*` commands
13
+ * - Multi-Channel Notifications: console, webhooks, (future: Slack, email)
14
+ *
15
+ * Uses the SAME proven SDK integration from @aiassesstech/openclaw-plugin:
16
+ * - AIAssessClient.assess + withRetry callback
17
+ * - Direct provider API calls (no OpenAI-compat gateway assumption)
18
+ * - Framework-agnostic types (morality is Level 1, not hardcoded)
19
+ */
20
+ // ================================================================
21
+ // Config
22
+ // ================================================================
23
+ export { grilloConfigSchema } from "./config/schema.js";
24
+ export { DEFAULT_CONFIG } from "./config/defaults.js";
25
+ // ================================================================
26
+ // Registry
27
+ // ================================================================
28
+ export { AgentRegistry, } from "./registry/agent-registry.js";
29
+ export { AgentCategory, CertificationStatus, RiskTier, LevelStatus, } from "./registry/types.js";
30
+ // ================================================================
31
+ // Orchestration
32
+ // ================================================================
33
+ export { GrilloOrchestrator, } from "./orchestration/orchestrator.js";
34
+ export { buildAssessmentQueue, } from "./orchestration/queue.js";
35
+ export { calculateNextAssessment, calculateFleetSchedule, isInAssessmentWindow, } from "./orchestration/scheduler.js";
36
+ // ================================================================
37
+ // Drift
38
+ // ================================================================
39
+ export { DriftDetector, calculateTDI, driftSeverity, dimensionDrifts, } from "./drift/detector.js";
40
+ export { FleetAnomalyDetector } from "./drift/fleet-anomaly.js";
41
+ // ================================================================
42
+ // Commands
43
+ // ================================================================
44
+ export { CommandRouter, parseCommand, } from "./commands/router.js";
45
+ export { createAssessHandler, createAssessSetupHandler, } from "./commands/inline-commands.js";
46
+ export { createGrilloAssessHandler, createGrilloFleetHandler, createGrilloStatusHandler, createGrilloRegisterHandler, createGrilloDeregisterHandler, createGrilloDriftHandler, createGrilloScheduleHandler, createGrilloHelpHandler,
47
+ // Phase 2
48
+ createGrilloHierarchyHandler, createGrilloDiscoverHandler, createGrilloSuspendHandler, createGrilloReinstateHandler, createGrilloVerifyHandler, createGrilloAuditHandler, createGrilloConfigHandler, createGrilloQueueHandler, createGrilloReportHandler,
49
+ // Phase 6
50
+ createGrilloBypassHandler, } from "./commands/grillo-commands.js";
51
+ // ================================================================
52
+ // Notifications
53
+ // ================================================================
54
+ export { GrilloNotifier, } from "./notifications/notifier.js";
55
+ export { assessmentFailedNotification, assessmentPassedNotification, driftWarningNotification, fleetAnomalyNotification, certificationExpiredNotification, fleetAssessmentCompleteNotification, } from "./notifications/templates.js";
56
+ // ================================================================
57
+ // Audit (Phase 2)
58
+ // ================================================================
59
+ export { AuditLog, } from "./audit/audit-log.js";
60
+ // ================================================================
61
+ // Reports (Phase 2)
62
+ // ================================================================
63
+ export { ComplianceReportGenerator, } from "./reports/compliance-report.js";
64
+ // ================================================================
65
+ // REST API (Phase 2)
66
+ // ================================================================
67
+ export { GrilloAPIServer, } from "./api/server.js";
68
+ // ================================================================
69
+ // Framework Plugin System (Phase 3)
70
+ // ================================================================
71
+ export { FrameworkRegistry, MORALITY_FRAMEWORK, VIRTUE_FRAMEWORK, ETHICS_FRAMEWORK, OPEX_FRAMEWORK, } from "./frameworks/framework-registry.js";
72
+ // ================================================================
73
+ // Certification (Phase 3)
74
+ // ================================================================
75
+ export { CertificateGenerator, } from "./certification/certificate.js";
76
+ // ================================================================
77
+ // Continuous Monitoring (Phase 3)
78
+ // ================================================================
79
+ export { ContinuousMonitor, } from "./monitoring/continuous-monitor.js";
80
+ // ================================================================
81
+ // Discovery (Phase 4)
82
+ // ================================================================
83
+ export { DiscoveryService, } from "./discovery/discovery-service.js";
84
+ export { OpenClawDiscoveryAdapter, StaticDiscoveryAdapter, } from "./discovery/discovery-adapter.js";
85
+ // ================================================================
86
+ // Event Bus (Phase 4)
87
+ // ================================================================
88
+ export { GrilloEventBus, } from "./events/event-bus.js";
89
+ // ================================================================
90
+ // Dashboard Metrics (Phase 4)
91
+ // ================================================================
92
+ export { DashboardMetrics, } from "./dashboard/metrics.js";
93
+ // ================================================================
94
+ // Dashboard Web UI (Phase 7)
95
+ // ================================================================
96
+ export { generateDashboardHTML } from "./dashboard/ui.js";
97
+ // ================================================================
98
+ // CLI (Phase 5)
99
+ // ================================================================
100
+ export { run } from "./cli/runner.js";
101
+ export { findConfigFile, loadConfigFile, saveConfigFile, setConfigValue, loadEnvConfig, parseCLIFlags, resolveConfig, } from "./cli/config-loader.js";
102
+ // ================================================================
103
+ // Factory — Wire everything together
104
+ // ================================================================
105
+ import { grilloConfigSchema } from "./config/schema.js";
106
+ import { DEFAULT_CONFIG } from "./config/defaults.js";
107
+ import { AgentRegistry } from "./registry/agent-registry.js";
108
+ import { GrilloOrchestrator, } from "./orchestration/orchestrator.js";
109
+ import { DriftDetector } from "./drift/detector.js";
110
+ import { FleetAnomalyDetector } from "./drift/fleet-anomaly.js";
111
+ import { CommandRouter } from "./commands/router.js";
112
+ import { createAssessHandler, createAssessSetupHandler, } from "./commands/inline-commands.js";
113
+ import { createGrilloAssessHandler, createGrilloFleetHandler, createGrilloStatusHandler, createGrilloRegisterHandler, createGrilloDeregisterHandler, createGrilloDriftHandler, createGrilloScheduleHandler, createGrilloHelpHandler,
114
+ // Phase 2
115
+ createGrilloHierarchyHandler, createGrilloDiscoverHandler, createGrilloSuspendHandler, createGrilloReinstateHandler, createGrilloVerifyHandler, createGrilloAuditHandler, createGrilloConfigHandler, createGrilloQueueHandler, createGrilloReportHandler,
116
+ // Phase 6
117
+ createGrilloBypassHandler, } from "./commands/grillo-commands.js";
118
+ import { GrilloNotifier } from "./notifications/notifier.js";
119
+ import { AuditLog } from "./audit/audit-log.js";
120
+ import { ComplianceReportGenerator } from "./reports/compliance-report.js";
121
+ import { FrameworkRegistry } from "./frameworks/framework-registry.js";
122
+ import { CertificateGenerator } from "./certification/certificate.js";
123
+ import { ContinuousMonitor } from "./monitoring/continuous-monitor.js";
124
+ import { DiscoveryService } from "./discovery/discovery-service.js";
125
+ import { GrilloEventBus } from "./events/event-bus.js";
126
+ import { DashboardMetrics } from "./dashboard/metrics.js";
127
+ /**
128
+ * Create a fully wired Grillo instance.
129
+ *
130
+ * @param userConfig - Partial config (merged with defaults, validated via Zod)
131
+ * @param invokeModel - Function to route questions to model providers
132
+ * @param persistPath - Path to persist registry/audit data (null for ephemeral)
133
+ */
134
+ export function createGrillo(params) {
135
+ // Merge and validate config
136
+ const merged = deepMerge(DEFAULT_CONFIG, params.config ?? {});
137
+ const config = grilloConfigSchema.parse(merged);
138
+ const basePath = params.persistPath ?? null;
139
+ // Create services
140
+ const registry = new AgentRegistry({
141
+ persistPath: basePath ? `${basePath}/registry.json` : null,
142
+ autoPersist: true,
143
+ });
144
+ const auditLog = new AuditLog({
145
+ persistPath: basePath ? `${basePath}/audit.json` : null,
146
+ autoPersist: true,
147
+ });
148
+ const notifier = new GrilloNotifier(config.notifications);
149
+ const frameworkRegistry = new FrameworkRegistry();
150
+ // Phase 6: Load custom frameworks from config
151
+ if (config.customFrameworks && config.customFrameworks.length > 0) {
152
+ frameworkRegistry.loadCustomFrameworks(config.customFrameworks);
153
+ }
154
+ const driftDetector = new DriftDetector(config);
155
+ const orchestrator = new GrilloOrchestrator({
156
+ registry,
157
+ config,
158
+ invokeModel: params.invokeModel,
159
+ notifier,
160
+ frameworkRegistry,
161
+ driftDetector,
162
+ auditLog,
163
+ });
164
+ const fleetAnomalyDetector = new FleetAnomalyDetector(config);
165
+ const reportGenerator = new ComplianceReportGenerator({ registry, auditLog, config });
166
+ const certificateGenerator = new CertificateGenerator({
167
+ issuer: config.whiteLabel?.certificateIssuer ?? "grillo-cricket",
168
+ });
169
+ // Wire command router
170
+ const commandRouter = new CommandRouter();
171
+ // Inline commands (backward-compat + Phase 2 subcommands)
172
+ commandRouter.register("inline:assess", createAssessHandler(orchestrator, registry, config, auditLog));
173
+ commandRouter.register("inline:assess-setup", createAssessSetupHandler(config));
174
+ // Grillo commands — Phase 1
175
+ commandRouter.register("grillo:assess", createGrilloAssessHandler(orchestrator, registry, config));
176
+ commandRouter.register("grillo:fleet", createGrilloFleetHandler(orchestrator, registry));
177
+ commandRouter.register("grillo:status", createGrilloStatusHandler(registry));
178
+ commandRouter.register("grillo:register", createGrilloRegisterHandler(registry));
179
+ commandRouter.register("grillo:deregister", createGrilloDeregisterHandler(registry));
180
+ commandRouter.register("grillo:drift", createGrilloDriftHandler(registry, driftDetector, fleetAnomalyDetector));
181
+ commandRouter.register("grillo:schedule", createGrilloScheduleHandler(registry, config));
182
+ commandRouter.register("grillo:help", createGrilloHelpHandler());
183
+ // Grillo commands — Phase 2
184
+ commandRouter.register("grillo:hierarchy", createGrilloHierarchyHandler(registry));
185
+ commandRouter.register("grillo:discover", createGrilloDiscoverHandler(registry, auditLog));
186
+ commandRouter.register("grillo:suspend", createGrilloSuspendHandler(registry, auditLog));
187
+ commandRouter.register("grillo:reinstate", createGrilloReinstateHandler(registry, auditLog));
188
+ commandRouter.register("grillo:verify", createGrilloVerifyHandler(registry));
189
+ commandRouter.register("grillo:audit", createGrilloAuditHandler(auditLog));
190
+ commandRouter.register("grillo:config", createGrilloConfigHandler(config, auditLog, basePath ? `${basePath}/grillo.config.json` : null));
191
+ commandRouter.register("grillo:queue", createGrilloQueueHandler(registry, config));
192
+ commandRouter.register("grillo:report", createGrilloReportHandler(reportGenerator));
193
+ // Phase 6 commands
194
+ commandRouter.register("grillo:bypass", createGrilloBypassHandler(registry, auditLog));
195
+ // Phase 3: Continuous monitor (created last — depends on orchestrator)
196
+ const continuousMonitor = new ContinuousMonitor({
197
+ registry,
198
+ orchestrator,
199
+ auditLog,
200
+ notifier,
201
+ config,
202
+ });
203
+ // Phase 4: Discovery, Event Bus, Dashboard
204
+ const discoveryService = new DiscoveryService({
205
+ registry,
206
+ auditLog,
207
+ notifier,
208
+ });
209
+ const eventBus = new GrilloEventBus();
210
+ const dashboardMetrics = new DashboardMetrics({
211
+ registry,
212
+ auditLog,
213
+ frameworkRegistry,
214
+ driftDetector,
215
+ });
216
+ return {
217
+ registry,
218
+ orchestrator,
219
+ driftDetector,
220
+ fleetAnomalyDetector,
221
+ commandRouter,
222
+ notifier,
223
+ auditLog,
224
+ reportGenerator,
225
+ frameworkRegistry,
226
+ certificateGenerator,
227
+ continuousMonitor,
228
+ discoveryService,
229
+ eventBus,
230
+ dashboardMetrics,
231
+ config,
232
+ };
233
+ }
234
+ // ================================================================
235
+ // Deep Merge Helper
236
+ // ================================================================
237
+ function deepMerge(target, source) {
238
+ const output = { ...target };
239
+ for (const key of Object.keys(source)) {
240
+ if (source[key] &&
241
+ typeof source[key] === "object" &&
242
+ !Array.isArray(source[key]) &&
243
+ target[key] &&
244
+ typeof target[key] === "object" &&
245
+ !Array.isArray(target[key])) {
246
+ output[key] = deepMerge(target[key], source[key]);
247
+ }
248
+ else if (source[key] !== undefined) {
249
+ output[key] = source[key];
250
+ }
251
+ }
252
+ return output;
253
+ }
254
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,mEAAmE;AACnE,SAAS;AACT,mEAAmE;AAEnE,OAAO,EAAE,kBAAkB,EAAqB,MAAM,oBAAoB,CAAC;AAU3E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,mEAAmE;AACnE,WAAW;AACX,mEAAmE;AAEnE,OAAO,EACL,aAAa,GAKd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,QAAQ,EACR,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAgB7B,mEAAmE;AACnE,gBAAgB;AAChB,mEAAmE;AAEnE,OAAO,EACL,kBAAkB,GAInB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,oBAAoB,GAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,GAErB,MAAM,8BAA8B,CAAC;AAEtC,mEAAmE;AACnE,QAAQ;AACR,mEAAmE;AAEnE,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,mEAAmE;AACnE,WAAW;AACX,mEAAmE;AAEnE,OAAO,EACL,aAAa,EACb,YAAY,GAIb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB;AACvB,UAAU;AACV,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB;AACzB,UAAU;AACV,yBAAyB,GAC1B,MAAM,+BAA+B,CAAC;AAEvC,mEAAmE;AACnE,gBAAgB;AAChB,mEAAmE;AAEnE,OAAO,EACL,cAAc,GAEf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,gCAAgC,EAChC,mCAAmC,GACpC,MAAM,8BAA8B,CAAC;AAEtC,mEAAmE;AACnE,kBAAkB;AAClB,mEAAmE;AAEnE,OAAO,EACL,QAAQ,GAIT,MAAM,sBAAsB,CAAC;AAE9B,mEAAmE;AACnE,oBAAoB;AACpB,mEAAmE;AAEnE,OAAO,EACL,yBAAyB,GAK1B,MAAM,gCAAgC,CAAC;AAExC,mEAAmE;AACnE,qBAAqB;AACrB,mEAAmE;AAEnE,OAAO,EACL,eAAe,GAEhB,MAAM,iBAAiB,CAAC;AAEzB,mEAAmE;AACnE,oCAAoC;AACpC,mEAAmE;AAEnE,OAAO,EACL,iBAAiB,EAIjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,oCAAoC,CAAC;AAE5C,mEAAmE;AACnE,0BAA0B;AAC1B,mEAAmE;AAEnE,OAAO,EACL,oBAAoB,GAGrB,MAAM,gCAAgC,CAAC;AAExC,mEAAmE;AACnE,kCAAkC;AAClC,mEAAmE;AAEnE,OAAO,EACL,iBAAiB,GAGlB,MAAM,oCAAoC,CAAC;AAE5C,mEAAmE;AACnE,sBAAsB;AACtB,mEAAmE;AAEnE,OAAO,EACL,gBAAgB,GAEjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAIL,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,kCAAkC,CAAC;AAE1C,mEAAmE;AACnE,sBAAsB;AACtB,mEAAmE;AAEnE,OAAO,EACL,cAAc,GAKf,MAAM,uBAAuB,CAAC;AAE/B,mEAAmE;AACnE,8BAA8B;AAC9B,mEAAmE;AAEnE,OAAO,EACL,gBAAgB,GAMjB,MAAM,wBAAwB,CAAC;AAEhC,mEAAmE;AACnE,6BAA6B;AAC7B,mEAAmE;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,mEAAmE;AACnE,gBAAgB;AAChB,mEAAmE;AAEnE,OAAO,EAAE,GAAG,EAAgD,MAAM,iBAAiB,CAAC;AACpF,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,GAEd,MAAM,wBAAwB,CAAC;AAEhC,mEAAmE;AACnE,qCAAqC;AACrC,mEAAmE;AAEnE,OAAO,EAAE,kBAAkB,EAAqB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB;AACvB,UAAU;AACV,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB;AACzB,UAAU;AACV,yBAAyB,GAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAqB1D;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAI5B;IACC,4BAA4B;IAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;IAE5C,kBAAkB;IAClB,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC;QACjC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,gBAAgB,CAAC,CAAC,CAAC,IAAI;QAC1D,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,aAAa,CAAC,CAAC,CAAC,IAAI;QACvD,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAE1D,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAElD,8CAA8C;IAC9C,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAEhD,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC;QAC1C,QAAQ;QACR,MAAM;QACN,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ;QACR,iBAAiB;QACjB,aAAa;QACb,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,eAAe,GAAG,IAAI,yBAAyB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACtF,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CAAC;QACpD,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,iBAAiB,IAAI,gBAAgB;KACjE,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAE1C,0DAA0D;IAC1D,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,mBAAmB,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvG,aAAa,CAAC,QAAQ,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhF,4BAA4B;IAC5B,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACnG,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,wBAAwB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzF,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,aAAa,CAAC,QAAQ,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjF,aAAa,CAAC,QAAQ,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrF,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,wBAAwB,CAAC,QAAQ,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAChH,aAAa,CAAC,QAAQ,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACzF,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAEjE,4BAA4B;IAC5B,aAAa,CAAC,QAAQ,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnF,aAAa,CAAC,QAAQ,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3F,aAAa,CAAC,QAAQ,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzF,aAAa,CAAC,QAAQ,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7F,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzI,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACnF,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC,CAAC;IAEpF,mBAAmB;IACnB,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvF,uEAAuE;IACvE,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;QAC9C,QAAQ;QACR,YAAY;QACZ,QAAQ;QACR,QAAQ;QACR,MAAM;KACP,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;QAC5C,QAAQ;QACR,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IAEtC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;QAC5C,QAAQ;QACR,QAAQ;QACR,iBAAiB;QACjB,aAAa;KACd,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,aAAa;QACb,oBAAoB;QACpB,aAAa;QACb,QAAQ;QACR,QAAQ;QACR,eAAe;QACf,iBAAiB;QACjB,oBAAoB;QACpB,iBAAiB;QACjB,gBAAgB;QAChB,QAAQ;QACR,gBAAgB;QAChB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,oBAAoB;AACpB,mEAAmE;AAEnE,SAAS,SAAS,CAAC,MAAW,EAAE,MAAW;IACzC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IACE,MAAM,CAAC,GAAG,CAAC;YACX,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;YAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC;YACX,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;YAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAC3B,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Grillo Cricket — Continuous Monitor
3
+ *
4
+ * Background scheduler that periodically checks for agents due for
5
+ * assessment and triggers them automatically. Respects the assessment
6
+ * window from configuration.
7
+ *
8
+ * This is the "flight operations center" that keeps the fleet continuously
9
+ * airworthy — not just one-time checks, but ongoing conscience.
10
+ */
11
+ import type { AgentRegistry } from "../registry/agent-registry.js";
12
+ import type { GrilloOrchestrator } from "../orchestration/orchestrator.js";
13
+ import type { AuditLog } from "../audit/audit-log.js";
14
+ import type { Notifier } from "../notifications/notifier.js";
15
+ import type { GrilloConfig } from "../config/schema.js";
16
+ export type MonitorEvent = "tick" | "assessment_triggered" | "window_open" | "window_closed" | "expiration_detected" | "error";
17
+ export type MonitorListener = (event: MonitorEvent, data?: Record<string, unknown>) => void;
18
+ export declare class ContinuousMonitor {
19
+ private readonly registry;
20
+ private readonly orchestrator;
21
+ private readonly auditLog;
22
+ private readonly notifier;
23
+ private readonly config;
24
+ private intervalHandle;
25
+ private listeners;
26
+ private _running;
27
+ private lastTickAt;
28
+ constructor(params: {
29
+ registry: AgentRegistry;
30
+ orchestrator: GrilloOrchestrator;
31
+ auditLog?: AuditLog;
32
+ notifier?: Notifier;
33
+ config: GrilloConfig;
34
+ });
35
+ /**
36
+ * Start the continuous monitor.
37
+ * @param intervalMs Check interval in milliseconds (default: 60000 = 1 minute)
38
+ */
39
+ start(intervalMs?: number): void;
40
+ /**
41
+ * Stop the continuous monitor.
42
+ */
43
+ stop(): void;
44
+ /**
45
+ * Whether the monitor is currently running.
46
+ */
47
+ get running(): boolean;
48
+ /**
49
+ * Register an event listener.
50
+ */
51
+ on(listener: MonitorListener): void;
52
+ /**
53
+ * Single tick of the monitor. Checks for due assessments,
54
+ * expired certifications, and triggers as needed.
55
+ */
56
+ tick(): Promise<void>;
57
+ private checkExpirations;
58
+ private checkDueAssessments;
59
+ private emit;
60
+ }
61
+ //# sourceMappingURL=continuous-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuous-monitor.d.ts","sourceRoot":"","sources":["../../src/monitoring/continuous-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,sBAAsB,GACtB,aAAa,GACb,eAAe,GACf,qBAAqB,GACrB,OAAO,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAM5F,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAqB;gBAE3B,MAAM,EAAE;QAClB,QAAQ,EAAE,aAAa,CAAC;QACxB,YAAY,EAAE,kBAAkB,CAAC;QACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,MAAM,EAAE,YAAY,CAAC;KACtB;IAYD;;;OAGG;IACH,KAAK,CAAC,UAAU,GAAE,MAAc,GAAG,IAAI;IAgBvC;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,EAAE,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQnC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAgCb,gBAAgB;YAiDhB,mBAAmB;IAyCjC,OAAO,CAAC,IAAI;CASb"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Grillo Cricket — Continuous Monitor
3
+ *
4
+ * Background scheduler that periodically checks for agents due for
5
+ * assessment and triggers them automatically. Respects the assessment
6
+ * window from configuration.
7
+ *
8
+ * This is the "flight operations center" that keeps the fleet continuously
9
+ * airworthy — not just one-time checks, but ongoing conscience.
10
+ */
11
+ import { isInAssessmentWindow } from "../orchestration/scheduler.js";
12
+ import { CertificationStatus } from "../registry/types.js";
13
+ // ================================================================
14
+ // Continuous Monitor
15
+ // ================================================================
16
+ export class ContinuousMonitor {
17
+ registry;
18
+ orchestrator;
19
+ auditLog;
20
+ notifier;
21
+ config;
22
+ intervalHandle = null;
23
+ listeners = [];
24
+ _running = false;
25
+ lastTickAt = null;
26
+ constructor(params) {
27
+ this.registry = params.registry;
28
+ this.orchestrator = params.orchestrator;
29
+ this.auditLog = params.auditLog ?? null;
30
+ this.notifier = params.notifier ?? null;
31
+ this.config = params.config;
32
+ }
33
+ // ============================================================
34
+ // Lifecycle
35
+ // ============================================================
36
+ /**
37
+ * Start the continuous monitor.
38
+ * @param intervalMs Check interval in milliseconds (default: 60000 = 1 minute)
39
+ */
40
+ start(intervalMs = 60000) {
41
+ if (this._running)
42
+ return;
43
+ this._running = true;
44
+ console.log(`[grillo:monitor] Started. Checking every ${intervalMs / 1000}s. ` +
45
+ `Window: ${this.config.assessment.window.start}-${this.config.assessment.window.end}`);
46
+ // Run immediately on start
47
+ this.tick();
48
+ // Then on interval
49
+ this.intervalHandle = setInterval(() => this.tick(), intervalMs);
50
+ }
51
+ /**
52
+ * Stop the continuous monitor.
53
+ */
54
+ stop() {
55
+ if (this.intervalHandle) {
56
+ clearInterval(this.intervalHandle);
57
+ this.intervalHandle = null;
58
+ }
59
+ this._running = false;
60
+ console.log("[grillo:monitor] Stopped.");
61
+ }
62
+ /**
63
+ * Whether the monitor is currently running.
64
+ */
65
+ get running() {
66
+ return this._running;
67
+ }
68
+ /**
69
+ * Register an event listener.
70
+ */
71
+ on(listener) {
72
+ this.listeners.push(listener);
73
+ }
74
+ // ============================================================
75
+ // Tick — The Main Loop
76
+ // ============================================================
77
+ /**
78
+ * Single tick of the monitor. Checks for due assessments,
79
+ * expired certifications, and triggers as needed.
80
+ */
81
+ async tick() {
82
+ this.lastTickAt = new Date();
83
+ this.emit("tick");
84
+ try {
85
+ // Check assessment window
86
+ const inWindow = isInAssessmentWindow(this.config);
87
+ if (!inWindow) {
88
+ this.emit("window_closed");
89
+ return;
90
+ }
91
+ this.emit("window_open");
92
+ // Check for expired certifications
93
+ await this.checkExpirations();
94
+ // Check for due assessments
95
+ await this.checkDueAssessments();
96
+ }
97
+ catch (error) {
98
+ console.error("[grillo:monitor] Tick error:", error);
99
+ this.emit("error", {
100
+ message: error instanceof Error ? error.message : String(error),
101
+ });
102
+ }
103
+ }
104
+ // ============================================================
105
+ // Expiration Checking
106
+ // ============================================================
107
+ async checkExpirations() {
108
+ const now = new Date();
109
+ const agents = this.registry.all();
110
+ for (const agent of agents) {
111
+ if (agent.certificationStatus === CertificationStatus.CERTIFIED) {
112
+ // Check if latest cert has expired
113
+ const lastCert = agent.certificationHistory[agent.certificationHistory.length - 1];
114
+ if (lastCert && lastCert.expiresAt.getTime() < now.getTime()) {
115
+ this.registry.updateStatus(agent.agentId, CertificationStatus.EXPIRED);
116
+ this.auditLog?.append({
117
+ action: "certification_expired",
118
+ actor: "monitor",
119
+ agentId: agent.agentId,
120
+ description: `Certification for ${agent.agentName} has expired.`,
121
+ });
122
+ if (this.notifier) {
123
+ await this.notifier.notify({
124
+ event: "certification_expired",
125
+ agentId: agent.agentId,
126
+ agentName: agent.agentName,
127
+ message: `Certification expired for ${agent.agentName}. Reassessment required.`,
128
+ data: {
129
+ lastAssessedAt: agent.lastAssessedAt?.toISOString(),
130
+ expiredAt: lastCert.expiresAt.toISOString(),
131
+ },
132
+ timestamp: now,
133
+ });
134
+ }
135
+ this.emit("expiration_detected", {
136
+ agentId: agent.agentId,
137
+ agentName: agent.agentName,
138
+ });
139
+ }
140
+ }
141
+ }
142
+ }
143
+ // ============================================================
144
+ // Due Assessment Checking
145
+ // ============================================================
146
+ async checkDueAssessments() {
147
+ // Don't trigger if orchestrator is already running a fleet assessment
148
+ if (this.orchestrator.isRunning)
149
+ return;
150
+ const dueAgents = this.registry.dueForAssessment();
151
+ if (dueAgents.length === 0)
152
+ return;
153
+ // Filter out suspended agents
154
+ const assessable = dueAgents.filter((a) => a.certificationStatus !== CertificationStatus.SUSPENDED);
155
+ if (assessable.length === 0)
156
+ return;
157
+ this.emit("assessment_triggered", {
158
+ count: assessable.length,
159
+ agents: assessable.map((a) => a.agentId),
160
+ });
161
+ this.auditLog?.append({
162
+ action: "assessment_started",
163
+ actor: "monitor",
164
+ description: `Continuous monitor triggered fleet assessment for ${assessable.length} agents.`,
165
+ data: { agentIds: assessable.map((a) => a.agentId) },
166
+ });
167
+ // Trigger fleet assessment for due agents only
168
+ try {
169
+ await this.orchestrator.assessFleet({
170
+ agentIds: assessable.map((a) => a.agentId),
171
+ });
172
+ }
173
+ catch (error) {
174
+ console.error("[grillo:monitor] Fleet assessment error:", error);
175
+ }
176
+ }
177
+ // ============================================================
178
+ // Helpers
179
+ // ============================================================
180
+ emit(event, data) {
181
+ for (const listener of this.listeners) {
182
+ try {
183
+ listener(event, data);
184
+ }
185
+ catch {
186
+ // Listeners should not crash the monitor
187
+ }
188
+ }
189
+ }
190
+ }
191
+ //# sourceMappingURL=continuous-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuous-monitor.js","sourceRoot":"","sources":["../../src/monitoring/continuous-monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Grillo Cricket — Notification Service
3
+ *
4
+ * Multi-channel notification dispatcher. Phase 1 supports:
5
+ * - Console logging (always on)
6
+ * - Webhook (HTTP POST to configured URLs)
7
+ *
8
+ * Phase 2+ will add: Slack, email, Telegram.
9
+ */
10
+ import type { NotificationPayload } from "../registry/types.js";
11
+ import type { NotificationConfig } from "../config/schema.js";
12
+ export interface Notifier {
13
+ notify(payload: NotificationPayload): Promise<void>;
14
+ }
15
+ export declare class GrilloNotifier implements Notifier {
16
+ private readonly config;
17
+ private readonly channels;
18
+ constructor(config: NotificationConfig);
19
+ notify(payload: NotificationPayload): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=notifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifier.d.ts","sourceRoot":"","sources":["../../src/notifications/notifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAM9D,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAMD,qBAAa,cAAe,YAAW,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;gBAE1C,MAAM,EAAE,kBAAkB;IAYhC,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAqB1D"}