@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,388 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grillo Cricket — CLI Runner
|
|
3
|
+
*
|
|
4
|
+
* The main entry point for running Grillo as a standalone process.
|
|
5
|
+
* Handles startup, configuration, signal trapping, and clean shutdown.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx grillo start [--port 18800] [--config grillo.config.json]
|
|
9
|
+
* npx grillo assess <agentId> [--level next] [--dry-run]
|
|
10
|
+
* npx grillo status [<agentId>]
|
|
11
|
+
* npx grillo discover
|
|
12
|
+
* npx grillo report [--format md|json|csv] [--period 30d]
|
|
13
|
+
* npx grillo dashboard
|
|
14
|
+
* npx grillo help
|
|
15
|
+
*/
|
|
16
|
+
import { createGrillo } from "../index.js";
|
|
17
|
+
import { GrilloAPIServer } from "../api/server.js";
|
|
18
|
+
import { DEFAULT_CONFIG } from "../config/defaults.js";
|
|
19
|
+
import { findConfigFile, loadConfigFile, loadEnvConfig, parseCLIFlags, resolveConfig, } from "./config-loader.js";
|
|
20
|
+
// ================================================================
|
|
21
|
+
// Version & Banner
|
|
22
|
+
// ================================================================
|
|
23
|
+
const VERSION = "0.1.0";
|
|
24
|
+
function printBanner() {
|
|
25
|
+
console.log(`
|
|
26
|
+
╔══════════════════════════════════════════╗
|
|
27
|
+
║ 🦗 Grillo Cricket v${VERSION} ║
|
|
28
|
+
║ The Conscience for AI ║
|
|
29
|
+
║ Fleet Assessment & Certification Agent ║
|
|
30
|
+
╚══════════════════════════════════════════╝
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
function printHelp() {
|
|
34
|
+
console.log(`
|
|
35
|
+
grillo — The Conscience for AI
|
|
36
|
+
|
|
37
|
+
USAGE:
|
|
38
|
+
grillo <command> [options]
|
|
39
|
+
|
|
40
|
+
COMMANDS:
|
|
41
|
+
start Start Grillo with API server and continuous monitor
|
|
42
|
+
assess <id> Assess a specific agent
|
|
43
|
+
status [id] Show fleet or agent status
|
|
44
|
+
discover Run agent discovery across all adapters
|
|
45
|
+
report Generate compliance report
|
|
46
|
+
dashboard Print fleet dashboard to stdout
|
|
47
|
+
frameworks List available assessment frameworks
|
|
48
|
+
version Print version
|
|
49
|
+
help Show this help
|
|
50
|
+
|
|
51
|
+
GLOBAL OPTIONS:
|
|
52
|
+
--config, -c Path to config file (default: auto-discover grillo.config.json)
|
|
53
|
+
--port, -p API server port (default: 18800)
|
|
54
|
+
--host API server host (default: 127.0.0.1)
|
|
55
|
+
--persist-path Path for registry/audit persistence (default: .grillo/)
|
|
56
|
+
--log-level Log level: debug|info|warn|error (default: info)
|
|
57
|
+
--dry-run Run assessments in dry-run mode
|
|
58
|
+
|
|
59
|
+
ASSESS OPTIONS:
|
|
60
|
+
--level <n> Assessment level (1-4) or "next" for auto-advance
|
|
61
|
+
--full Run all unlocked levels in sequence
|
|
62
|
+
--framework Framework to assess with (default: morality)
|
|
63
|
+
|
|
64
|
+
REPORT OPTIONS:
|
|
65
|
+
--format Output format: md|json|csv (default: md)
|
|
66
|
+
--period Report period: 24h|7d|30d|90d (default: 30d)
|
|
67
|
+
|
|
68
|
+
ENVIRONMENT:
|
|
69
|
+
GRILLO_COMPSI_HEALTH_CHECK_KEY CompSi health check key
|
|
70
|
+
GRILLO_COMPSI_BASE_URL CompSi API base URL
|
|
71
|
+
GRILLO_ASSESSMENT_FREQUENCY Assessment frequency (daily|weekly|monthly)
|
|
72
|
+
GRILLO_ASSESSMENT_HIERARCHICAL_MODE Enable hierarchy gating (true|false)
|
|
73
|
+
GRILLO_API_PORT API server port
|
|
74
|
+
|
|
75
|
+
CONFIG FILE:
|
|
76
|
+
Grillo looks for config files in this order:
|
|
77
|
+
grillo.config.json, .grillo.json, .grillorc.json
|
|
78
|
+
Starting from the current directory and walking up to the filesystem root.
|
|
79
|
+
|
|
80
|
+
EXAMPLES:
|
|
81
|
+
grillo start
|
|
82
|
+
grillo start --port 9000 --persist-path ./data
|
|
83
|
+
grillo assess bot-1 --level next --dry-run
|
|
84
|
+
grillo status
|
|
85
|
+
grillo report --format json --period 7d
|
|
86
|
+
grillo dashboard
|
|
87
|
+
`);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Main CLI entry point. Parse args, resolve config, dispatch subcommand.
|
|
91
|
+
*/
|
|
92
|
+
export async function run(options = {}) {
|
|
93
|
+
const argv = options.argv ?? process.argv.slice(2);
|
|
94
|
+
const command = argv[0] ?? "help";
|
|
95
|
+
const restArgs = argv.slice(1);
|
|
96
|
+
const flags = parseCLIFlags(restArgs);
|
|
97
|
+
// Resolve configuration
|
|
98
|
+
const config = buildConfig(flags);
|
|
99
|
+
// Create model invoker (stub if not provided)
|
|
100
|
+
const invokeModel = options.createModelInvoker?.() ??
|
|
101
|
+
(async (_model, _question) => {
|
|
102
|
+
console.warn("[grillo] No model invoker configured. Using stub response.");
|
|
103
|
+
return "A";
|
|
104
|
+
});
|
|
105
|
+
// Create Grillo instance
|
|
106
|
+
const grillo = createGrillo({
|
|
107
|
+
config,
|
|
108
|
+
invokeModel,
|
|
109
|
+
persistPath: flags.persistPath ?? ".grillo",
|
|
110
|
+
});
|
|
111
|
+
switch (command) {
|
|
112
|
+
case "start":
|
|
113
|
+
await cmdStart(grillo, flags);
|
|
114
|
+
break;
|
|
115
|
+
case "assess":
|
|
116
|
+
await cmdAssess(grillo, restArgs, flags);
|
|
117
|
+
break;
|
|
118
|
+
case "status":
|
|
119
|
+
await cmdStatus(grillo, restArgs);
|
|
120
|
+
break;
|
|
121
|
+
case "discover":
|
|
122
|
+
await cmdDiscover(grillo);
|
|
123
|
+
break;
|
|
124
|
+
case "report":
|
|
125
|
+
await cmdReport(grillo, flags, restArgs);
|
|
126
|
+
break;
|
|
127
|
+
case "dashboard":
|
|
128
|
+
await cmdDashboard(grillo);
|
|
129
|
+
break;
|
|
130
|
+
case "frameworks":
|
|
131
|
+
cmdFrameworks(grillo);
|
|
132
|
+
break;
|
|
133
|
+
case "version":
|
|
134
|
+
console.log(`grillo v${VERSION}`);
|
|
135
|
+
break;
|
|
136
|
+
case "help":
|
|
137
|
+
case "--help":
|
|
138
|
+
case "-h":
|
|
139
|
+
printHelp();
|
|
140
|
+
break;
|
|
141
|
+
default:
|
|
142
|
+
console.error(`Unknown command: ${command}`);
|
|
143
|
+
console.error('Run "grillo help" for usage.');
|
|
144
|
+
process.exitCode = 1;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// ================================================================
|
|
148
|
+
// start — Run API server + continuous monitor
|
|
149
|
+
// ================================================================
|
|
150
|
+
async function cmdStart(grillo, flags) {
|
|
151
|
+
printBanner();
|
|
152
|
+
const port = flags.port ?? 18800;
|
|
153
|
+
const host = flags.host ?? "127.0.0.1";
|
|
154
|
+
// Start API server
|
|
155
|
+
const apiServer = new GrilloAPIServer({
|
|
156
|
+
registry: grillo.registry,
|
|
157
|
+
orchestrator: grillo.orchestrator,
|
|
158
|
+
driftDetector: grillo.driftDetector,
|
|
159
|
+
fleetAnomalyDetector: grillo.fleetAnomalyDetector,
|
|
160
|
+
auditLog: grillo.auditLog,
|
|
161
|
+
reportGenerator: grillo.reportGenerator,
|
|
162
|
+
config: grillo.config,
|
|
163
|
+
discoveryService: grillo.discoveryService,
|
|
164
|
+
eventBus: grillo.eventBus,
|
|
165
|
+
continuousMonitor: grillo.continuousMonitor,
|
|
166
|
+
dashboardMetrics: grillo.dashboardMetrics,
|
|
167
|
+
port,
|
|
168
|
+
host,
|
|
169
|
+
});
|
|
170
|
+
await apiServer.start();
|
|
171
|
+
// Start continuous monitor
|
|
172
|
+
grillo.continuousMonitor.start(60000);
|
|
173
|
+
// Log startup info
|
|
174
|
+
console.log(`[grillo] Registry: ${grillo.registry.size} agents`);
|
|
175
|
+
console.log(`[grillo] Audit log: ${grillo.auditLog.size} entries`);
|
|
176
|
+
console.log(`[grillo] Frameworks: ${grillo.frameworkRegistry.available().length} available`);
|
|
177
|
+
console.log(`[grillo] Hierarchical mode: ${grillo.config.assessment.hierarchicalMode ? "ON" : "OFF"}`);
|
|
178
|
+
console.log(`[grillo] Assessment window: ${grillo.config.assessment.window.start}-${grillo.config.assessment.window.end} ${grillo.config.assessment.window.timezone}`);
|
|
179
|
+
console.log(`[grillo] Dashboard: http://${host}:${port}/dashboard`);
|
|
180
|
+
console.log("[grillo] Ready.");
|
|
181
|
+
// Trap shutdown signals
|
|
182
|
+
const shutdown = async (signal) => {
|
|
183
|
+
console.log(`\n[grillo] Received ${signal}. Shutting down gracefully...`);
|
|
184
|
+
grillo.continuousMonitor.stop();
|
|
185
|
+
await apiServer.stop({ timeoutMs: 10000 });
|
|
186
|
+
grillo.registry.persist();
|
|
187
|
+
grillo.auditLog.persist();
|
|
188
|
+
console.log("[grillo] Shutdown complete. Goodbye.");
|
|
189
|
+
process.exit(0);
|
|
190
|
+
};
|
|
191
|
+
process.on("SIGTERM", () => shutdown("SIGTERM"));
|
|
192
|
+
process.on("SIGINT", () => shutdown("SIGINT"));
|
|
193
|
+
// Keep process alive
|
|
194
|
+
await new Promise(() => {
|
|
195
|
+
// Never resolves — process stays running until signal
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
// ================================================================
|
|
199
|
+
// assess — Run assessment on a specific agent
|
|
200
|
+
// ================================================================
|
|
201
|
+
async function cmdAssess(grillo, args, flags) {
|
|
202
|
+
const agentId = args.find((a) => !a.startsWith("-"));
|
|
203
|
+
if (!agentId) {
|
|
204
|
+
console.error("Usage: grillo assess <agentId> [--level <n>|next] [--full] [--dry-run]");
|
|
205
|
+
process.exitCode = 1;
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const agent = grillo.registry.get(agentId);
|
|
209
|
+
if (!agent) {
|
|
210
|
+
console.error(`Agent not found: ${agentId}`);
|
|
211
|
+
console.error(`Registered agents: ${grillo.registry.all().map((a) => a.agentId).join(", ") || "(none)"}`);
|
|
212
|
+
process.exitCode = 1;
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const levelArg = extractFlag(args, "--level");
|
|
216
|
+
const fullFlag = args.includes("--full");
|
|
217
|
+
const frameworkArg = extractFlag(args, "--framework");
|
|
218
|
+
console.log(`[grillo] Assessing ${agent.agentName} (${agent.model}@${agent.provider})...`);
|
|
219
|
+
try {
|
|
220
|
+
if (fullFlag) {
|
|
221
|
+
const results = await grillo.orchestrator.assessFullHierarchy(agent, {
|
|
222
|
+
dryRun: flags.dryRun,
|
|
223
|
+
onProgress: (msg) => console.log(` ${msg}`),
|
|
224
|
+
});
|
|
225
|
+
console.log(`\n[grillo] Full hierarchy: ${results.length} level(s) assessed.`);
|
|
226
|
+
for (const r of results) {
|
|
227
|
+
console.log(` Level ${r.level}: ${r.passed ? "PASSED" : "FAILED"} — ${r.classification}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else if (levelArg === "next") {
|
|
231
|
+
const result = await grillo.orchestrator.assessNextLevel(agent, {
|
|
232
|
+
dryRun: flags.dryRun,
|
|
233
|
+
onProgress: (msg) => console.log(` ${msg}`),
|
|
234
|
+
});
|
|
235
|
+
printAssessmentResult(result);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
const level = levelArg ? parseInt(levelArg, 10) : 1;
|
|
239
|
+
const result = await grillo.orchestrator.assessAgent(agent, {
|
|
240
|
+
framework: frameworkArg ?? undefined,
|
|
241
|
+
level,
|
|
242
|
+
dryRun: flags.dryRun,
|
|
243
|
+
onProgress: (msg) => console.log(` ${msg}`),
|
|
244
|
+
});
|
|
245
|
+
printAssessmentResult(result);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
console.error(`[grillo] Assessment failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
250
|
+
process.exitCode = 1;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
function printAssessmentResult(result) {
|
|
254
|
+
const status = result.passed ? "PASSED" : "FAILED";
|
|
255
|
+
console.log(`\n[grillo] Result: ${status}`);
|
|
256
|
+
console.log(` Classification: ${result.classification}`);
|
|
257
|
+
console.log(` Level: ${result.level}`);
|
|
258
|
+
console.log(` Duration: ${(result.durationMs / 1000).toFixed(1)}s`);
|
|
259
|
+
console.log(" Scores:");
|
|
260
|
+
for (const [dim, score] of Object.entries(result.scores)) {
|
|
261
|
+
const bar = "█".repeat(Math.round(score));
|
|
262
|
+
console.log(` ${dim.padEnd(20)} ${score.toFixed(1)}/10 ${bar}`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
// ================================================================
|
|
266
|
+
// status — Fleet or agent status
|
|
267
|
+
// ================================================================
|
|
268
|
+
async function cmdStatus(grillo, args) {
|
|
269
|
+
const agentId = args.find((a) => !a.startsWith("-"));
|
|
270
|
+
if (agentId) {
|
|
271
|
+
// Single agent status
|
|
272
|
+
const agent = grillo.registry.get(agentId);
|
|
273
|
+
if (!agent) {
|
|
274
|
+
console.error(`Agent not found: ${agentId}`);
|
|
275
|
+
process.exitCode = 1;
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
console.log(`Agent: ${agent.agentName} (${agent.agentId})`);
|
|
279
|
+
console.log(` Model: ${agent.model}@${agent.provider}`);
|
|
280
|
+
console.log(` Status: ${agent.certificationStatus}`);
|
|
281
|
+
console.log(` Risk Tier: ${agent.riskTier}`);
|
|
282
|
+
console.log(` Category: ${agent.category}`);
|
|
283
|
+
console.log(` Assessments: ${agent.certificationHistory.length}`);
|
|
284
|
+
console.log(` Hierarchy:`);
|
|
285
|
+
console.log(` L1 Morality: ${agent.hierarchicalProgress.level1_morality}`);
|
|
286
|
+
console.log(` L2 Virtue: ${agent.hierarchicalProgress.level2_virtue}`);
|
|
287
|
+
console.log(` L3 Ethics: ${agent.hierarchicalProgress.level3_ethics}`);
|
|
288
|
+
console.log(` L4 OpEx: ${agent.hierarchicalProgress.level4_opex}`);
|
|
289
|
+
if (agent.lastAssessedAt) {
|
|
290
|
+
console.log(` Last assessed: ${agent.lastAssessedAt.toISOString()}`);
|
|
291
|
+
}
|
|
292
|
+
if (agent.nextAssessmentDue) {
|
|
293
|
+
console.log(` Next due: ${agent.nextAssessmentDue.toISOString()}`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
// Fleet status
|
|
298
|
+
const overview = grillo.dashboardMetrics.getFleetOverview();
|
|
299
|
+
console.log(`Fleet: ${overview.totalAgents} agents`);
|
|
300
|
+
console.log(` Certification rate: ${(overview.certificationRate * 100).toFixed(1)}%`);
|
|
301
|
+
console.log(` Avg score: ${overview.averageFleetScore?.toFixed(1) ?? "N/A"}`);
|
|
302
|
+
console.log(` Drifting: ${overview.driftingAgents}`);
|
|
303
|
+
console.log(` Due for assessment: ${overview.dueForAssessment}`);
|
|
304
|
+
if (overview.totalAgents > 0) {
|
|
305
|
+
console.log("\n By status:");
|
|
306
|
+
for (const [status, count] of Object.entries(overview.byStatus)) {
|
|
307
|
+
if (count > 0)
|
|
308
|
+
console.log(` ${status}: ${count}`);
|
|
309
|
+
}
|
|
310
|
+
console.log("\n By provider:");
|
|
311
|
+
for (const [provider, count] of Object.entries(overview.byProvider)) {
|
|
312
|
+
console.log(` ${provider}: ${count}`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
// ================================================================
|
|
318
|
+
// discover — Run agent discovery
|
|
319
|
+
// ================================================================
|
|
320
|
+
async function cmdDiscover(grillo) {
|
|
321
|
+
const adapters = grillo.discoveryService.listAdapters();
|
|
322
|
+
if (adapters.length === 0) {
|
|
323
|
+
console.log("[grillo] No discovery adapters configured.");
|
|
324
|
+
console.log(" Add adapters via grillo.discoveryService.addAdapter() in your setup code,");
|
|
325
|
+
console.log(" or configure GRILLO_OPENCLAW_GATEWAY_URL to enable OpenClaw discovery.");
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
console.log(`[grillo] Running discovery across ${adapters.length} adapter(s)...`);
|
|
329
|
+
const result = await grillo.discoveryService.discoverAndReconcile();
|
|
330
|
+
console.log(grillo.discoveryService.formatResults(result));
|
|
331
|
+
}
|
|
332
|
+
// ================================================================
|
|
333
|
+
// report — Generate compliance report
|
|
334
|
+
// ================================================================
|
|
335
|
+
async function cmdReport(grillo, _flags, args) {
|
|
336
|
+
const formatArg = extractFlag(args, "--format") ?? "md";
|
|
337
|
+
const periodArg = extractFlag(args, "--period") ?? "30d";
|
|
338
|
+
// Map short format names to full names
|
|
339
|
+
const formatMap = { md: "markdown", json: "json", csv: "csv" };
|
|
340
|
+
const format = (formatMap[formatArg] ?? formatArg);
|
|
341
|
+
const period = periodArg;
|
|
342
|
+
const report = await grillo.reportGenerator.generate({ format, period });
|
|
343
|
+
console.log(report);
|
|
344
|
+
}
|
|
345
|
+
// ================================================================
|
|
346
|
+
// dashboard — Print fleet dashboard
|
|
347
|
+
// ================================================================
|
|
348
|
+
async function cmdDashboard(grillo) {
|
|
349
|
+
console.log(grillo.dashboardMetrics.formatDashboard());
|
|
350
|
+
}
|
|
351
|
+
// ================================================================
|
|
352
|
+
// frameworks — List available frameworks
|
|
353
|
+
// ================================================================
|
|
354
|
+
function cmdFrameworks(grillo) {
|
|
355
|
+
console.log(grillo.frameworkRegistry.formatFrameworks());
|
|
356
|
+
}
|
|
357
|
+
// ================================================================
|
|
358
|
+
// Helpers
|
|
359
|
+
// ================================================================
|
|
360
|
+
function buildConfig(flags) {
|
|
361
|
+
// Load from file
|
|
362
|
+
const configPath = flags.config ?? findConfigFile();
|
|
363
|
+
const fileConfig = configPath ? loadConfigFile(configPath) : undefined;
|
|
364
|
+
if (configPath) {
|
|
365
|
+
console.log(`[grillo] Config: ${configPath}`);
|
|
366
|
+
}
|
|
367
|
+
// Load from env
|
|
368
|
+
const envConfig = loadEnvConfig();
|
|
369
|
+
// Resolve
|
|
370
|
+
return resolveConfig({
|
|
371
|
+
defaults: DEFAULT_CONFIG,
|
|
372
|
+
fileConfig,
|
|
373
|
+
envConfig,
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
function extractFlag(args, flag) {
|
|
377
|
+
const idx = args.indexOf(flag);
|
|
378
|
+
if (idx >= 0 && idx + 1 < args.length) {
|
|
379
|
+
return args[idx + 1];
|
|
380
|
+
}
|
|
381
|
+
// Check --flag=value form
|
|
382
|
+
const prefix = `${flag}=`;
|
|
383
|
+
const match = args.find((a) => a.startsWith(prefix));
|
|
384
|
+
if (match)
|
|
385
|
+
return match.slice(prefix.length);
|
|
386
|
+
return null;
|
|
387
|
+
}
|
|
388
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grillo Cricket — Grillo Commands
|
|
3
|
+
*
|
|
4
|
+
* Full Grillo command suite for fleet management (Phase 1 + Phase 2):
|
|
5
|
+
* grillo -assess <agent> [--framework] [--dryRun]
|
|
6
|
+
* grillo -fleet [--dryRun] [--framework]
|
|
7
|
+
* grillo -status [agent]
|
|
8
|
+
* grillo -register <agent> --model <model> --provider <provider> [--category] [--risk]
|
|
9
|
+
* grillo -deregister <agent>
|
|
10
|
+
* grillo -drift [agent]
|
|
11
|
+
* grillo -schedule
|
|
12
|
+
* grillo -help
|
|
13
|
+
* Phase 2 additions:
|
|
14
|
+
* grillo -hierarchy [agent | fleet]
|
|
15
|
+
* grillo -discover
|
|
16
|
+
* grillo -suspend <agent>
|
|
17
|
+
* grillo -reinstate <agent>
|
|
18
|
+
* grillo -verify <runId>
|
|
19
|
+
* grillo -audit [agent]
|
|
20
|
+
* grillo -config [--set <key> <value>]
|
|
21
|
+
* grillo -queue
|
|
22
|
+
* grillo -report [--format] [--period]
|
|
23
|
+
*/
|
|
24
|
+
import type { ParsedCommand, CommandResult } from "./router.js";
|
|
25
|
+
import type { GrilloOrchestrator } from "../orchestration/orchestrator.js";
|
|
26
|
+
import type { AgentRegistry } from "../registry/agent-registry.js";
|
|
27
|
+
import type { DriftDetector } from "../drift/detector.js";
|
|
28
|
+
import type { FleetAnomalyDetector } from "../drift/fleet-anomaly.js";
|
|
29
|
+
import type { AuditLog } from "../audit/audit-log.js";
|
|
30
|
+
import type { ComplianceReportGenerator } from "../reports/compliance-report.js";
|
|
31
|
+
import type { GrilloConfig } from "../config/schema.js";
|
|
32
|
+
export declare function createGrilloAssessHandler(orchestrator: GrilloOrchestrator, registry: AgentRegistry, config: GrilloConfig): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
33
|
+
export declare function createGrilloFleetHandler(orchestrator: GrilloOrchestrator, registry: AgentRegistry): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
34
|
+
export declare function createGrilloStatusHandler(registry: AgentRegistry): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
35
|
+
export declare function createGrilloRegisterHandler(registry: AgentRegistry): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
36
|
+
export declare function createGrilloDeregisterHandler(registry: AgentRegistry): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
37
|
+
export declare function createGrilloDriftHandler(registry: AgentRegistry, driftDetector: DriftDetector, fleetAnomalyDetector: FleetAnomalyDetector): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
38
|
+
export declare function createGrilloScheduleHandler(registry: AgentRegistry, config: GrilloConfig): (_cmd: ParsedCommand) => Promise<CommandResult>;
|
|
39
|
+
export declare function createGrilloHierarchyHandler(registry: AgentRegistry): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
40
|
+
export declare function createGrilloDiscoverHandler(registry: AgentRegistry, auditLog?: AuditLog): (_cmd: ParsedCommand) => Promise<CommandResult>;
|
|
41
|
+
export declare function createGrilloSuspendHandler(registry: AgentRegistry, auditLog?: AuditLog): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
42
|
+
export declare function createGrilloReinstateHandler(registry: AgentRegistry, auditLog?: AuditLog): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
43
|
+
export declare function createGrilloVerifyHandler(registry: AgentRegistry): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
44
|
+
export declare function createGrilloAuditHandler(auditLog: AuditLog): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
45
|
+
export declare function createGrilloConfigHandler(config: GrilloConfig, auditLog?: AuditLog, configFilePath?: string | null): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
46
|
+
export declare function createGrilloQueueHandler(registry: AgentRegistry, config: GrilloConfig): (_cmd: ParsedCommand) => Promise<CommandResult>;
|
|
47
|
+
export declare function createGrilloReportHandler(reportGenerator: ComplianceReportGenerator): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
48
|
+
export declare function createGrilloBypassHandler(registry: AgentRegistry, auditLog?: AuditLog): (cmd: ParsedCommand) => Promise<CommandResult>;
|
|
49
|
+
export declare function createGrilloHelpHandler(): (_cmd: ParsedCommand) => Promise<CommandResult>;
|
|
50
|
+
//# sourceMappingURL=grillo-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grillo-commands.d.ts","sourceRoot":"","sources":["../../src/commands/grillo-commands.ts"],"names":[],"mappings":"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"}
|