fix: replace console.log with logger.info in CLI commands

- Use provided logger from MoltbotPluginCliContext
- Remove eslint-disable comments (no longer needed)
- All 54 console.log statements replaced with logger.info
- Follows moltbot convention of using logger for output
This commit is contained in:
dp-web4 2026-01-28 14:32:21 -08:00
parent ce704cf95f
commit e9951301b4

View File

@ -293,10 +293,9 @@ const plugin = {
}); });
// --- CLI Commands --- // --- CLI Commands ---
/* eslint-disable no-console */
api.registerCli( api.registerCli(
({ program }) => { ({ program, logger }) => {
const audit = program.command("audit").description("Web4 governance audit trail"); const audit = program.command("audit").description("Web4 governance audit trail");
audit audit
@ -305,15 +304,15 @@ const plugin = {
.action(() => { .action(() => {
for (const [, entry] of sessions) { for (const [, entry] of sessions) {
const v = entry.audit.verify(); const v = entry.audit.verify();
console.log(`Session: ${entry.state.lct.tokenId}`); logger.info(`Session: ${entry.state.lct.tokenId}`);
console.log(` Actions: ${entry.state.actionIndex}`); logger.info(` Actions: ${entry.state.actionIndex}`);
console.log(` Audit records: ${v.recordCount}`); logger.info(` Audit records: ${v.recordCount}`);
console.log(` Chain valid: ${v.valid}`); logger.info(` Chain valid: ${v.valid}`);
console.log(` Tools: ${JSON.stringify(entry.state.toolCounts)}`); logger.info(` Tools: ${JSON.stringify(entry.state.toolCounts)}`);
console.log(` Categories: ${JSON.stringify(entry.state.categoryCounts)}`); logger.info(` Categories: ${JSON.stringify(entry.state.categoryCounts)}`);
} }
if (sessions.size === 0) { if (sessions.size === 0) {
console.log("No active governance sessions."); logger.info("No active governance sessions.");
} }
}); });
@ -325,16 +324,16 @@ const plugin = {
if (sessionId) { if (sessionId) {
const chain = new AuditChain(storagePath, sessionId); const chain = new AuditChain(storagePath, sessionId);
const result = chain.verify(); const result = chain.verify();
console.log(`Chain valid: ${result.valid}`); logger.info(`Chain valid: ${result.valid}`);
console.log(`Records: ${result.recordCount}`); logger.info(`Records: ${result.recordCount}`);
if (result.errors.length > 0) { if (result.errors.length > 0) {
console.log("Errors:"); logger.info("Errors:");
for (const e of result.errors) console.log(` - ${e}`); for (const e of result.errors) logger.info(` - ${e}`);
} }
} else { } else {
for (const [, entry] of sessions) { for (const [, entry] of sessions) {
const result = entry.audit.verify(); const result = entry.audit.verify();
console.log(`${entry.state.sessionId}: ${result.valid ? "VALID" : "INVALID"} (${result.recordCount} records)`); logger.info(`${entry.state.sessionId}: ${result.valid ? "VALID" : "INVALID"} (${result.recordCount} records)`);
} }
} }
}); });
@ -348,7 +347,7 @@ const plugin = {
for (const [, entry] of sessions) { for (const [, entry] of sessions) {
const records = entry.audit.getLast(count); const records = entry.audit.getLast(count);
for (const r of records) { for (const r of records) {
console.log(`${r.timestamp} ${r.tool}${r.target ?? "?"} [${r.result.status}]`); logger.info(`${r.timestamp} ${r.tool}${r.target ?? "?"} [${r.result.status}]`);
} }
} }
}); });
@ -377,16 +376,16 @@ const plugin = {
if (results.length > 0) { if (results.length > 0) {
hasResults = true; hasResults = true;
console.log(`Session: ${entry.state.sessionId} (${results.length} results)`); logger.info(`Session: ${entry.state.sessionId} (${results.length} results)`);
for (const r of results) { for (const r of results) {
const dur = r.result.durationMs !== undefined ? ` ${r.result.durationMs}ms` : ""; const dur = r.result.durationMs !== undefined ? ` ${r.result.durationMs}ms` : "";
const err = r.result.errorMessage ? `${r.result.errorMessage}` : ""; const err = r.result.errorMessage ? `${r.result.errorMessage}` : "";
console.log(` ${r.timestamp} ${r.tool} [${r.category}] → ${r.target ?? "?"} [${r.result.status}]${dur}${err}`); logger.info(` ${r.timestamp} ${r.tool} [${r.category}] → ${r.target ?? "?"} [${r.result.status}]${dur}${err}`);
} }
} }
} }
if (!hasResults) { if (!hasResults) {
console.log("No matching audit records found."); logger.info("No matching audit records found.");
} }
}); });
@ -402,15 +401,15 @@ const plugin = {
} }
if (allRecords.length === 0) { if (allRecords.length === 0) {
console.log("No audit records to report on."); logger.info("No audit records to report on.");
return; return;
} }
const reporter = new AuditReporter(allRecords); const reporter = new AuditReporter(allRecords);
if (opts.json) { if (opts.json) {
console.log(JSON.stringify(reporter.generate(), null, 2)); logger.info(JSON.stringify(reporter.generate(), null, 2));
} else { } else {
console.log(reporter.formatText()); logger.info(reporter.formatText());
} }
}); });
}, },
@ -418,22 +417,21 @@ const plugin = {
); );
// --- Policy Admin CLI --- // --- Policy Admin CLI ---
/* eslint-disable no-console */
api.registerCli( api.registerCli(
({ program }) => { ({ program, logger }) => {
const policy = program.command("policy").description("Web4 policy engine administration"); const policy = program.command("policy").description("Web4 policy engine administration");
policy policy
.command("status") .command("status")
.description("Show policy engine status") .description("Show policy engine status")
.action(() => { .action(() => {
console.log(`Policy engine:`); logger.info(`Policy engine:`);
console.log(` Rules: ${policyEngine.ruleCount}`); logger.info(` Rules: ${policyEngine.ruleCount}`);
console.log(` Default: ${policyEngine.defaultDecision}`); logger.info(` Default: ${policyEngine.defaultDecision}`);
console.log(` Enforce: ${policyEngine.isEnforcing}`); logger.info(` Enforce: ${policyEngine.isEnforcing}`);
if (config.policy?.preset) { if (config.policy?.preset) {
console.log(` Preset: ${config.policy.preset}`); logger.info(` Preset: ${config.policy.preset}`);
} }
}); });
@ -443,10 +441,10 @@ const plugin = {
.action(() => { .action(() => {
const rules = policyEngine.sortedRules; const rules = policyEngine.sortedRules;
if (rules.length === 0) { if (rules.length === 0) {
console.log("No policy rules configured."); logger.info("No policy rules configured.");
return; return;
} }
console.log(`${rules.length} rules (priority order):\n`); logger.info(`${rules.length} rules (priority order):\n`);
for (const rule of rules) { for (const rule of rules) {
const match = rule.match; const match = rule.match;
const criteria: string[] = []; const criteria: string[] = [];
@ -459,13 +457,13 @@ const plugin = {
if (match.rateLimit) { if (match.rateLimit) {
criteria.push(`rateLimit(max=${match.rateLimit.maxCount}, window=${match.rateLimit.windowMs}ms)`); criteria.push(`rateLimit(max=${match.rateLimit.maxCount}, window=${match.rateLimit.windowMs}ms)`);
} }
console.log(` [${rule.priority}] ${rule.id}${rule.decision}`); logger.info(` [${rule.priority}] ${rule.id}${rule.decision}`);
console.log(` ${rule.name}`); logger.info(` ${rule.name}`);
if (criteria.length > 0) console.log(` match: ${criteria.join(" AND ")}`); if (criteria.length > 0) logger.info(` match: ${criteria.join(" AND ")}`);
if (rule.reason) console.log(` reason: ${rule.reason}`); if (rule.reason) logger.info(` reason: ${rule.reason}`);
console.log(); logger.info();
} }
console.log(`Default: ${policyEngine.defaultDecision} | Enforce: ${policyEngine.isEnforcing}`); logger.info(`Default: ${policyEngine.defaultDecision} | Enforce: ${policyEngine.isEnforcing}`);
}); });
policy policy
@ -476,16 +474,16 @@ const plugin = {
.action((toolName: string, target?: string) => { .action((toolName: string, target?: string) => {
const category = classifyTool(toolName); const category = classifyTool(toolName);
const evaluation = policyEngine.evaluate(toolName, category, target); const evaluation = policyEngine.evaluate(toolName, category, target);
console.log(`Tool: ${toolName}`); logger.info(`Tool: ${toolName}`);
console.log(`Category: ${category}`); logger.info(`Category: ${category}`);
console.log(`Target: ${target ?? "(none)"}`); logger.info(`Target: ${target ?? "(none)"}`);
console.log(`Decision: ${evaluation.decision}`); logger.info(`Decision: ${evaluation.decision}`);
console.log(`Enforced: ${evaluation.enforced}`); logger.info(`Enforced: ${evaluation.enforced}`);
console.log(`Reason: ${evaluation.reason}`); logger.info(`Reason: ${evaluation.reason}`);
if (evaluation.matchedRule) { if (evaluation.matchedRule) {
console.log(`Rule: ${evaluation.matchedRule.id} (priority ${evaluation.matchedRule.priority})`); logger.info(`Rule: ${evaluation.matchedRule.id} (priority ${evaluation.matchedRule.priority})`);
} }
console.log(`Constraints: ${evaluation.constraints.join(", ")}`); logger.info(`Constraints: ${evaluation.constraints.join(", ")}`);
}); });
// --- Policy Presets CLI --- // --- Policy Presets CLI ---
@ -494,15 +492,15 @@ const plugin = {
.description("List available policy presets") .description("List available policy presets")
.action(() => { .action(() => {
const presets = listPresets(); const presets = listPresets();
console.log(`${presets.length} available presets:\n`); logger.info(`${presets.length} available presets:\n`);
for (const p of presets) { for (const p of presets) {
const ruleCount = p.config.rules.length; const ruleCount = p.config.rules.length;
console.log(` ${p.name}`); logger.info(` ${p.name}`);
console.log(` ${p.description}`); logger.info(` ${p.description}`);
console.log(` default: ${p.config.defaultPolicy} | enforce: ${p.config.enforce} | rules: ${ruleCount}`); logger.info(` default: ${p.config.defaultPolicy} | enforce: ${p.config.enforce} | rules: ${ruleCount}`);
console.log(); logger.info();
} }
console.log(`Usage: { "policy": { "preset": "<name>" } }`); logger.info(`Usage: { "policy": { "preset": "<name>" } }`);
}); });
// --- Policy Entity CLI --- // --- Policy Entity CLI ---
@ -512,19 +510,19 @@ const plugin = {
.action(() => { .action(() => {
const entities = policyRegistry.listPolicies(); const entities = policyRegistry.listPolicies();
if (entities.length === 0) { if (entities.length === 0) {
console.log("No policy entities registered."); logger.info("No policy entities registered.");
return; return;
} }
console.log(`${entities.length} policy entities:\n`); logger.info(`${entities.length} policy entities:\n`);
for (const e of entities) { for (const e of entities) {
console.log(` ${e.entityId}`); logger.info(` ${e.entityId}`);
console.log(` name: ${e.name} | source: ${e.source}`); logger.info(` name: ${e.name} | source: ${e.source}`);
console.log(` hash: ${e.contentHash}`); logger.info(` hash: ${e.contentHash}`);
console.log(` created: ${e.createdAt}`); logger.info(` created: ${e.createdAt}`);
const witnessedBy = policyRegistry.getWitnessedBy(e.entityId); const witnessedBy = policyRegistry.getWitnessedBy(e.entityId);
const hasWitnessed = policyRegistry.getHasWitnessed(e.entityId); const hasWitnessed = policyRegistry.getHasWitnessed(e.entityId);
console.log(` witnessed by: ${witnessedBy.length} | has witnessed: ${hasWitnessed.length}`); logger.info(` witnessed by: ${witnessedBy.length} | has witnessed: ${hasWitnessed.length}`);
console.log(); logger.info();
} }
}); });
}, },