hippo-memory 1.70.0 → 1.72.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/README.md +2 -2
- package/dist/agent-memories/apply.d.ts +0 -11
- package/dist/agent-memories/apply.js +6 -21
- package/dist/agent-memories/claude-code.d.ts +4 -2
- package/dist/agent-memories/claude-code.js +15 -6
- package/dist/agent-memories/codex.js +1 -1
- package/dist/agent-memories/copilot.d.ts +1 -3
- package/dist/agent-memories/copilot.js +1 -17
- package/dist/agent-memories/files.js +23 -12
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/project-folds.d.ts +10 -0
- package/dist/agent-memories/project-folds.js +34 -0
- package/dist/agent-memories/report.js +2 -1
- package/dist/agent-memories/sync.d.ts +4 -2
- package/dist/agent-memories/sync.js +18 -11
- package/dist/api/assemble.d.ts +7 -44
- package/dist/api/assemble.js +3 -23
- package/dist/api/audit.d.ts +33 -1
- package/dist/api/audit.js +48 -1
- package/dist/api/auth.d.ts +20 -26
- package/dist/api/auth.js +43 -29
- package/dist/api/auto-sleep.d.ts +5 -2
- package/dist/api/auto-sleep.js +9 -5
- package/dist/api/availability.d.ts +2 -15
- package/dist/api/availability.js +4 -18
- package/dist/api/cards.d.ts +42 -0
- package/dist/api/cards.js +52 -0
- package/dist/api/conflicts.d.ts +28 -0
- package/dist/api/conflicts.js +61 -0
- package/dist/api/context-render.js +4 -3
- package/dist/api/context-select.js +12 -15
- package/dist/api/context-types.d.ts +10 -35
- package/dist/api/context.d.ts +5 -22
- package/dist/api/context.js +38 -46
- package/dist/api/continuity.d.ts +47 -0
- package/dist/api/continuity.js +66 -0
- package/dist/{cli → api}/correction-latency.d.ts +2 -14
- package/dist/{cli → api}/correction-latency.js +2 -14
- package/dist/api/dormant.d.ts +5 -21
- package/dist/api/dormant.js +11 -28
- package/dist/api/drill-down.d.ts +7 -46
- package/dist/api/drill-down.js +6 -27
- package/dist/api/embeddings.d.ts +17 -0
- package/dist/api/embeddings.js +28 -0
- package/dist/api/error-reply.d.ts +8 -0
- package/dist/api/error-reply.js +21 -0
- package/dist/api/forget.d.ts +11 -26
- package/dist/api/forget.js +23 -35
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +5 -9
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +6 -2
- package/dist/api/index.js +6 -2
- package/dist/api/instruction-detect.js +21 -6
- package/dist/api/learn.d.ts +4 -0
- package/dist/api/learn.js +53 -27
- package/dist/api/ledger-db.d.ts +2 -5
- package/dist/api/ledger-db.js +5 -35
- package/dist/api/memories.d.ts +23 -0
- package/dist/api/memories.js +46 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.js +5 -3
- package/dist/api/outcome.js +1 -1
- package/dist/api/pilot-arm.d.ts +1 -11
- package/dist/api/pilot-arm.js +5 -45
- package/dist/api/predictions.d.ts +11 -0
- package/dist/api/predictions.js +24 -0
- package/dist/api/projects.d.ts +21 -0
- package/dist/api/projects.js +24 -0
- package/dist/api/promote.d.ts +13 -17
- package/dist/api/promote.js +12 -20
- package/dist/api/prompt-hook.d.ts +19 -6
- package/dist/api/prompt-hook.js +54 -13
- package/dist/api/provenance-coverage.d.ts +14 -0
- package/dist/{cli → api}/provenance-coverage.js +2 -6
- package/dist/api/recall-cli.d.ts +58 -0
- package/dist/api/recall-cli.js +103 -0
- package/dist/api/recall-core.js +17 -9
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +17 -84
- package/dist/api/recall-history.js +15 -88
- package/dist/api/recall-pipeline.d.ts +2 -3
- package/dist/api/recall-pipeline.js +21 -15
- package/dist/api/recall-request.js +1 -1
- package/dist/api/recall-types.d.ts +64 -304
- package/dist/api/recall.d.ts +3 -34
- package/dist/api/recall.js +63 -89
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +20 -2
- package/dist/api/remember.js +16 -3
- package/dist/api/session-end.d.ts +22 -0
- package/dist/api/session-end.js +101 -0
- package/dist/api/sleep-run.d.ts +2 -4
- package/dist/api/sleep-run.js +28 -28
- package/dist/api/sleep.d.ts +9 -28
- package/dist/api/status.d.ts +24 -0
- package/dist/api/status.js +40 -0
- package/dist/api/store-init.d.ts +4 -0
- package/dist/api/store-init.js +9 -0
- package/dist/api/tokens.d.ts +3 -10
- package/dist/api/tokens.js +4 -11
- package/dist/api/types.d.ts +8 -29
- package/dist/api/types.js +10 -23
- package/dist/capture/caller-session.d.ts +0 -3
- package/dist/capture/caller-session.js +1 -12
- package/dist/capture/capture-error.d.ts +2 -2
- package/dist/capture/capture-error.js +23 -18
- package/dist/capture/codex-patch.js +3 -1
- package/dist/capture/command.d.ts +4 -12
- package/dist/capture/command.js +39 -114
- package/dist/capture/compact.d.ts +4 -15
- package/dist/capture/compact.js +26 -30
- package/dist/capture/compaction-items-caller.js +11 -20
- package/dist/capture/compaction-record.d.ts +7 -93
- package/dist/capture/compaction-record.js +34 -399
- package/dist/capture/compaction-spool.d.ts +5 -3
- package/dist/capture/compaction-spool.js +21 -7
- package/dist/capture/copilot-transcript.d.ts +2 -1
- package/dist/capture/copilot-transcript.js +2 -1
- package/dist/capture/extract.d.ts +5 -2
- package/dist/capture/extract.js +4 -3
- package/dist/capture/failure-caller.d.ts +1 -1
- package/dist/capture/failure-caller.js +21 -16
- package/dist/capture/failure-reading.d.ts +2 -1
- package/dist/capture/failure-reading.js +7 -9
- package/dist/capture/pre-compact-caller.js +5 -4
- package/dist/capture/session-digest.d.ts +1 -1
- package/dist/capture/session-digest.js +17 -10
- package/dist/capture/session-end-caller.js +2 -1
- package/dist/capture/session-worker.js +3 -4
- package/dist/capture/transcript.d.ts +4 -11
- package/dist/capture/transcript.js +10 -21
- package/dist/capture/working-state.d.ts +4 -2
- package/dist/capture/working-state.js +4 -2
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +1 -59
- package/dist/cli/audit-prune.js +2 -61
- package/dist/cli/audit.d.ts +1 -1
- package/dist/cli/audit.js +42 -43
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +61 -44
- package/dist/cli/briefs.d.ts +1 -4
- package/dist/cli/briefs.js +42 -301
- package/dist/cli/card.d.ts +2 -2
- package/dist/cli/card.js +63 -56
- package/dist/cli/client.d.ts +12 -27
- package/dist/cli/client.js +41 -44
- package/dist/cli/compact-resume-payload.js +4 -3
- package/dist/cli/context.d.ts +2 -3
- package/dist/cli/context.js +22 -18
- package/dist/cli/continuity.d.ts +6 -6
- package/dist/cli/continuity.js +81 -86
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +88 -116
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +55 -34
- package/dist/cli/decisions.d.ts +2 -4
- package/dist/cli/decisions.js +18 -309
- package/dist/cli/eval.d.ts +1 -1
- package/dist/cli/eval.js +27 -26
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +2 -3
- package/dist/cli/explain.js +25 -27
- package/dist/cli/flag-values.d.ts +6 -1
- package/dist/cli/flag-values.js +42 -15
- package/dist/cli/flags.d.ts +0 -288
- package/dist/cli/flags.js +3 -138
- package/dist/cli/github.d.ts +14 -0
- package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
- package/dist/cli/goals.d.ts +2 -2
- package/dist/cli/goals.js +46 -50
- package/dist/cli/graph.d.ts +3 -0
- package/dist/cli/graph.js +83 -0
- package/dist/cli/hook-runtime.d.ts +12 -32
- package/dist/cli/hook-runtime.js +21 -64
- package/dist/cli/incidents.d.ts +3 -0
- package/dist/cli/incidents.js +112 -0
- package/dist/cli/init.d.ts +2 -2
- package/dist/cli/init.js +33 -30
- package/dist/cli/install-steps.d.ts +2 -1
- package/dist/cli/install-steps.js +13 -14
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +4 -1
- package/dist/cli/lenient-id.d.ts +2 -0
- package/dist/cli/lenient-id.js +13 -0
- package/dist/cli/maintenance.d.ts +5 -5
- package/dist/cli/maintenance.js +37 -43
- package/dist/cli/notes.d.ts +2 -0
- package/dist/cli/notes.js +41 -0
- package/dist/cli/object-verbs.js +4 -3
- package/dist/cli/open-browser.d.ts +14 -0
- package/dist/cli/open-browser.js +26 -0
- package/dist/cli/owner-validation.d.ts +5 -28
- package/dist/cli/owner-validation.js +5 -28
- package/dist/cli/playbooks.d.ts +3 -4
- package/dist/cli/playbooks.js +131 -300
- package/dist/cli/predictions.d.ts +3 -0
- package/dist/cli/predictions.js +175 -0
- package/dist/cli/print.d.ts +2 -5
- package/dist/cli/print.js +3 -5
- package/dist/cli/projects.d.ts +2 -2
- package/dist/cli/projects.js +31 -25
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +67 -137
- package/dist/cli/refine-llm.d.ts +5 -31
- package/dist/cli/refine-llm.js +23 -50
- package/dist/cli/remember.d.ts +3 -3
- package/dist/cli/remember.js +134 -192
- package/dist/cli/scheduler.d.ts +2 -17
- package/dist/cli/scheduler.js +14 -19
- package/dist/cli/serve.js +23 -14
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +143 -214
- package/dist/cli/setup.d.ts +4 -4
- package/dist/cli/setup.js +35 -30
- package/dist/cli/shared.d.ts +7 -25
- package/dist/cli/shared.js +17 -60
- package/dist/cli/slack.d.ts +2 -2
- package/dist/cli/slack.js +19 -23
- package/dist/cli/sleep-render.js +6 -3
- package/dist/cli/sleep.d.ts +3 -2
- package/dist/cli/sleep.js +17 -49
- package/dist/cli/status.d.ts +11 -14
- package/dist/cli/status.js +74 -120
- package/dist/cli/stdin.d.ts +4 -6
- package/dist/cli/stdin.js +2 -3
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +87 -108
- package/dist/cli/usage.d.ts +0 -79
- package/dist/cli/usage.js +1 -689
- package/dist/cli/verb-row.d.ts +32 -0
- package/dist/cli/verb-row.js +6 -0
- package/dist/cli/verbs/health.d.ts +27 -0
- package/dist/cli/verbs/health.js +232 -0
- package/dist/cli/verbs/memory.d.ts +16 -0
- package/dist/cli/verbs/memory.js +244 -0
- package/dist/cli/verbs/objects.d.ts +20 -0
- package/dist/cli/verbs/objects.js +254 -0
- package/dist/cli/verbs/sessions.d.ts +31 -0
- package/dist/cli/verbs/sessions.js +312 -0
- package/dist/cli/verbs.d.ts +81 -0
- package/dist/cli/verbs.js +7 -0
- package/dist/cli/versioned-verbs.d.ts +51 -0
- package/dist/cli/versioned-verbs.js +79 -0
- package/dist/cli.d.ts +1 -654
- package/dist/cli.js +44 -510
- package/dist/connectors/dlq.d.ts +39 -3
- package/dist/connectors/dlq.js +37 -3
- package/dist/connectors/github/backfill.d.ts +5 -25
- package/dist/connectors/github/backfill.js +26 -52
- package/dist/connectors/github/deletion.d.ts +4 -18
- package/dist/connectors/github/deletion.js +2 -15
- package/dist/connectors/github/dlq.d.ts +8 -33
- package/dist/connectors/github/dlq.js +34 -93
- package/dist/connectors/github/ingest.d.ts +4 -12
- package/dist/connectors/github/ingest.js +5 -36
- package/dist/connectors/github/octokit-client.d.ts +4 -16
- package/dist/connectors/github/octokit-client.js +27 -24
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +2 -24
- package/dist/connectors/github/tenant-routing.js +4 -26
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +3 -15
- package/dist/connectors/github/types.js +2 -9
- package/dist/connectors/github/webhook.d.ts +3 -16
- package/dist/connectors/github/webhook.js +38 -23
- package/dist/connectors/ingest.d.ts +10 -0
- package/dist/connectors/ingest.js +28 -0
- package/dist/connectors/slack/backfill.d.ts +4 -17
- package/dist/connectors/slack/backfill.js +4 -13
- package/dist/connectors/slack/dlq.d.ts +2 -19
- package/dist/connectors/slack/dlq.js +51 -90
- package/dist/connectors/slack/ingest.d.ts +4 -9
- package/dist/connectors/slack/ingest.js +4 -30
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/tenant-routing.d.ts +2 -19
- package/dist/connectors/slack/tenant-routing.js +2 -21
- package/dist/connectors/slack/transform.d.ts +2 -18
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +3 -9
- package/dist/connectors/slack/types.js +2 -4
- package/dist/connectors/slack/web-client.js +33 -27
- package/dist/connectors/slack/webhook.d.ts +3 -19
- package/dist/connectors/slack/webhook.js +6 -26
- package/dist/connectors/slack/workspaces.d.ts +4 -24
- package/dist/connectors/slack/workspaces.js +4 -24
- package/dist/consolidate/conflicts.js +7 -15
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/consolidate/dag.d.ts +5 -28
- package/dist/consolidate/dag.js +29 -84
- package/dist/consolidate/decay.js +7 -19
- package/dist/consolidate/dedupe.d.ts +13 -52
- package/dist/consolidate/dedupe.js +18 -74
- package/dist/consolidate/flush-units.d.ts +3 -4
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +3 -26
- package/dist/consolidate/half-life-migration.js +11 -28
- package/dist/consolidate/llm-passes.js +49 -40
- package/dist/consolidate/memory-value-weights.d.ts +2 -13
- package/dist/consolidate/memory-value-weights.js +2 -13
- package/dist/consolidate/memory-value.d.ts +11 -84
- package/dist/consolidate/memory-value.js +18 -105
- package/dist/consolidate/merge.js +12 -33
- package/dist/consolidate/physics-pass.d.ts +6 -1
- package/dist/consolidate/physics-pass.js +27 -9
- package/dist/consolidate/replay.d.ts +6 -38
- package/dist/consolidate/replay.js +25 -56
- package/dist/consolidate/run.js +1 -1
- package/dist/consolidate/sleep.d.ts +1 -8
- package/dist/consolidate/sleep.js +13 -22
- package/dist/consolidate/trace.d.ts +3 -18
- package/dist/consolidate/trace.js +3 -18
- package/dist/consolidate/traces.js +9 -25
- package/dist/core/ablation.d.ts +14 -91
- package/dist/core/ablation.js +16 -91
- package/dist/core/active-scope.d.ts +7 -0
- package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
- package/dist/core/ambient.d.ts +5 -8
- package/dist/core/ambient.js +40 -26
- package/dist/core/api-errors.d.ts +16 -0
- package/dist/core/api-errors.js +20 -0
- package/dist/core/capture-contract.d.ts +4 -2
- package/dist/core/capture-contract.js +4 -2
- package/dist/core/card.d.ts +4 -1
- package/dist/core/card.js +11 -1
- package/dist/core/compaction-timing.d.ts +7 -0
- package/dist/core/compaction-timing.js +9 -0
- package/dist/core/compare.d.ts +11 -67
- package/dist/core/compare.js +9 -63
- package/dist/core/config.d.ts +10 -24
- package/dist/core/config.js +20 -16
- package/dist/core/cosine.d.ts +3 -0
- package/dist/core/cosine.js +19 -0
- package/dist/core/handoff.d.ts +1 -7
- package/dist/core/handoff.js +1 -7
- package/dist/core/markdown.d.ts +6 -0
- package/dist/{store → core}/markdown.js +23 -22
- package/dist/core/memory-audit.d.ts +17 -0
- package/dist/core/memory-audit.js +54 -0
- package/dist/core/memory-quality.js +1 -1
- package/dist/core/memory.d.ts +51 -168
- package/dist/core/memory.js +76 -239
- package/dist/{consolidate → core}/merged-row.d.ts +1 -1
- package/dist/{consolidate → core}/merged-row.js +3 -2
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/core/physics-config.d.ts +1 -4
- package/dist/core/physics-config.js +3 -8
- package/dist/core/physics.d.ts +15 -61
- package/dist/core/physics.js +65 -138
- package/dist/core/prediction.d.ts +3 -0
- package/dist/core/prediction.js +6 -0
- package/dist/core/project-identity.d.ts +20 -58
- package/dist/core/project-identity.js +27 -39
- package/dist/core/project-remote.js +13 -2
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/core/recall-scope.d.ts +69 -0
- package/dist/core/recall-scope.js +138 -0
- package/dist/core/salience.d.ts +1 -7
- package/dist/core/salience.js +1 -7
- package/dist/dashboard/dashboard-actions.js +2 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
- package/dist/dashboard/dashboard-snapshot.js +11 -2
- package/dist/dashboard/dashboard-types.d.ts +2 -1
- package/dist/dashboard/dashboard.d.ts +1 -0
- package/dist/dashboard/dashboard.js +50 -4
- package/dist/db/busy.d.ts +3 -8
- package/dist/db/busy.js +37 -33
- package/dist/db/connect.js +7 -8
- package/dist/db/index.d.ts +3 -3
- package/dist/db/index.js +3 -3
- package/dist/db/migrate.js +3 -3
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v14.js +2 -3
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +2 -3
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +2 -7
- package/dist/db/migrations/v22.js +4 -17
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +2 -4
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +4 -18
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +2 -15
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +9 -20
- package/dist/db/migrations/v40.js +2 -9
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +1 -1
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v55.d.ts +3 -0
- package/dist/db/migrations/v55.js +17 -0
- package/dist/db/open.d.ts +2 -2
- package/dist/db/open.js +21 -9
- package/dist/db/physics-state.d.ts +6 -22
- package/dist/db/physics-state.js +28 -39
- package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
- package/dist/db/raw-archive-mirror-cleanup.js +2 -17
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -2
- package/dist/db/vector-store.d.ts +2 -0
- package/dist/db/vector-store.js +25 -5
- package/dist/db/wal-checkpointer.js +2 -1
- package/dist/doctor.js +85 -27
- package/dist/embeddings/local.d.ts +62 -0
- package/dist/embeddings/local.js +146 -0
- package/dist/embeddings/provider.d.ts +43 -0
- package/dist/{store/embeddings → embeddings}/provider.js +58 -83
- package/dist/embeddings/transformers.d.ts +26 -0
- package/dist/embeddings/transformers.js +89 -0
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +3 -2
- package/dist/eval/eval-stats.d.ts +15 -53
- package/dist/eval/eval-stats.js +12 -42
- package/dist/eval/eval-suite.d.ts +2 -13
- package/dist/eval/eval-suite.js +91 -45
- package/dist/eval/eval.d.ts +6 -24
- package/dist/eval/eval.js +8 -35
- package/dist/eval/judgment.d.ts +0 -3
- package/dist/eval/judgment.js +30 -15
- package/dist/extensions/openclaw-plugin/index.js +1 -1
- package/dist/graph/extract.d.ts +5 -27
- package/dist/graph/extract.js +10 -36
- package/dist/graph/recall.d.ts +7 -20
- package/dist/graph/recall.js +15 -77
- package/dist/graph/stream.d.ts +7 -39
- package/dist/graph/stream.js +11 -34
- package/dist/graph/view.d.ts +9 -35
- package/dist/graph/view.js +24 -44
- package/dist/graph/write.d.ts +1 -1
- package/dist/graph/write.js +9 -9
- package/dist/hooks/codex-session.js +3 -2
- package/dist/hooks/codex-wrapper.js +4 -3
- package/dist/hooks/copilot.js +2 -1
- package/dist/hooks/hook-blocks.d.ts +6 -2
- package/dist/hooks/hook-blocks.js +37 -124
- package/dist/hooks/json-hooks.d.ts +4 -36
- package/dist/hooks/json-hooks.js +22 -59
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +17 -81
- package/dist/hooks/shared.d.ts +6 -21
- package/dist/hooks/shared.js +31 -33
- package/dist/importers/core.d.ts +12 -37
- package/dist/importers/core.js +10 -28
- package/dist/importers/markdown-parse.d.ts +8 -22
- package/dist/importers/markdown-parse.js +8 -25
- package/dist/importers/markdown.js +3 -12
- package/dist/importers/sources.js +12 -39
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +31 -85
- package/dist/index.d.ts +8 -3
- package/dist/index.js +8 -3
- package/dist/learn/autolearn.d.ts +23 -42
- package/dist/learn/autolearn.js +45 -52
- package/dist/learn/churn-git.js +13 -4
- package/dist/learn/extract.d.ts +3 -2
- package/dist/learn/extract.js +8 -8
- package/dist/learn/forward-claim-detector.d.ts +6 -30
- package/dist/learn/forward-claim-detector.js +18 -68
- package/dist/learn/invalidation.d.ts +6 -18
- package/dist/learn/invalidation.js +18 -31
- package/dist/mcp/admin-tools.d.ts +2 -2
- package/dist/mcp/admin-tools.js +30 -53
- package/dist/mcp/format.js +3 -2
- package/dist/mcp/framing.d.ts +1 -0
- package/dist/mcp/framing.js +1 -1
- package/dist/mcp/memory-tools.js +7 -10
- package/dist/mcp/protocol.d.ts +15 -29
- package/dist/mcp/protocol.js +26 -16
- package/dist/mcp/recall-tools.js +14 -11
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +12 -27
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +5 -16
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +5 -11
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +68 -16
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +47 -22
- package/dist/objects/customer-notes.d.ts +9 -44
- package/dist/objects/customer-notes.js +7 -48
- package/dist/objects/decisions.d.ts +14 -52
- package/dist/objects/decisions.js +15 -53
- package/dist/objects/descriptor.d.ts +1 -1
- package/dist/objects/incidents.d.ts +9 -40
- package/dist/objects/incidents.js +7 -41
- package/dist/objects/lifecycle.d.ts +1 -1
- package/dist/objects/lifecycle.js +2 -1
- package/dist/objects/policies.d.ts +13 -91
- package/dist/objects/policies.js +13 -99
- package/dist/objects/processes.d.ts +9 -54
- package/dist/objects/processes.js +7 -61
- package/dist/objects/project-briefs.d.ts +13 -57
- package/dist/objects/project-briefs.js +16 -78
- package/dist/objects/skills.d.ts +9 -44
- package/dist/objects/skills.js +8 -54
- package/dist/postinstall.js +7 -20
- package/dist/predictions/planning-fallacy.d.ts +11 -34
- package/dist/rerankers/clef.js +6 -37
- package/dist/rerankers/cross-encoder.d.ts +31 -2
- package/dist/rerankers/cross-encoder.js +65 -101
- package/dist/rerankers/index.js +5 -4
- package/dist/rerankers/jev.js +11 -10
- package/dist/rerankers/llm.d.ts +2 -11
- package/dist/rerankers/llm.js +14 -14
- package/dist/rerankers/outage-warning.d.ts +5 -2
- package/dist/rerankers/outage-warning.js +7 -4
- package/dist/rerankers/remote.d.ts +1 -0
- package/dist/rerankers/remote.js +2 -0
- package/dist/rerankers/types.d.ts +2 -14
- package/dist/search/bm25-search.js +1 -1
- package/dist/search/boosts.d.ts +0 -2
- package/dist/search/boosts.js +3 -3
- package/dist/search/embed-memories.d.ts +9 -0
- package/dist/search/embed-memories.js +377 -0
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +93 -0
- package/dist/search/hybrid.d.ts +11 -2
- package/dist/search/hybrid.js +9 -4
- package/dist/search/multihop.js +2 -3
- package/dist/search/path-context.d.ts +5 -18
- package/dist/search/path-context.js +5 -18
- package/dist/search/physics-search.d.ts +6 -3
- package/dist/search/physics-search.js +29 -19
- package/dist/search/rerank.js +1 -1
- package/dist/search/rrf.d.ts +7 -35
- package/dist/search/rrf.js +5 -30
- package/dist/search/vector.d.ts +13 -4
- package/dist/search/vector.js +40 -13
- package/dist/server/auth.d.ts +11 -28
- package/dist/server/auth.js +49 -32
- package/dist/server/boot.d.ts +2 -21
- package/dist/server/boot.js +69 -161
- package/dist/server/client-ip.d.ts +3 -21
- package/dist/server/client-ip.js +8 -30
- package/dist/server/deadline.d.ts +0 -2
- package/dist/server/deadline.js +1 -7
- package/dist/server/defaults.d.ts +4 -0
- package/dist/server/defaults.js +5 -0
- package/dist/server/key-check-bounds.d.ts +2 -1
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +19 -4
- package/dist/server/mcp-http.js +24 -53
- package/dist/server/rate-limit.d.ts +5 -18
- package/dist/server/rate-limit.js +4 -13
- package/dist/server/request.d.ts +4 -8
- package/dist/server/request.js +16 -19
- package/dist/server/route-checks.d.ts +7 -0
- package/dist/server/route-checks.js +42 -0
- package/dist/server/route-table.d.ts +9 -8
- package/dist/server/route-table.js +127 -139
- package/dist/server/routes/admin.d.ts +8 -8
- package/dist/server/routes/admin.js +35 -49
- package/dist/server/routes/customer-notes.d.ts +6 -6
- package/dist/server/routes/customer-notes.js +8 -14
- package/dist/server/routes/decisions.d.ts +6 -6
- package/dist/server/routes/decisions.js +12 -21
- package/dist/server/routes/incidents.d.ts +6 -6
- package/dist/server/routes/incidents.js +14 -25
- package/dist/server/routes/memories.d.ts +9 -9
- package/dist/server/routes/memories.js +20 -63
- package/dist/server/routes/object-routes.d.ts +6 -11
- package/dist/server/routes/object-routes.js +11 -22
- package/dist/server/routes/policies.d.ts +7 -7
- package/dist/server/routes/policies.js +12 -22
- package/dist/server/routes/predictions.d.ts +6 -6
- package/dist/server/routes/predictions.js +22 -38
- package/dist/server/routes/processes.d.ts +6 -6
- package/dist/server/routes/processes.js +17 -28
- package/dist/server/routes/project-briefs.d.ts +7 -7
- package/dist/server/routes/project-briefs.js +11 -20
- package/dist/server/routes/recall.d.ts +5 -5
- package/dist/server/routes/recall.js +16 -45
- package/dist/server/routes/skills.d.ts +7 -7
- package/dist/server/routes/skills.js +10 -22
- package/dist/server/server-detect.d.ts +15 -53
- package/dist/server/server-detect.js +55 -96
- package/dist/server/sleep-child.js +26 -7
- package/dist/server/sleep-offload.d.ts +11 -5
- package/dist/server/sleep-offload.js +21 -12
- package/dist/server/types.d.ts +32 -18
- package/dist/server/validation.d.ts +3 -2
- package/dist/server/validation.js +15 -33
- package/dist/server.d.ts +7 -6
- package/dist/server.js +8 -6
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +73 -0
- package/dist/sharing/project-merge.d.ts +11 -19
- package/dist/sharing/project-merge.js +63 -125
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +40 -0
- package/dist/sharing/share.js +229 -0
- package/dist/store/ambient.js +9 -15
- package/dist/store/audit-event.d.ts +5 -13
- package/dist/store/audit-event.js +4 -12
- package/dist/store/audit.d.ts +2 -21
- package/dist/store/audit.js +8 -67
- package/dist/store/auth.d.ts +10 -8
- package/dist/store/auth.js +17 -12
- package/dist/store/candidates.d.ts +23 -5
- package/dist/store/candidates.js +119 -71
- package/dist/store/capture-write.d.ts +17 -0
- package/dist/store/capture-write.js +35 -0
- package/dist/store/card-detail.d.ts +2 -1
- package/dist/store/card-detail.js +2 -1
- package/dist/store/cards.d.ts +14 -9
- package/dist/store/cards.js +72 -126
- package/dist/store/compaction-caller.d.ts +18 -0
- package/dist/store/compaction-caller.js +29 -0
- package/dist/store/compactions-record.d.ts +115 -0
- package/dist/store/compactions-record.js +417 -0
- package/dist/store/compactions.js +6 -4
- package/dist/store/conflicts.d.ts +4 -21
- package/dist/store/conflicts.js +76 -152
- package/dist/store/connectors/dlq.d.ts +10 -0
- package/dist/store/connectors/dlq.js +32 -0
- package/dist/store/connectors/github.d.ts +14 -16
- package/dist/store/connectors/github.js +34 -57
- package/dist/store/connectors/slack.d.ts +2 -11
- package/dist/store/connectors/slack.js +18 -47
- package/dist/store/dashboard-reads.js +11 -14
- package/dist/store/delete-and-batch.d.ts +17 -31
- package/dist/store/delete-and-batch.js +84 -67
- package/dist/store/delivery-recorder.d.ts +15 -4
- package/dist/store/delivery-recorder.js +34 -17
- package/dist/store/descendant-page.js +6 -3
- package/dist/store/diagnostics.js +6 -13
- package/dist/store/dormant.d.ts +8 -30
- package/dist/store/dormant.js +18 -57
- package/dist/store/embeddings/index.d.ts +11 -90
- package/dist/store/embeddings/index.js +18 -523
- package/dist/store/entry-reads.d.ts +34 -61
- package/dist/store/entry-reads.js +111 -136
- package/dist/store/entry-row.d.ts +6 -35
- package/dist/store/entry-row.js +9 -37
- package/dist/store/entry-writes.d.ts +12 -18
- package/dist/store/entry-writes.js +46 -44
- package/dist/store/failure-log-at.d.ts +8 -0
- package/dist/store/failure-log-at.js +16 -0
- package/dist/store/failure-log.d.ts +2 -2
- package/dist/store/failure-log.js +5 -3
- package/dist/{trust → store}/gated-write.d.ts +3 -1
- package/dist/{trust → store}/gated-write.js +7 -5
- package/dist/store/goals.d.ts +3 -40
- package/dist/store/goals.js +41 -178
- package/dist/store/graph-queue.d.ts +6 -22
- package/dist/store/graph-queue.js +14 -45
- package/dist/store/graph-reads.d.ts +11 -35
- package/dist/store/graph-reads.js +24 -60
- package/dist/store/graph-rows.d.ts +3 -6
- package/dist/store/graph-rows.js +6 -9
- package/dist/store/graph-view-rows.d.ts +2 -1
- package/dist/store/graph-view-rows.js +2 -1
- package/dist/store/graph-writes.d.ts +10 -35
- package/dist/store/graph-writes.js +59 -106
- package/dist/store/half-life.d.ts +2 -1
- package/dist/store/half-life.js +14 -16
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +22 -40
- package/dist/store/index-and-stats.d.ts +6 -19
- package/dist/store/index-and-stats.js +36 -84
- package/dist/store/key-writes.js +1 -1
- package/dist/store/ledger-turn.d.ts +9 -0
- package/dist/store/ledger-turn.js +38 -0
- package/dist/store/mirrors.d.ts +2 -6
- package/dist/store/mirrors.js +24 -29
- package/dist/store/open.d.ts +0 -4
- package/dist/store/open.js +42 -62
- package/dist/store/pilot-arm.d.ts +12 -0
- package/dist/store/pilot-arm.js +42 -0
- package/dist/store/planning-fallacy-evidence.d.ts +2 -30
- package/dist/store/planning-fallacy-evidence.js +8 -37
- package/dist/store/port.d.ts +91 -82
- package/dist/store/port.js +8 -0
- package/dist/store/predictions.d.ts +12 -53
- package/dist/store/predictions.js +41 -125
- package/dist/store/project-tags.d.ts +62 -0
- package/dist/store/project-tags.js +67 -0
- package/dist/{cli → store}/quality-repair.js +15 -31
- package/dist/store/quarantine.js +2 -1
- package/dist/store/raw-archive.d.ts +4 -16
- package/dist/store/raw-archive.js +14 -29
- package/dist/store/recall-trace.d.ts +12 -77
- package/dist/store/recall-trace.js +37 -97
- package/dist/store/rejected-values.js +9 -20
- package/dist/store/rejection-probe.d.ts +4 -0
- package/dist/store/rejection-probe.js +19 -0
- package/dist/store/rejection.d.ts +10 -73
- package/dist/store/rejection.js +12 -84
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +9 -19
- package/dist/store/rows.js +36 -34
- package/dist/store/rule-sql.d.ts +14 -0
- package/dist/store/rule-sql.js +56 -0
- package/dist/store/search-rows.d.ts +7 -38
- package/dist/store/search-rows.js +23 -54
- package/dist/store/sessions.d.ts +10 -47
- package/dist/store/sessions.js +21 -75
- package/dist/store/set-aside.d.ts +14 -0
- package/dist/store/set-aside.js +23 -0
- package/dist/store/sqlite/busy.d.ts +3 -0
- package/dist/store/sqlite/busy.js +8 -0
- package/dist/store/sqlite/connector-events-group.js +5 -8
- package/dist/store/sqlite/connector-writes-group.js +3 -3
- package/dist/store/sqlite/entry-writes-group.js +4 -4
- package/dist/store/sqlite/error-codec.js +8 -5
- package/dist/store/sqlite/executor.d.ts +2 -1
- package/dist/store/sqlite/executor.js +12 -5
- package/dist/store/sqlite/graph-reads-group.js +1 -1
- package/dist/store/sqlite/held-connection.d.ts +9 -0
- package/dist/store/sqlite/held-connection.js +41 -0
- package/dist/store/sqlite/local.d.ts +3 -3
- package/dist/store/sqlite/local.js +1 -0
- package/dist/store/sqlite/object-rows.d.ts +1 -1
- package/dist/store/sqlite/object-rows.js +6 -3
- package/dist/store/sqlite/objects-group.d.ts +1 -1
- package/dist/store/sqlite/objects-group.js +5 -3
- package/dist/store/sqlite/quarantine-group.js +2 -2
- package/dist/store/sqlite/store.d.ts +1 -4
- package/dist/store/sqlite/store.js +16 -15
- package/dist/store/sqlite/vector-reads-group.js +2 -2
- package/dist/store/sqlite/worker-jobs.js +1 -1
- package/dist/store/sqlite/worker-ops.d.ts +13 -2
- package/dist/store/sqlite/worker-ops.js +13 -2
- package/dist/store/sqlite/worker-store.js +5 -2
- package/dist/store/summaries.d.ts +11 -63
- package/dist/store/summaries.js +37 -148
- package/dist/store/summary-dirty.js +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +2 -16
- package/dist/store/tenant.js +4 -19
- package/dist/store/token-ledger.d.ts +13 -50
- package/dist/store/token-ledger.js +19 -85
- package/dist/store/usage-reports.js +5 -13
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +171 -0
- package/dist/store/working-memory.d.ts +6 -25
- package/dist/store/working-memory.js +18 -52
- package/dist/support-bundle.js +9 -8
- package/dist/trust/reject-flow.js +3 -5
- package/dist/util/agent-homes.d.ts +15 -0
- package/dist/util/agent-homes.js +34 -0
- package/dist/util/anthropic-messages.d.ts +3 -0
- package/dist/util/anthropic-messages.js +35 -6
- package/dist/util/atomic-write.d.ts +2 -1
- package/dist/util/atomic-write.js +35 -4
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/chunked.d.ts +3 -0
- package/dist/util/chunked.js +10 -0
- package/dist/util/crash-handlers.d.ts +8 -1
- package/dist/util/crash-handlers.js +52 -10
- package/dist/util/ellipsize.d.ts +3 -0
- package/dist/util/ellipsize.js +5 -0
- package/dist/util/env.d.ts +14 -6
- package/dist/util/env.js +15 -7
- package/dist/util/format.d.ts +3 -0
- package/dist/util/format.js +6 -0
- package/dist/util/home-path.d.ts +2 -1
- package/dist/util/home-path.js +4 -2
- package/dist/util/hook-payload.d.ts +8 -0
- package/dist/util/hook-payload.js +37 -0
- package/dist/util/http-retry.d.ts +9 -1
- package/dist/util/http-retry.js +67 -8
- package/dist/util/http-util.d.ts +0 -8
- package/dist/util/http-util.js +10 -21
- package/dist/util/limits.d.ts +7 -0
- package/dist/util/limits.js +14 -0
- package/dist/util/log.d.ts +7 -2
- package/dist/util/log.js +34 -9
- package/dist/util/request-scope.d.ts +5 -2
- package/dist/util/request-scope.js +13 -7
- package/dist/util/secret-detect.d.ts +5 -30
- package/dist/util/secret-detect.js +19 -40
- package/dist/util/sqlite-blocked.d.ts +2 -0
- package/dist/util/sqlite-blocked.js +5 -0
- package/dist/util/stored-json.d.ts +1 -1
- package/dist/util/stored-json.js +1 -1
- package/dist/util/stream-tee.d.ts +3 -0
- package/dist/util/stream-tee.js +35 -0
- package/dist/util/time.d.ts +4 -0
- package/dist/util/time.js +4 -0
- package/dist/util/token-text.d.ts +1 -4
- package/dist/util/token-text.js +1 -4
- package/dist/util/transcript-tail.d.ts +2 -0
- package/dist/util/transcript-tail.js +24 -23
- package/dist/util/version.d.ts +5 -20
- package/dist/util/version.js +5 -20
- package/dist/{store → util}/yaml.d.ts +1 -5
- package/dist/{store → util}/yaml.js +2 -6
- package/extensions/openclaw-plugin/index.ts +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 +2 -2
- package/dist/cli/provenance-coverage.d.ts +0 -18
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/sharing/scope.d.ts +0 -14
- package/dist/sharing/shared.d.ts +0 -187
- package/dist/sharing/shared.js +0 -563
- package/dist/store/embeddings/local.d.ts +0 -15
- package/dist/store/embeddings/local.js +0 -192
- package/dist/store/embeddings/provider.d.ts +0 -77
- package/dist/store/markdown.d.ts +0 -10
- package/dist/store/recall-scope.d.ts +0 -138
- package/dist/store/recall-scope.js +0 -216
- package/dist/store/vector-writes.d.ts +0 -13
- package/dist/store/vector-writes.js +0 -89
- /package/dist/{store → core}/object-types.d.ts +0 -0
- /package/dist/{store → core}/object-types.js +0 -0
- /package/dist/{cli → store}/quality-repair.d.ts +0 -0
- /package/dist/{capture → util}/compaction-items.d.ts +0 -0
- /package/dist/{capture → util}/compaction-items.js +0 -0
package/dist/cli/curate.js
CHANGED
|
@@ -1,39 +1,36 @@
|
|
|
1
1
|
// Verbs that weaken, suppress or retire memories: outcome, forget, conflicts, reject, dormant, quarantine, invalidate.
|
|
2
|
+
import { truncateWithEllipsis } from '../util/ellipsize.js';
|
|
2
3
|
import * as path from 'path';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { rejectValue, unrejectValue, listRejectionsForTenant } from '../trust/reject-flow.js';
|
|
6
|
-
import { RejectedValueError } from '../store/rejection.js';
|
|
4
|
+
import { unrejectValue, listRejectionsForTenant } from '../trust/reject-flow.js';
|
|
5
|
+
import { RejectedValueError } from '../core/api-errors.js';
|
|
7
6
|
import { loadConfig } from '../core/config.js';
|
|
7
|
+
import { RawAppendOnlyError } from '../core/raw-append-only.js';
|
|
8
8
|
import { isGitRepo } from '../learn/autolearn.js';
|
|
9
|
-
import { invalidateMatching } from '../learn/invalidation.js';
|
|
10
9
|
import * as api from '../api/index.js';
|
|
10
|
+
import { getMemory } from '../api/memories.js';
|
|
11
11
|
import * as client from './client.js';
|
|
12
|
-
import {
|
|
12
|
+
import { cliApiContext } from './api-context.js';
|
|
13
13
|
import { printError } from './output.js';
|
|
14
|
-
import { parseCountFlag, boolFlag, flagIsTrue, stringFlag } from './flag-values.js';
|
|
14
|
+
import { parseCountFlag, boolFlag, flagIsTrue, nonEmptyStringFlag, stringFlag } from './flag-values.js';
|
|
15
15
|
import { requireInit, runChurnStaleForRepo, runViaServerIfAvailable, resolveAuthRoot } from './shared.js';
|
|
16
16
|
import { fmt } from './print.js';
|
|
17
17
|
import { errorMessage } from '../util/log.js';
|
|
18
18
|
import { DIGEST_DISPLAY_CHARS, CONTENT_PREVIEW_CHARS, DATE_PREFIX_CHARS } from '../util/token-text.js';
|
|
19
|
+
import { CliExit } from './exit.js';
|
|
19
20
|
const CONFLICT_PREVIEW_CHARS = 120;
|
|
20
21
|
const REJECTED_DIGEST_LIST_CHARS = 16;
|
|
21
22
|
const DORMANT_PREVIEW_CHARS = 100;
|
|
22
23
|
const STRENGTH_DECIMALS = 3;
|
|
23
|
-
export function
|
|
24
|
+
export function handleOutcome({ hippoRoot, tenantId, flags }) {
|
|
24
25
|
requireInit(hippoRoot);
|
|
25
26
|
const good = boolFlag(flags, 'good');
|
|
26
27
|
const bad = boolFlag(flags, 'bad');
|
|
27
28
|
if (!good && !bad) {
|
|
28
29
|
printError('Specify --good or --bad');
|
|
29
|
-
|
|
30
|
+
throw new CliExit(1);
|
|
30
31
|
}
|
|
31
32
|
// Through api.outcome so every CLI outcome writes one audit_log row per id, as the MCP path does.
|
|
32
|
-
const ctx =
|
|
33
|
-
hippoRoot,
|
|
34
|
-
tenantId: resolveTenantId({}),
|
|
35
|
-
actor: api.adminActor('cli'),
|
|
36
|
-
};
|
|
33
|
+
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
37
34
|
const specificId = flags['id'] ? String(flags['id']) : null;
|
|
38
35
|
let updated;
|
|
39
36
|
if (specificId) {
|
|
@@ -51,16 +48,11 @@ export function cmdOutcome(hippoRoot, flags) {
|
|
|
51
48
|
}
|
|
52
49
|
// Shared between the forget dispatch and cmdForget so the message can't drift.
|
|
53
50
|
const ARCHIVE_REASON_REQUIRED = 'hippo forget --archive requires --reason "<why>" (recorded on the archive).';
|
|
54
|
-
function cmdForget(hippoRoot, id, flags) {
|
|
51
|
+
function cmdForget(hippoRoot, tenantId, id, flags) {
|
|
55
52
|
requireInit(hippoRoot);
|
|
56
|
-
const ctx =
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
actor: api.adminActor('cli'),
|
|
60
|
-
};
|
|
61
|
-
// Raw memories (Slack / GitHub connector ingestion) are append-only: a
|
|
62
|
-
// BEFORE-DELETE trigger aborts any delete. archiveRaw is the sanctioned
|
|
63
|
-
// removal path; it records ctx.actor as the archiver for provenance.
|
|
53
|
+
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
54
|
+
// Raw memories (connector ingestion) are append-only: a BEFORE-DELETE trigger aborts any delete,
|
|
55
|
+
// so archiveRaw is the sanctioned removal path and records ctx.actor as the archiver.
|
|
64
56
|
if (flagIsTrue(flags, 'archive')) {
|
|
65
57
|
archiveForgottenRaw(ctx, id, stringFlag(flags, 'reason') ?? null);
|
|
66
58
|
return;
|
|
@@ -70,14 +62,14 @@ function cmdForget(hippoRoot, id, flags) {
|
|
|
70
62
|
console.log(`Forgot ${id}`);
|
|
71
63
|
}
|
|
72
64
|
catch (err) {
|
|
73
|
-
reportForgetFailure(ctx, id,
|
|
74
|
-
|
|
65
|
+
reportForgetFailure(ctx, id, err);
|
|
66
|
+
throw new CliExit(1);
|
|
75
67
|
}
|
|
76
68
|
}
|
|
77
69
|
function archiveForgottenRaw(ctx, id, reason) {
|
|
78
70
|
if (!reason) {
|
|
79
71
|
printError(ARCHIVE_REASON_REQUIRED);
|
|
80
|
-
|
|
72
|
+
throw new CliExit(1);
|
|
81
73
|
}
|
|
82
74
|
try {
|
|
83
75
|
api.archiveRaw(ctx, id, reason);
|
|
@@ -85,11 +77,11 @@ function archiveForgottenRaw(ctx, id, reason) {
|
|
|
85
77
|
}
|
|
86
78
|
catch (err) {
|
|
87
79
|
printError(`Could not archive ${id}: ${errorMessage(err)}`);
|
|
88
|
-
|
|
80
|
+
throw new CliExit(1);
|
|
89
81
|
}
|
|
90
82
|
}
|
|
91
|
-
function reportForgetFailure(ctx, id,
|
|
92
|
-
if (
|
|
83
|
+
function reportForgetFailure(ctx, id, cause) {
|
|
84
|
+
if (cause instanceof RawAppendOnlyError) {
|
|
93
85
|
// The delete was refused by the append-only trigger — this is a raw
|
|
94
86
|
// memory, not a missing one. Point the user at the archive path.
|
|
95
87
|
printError(rawForgetRefusal(id));
|
|
@@ -108,27 +100,27 @@ function rawForgetRefusal(id) {
|
|
|
108
100
|
return `Cannot forget ${id}: it is a raw, append-only memory. Archive it instead: hippo forget ${id} --archive --reason "<why>"`;
|
|
109
101
|
}
|
|
110
102
|
// Refuses exactly where the real run would, so "Would forget" is a promise, not a guess.
|
|
111
|
-
function previewForget(hippoRoot, id, archive) {
|
|
103
|
+
async function previewForget(hippoRoot, tenantId, id, archive) {
|
|
112
104
|
requireInit(hippoRoot);
|
|
113
|
-
const entry =
|
|
105
|
+
const entry = await getMemory(cliApiContext(hippoRoot, tenantId), id);
|
|
114
106
|
if (!entry) {
|
|
115
107
|
printError(`Memory not found: ${id}`);
|
|
116
|
-
|
|
108
|
+
throw new CliExit(1);
|
|
117
109
|
}
|
|
118
110
|
if (!archive && entry.kind === 'raw') {
|
|
119
111
|
printError(rawForgetRefusal(id));
|
|
120
|
-
|
|
112
|
+
throw new CliExit(1);
|
|
121
113
|
}
|
|
122
114
|
if (archive && entry.kind !== 'raw') {
|
|
123
115
|
printError(`Could not archive ${id}: memory ${id} is not raw (kind=${entry.kind})`);
|
|
124
|
-
|
|
116
|
+
throw new CliExit(1);
|
|
125
117
|
}
|
|
126
|
-
const snippet = entry.content
|
|
118
|
+
const snippet = truncateWithEllipsis(entry.content, CONTENT_PREVIEW_CHARS);
|
|
127
119
|
console.log(`Would ${archive ? 'archive' : 'forget'} ${id} (dry run, nothing changed): "${snippet}"`);
|
|
128
120
|
}
|
|
129
|
-
export function
|
|
121
|
+
export function handleConflicts({ hippoRoot, tenantId, flags }) {
|
|
130
122
|
requireInit(hippoRoot);
|
|
131
|
-
const conflicts =
|
|
123
|
+
const conflicts = api.listConflicts(cliApiContext(hippoRoot, tenantId), String(flags['status'] ?? 'open'), { everyTenant: true });
|
|
132
124
|
if (flags['json']) {
|
|
133
125
|
console.log(JSON.stringify({ conflicts }, null, 2));
|
|
134
126
|
return;
|
|
@@ -146,43 +138,43 @@ export function cmdConflicts(hippoRoot, flags) {
|
|
|
146
138
|
}
|
|
147
139
|
}
|
|
148
140
|
/** Shown when --keep is missing, to help the user decide. */
|
|
149
|
-
function showConflictForResolve(hippoRoot, conflictId, tenantId) {
|
|
150
|
-
const conflicts =
|
|
141
|
+
async function showConflictForResolve(hippoRoot, conflictId, tenantId) {
|
|
142
|
+
const conflicts = api.listConflicts(cliApiContext(hippoRoot, tenantId), 'open');
|
|
151
143
|
const conflict = conflicts.find((c) => c.id === conflictId);
|
|
152
144
|
if (!conflict) {
|
|
153
145
|
printError(`Conflict ${conflictId} not found or already resolved.`);
|
|
154
|
-
|
|
146
|
+
throw new CliExit(1);
|
|
155
147
|
}
|
|
156
148
|
console.log(`Conflict ${conflictId}:`);
|
|
157
149
|
console.log(` ${conflict.memory_a_id} <-> ${conflict.memory_b_id}`);
|
|
158
150
|
console.log(` Reason: ${conflict.reason}`);
|
|
159
151
|
console.log('');
|
|
160
|
-
const
|
|
161
|
-
const
|
|
152
|
+
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
153
|
+
const entryA = await getMemory(ctx, conflict.memory_a_id);
|
|
154
|
+
const entryB = await getMemory(ctx, conflict.memory_b_id);
|
|
162
155
|
if (entryA) {
|
|
163
156
|
console.log(` [A] ${conflict.memory_a_id}:`);
|
|
164
|
-
console.log(` ${entryA.content
|
|
157
|
+
console.log(` ${truncateWithEllipsis(entryA.content, CONFLICT_PREVIEW_CHARS)}`);
|
|
165
158
|
}
|
|
166
159
|
if (entryB) {
|
|
167
160
|
console.log(` [B] ${conflict.memory_b_id}:`);
|
|
168
|
-
console.log(` ${entryB.content
|
|
161
|
+
console.log(` ${truncateWithEllipsis(entryB.content, CONFLICT_PREVIEW_CHARS)}`);
|
|
169
162
|
}
|
|
170
163
|
console.log('');
|
|
171
164
|
console.log(`Resolve with: hippo resolve ${conflictId} --keep <memory_id> [--forget] [--reject-loser [--reason "<why>"]]`);
|
|
172
165
|
}
|
|
173
|
-
export function
|
|
166
|
+
export async function handleResolve({ hippoRoot, tenantId, args, flags }) {
|
|
174
167
|
requireInit(hippoRoot);
|
|
175
168
|
const rawId = args[0] ?? '';
|
|
176
169
|
// Accept "42" or "conflict_42"
|
|
177
170
|
const conflictId = parseInt(rawId.replace(/^conflict_/, ''), 10);
|
|
178
171
|
if (isNaN(conflictId)) {
|
|
179
172
|
printError('Usage: hippo resolve <conflict_id> --keep <memory_id> [--forget]');
|
|
180
|
-
|
|
173
|
+
throw new CliExit(1);
|
|
181
174
|
}
|
|
182
|
-
const tenantId = resolveTenantId({});
|
|
183
175
|
const keepId = String(flags['keep'] ?? '').trim();
|
|
184
176
|
if (!keepId) {
|
|
185
|
-
showConflictForResolve(hippoRoot, conflictId, tenantId);
|
|
177
|
+
await showConflictForResolve(hippoRoot, conflictId, tenantId);
|
|
186
178
|
return;
|
|
187
179
|
}
|
|
188
180
|
const forgetLoser = boolFlag(flags, 'forget');
|
|
@@ -190,14 +182,12 @@ export function cmdResolve(hippoRoot, args, flags) {
|
|
|
190
182
|
// --reason is optional here, unlike `hippo reject`: resolve already has the conflict id and keepId.
|
|
191
183
|
const rejectLoser = boolFlag(flags, 'reject-loser');
|
|
192
184
|
const reasonFlag = stringFlag(flags, 'reason');
|
|
193
|
-
const result =
|
|
194
|
-
|
|
185
|
+
const result = api.resolveMemoryConflict(cliApiContext(hippoRoot, tenantId), conflictId, {
|
|
186
|
+
keepId,
|
|
187
|
+
forget: forgetLoser,
|
|
188
|
+
rejectLoser,
|
|
195
189
|
reason: reasonFlag,
|
|
196
190
|
});
|
|
197
|
-
if (!result) {
|
|
198
|
-
printError(`Could not resolve conflict ${conflictId}. Check the ID and --keep value.`);
|
|
199
|
-
process.exit(1);
|
|
200
|
-
}
|
|
201
191
|
const action = rejectLoser
|
|
202
192
|
? 'rejected (tombstoned) and removed'
|
|
203
193
|
: forgetLoser
|
|
@@ -205,37 +195,31 @@ export function cmdResolve(hippoRoot, args, flags) {
|
|
|
205
195
|
: 'weakened (half-life halved)';
|
|
206
196
|
console.log(`Resolved conflict ${conflictId}: kept ${keepId}, ${action} ${result.loserId}`);
|
|
207
197
|
}
|
|
208
|
-
// ---------------------------------------------------------------------------
|
|
209
198
|
// reject / rejections / unreject
|
|
210
|
-
|
|
211
|
-
export function cmdReject(hippoRoot, args, flags) {
|
|
199
|
+
export function handleReject({ hippoRoot, tenantId, args, flags }) {
|
|
212
200
|
// Store resolution mirrors `hippo remember`: --global writes to the
|
|
213
201
|
// global store, otherwise the local store (requireInit'd via resolveAuthRoot).
|
|
214
202
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
215
|
-
const tenantId = resolveTenantId({});
|
|
216
203
|
// --reason is REQUIRED: the tombstone stores no content, so reason is its only human-readable identity.
|
|
217
204
|
const reason = (stringFlag(flags, 'reason') ?? '').trim();
|
|
218
205
|
if (!reason) {
|
|
219
206
|
printError('hippo reject requires --reason "<why>" (the tombstone stores no content; reason is its only identity).');
|
|
220
|
-
|
|
207
|
+
throw new CliExit(1);
|
|
221
208
|
}
|
|
222
209
|
const valueFlag = stringFlag(flags, 'value');
|
|
223
210
|
const memoryId = args[0];
|
|
224
211
|
if (!memoryId && valueFlag === undefined) {
|
|
225
212
|
printError('Usage: hippo reject <memory-id> --reason "<why>"');
|
|
226
213
|
printError(' or: hippo reject --value "<text>" --reason "<why>"');
|
|
227
|
-
|
|
214
|
+
throw new CliExit(1);
|
|
228
215
|
}
|
|
229
216
|
if (memoryId && valueFlag !== undefined) {
|
|
230
217
|
// Ambiguous ask: silently preferring one form would ignore the other without feedback.
|
|
231
218
|
printError('hippo reject takes EITHER a memory id OR --value, not both.');
|
|
232
|
-
|
|
219
|
+
throw new CliExit(1);
|
|
233
220
|
}
|
|
234
221
|
try {
|
|
235
|
-
const result =
|
|
236
|
-
hippoRoot: root,
|
|
237
|
-
tenantId,
|
|
238
|
-
actor: 'cli',
|
|
222
|
+
const result = api.rejectOnHost(cliApiContext(root, tenantId), {
|
|
239
223
|
reason,
|
|
240
224
|
memoryId: valueFlag === undefined ? memoryId : undefined,
|
|
241
225
|
value: valueFlag,
|
|
@@ -244,12 +228,12 @@ export function cmdReject(hippoRoot, args, flags) {
|
|
|
244
228
|
}
|
|
245
229
|
catch (err) {
|
|
246
230
|
printError(`Could not reject: ${errorMessage(err)}`);
|
|
247
|
-
|
|
231
|
+
throw new CliExit(1);
|
|
248
232
|
}
|
|
249
233
|
}
|
|
250
234
|
function printRejected(result, reason) {
|
|
251
235
|
const digestPrefix = result.digest.slice(0, DIGEST_DISPLAY_CHARS);
|
|
252
|
-
const preview = result.content
|
|
236
|
+
const preview = truncateWithEllipsis(result.content, CONTENT_PREVIEW_CHARS);
|
|
253
237
|
console.log(`Rejected [${digestPrefix}...]: "${preview}"`);
|
|
254
238
|
console.log(` Reason: ${reason}`);
|
|
255
239
|
if (result.removedIds.length > 0) {
|
|
@@ -265,9 +249,8 @@ function printRejected(result, reason) {
|
|
|
265
249
|
console.log(' No live rows matched (pre-emptive tombstone).');
|
|
266
250
|
}
|
|
267
251
|
}
|
|
268
|
-
export function
|
|
252
|
+
export function handleRejections({ hippoRoot, tenantId, flags }) {
|
|
269
253
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
270
|
-
const tenantId = resolveTenantId({});
|
|
271
254
|
const rows = listRejectionsForTenant(root, tenantId);
|
|
272
255
|
if (flags['json']) {
|
|
273
256
|
console.log(JSON.stringify({ rejections: rows }, null, 2));
|
|
@@ -290,41 +273,32 @@ export function cmdRejections(hippoRoot, flags) {
|
|
|
290
273
|
console.log('');
|
|
291
274
|
}
|
|
292
275
|
}
|
|
293
|
-
export function
|
|
276
|
+
export function handleUnreject({ hippoRoot, tenantId, args, flags }) {
|
|
294
277
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
295
|
-
const tenantId = resolveTenantId({});
|
|
296
278
|
const digestOrPrefix = (args[0] ?? '').trim();
|
|
297
279
|
if (!digestOrPrefix) {
|
|
298
280
|
printError('Usage: hippo unreject <digest-or-prefix>');
|
|
299
|
-
|
|
281
|
+
throw new CliExit(1);
|
|
300
282
|
}
|
|
301
283
|
const outcome = unrejectValue(root, tenantId, digestOrPrefix, 'cli');
|
|
302
284
|
if (outcome.status === 'not_found') {
|
|
303
285
|
printError(`No rejected value matches "${digestOrPrefix}". Run \`hippo rejections\` to list tombstones.`);
|
|
304
|
-
|
|
286
|
+
throw new CliExit(1);
|
|
305
287
|
}
|
|
306
288
|
if (outcome.status === 'ambiguous') {
|
|
307
289
|
printError(`"${digestOrPrefix}" matches ${outcome.candidates.length} tombstones. Use a longer prefix:`);
|
|
308
290
|
for (const c of outcome.candidates) {
|
|
309
291
|
printError(` ${c.digest.slice(0, REJECTED_DIGEST_LIST_CHARS)}... ${c.reason ?? 'none given'}`);
|
|
310
292
|
}
|
|
311
|
-
|
|
293
|
+
throw new CliExit(1);
|
|
312
294
|
}
|
|
313
295
|
console.log(`Unrejected [${outcome.digest.slice(0, DIGEST_DISPLAY_CHARS)}...] (was: ${outcome.reason ?? 'none given'})`);
|
|
314
296
|
}
|
|
315
|
-
/**
|
|
316
|
-
* `
|
|
317
|
-
|
|
318
|
-
* Dormant memories are what sleep keeps instead of deleting (on by default;
|
|
319
|
-
* `"dormant": { "enabled": false }` in .hippo/config.json deletes instead).
|
|
320
|
-
*/
|
|
321
|
-
export function cmdDormant(hippoRoot, args, flags) {
|
|
297
|
+
/** `hippo dormant [list|restore <id>|forget <id>]`: dormant memories are what sleep keeps instead of deleting
|
|
298
|
+
* (on by default; `"dormant": { "enabled": false }` in .hippo/config.json deletes instead). */
|
|
299
|
+
export function handleDormant({ hippoRoot, tenantId, args, flags }) {
|
|
322
300
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
323
|
-
const ctx =
|
|
324
|
-
hippoRoot: root,
|
|
325
|
-
tenantId: resolveTenantId({}),
|
|
326
|
-
actor: api.adminActor('cli'),
|
|
327
|
-
};
|
|
301
|
+
const ctx = cliApiContext(root, tenantId);
|
|
328
302
|
const sub = args[0];
|
|
329
303
|
if (sub === 'restore' || sub === 'forget') {
|
|
330
304
|
changeDormant(ctx, sub, (args[1] ?? '').trim());
|
|
@@ -345,7 +319,7 @@ export function cmdDormant(hippoRoot, args, flags) {
|
|
|
345
319
|
function changeDormant(ctx, sub, id) {
|
|
346
320
|
if (!id) {
|
|
347
321
|
printError(`Usage: hippo dormant ${sub} <id>`);
|
|
348
|
-
|
|
322
|
+
throw new CliExit(1);
|
|
349
323
|
}
|
|
350
324
|
try {
|
|
351
325
|
if (sub === 'restore') {
|
|
@@ -364,7 +338,7 @@ function changeDormant(ctx, sub, id) {
|
|
|
364
338
|
else {
|
|
365
339
|
printError(`Could not ${sub} ${id}: ${errorMessage(err)}`);
|
|
366
340
|
}
|
|
367
|
-
|
|
341
|
+
throw new CliExit(1);
|
|
368
342
|
}
|
|
369
343
|
}
|
|
370
344
|
function printDormantRows(rows, hasQuery, root) {
|
|
@@ -377,22 +351,20 @@ function printDormantRows(rows, hasQuery, root) {
|
|
|
377
351
|
}
|
|
378
352
|
console.log(`${rows.length} dormant memor${rows.length === 1 ? 'y' : 'ies'}${hasQuery ? ' matching' : ''} (newest first):\n`);
|
|
379
353
|
for (const row of rows) {
|
|
380
|
-
const preview = row.content
|
|
354
|
+
const preview = truncateWithEllipsis(row.content, DORMANT_PREVIEW_CHARS);
|
|
381
355
|
console.log(`--- ${row.id}`);
|
|
382
356
|
console.log(` ${preview}`);
|
|
383
|
-
console.log(` Dormant since ${row.dormantAt.slice(0, DATE_PREFIX_CHARS)}
|
|
357
|
+
console.log(` Dormant since ${row.dormantAt.slice(0, DATE_PREFIX_CHARS)} ` +
|
|
358
|
+
`(${row.reason}, strength ${row.strength.toFixed(STRENGTH_DECIMALS)})` +
|
|
359
|
+
`${row.tags.length > 0 ? ` tags: ${row.tags.join(', ')}` : ''}`);
|
|
384
360
|
console.log('');
|
|
385
361
|
}
|
|
386
362
|
console.log('Bring one back: hippo dormant restore <id> Delete for good: hippo dormant forget <id>');
|
|
387
363
|
}
|
|
388
364
|
/** `hippo quarantine [list] [--all] [--json] [--global]`, `quarantine approve <id>`, `quarantine reject <id>` (poisoning defence). */
|
|
389
|
-
export async function
|
|
365
|
+
export async function handleQuarantine({ hippoRoot, tenantId, args, flags }) {
|
|
390
366
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
391
|
-
const ctx =
|
|
392
|
-
hippoRoot: root,
|
|
393
|
-
tenantId: resolveTenantId({}),
|
|
394
|
-
actor: api.adminActor('cli'),
|
|
395
|
-
};
|
|
367
|
+
const ctx = cliApiContext(root, tenantId);
|
|
396
368
|
const sub = args[0];
|
|
397
369
|
if (sub === 'approve' || sub === 'reject') {
|
|
398
370
|
await decideQuarantined(ctx, sub, (args[1] ?? '').trim());
|
|
@@ -413,7 +385,7 @@ export async function cmdQuarantine(hippoRoot, args, flags) {
|
|
|
413
385
|
async function decideQuarantined(ctx, sub, id) {
|
|
414
386
|
if (!id) {
|
|
415
387
|
printError(`Usage: hippo quarantine ${sub} <id>`);
|
|
416
|
-
|
|
388
|
+
throw new CliExit(1);
|
|
417
389
|
}
|
|
418
390
|
try {
|
|
419
391
|
if (sub === 'approve') {
|
|
@@ -427,7 +399,7 @@ async function decideQuarantined(ctx, sub, id) {
|
|
|
427
399
|
}
|
|
428
400
|
catch (err) {
|
|
429
401
|
printError(`Could not ${sub} ${id}: ${errorMessage(err)}`);
|
|
430
|
-
|
|
402
|
+
throw new CliExit(1);
|
|
431
403
|
}
|
|
432
404
|
}
|
|
433
405
|
function printQuarantineRows(rows) {
|
|
@@ -440,11 +412,11 @@ function printQuarantineRows(rows) {
|
|
|
440
412
|
}
|
|
441
413
|
console.log('Approve: hippo quarantine approve <id> Reject: hippo quarantine reject <id>');
|
|
442
414
|
}
|
|
443
|
-
export async function handleForget({ hippoRoot, args, flags }) {
|
|
415
|
+
export async function handleForget({ hippoRoot, tenantId, args, flags }) {
|
|
444
416
|
const id = args[0];
|
|
445
417
|
if (!id) {
|
|
446
418
|
printError('Please provide a memory ID.');
|
|
447
|
-
|
|
419
|
+
throw new CliExit(1);
|
|
448
420
|
}
|
|
449
421
|
// Archive has its own HTTP route (POST /v1/memories/:id/archive); route
|
|
450
422
|
// both branches the same way the direct path does.
|
|
@@ -452,10 +424,10 @@ export async function handleForget({ hippoRoot, args, flags }) {
|
|
|
452
424
|
const reason = stringFlag(flags, 'reason') ?? null;
|
|
453
425
|
if (archive && !reason) {
|
|
454
426
|
printError(ARCHIVE_REASON_REQUIRED);
|
|
455
|
-
|
|
427
|
+
throw new CliExit(1);
|
|
456
428
|
}
|
|
457
429
|
if (flagIsTrue(flags, 'dry-run')) {
|
|
458
|
-
previewForget(hippoRoot, id, archive);
|
|
430
|
+
await previewForget(hippoRoot, tenantId, id, archive);
|
|
459
431
|
return;
|
|
460
432
|
}
|
|
461
433
|
const routed = await runViaServerIfAvailable(hippoRoot, async (info, apiKey) => {
|
|
@@ -472,30 +444,30 @@ export async function handleForget({ hippoRoot, args, flags }) {
|
|
|
472
444
|
catch (err) {
|
|
473
445
|
// A server that died after the health probe is the caller's transport
|
|
474
446
|
// fallback to handle, not an error to report to the user.
|
|
475
|
-
if (client.classifyTransportFailure(err) !== 'none')
|
|
447
|
+
if (err instanceof Error && client.classifyTransportFailure(err) !== 'none')
|
|
476
448
|
throw err;
|
|
477
449
|
const msg = errorMessage(err);
|
|
478
450
|
printError(archive ? `Could not archive ${id}: ${msg}` : msg);
|
|
479
|
-
|
|
451
|
+
throw new CliExit(1);
|
|
480
452
|
}
|
|
481
453
|
});
|
|
482
454
|
if (routed)
|
|
483
455
|
return;
|
|
484
|
-
cmdForget(hippoRoot, id, flags);
|
|
456
|
+
cmdForget(hippoRoot, tenantId, id, flags);
|
|
485
457
|
}
|
|
486
|
-
function invalidateChurn(hippoRoot, args, flags) {
|
|
458
|
+
function invalidateChurn(hippoRoot, tenantId, args, flags) {
|
|
487
459
|
if (args[0] || flags['id'] !== undefined) {
|
|
488
460
|
printError('Usage: hippo invalidate --churn [--dry-run]');
|
|
489
461
|
printError('--churn takes no pattern or --id.');
|
|
490
|
-
|
|
462
|
+
throw new CliExit(1);
|
|
491
463
|
}
|
|
492
464
|
if (!isGitRepo(process.cwd())) {
|
|
493
465
|
printError('hippo invalidate --churn must run inside a git repository.');
|
|
494
|
-
|
|
466
|
+
throw new CliExit(1);
|
|
495
467
|
}
|
|
496
468
|
const churnDryRun = flagIsTrue(flags, 'dry-run');
|
|
497
469
|
let churnFailed = false;
|
|
498
|
-
for (const { root, result } of runChurnStaleForRepo(hippoRoot, churnDryRun)) {
|
|
470
|
+
for (const { root, result } of runChurnStaleForRepo(hippoRoot, tenantId, churnDryRun)) {
|
|
499
471
|
if (result.error) {
|
|
500
472
|
printError(`Churn-staleness check failed for ${root}: ${result.error}`);
|
|
501
473
|
churnFailed = true;
|
|
@@ -516,18 +488,18 @@ function invalidateChurn(hippoRoot, args, flags) {
|
|
|
516
488
|
}
|
|
517
489
|
}
|
|
518
490
|
if (churnFailed)
|
|
519
|
-
|
|
491
|
+
throw new CliExit(1);
|
|
520
492
|
}
|
|
521
|
-
export function handleInvalidate({ hippoRoot, args, flags }) {
|
|
493
|
+
export function handleInvalidate({ hippoRoot, tenantId, args, flags }) {
|
|
522
494
|
requireInit(hippoRoot);
|
|
523
495
|
if (flagIsTrue(flags, 'churn'))
|
|
524
|
-
return invalidateChurn(hippoRoot, args, flags);
|
|
496
|
+
return invalidateChurn(hippoRoot, tenantId, args, flags);
|
|
525
497
|
const target = args[0];
|
|
526
498
|
if (flagIsTrue(flags, 'id')) {
|
|
527
499
|
// Value-less --id must never silently fall through to pattern mode
|
|
528
500
|
// (pattern mode writes broadly; an ignored --id reverses user intent).
|
|
529
501
|
printError('--id requires a memory id');
|
|
530
|
-
|
|
502
|
+
throw new CliExit(1);
|
|
531
503
|
}
|
|
532
504
|
const onlyId = stringFlag(flags, 'id');
|
|
533
505
|
const dryRun = flagIsTrue(flags, 'dry-run');
|
|
@@ -535,15 +507,15 @@ export function handleInvalidate({ hippoRoot, args, flags }) {
|
|
|
535
507
|
printError('Usage: hippo invalidate "<old pattern>" [--dry-run] [--reason "<why>"]');
|
|
536
508
|
printError(' hippo invalidate --id <memory-id> [--dry-run] [--reason "<why>"]');
|
|
537
509
|
printError('Pass a pattern OR --id, not both. Tag matching is EXACT: the full pattern must equal a tag.');
|
|
538
|
-
|
|
510
|
+
throw new CliExit(1);
|
|
539
511
|
}
|
|
540
|
-
const reason = (flags
|
|
512
|
+
const reason = nonEmptyStringFlag(flags, 'reason') ?? null;
|
|
541
513
|
const invTarget = {
|
|
542
514
|
from: target ?? `id:${onlyId}`,
|
|
543
515
|
to: reason,
|
|
544
516
|
type: 'migration',
|
|
545
517
|
};
|
|
546
|
-
const result =
|
|
518
|
+
const result = api.invalidateMemories(cliApiContext(hippoRoot, tenantId), invTarget, { dryRun, onlyId });
|
|
547
519
|
const label = target ? `"${target}"` : `--id ${onlyId}`;
|
|
548
520
|
if (result.dryRun) {
|
|
549
521
|
if (result.invalidated === 0) {
|
package/dist/cli/dag.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function handleDrill({ hippoRoot, args, flags }: CommandContext): Promise<void>;
|
|
4
|
-
export declare function handleAssemble({ hippoRoot, args, flags }: CommandContext): Promise<void>;
|
|
1
|
+
import { type CommandContext } from './flag-values.js';
|
|
2
|
+
export declare function handleDag({ hippoRoot, tenantId, flags }: CommandContext): void;
|
|
3
|
+
export declare function handleDrill({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
4
|
+
export declare function handleAssemble({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
5
5
|
//# sourceMappingURL=dag.d.ts.map
|