- Move src/ → plugin/ with subdirectories: - plugin/core/ (business logic, models, store, permissions, utils, memory) - plugin/tools/ (query, resources) - plugin/commands/ (placeholder for slash commands) - plugin/hooks/ (placeholder for lifecycle hooks) - plugin/index.ts (wiring layer only, no business logic) - Add install.mjs with --install, --uninstall, --openclaw-profile-path - Add skills/ and docs/ root directories - Move planning docs (PLAN.md, FEAT.md, AGENT_TASKS.md) to docs/ - Remove old scripts/install.sh - Update tsconfig rootDir: src → plugin - Update README.md and README.zh.md with new layout - Bump version to 0.2.0 - All tests pass
20 lines
522 B
TypeScript
20 lines
522 B
TypeScript
import type { AuditLogEntry } from '../models/audit';
|
|
|
|
const MAX_AUDIT = 1000;
|
|
|
|
export class AuditStore {
|
|
private logs: AuditLogEntry[] = [];
|
|
|
|
append(entry: AuditLogEntry): AuditLogEntry {
|
|
this.logs.push(entry);
|
|
if (this.logs.length > MAX_AUDIT) this.logs.shift();
|
|
return entry;
|
|
}
|
|
|
|
list(limit = 100, offset = 0): AuditLogEntry[] {
|
|
const safeLimit = Math.min(Math.max(1, limit), 500);
|
|
const safeOffset = Math.max(0, offset);
|
|
return this.logs.slice(safeOffset, safeOffset + safeLimit);
|
|
}
|
|
}
|