hippo-memory 1.69.0 → 1.70.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 +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +1 -3
- package/dist/agent-memories/claude-code.js +11 -7
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +3 -2
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +1 -1
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +1 -1
- package/dist/agent-memories/sync.js +24 -33
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +2 -2
- package/dist/api/assemble.js +42 -32
- package/dist/api/audit.d.ts +4 -7
- package/dist/api/audit.js +6 -20
- package/dist/api/auth.d.ts +5 -18
- package/dist/api/auth.js +44 -194
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +2 -2
- package/dist/{availability.js → api/availability.js} +12 -29
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +37 -45
- package/dist/api/context-types.d.ts +5 -5
- package/dist/api/context.d.ts +2 -4
- package/dist/api/context.js +48 -61
- package/dist/api/dormant.d.ts +3 -3
- package/dist/api/dormant.js +38 -107
- package/dist/api/drill-down.d.ts +2 -2
- package/dist/api/drill-down.js +37 -65
- package/dist/api/forget.d.ts +2 -11
- package/dist/api/forget.js +13 -46
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/index.d.ts +26 -0
- package/dist/api/index.js +29 -0
- package/dist/api/instruction-detect.js +74 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +20 -0
- package/dist/api/ledger-db.js +79 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +36 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/promote.d.ts +4 -15
- package/dist/api/promote.js +29 -106
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
- package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +112 -0
- package/dist/{recall-history.js → api/recall-history.js} +30 -25
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +41 -16
- package/dist/api/recall.d.ts +1 -1
- package/dist/api/recall.js +39 -37
- package/dist/api/remember.d.ts +10 -12
- package/dist/api/remember.js +29 -45
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -7
- package/dist/api/sleep-run.js +63 -75
- package/dist/api/sleep.d.ts +1 -1
- package/dist/api/tokens.d.ts +2 -2
- package/dist/api/tokens.js +9 -21
- package/dist/api/types.d.ts +2 -2
- package/dist/api/types.js +1 -1
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +1 -1
- package/dist/capture/command.js +54 -41
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +4 -1
- package/dist/capture/compact.js +40 -22
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +48 -94
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +1 -5
- package/dist/{session-digest.js → capture/session-digest.js} +17 -23
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.js +68 -74
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
- package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +77 -72
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +18 -20
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +59 -181
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +25 -23
- package/dist/{client.d.ts → cli/client.d.ts} +1 -1
- package/dist/{client.js → cli/client.js} +1 -1
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +39 -0
- package/dist/cli/context.d.ts +2 -13
- package/dist/cli/context.js +41 -71
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +109 -99
- package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
- package/dist/cli/curate.d.ts +9 -9
- package/dist/cli/curate.js +177 -149
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +46 -34
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +108 -218
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +43 -31
- package/dist/cli/explain.d.ts +1 -1
- package/dist/cli/explain.js +35 -19
- package/dist/cli/flag-values.d.ts +25 -0
- package/dist/cli/flag-values.js +103 -0
- package/dist/cli/flags.d.ts +303 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +39 -34
- package/dist/cli/hook-runtime.d.ts +49 -0
- package/dist/cli/hook-runtime.js +155 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +151 -118
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +110 -0
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +9 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +31 -27
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +65 -0
- package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
- package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +77 -280
- package/dist/cli/print.d.ts +18 -0
- package/dist/cli/print.js +85 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -49
- package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +101 -150
- package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
- package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
- package/dist/cli/remember.d.ts +1 -3
- package/dist/cli/remember.js +124 -103
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
- package/dist/{scheduler.js → cli/scheduler.js} +13 -7
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +34 -4
- package/dist/cli/session-hooks.d.ts +4 -4
- package/dist/cli/session-hooks.js +190 -184
- package/dist/cli/setup.d.ts +2 -1
- package/dist/cli/setup.js +41 -21
- package/dist/cli/shared.d.ts +5 -95
- package/dist/cli/shared.js +18 -369
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +31 -55
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +2 -8
- package/dist/cli/sleep.js +20 -76
- package/dist/cli/status.d.ts +3 -3
- package/dist/cli/status.js +39 -41
- package/dist/{stdin.js → cli/stdin.js} +6 -6
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +68 -42
- package/dist/cli/usage.js +4 -2
- package/dist/cli.d.ts +289 -5
- package/dist/cli.js +184 -117
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +1 -1
- package/dist/connectors/github/backfill.js +29 -66
- package/dist/connectors/github/cli-impl.js +59 -74
- package/dist/connectors/github/deletion.d.ts +5 -6
- package/dist/connectors/github/deletion.js +18 -52
- package/dist/connectors/github/dlq.d.ts +7 -61
- package/dist/connectors/github/dlq.js +19 -119
- package/dist/connectors/github/ingest.d.ts +2 -31
- package/dist/connectors/github/ingest.js +20 -83
- package/dist/connectors/github/octokit-client.d.ts +1 -1
- package/dist/connectors/github/octokit-client.js +2 -1
- package/dist/connectors/github/tenant-routing.d.ts +2 -2
- package/dist/connectors/github/tenant-routing.js +10 -36
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/types.d.ts +1 -1
- package/dist/connectors/github/types.js +15 -18
- package/dist/connectors/github/webhook.d.ts +3 -2
- package/dist/connectors/github/webhook.js +84 -87
- package/dist/connectors/slack/backfill.d.ts +1 -1
- package/dist/connectors/slack/backfill.js +5 -29
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +7 -49
- package/dist/connectors/slack/dlq.js +25 -118
- package/dist/connectors/slack/ingest.d.ts +5 -18
- package/dist/connectors/slack/ingest.js +27 -91
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.js +13 -14
- package/dist/connectors/slack/transform.d.ts +1 -1
- package/dist/connectors/slack/types.d.ts +1 -1
- package/dist/connectors/slack/types.js +3 -12
- package/dist/connectors/slack/web-client.js +2 -2
- package/dist/connectors/slack/webhook.d.ts +3 -2
- package/dist/connectors/slack/webhook.js +75 -82
- package/dist/connectors/slack/workspaces.d.ts +4 -17
- package/dist/connectors/slack/workspaces.js +4 -34
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +4 -4
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
- package/dist/{dag.js → consolidate/dag.js} +60 -81
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +28 -22
- package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
- package/dist/consolidate/flush-units.d.ts +2 -2
- package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
- package/dist/consolidate/half-life-migration.js +106 -0
- package/dist/consolidate/llm-passes.js +8 -8
- package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
- package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
- package/dist/consolidate/merge.js +57 -54
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
- package/dist/consolidate/physics-pass.js +46 -46
- package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
- package/dist/{replay.js → consolidate/replay.js} +2 -2
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +1 -1
- package/dist/consolidate/sleep.js +64 -134
- package/dist/{trace.js → consolidate/trace.js} +4 -6
- package/dist/consolidate/traces.js +34 -29
- package/dist/{ablation.js → core/ablation.js} +1 -1
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.js → core/ambient.js} +12 -10
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +13 -2
- package/dist/{capture-contract.js → core/capture-contract.js} +64 -0
- package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
- package/dist/{compare.js → core/compare.js} +10 -3
- package/dist/{config.d.ts → core/config.d.ts} +6 -6
- package/dist/{config.js → core/config.js} +99 -72
- package/dist/core/handoff.js +87 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
- package/dist/{memory.d.ts → core/memory.d.ts} +17 -5
- package/dist/{memory.js → core/memory.js} +110 -82
- package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
- package/dist/{physics.js → core/physics.js} +2 -1
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
- package/dist/{project-identity.js → core/project-identity.js} +5 -17
- package/dist/{project-remote.js → core/project-remote.js} +4 -4
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/{salience.js → core/salience.js} +35 -20
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +5 -5
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +9 -9
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
- package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +18 -1
- package/dist/db/busy.js +74 -9
- package/dist/db/connect.d.ts +10 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +25 -30
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -35
- package/dist/db/migrations/v16.js +29 -26
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v20.js +4 -2
- package/dist/db/migrations/v22.js +39 -36
- package/dist/db/migrations/v24.js +27 -22
- package/dist/db/migrations/v29.js +37 -32
- package/dist/db/migrations/v31.js +36 -31
- package/dist/db/migrations/v35.js +1 -1
- package/dist/db/migrations/v39.js +1 -1
- package/dist/db/migrations/v40.js +15 -14
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +1 -1
- package/dist/db/migrations/v45.js +1 -1
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +1 -1
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +9 -1
- package/dist/db/open.js +21 -4
- package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
- package/dist/{physics-state.js → db/physics-state.js} +9 -16
- package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +4 -2
- package/dist/{vector-store.js → db/vector-store.js} +76 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +105 -136
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +3 -3
- package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
- package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
- package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
- package/dist/{eval.js → eval/eval.js} +29 -22
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
- package/dist/{judgment.js → eval/judgment.js} +4 -9
- package/dist/extensions/openclaw-plugin/index.js +1 -2
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +6 -6
- package/dist/{graph-extract.js → graph/extract.js} +37 -52
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
- package/dist/{graph-recall.js → graph/recall.js} +55 -36
- package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
- package/dist/{graph-stream.js → graph/stream.js} +9 -7
- package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
- package/dist/{graph-view.js → graph/view.js} +127 -167
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +14 -15
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +14 -15
- package/dist/{cli → hooks}/hook-blocks.js +1 -1
- package/dist/hooks/json-hooks.d.ts +1 -1
- package/dist/hooks/json-hooks.js +31 -122
- package/dist/hooks/opencode.js +35 -27
- package/dist/hooks/shared.d.ts +0 -4
- package/dist/hooks/shared.js +1 -5
- package/dist/importers/core.d.ts +2 -6
- package/dist/importers/core.js +41 -39
- package/dist/importers/markdown-parse.d.ts +1 -10
- package/dist/importers/markdown-parse.js +2 -19
- package/dist/importers/markdown.js +2 -1
- package/dist/importers/sources.js +50 -46
- package/dist/importers/vault.js +71 -92
- package/dist/index.d.ts +22 -22
- package/dist/index.js +21 -21
- package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
- package/dist/{autolearn.js → learn/autolearn.js} +13 -11
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +125 -0
- package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
- package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
- package/dist/{invalidation.js → learn/invalidation.js} +83 -99
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +37 -60
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +7 -27
- package/dist/mcp/protocol.d.ts +6 -10
- package/dist/mcp/protocol.js +8 -14
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +68 -50
- package/dist/mcp/request.js +62 -60
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/session-state.d.ts +1 -2
- package/dist/mcp/session-state.js +2 -2
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.js +69 -31
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +2 -2
- package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
- package/dist/objects/customer-notes.js +112 -0
- package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
- package/dist/objects/decisions.js +101 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/{incidents.d.ts → objects/incidents.d.ts} +17 -44
- package/dist/objects/incidents.js +130 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
- package/dist/objects/policies.js +189 -0
- package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
- package/dist/objects/processes.js +146 -0
- package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
- package/dist/objects/project-briefs.js +255 -0
- package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
- package/dist/objects/skills.js +156 -0
- package/dist/postinstall.js +4 -2
- package/dist/predictions/planning-fallacy.d.ts +4 -76
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +27 -47
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +15 -23
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +30 -49
- package/dist/rerankers/llm.d.ts +2 -4
- package/dist/rerankers/llm.js +33 -50
- package/dist/rerankers/outage-warning.d.ts +7 -0
- package/dist/rerankers/outage-warning.js +31 -0
- package/dist/rerankers/remote.d.ts +3 -0
- package/dist/rerankers/remote.js +23 -0
- package/dist/rerankers/types.d.ts +1 -1
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -1
- package/dist/search/boosts.js +34 -13
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +4 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +7 -5
- package/dist/{path-context.js → search/path-context.js} +3 -1
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +15 -15
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +3 -3
- package/dist/search/vector.js +17 -11
- package/dist/server/auth.d.ts +1 -1
- package/dist/server/auth.js +26 -18
- package/dist/server/boot.d.ts +24 -0
- package/dist/server/boot.js +465 -0
- package/dist/server/client-ip.d.ts +5 -1
- package/dist/server/client-ip.js +18 -6
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/key-check-bounds.d.ts +8 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.js +1 -1
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +34 -24
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +10 -4
- package/dist/server/request.js +63 -12
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +209 -0
- package/dist/server/routes/admin.js +13 -8
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +32 -97
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +42 -105
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +42 -95
- package/dist/server/routes/memories.js +12 -14
- package/dist/server/routes/object-routes.d.ts +40 -0
- package/dist/server/routes/object-routes.js +80 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +40 -124
- package/dist/server/routes/predictions.js +29 -45
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +38 -118
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +38 -110
- package/dist/server/routes/recall.js +14 -12
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +37 -125
- package/dist/{server-detect.js → server/server-detect.js} +1 -1
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +70 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +27 -8
- package/dist/server/validation.d.ts +3 -4
- package/dist/server/validation.js +6 -11
- package/dist/server.d.ts +39 -61
- package/dist/server.js +24 -568
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
- package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
- package/dist/{scope.js → sharing/scope.js} +1 -1
- package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
- package/dist/{shared.js → sharing/shared.js} +100 -77
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +10 -10
- package/dist/store/audit-event.d.ts +11 -5
- package/dist/store/audit-event.js +5 -4
- package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
- package/dist/{audit.js → store/audit.js} +91 -6
- package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
- package/dist/{auth.js → store/auth.js} +100 -92
- package/dist/store/candidates.d.ts +23 -12
- package/dist/store/candidates.js +87 -35
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
- package/dist/{card-detail.js → store/card-detail.js} +1 -1
- package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
- package/dist/{store-cards.js → store/cards.js} +85 -146
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +22 -5
- package/dist/store/conflicts.js +160 -109
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +92 -0
- package/dist/store/delete-and-batch.d.ts +20 -24
- package/dist/store/delete-and-batch.js +64 -40
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +51 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
- package/dist/{dormant.js → store/dormant.js} +151 -6
- package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
- package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
- package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
- package/dist/store/entry-reads.d.ts +46 -7
- package/dist/store/entry-reads.js +120 -21
- package/dist/store/entry-row.d.ts +8 -2
- package/dist/store/entry-row.js +28 -8
- package/dist/store/entry-writes.d.ts +33 -4
- package/dist/store/entry-writes.js +108 -26
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/{goals.d.ts → store/goals.d.ts} +6 -46
- package/dist/{goals.js → store/goals.js} +45 -94
- package/dist/store/graph-queue.d.ts +29 -0
- package/dist/store/graph-queue.js +101 -0
- package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
- package/dist/{graph/read.js → store/graph-reads.js} +63 -115
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
- package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
- package/dist/store/graph-view-rows.d.ts +12 -0
- package/dist/store/graph-view-rows.js +67 -0
- package/dist/store/graph-writes.d.ts +58 -0
- package/dist/store/graph-writes.js +256 -0
- package/dist/store/half-life.d.ts +34 -0
- package/dist/store/half-life.js +77 -0
- package/dist/store/handoffs.d.ts +1 -1
- package/dist/store/handoffs.js +39 -30
- package/dist/store/index-and-stats.d.ts +8 -1
- package/dist/store/index-and-stats.js +51 -48
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +1 -1
- package/dist/store/markdown.js +4 -3
- package/dist/store/mirrors.d.ts +5 -7
- package/dist/store/mirrors.js +39 -25
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +24 -23
- package/dist/store/planning-fallacy-evidence.d.ts +42 -0
- package/dist/store/planning-fallacy-evidence.js +81 -0
- package/dist/store/port.d.ts +646 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
- package/dist/{predictions/store.js → store/predictions.js} +52 -67
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +3 -1
- package/dist/{raw-archive.js → store/raw-archive.js} +6 -2
- package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +2 -2
- package/dist/{recall-scope.js → store/recall-scope.js} +3 -3
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
- package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +162 -0
- package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
- package/dist/{rejection.js → store/rejection.js} +3 -2
- package/dist/store/rows.d.ts +2 -3
- package/dist/store/rows.js +18 -11
- package/dist/store/search-rows.d.ts +15 -4
- package/dist/store/search-rows.js +41 -28
- package/dist/store/sessions.d.ts +13 -2
- package/dist/store/sessions.js +79 -45
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +59 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +28 -0
- package/dist/store/sqlite/executor.js +286 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +38 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +218 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +314 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +26 -0
- package/dist/store/sqlite/store.js +295 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +124 -0
- package/dist/store/sqlite/worker-ops.js +82 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +76 -0
- package/dist/store/summaries.d.ts +2 -11
- package/dist/store/summaries.js +17 -44
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/store/tenant-lookup.d.ts +1 -1
- package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
- package/dist/{tenant.js → store/tenant.js} +1 -1
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +2 -9
- package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +26 -0
- package/dist/store/vector-writes.d.ts +10 -3
- package/dist/store/vector-writes.js +35 -5
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
- package/dist/{working-memory.js → store/working-memory.js} +39 -41
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +13 -33
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +67 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +46 -0
- package/dist/util/atomic-write.d.ts +3 -0
- package/dist/util/atomic-write.js +107 -0
- package/dist/util/crash-handlers.d.ts +5 -0
- package/dist/util/crash-handlers.js +30 -0
- package/dist/{env.d.ts → util/env.d.ts} +15 -2
- package/dist/{env.js → util/env.js} +20 -2
- package/dist/util/home-path.js +67 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
- package/dist/{http-retry.js → util/http-retry.js} +38 -7
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +5 -2
- package/dist/{log.js → util/log.js} +12 -3
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +27 -0
- package/dist/util/request-scope.js +47 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +18 -0
- package/dist/util/token-text.js +23 -0
- package/dist/{version.d.ts → util/version.d.ts} +1 -1
- package/dist/{version.js → util/version.js} +1 -1
- package/extensions/openclaw-plugin/index.ts +1 -5
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.js +0 -326
- package/dist/extract.js +0 -133
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/policies.js +0 -434
- package/dist/processes.js +0 -371
- package/dist/project-briefs.js +0 -523
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{recall-history.d.ts → api/recall-history.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
- /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
- /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
- /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
- /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
- /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
- /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{trace.d.ts → consolidate/trace.d.ts} +0 -0
- /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
- /package/dist/{ambient.d.ts → core/ambient.d.ts} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{card.d.ts → core/card.d.ts} +0 -0
- /package/dist/{card.js → core/card.js} +0 -0
- /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
- /package/dist/{physics-config.js → core/physics-config.js} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{salience.d.ts → core/salience.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
- /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
- /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
- /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
- /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
- /package/dist/{rrf.js → search/rrf.js} +0 -0
- /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
- /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
- /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
- /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
- /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
- /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
- /package/dist/{yaml.js → store/yaml.js} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{home-path.d.ts → util/home-path.d.ts} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
- /package/dist/{transcript-tail.js → util/transcript-tail.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* AnchoringHint + PlanningFallacyHint are independent
|
|
18
18
|
* signals; both can fire on the same recall.
|
|
19
19
|
*/
|
|
20
|
-
import { envAnchoringOff, envAvailabilityOff } from '
|
|
20
|
+
import { envAnchoringOff, envAvailabilityOff } from '../util/env.js';
|
|
21
21
|
const DEFAULT_MIN_DOMINANCE = 3;
|
|
22
22
|
const DEFAULT_RECENT_REPEAT_WINDOW = 5;
|
|
23
23
|
const DEFAULT_COOLDOWN = 3;
|
|
@@ -47,7 +47,7 @@ export function hashQueryText(query) {
|
|
|
47
47
|
.split(/\s+/)
|
|
48
48
|
.filter((t) => t.length > 0);
|
|
49
49
|
// Drop tokens under 3 chars (filler words) so `a login bug` and `login bug` hash
|
|
50
|
-
// alike; matches the >=3 filter in src/forward-claim-detector.ts.
|
|
50
|
+
// alike; matches the >=3 filter in src/learn/forward-claim-detector.ts.
|
|
51
51
|
const filtered = normalized.filter((t) => t.length >= 3);
|
|
52
52
|
// Fall back to all tokens when the filter empties the query (CJK 2-char words,
|
|
53
53
|
// acronyms like `AI`) so distinct short queries do not all hash to fnv1a32('').
|
|
@@ -101,17 +101,8 @@ export function detectAnchoring(history, currentQueryHash, currentTopMemoryId, o
|
|
|
101
101
|
return null;
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
// memory_dominance check FIRST (wins on tie).
|
|
105
|
-
|
|
106
|
-
const matchingQueryHashes = new Set();
|
|
107
|
-
for (const entry of history) {
|
|
108
|
-
if (entry.topMemoryId === currentTopMemoryId) {
|
|
109
|
-
matchingQueryHashes.add(entry.queryHash);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Include current query in the count.
|
|
113
|
-
matchingQueryHashes.add(currentQueryHash);
|
|
114
|
-
const queryCount = matchingQueryHashes.size;
|
|
104
|
+
// memory_dominance check FIRST (wins on tie).
|
|
105
|
+
const queryCount = countDistinctQueries(history, currentQueryHash, currentTopMemoryId);
|
|
115
106
|
if (queryCount >= minDominance) {
|
|
116
107
|
return {
|
|
117
108
|
reason: 'memory_dominance',
|
|
@@ -121,21 +112,35 @@ export function detectAnchoring(history, currentQueryHash, currentTopMemoryId, o
|
|
|
121
112
|
source: 'j1-recurrence',
|
|
122
113
|
};
|
|
123
114
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
memoryId: currentTopMemoryId,
|
|
132
|
-
summary: `Same query phrasing as a recent recall returned the same top result (${currentTopMemoryId}); you may be re-asking the same question.`,
|
|
133
|
-
source: 'j1-recurrence',
|
|
134
|
-
};
|
|
135
|
-
}
|
|
115
|
+
if (isRecentRepeat(history, recentRepeatWindow, currentQueryHash, currentTopMemoryId)) {
|
|
116
|
+
return {
|
|
117
|
+
reason: 'query_repeat',
|
|
118
|
+
memoryId: currentTopMemoryId,
|
|
119
|
+
summary: `Same query phrasing as a recent recall returned the same top result (${currentTopMemoryId}); you may be re-asking the same question.`,
|
|
120
|
+
source: 'j1-recurrence',
|
|
121
|
+
};
|
|
136
122
|
}
|
|
137
123
|
return null;
|
|
138
124
|
}
|
|
125
|
+
// Count distinct queryHashes in history where topMemoryId === the current top
|
|
126
|
+
// (excluding null tops), plus the current query itself.
|
|
127
|
+
function countDistinctQueries(history, currentQueryHash, currentTopMemoryId) {
|
|
128
|
+
const matchingQueryHashes = new Set();
|
|
129
|
+
for (const entry of history) {
|
|
130
|
+
if (entry.topMemoryId === currentTopMemoryId) {
|
|
131
|
+
matchingQueryHashes.add(entry.queryHash);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
matchingQueryHashes.add(currentQueryHash);
|
|
135
|
+
return matchingQueryHashes.size;
|
|
136
|
+
}
|
|
137
|
+
// query_repeat check: is currentQueryHash present in the last `recentRepeatWindow`
|
|
138
|
+
// entries AND was that entry's topMemoryId === currentTopMemoryId?
|
|
139
|
+
function isRecentRepeat(history, recentRepeatWindow, currentQueryHash, currentTopMemoryId) {
|
|
140
|
+
return history
|
|
141
|
+
.slice(-recentRepeatWindow)
|
|
142
|
+
.some((entry) => entry.queryHash === currentQueryHash && entry.topMemoryId === currentTopMemoryId);
|
|
143
|
+
}
|
|
139
144
|
// ---------------------------------------------------------------------------
|
|
140
145
|
// RingBuffer + caller-side state helpers
|
|
141
146
|
// ---------------------------------------------------------------------------
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type GoalRecallLogRow } from '
|
|
2
|
-
import { type MemoryEntry } from '
|
|
3
|
-
import type { PhysicsConfig } from '
|
|
4
|
-
import type { RerankerFn } from '
|
|
5
|
-
import type { ResultCost, SearchResult } from '
|
|
1
|
+
import { type GoalRecallLogRow } from '../store/goals.js';
|
|
2
|
+
import { type MemoryEntry } from '../core/memory.js';
|
|
3
|
+
import type { PhysicsConfig } from '../core/physics-config.js';
|
|
4
|
+
import type { RerankerFn } from '../rerankers/types.js';
|
|
5
|
+
import type { ResultCost, SearchResult } from '../core/search-types.js';
|
|
6
6
|
/** Stores rankRecall reads and where it sends operator notes. */
|
|
7
7
|
export interface RankRecallCtx {
|
|
8
8
|
hippoRoot: string;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
// Ranking core shared by `hippo recall` and `hippo explain`: load, search, expand, re-rank and filter, with no
|
|
2
2
|
// writes and no direct output. Callers own flag parsing, printing, budget fitting and persistence.
|
|
3
|
-
import { evalNow } from '
|
|
4
|
-
import { oneCopyPerMemory } from './
|
|
5
|
-
import { compareEntryIdentity } from '
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { hybridSearch } from '
|
|
16
|
-
import { physicsSearch } from '
|
|
17
|
-
import { searchBothHybrid } from '
|
|
18
|
-
import { loadRecallSearchEntries, recallScopeFilter } from '
|
|
19
|
-
import { textOverlap, tokenize as tokenizeQuery } from '
|
|
3
|
+
import { evalNow } from '../core/ablation.js';
|
|
4
|
+
import { oneCopyPerMemory } from './context-select.js';
|
|
5
|
+
import { compareEntryIdentity, compareScoresDesc } from '../core/compare.js';
|
|
6
|
+
import { isEmbeddingAvailable } from '../store/embeddings/local.js';
|
|
7
|
+
import { activeGoalsWithPolicies, boostByGoals } from '../store/goals.js';
|
|
8
|
+
import { graphExpandRecall } from '../graph/recall.js';
|
|
9
|
+
import { DEFAULT_GRAPH_STREAM_WEIGHT } from '../graph/stream.js';
|
|
10
|
+
import { Layer } from '../core/memory.js';
|
|
11
|
+
import { multihopSearch } from '../search/multihop.js';
|
|
12
|
+
import { passesCliRecallScopeFilter } from '../store/recall-scope.js';
|
|
13
|
+
import { currentEntries } from '../search/as-of.js';
|
|
14
|
+
import { STRENGTH_RANK_FLOOR, STRENGTH_RANK_SPAN } from '../search/boosts.js';
|
|
15
|
+
import { hybridSearch } from '../search/hybrid.js';
|
|
16
|
+
import { physicsSearch } from '../search/physics-search.js';
|
|
17
|
+
import { searchBothHybrid } from '../sharing/shared.js';
|
|
18
|
+
import { loadRecallSearchEntries, recallScopeFilter } from '../store/search-rows.js';
|
|
19
|
+
import { textOverlap, tokenize as tokenizeQuery } from '../util/tokenize.js';
|
|
20
20
|
/** Ranks memories for a query as `hippo recall` does, through the `limit` slice. Reads stores, embeddings and
|
|
21
21
|
* physics state; writes nothing and prints nothing (notes go to `ctx.note`). The caller supplies the cost
|
|
22
22
|
* function and reranker in `opts`, and persists the returned goal-log rows. */
|
|
@@ -155,7 +155,7 @@ function traced(opts, prev, next, step) {
|
|
|
155
155
|
}
|
|
156
156
|
/** Re-sort after a score change. Plain and stable on purpose: ties keep the prior rank, not a content order. */
|
|
157
157
|
function byScore(results) {
|
|
158
|
-
return results.sort((a, b) =>
|
|
158
|
+
return results.sort((a, b) => compareScoresDesc(a.score, b.score));
|
|
159
159
|
}
|
|
160
160
|
function applyPfcRerankers(opts, state) {
|
|
161
161
|
if (opts.evcAdaptive && state.results.length >= 2)
|
|
@@ -168,8 +168,8 @@ function applyPfcRerankers(opts, state) {
|
|
|
168
168
|
const hasPeerInResults = (r.entry.conflicts_with || []).some((peerId) => presentIds.has(peerId));
|
|
169
169
|
if (!hasPeerInResults)
|
|
170
170
|
return r;
|
|
171
|
-
const next = { ...r, score: r.score *
|
|
172
|
-
return traced(opts, r, next, { stage: 'interference', multiplier:
|
|
171
|
+
const next = { ...r, score: r.score * CONFLICT_PEER_MULTIPLIER };
|
|
172
|
+
return traced(opts, r, next, { stage: 'interference', multiplier: CONFLICT_PEER_MULTIPLIER, scoreBefore: r.score, scoreAfter: next.score });
|
|
173
173
|
}));
|
|
174
174
|
}
|
|
175
175
|
if (opts.valueAware && state.results.length >= 1) {
|
|
@@ -179,7 +179,7 @@ function applyPfcRerankers(opts, state) {
|
|
|
179
179
|
const neg = r.entry.outcome_negative ?? 0;
|
|
180
180
|
if (pos === 0 && neg === 0)
|
|
181
181
|
return r;
|
|
182
|
-
const valueMult = Math.max(
|
|
182
|
+
const valueMult = Math.max(VALUE_MULT_MIN, Math.min(VALUE_MULT_MAX, 1 + VALUE_MULT_SLOPE * Math.tanh(pos - neg)));
|
|
183
183
|
const next = { ...r, score: r.score * valueMult };
|
|
184
184
|
return traced(opts, r, next, { stage: 'value', multiplier: valueMult, scoreBefore: r.score, scoreAfter: next.score });
|
|
185
185
|
}));
|
|
@@ -188,12 +188,26 @@ function applyPfcRerankers(opts, state) {
|
|
|
188
188
|
// utility = score * (0.5 + 0.5 * strength) * (1 - min(0.3, tokens / 10000)); long evidence-rich rows pay for length.
|
|
189
189
|
state.results = byScore(state.results.map((r) => {
|
|
190
190
|
const strength = typeof r.entry.strength === 'number' ? r.entry.strength : 1.0;
|
|
191
|
-
const utilityMult = (
|
|
191
|
+
const utilityMult = (STRENGTH_RANK_FLOOR + STRENGTH_RANK_SPAN * strength) * (1 - Math.min(UTILITY_LENGTH_PENALTY_CAP, (r.tokens || 0) / UTILITY_LENGTH_TOKENS));
|
|
192
192
|
const utility = r.score * utilityMult;
|
|
193
193
|
return traced(opts, r, { ...r, score: utility }, { stage: 'utility', multiplier: utilityMult, scoreBefore: r.score, scoreAfter: utility });
|
|
194
194
|
}));
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
|
+
// A recorded conflict peer in the same result list is cut to this share of its score.
|
|
198
|
+
const CONFLICT_PEER_MULTIPLIER = 0.3;
|
|
199
|
+
// The value-aware clamp is wider than the always-on outcome nudge, so outcome history can decide the order.
|
|
200
|
+
const VALUE_MULT_SLOPE = 0.3;
|
|
201
|
+
const VALUE_MULT_MIN = 0.7;
|
|
202
|
+
const VALUE_MULT_MAX = 1.3;
|
|
203
|
+
const UTILITY_LENGTH_PENALTY_CAP = 0.3;
|
|
204
|
+
const UTILITY_LENGTH_TOKENS = 10000;
|
|
205
|
+
// evcAdaptive acts when the top hits overlap this much; it keeps rows near the best score or covering the query.
|
|
206
|
+
const NEAR_DUPLICATE_OVERLAP_MIN = 0.4;
|
|
207
|
+
const SCORE_FLOOR_FRACTION = 0.5;
|
|
208
|
+
const QUERY_COVERAGE_MIN = 0.6;
|
|
209
|
+
const GOAL_TAG_BOOST = 1.5;
|
|
210
|
+
const SALIENCE_MIN_MULTIPLIER = 0.5;
|
|
197
211
|
/** When the top hits are near-duplicates (same topic, different facts), surface the newest on-topic row first. */
|
|
198
212
|
function evcAdaptive(query, results) {
|
|
199
213
|
const slice = results.slice(0, Math.min(3, results.length));
|
|
@@ -205,11 +219,11 @@ function evcAdaptive(query, results) {
|
|
|
205
219
|
pairs++;
|
|
206
220
|
}
|
|
207
221
|
}
|
|
208
|
-
if ((pairs > 0 ? overlapSum / pairs : 0) <
|
|
222
|
+
if ((pairs > 0 ? overlapSum / pairs : 0) < NEAR_DUPLICATE_OVERLAP_MIN)
|
|
209
223
|
return results;
|
|
210
224
|
const poolSize = Math.min(results.length, Math.max(slice.length * 3, 9));
|
|
211
225
|
const pool = results.slice(0, poolSize);
|
|
212
|
-
const scoreFloor = pool.reduce((m, r) => Math.max(m, r.score), 0) *
|
|
226
|
+
const scoreFloor = pool.reduce((m, r) => Math.max(m, r.score), 0) * SCORE_FLOOR_FRACTION;
|
|
213
227
|
// Query coverage catches the differently phrased update a score floor alone would miss.
|
|
214
228
|
const queryTokens = new Set(tokenizeQuery(query));
|
|
215
229
|
const onTopic = [];
|
|
@@ -223,7 +237,7 @@ function evcAdaptive(query, results) {
|
|
|
223
237
|
hits++;
|
|
224
238
|
}
|
|
225
239
|
const queryCoverage = queryTokens.size > 0 ? hits / queryTokens.size : 0;
|
|
226
|
-
(r.score >= scoreFloor || queryCoverage >=
|
|
240
|
+
(r.score >= scoreFloor || queryCoverage >= QUERY_COVERAGE_MIN ? onTopic : offTopic).push(r);
|
|
227
241
|
}
|
|
228
242
|
// Recency is the primary key; identity only breaks exact-timestamp ties.
|
|
229
243
|
onTopic.sort((a, b) => {
|
|
@@ -248,29 +262,20 @@ function applyGoalBoosts(ctx, opts, state) {
|
|
|
248
262
|
state.results = byScore(state.results.map((r) => {
|
|
249
263
|
if (!r.entry.tags?.includes(goalTag))
|
|
250
264
|
return r;
|
|
251
|
-
const boosted = { ...r, score: r.score *
|
|
252
|
-
return traced(opts, r, boosted, { stage: 'goal', multiplier:
|
|
265
|
+
const boosted = { ...r, score: r.score * GOAL_TAG_BOOST };
|
|
266
|
+
return traced(opts, r, boosted, { stage: 'goal', multiplier: GOAL_TAG_BOOST, scoreBefore: r.score, scoreAfter: r.score * GOAL_TAG_BOOST, note: `--goal ${goalTag}` });
|
|
253
267
|
}));
|
|
254
268
|
return;
|
|
255
269
|
}
|
|
256
270
|
if (!opts.sessionId)
|
|
257
271
|
return;
|
|
258
|
-
const db = openHippoDb(ctx.hippoRoot);
|
|
259
272
|
// The helper re-spreads rows, so its steps come back in a map keyed by entry id.
|
|
260
273
|
const goalBoostTrace = opts.why ? new Map() : undefined;
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
trace: goalBoostTrace,
|
|
267
|
-
});
|
|
268
|
-
state.results = boost.results;
|
|
269
|
-
state.goalRecallLog = boost.log;
|
|
270
|
-
}
|
|
271
|
-
finally {
|
|
272
|
-
closeHippoDb(db);
|
|
273
|
-
}
|
|
274
|
+
const session = { sessionId: opts.sessionId, tenantId: ctx.tenantId };
|
|
275
|
+
// The log may name global rows; the store drops those when it writes, as it does for api.recall.
|
|
276
|
+
const boost = boostByGoals(state.results, activeGoalsWithPolicies(ctx.hippoRoot, session), { ...session, limit: opts.limit, trace: goalBoostTrace });
|
|
277
|
+
state.results = boost.results;
|
|
278
|
+
state.goalRecallLog = boost.log;
|
|
274
279
|
if (goalBoostTrace && goalBoostTrace.size > 0) {
|
|
275
280
|
state.results = state.results.map((r) => {
|
|
276
281
|
const step = goalBoostTrace.get(r.entry.id);
|
|
@@ -284,7 +289,7 @@ function applySalience(opts, threshold, results) {
|
|
|
284
289
|
const count = r.entry.retrieval_count ?? 0;
|
|
285
290
|
if (count >= threshold)
|
|
286
291
|
return r;
|
|
287
|
-
const mult = Math.max(
|
|
292
|
+
const mult = Math.max(SALIENCE_MIN_MULTIPLIER, count / threshold);
|
|
288
293
|
const next = { ...r, score: r.score * mult };
|
|
289
294
|
return traced(opts, r, next, { stage: 'retrieval-count-downweight', multiplier: mult, scoreBefore: r.score, scoreAfter: next.score });
|
|
290
295
|
}));
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { type AppendAuditOpts, type AuditOp } from '../audit.js';
|
|
2
|
-
import type { AvailabilityHint } from '
|
|
3
|
-
import { RingBuffer, type AnchoringHint, type RecallHistorySnapshot } from '
|
|
1
|
+
import { type AppendAuditOpts, type AuditOp } from '../store/audit.js';
|
|
2
|
+
import type { AvailabilityHint } from './availability.js';
|
|
3
|
+
import { RingBuffer, type AnchoringHint, type RecallHistorySnapshot } from './recall-history.js';
|
|
4
|
+
import type { RecallWrites } from '../store/index.js';
|
|
5
|
+
import type { Context } from './types.js';
|
|
4
6
|
export type RecallSurface = 'cli' | 'mcp' | 'http';
|
|
5
7
|
/** The session's ring, created on first use; null when anchoring is off or the call has no session. */
|
|
6
8
|
export declare function sessionRing(surface: RecallSurface, tenantId: string, sessionId: string | undefined): RingBuffer | null;
|
|
@@ -9,19 +11,16 @@ export declare function peekSessionRing(surface: RecallSurface, tenantId: string
|
|
|
9
11
|
/** Records this recall's top row and hint, which the next recall's cooldown reads. */
|
|
10
12
|
export declare function noteRecall(ring: RingBuffer, query: string, topId: string | null, anchoredOn: string | undefined): void;
|
|
11
13
|
export declare function resetSessionRings(surface: RecallSurface): void;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
/** Whom a recall audit row names. */
|
|
15
|
+
export interface RecallAuditCaller {
|
|
14
16
|
readonly tenantId: string;
|
|
15
17
|
readonly actor: string;
|
|
16
|
-
/** Log and count a failed write instead of throwing, for a CLI command that has already done its work. */
|
|
17
|
-
readonly bestEffort?: boolean;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
export declare function callerOf(ctx: Context): RecallAuditCaller;
|
|
20
|
+
/** The strengthen every ranker of `retrieve` hands to the recall's write: the shown ids, in the caller's tenant. */
|
|
21
|
+
export declare function strengthenOf(ctx: Context, ids: readonly string[]): NonNullable<RecallWrites['strengthen']>;
|
|
21
22
|
type RecallAuditMetadata = Readonly<Record<string, string | number | null>>;
|
|
22
23
|
export declare function recallAuditRow(who: RecallAuditCaller, op: AuditOp, targetId?: string, metadata?: RecallAuditMetadata): AppendAuditOpts;
|
|
23
|
-
/** One audit row on its own short-lived handle. */
|
|
24
|
-
export declare function appendRecallAudit(who: RecallAuditor, op: AuditOp, targetId?: string, metadata?: RecallAuditMetadata): void;
|
|
25
24
|
export declare function recallAuditMetadata(query: string, results: number): {
|
|
26
25
|
results: number;
|
|
27
26
|
query_hash: string;
|
|
@@ -40,7 +39,5 @@ export interface ShownRecall {
|
|
|
40
39
|
}
|
|
41
40
|
/** The hint rows for a list a surface showed, so a surface on the store port can hand them to the recall's one write. */
|
|
42
41
|
export declare function shownRecallRows(who: RecallAuditCaller, shown: ShownRecall): AppendAuditOpts[];
|
|
43
|
-
/** For a surface that computes its hints over the list it shows: feeds the ring after the final detect, then audits the hints. */
|
|
44
|
-
export declare function recordShownRecall(who: RecallAuditor, shown: ShownRecall): void;
|
|
45
42
|
export {};
|
|
46
43
|
//# sourceMappingURL=recall-record.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// The recall session rings and the recall audit rows, in one place for the CLI, MCP and HTTP surfaces.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { appendRecall, biasHintEnabled, buildSessionKey, getOrCreateRing, hashQueryText, snapshotRing, } from '
|
|
2
|
+
import { isRecallBoostAblated } from '../core/ablation.js';
|
|
3
|
+
import { auditQueryFields } from '../store/audit.js';
|
|
4
|
+
import { appendRecall, biasHintEnabled, buildSessionKey, getOrCreateRing, hashQueryText, snapshotRing, } from './recall-history.js';
|
|
5
5
|
// One map per surface, each with its own LRU cap, so a repeat on one surface is a first recall on another.
|
|
6
6
|
const rings = {
|
|
7
7
|
cli: new Map(),
|
|
@@ -26,28 +26,15 @@ export function noteRecall(ring, query, topId, anchoredOn) {
|
|
|
26
26
|
export function resetSessionRings(surface) {
|
|
27
27
|
rings[surface].clear();
|
|
28
28
|
}
|
|
29
|
-
export function
|
|
30
|
-
return { tenantId:
|
|
29
|
+
export function callerOf(ctx) {
|
|
30
|
+
return { tenantId: ctx.tenantId, actor: ctx.actor.subject };
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
appendAuditEvent(db, row);
|
|
37
|
-
}
|
|
38
|
-
finally {
|
|
39
|
-
closeHippoDb(db);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
catch (err) {
|
|
43
|
-
if (!who.bestEffort)
|
|
44
|
-
throw err;
|
|
45
|
-
reportAuditWriteFailure(row.op, String(err), row.targetId);
|
|
46
|
-
}
|
|
32
|
+
/** The strengthen every ranker of `retrieve` hands to the recall's write: the shown ids, in the caller's tenant. */
|
|
33
|
+
export function strengthenOf(ctx, ids) {
|
|
34
|
+
return { ids, opts: { tenantId: ctx.tenantId, recallBoostAblated: isRecallBoostAblated() } };
|
|
47
35
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
writeRecallAudit(who, recallAuditRow(who, op, targetId, metadata));
|
|
36
|
+
export function recallAuditRow(who, op, targetId, metadata) {
|
|
37
|
+
return { tenantId: who.tenantId, actor: who.actor, op, targetId, metadata };
|
|
51
38
|
}
|
|
52
39
|
// The row stores a hash of the query, never its text, so an archived memory's words cannot persist there.
|
|
53
40
|
export function recallAuditMetadata(query, results) {
|
|
@@ -88,11 +75,4 @@ export function shownRecallRows(who, shown) {
|
|
|
88
75
|
...availabilityRows(who, shown.availability),
|
|
89
76
|
];
|
|
90
77
|
}
|
|
91
|
-
/** For a surface that computes its hints over the list it shows: feeds the ring after the final detect, then audits the hints. */
|
|
92
|
-
export function recordShownRecall(who, shown) {
|
|
93
|
-
if (shown.ring)
|
|
94
|
-
noteRecall(shown.ring, shown.query, shown.topId, shown.anchoring?.memoryId);
|
|
95
|
-
for (const row of shownRecallRows(who, shown))
|
|
96
|
-
writeRecallAudit(who, row);
|
|
97
|
-
}
|
|
98
78
|
//# sourceMappingURL=recall-record.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BadRequestError } from '../api-errors.js';
|
|
2
|
-
import { type JsonValue } from '../json.js';
|
|
1
|
+
import { BadRequestError } from '../core/api-errors.js';
|
|
2
|
+
import { type JsonValue } from '../util/json.js';
|
|
3
3
|
import type { ContextOpts } from './context-types.js';
|
|
4
4
|
import type { RecallOpts } from './recall-types.js';
|
|
5
5
|
/** A recall or context input the caller must fix; MCP answers it with an isError result, HTTP with a 400. */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// The recall and context input rules in one copy, so MCP and HTTP reject the same inputs with the same messages.
|
|
2
|
-
import { BadRequestError } from '../api-errors.js';
|
|
3
|
-
import { MAX_ID_LEN } from '../http-util.js';
|
|
4
|
-
import { isJsonString } from '../json.js';
|
|
2
|
+
import { BadRequestError } from '../core/api-errors.js';
|
|
3
|
+
import { MAX_ID_LEN } from '../util/http-util.js';
|
|
4
|
+
import { isJsonString } from '../util/json.js';
|
|
5
5
|
const MAX_RECALL_LIMIT = 1000;
|
|
6
6
|
// recall() owns the shape rule for scorer_window (invalid_scorer_window); this cap bounds remote cost.
|
|
7
7
|
const MAX_SCORER_WINDOW = 1000;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
6
|
-
import type {
|
|
7
|
-
import type {
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
1
|
+
import type { ContinuityBlock } from '../store/port.js';
|
|
2
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
3
|
+
import type { RerankStep, SearchResult } from '../core/search-types.js';
|
|
4
|
+
import type { PlanningFallacyHint, PlanningFallacyOutput, PlanningFallacyWatching } from '../predictions/planning-fallacy.js';
|
|
5
|
+
import type { AnchoringHint, RecallHistorySnapshot } from './recall-history.js';
|
|
6
|
+
import type { AvailabilityHint } from './availability.js';
|
|
7
|
+
import type { AppendAuditOpts } from '../store/audit.js';
|
|
8
|
+
import type { CallerProject } from './prompt-hook.js';
|
|
9
|
+
import type { RankRecallOpts, RankRecallResult } from './recall-pipeline.js';
|
|
10
10
|
export interface RecallOpts {
|
|
11
11
|
query: string;
|
|
12
12
|
limit?: number;
|
|
@@ -155,6 +155,35 @@ export interface RecallOpts {
|
|
|
155
155
|
leadingAudit?: readonly AppendAuditOpts[];
|
|
156
156
|
/** MCP recall only: `retrieve` ranks the whole scoped store and strengthens and traces (pipeline 'mcp') just the ids this returns; `results` stays the window band. */
|
|
157
157
|
showRanked?: (ranking: StoreRanking, result: RecallResult) => ShownRanking;
|
|
158
|
+
/** Named ranker: `retrieve` ranks with the CLI ranking core. Unset, it ranks the SQL BM25 band, or the wide hybrid list under `showRanked`. */
|
|
159
|
+
cliCore?: CliCoreRanker;
|
|
160
|
+
}
|
|
161
|
+
interface CliCoreRanking {
|
|
162
|
+
rank: Omit<RankRecallOpts, 'query' | 'sessionId' | 'goalTag'>;
|
|
163
|
+
/** A second store searched beside `ctx.hippoRoot`. */
|
|
164
|
+
sources?: {
|
|
165
|
+
globalRoot?: string;
|
|
166
|
+
};
|
|
167
|
+
/** Receives each operator note when ranking reaches it. */
|
|
168
|
+
note?: (line: string) => void;
|
|
169
|
+
}
|
|
170
|
+
/** A recall the caller prints. `show` runs once ranking ends, unless it halted; `retrieve` then records the list it returns. */
|
|
171
|
+
export interface CliCoreRecall extends CliCoreRanking {
|
|
172
|
+
/** The host agent's session: it stamps the token ledger row, and the trace when the recall names no session. */
|
|
173
|
+
hostSessionId?: string;
|
|
174
|
+
show: (ranking: RankRecallResult, planning: PlanningFallacyOutput) => ShownCliCore;
|
|
175
|
+
}
|
|
176
|
+
/** A read-only look at the ranking (`hippo explain`): no hint is evaluated and nothing is written. */
|
|
177
|
+
export interface CliCoreInspection extends CliCoreRanking {
|
|
178
|
+
inspect: (ranking: RankRecallResult) => void;
|
|
179
|
+
}
|
|
180
|
+
/** The CLI ranking core (`rankRecall`) as a ranker of `retrieve`: host admin only, on hippo.db. Of the other RecallOpts it reads `query`, `sessionId` and `goalTag`. */
|
|
181
|
+
export type CliCoreRanker = CliCoreRecall | CliCoreInspection;
|
|
182
|
+
/** `results`: the rows the caller shows, best first; `audit`: its hint rows, written ahead of the 'recall' row; `tokens`: the text it prints, for the ledger. */
|
|
183
|
+
export interface ShownCliCore {
|
|
184
|
+
results: readonly SearchResult[];
|
|
185
|
+
audit: readonly AppendAuditOpts[];
|
|
186
|
+
tokens: number;
|
|
158
187
|
}
|
|
159
188
|
/** `ids`: what the caller showed; `audit`: its own rows, written after the recall's and in the same transaction, so all land or none. */
|
|
160
189
|
export interface ShownRanking {
|
|
@@ -167,11 +196,7 @@ export interface StoreRanking {
|
|
|
167
196
|
pool: MemoryEntry[];
|
|
168
197
|
droppedByScope: number;
|
|
169
198
|
}
|
|
170
|
-
export
|
|
171
|
-
activeSnapshot: TaskSnapshot | null;
|
|
172
|
-
sessionHandoff: SessionHandoff | null;
|
|
173
|
-
recentSessionEvents: SessionEvent[];
|
|
174
|
-
}
|
|
199
|
+
export type { ContinuityBlock } from '../store/port.js';
|
|
175
200
|
export interface RecallResultItem {
|
|
176
201
|
id: string;
|
|
177
202
|
content: string;
|
|
@@ -263,7 +288,7 @@ export interface RecallResult {
|
|
|
263
288
|
* the calling agent sees its track record at the moment of forecasting
|
|
264
289
|
* (Lovallo-Kahneman 2003 inside-vs-outside view).
|
|
265
290
|
*
|
|
266
|
-
* Populated by `api.recall` itself via `
|
|
291
|
+
* Populated by `api.recall` itself via `decidePlanningFallacy`.
|
|
267
292
|
* Pipeline-invariant: the value depends only on (queryText, tenantId,
|
|
268
293
|
* predictions table state) — all three are identical regardless of
|
|
269
294
|
* which downstream search pipeline produces the memory list, so MCP
|
|
@@ -372,7 +397,7 @@ export interface RecallSuppressionSummary {
|
|
|
372
397
|
/** Counter of memories suppressed by detected interference patterns.
|
|
373
398
|
* Incremented by 1 PER PIPELINE when that
|
|
374
399
|
* pipeline's own memory_dominance verdict fires (via the
|
|
375
|
-
* anchoring detector, see `detectAnchoring()` in src/recall-history.ts).
|
|
400
|
+
* anchoring detector, see `detectAnchoring()` in src/api/recall-history.ts).
|
|
376
401
|
* Each pipeline (api.recall, cmdRecall, MCP physics/hybrid) bumps its
|
|
377
402
|
* OWN suppressionSummary independently because each runs its own
|
|
378
403
|
* detector against its own top-1 + its own per-(tenant, session) ring
|
package/dist/api/recall.d.ts
CHANGED
|
@@ -32,6 +32,6 @@ export declare function buildSuppressionSummary(counts: {
|
|
|
32
32
|
* `tests/api-recall-no-side-effects.test.ts`.
|
|
33
33
|
*/
|
|
34
34
|
export declare function recall(ctx: Context, opts: RecallOpts): RecallResult;
|
|
35
|
-
/**
|
|
35
|
+
/** The one recall entry: ranks with the ranker `opts` names, then writes the recall. Only the CLI core ranker writes last_retrieval_ids (contract lock). */
|
|
36
36
|
export declare function retrieve(ctx: Context, opts: RecallOpts): Promise<RecallResult>;
|
|
37
37
|
//# sourceMappingURL=recall.d.ts.map
|