hippo-memory 1.72.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/README.md +6 -4
- 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 -5
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/auth/audit.js +58 -0
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
- package/dist/api/{auth.js → auth/auth.js} +66 -54
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
- 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 +14 -4
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +31 -34
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +120 -63
- 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} +23 -17
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/memories/memories.js +52 -0
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/memories/outcome.js +28 -0
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/memories/promote.js +76 -0
- 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} +17 -9
- package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
- package/dist/api/{remember.js → memories/remember.js} +50 -32
- 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 -7
- 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 -3
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -5
- 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 +35 -20
- package/dist/api/prompt-hook.js +66 -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} +185 -101
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +116 -72
- 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 -68
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +36 -8
- package/dist/api/session-end.js +71 -25
- 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} +54 -45
- 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 +27 -12
- 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 +34 -15
- 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 +18 -9
- package/dist/capture/compaction-spool.js +105 -63
- 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 +58 -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 +33 -33
- package/dist/cli/auth.js +23 -31
- 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 -5
- package/dist/cli/client.js +53 -23
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +43 -18
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +5 -4
- package/dist/cli/curate.js +55 -77
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +30 -30
- 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 +34 -10
- package/dist/cli/hook-runtime.js +41 -16
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +35 -20
- 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 +5 -5
- package/dist/cli/object-verbs.js +13 -16
- 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 +17 -22
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +17 -7
- package/dist/cli/remember.js +51 -55
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +28 -18
- package/dist/cli/session-hooks.d.ts +2 -6
- package/dist/cli/session-hooks.js +140 -112
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.js +56 -34
- package/dist/cli/shared.d.ts +4 -2
- package/dist/cli/shared.js +26 -11
- 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 +16 -8
- 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 +4 -4
- package/dist/cli/transfer.js +97 -82
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +1 -1
- package/dist/cli/verb-row.d.ts +2 -0
- package/dist/cli/verbs/health.js +2 -0
- package/dist/cli/verbs/memory.js +47 -53
- package/dist/cli/verbs/objects.js +16 -7
- package/dist/cli/verbs/sessions.js +4 -2
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +14 -18
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -7
- 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 -4
- 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 -5
- 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 -5
- 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 +36 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -3
- 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 -5
- 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 -4
- 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 -5
- 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 +24 -10
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +45 -39
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +28 -17
- 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 +37 -14
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +47 -37
- 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 +42 -39
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +27 -30
- 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 +38 -29
- 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 +22 -17
- 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 +87 -30
- package/dist/core/memory.js +82 -33
- 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 +39 -11
- package/dist/core/physics.js +71 -21
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +35 -18
- 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.d.ts +2 -2
- package/dist/dashboard/dashboard-actions.js +18 -7
- package/dist/dashboard/dashboard-queries.js +2 -7
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +5 -7
- package/dist/dashboard/dashboard.js +22 -8
- 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 -2
- package/dist/db/connect.js +8 -2
- 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 +40 -20
- 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/v11.js +1 -0
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -0
- 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 -8
- package/dist/db/physics-state.js +17 -50
- 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 +20 -5
- package/dist/db/request-stores.js +15 -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 +35 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.js +128 -46
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +11 -7
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +32 -27
- 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 +50 -0
- package/dist/entry/store-kit.js +27 -0
- package/dist/entry/testing.d.ts +6 -0
- package/dist/entry/testing.js +7 -0
- 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 +17 -7
- 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 +72 -33
- 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 +11 -10
- 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 +3 -3
- package/dist/importers/vault.js +61 -45
- package/dist/index.d.ts +33 -7
- package/dist/index.js +26 -8
- package/dist/learn/autolearn.d.ts +21 -6
- package/dist/learn/autolearn.js +57 -26
- 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 +17 -10
- 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 -6
- package/dist/learn/invalidation.js +62 -28
- 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 +21 -20
- 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 +61 -77
- 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 +59 -23
- 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 +19 -9
- 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 +12 -4
- package/dist/search/embed-memories.js +96 -58
- package/dist/search/engine.d.ts +11 -0
- package/dist/search/engine.js +14 -0
- 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 +14 -8
- package/dist/server/auth.d.ts +19 -15
- package/dist/server/auth.js +68 -38
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.js +115 -67
- package/dist/server/client-ip.d.ts +17 -5
- package/dist/server/client-ip.js +56 -21
- 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 +550 -97
- 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 -17
- 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 +40 -18
- package/dist/server/tls.d.ts +10 -2
- package/dist/server/tls.js +25 -5
- package/dist/server/types.d.ts +41 -24
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +17 -49
- package/dist/server.js +33 -40
- package/dist/sharing/global-store.d.ts +6 -12
- package/dist/sharing/global-store.js +8 -48
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +17 -7
- 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 +28 -14
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +40 -18
- package/dist/store/ambient.js +10 -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 +90 -41
- 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 +97 -63
- 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 +101 -37
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +16 -5
- package/dist/store/conflicts.js +104 -48
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +58 -6
- package/dist/store/connectors/event-log.d.ts +122 -0
- package/dist/store/connectors/event-log.js +25 -0
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +30 -48
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +31 -47
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -10
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +70 -28
- package/dist/store/delivery-recorder.d.ts +10 -7
- package/dist/store/delivery-recorder.js +70 -37
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +26 -10
- 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 +45 -19
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +72 -21
- package/dist/store/entry-reads.js +215 -69
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +26 -14
- package/dist/store/entry-writes.d.ts +28 -13
- package/dist/store/entry-writes.js +61 -22
- 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 +11 -12
- 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 +29 -19
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +15 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/half-life.js +2 -2
- package/dist/store/handoffs.d.ts +13 -7
- package/dist/store/handoffs.js +44 -22
- 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 +4 -2
- package/dist/store/index.js +2 -1
- 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 +96 -19
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +6 -3
- package/dist/store/open.js +20 -10
- 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 +261 -219
- 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 +128 -64
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +46 -20
- 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 +20 -13
- package/dist/store/rule-sql.d.ts +7 -3
- package/dist/store/rule-sql.js +26 -13
- package/dist/store/search-rows.d.ts +16 -11
- package/dist/store/search-rows.js +54 -32
- 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 +12 -5
- 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 +9 -6
- 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 +8 -0
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +15 -0
- package/dist/store/sqlite/last-recall-group.js +62 -0
- 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.d.ts +6 -0
- package/dist/store/sqlite/maintenance-groups.js +61 -0
- 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 +97 -38
- 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 -18
- package/dist/store/sqlite/store.js +95 -33
- 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 +25 -11
- package/dist/store/summaries.js +84 -27
- 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 +8 -4
- 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 +28 -11
- 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 +7 -2
- package/dist/util/anthropic-messages.js +18 -7
- package/dist/util/atomic-write.d.ts +8 -3
- package/dist/util/atomic-write.js +36 -21
- 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 +26 -5
- package/dist/util/env.js +87 -25
- package/dist/util/format.d.ts +2 -0
- package/dist/util/format.js +4 -0
- 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 +16 -4
- package/dist/util/request-scope.js +19 -6
- 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 +11 -0
- package/dist/util/spawn-argv.js +66 -0
- package/dist/util/sql.d.ts +3 -0
- package/dist/util/sql.js +6 -0
- 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/vector-codec.d.ts +4 -0
- package/dist/util/vector-codec.js +15 -0
- 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 +4 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/audit.js +0 -56
- 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 -7
- package/dist/api/learn.js +0 -124
- package/dist/api/memories.d.ts +0 -23
- package/dist/api/memories.js +0 -46
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/on-store.d.ts +0 -16
- package/dist/api/on-store.js +0 -38
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/outcome.js +0 -21
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/promote.js +0 -65
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -120
- 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 -10
- package/dist/cli/lenient-id.d.ts +0 -2
- package/dist/cli/lenient-id.js +0 -13
- 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 -21
- package/dist/store/sqlite/local.js +0 -39
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
// Read path: retrieve, the one recall entry.
|
|
2
|
-
import { envRequireSessionScopedFreshTail } from '
|
|
3
|
-
import { DEFAULT_SEARCH_CANDIDATE_LIMIT } from '
|
|
4
|
-
import { recallScopeFilter } from '
|
|
5
|
-
import { estimateTokens } from '
|
|
6
|
-
import { formatHandoffEvidenceLine } from '
|
|
7
|
-
import { boostByGoals } from '
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import { recallLead, recordShownRecall } from './recall-finish.js';
|
|
2
|
+
import { envRequireSessionScopedFreshTail } from '../../util/env.js';
|
|
3
|
+
import { DEFAULT_SEARCH_CANDIDATE_LIMIT } from '../../store/rows.js';
|
|
4
|
+
import { recallScopeFilter } from '../../store/search-rows.js';
|
|
5
|
+
import { estimateTokens } from '../../util/token-text.js';
|
|
6
|
+
import { formatHandoffEvidenceLine } from '../../core/handoff.js';
|
|
7
|
+
import { boostByGoals } from '../../search/goal-boost.js';
|
|
8
|
+
import { searchByEngine } from '../../search/engine.js';
|
|
9
|
+
import { churnStaleFactor } from '../../search/boosts.js';
|
|
10
|
+
import { compareEntryIdentity } from '../../core/compare.js';
|
|
11
|
+
import { dropHeldCopies, duplicateKey, storedTextKeys } from '../../util/same-text.js';
|
|
12
|
+
import { isSharedStore } from '../../core/config.js';
|
|
13
|
+
import { configOf } from '../config-of.js';
|
|
14
|
+
import { classifyOriginProject, projectNames } from '../../core/project-identity.js';
|
|
15
|
+
import { decidePlanningFallacy, detectPlanningClaim } from '../../predictions/planning-fallacy.js';
|
|
16
|
+
import { detectAnchoring, hashQueryText, biasHintEnabled } from './finish.js';
|
|
17
|
+
import { detectAvailabilityBias } from '../availability.js';
|
|
18
|
+
import { passesScopeFilterForRecall, assertScopeRequestAllowed, personalScopeOf } from '../../core/recall-scope.js';
|
|
19
|
+
import { ownerOrSubject, RecallContractError } from '../types.js';
|
|
20
|
+
import { anchoringRows, availabilityRows, callerOf, recallAuditMetadata, recallAuditRow, strengthenOf, } from './finish.js';
|
|
21
|
+
import { retrieveWithCliCore } from './request.js';
|
|
22
|
+
import { recallLead, recordShownRecall } from './finish.js';
|
|
24
23
|
const DEFAULT_RECALL_LIMIT = 10;
|
|
25
24
|
function recallOrigin(opts) {
|
|
26
25
|
return opts.project ? projectNames(opts.project) : undefined;
|
|
@@ -28,8 +27,8 @@ function recallOrigin(opts) {
|
|
|
28
27
|
function inCallerProject(entry, opts) {
|
|
29
28
|
return !opts.project || classifyOriginProject(entry.origin_project, opts.project) !== 'cross-project';
|
|
30
29
|
}
|
|
31
|
-
/** The one recall entry: ranks with the ranker `opts` names, then writes the recall, and records it in full for a
|
|
32
|
-
*
|
|
30
|
+
/** The one recall entry: ranks with the ranker `opts` names, then writes the recall, and records it in full for a
|
|
31
|
+
* surface that sets `recordAs`. Only the CLI core ranker writes last_retrieval_ids (contract lock). */
|
|
33
32
|
export async function retrieve(ctx, opts) {
|
|
34
33
|
assertScopeRequestAllowed(ctx.actor, opts.scope);
|
|
35
34
|
if (opts.cliCore)
|
|
@@ -39,7 +38,7 @@ export async function retrieve(ctx, opts) {
|
|
|
39
38
|
const own = personalScopeOf(ctx.actor) ?? undefined;
|
|
40
39
|
if (opts.showRanked)
|
|
41
40
|
return retrieveFromStore(ctx, opts, windowSize, opts.showRanked, own);
|
|
42
|
-
const store =
|
|
41
|
+
const store = ctx.store;
|
|
43
42
|
const how = opts.recordAs;
|
|
44
43
|
if (!how)
|
|
45
44
|
return retrieveBand(ctx, store, opts, windowSize, own);
|
|
@@ -47,7 +46,8 @@ export async function retrieve(ctx, opts) {
|
|
|
47
46
|
await recordShownRecall(ctx, store, how, shownBand(opts, result));
|
|
48
47
|
return result;
|
|
49
48
|
}
|
|
50
|
-
/** What the band ranker hands to the record: the rows it returns,
|
|
49
|
+
/** What the band ranker hands to the record: the rows it returns,
|
|
50
|
+
* and the continuity block the reply carries beside them. */
|
|
51
51
|
function shownBand(opts, result) {
|
|
52
52
|
return {
|
|
53
53
|
query: opts.query,
|
|
@@ -57,30 +57,40 @@ function shownBand(opts, result) {
|
|
|
57
57
|
items: result.results.length,
|
|
58
58
|
tokens: result.tokens + (result.continuityTokens ?? 0),
|
|
59
59
|
ledgerSessionId: opts.sessionId ?? null,
|
|
60
|
-
|
|
60
|
+
// A failed audit write throws out of the band ranker, so this point is never reached without the rows.
|
|
61
|
+
written: true,
|
|
61
62
|
};
|
|
62
63
|
}
|
|
63
64
|
/** The default ranker: the SQL BM25 band, reordered by hybrid or physics search when `mode` asks. */
|
|
64
65
|
async function retrieveBand(ctx, store, opts, windowSize, own) {
|
|
65
66
|
let candidates = await store.searchRecallEntries(opts.query, recallSearchArgs(ctx, opts, windowSize, own));
|
|
66
67
|
if (opts.mode === 'hybrid' || opts.mode === 'physics') {
|
|
67
|
-
const searchOpts = {
|
|
68
|
-
|
|
68
|
+
const searchOpts = {
|
|
69
|
+
budget: Infinity,
|
|
70
|
+
scope: opts.scope ?? null,
|
|
71
|
+
vectorCandidates: recallVectorSpec(ctx, opts, own),
|
|
72
|
+
};
|
|
73
|
+
const ranked = await searchByEngine({ root: ctx.hippoRoot, store }, opts.query, candidates, physicsFor(ctx, opts), searchOpts);
|
|
69
74
|
const rankedIds = new Set(ranked.map((r) => r.entry.id));
|
|
70
75
|
candidates = [...ranked.map((r) => r.entry), ...candidates.filter((e) => !rankedIds.has(e.id))];
|
|
71
76
|
}
|
|
72
77
|
const plan = planRecall(ctx, opts, candidates, own);
|
|
73
|
-
const
|
|
78
|
+
const reads = await readRecall(store, ctx, opts, plan);
|
|
79
|
+
const { result, writes } = composeRecall(ctx, opts, { windowSize, all: candidates, plan, reads });
|
|
80
|
+
await finishBandRecall(store, ctx, opts, writes, result.results.map((r) => r.id));
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
/** The one recall write: the caller's leading audit rows go first, and the ids shown are the ones strengthened. */
|
|
84
|
+
async function finishBandRecall(store, ctx, opts, writes, shownIds) {
|
|
74
85
|
await store.finishRecall({
|
|
75
|
-
...writes,
|
|
86
|
+
...writes,
|
|
87
|
+
audit: [...(opts.leadingAudit ?? []), ...writes.audit],
|
|
88
|
+
strengthen: strengthenOf(ctx, shownIds),
|
|
76
89
|
});
|
|
77
|
-
return result;
|
|
78
90
|
}
|
|
79
|
-
/**
|
|
80
|
-
function
|
|
81
|
-
return opts.mode === 'physics'
|
|
82
|
-
? physicsSearch(opts.query, pool, { ...searchOpts, physicsConfig: loadConfig(ctx.hippoRoot).physics })
|
|
83
|
-
: hybridSearch(opts.query, pool, searchOpts);
|
|
91
|
+
/** `mode` names the engine: physics with the store's config, hybrid otherwise. */
|
|
92
|
+
function physicsFor(ctx, opts) {
|
|
93
|
+
return opts.mode === 'physics' ? configOf(ctx).physics : null;
|
|
84
94
|
}
|
|
85
95
|
/** The recall load's arguments: exact scope, current rows only, the caller's project and personal scope. */
|
|
86
96
|
function recallSearchArgs(ctx, opts, limit, own) {
|
|
@@ -106,47 +116,63 @@ function recallVectorSpec(ctx, opts, own) {
|
|
|
106
116
|
}
|
|
107
117
|
// Tag, pin and recency boosts can lift a row from deep in the BM25 order, so MCP ranks a wide lexical window.
|
|
108
118
|
const SHOW_RANKED_LEXICAL_WINDOW = 1000;
|
|
109
|
-
/** `retrieve` under `showRanked`: physics when `mode` says so, hybrid
|
|
119
|
+
/** `retrieve` under `showRanked`: physics when `mode` says so, hybrid
|
|
120
|
+
* otherwise, over a wide lexical window plus the nearest vectors. */
|
|
110
121
|
async function retrieveFromStore(ctx, opts, windowSize, show, own) {
|
|
111
|
-
const store =
|
|
122
|
+
const store = ctx.store;
|
|
112
123
|
const loaded = await store.searchRecallEntries(opts.query, recallSearchArgs(ctx, opts, Math.max(windowSize, SHOW_RANKED_LEXICAL_WINDOW), own));
|
|
113
124
|
const pool = loaded.filter((e) => passesScopeFilterForRecall(e.scope ?? null, opts.scope, own));
|
|
114
125
|
// No scope option: the scope boost follows HIPPO_SCOPE and the skill env, as MCP recall always ranked.
|
|
115
|
-
const searchOpts = { budget: Infinity,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const goals = opts.sessionId && !opts.goalTag ? await store.activeGoals({ sessionId: opts.sessionId, tenantId: ctx.tenantId }) : null;
|
|
119
|
-
let rankedLog = [];
|
|
120
|
-
if (goals && opts.sessionId) {
|
|
121
|
-
const boost = boostByGoals(ranked, goals, { sessionId: opts.sessionId, tenantId: ctx.tenantId, limit: ranked.length });
|
|
122
|
-
ranked = boost.results;
|
|
123
|
-
rankedLog = boost.log;
|
|
124
|
-
}
|
|
126
|
+
const searchOpts = { budget: Infinity, vectorCandidates: recallVectorSpec(ctx, opts, own) };
|
|
127
|
+
const searched = await searchByEngine({ root: ctx.hippoRoot, store }, opts.query, pool, physicsFor(ctx, opts), searchOpts);
|
|
128
|
+
const { ranked, goals, rankedLog } = await boostRankedByGoals(ctx, opts, searched);
|
|
125
129
|
const window = ranked.slice(0, windowSize).map((r) => r.entry);
|
|
126
130
|
const bandOpts = { ...opts, suppressRecallTrace: true };
|
|
127
131
|
const plan = planRecall(ctx, bandOpts, window, own);
|
|
128
|
-
const
|
|
129
|
-
|
|
132
|
+
const reads = await readRecall(store, ctx, bandOpts, plan, goals);
|
|
133
|
+
const { result, writes } = composeRecall(ctx, bandOpts, { windowSize, all: window, plan, reads, auditBand: false });
|
|
134
|
+
const shown = show({ ranked, pool: withVectorCandidates(pool, ranked), droppedByScope: loaded.length - pool.length }, result);
|
|
135
|
+
const { shownRow, trace } = shownAuditAndTrace(ctx, opts, shown.ids, ranked);
|
|
136
|
+
await finishBandRecall(store, ctx, opts, {
|
|
137
|
+
goalLog: [...rankedLog, ...writes.goalLog],
|
|
138
|
+
audit: [...writes.audit, shownRow, ...shown.audit],
|
|
139
|
+
trace,
|
|
140
|
+
}, shown.ids);
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
143
|
+
// One goal read serves both boosts; the ranked list's log rows come first, so its scores win the log's first-write.
|
|
144
|
+
async function boostRankedByGoals(ctx, opts, ranked) {
|
|
145
|
+
const noLog = [];
|
|
146
|
+
const goals = opts.sessionId && !opts.goalTag
|
|
147
|
+
? await ctx.store.activeGoals({ sessionId: opts.sessionId, tenantId: ctx.tenantId })
|
|
148
|
+
: null;
|
|
149
|
+
if (!goals || !opts.sessionId)
|
|
150
|
+
return { ranked, goals, rankedLog: noLog };
|
|
151
|
+
const boost = boostByGoals(ranked, goals, {
|
|
152
|
+
sessionId: opts.sessionId,
|
|
153
|
+
tenantId: ctx.tenantId,
|
|
154
|
+
limit: ranked.length,
|
|
130
155
|
});
|
|
131
|
-
|
|
156
|
+
return { ranked: boost.results, goals, rankedLog: boost.log };
|
|
157
|
+
}
|
|
158
|
+
// Rows the vector arm added count as candidates too.
|
|
159
|
+
function withVectorCandidates(pool, ranked) {
|
|
132
160
|
const inPool = new Set(pool.map((e) => e.id));
|
|
133
|
-
|
|
134
|
-
|
|
161
|
+
return [...pool, ...ranked.map((r) => r.entry).filter((e) => !inPool.has(e.id))];
|
|
162
|
+
}
|
|
163
|
+
function shownAuditAndTrace(ctx, opts, shownIds, ranked) {
|
|
135
164
|
const scores = new Map(ranked.map((r) => [r.entry.id, r.score]));
|
|
136
|
-
const shownRow = recallAuditRow(callerOf(ctx), 'recall', undefined, recallAuditMetadata(opts.query,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
trace: opts.suppressRecallTrace ? undefined : {
|
|
165
|
+
const shownRow = recallAuditRow(callerOf(ctx), 'recall', undefined, recallAuditMetadata(opts.query, shownIds.length));
|
|
166
|
+
const trace = opts.suppressRecallTrace
|
|
167
|
+
? undefined
|
|
168
|
+
: {
|
|
141
169
|
tenantId: ctx.tenantId,
|
|
142
170
|
sessionId: opts.sessionId ?? null,
|
|
143
171
|
pipeline: 'mcp',
|
|
144
172
|
query: opts.query,
|
|
145
|
-
results:
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
});
|
|
149
|
-
return result;
|
|
173
|
+
results: shownIds.map((id) => ({ memoryId: id, score: scores.get(id) ?? 0 })),
|
|
174
|
+
};
|
|
175
|
+
return { shownRow, trace };
|
|
150
176
|
}
|
|
151
177
|
/** Contract preflight: throws before any store-touching work. */
|
|
152
178
|
function recallWindowSize(opts) {
|
|
@@ -190,16 +216,22 @@ async function readRecall(store, ctx, opts, plan, goals) {
|
|
|
190
216
|
const parentIds = plan.overflow.size > 0 ? [...plan.overflow.keys()] : null;
|
|
191
217
|
const continuity = opts.includeContinuity ? { key: continuityKey(ctx, opts) } : null;
|
|
192
218
|
return {
|
|
193
|
-
goals: goals !== undefined
|
|
219
|
+
goals: goals !== undefined
|
|
220
|
+
? goals
|
|
221
|
+
: plan.goalBoost
|
|
222
|
+
? await store.activeGoals({ sessionId: plan.goalBoost.sessionId, tenantId })
|
|
223
|
+
: null,
|
|
194
224
|
parents: parentIds ? await store.entriesByIds(parentIds, tenantId) : [],
|
|
195
|
-
freshRaws: freshCount > 0
|
|
225
|
+
freshRaws: freshCount > 0
|
|
226
|
+
? await store.freshRawEntries(freshCount, tenantId, opts.freshTailSessionId, recallOrigin(opts) ?? null)
|
|
227
|
+
: [],
|
|
196
228
|
continuity: continuity ? await store.continuity(tenantId, CONTINUITY_EVENT_LIMIT, continuity.key) : undefined,
|
|
197
229
|
planning: plan.claim ? await store.planningFallacyEvidence(tenantId, plan.claim.classQueryTokens) : null,
|
|
198
230
|
};
|
|
199
231
|
}
|
|
200
232
|
// On a shared store the tenant's newest row is another developer's; no project keys to nothing, so the block is empty.
|
|
201
233
|
function continuityKey(ctx, opts) {
|
|
202
|
-
if (!isSharedStore(ctx.hippoRoot))
|
|
234
|
+
if (!(ctx.reach ? ctx.reach.shared : isSharedStore(ctx.hippoRoot)))
|
|
203
235
|
return null;
|
|
204
236
|
return { owner: ownerOrSubject(ctx.actor), project: opts.project ? projectNames(opts.project) : [] };
|
|
205
237
|
}
|
|
@@ -210,7 +242,9 @@ function composeRecall(ctx, opts, options) {
|
|
|
210
242
|
const rankedOut = bands.rankedOut;
|
|
211
243
|
const continuity = reads.continuity ? scopeContinuity(reads.continuity, opts, plan.own) : undefined;
|
|
212
244
|
// Query-derived, so MCP and CLI read this one hint instead of recomputing; HIPPO_AUTODEBIAS=off disables it.
|
|
213
|
-
const planning = plan.claim && reads.planning
|
|
245
|
+
const planning = plan.claim && reads.planning
|
|
246
|
+
? decidePlanningFallacy(plan.claim, reads.planning, ctx.tenantId, ctx.actor.subject)
|
|
247
|
+
: null;
|
|
214
248
|
const { anchoringHint, suppressedByInterference } = detectRecallAnchoring(opts, rankedOut[0]?.id ?? null);
|
|
215
249
|
const availabilityHint = detectRecallAvailability(opts, bands.baseSlice, window.entries);
|
|
216
250
|
const result = {
|
|
@@ -239,7 +273,9 @@ function composeRecall(ctx, opts, options) {
|
|
|
239
273
|
if (availabilityHint)
|
|
240
274
|
result.availabilityHint = availabilityHint;
|
|
241
275
|
const who = callerOf(ctx);
|
|
242
|
-
const audit = auditBand
|
|
276
|
+
const audit = auditBand
|
|
277
|
+
? [recallAuditRow(who, 'recall', undefined, recallAuditMetadata(opts.query, rankedOut.length))]
|
|
278
|
+
: [];
|
|
243
279
|
if (planning?.audit)
|
|
244
280
|
audit.push(planning.audit);
|
|
245
281
|
audit.push(...anchoringRows(who, anchoringHint), ...availabilityRows(who, availabilityHint));
|
|
@@ -294,7 +330,11 @@ function rankBands(opts, plan, reads) {
|
|
|
294
330
|
const summaryRanked = substituted.map((s) => summaryItem(s, opts));
|
|
295
331
|
const freshRanked = (opts.freshTailCount ?? 0) > 0
|
|
296
332
|
? freshTailBand(opts, {
|
|
297
|
-
recent: reads.freshRaws,
|
|
333
|
+
recent: reads.freshRaws,
|
|
334
|
+
baseRanked,
|
|
335
|
+
summaryRanked,
|
|
336
|
+
shownEntries: opts.keepHeldCopies ? [] : [...baseSlice, ...substituted.map((s) => s.entry)],
|
|
337
|
+
own,
|
|
298
338
|
})
|
|
299
339
|
: [];
|
|
300
340
|
return {
|
|
@@ -309,7 +349,10 @@ function rankBands(opts, plan, reads) {
|
|
|
309
349
|
// When the overflow holds 2+ children of one level-2 summary, that summary stands in for them, capped at 30% of
|
|
310
350
|
// `limit`. Each one is tenant-scoped and re-checked against the scope filter; drillDown recovers the children.
|
|
311
351
|
function substituteOverflow(opts, overflowByParent, parents, limit, own) {
|
|
312
|
-
const eligibleParents = parents.filter((p) => (p.dag_level ?? 0) === 2 &&
|
|
352
|
+
const eligibleParents = parents.filter((p) => (p.dag_level ?? 0) === 2 &&
|
|
353
|
+
!p.superseded_by &&
|
|
354
|
+
passesScopeFilterForRecall(p.scope ?? null, opts.scope, own) &&
|
|
355
|
+
inCallerProject(p, opts));
|
|
313
356
|
const maxSub = Math.max(1, Math.ceil(limit * SUMMARY_SUB_FRACTION));
|
|
314
357
|
// Most overflowed children first; compareEntryIdentity only breaks a tie, which used to fall to scan order.
|
|
315
358
|
eligibleParents.sort((a, b) => {
|
|
@@ -322,7 +365,8 @@ function substituteOverflow(opts, overflowByParent, parents, limit, own) {
|
|
|
322
365
|
childIds: (overflowByParent.get(p.id) ?? []).map((e) => e.id),
|
|
323
366
|
}));
|
|
324
367
|
}
|
|
325
|
-
/** Overflowed leaf rows by summary parent, kept only for a
|
|
368
|
+
/** Overflowed leaf rows by summary parent, kept only for a
|
|
369
|
+
* parent with 2+ of them that is not already in the base band. */
|
|
326
370
|
function overflowGroups(window, limit) {
|
|
327
371
|
// The goal boost only re-scores the base band, so its ids are known before the boost runs.
|
|
328
372
|
const baseIds = new Set(window.baseSlice.map((e) => e.id));
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { SearchResult } from '../../core/search-types.js';
|
|
2
|
+
import { type AnchoringHint, type RingBuffer } from './finish.js';
|
|
3
|
+
import { type AvailabilityHint } from '../availability.js';
|
|
4
|
+
import type { RecallSuppressionSummary } from './types.js';
|
|
5
|
+
/** A token allowance that sections pay from in print order; one that does not fit is refused whole. */
|
|
6
|
+
export declare function tokenPurse(allowance: number): {
|
|
7
|
+
pays(tokens: number): boolean;
|
|
8
|
+
left: () => number;
|
|
9
|
+
};
|
|
10
|
+
/** Renders `count` rows, then drops the lowest-ranked one until the text fits `budget` or only `floor` rows remain. */
|
|
11
|
+
export declare function shrinkToFit<R>(count: number, floor: number, budget: number, render: (kept: number) => R, textOf: (rendered: R) => string): R;
|
|
12
|
+
/** The clause strings of the cutoff text; each surface frames them in its own line or section. */
|
|
13
|
+
export declare function cutoffClauses(s: RecallSuppressionSummary): string[];
|
|
14
|
+
export type SuppressionCounts = Omit<RecallSuppressionSummary, 'suppressedByInterference'>;
|
|
15
|
+
export interface RecallHints {
|
|
16
|
+
readonly anchoring: AnchoringHint | null;
|
|
17
|
+
readonly availability: AvailabilityHint | null;
|
|
18
|
+
}
|
|
19
|
+
export declare function suppressionSummary(counts: SuppressionCounts, anchoring: AnchoringHint | null): RecallSuppressionSummary;
|
|
20
|
+
export interface HintInputs {
|
|
21
|
+
readonly list: SearchResult[];
|
|
22
|
+
/** The candidate pool for availability bias; null when that hint is switched off. */
|
|
23
|
+
readonly pool: ReadonlyArray<{
|
|
24
|
+
id: string;
|
|
25
|
+
created: string;
|
|
26
|
+
}> | null;
|
|
27
|
+
readonly anchorRing: RingBuffer | null;
|
|
28
|
+
readonly queryHash: number;
|
|
29
|
+
}
|
|
30
|
+
/** Availability needs a pool only when its env switch is on, so callers skip building one otherwise. */
|
|
31
|
+
export declare function availabilityPool<E extends {
|
|
32
|
+
id: string;
|
|
33
|
+
created: string;
|
|
34
|
+
}>(entries: () => ReadonlyArray<E>): Array<{
|
|
35
|
+
id: string;
|
|
36
|
+
created: string;
|
|
37
|
+
}> | null;
|
|
38
|
+
export declare function detectRecallHints({ list, pool, anchorRing, queryHash }: HintInputs): RecallHints;
|
|
39
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Recall text pieces the CLI and MCP presenters share, so the budget loop, cutoff wording and hints cannot drift apart.
|
|
2
|
+
import { estimateTokens } from '../../util/token-text.js';
|
|
3
|
+
import { detectAnchoring, biasHintEnabled, snapshotRing, } from './finish.js';
|
|
4
|
+
import { detectAvailabilityBias } from '../availability.js';
|
|
5
|
+
/** A token allowance that sections pay from in print order; one that does not fit is refused whole. */
|
|
6
|
+
export function tokenPurse(allowance) {
|
|
7
|
+
let left = allowance;
|
|
8
|
+
return {
|
|
9
|
+
pays(tokens) {
|
|
10
|
+
if (tokens > left)
|
|
11
|
+
return false;
|
|
12
|
+
left -= tokens;
|
|
13
|
+
return true;
|
|
14
|
+
},
|
|
15
|
+
left: () => left,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** Renders `count` rows, then drops the lowest-ranked one until the text fits `budget` or only `floor` rows remain. */
|
|
19
|
+
export function shrinkToFit(count, floor, budget, render, textOf) {
|
|
20
|
+
let kept = count;
|
|
21
|
+
let rendered = render(kept);
|
|
22
|
+
// The hints, cutoff and heading vary with the list, so the whole text is re-measured after each drop.
|
|
23
|
+
while (kept > floor && estimateTokens(textOf(rendered)) > budget) {
|
|
24
|
+
kept--;
|
|
25
|
+
rendered = render(kept);
|
|
26
|
+
}
|
|
27
|
+
return rendered;
|
|
28
|
+
}
|
|
29
|
+
/** The clause strings of the cutoff text; each surface frames them in its own line or section. */
|
|
30
|
+
export function cutoffClauses(s) {
|
|
31
|
+
const clauses = [];
|
|
32
|
+
// The residual covers rank, budget and limit drops alike, and fires with no --limit at all.
|
|
33
|
+
if (s.droppedByBudget > 0)
|
|
34
|
+
clauses.push(`${s.droppedByBudget} not shown (rank, budget or limit)`);
|
|
35
|
+
if (s.droppedPreRank > 0)
|
|
36
|
+
clauses.push(`${s.droppedPreRank} filtered pre-rank`);
|
|
37
|
+
if (s.summarySubstitutionsAdded > 0)
|
|
38
|
+
clauses.push(`${s.summarySubstitutionsAdded} summary substitutions added`);
|
|
39
|
+
if (s.freshTailAdded > 0)
|
|
40
|
+
clauses.push(`${s.freshTailAdded} fresh-tail added`);
|
|
41
|
+
if (s.suppressedByInterference > 0)
|
|
42
|
+
clauses.push(`${s.suppressedByInterference} suppressed by interference`);
|
|
43
|
+
return clauses;
|
|
44
|
+
}
|
|
45
|
+
export function suppressionSummary(counts, anchoring) {
|
|
46
|
+
// A query_repeat is a re-ask, not competition.
|
|
47
|
+
return { ...counts, suppressedByInterference: anchoring?.reason === 'memory_dominance' ? 1 : 0 };
|
|
48
|
+
}
|
|
49
|
+
/** Availability needs a pool only when its env switch is on, so callers skip building one otherwise. */
|
|
50
|
+
export function availabilityPool(entries) {
|
|
51
|
+
return biasHintEnabled('availability') ? entries().map((e) => ({ id: e.id, created: e.created })) : null;
|
|
52
|
+
}
|
|
53
|
+
export function detectRecallHints({ list, pool, anchorRing, queryHash }) {
|
|
54
|
+
const anchoring = anchorRing ? detectAnchoring(snapshotRing(anchorRing), queryHash, list[0]?.entry.id ?? null) : null;
|
|
55
|
+
const availability = pool
|
|
56
|
+
? detectAvailabilityBias({ topK: list.map((r) => ({ id: r.entry.id, created: r.entry.created })), pool })
|
|
57
|
+
: null;
|
|
58
|
+
return { anchoring, availability };
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { BadRequestError } from '
|
|
2
|
-
import { type JsonValue } from '
|
|
3
|
-
import type { ContextOpts } from '
|
|
4
|
-
import type
|
|
1
|
+
import { BadRequestError } from '../../core/api-errors.js';
|
|
2
|
+
import { type JsonValue } from '../../util/json.js';
|
|
3
|
+
import type { ContextOpts } from '../context-types.js';
|
|
4
|
+
import { type StoreContext } from '../types.js';
|
|
5
|
+
import type { CliCoreRanker, RecallOpts, RecallResult } from './types.js';
|
|
5
6
|
/** A recall or context input the caller must fix; MCP answers it with an isError result, HTTP with a 400. */
|
|
6
7
|
export declare class RecallRequestError extends BadRequestError {
|
|
7
8
|
constructor(message: string);
|
|
@@ -28,5 +29,6 @@ export type ParsedContextRequest = Pick<ContextOpts, 'q' | 'budget' | 'limit' |
|
|
|
28
29
|
/** Checks in a fixed order, so the first bad input is the one reported. */
|
|
29
30
|
export declare function parseRecallRequest(params: RequestParams): ParsedRecallRequest;
|
|
30
31
|
export declare function parseContextRequest(params: RequestParams): ParsedContextRequest;
|
|
32
|
+
export declare function retrieveWithCliCore(ctx: StoreContext, opts: RecallOpts, core: CliCoreRanker): Promise<RecallResult>;
|
|
31
33
|
export {};
|
|
32
|
-
//# sourceMappingURL=
|
|
34
|
+
//# sourceMappingURL=request.d.ts.map
|