@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.
- package/CHANGELOG.md +56 -0
- package/LICENSE +21 -0
- package/README.md +512 -0
- package/SKILL.md +87 -0
- package/dist/api/server.d.ts +68 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +596 -0
- package/dist/api/server.js.map +1 -0
- package/dist/audit/audit-log.d.ts +88 -0
- package/dist/audit/audit-log.d.ts.map +1 -0
- package/dist/audit/audit-log.js +195 -0
- package/dist/audit/audit-log.js.map +1 -0
- package/dist/certification/certificate.d.ts +80 -0
- package/dist/certification/certificate.d.ts.map +1 -0
- package/dist/certification/certificate.js +176 -0
- package/dist/certification/certificate.js.map +1 -0
- package/dist/cli/bin.d.ts +8 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +12 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/config-loader.d.ts +66 -0
- package/dist/cli/config-loader.d.ts.map +1 -0
- package/dist/cli/config-loader.js +243 -0
- package/dist/cli/config-loader.js.map +1 -0
- package/dist/cli/runner.d.ts +27 -0
- package/dist/cli/runner.d.ts.map +1 -0
- package/dist/cli/runner.js +388 -0
- package/dist/cli/runner.js.map +1 -0
- package/dist/commands/grillo-commands.d.ts +50 -0
- package/dist/commands/grillo-commands.d.ts.map +1 -0
- package/dist/commands/grillo-commands.js +752 -0
- package/dist/commands/grillo-commands.js.map +1 -0
- package/dist/commands/inline-commands.d.ts +16 -0
- package/dist/commands/inline-commands.d.ts.map +1 -0
- package/dist/commands/inline-commands.js +277 -0
- package/dist/commands/inline-commands.js.map +1 -0
- package/dist/commands/router.d.ts +56 -0
- package/dist/commands/router.d.ts.map +1 -0
- package/dist/commands/router.js +154 -0
- package/dist/commands/router.js.map +1 -0
- package/dist/config/defaults.d.ts +9 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +78 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/schema.d.ts +573 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +142 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/dashboard/metrics.d.ts +100 -0
- package/dist/dashboard/metrics.d.ts.map +1 -0
- package/dist/dashboard/metrics.js +282 -0
- package/dist/dashboard/metrics.js.map +1 -0
- package/dist/dashboard/ui.d.ts +19 -0
- package/dist/dashboard/ui.d.ts.map +1 -0
- package/dist/dashboard/ui.js +951 -0
- package/dist/dashboard/ui.js.map +1 -0
- package/dist/discovery/discovery-adapter.d.ts +94 -0
- package/dist/discovery/discovery-adapter.d.ts.map +1 -0
- package/dist/discovery/discovery-adapter.js +114 -0
- package/dist/discovery/discovery-adapter.js.map +1 -0
- package/dist/discovery/discovery-service.d.ts +77 -0
- package/dist/discovery/discovery-service.d.ts.map +1 -0
- package/dist/discovery/discovery-service.js +240 -0
- package/dist/discovery/discovery-service.js.map +1 -0
- package/dist/drift/detector.d.ts +51 -0
- package/dist/drift/detector.d.ts.map +1 -0
- package/dist/drift/detector.js +148 -0
- package/dist/drift/detector.js.map +1 -0
- package/dist/drift/fleet-anomaly.d.ts +28 -0
- package/dist/drift/fleet-anomaly.d.ts.map +1 -0
- package/dist/drift/fleet-anomaly.js +186 -0
- package/dist/drift/fleet-anomaly.js.map +1 -0
- package/dist/events/event-bus.d.ts +209 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-bus.js +184 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/frameworks/framework-registry.d.ts +116 -0
- package/dist/frameworks/framework-registry.d.ts.map +1 -0
- package/dist/frameworks/framework-registry.js +241 -0
- package/dist/frameworks/framework-registry.js.map +1 -0
- package/dist/index.d.ts +94 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +254 -0
- package/dist/index.js.map +1 -0
- package/dist/monitoring/continuous-monitor.d.ts +61 -0
- package/dist/monitoring/continuous-monitor.d.ts.map +1 -0
- package/dist/monitoring/continuous-monitor.js +191 -0
- package/dist/monitoring/continuous-monitor.js.map +1 -0
- package/dist/notifications/notifier.d.ts +21 -0
- package/dist/notifications/notifier.d.ts.map +1 -0
- package/dist/notifications/notifier.js +119 -0
- package/dist/notifications/notifier.js.map +1 -0
- package/dist/notifications/templates.d.ts +14 -0
- package/dist/notifications/templates.d.ts.map +1 -0
- package/dist/notifications/templates.js +105 -0
- package/dist/notifications/templates.js.map +1 -0
- package/dist/orchestration/orchestrator.d.ts +99 -0
- package/dist/orchestration/orchestrator.d.ts.map +1 -0
- package/dist/orchestration/orchestrator.js +426 -0
- package/dist/orchestration/orchestrator.js.map +1 -0
- package/dist/orchestration/queue.d.ts +17 -0
- package/dist/orchestration/queue.d.ts.map +1 -0
- package/dist/orchestration/queue.js +121 -0
- package/dist/orchestration/queue.js.map +1 -0
- package/dist/orchestration/scheduler.d.ts +26 -0
- package/dist/orchestration/scheduler.d.ts.map +1 -0
- package/dist/orchestration/scheduler.js +110 -0
- package/dist/orchestration/scheduler.js.map +1 -0
- package/dist/registry/agent-registry.d.ts +106 -0
- package/dist/registry/agent-registry.d.ts.map +1 -0
- package/dist/registry/agent-registry.js +349 -0
- package/dist/registry/agent-registry.js.map +1 -0
- package/dist/registry/types.d.ts +158 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +44 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/reports/compliance-report.d.ts +66 -0
- package/dist/reports/compliance-report.d.ts.map +1 -0
- package/dist/reports/compliance-report.js +208 -0
- package/dist/reports/compliance-report.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|