hippo-memory 2.0.0 → 2.1.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/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +32 -19
- package/dist/api/prompt-hook.js +65 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +28 -7
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +33 -14
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +45 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +23 -23
- package/dist/cli/auth.js +19 -27
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +4 -4
- package/dist/cli/object-verbs.js +10 -13
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +14 -6
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -5
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -6
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -6
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -6
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -5
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -6
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +24 -14
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +21 -16
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +84 -27
- package/dist/core/memory.js +73 -29
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -3
- package/dist/db/connect.js +8 -3
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +26 -13
- 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 -1
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -4
- package/dist/db/physics-state.js +13 -20
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +19 -5
- package/dist/db/request-stores.js +14 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +19 -6
- package/dist/entry/store-kit.js +6 -4
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +16 -6
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +69 -34
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +8 -7
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +16 -9
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -7
- package/dist/learn/invalidation.js +56 -27
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +18 -14
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +57 -74
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +52 -21
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +9 -6
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +547 -93
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -19
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +75 -36
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +93 -60
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +8 -10
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +3 -1
- package/dist/store/index.js +1 -0
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +215 -229
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +9 -4
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.js +2 -1
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +84 -33
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -11
- package/dist/store/sqlite/store.js +84 -11
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +19 -12
- package/dist/store/summaries.js +36 -21
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +6 -3
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +24 -10
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +16 -4
- package/dist/util/env.js +78 -25
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +11 -3
- package/dist/util/request-scope.js +13 -4
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +3 -1
- package/dist/util/spawn-argv.js +13 -4
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -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 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -11
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -4
- package/dist/store/sqlite/local.js +0 -8
package/dist/search/multihop.js
CHANGED
|
@@ -3,14 +3,7 @@ import { fitBudget } from './finalize.js';
|
|
|
3
3
|
import { search } from './bm25-search.js';
|
|
4
4
|
import { DEFAULT_RECALL_BUDGET } from '../core/search-types.js';
|
|
5
5
|
const PASS1_TOP_K = 10;
|
|
6
|
-
|
|
7
|
-
const budget = options.budget ?? DEFAULT_RECALL_BUDGET;
|
|
8
|
-
// Pass 1 searches wide to find entities, so each return fits the caller's budget, as search() does.
|
|
9
|
-
const fit = (ordered) => fitBudget(ordered, budget, options.minResults ?? 1, options.cost);
|
|
10
|
-
const pass1 = search(query, entries, { ...options, budget: budget * 2 });
|
|
11
|
-
const topK = pass1.slice(0, PASS1_TOP_K);
|
|
12
|
-
if (topK.length === 0)
|
|
13
|
-
return [];
|
|
6
|
+
function newEntitiesOf(topK, query) {
|
|
14
7
|
const entityTags = new Set();
|
|
15
8
|
for (const r of topK) {
|
|
16
9
|
for (const tag of r.entry.tags) {
|
|
@@ -20,9 +13,17 @@ export function multihopSearch(query, entries, options = {}) {
|
|
|
20
13
|
}
|
|
21
14
|
}
|
|
22
15
|
const queryLower = query.toLowerCase();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
return [...entityTags].map((t) => t.split(':')[1]).filter((e) => !queryLower.includes(e.toLowerCase()));
|
|
17
|
+
}
|
|
18
|
+
export function multihopSearch(query, entries, options = {}) {
|
|
19
|
+
const budget = options.budget ?? DEFAULT_RECALL_BUDGET;
|
|
20
|
+
// Pass 1 searches wide to find entities, so each return fits the caller's budget, as search() does.
|
|
21
|
+
const fit = (ordered) => fitBudget(ordered, budget, options.minResults ?? 1, options.cost);
|
|
22
|
+
const pass1 = search(query, entries, { ...options, budget: budget * 2 });
|
|
23
|
+
const topK = pass1.slice(0, PASS1_TOP_K);
|
|
24
|
+
if (topK.length === 0)
|
|
25
|
+
return [];
|
|
26
|
+
const newEntities = newEntitiesOf(topK, query);
|
|
26
27
|
if (newEntities.length === 0)
|
|
27
28
|
return fit(pass1);
|
|
28
29
|
const followUpQuery = newEntities.join(' ') + ' ' + query;
|
|
@@ -34,8 +35,8 @@ export function multihopSearch(query, entries, options = {}) {
|
|
|
34
35
|
merged.set(r.entry.id, r);
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
|
-
// PLAIN stable score sort on purpose: pass1/pass2 inputs are already deterministically ordered (search() carries the
|
|
38
|
-
// stability inherits that, and ties keep pass-1 results ahead of pass-2 follow-ups.
|
|
38
|
+
// PLAIN stable score sort on purpose: pass1/pass2 inputs are already deterministically ordered (search() carries the
|
|
39
|
+
// content tail), stability inherits that, and ties keep pass-1 results ahead of pass-2 follow-ups.
|
|
39
40
|
return fit([...merged.values()].sort((a, b) => compareScoresDesc(a.score, b.score)));
|
|
40
41
|
}
|
|
41
42
|
//# sourceMappingURL=multihop.js.map
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Extracts meaningful path segments from a directory as tags like ['path:src', 'path:my-project']; filters noise
|
|
3
|
+
* (node_modules, .git, Users, home dirs,
|
|
2
4
|
* drive letters). */
|
|
3
5
|
export declare function extractPathTags(dirPath: string): string[];
|
|
4
6
|
/** Path overlap score in 0..1 (1 = perfect match), normalized by the MORE SPECIFIC side (the larger tag set),
|
|
5
|
-
* so a bare/generic path tag cannot score 1.0 against a deeply nested cwd just because its tiny tag set is contained in
|
|
7
|
+
* so a bare/generic path tag cannot score 1.0 against a deeply nested cwd just because its tiny tag set is contained in
|
|
8
|
+
* the query's.
|
|
9
|
+
*/
|
|
6
10
|
export declare function pathOverlapScore(memoryPathTags: string[], currentPathTags: string[]): number;
|
|
7
11
|
/** Weight applied to path overlap score when computing the recall boost multiplier. */
|
|
8
12
|
export declare const PATH_BOOST_WEIGHT = 0.3;
|
|
9
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Multiplier (1.0..1.3) applied to a composite recall score for path locality; filters the memory's tags to path:*
|
|
15
|
+
* itself so call sites cannot drift.
|
|
16
|
+
*/
|
|
10
17
|
export declare function pathBoostMultiplier(memoryTags: string[], currentPathTags: string[]): number;
|
|
11
18
|
//# sourceMappingURL=path-context.d.ts.map
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// Keeps the last meaningful segments, the most specific ones.
|
|
2
2
|
const PATH_SEGMENTS_KEPT = 4;
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Extracts meaningful path segments from a directory as tags like ['path:src', 'path:my-project']; filters noise
|
|
5
|
+
* (node_modules, .git, Users, home dirs,
|
|
4
6
|
* drive letters). */
|
|
5
7
|
export function extractPathTags(dirPath) {
|
|
6
8
|
const normalized = dirPath.replace(/\\/g, '/');
|
|
@@ -17,7 +19,9 @@ export function extractPathTags(dirPath) {
|
|
|
17
19
|
.map(s => `path:${s.toLowerCase()}`);
|
|
18
20
|
}
|
|
19
21
|
/** Path overlap score in 0..1 (1 = perfect match), normalized by the MORE SPECIFIC side (the larger tag set),
|
|
20
|
-
* so a bare/generic path tag cannot score 1.0 against a deeply nested cwd just because its tiny tag set is contained in
|
|
22
|
+
* so a bare/generic path tag cannot score 1.0 against a deeply nested cwd just because its tiny tag set is contained in
|
|
23
|
+
* the query's.
|
|
24
|
+
*/
|
|
21
25
|
export function pathOverlapScore(memoryPathTags, currentPathTags) {
|
|
22
26
|
if (memoryPathTags.length === 0 || currentPathTags.length === 0)
|
|
23
27
|
return 0;
|
|
@@ -29,7 +33,10 @@ export function pathOverlapScore(memoryPathTags, currentPathTags) {
|
|
|
29
33
|
}
|
|
30
34
|
/** Weight applied to path overlap score when computing the recall boost multiplier. */
|
|
31
35
|
export const PATH_BOOST_WEIGHT = 0.3;
|
|
32
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Multiplier (1.0..1.3) applied to a composite recall score for path locality; filters the memory's tags to path:*
|
|
38
|
+
* itself so call sites cannot drift.
|
|
39
|
+
*/
|
|
33
40
|
export function pathBoostMultiplier(memoryTags, currentPathTags) {
|
|
34
41
|
const memPathTags = memoryTags.filter(t => t.startsWith('path:'));
|
|
35
42
|
return 1.0 + pathOverlapScore(memPathTags, currentPathTags) * PATH_BOOST_WEIGHT;
|
|
@@ -14,7 +14,8 @@ export interface PhysicsSearchOptions {
|
|
|
14
14
|
cost?: ResultCost;
|
|
15
15
|
/** Active scope for scope-boost scoring. Auto-detected if not provided. */
|
|
16
16
|
scope?: string | null;
|
|
17
|
-
/** Include superseded memories; must reach the inner hybrid filter or `recall --include-superseded` rows drop out
|
|
17
|
+
/** Include superseded memories; must reach the inner hybrid filter or `recall --include-superseded` rows drop out
|
|
18
|
+
* here. */
|
|
18
19
|
includeSuperseded?: boolean;
|
|
19
20
|
/** Bi-temporal filter: memories current at this ISO date string, ranked by hybridSearch. */
|
|
20
21
|
asOf?: string;
|
|
@@ -27,9 +28,13 @@ export interface PhysicsSearchOptions {
|
|
|
27
28
|
/** Where vectors and particles are read; hippo.db under `hippoRoot` when unset. */
|
|
28
29
|
store?: HippoStore;
|
|
29
30
|
}
|
|
30
|
-
/** Scores memories by gravity, momentum and cluster amplification; rows without physics state rank through
|
|
31
|
-
*
|
|
31
|
+
/** Scores memories by gravity, momentum and cluster amplification; rows without physics state rank through
|
|
32
|
+
* hybridSearch.
|
|
33
|
+
* Reads hippo.db under `hippoRoot` when no store is passed.
|
|
34
|
+
* @deprecated The root export is removed in 3.0. Set `physics.enabled` to 'auto' or true in config to rank by
|
|
35
|
+
* physics. */
|
|
32
36
|
export declare function physicsSearch(query: string, entries: MemoryEntry[], options?: PhysicsSearchOptions): Promise<SearchResult[]>;
|
|
33
|
-
/** physicsSearch on the store the caller names, so a caller holding its request's store never falls back to
|
|
37
|
+
/** physicsSearch on the store the caller names, so a caller holding its request's store never falls back to
|
|
38
|
+
* hippo.db. */
|
|
34
39
|
export declare function physicsSearchIn(source: VectorSource, query: string, entries: MemoryEntry[], options?: PhysicsSearchOptions): Promise<SearchResult[]>;
|
|
35
40
|
//# sourceMappingURL=physics-search.d.ts.map
|
|
@@ -8,21 +8,25 @@ import { physicsScore as computePhysicsScores, computeMass } from '../core/physi
|
|
|
8
8
|
import { DEFAULT_PHYSICS_CONFIG } from '../core/physics-config.js';
|
|
9
9
|
import { rethrowIfSqliteBlocked } from '../util/sqlite-blocked.js';
|
|
10
10
|
import { compareScoredResults } from '../core/compare.js';
|
|
11
|
-
import { errorMessage, log } from '../util/log.js';
|
|
11
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
12
12
|
import { churnStaleFactor, summaryMultipliers, summaryScoring } from './boosts.js';
|
|
13
13
|
import { addDagFields, ageInDays } from './breakdown.js';
|
|
14
14
|
import { fitBudget } from './finalize.js';
|
|
15
15
|
import { hybridSearch, vectorSourceOf } from './hybrid.js';
|
|
16
16
|
import { currentEntries } from './as-of.js';
|
|
17
17
|
import { embedQueryBy, requireVectorReads, startQueryEmbedDeadline, vectorCandidatesOutside, } from './vector.js';
|
|
18
|
-
import { DEFAULT_RECALL_BUDGET } from '../core/search-types.js';
|
|
19
|
-
/** Scores memories by gravity, momentum and cluster amplification; rows without physics state rank through
|
|
20
|
-
*
|
|
18
|
+
import { DEFAULT_RECALL_BUDGET, } from '../core/search-types.js';
|
|
19
|
+
/** Scores memories by gravity, momentum and cluster amplification; rows without physics state rank through
|
|
20
|
+
* hybridSearch.
|
|
21
|
+
* Reads hippo.db under `hippoRoot` when no store is passed.
|
|
22
|
+
* @deprecated The root export is removed in 3.0. Set `physics.enabled` to 'auto' or true in config to rank by
|
|
23
|
+
* physics. */
|
|
21
24
|
export async function physicsSearch(query, entries, options = {}) {
|
|
22
25
|
const source = entries.length > 0 ? vectorSourceOf(options) : undefined;
|
|
23
26
|
return source ? physicsSearchIn(source, query, entries, options) : [];
|
|
24
27
|
}
|
|
25
|
-
/** physicsSearch on the store the caller names, so a caller holding its request's store never falls back to
|
|
28
|
+
/** physicsSearch on the store the caller names, so a caller holding its request's store never falls back to
|
|
29
|
+
* hippo.db. */
|
|
26
30
|
export async function physicsSearchIn(source, query, entries, options = {}) {
|
|
27
31
|
const now = options.now ?? evalNow(); // honors HIPPO_FAKE_NOW (eval-only; see ablation.ts)
|
|
28
32
|
const explain = options.explain ?? false;
|
|
@@ -49,7 +53,13 @@ export async function physicsSearchIn(source, query, entries, options = {}) {
|
|
|
49
53
|
const config = options.physicsConfig ?? DEFAULT_PHYSICS_CONFIG;
|
|
50
54
|
const physicsResults = scorePhysicsPool(pools, queryVector, config, scoring);
|
|
51
55
|
const classicResults = pools.classic.length > 0
|
|
52
|
-
? await hybridSearch(query, pools.classic, {
|
|
56
|
+
? await hybridSearch(query, pools.classic, {
|
|
57
|
+
...hybrid,
|
|
58
|
+
queryEmbedDeadline,
|
|
59
|
+
vectorCandidates: undefined,
|
|
60
|
+
budget: Infinity,
|
|
61
|
+
explain,
|
|
62
|
+
})
|
|
53
63
|
: [];
|
|
54
64
|
const merged = mergeScorePools(physicsResults, classicResults);
|
|
55
65
|
merged.sort(compareScoredResults);
|
|
@@ -64,14 +74,15 @@ async function physicsQueryVector(query, root, store, deadline, given) {
|
|
|
64
74
|
const provider = resolveEmbeddingProvider(root);
|
|
65
75
|
if (!provider.isAvailable())
|
|
66
76
|
return null;
|
|
67
|
-
if (indexNeedsRebuild(indexedModel(await requireVectorReads(store).embeddingIndexState()), provider.id))
|
|
77
|
+
if (indexNeedsRebuild(indexedModel(await requireVectorReads(store).embeddingIndexState()), provider.id)) {
|
|
68
78
|
return null;
|
|
79
|
+
}
|
|
69
80
|
const vec = await embedQueryBy(deadline, provider, query);
|
|
70
81
|
return vec && vec.length > 0 ? vec : null;
|
|
71
82
|
}
|
|
72
83
|
catch (err) {
|
|
73
84
|
rethrowIfSqliteBlocked(err);
|
|
74
|
-
log.
|
|
85
|
+
log.warn(`physics search: query embed failed, using hybrid: ${errorMessage(err)}`, errorFields(err));
|
|
75
86
|
return null;
|
|
76
87
|
}
|
|
77
88
|
}
|
|
@@ -83,7 +94,7 @@ async function withVectorCandidates(reads, entries, queryVector, spec) {
|
|
|
83
94
|
}
|
|
84
95
|
catch (err) {
|
|
85
96
|
rethrowIfSqliteBlocked(err);
|
|
86
|
-
log.warn(`physics search ranked the lexical pool only; the vector lookup failed: ${errorMessage(err)}
|
|
97
|
+
log.warn(`physics search ranked the lexical pool only; the vector lookup failed: ${errorMessage(err)}`, errorFields(err));
|
|
87
98
|
return entries;
|
|
88
99
|
}
|
|
89
100
|
}
|
|
@@ -94,7 +105,7 @@ async function loadCandidateParticles(reads, pool) {
|
|
|
94
105
|
}
|
|
95
106
|
catch (err) {
|
|
96
107
|
rethrowIfSqliteBlocked(err);
|
|
97
|
-
log.
|
|
108
|
+
log.warn(`physics search: state load failed, using hybrid: ${errorMessage(err)}`, errorFields(err));
|
|
98
109
|
return null;
|
|
99
110
|
}
|
|
100
111
|
}
|
|
@@ -111,9 +122,13 @@ function splitByParticle(pool, physicsMap, queryVector, now) {
|
|
|
111
122
|
continue;
|
|
112
123
|
}
|
|
113
124
|
pools.entries.push(entry);
|
|
114
|
-
// EVAL-ONLY ablation (see ablation.ts): persisted masses bake in recall history twice, so the flag recomputes mass
|
|
125
|
+
// EVAL-ONLY ablation (see ablation.ts): persisted masses bake in recall history twice, so the flag recomputes mass
|
|
126
|
+
// live.
|
|
115
127
|
pools.particles.push(isRecallBoostAblated()
|
|
116
|
-
? {
|
|
128
|
+
? {
|
|
129
|
+
...particle,
|
|
130
|
+
mass: computeMass(calculateStrength(entry, now, { ablation: strengthAblation() }), entry.retrieval_count),
|
|
131
|
+
}
|
|
117
132
|
: particle);
|
|
118
133
|
}
|
|
119
134
|
return pools;
|
|
@@ -136,7 +151,13 @@ function scorePhysicsPool(pools, queryVector, config, scoring) {
|
|
|
136
151
|
const finalScore = s.finalScore * summary.deboost * summary.freshness * churnStaleMultiplier;
|
|
137
152
|
if (finalScore <= 0)
|
|
138
153
|
continue;
|
|
139
|
-
const result = {
|
|
154
|
+
const result = {
|
|
155
|
+
entry,
|
|
156
|
+
score: finalScore,
|
|
157
|
+
bm25: 0,
|
|
158
|
+
cosine: s.baseScore,
|
|
159
|
+
tokens: estimateTokens(entry.content),
|
|
160
|
+
};
|
|
140
161
|
if (scoring.explain) {
|
|
141
162
|
result.breakdown = addDagFields(physicsBreakdown(entry, s.baseScore, finalScore, churnStaleMultiplier, scoring.now), entry, summary.deboost, summary.freshness);
|
|
142
163
|
}
|
|
@@ -170,6 +191,9 @@ function mergeScorePools(poolA, poolB) {
|
|
|
170
191
|
const unpenalised = (r) => r.score / churnStaleFactor(r.entry);
|
|
171
192
|
const maxA = poolA.reduce((m, r) => Math.max(m, unpenalised(r)), 1e-9);
|
|
172
193
|
const maxB = poolB.reduce((m, r) => Math.max(m, unpenalised(r)), 1e-9);
|
|
173
|
-
return [
|
|
194
|
+
return [
|
|
195
|
+
...poolA.map((r) => ({ ...r, score: r.score / maxA })),
|
|
196
|
+
...poolB.map((r) => ({ ...r, score: r.score / maxB })),
|
|
197
|
+
];
|
|
174
198
|
}
|
|
175
199
|
//# sourceMappingURL=physics-search.js.map
|
package/dist/search/rerank.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { RerankerFn, RerankerOptions } from '../rerankers/types.js';
|
|
2
2
|
import type { SearchResult } from '../core/search-types.js';
|
|
3
3
|
/** MMR: repeatedly picks the candidate maximising lambda * relevance - (1 - lambda) * max(cos(cand, picked)).
|
|
4
|
-
*
|
|
4
|
+
* Input must be sorted by relevance; strict `>` keeps ties first-wins, so a deterministic input stays deterministic.
|
|
5
|
+
*/
|
|
5
6
|
export declare function mmrRerank(scored: SearchResult[], embeddingIndex: Record<string, ArrayLike<number>>, lambda: number, explain: boolean): SearchResult[];
|
|
6
7
|
/** MMR over the top window only; the tail keeps its relevance order. */
|
|
7
8
|
export declare function applyMmrWindow(scored: SearchResult[], embeddingIndex: Record<string, ArrayLike<number>>, lambda: number, explain: boolean): SearchResult[];
|
package/dist/search/rerank.js
CHANGED
|
@@ -3,7 +3,8 @@ const DEFAULT_RERANK_TOP_K = 50;
|
|
|
3
3
|
// MMR is O(K^2) cosine ops; candidates below this window never survive budget filtering anyway.
|
|
4
4
|
const MMR_CANDIDATE_CAP = 100;
|
|
5
5
|
/** MMR: repeatedly picks the candidate maximising lambda * relevance - (1 - lambda) * max(cos(cand, picked)).
|
|
6
|
-
*
|
|
6
|
+
* Input must be sorted by relevance; strict `>` keeps ties first-wins, so a deterministic input stays deterministic.
|
|
7
|
+
*/
|
|
7
8
|
export function mmrRerank(scored, embeddingIndex, lambda, explain) {
|
|
8
9
|
if (scored.length === 0)
|
|
9
10
|
return scored;
|
package/dist/search/rrf.d.ts
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Reciprocal Rank Fusion (Cormack, Clarke and Buettcher 2009): fuses N ranked lists by summing weighted 1/(k + rank)
|
|
3
|
+
* per candidate. K is the standard 60,
|
|
4
|
+
* the value hybridSearch already uses; do NOT tune it without a cross-corpus eval. Generic over the id type
|
|
5
|
+
* (hybridSearch uses number, the LongMemEval
|
|
6
|
+
* benchmark string). Behaviour MUST stay byte-identical to the inline hybridSearch code it replaced; tests/rrf.test.ts
|
|
7
|
+
* is the contract.
|
|
8
|
+
*/
|
|
4
9
|
export declare const RRF_K = 60;
|
|
5
10
|
export interface RrfFuseOptions {
|
|
6
11
|
/** Smoothing constant. Default RRF_K = 60. */
|
|
7
12
|
k?: number;
|
|
8
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Rank assigned to candidates absent from a list; default `max(rankedLists.map(l => l.length)) + 1`, the convention
|
|
15
|
+
* hybridSearch used (`entries.length +
|
|
9
16
|
* 1`). */
|
|
10
17
|
absentRank?: number;
|
|
11
18
|
}
|
|
12
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Fuses N ranked lists (each in descending-score order; index 0 is rank 1) into a Map of candidate id -> RRF score;
|
|
21
|
+
* sort by value descending for the fused
|
|
13
22
|
* order. `weights` has one entry per list and is summed without normalisation; `options` overrides k and absentRank. */
|
|
14
23
|
export declare function rrfFuse<T>(rankedLists: ReadonlyArray<ReadonlyArray<T>>, weights: ReadonlyArray<number>, options?: RrfFuseOptions): Map<T, number>;
|
|
15
24
|
//# sourceMappingURL=rrf.d.ts.map
|
package/dist/search/rrf.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Reciprocal Rank Fusion (Cormack, Clarke and Buettcher 2009): fuses N ranked lists by summing weighted 1/(k + rank)
|
|
3
|
+
* per candidate. K is the standard 60,
|
|
4
|
+
* the value hybridSearch already uses; do NOT tune it without a cross-corpus eval. Generic over the id type
|
|
5
|
+
* (hybridSearch uses number, the LongMemEval
|
|
6
|
+
* benchmark string). Behaviour MUST stay byte-identical to the inline hybridSearch code it replaced; tests/rrf.test.ts
|
|
7
|
+
* is the contract.
|
|
8
|
+
*/
|
|
4
9
|
export const RRF_K = 60;
|
|
5
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Fuses N ranked lists (each in descending-score order; index 0 is rank 1) into a Map of candidate id -> RRF score;
|
|
12
|
+
* sort by value descending for the fused
|
|
6
13
|
* order. `weights` has one entry per list and is summed without normalisation; `options` overrides k and absentRank. */
|
|
7
14
|
export function rrfFuse(rankedLists, weights, options) {
|
|
8
15
|
if (rankedLists.length !== weights.length) {
|
package/dist/search/vector.d.ts
CHANGED
|
@@ -3,7 +3,10 @@ import type { VectorCandidateSpec } from '../store/search-rows.js';
|
|
|
3
3
|
import { type EmbeddingProvider } from '../embeddings/provider.js';
|
|
4
4
|
import { type HippoStore, type VectorReads } from '../store/index.js';
|
|
5
5
|
import { type CurrentnessOptions } from './as-of.js';
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* hybridSearch's vector arm: which rows it may add, plus the caller's JS admission rules (exact private regex, entry
|
|
8
|
+
* filters).
|
|
9
|
+
*/
|
|
7
10
|
export type HybridVectorCandidates = VectorCandidateSpec & {
|
|
8
11
|
admit?: (entry: MemoryEntry) => boolean;
|
|
9
12
|
};
|
|
@@ -27,7 +30,10 @@ export interface VectorArmOptions extends CurrentnessOptions {
|
|
|
27
30
|
}
|
|
28
31
|
/** One deadline for every query embedding a recall makes, so two stores or a physics fallback share the budget. */
|
|
29
32
|
export declare function startQueryEmbedDeadline(): AbortSignal;
|
|
30
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* The query's vector, or null when the provider outlasts `deadline`: an API call, or a local model still downloading.
|
|
35
|
+
* Any other failure throws.
|
|
36
|
+
*/
|
|
31
37
|
export declare function embedQueryBy(deadline: AbortSignal, provider: EmbeddingProvider, query: string): Promise<number[] | null>;
|
|
32
38
|
/** The store's vector reads; a store without them answers 501, as any unported path does. */
|
|
33
39
|
export declare function requireVectorReads(store: HippoStore): VectorReads;
|
package/dist/search/vector.js
CHANGED
|
@@ -10,7 +10,9 @@ import { redactSecretsStrict } from '../util/secret-detect.js';
|
|
|
10
10
|
import { currentEntries } from './as-of.js';
|
|
11
11
|
// Jev's default budget (rerankers/jev.ts): each is one off-box call that a recall waits on.
|
|
12
12
|
const QUERY_EMBED_BUDGET_MS = 5_000;
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* How long one recall waits for its query vector, retries included; HIPPO_QUERY_EMBED_TIMEOUT_MS overrides the default.
|
|
15
|
+
*/
|
|
14
16
|
function queryEmbedBudgetMs() {
|
|
15
17
|
return envQueryEmbedTimeoutMs() ?? QUERY_EMBED_BUDGET_MS;
|
|
16
18
|
}
|
|
@@ -18,7 +20,10 @@ function queryEmbedBudgetMs() {
|
|
|
18
20
|
export function startQueryEmbedDeadline() {
|
|
19
21
|
return AbortSignal.timeout(queryEmbedBudgetMs());
|
|
20
22
|
}
|
|
21
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* The query's vector, or null when the provider outlasts `deadline`: an API call, or a local model still downloading.
|
|
25
|
+
* Any other failure throws.
|
|
26
|
+
*/
|
|
22
27
|
export async function embedQueryBy(deadline, provider, query) {
|
|
23
28
|
try {
|
|
24
29
|
return (await provider.embed([query], 'query', { signal: deadline }))[0] ?? [];
|
|
@@ -29,7 +34,8 @@ export async function embedQueryBy(deadline, provider, query) {
|
|
|
29
34
|
throw err;
|
|
30
35
|
}
|
|
31
36
|
}
|
|
32
|
-
// Search runs on every hook prompt, so one line per reason per process says why vectors went unused without flooding
|
|
37
|
+
// Search runs on every hook prompt, so one line per reason per process says why vectors went unused without flooding
|
|
38
|
+
// stderr.
|
|
33
39
|
function warnBm25Fallback(reason, detail) {
|
|
34
40
|
log.once(`search.bm25-fallback.${reason}`, 'warn', `hybrid search fell back to BM25 only: ${redactSecretsStrict(detail)}`);
|
|
35
41
|
}
|
package/dist/server/auth.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { IncomingMessage } from 'node:http';
|
|
2
|
-
import { type Context } from '../api/index.js';
|
|
2
|
+
import { type Context, type StoreContext } from '../api/index.js';
|
|
3
3
|
import type { ResolvedServeOpts } from './types.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import { isLoopbackAddress } from '../util/net.js';
|
|
5
|
+
/** Kept under its old name because src/server.ts publishes it. */
|
|
6
|
+
export declare const isLoopback: typeof isLoopbackAddress;
|
|
7
|
+
/** True only for a request made on this machine by its own user: a proxy and a browser page are loopback too, so the
|
|
8
|
+
* socket alone proves nothing. */
|
|
7
9
|
export declare function isLocalCaller(req: IncomingMessage): boolean;
|
|
8
|
-
/** Reads the Authorization header case-insensitively (name and RFC 6750 'Bearer' scheme): { kind: 'absent' },
|
|
9
|
-
* <token>'), or { kind: 'bearer', token } for a non-empty token. */
|
|
10
|
+
/** Reads the Authorization header case-insensitively (name and RFC 6750 'Bearer' scheme): { kind: 'absent' },
|
|
11
|
+
* { kind: 'malformed' } (set but not 'Bearer <token>'), or { kind: 'bearer', token } for a non-empty token. */
|
|
10
12
|
type AuthHeader = {
|
|
11
13
|
kind: 'absent';
|
|
12
14
|
} | {
|
|
@@ -21,15 +23,17 @@ type AuthOpts = Pick<ResolvedServeOpts, 'hippoRoot' | 'authResolver' | 'authReso
|
|
|
21
23
|
export declare function isReservedActor(subject: string): boolean;
|
|
22
24
|
/** Key cap for every serve() bucket, shared by the warn map so it never tracks more callers than the buckets do. */
|
|
23
25
|
export declare const LIMITER_MAX_KEYS = 10000;
|
|
24
|
-
/** Builds a per-request Context from the Authorization header and remote address; throws HttpError(401)
|
|
25
|
-
* Reads the store only for an API-key-shaped Bearer (or any Bearer
|
|
26
|
-
export declare function buildContextWithAuth(req: IncomingMessage, opts: AuthOpts): Promise<
|
|
27
|
-
/** The auth check again, uncharged, for a handler that authenticated with requireAuth before a slow body read and
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
/** Builds a per-request Context from the Authorization header and remote address; throws HttpError(401) on bad ones.
|
|
27
|
+
* Reads the store only for an API-key-shaped Bearer (or any Bearer with no resolver), so keyless calls stay cheap. */
|
|
28
|
+
export declare function buildContextWithAuth(req: IncomingMessage, opts: AuthOpts): Promise<StoreContext>;
|
|
29
|
+
/** The auth check again, uncharged, for a handler that authenticated with requireAuth before a slow body read and
|
|
30
|
+
* must re-check right before it acts. */
|
|
31
|
+
export declare function recheckContextWithAuth(req: IncomingMessage, opts: AuthOpts): Promise<StoreContext>;
|
|
32
|
+
/** Auth check for routes that need no tenant Context (e.g. the MCP transport, which resolves its own root): throws
|
|
33
|
+
* HttpError 401 like buildContextWithAuth. A keyless local request passes only under HIPPO_ALLOW_KEYLESS_LOCAL=1. */
|
|
31
34
|
export declare function requireAuth(req: IncomingMessage, opts: AuthOpts): Promise<void>;
|
|
32
|
-
/** Never rejects or charges a caller bucket: an outage (5xx) or a throttle (429) skips one tick; only a definite 4xx
|
|
35
|
+
/** Never rejects or charges a caller bucket: an outage (5xx) or a throttle (429) skips one tick; only a definite 4xx
|
|
36
|
+
* denial closes the stream. */
|
|
33
37
|
export declare function heartbeatVerdict(req: IncomingMessage, opts: AuthOpts): Promise<'ok' | 'revoked' | 'unavailable'>;
|
|
34
38
|
/** Gate for any action beyond the caller's own tenant: a tenant's admin, by key or resolver, is never a host admin. */
|
|
35
39
|
export declare function assertCrossTenantAdmin(ctx: Context, what: string): void;
|