hippo-memory 1.12.8 → 1.12.10
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/dist/api.d.ts.map +1 -1
- package/dist/api.js +11 -1
- package/dist/api.js.map +1 -1
- package/dist/audit-prune.d.ts +64 -0
- package/dist/audit-prune.d.ts.map +1 -0
- package/dist/audit-prune.js +100 -0
- package/dist/audit-prune.js.map +1 -0
- package/dist/audit.d.ts +1 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +67 -6
- package/dist/cli.js.map +1 -1
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/dashboard.js +3 -1
- package/dist/dashboard.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +4 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +12 -1
- package/dist/server.js.map +1 -1
- package/dist/shared.d.ts +8 -1
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +14 -5
- package/dist/shared.js.map +1 -1
- package/dist/sleep-redact.d.ts +51 -0
- package/dist/sleep-redact.d.ts.map +1 -0
- package/dist/sleep-redact.js +68 -0
- package/dist/sleep-redact.js.map +1 -0
- package/dist/src/api.js +11 -1
- package/dist/src/api.js.map +1 -1
- package/dist/src/audit-prune.js +100 -0
- package/dist/src/audit-prune.js.map +1 -0
- package/dist/src/audit.js.map +1 -1
- package/dist/src/cli.js +67 -6
- package/dist/src/cli.js.map +1 -1
- package/dist/src/dashboard.js +3 -1
- package/dist/src/dashboard.js.map +1 -1
- package/dist/src/mcp/server.js +4 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/server.js +12 -1
- package/dist/src/server.js.map +1 -1
- package/dist/src/shared.js +14 -5
- package/dist/src/shared.js.map +1 -1
- package/dist/src/sleep-redact.js +68 -0
- package/dist/src/sleep-redact.js.map +1 -0
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -68,6 +68,7 @@ import { getReranker } from './rerankers/index.js';
|
|
|
68
68
|
import { computeSalience } from './salience.js';
|
|
69
69
|
import { computeAmbientState, renderAmbientSummary } from './ambient.js';
|
|
70
70
|
import { validateOwner, isStrictOwnerEnv } from './owner-validation.js';
|
|
71
|
+
import { pruneAuditLog, parseOlderThanFlag } from './audit-prune.js';
|
|
71
72
|
import { listDlq, replayDlqEntry } from './connectors/slack/dlq.js';
|
|
72
73
|
import { backfillChannel } from './connectors/slack/backfill.js';
|
|
73
74
|
import { slackHistoryFetcher } from './connectors/slack/web-client.js';
|
|
@@ -4196,6 +4197,7 @@ const VALID_AUDIT_OPS = new Set([
|
|
|
4196
4197
|
'auth_create', // v1.12.4: emitted by api.authCreate
|
|
4197
4198
|
'outcome', // v1.11.5: pre-existing drift — emitted today but rejected by old Set
|
|
4198
4199
|
'consolidate', // v1.11.5: emitted by api.sleep / hippo sleep
|
|
4200
|
+
'audit_prune', // v1.12.9: emitted by pruneAuditLog
|
|
4199
4201
|
]);
|
|
4200
4202
|
function formatAuditRow(ev) {
|
|
4201
4203
|
const target = ev.targetId ?? '-';
|
|
@@ -4249,13 +4251,65 @@ function cmdAuditList(hippoRoot, flags) {
|
|
|
4249
4251
|
console.log(formatAuditRow(ev));
|
|
4250
4252
|
}
|
|
4251
4253
|
}
|
|
4254
|
+
function printAuditPruneUsage() {
|
|
4255
|
+
console.log('hippo audit prune --older-than <Nd> [--dry-run] [--tenant <t>]');
|
|
4256
|
+
console.log(' --older-than <Nd> Delete audit_log rows with ts older than N days (e.g. 90d).');
|
|
4257
|
+
console.log(' --dry-run Count matching rows without deleting (operator safety).');
|
|
4258
|
+
console.log(' --tenant <t> Tenant scope. Defaults to HIPPO_TENANT or "default".');
|
|
4259
|
+
console.log(' --json Output the result as JSON {cutoff, count, dryRun}.');
|
|
4260
|
+
}
|
|
4261
|
+
function cmdAuditPrune(hippoRoot, flags) {
|
|
4262
|
+
if (flags['help']) {
|
|
4263
|
+
printAuditPruneUsage();
|
|
4264
|
+
return;
|
|
4265
|
+
}
|
|
4266
|
+
const olderThanRaw = typeof flags['older-than'] === 'string' ? flags['older-than'] : '';
|
|
4267
|
+
if (!olderThanRaw) {
|
|
4268
|
+
console.error('Usage: hippo audit prune --older-than <Nd> [--dry-run] [--tenant <t>]');
|
|
4269
|
+
process.exit(1);
|
|
4270
|
+
}
|
|
4271
|
+
let olderThanDays;
|
|
4272
|
+
try {
|
|
4273
|
+
olderThanDays = parseOlderThanFlag(olderThanRaw);
|
|
4274
|
+
}
|
|
4275
|
+
catch (e) {
|
|
4276
|
+
console.error(e.message);
|
|
4277
|
+
process.exit(1);
|
|
4278
|
+
}
|
|
4279
|
+
const tenantId = typeof flags['tenant'] === 'string'
|
|
4280
|
+
? flags['tenant'].trim() || resolveTenantId({})
|
|
4281
|
+
: resolveTenantId({});
|
|
4282
|
+
const dryRun = flags['dry-run'] === true;
|
|
4283
|
+
const asJson = Boolean(flags['json']);
|
|
4284
|
+
const db = openHippoDb(hippoRoot);
|
|
4285
|
+
let result;
|
|
4286
|
+
try {
|
|
4287
|
+
result = pruneAuditLog(db, { olderThanDays, tenantId, dryRun, actor: 'cli' });
|
|
4288
|
+
}
|
|
4289
|
+
finally {
|
|
4290
|
+
closeHippoDb(db);
|
|
4291
|
+
}
|
|
4292
|
+
if (asJson) {
|
|
4293
|
+
console.log(JSON.stringify(result));
|
|
4294
|
+
return;
|
|
4295
|
+
}
|
|
4296
|
+
const verb = dryRun ? 'would delete' : 'deleted';
|
|
4297
|
+
console.log(`audit prune: ${verb} ${result.count} row${result.count === 1 ? '' : 's'} for tenant "${tenantId}" with ts < ${result.cutoff}`);
|
|
4298
|
+
if (dryRun) {
|
|
4299
|
+
console.log('(dry-run; re-run without --dry-run to actually delete)');
|
|
4300
|
+
}
|
|
4301
|
+
}
|
|
4252
4302
|
function cmdAuditLog(hippoRoot, args, flags) {
|
|
4253
4303
|
const sub = args[0];
|
|
4254
4304
|
if (sub === 'list') {
|
|
4255
4305
|
cmdAuditList(hippoRoot, flags);
|
|
4256
4306
|
return;
|
|
4257
4307
|
}
|
|
4258
|
-
|
|
4308
|
+
if (sub === 'prune') {
|
|
4309
|
+
cmdAuditPrune(hippoRoot, flags);
|
|
4310
|
+
return;
|
|
4311
|
+
}
|
|
4312
|
+
console.error(`Unknown audit subcommand: ${sub}. Expected: list | prune.`);
|
|
4259
4313
|
process.exit(1);
|
|
4260
4314
|
}
|
|
4261
4315
|
// ---------------------------------------------------------------------------
|
|
@@ -5209,9 +5263,10 @@ async function main() {
|
|
|
5209
5263
|
await cmdGithub(hippoRoot, args, flags);
|
|
5210
5264
|
break;
|
|
5211
5265
|
case 'audit': {
|
|
5212
|
-
// `audit list` -> A5 audit-log
|
|
5213
|
-
// the existing memory-quality auditor
|
|
5214
|
-
|
|
5266
|
+
// `audit list` and `audit prune` -> A5 audit-log subcommands.
|
|
5267
|
+
// Other forms (no sub, --fix) keep the existing memory-quality auditor
|
|
5268
|
+
// for backwards compatibility.
|
|
5269
|
+
if (args[0] === 'list' || args[0] === 'prune') {
|
|
5215
5270
|
cmdAuditLog(hippoRoot, args, flags);
|
|
5216
5271
|
break;
|
|
5217
5272
|
}
|
|
@@ -5464,12 +5519,18 @@ async function main() {
|
|
|
5464
5519
|
break;
|
|
5465
5520
|
}
|
|
5466
5521
|
case 'peers': {
|
|
5467
|
-
|
|
5522
|
+
// D4 v1.12.10: tenant-scoped by default. --all-tenants restores the
|
|
5523
|
+
// pre-D4 host-wide view for the rare operator who genuinely wants
|
|
5524
|
+
// cross-tenant peer discovery.
|
|
5525
|
+
const allTenants = flags['all-tenants'] === true;
|
|
5526
|
+
const tenantScope = allTenants ? undefined : resolveTenantId({});
|
|
5527
|
+
const peers = listPeers(undefined, tenantScope);
|
|
5468
5528
|
if (peers.length === 0) {
|
|
5469
5529
|
console.log('No peers found. Share memories with: hippo share <id>');
|
|
5470
5530
|
}
|
|
5471
5531
|
else {
|
|
5472
|
-
|
|
5532
|
+
const scopeLabel = allTenants ? 'global store (all tenants)' : `global store (tenant "${tenantScope}")`;
|
|
5533
|
+
console.log(`${peers.length} project${peers.length === 1 ? '' : 's'} contributing to ${scopeLabel}:\n`);
|
|
5473
5534
|
for (const p of peers) {
|
|
5474
5535
|
console.log(` ${p.project.padEnd(25)} ${String(p.count).padStart(4)} memories (latest: ${p.latest.slice(0, 10)})`);
|
|
5475
5536
|
}
|