hippo-memory 1.44.0 → 1.45.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 +12 -10
- package/bin/hippo.js +3 -1
- package/dist/api.d.ts +21 -21
- package/dist/api.js +69 -42
- package/dist/audit.d.ts +1 -1
- package/dist/audit.js +9 -0
- package/dist/autolearn.d.ts +1 -1
- package/dist/autolearn.js +2 -1
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +151 -72
- package/dist/client.d.ts +4 -21
- package/dist/client.js +3 -112
- package/dist/config.js +2 -1
- package/dist/consolidate.d.ts +3 -0
- package/dist/consolidate.js +44 -42
- package/dist/dag.d.ts +1 -0
- package/dist/dag.js +10 -5
- package/dist/dashboard.js +7 -3
- package/dist/db.js +12 -23
- package/dist/dedupe.d.ts +1 -0
- package/dist/dedupe.js +4 -7
- package/dist/embedding-provider.js +2 -1
- package/dist/embeddings.js +81 -8
- package/dist/extract.d.ts +2 -0
- package/dist/extract.js +9 -4
- package/dist/mcp/server.js +21 -36
- package/dist/memory.d.ts +3 -0
- package/dist/memory.js +7 -1
- package/dist/refine-llm.js +3 -2
- package/dist/rerankers/jev.js +3 -2
- package/dist/rerankers/llm.js +3 -2
- package/dist/search.js +3 -3
- package/dist/server.d.ts +5 -0
- package/dist/server.js +39 -29
- package/dist/shared.js +1 -1
- package/dist/store.d.ts +18 -11
- package/dist/store.js +144 -63
- package/dist/version.d.ts +4 -6
- package/dist/version.js +4 -7
- 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 +6 -3
- package/dist/ablation.d.ts.map +0 -1
- package/dist/ablation.js.map +0 -1
- package/dist/ambient.d.ts.map +0 -1
- package/dist/ambient.js.map +0 -1
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js.map +0 -1
- package/dist/audit-prune.d.ts.map +0 -1
- package/dist/audit-prune.js.map +0 -1
- package/dist/audit.d.ts.map +0 -1
- package/dist/audit.js.map +0 -1
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/autolearn.d.ts.map +0 -1
- package/dist/autolearn.js.map +0 -1
- package/dist/availability.d.ts.map +0 -1
- package/dist/availability.js.map +0 -1
- package/dist/benchmarks/e1.3/incident-recall-eval.js +0 -78
- package/dist/benchmarks/e1.3/incident-recall-eval.js.map +0 -1
- package/dist/benchmarks/e1.3/slack-1000-event-smoke.js +0 -103
- package/dist/benchmarks/e1.3/slack-1000-event-smoke.js.map +0 -1
- package/dist/capture.d.ts.map +0 -1
- package/dist/capture.js.map +0 -1
- package/dist/card-detail.d.ts.map +0 -1
- package/dist/card-detail.js.map +0 -1
- package/dist/card.d.ts.map +0 -1
- package/dist/card.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/compare.d.ts.map +0 -1
- package/dist/compare.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/connectors/github/backfill.d.ts.map +0 -1
- package/dist/connectors/github/backfill.js.map +0 -1
- package/dist/connectors/github/cli-impl.d.ts.map +0 -1
- package/dist/connectors/github/cli-impl.js.map +0 -1
- package/dist/connectors/github/deletion.d.ts.map +0 -1
- package/dist/connectors/github/deletion.js.map +0 -1
- package/dist/connectors/github/dlq.d.ts.map +0 -1
- package/dist/connectors/github/dlq.js.map +0 -1
- package/dist/connectors/github/idempotency.d.ts.map +0 -1
- package/dist/connectors/github/idempotency.js.map +0 -1
- package/dist/connectors/github/ingest.d.ts.map +0 -1
- package/dist/connectors/github/ingest.js.map +0 -1
- package/dist/connectors/github/octokit-client.d.ts.map +0 -1
- package/dist/connectors/github/octokit-client.js.map +0 -1
- package/dist/connectors/github/ratelimit.d.ts.map +0 -1
- package/dist/connectors/github/ratelimit.js.map +0 -1
- package/dist/connectors/github/scope.d.ts.map +0 -1
- package/dist/connectors/github/scope.js.map +0 -1
- package/dist/connectors/github/signature.d.ts.map +0 -1
- package/dist/connectors/github/signature.js.map +0 -1
- package/dist/connectors/github/tenant-routing.d.ts.map +0 -1
- package/dist/connectors/github/tenant-routing.js.map +0 -1
- package/dist/connectors/github/transform.d.ts.map +0 -1
- package/dist/connectors/github/transform.js.map +0 -1
- package/dist/connectors/github/types.d.ts.map +0 -1
- package/dist/connectors/github/types.js.map +0 -1
- package/dist/connectors/slack/backfill.d.ts.map +0 -1
- package/dist/connectors/slack/backfill.js.map +0 -1
- package/dist/connectors/slack/deletion.d.ts.map +0 -1
- package/dist/connectors/slack/deletion.js.map +0 -1
- package/dist/connectors/slack/dlq.d.ts.map +0 -1
- package/dist/connectors/slack/dlq.js.map +0 -1
- package/dist/connectors/slack/idempotency.d.ts.map +0 -1
- package/dist/connectors/slack/idempotency.js.map +0 -1
- package/dist/connectors/slack/ingest.d.ts.map +0 -1
- package/dist/connectors/slack/ingest.js.map +0 -1
- package/dist/connectors/slack/ratelimit.d.ts.map +0 -1
- package/dist/connectors/slack/ratelimit.js.map +0 -1
- package/dist/connectors/slack/scope.d.ts.map +0 -1
- package/dist/connectors/slack/scope.js.map +0 -1
- package/dist/connectors/slack/signature.d.ts.map +0 -1
- package/dist/connectors/slack/signature.js.map +0 -1
- package/dist/connectors/slack/tenant-routing.d.ts.map +0 -1
- package/dist/connectors/slack/tenant-routing.js.map +0 -1
- package/dist/connectors/slack/transform.d.ts.map +0 -1
- package/dist/connectors/slack/transform.js.map +0 -1
- package/dist/connectors/slack/types.d.ts.map +0 -1
- package/dist/connectors/slack/types.js.map +0 -1
- package/dist/connectors/slack/web-client.d.ts.map +0 -1
- package/dist/connectors/slack/web-client.js.map +0 -1
- package/dist/connectors/slack/workspaces.d.ts.map +0 -1
- package/dist/connectors/slack/workspaces.js.map +0 -1
- package/dist/consolidate.d.ts.map +0 -1
- package/dist/consolidate.js.map +0 -1
- package/dist/correction-latency.d.ts.map +0 -1
- package/dist/correction-latency.js.map +0 -1
- package/dist/customer-notes.d.ts.map +0 -1
- package/dist/customer-notes.js.map +0 -1
- package/dist/dag.d.ts.map +0 -1
- package/dist/dag.js.map +0 -1
- package/dist/dashboard.d.ts.map +0 -1
- package/dist/dashboard.js.map +0 -1
- package/dist/db.d.ts.map +0 -1
- package/dist/db.js.map +0 -1
- package/dist/decisions.d.ts.map +0 -1
- package/dist/decisions.js.map +0 -1
- package/dist/dedupe.d.ts.map +0 -1
- package/dist/dedupe.js.map +0 -1
- package/dist/embedding-provider.d.ts.map +0 -1
- package/dist/embedding-provider.js.map +0 -1
- package/dist/embeddings.d.ts.map +0 -1
- package/dist/embeddings.js.map +0 -1
- package/dist/eval-suite.d.ts.map +0 -1
- package/dist/eval-suite.js.map +0 -1
- package/dist/eval.d.ts.map +0 -1
- package/dist/eval.js.map +0 -1
- package/dist/extensions/openclaw-plugin/index.js.map +0 -1
- package/dist/extract.d.ts.map +0 -1
- package/dist/extract.js.map +0 -1
- package/dist/forward-claim-detector.d.ts.map +0 -1
- package/dist/forward-claim-detector.js.map +0 -1
- package/dist/goals.d.ts.map +0 -1
- package/dist/goals.js.map +0 -1
- package/dist/graph-extract.d.ts.map +0 -1
- package/dist/graph-extract.js.map +0 -1
- package/dist/graph-recall.d.ts.map +0 -1
- package/dist/graph-recall.js.map +0 -1
- package/dist/graph-stream.d.ts.map +0 -1
- package/dist/graph-stream.js.map +0 -1
- package/dist/graph-view.d.ts.map +0 -1
- package/dist/graph-view.js.map +0 -1
- package/dist/graph.d.ts.map +0 -1
- package/dist/graph.js.map +0 -1
- package/dist/handoff.d.ts.map +0 -1
- package/dist/handoff.js.map +0 -1
- package/dist/hooks.d.ts.map +0 -1
- package/dist/hooks.js.map +0 -1
- package/dist/importers.d.ts.map +0 -1
- package/dist/importers.js.map +0 -1
- package/dist/incidents.d.ts.map +0 -1
- package/dist/incidents.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/invalidation.d.ts.map +0 -1
- package/dist/invalidation.js.map +0 -1
- package/dist/mcp/framing.d.ts.map +0 -1
- package/dist/mcp/framing.js.map +0 -1
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js.map +0 -1
- package/dist/memory-value-weights.d.ts.map +0 -1
- package/dist/memory-value-weights.js.map +0 -1
- package/dist/memory-value.d.ts.map +0 -1
- package/dist/memory-value.js.map +0 -1
- package/dist/memory.d.ts.map +0 -1
- package/dist/memory.js.map +0 -1
- package/dist/multihop.d.ts.map +0 -1
- package/dist/multihop.js.map +0 -1
- package/dist/owner-validation.d.ts.map +0 -1
- package/dist/owner-validation.js.map +0 -1
- package/dist/path-context.d.ts.map +0 -1
- package/dist/path-context.js.map +0 -1
- package/dist/physics-config.d.ts.map +0 -1
- package/dist/physics-config.js.map +0 -1
- package/dist/physics-state.d.ts.map +0 -1
- package/dist/physics-state.js.map +0 -1
- package/dist/physics.d.ts.map +0 -1
- package/dist/physics.js.map +0 -1
- package/dist/policies.d.ts.map +0 -1
- package/dist/policies.js.map +0 -1
- package/dist/postinstall.d.ts.map +0 -1
- package/dist/postinstall.js.map +0 -1
- package/dist/predictions.d.ts.map +0 -1
- package/dist/predictions.js.map +0 -1
- package/dist/processes.d.ts.map +0 -1
- package/dist/processes.js.map +0 -1
- package/dist/project-briefs.d.ts.map +0 -1
- package/dist/project-briefs.js.map +0 -1
- package/dist/project-identity.d.ts.map +0 -1
- package/dist/project-identity.js.map +0 -1
- package/dist/provenance-coverage.d.ts.map +0 -1
- package/dist/provenance-coverage.js.map +0 -1
- package/dist/rate-limit.d.ts.map +0 -1
- package/dist/rate-limit.js.map +0 -1
- package/dist/raw-archive-mirror-cleanup.d.ts.map +0 -1
- package/dist/raw-archive-mirror-cleanup.js.map +0 -1
- package/dist/raw-archive.d.ts.map +0 -1
- package/dist/raw-archive.js.map +0 -1
- package/dist/recall-history.d.ts.map +0 -1
- package/dist/recall-history.js.map +0 -1
- package/dist/recall-scope.d.ts.map +0 -1
- package/dist/recall-scope.js.map +0 -1
- package/dist/recall-trace.d.ts.map +0 -1
- package/dist/recall-trace.js.map +0 -1
- package/dist/refine-llm.d.ts.map +0 -1
- package/dist/refine-llm.js.map +0 -1
- package/dist/reject-flow.d.ts.map +0 -1
- package/dist/reject-flow.js.map +0 -1
- package/dist/rejection.d.ts.map +0 -1
- package/dist/rejection.js.map +0 -1
- package/dist/replay.d.ts.map +0 -1
- package/dist/replay.js.map +0 -1
- package/dist/rerankers/cross-encoder.d.ts.map +0 -1
- package/dist/rerankers/cross-encoder.js.map +0 -1
- package/dist/rerankers/index.d.ts.map +0 -1
- package/dist/rerankers/index.js.map +0 -1
- package/dist/rerankers/jev.d.ts.map +0 -1
- package/dist/rerankers/jev.js.map +0 -1
- package/dist/rerankers/llm.d.ts.map +0 -1
- package/dist/rerankers/llm.js.map +0 -1
- package/dist/rerankers/types.d.ts.map +0 -1
- package/dist/rerankers/types.js.map +0 -1
- package/dist/rrf.d.ts.map +0 -1
- package/dist/rrf.js.map +0 -1
- package/dist/salience.d.ts.map +0 -1
- package/dist/salience.js.map +0 -1
- package/dist/scheduler.d.ts.map +0 -1
- package/dist/scheduler.js.map +0 -1
- package/dist/scope.d.ts.map +0 -1
- package/dist/scope.js.map +0 -1
- package/dist/search.d.ts.map +0 -1
- package/dist/search.js.map +0 -1
- package/dist/secret-detect.d.ts.map +0 -1
- package/dist/secret-detect.js.map +0 -1
- package/dist/server-detect.d.ts.map +0 -1
- package/dist/server-detect.js.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/shared.d.ts.map +0 -1
- package/dist/shared.js.map +0 -1
- package/dist/skills.d.ts.map +0 -1
- package/dist/skills.js.map +0 -1
- package/dist/sleep-redact.d.ts +0 -58
- package/dist/sleep-redact.d.ts.map +0 -1
- package/dist/sleep-redact.js +0 -80
- package/dist/sleep-redact.js.map +0 -1
- package/dist/src/ablation.js +0 -138
- package/dist/src/ablation.js.map +0 -1
- package/dist/src/ambient.js +0 -148
- package/dist/src/ambient.js.map +0 -1
- package/dist/src/api.js +0 -2109
- package/dist/src/api.js.map +0 -1
- package/dist/src/audit-prune.js +0 -109
- package/dist/src/audit-prune.js.map +0 -1
- package/dist/src/audit.js +0 -213
- package/dist/src/audit.js.map +0 -1
- package/dist/src/auth.js +0 -97
- package/dist/src/auth.js.map +0 -1
- package/dist/src/autolearn.js +0 -174
- package/dist/src/autolearn.js.map +0 -1
- package/dist/src/availability.js +0 -94
- package/dist/src/availability.js.map +0 -1
- package/dist/src/capture.js +0 -1346
- package/dist/src/capture.js.map +0 -1
- package/dist/src/card-detail.js +0 -15
- package/dist/src/card-detail.js.map +0 -1
- package/dist/src/card.js +0 -19
- package/dist/src/card.js.map +0 -1
- package/dist/src/cli.js +0 -9387
- package/dist/src/cli.js.map +0 -1
- package/dist/src/client.js +0 -237
- package/dist/src/client.js.map +0 -1
- package/dist/src/compare.js +0 -122
- package/dist/src/compare.js.map +0 -1
- package/dist/src/config.js +0 -135
- package/dist/src/config.js.map +0 -1
- package/dist/src/connectors/github/backfill.js +0 -281
- package/dist/src/connectors/github/backfill.js.map +0 -1
- package/dist/src/connectors/github/cli-impl.js +0 -234
- package/dist/src/connectors/github/cli-impl.js.map +0 -1
- package/dist/src/connectors/github/deletion.js +0 -85
- package/dist/src/connectors/github/deletion.js.map +0 -1
- package/dist/src/connectors/github/dlq.js +0 -190
- package/dist/src/connectors/github/dlq.js.map +0 -1
- package/dist/src/connectors/github/idempotency.js +0 -27
- package/dist/src/connectors/github/idempotency.js.map +0 -1
- package/dist/src/connectors/github/ingest.js +0 -156
- package/dist/src/connectors/github/ingest.js.map +0 -1
- package/dist/src/connectors/github/octokit-client.js +0 -70
- package/dist/src/connectors/github/octokit-client.js.map +0 -1
- package/dist/src/connectors/github/ratelimit.js +0 -31
- package/dist/src/connectors/github/ratelimit.js.map +0 -1
- package/dist/src/connectors/github/scope.js +0 -13
- package/dist/src/connectors/github/scope.js.map +0 -1
- package/dist/src/connectors/github/signature.js +0 -81
- package/dist/src/connectors/github/signature.js.map +0 -1
- package/dist/src/connectors/github/tenant-routing.js +0 -69
- package/dist/src/connectors/github/tenant-routing.js.map +0 -1
- package/dist/src/connectors/github/transform.js +0 -103
- package/dist/src/connectors/github/transform.js.map +0 -1
- package/dist/src/connectors/github/types.js +0 -100
- package/dist/src/connectors/github/types.js.map +0 -1
- package/dist/src/connectors/slack/backfill.js +0 -78
- package/dist/src/connectors/slack/backfill.js.map +0 -1
- package/dist/src/connectors/slack/deletion.js +0 -59
- package/dist/src/connectors/slack/deletion.js.map +0 -1
- package/dist/src/connectors/slack/dlq.js +0 -224
- package/dist/src/connectors/slack/dlq.js.map +0 -1
- package/dist/src/connectors/slack/idempotency.js +0 -31
- package/dist/src/connectors/slack/idempotency.js.map +0 -1
- package/dist/src/connectors/slack/ingest.js +0 -109
- package/dist/src/connectors/slack/ingest.js.map +0 -1
- package/dist/src/connectors/slack/ratelimit.js +0 -18
- package/dist/src/connectors/slack/ratelimit.js.map +0 -1
- package/dist/src/connectors/slack/scope.js +0 -13
- package/dist/src/connectors/slack/scope.js.map +0 -1
- package/dist/src/connectors/slack/signature.js +0 -27
- package/dist/src/connectors/slack/signature.js.map +0 -1
- package/dist/src/connectors/slack/tenant-routing.js +0 -41
- package/dist/src/connectors/slack/tenant-routing.js.map +0 -1
- package/dist/src/connectors/slack/transform.js +0 -47
- package/dist/src/connectors/slack/transform.js.map +0 -1
- package/dist/src/connectors/slack/types.js +0 -35
- package/dist/src/connectors/slack/types.js.map +0 -1
- package/dist/src/connectors/slack/web-client.js +0 -43
- package/dist/src/connectors/slack/web-client.js.map +0 -1
- package/dist/src/connectors/slack/workspaces.js +0 -62
- package/dist/src/connectors/slack/workspaces.js.map +0 -1
- package/dist/src/consolidate.js +0 -978
- package/dist/src/consolidate.js.map +0 -1
- package/dist/src/correction-latency.js +0 -74
- package/dist/src/correction-latency.js.map +0 -1
- package/dist/src/customer-notes.js +0 -325
- package/dist/src/customer-notes.js.map +0 -1
- package/dist/src/dag.js +0 -352
- package/dist/src/dag.js.map +0 -1
- package/dist/src/dashboard.js +0 -258
- package/dist/src/dashboard.js.map +0 -1
- package/dist/src/db.js +0 -2731
- package/dist/src/db.js.map +0 -1
- package/dist/src/decisions.js +0 -304
- package/dist/src/decisions.js.map +0 -1
- package/dist/src/dedupe.js +0 -141
- package/dist/src/dedupe.js.map +0 -1
- package/dist/src/embedding-provider.js +0 -314
- package/dist/src/embedding-provider.js.map +0 -1
- package/dist/src/embeddings.js +0 -543
- package/dist/src/embeddings.js.map +0 -1
- package/dist/src/eval-suite.js +0 -294
- package/dist/src/eval-suite.js.map +0 -1
- package/dist/src/eval.js +0 -187
- package/dist/src/eval.js.map +0 -1
- package/dist/src/extract.js +0 -117
- package/dist/src/extract.js.map +0 -1
- package/dist/src/forward-claim-detector.js +0 -117
- package/dist/src/forward-claim-detector.js.map +0 -1
- package/dist/src/goals.js +0 -399
- package/dist/src/goals.js.map +0 -1
- package/dist/src/graph-extract.js +0 -314
- package/dist/src/graph-extract.js.map +0 -1
- package/dist/src/graph-recall.js +0 -277
- package/dist/src/graph-recall.js.map +0 -1
- package/dist/src/graph-stream.js +0 -176
- package/dist/src/graph-stream.js.map +0 -1
- package/dist/src/graph-view.js +0 -310
- package/dist/src/graph-view.js.map +0 -1
- package/dist/src/graph.js +0 -762
- package/dist/src/graph.js.map +0 -1
- package/dist/src/handoff.js +0 -65
- package/dist/src/handoff.js.map +0 -1
- package/dist/src/hooks.js +0 -926
- package/dist/src/hooks.js.map +0 -1
- package/dist/src/importers.js +0 -881
- package/dist/src/importers.js.map +0 -1
- package/dist/src/incidents.js +0 -336
- package/dist/src/incidents.js.map +0 -1
- package/dist/src/index.js +0 -32
- package/dist/src/index.js.map +0 -1
- package/dist/src/invalidation.js +0 -129
- package/dist/src/invalidation.js.map +0 -1
- package/dist/src/mcp/framing.js +0 -45
- package/dist/src/mcp/framing.js.map +0 -1
- package/dist/src/mcp/server.js +0 -1298
- package/dist/src/mcp/server.js.map +0 -1
- package/dist/src/memory-value-weights.js +0 -31
- package/dist/src/memory-value-weights.js.map +0 -1
- package/dist/src/memory-value.js +0 -261
- package/dist/src/memory-value.js.map +0 -1
- package/dist/src/memory.js +0 -425
- package/dist/src/memory.js.map +0 -1
- package/dist/src/multihop.js +0 -35
- package/dist/src/multihop.js.map +0 -1
- package/dist/src/owner-validation.js +0 -56
- package/dist/src/owner-validation.js.map +0 -1
- package/dist/src/path-context.js +0 -48
- package/dist/src/path-context.js.map +0 -1
- package/dist/src/physics-config.js +0 -26
- package/dist/src/physics-config.js.map +0 -1
- package/dist/src/physics-state.js +0 -172
- package/dist/src/physics-state.js.map +0 -1
- package/dist/src/physics.js +0 -378
- package/dist/src/physics.js.map +0 -1
- package/dist/src/policies.js +0 -414
- package/dist/src/policies.js.map +0 -1
- package/dist/src/postinstall.js +0 -101
- package/dist/src/postinstall.js.map +0 -1
- package/dist/src/predictions.js +0 -629
- package/dist/src/predictions.js.map +0 -1
- package/dist/src/processes.js +0 -349
- package/dist/src/processes.js.map +0 -1
- package/dist/src/project-briefs.js +0 -492
- package/dist/src/project-briefs.js.map +0 -1
- package/dist/src/project-identity.js +0 -200
- package/dist/src/project-identity.js.map +0 -1
- package/dist/src/provenance-coverage.js +0 -23
- package/dist/src/provenance-coverage.js.map +0 -1
- package/dist/src/rate-limit.js +0 -60
- package/dist/src/rate-limit.js.map +0 -1
- package/dist/src/raw-archive-mirror-cleanup.js +0 -55
- package/dist/src/raw-archive-mirror-cleanup.js.map +0 -1
- package/dist/src/raw-archive.js +0 -91
- package/dist/src/raw-archive.js.map +0 -1
- package/dist/src/recall-history.js +0 -235
- package/dist/src/recall-history.js.map +0 -1
- package/dist/src/recall-scope.js +0 -89
- package/dist/src/recall-scope.js.map +0 -1
- package/dist/src/recall-trace.js +0 -186
- package/dist/src/recall-trace.js.map +0 -1
- package/dist/src/refine-llm.js +0 -156
- package/dist/src/refine-llm.js.map +0 -1
- package/dist/src/reject-flow.js +0 -209
- package/dist/src/reject-flow.js.map +0 -1
- package/dist/src/rejection.js +0 -160
- package/dist/src/rejection.js.map +0 -1
- package/dist/src/replay.js +0 -122
- package/dist/src/replay.js.map +0 -1
- package/dist/src/rerankers/cross-encoder.js +0 -137
- package/dist/src/rerankers/cross-encoder.js.map +0 -1
- package/dist/src/rerankers/index.js +0 -20
- package/dist/src/rerankers/index.js.map +0 -1
- package/dist/src/rerankers/jev.js +0 -119
- package/dist/src/rerankers/jev.js.map +0 -1
- package/dist/src/rerankers/llm.js +0 -80
- package/dist/src/rerankers/llm.js.map +0 -1
- package/dist/src/rerankers/types.js +0 -2
- package/dist/src/rerankers/types.js.map +0 -1
- package/dist/src/rrf.js +0 -61
- package/dist/src/rrf.js.map +0 -1
- package/dist/src/salience.js +0 -74
- package/dist/src/salience.js.map +0 -1
- package/dist/src/scheduler.js +0 -77
- package/dist/src/scheduler.js.map +0 -1
- package/dist/src/scope.js +0 -35
- package/dist/src/scope.js.map +0 -1
- package/dist/src/search.js +0 -1003
- package/dist/src/search.js.map +0 -1
- package/dist/src/secret-detect.js +0 -95
- package/dist/src/secret-detect.js.map +0 -1
- package/dist/src/server-detect.js +0 -231
- package/dist/src/server-detect.js.map +0 -1
- package/dist/src/server.js +0 -3255
- package/dist/src/server.js.map +0 -1
- package/dist/src/shared.js +0 -502
- package/dist/src/shared.js.map +0 -1
- package/dist/src/skills.js +0 -346
- package/dist/src/skills.js.map +0 -1
- package/dist/src/sleep-redact.js +0 -80
- package/dist/src/sleep-redact.js.map +0 -1
- package/dist/src/sso.js +0 -22
- package/dist/src/sso.js.map +0 -1
- package/dist/src/stdin.js +0 -41
- package/dist/src/stdin.js.map +0 -1
- package/dist/src/store.js +0 -3749
- package/dist/src/store.js.map +0 -1
- package/dist/src/tenant.js +0 -17
- package/dist/src/tenant.js.map +0 -1
- package/dist/src/trace.js +0 -72
- package/dist/src/trace.js.map +0 -1
- package/dist/src/version.js +0 -40
- package/dist/src/version.js.map +0 -1
- package/dist/src/working-memory.js +0 -157
- package/dist/src/working-memory.js.map +0 -1
- package/dist/src/yaml.js +0 -107
- package/dist/src/yaml.js.map +0 -1
- package/dist/sso.d.ts +0 -13
- package/dist/sso.d.ts.map +0 -1
- package/dist/sso.js +0 -22
- package/dist/sso.js.map +0 -1
- package/dist/stdin.d.ts.map +0 -1
- package/dist/stdin.js.map +0 -1
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js.map +0 -1
- package/dist/tenant.d.ts.map +0 -1
- package/dist/tenant.js.map +0 -1
- package/dist/trace.d.ts.map +0 -1
- package/dist/trace.js.map +0 -1
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js.map +0 -1
- package/dist/working-memory.d.ts.map +0 -1
- package/dist/working-memory.js.map +0 -1
- package/dist/yaml.d.ts.map +0 -1
- package/dist/yaml.js.map +0 -1
package/dist/src/replay.js
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Replay — biologically-inspired rehearsal during consolidation.
|
|
3
|
-
*
|
|
4
|
-
* Hippocampal replay is internally-driven reactivation of memories during
|
|
5
|
-
* slow-wave sleep: the brain picks important recent experiences and "plays
|
|
6
|
-
* them back" without external input, strengthening them before they decay.
|
|
7
|
-
* In McClelland's complementary-learning-systems framing, replay is also
|
|
8
|
-
* how episodic memories train the neocortex (interleaved rehearsal); in
|
|
9
|
-
* reward-modulated STDP, replay is gated by dopamine so rewarded
|
|
10
|
-
* experiences get preferentially consolidated.
|
|
11
|
-
*
|
|
12
|
-
* This module implements a lightweight, deterministic analog. During each
|
|
13
|
-
* `hippo sleep`, we sample N surviving memories by a priority score that
|
|
14
|
-
* weighs reward feedback, emotional valence, under-rehearsal, and age —
|
|
15
|
-
* then apply the same retrieval-strengthening dynamics `markRetrieved`
|
|
16
|
-
* applies to real queries. The effect is that important memories stay
|
|
17
|
-
* strong even when the user hasn't explicitly queried them recently.
|
|
18
|
-
*
|
|
19
|
-
* Distinct from the other consolidation passes:
|
|
20
|
-
* - decay: removes what's too weak
|
|
21
|
-
* - physics: moves particles in embedding space
|
|
22
|
-
* - merge: collapses near-duplicate episodics into semantics
|
|
23
|
-
* - REPLAY: picks winners and rehearses them (this file)
|
|
24
|
-
*/
|
|
25
|
-
import { isOutcomeSlowAblated } from './ablation.js';
|
|
26
|
-
import { resolveConfidence } from './memory.js';
|
|
27
|
-
const VALENCE_WEIGHT = {
|
|
28
|
-
neutral: 1.0,
|
|
29
|
-
positive: 1.3,
|
|
30
|
-
negative: 1.5,
|
|
31
|
-
critical: 2.0,
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* Priority score used to rank survivors for replay. Higher = more likely
|
|
35
|
-
* to be sampled. Pure function of the entry and current time.
|
|
36
|
-
*/
|
|
37
|
-
export function replayPriority(entry, now) {
|
|
38
|
-
const pos = entry.outcome_positive ?? 0;
|
|
39
|
-
const neg = entry.outcome_negative ?? 0;
|
|
40
|
-
// Reward signal: neutral memories get 1, strongly-rewarded memories > 1,
|
|
41
|
-
// negative-dominated memories floor at 0.1 (so they're still eligible, just
|
|
42
|
-
// much less likely to be sampled than neutral peers). Clamp is required
|
|
43
|
-
// because sampleForReplay depends on all weights being positive.
|
|
44
|
-
const rewardSignal = isOutcomeSlowAblated()
|
|
45
|
-
? 1.0 // EVAL-ONLY ablation (see ablation.ts): outcome-off also silences replay's reward bias
|
|
46
|
-
: Math.max(0.1, 1 + pos * 0.5 + (pos - neg) * 0.25);
|
|
47
|
-
const valence = VALENCE_WEIGHT[entry.emotional_valence] ?? 1.0;
|
|
48
|
-
// Under-rehearsed memories benefit most from replay.
|
|
49
|
-
const underRehearsed = 1 / (1 + (entry.retrieval_count ?? 0));
|
|
50
|
-
// Idle-time boost: memories that haven't been touched recently need rehearsal more.
|
|
51
|
-
const lastRetrieved = new Date(entry.last_retrieved);
|
|
52
|
-
const deltaMs = now.getTime() - lastRetrieved.getTime();
|
|
53
|
-
const ageHours = Number.isFinite(deltaMs) ? Math.max(0, deltaMs / 3_600_000) : 0;
|
|
54
|
-
const idleBoost = 1 + Math.log1p(ageHours) * 0.1;
|
|
55
|
-
// Weight by current strength so dead-and-decaying memories don't waste replay slots.
|
|
56
|
-
const rawStrength = Number.isFinite(entry.strength) ? entry.strength : 0;
|
|
57
|
-
const strengthFloor = Math.max(0.1, rawStrength);
|
|
58
|
-
return rewardSignal * valence * underRehearsed * idleBoost * strengthFloor;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Deterministic 32-bit RNG (Mulberry32). Same seed → same sequence.
|
|
62
|
-
* Keeps replay reproducible for tests and audit runs without bringing
|
|
63
|
-
* in a random-number dependency.
|
|
64
|
-
*/
|
|
65
|
-
function mulberry32(seed) {
|
|
66
|
-
let s = seed >>> 0;
|
|
67
|
-
return () => {
|
|
68
|
-
let t = (s += 0x6D2B79F5);
|
|
69
|
-
t = Math.imul(t ^ (t >>> 15), t | 1);
|
|
70
|
-
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
|
|
71
|
-
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Pick `count` memories for replay, weighted by `replayPriority`, without
|
|
76
|
-
* replacement. Deterministic given the same seed.
|
|
77
|
-
*
|
|
78
|
-
* The sampler is weighted but not greedy — picking by priority alone would
|
|
79
|
-
* always pick the top-N, which overfits. Biological replay shows both
|
|
80
|
-
* preferential-for-reward AND stochastic-exploration characteristics; we
|
|
81
|
-
* keep the stochastic element so adjacent survivors aren't always ignored.
|
|
82
|
-
*/
|
|
83
|
-
export function sampleForReplay(survivors, count, now, seed = Date.now() >>> 0) {
|
|
84
|
-
if (count <= 0 || survivors.length === 0)
|
|
85
|
-
return [];
|
|
86
|
-
const rng = mulberry32(seed);
|
|
87
|
-
// Deliberately-marked and aged-out memories are both untrusted; rehearsing
|
|
88
|
-
// them would defeat the purpose of staleness, so derive rather than trust
|
|
89
|
-
// the stored value (it no longer carries the age-out case, see memory.ts).
|
|
90
|
-
const eligible = survivors.filter((e) => resolveConfidence(e, now) !== 'stale');
|
|
91
|
-
if (eligible.length === 0)
|
|
92
|
-
return [];
|
|
93
|
-
const pool = eligible.map((entry, idx) => ({
|
|
94
|
-
entry,
|
|
95
|
-
idx,
|
|
96
|
-
weight: replayPriority(entry, now),
|
|
97
|
-
}));
|
|
98
|
-
const want = Math.min(count, pool.length);
|
|
99
|
-
const chosen = [];
|
|
100
|
-
const taken = new Set();
|
|
101
|
-
for (let k = 0; k < want; k++) {
|
|
102
|
-
let totalW = 0;
|
|
103
|
-
for (const p of pool)
|
|
104
|
-
if (!taken.has(p.idx))
|
|
105
|
-
totalW += p.weight;
|
|
106
|
-
if (totalW <= 0)
|
|
107
|
-
break;
|
|
108
|
-
let r = rng() * totalW;
|
|
109
|
-
for (const p of pool) {
|
|
110
|
-
if (taken.has(p.idx))
|
|
111
|
-
continue;
|
|
112
|
-
r -= p.weight;
|
|
113
|
-
if (r <= 0) {
|
|
114
|
-
chosen.push(p.entry);
|
|
115
|
-
taken.add(p.idx);
|
|
116
|
-
break;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return chosen;
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=replay.js.map
|
package/dist/src/replay.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';
|
|
2
|
-
import { pathToFileURL } from 'node:url';
|
|
3
|
-
const MODEL_NAME = 'Xenova/ms-marco-MiniLM-L-6-v2';
|
|
4
|
-
const _require = createRequire(import.meta.url);
|
|
5
|
-
const TRANSFORMERS_PACKAGES = ['@huggingface/transformers', '@xenova/transformers'];
|
|
6
|
-
// Returns the ESM entry URL, the same build src/embeddings.ts imports. A
|
|
7
|
-
// require-style resolve picks the CommonJS build and puts a second copy of
|
|
8
|
-
// the library, with its own ONNX sessions, in the process.
|
|
9
|
-
function resolveTransformersPackage() {
|
|
10
|
-
for (const name of TRANSFORMERS_PACKAGES) {
|
|
11
|
-
try {
|
|
12
|
-
return import.meta.resolve(name);
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
// import.meta.resolve is missing under some module runners (vitest's
|
|
16
|
-
// included); fall through to the require-based resolve there.
|
|
17
|
-
try {
|
|
18
|
-
return pathToFileURL(_require.resolve(name)).href;
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
// Try the legacy fallback only when the preferred package is not installed.
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
async function loadTransformersModule() {
|
|
28
|
-
// Import one backend only. Loading both native ONNX runtimes in one process
|
|
29
|
-
// can abort during finalization; Hugging Face is the maintained default.
|
|
30
|
-
const url = resolveTransformersPackage();
|
|
31
|
-
if (!url)
|
|
32
|
-
return null;
|
|
33
|
-
try {
|
|
34
|
-
const mod = await import(/* @vite-ignore */ url);
|
|
35
|
-
const tok = mod.AutoTokenizer ?? mod.default?.AutoTokenizer;
|
|
36
|
-
const seq = mod.AutoModelForSequenceClassification ?? mod.default?.AutoModelForSequenceClassification;
|
|
37
|
-
return tok && seq ? { AutoTokenizer: tok, AutoModelForSequenceClassification: seq } : null;
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
let pipelineLoading = null;
|
|
44
|
-
let warnedOnFallback = false;
|
|
45
|
-
/**
|
|
46
|
-
* True if a Transformers.js backend is importable. Note: this does NOT confirm
|
|
47
|
-
* that the model is downloadable from Hugging Face CDN — in sandboxed
|
|
48
|
-
* environments the package may import but the model fetch may be blocked.
|
|
49
|
-
* The reranker silently falls back to identity ordering in that case.
|
|
50
|
-
*/
|
|
51
|
-
export async function isCrossEncoderAvailable() {
|
|
52
|
-
return (await loadTransformersModule()) !== null;
|
|
53
|
-
}
|
|
54
|
-
// NOT the text-classification pipeline: this model is a num_labels=1
|
|
55
|
-
// regression head, and that pipeline softmaxes a length-1 logit vector, which
|
|
56
|
-
// is identically 1.0 for every input. Read the logit, then squash it.
|
|
57
|
-
async function buildPipeline() {
|
|
58
|
-
try {
|
|
59
|
-
const mod = await loadTransformersModule();
|
|
60
|
-
if (!mod)
|
|
61
|
-
return null;
|
|
62
|
-
const [tokenizer, model] = await Promise.all([
|
|
63
|
-
mod.AutoTokenizer.from_pretrained(MODEL_NAME),
|
|
64
|
-
mod.AutoModelForSequenceClassification.from_pretrained(MODEL_NAME),
|
|
65
|
-
]);
|
|
66
|
-
return async (query, candidate) => {
|
|
67
|
-
const inputs = await tokenizer(query, {
|
|
68
|
-
text_pair: candidate,
|
|
69
|
-
padding: true,
|
|
70
|
-
truncation: true,
|
|
71
|
-
});
|
|
72
|
-
const { logits } = await model(inputs);
|
|
73
|
-
const score = 1 / (1 + Math.exp(-Number(logits.data[0])));
|
|
74
|
-
// NaN would make the sort comparator a no-op; throwing hands this
|
|
75
|
-
// candidate to the per-candidate fallback instead.
|
|
76
|
-
if (!Number.isFinite(score))
|
|
77
|
-
throw new Error('cross-encoder returned a non-finite score');
|
|
78
|
-
return score;
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
// One shared in-flight load: two first calls must not fetch the model twice.
|
|
86
|
-
// A failed load clears the slot so a later call can try again.
|
|
87
|
-
function loadPipeline() {
|
|
88
|
-
pipelineLoading ??= buildPipeline().then((pipe) => {
|
|
89
|
-
if (!pipe)
|
|
90
|
-
pipelineLoading = null;
|
|
91
|
-
return pipe;
|
|
92
|
-
});
|
|
93
|
-
return pipelineLoading;
|
|
94
|
-
}
|
|
95
|
-
/** Track 2 reranker: MS-MARCO MiniLM cross-encoder, identity fallback if the model will not load. */
|
|
96
|
-
export const crossEncoderReranker = async (query, results, options) => {
|
|
97
|
-
const topK = options?.topK ?? 50;
|
|
98
|
-
const head = results.slice(0, topK);
|
|
99
|
-
const pipe = await loadPipeline();
|
|
100
|
-
if (!pipe) {
|
|
101
|
-
// Warn once per process: a silent identity fallback otherwise reads as a
|
|
102
|
-
// working reranker.
|
|
103
|
-
if (!warnedOnFallback) {
|
|
104
|
-
warnedOnFallback = true;
|
|
105
|
-
// eslint-disable-next-line no-console
|
|
106
|
-
console.warn('[hippo] cross-encoder reranker unavailable (no Transformers.js backend, or model fetch blocked); falling back to identity ordering. Subsequent calls will not repeat this warning.');
|
|
107
|
-
}
|
|
108
|
-
return head.map((r, i) => ({
|
|
109
|
-
...r,
|
|
110
|
-
rerankScore: r.score,
|
|
111
|
-
preRerankRank: r.preRerankRank ?? i + 1,
|
|
112
|
-
postRerankRank: i + 1,
|
|
113
|
-
}));
|
|
114
|
-
}
|
|
115
|
-
const scored = await Promise.all(head.map(async (r, i) => {
|
|
116
|
-
let ceScore;
|
|
117
|
-
try {
|
|
118
|
-
ceScore = await pipe(query, r.entry.content);
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
// One bad inference must not sink the whole pass.
|
|
122
|
-
ceScore = r.score;
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
...r,
|
|
126
|
-
rerankScore: ceScore,
|
|
127
|
-
preRerankRank: r.preRerankRank ?? i + 1,
|
|
128
|
-
postRerankRank: 0,
|
|
129
|
-
};
|
|
130
|
-
}));
|
|
131
|
-
// Plain stable sort on purpose: tied scores MUST fall back to the prior
|
|
132
|
-
// relevance order, never an arbitrary content order.
|
|
133
|
-
scored.sort((a, b) => b.rerankScore - a.rerankScore);
|
|
134
|
-
scored.forEach((r, i) => (r.postRerankRank = i + 1));
|
|
135
|
-
return scored;
|
|
136
|
-
};
|
|
137
|
-
//# sourceMappingURL=cross-encoder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cross-encoder.js","sourceRoot":"","sources":["../../../src/rerankers/cross-encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { crossEncoderReranker } from './cross-encoder.js';
|
|
2
|
-
import { jevReranker } from './jev.js';
|
|
3
|
-
import { llmReranker } from './llm.js';
|
|
4
|
-
const REGISTRY = {
|
|
5
|
-
'cross-encoder': crossEncoderReranker,
|
|
6
|
-
jev: jevReranker,
|
|
7
|
-
llm: llmReranker,
|
|
8
|
-
};
|
|
9
|
-
function isRegisteredRerankerName(name) {
|
|
10
|
-
return Object.hasOwn(REGISTRY, name);
|
|
11
|
-
}
|
|
12
|
-
export function getReranker(name) {
|
|
13
|
-
if (!name)
|
|
14
|
-
return null;
|
|
15
|
-
if (!isRegisteredRerankerName(name)) {
|
|
16
|
-
throw new Error(`Unknown reranker: ${name}. Available: ${Object.keys(REGISTRY).join(', ')}`);
|
|
17
|
-
}
|
|
18
|
-
return REGISTRY[name];
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rerankers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,QAAQ,GAAG;IACf,eAAe,EAAE,oBAAoB;IACrC,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;CACoB,CAAC;AAIvC,SAAS,wBAAwB,CAAC,IAAY;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAA+B;IACzD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,gBAAgB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { crossEncoderReranker } from './cross-encoder.js';
|
|
2
|
-
const ENDPOINT = 'https://api.typesafe.ai/v1/systemone';
|
|
3
|
-
const DEFAULT_TIMEOUT_MS = 5_000;
|
|
4
|
-
const TRUNCATE_CHARS = 1200;
|
|
5
|
-
// Pinned, not `jev-latest`: every number in docs/evals/2026-09-19-jev-reranker.md was
|
|
6
|
-
// measured on this version, and the alias moves whenever the vendor ships a release.
|
|
7
|
-
const DEFAULT_MODEL = 'jev-1.13.0';
|
|
8
|
-
// The pool size every number in docs/evals/2026-09-19-jev-reranker.md was measured at.
|
|
9
|
-
export const JEV_DEFAULT_TOP_K = 40;
|
|
10
|
-
function truncate(s, n) {
|
|
11
|
-
return s.length <= n ? s : `${s.slice(0, n)}...`;
|
|
12
|
-
}
|
|
13
|
-
// Number.isFinite rejects a string or null without coercing it, which the
|
|
14
|
-
// declared type cannot promise about a third-party payload.
|
|
15
|
-
function isProbability(v) {
|
|
16
|
-
return v !== undefined && Number.isFinite(v) && v >= 0 && v <= 1;
|
|
17
|
-
}
|
|
18
|
-
// A half-scored list ranks worse than the order it would replace, so one bad
|
|
19
|
-
// answer voids the whole response.
|
|
20
|
-
function parseScores(answers, n) {
|
|
21
|
-
const out = [];
|
|
22
|
-
for (let i = 1; i <= n; i++) {
|
|
23
|
-
const v = answers?.[`c${i}`]?.noul;
|
|
24
|
-
if (!isProbability(v))
|
|
25
|
-
return null;
|
|
26
|
-
out.push(v);
|
|
27
|
-
}
|
|
28
|
-
return out;
|
|
29
|
-
}
|
|
30
|
-
/** One batched request for the whole candidate list. Rejects with the reason when there are no usable scores. */
|
|
31
|
-
async function requestScores(query, head) {
|
|
32
|
-
const key = process.env.TYPESAFE_API_KEY;
|
|
33
|
-
if (!key)
|
|
34
|
-
throw new Error('TYPESAFE_API_KEY not set');
|
|
35
|
-
const lines = head.map((r, i) => `[${i + 1}] ${truncate(r.entry.content, TRUNCATE_CHARS)}`);
|
|
36
|
-
const state = `Query: ${query}\n\nNumbered candidate memories from an AI coding agent's project store:\n\n${lines.join('\n\n')}`;
|
|
37
|
-
const questions = {};
|
|
38
|
-
for (let i = 1; i <= head.length; i++) {
|
|
39
|
-
questions[`c${i}`] = {
|
|
40
|
-
type: 'noul',
|
|
41
|
-
instructions: `Probability that candidate ${i} (numbered in the state above) helps answer the query.`,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
const parsed = Number.parseInt(process.env.HIPPO_JEV_TIMEOUT_MS ?? '', 10);
|
|
45
|
-
const timeoutMs = parsed > 0 ? parsed : DEFAULT_TIMEOUT_MS;
|
|
46
|
-
const controller = new AbortController();
|
|
47
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
48
|
-
try {
|
|
49
|
-
const resp = await fetch(ENDPOINT, {
|
|
50
|
-
method: 'POST',
|
|
51
|
-
headers: { 'content-type': 'application/json', authorization: `Bearer ${key}` },
|
|
52
|
-
body: JSON.stringify({
|
|
53
|
-
state,
|
|
54
|
-
model: process.env.HIPPO_JEV_MODEL ?? DEFAULT_MODEL,
|
|
55
|
-
questions,
|
|
56
|
-
}),
|
|
57
|
-
signal: controller.signal,
|
|
58
|
-
});
|
|
59
|
-
if (!resp.ok) {
|
|
60
|
-
// A third-party header ends up on stderr, so keep printable ASCII only.
|
|
61
|
-
const requestId = resp.headers.get('x-request-id')?.replace(/[^\x20-\x7e]/g, '').slice(0, 64);
|
|
62
|
-
await resp.body?.cancel();
|
|
63
|
-
throw new Error(`HTTP ${resp.status}${requestId ? `, request ${requestId}` : ''}`);
|
|
64
|
-
}
|
|
65
|
-
const body = await resp.json();
|
|
66
|
-
const scores = parseScores(body.answers, head.length);
|
|
67
|
-
if (!scores)
|
|
68
|
-
throw new Error('incomplete or out-of-range answers');
|
|
69
|
-
return scores;
|
|
70
|
-
}
|
|
71
|
-
catch (err) {
|
|
72
|
-
if (err instanceof Error && err.name === 'AbortError') {
|
|
73
|
-
throw new Error(`no answer within ${timeoutMs} ms`);
|
|
74
|
-
}
|
|
75
|
-
throw err;
|
|
76
|
-
}
|
|
77
|
-
finally {
|
|
78
|
-
clearTimeout(timer);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/** Builds a Jev reranker around the reranker it degrades to. Exported so a test can pass a stand-in. */
|
|
82
|
-
export function createJevReranker(localFallback) {
|
|
83
|
-
let warned = false;
|
|
84
|
-
return async (query, results, options) => {
|
|
85
|
-
const head = results.slice(0, options?.topK ?? JEV_DEFAULT_TOP_K);
|
|
86
|
-
if (head.length === 0)
|
|
87
|
-
return [];
|
|
88
|
-
let scores;
|
|
89
|
-
try {
|
|
90
|
-
scores = await requestScores(query, head);
|
|
91
|
-
}
|
|
92
|
-
catch (err) {
|
|
93
|
-
// A read path never throws, and never hands back the unranked order
|
|
94
|
-
// without saying so: warn once, then use the free local reranker.
|
|
95
|
-
if (!warned) {
|
|
96
|
-
warned = true;
|
|
97
|
-
const reason = err instanceof Error ? err.message : 'unknown error';
|
|
98
|
-
// eslint-disable-next-line no-console
|
|
99
|
-
console.warn(`[hippo] jev reranker unavailable (${reason}); falling back to the local cross-encoder. Subsequent calls will not repeat this warning.`);
|
|
100
|
-
}
|
|
101
|
-
return localFallback(query, head, options);
|
|
102
|
-
}
|
|
103
|
-
const scored = head.map((r, i) => ({
|
|
104
|
-
...r,
|
|
105
|
-
rerankScore: scores[i],
|
|
106
|
-
preRerankRank: r.preRerankRank ?? i + 1,
|
|
107
|
-
postRerankRank: 0,
|
|
108
|
-
}));
|
|
109
|
-
// Stable sort: ties fall back to the prior relevance order.
|
|
110
|
-
scored.sort((a, b) => b.rerankScore - a.rerankScore);
|
|
111
|
-
scored.forEach((r, i) => (r.postRerankRank = i + 1));
|
|
112
|
-
return scored;
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
/** Track 4 reranker: hosted TypeSafe Jev, opt-in and paid (TYPESAFE_API_KEY), one batched call per recall.
|
|
116
|
-
* Any failure warns once and delegates to the local cross-encoder. Scores are not bit-stable run to run.
|
|
117
|
-
* Cost, env vars, evidence and limits: docs/evals/2026-09-19-jev-reranker.md. */
|
|
118
|
-
export const jevReranker = createJevReranker(crossEncoderReranker);
|
|
119
|
-
//# sourceMappingURL=jev.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jev.js","sourceRoot":"","sources":["../../../src/rerankers/jev.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
2
|
-
/**
|
|
3
|
-
* Track 3 reranker: listwise LLM rerank. Uses a customer-supplied
|
|
4
|
-
* OpenAI-compatible endpoint. Gated on HIPPO_LLM_RERANKER_URL to prevent
|
|
5
|
-
* accidental cost.
|
|
6
|
-
*
|
|
7
|
-
* Skeleton only — see docs/plans/2026-05-10-f6-reranker-hardening.md Task 8.
|
|
8
|
-
* Full characterisation deferred to a follow-on plan.
|
|
9
|
-
*
|
|
10
|
-
* Timeout: defaults to 30s; overridable via HIPPO_LLM_RERANKER_TIMEOUT_MS.
|
|
11
|
-
* On timeout or any fetch failure, the reranker silently falls back to
|
|
12
|
-
* identity ordering — recall must not hang on a wedged endpoint.
|
|
13
|
-
*/
|
|
14
|
-
export const llmReranker = async (query, results, options) => {
|
|
15
|
-
const url = process.env.HIPPO_LLM_RERANKER_URL;
|
|
16
|
-
const key = process.env.HIPPO_LLM_RERANKER_KEY;
|
|
17
|
-
if (!url) {
|
|
18
|
-
throw new Error('HIPPO_LLM_RERANKER_URL not set; refusing to run LLM reranker.');
|
|
19
|
-
}
|
|
20
|
-
const topK = options?.topK ?? 20;
|
|
21
|
-
const head = results.slice(0, topK);
|
|
22
|
-
const prompt = [
|
|
23
|
-
`Rerank the candidates below by relevance to the query. Output a JSON array of indices (zero-indexed) in best-first order.`,
|
|
24
|
-
`Query: ${query}`,
|
|
25
|
-
...head.map((r, i) => `[${i}] ${r.entry.content}`),
|
|
26
|
-
`Output format: [<int>, <int>, ...] with all ${head.length} indices.`,
|
|
27
|
-
].join('\n');
|
|
28
|
-
const timeoutMs = Number.parseInt(process.env.HIPPO_LLM_RERANKER_TIMEOUT_MS ?? '', 10) || DEFAULT_TIMEOUT_MS;
|
|
29
|
-
const controller = new AbortController();
|
|
30
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
31
|
-
const headers = {
|
|
32
|
-
'content-type': 'application/json',
|
|
33
|
-
};
|
|
34
|
-
if (key) {
|
|
35
|
-
headers.authorization = `Bearer ${key}`;
|
|
36
|
-
}
|
|
37
|
-
let permutation = null;
|
|
38
|
-
try {
|
|
39
|
-
const resp = await fetch(`${url.replace(/\/$/, '')}/chat/completions`, {
|
|
40
|
-
method: 'POST',
|
|
41
|
-
headers: { ...headers },
|
|
42
|
-
body: JSON.stringify({
|
|
43
|
-
model: process.env.HIPPO_LLM_RERANKER_MODEL ?? 'gpt-4o-mini',
|
|
44
|
-
messages: [{ role: 'user', content: prompt }],
|
|
45
|
-
temperature: 0,
|
|
46
|
-
}),
|
|
47
|
-
signal: controller.signal,
|
|
48
|
-
});
|
|
49
|
-
if (resp.ok) {
|
|
50
|
-
const j = await resp.json();
|
|
51
|
-
const txt = j.choices?.[0]?.message?.content ?? '';
|
|
52
|
-
const m = txt.match(/\[\s*(\d+(?:\s*,\s*\d+)*)\s*\]/);
|
|
53
|
-
if (m) {
|
|
54
|
-
const parsed = m[1].split(',').map((s) => parseInt(s.trim(), 10));
|
|
55
|
-
if (parsed.length === head.length &&
|
|
56
|
-
parsed.every((n) => Number.isInteger(n) && n >= 0 && n < head.length) &&
|
|
57
|
-
new Set(parsed).size === head.length) {
|
|
58
|
-
permutation = parsed;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
// Fall through to identity. Includes AbortError on timeout — see
|
|
65
|
-
// DEFAULT_TIMEOUT_MS / HIPPO_LLM_RERANKER_TIMEOUT_MS above.
|
|
66
|
-
}
|
|
67
|
-
finally {
|
|
68
|
-
clearTimeout(timer);
|
|
69
|
-
}
|
|
70
|
-
const ordered = permutation
|
|
71
|
-
? permutation.map((idx) => head[idx])
|
|
72
|
-
: head;
|
|
73
|
-
return ordered.map((r, i) => ({
|
|
74
|
-
...r,
|
|
75
|
-
rerankScore: ordered.length - i,
|
|
76
|
-
preRerankRank: r.preRerankRank ?? i + 1,
|
|
77
|
-
postRerankRank: i + 1,
|
|
78
|
-
}));
|
|
79
|
-
};
|
|
80
|
-
//# sourceMappingURL=llm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../src/rerankers/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/rerankers/types.ts"],"names":[],"mappings":""}
|
package/dist/src/rrf.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reciprocal Rank Fusion (Cormack, Clarke, and Buettcher 2009).
|
|
3
|
-
*
|
|
4
|
-
* Fuses N ranked candidate lists into a single ordering by summing
|
|
5
|
-
* weighted 1/(k + rank) contributions per candidate. The constant K is
|
|
6
|
-
* the canonical 60 from the original paper and the value already in use
|
|
7
|
-
* across hippo's `hybridSearch` since v1.0. Do NOT tune K without an
|
|
8
|
-
* explicit cross-corpus eval — it is calibrated against IR benchmarks
|
|
9
|
-
* and works robustly across BM25/dense/cross-encoder rank-list shapes.
|
|
10
|
-
*
|
|
11
|
-
* Generic over the candidate id type so this helper can be shared by
|
|
12
|
-
* `src/search.ts::hybridSearch` (T = number, idx into MemoryEntry[]) and
|
|
13
|
-
* the LongMemEval F9 hybrid retrieve benchmark (T = string, session_id).
|
|
14
|
-
*
|
|
15
|
-
* Behaviour MUST stay byte-identical to the inline implementation that
|
|
16
|
-
* lived in `src/search.ts:354-374` before extraction (commit ab6c5eb).
|
|
17
|
-
* The `tests/rrf.test.ts` suite is the contract.
|
|
18
|
-
*/
|
|
19
|
-
export const RRF_K = 60;
|
|
20
|
-
/**
|
|
21
|
-
* Fuse N ranked lists into a single Map of candidate id -> RRF score.
|
|
22
|
-
*
|
|
23
|
-
* @param rankedLists Each inner array is candidates in descending-score order.
|
|
24
|
-
* Element at index 0 is rank 1; index 1 is rank 2; etc.
|
|
25
|
-
* @param weights Per-list weights. weights.length === rankedLists.length.
|
|
26
|
-
* Weights are summed without normalisation — pass {0.5, 0.5}
|
|
27
|
-
* for symmetric fusion or {0.2, 0.8} for asymmetric.
|
|
28
|
-
* @param options Optional k override + absentRank override.
|
|
29
|
-
* @returns Map from candidate id to fused RRF score. Sort descending
|
|
30
|
-
* by value to get the fused ordering.
|
|
31
|
-
*/
|
|
32
|
-
export function rrfFuse(rankedLists, weights, options) {
|
|
33
|
-
if (rankedLists.length !== weights.length) {
|
|
34
|
-
throw new Error(`rrfFuse: rankedLists.length (${rankedLists.length}) must match weights.length (${weights.length})`);
|
|
35
|
-
}
|
|
36
|
-
const k = options?.k ?? RRF_K;
|
|
37
|
-
const defaultAbsentRank = rankedLists.reduce((m, l) => Math.max(m, l.length), 0) + 1;
|
|
38
|
-
const absentRank = options?.absentRank ?? defaultAbsentRank;
|
|
39
|
-
const rankMaps = rankedLists.map((list) => {
|
|
40
|
-
const m = new Map();
|
|
41
|
-
for (let i = 0; i < list.length; i++) {
|
|
42
|
-
m.set(list[i], i + 1); // 1-indexed rank
|
|
43
|
-
}
|
|
44
|
-
return m;
|
|
45
|
-
});
|
|
46
|
-
const allCandidates = new Set();
|
|
47
|
-
for (const list of rankedLists)
|
|
48
|
-
for (const c of list)
|
|
49
|
-
allCandidates.add(c);
|
|
50
|
-
const scores = new Map();
|
|
51
|
-
for (const c of allCandidates) {
|
|
52
|
-
let score = 0;
|
|
53
|
-
for (let i = 0; i < rankMaps.length; i++) {
|
|
54
|
-
const rank = rankMaps[i].get(c) ?? absentRank;
|
|
55
|
-
score += weights[i] / (k + rank);
|
|
56
|
-
}
|
|
57
|
-
scores.set(c, score);
|
|
58
|
-
}
|
|
59
|
-
return scores;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=rrf.js.map
|
package/dist/src/rrf.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rrf.js","sourceRoot":"","sources":["../../src/rrf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;AAaxB;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CACrB,WAA4C,EAC5C,OAA8B,EAC9B,OAAwB;IAExB,IAAI,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,gCAAgC,WAAW,CAAC,MAAM,gCAAgC,OAAO,CAAC,MAAM,GAAG,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC;IAC9B,MAAM,iBAAiB,GACrB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,iBAAiB,CAAC;IAE5D,MAAM,QAAQ,GAA0B,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/D,MAAM,CAAC,GAAG,IAAI,GAAG,EAAa,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB;QAC1C,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAK,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,WAAW;QAAE,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAa,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;YAC9C,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|