hippo-memory 1.69.0 → 1.71.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 +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- 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/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- 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} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- 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 +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +38 -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/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- 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 +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +27 -12
- package/dist/api/remember.js +42 -46
- 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 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- 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 +5 -13
- package/dist/capture/command.js +57 -60
- 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 +8 -16
- package/dist/capture/compact.js +56 -47
- 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} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- 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} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- 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.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- 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.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- 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} +7 -7
- 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} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -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 +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- 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/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- 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} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- 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 +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- 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} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- 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 +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- 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 +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- 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 +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -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/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- 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 -3
- package/dist/search/boosts.js +36 -15
- 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/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -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} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- 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/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- 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 +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- 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 +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- 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 +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- 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/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- 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 +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- 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 +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- 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 +61 -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 +29 -0
- package/dist/store/sqlite/executor.js +287 -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 +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -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 +23 -0
- package/dist/store/sqlite/store.js +294 -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 +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +11 -0
- package/dist/store/tenant.js +28 -0
- 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} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- 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 +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- 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 +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- 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} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- 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 +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- 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/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- 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/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- 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/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /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/{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/{share-scrub.d.ts → capture/share-scrub.d.ts} +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/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +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/{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.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +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/{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/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
package/dist/recall-history.d.ts
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Anchoring detector (recall-recurrence), pure module.
|
|
3
|
-
*
|
|
4
|
-
* Implements two detection rules:
|
|
5
|
-
* query_repeat: same queryHash within recentRepeatWindow returned
|
|
6
|
-
* same topMemoryId (caller is re-asking the same question).
|
|
7
|
-
* memory_dominance: same topMemoryId across >= minDominance distinct
|
|
8
|
-
* queryHashes (memory acts as a fixed-point anchor regardless of what
|
|
9
|
-
* the agent asks).
|
|
10
|
-
*
|
|
11
|
-
* Each pipeline (api.recall via
|
|
12
|
-
* HTTP, cmdRecall, MCP hippo_recall) owns its OWN ring buffer Map keyed
|
|
13
|
-
* by (tenant, session). No cross-pipeline sharing (the typical multi-
|
|
14
|
-
* process deployment makes IPC ring-sharing impractical; per-pipeline
|
|
15
|
-
* is correct because each pipeline has its own top-1 ranking anyway).
|
|
16
|
-
*
|
|
17
|
-
* AnchoringHint + PlanningFallacyHint are independent
|
|
18
|
-
* signals; both can fire on the same recall.
|
|
19
|
-
*/
|
|
20
|
-
export type AnchoringReason = 'query_repeat' | 'memory_dominance';
|
|
21
|
-
export interface AnchoringHint {
|
|
22
|
-
reason: AnchoringReason;
|
|
23
|
-
/** The memory ID that is anchoring the agent's reasoning. */
|
|
24
|
-
memoryId: string;
|
|
25
|
-
/** For 'memory_dominance': how many distinct queries in the recent window
|
|
26
|
-
* had this memory as their top-1 result. Always >= 3 when emitted. */
|
|
27
|
-
queryCount?: number;
|
|
28
|
-
/** Human-readable summary surfaced to the agent. */
|
|
29
|
-
summary: string;
|
|
30
|
-
/** Discriminator for hint origin; reserved for future variants. */
|
|
31
|
-
source: 'j1-recurrence';
|
|
32
|
-
}
|
|
33
|
-
export interface RecallHistoryEntry {
|
|
34
|
-
/** Hash of the queryText that produced this entry (see hashQueryText). */
|
|
35
|
-
queryHash: number;
|
|
36
|
-
/** Top-1 memory id this recall surfaced; null if zero results. */
|
|
37
|
-
topMemoryId: string | null;
|
|
38
|
-
/** ISO-8601 timestamp; advisory, not used by the detection rules. */
|
|
39
|
-
ts: string;
|
|
40
|
-
/** Memory id of the AnchoringHint that fired on this recall, if any.
|
|
41
|
-
* Used by the cooldown logic to prevent re-emitting the same hint on
|
|
42
|
-
* consecutive recalls within the dominance window. Caller-written
|
|
43
|
-
* AFTER detectAnchoring returns; reads next time detectAnchoring runs. */
|
|
44
|
-
anchoredOn?: string;
|
|
45
|
-
}
|
|
46
|
-
export type RecallHistorySnapshot = readonly RecallHistoryEntry[];
|
|
47
|
-
export interface DetectAnchoringOpts {
|
|
48
|
-
/** memory_dominance threshold: number of distinct queryHashes that must have returned
|
|
49
|
-
* the same topMemoryId. Default 3. */
|
|
50
|
-
minDominance?: number;
|
|
51
|
-
/** query_repeat window: how many recent history entries to scan for query repeat.
|
|
52
|
-
* Default 5. */
|
|
53
|
-
recentRepeatWindow?: number;
|
|
54
|
-
/** Cooldown: if the immediately-prior fire (per `anchoredOn`) was for
|
|
55
|
-
* the same topMemoryId within this many history entries, suppress.
|
|
56
|
-
* Default 3. */
|
|
57
|
-
cooldown?: number;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Normalize + hash a query text into a 32-bit integer.
|
|
61
|
-
* Lowercase → strip non-alphanumeric → split → drop empty + short tokens →
|
|
62
|
-
* sort tokens → join → FNV-1a 32-bit.
|
|
63
|
-
*
|
|
64
|
-
* Token sort + dedup means semantically-equivalent queries with reordered
|
|
65
|
-
* words collide intentionally ("semantically-distinct" is approximated by
|
|
66
|
-
* textual normalization, not embeddings).
|
|
67
|
-
*
|
|
68
|
-
* Deterministic across processes; stable across Node + V8 versions.
|
|
69
|
-
*/
|
|
70
|
-
export declare function hashQueryText(query: string): number;
|
|
71
|
-
/**
|
|
72
|
-
* Detect anchoring patterns in the recall history against the current
|
|
73
|
-
* recall's (queryHash, topMemoryId).
|
|
74
|
-
*
|
|
75
|
-
* Rule precedence: memory_dominance wins on tie. When both rules fire on the
|
|
76
|
-
* same recall, return only memory_dominance, the stronger signal (a memory
|
|
77
|
-
* dominating multiple DIFFERENT queries is a fixed-point anchor; query_repeat
|
|
78
|
-
* alone is just a literal re-ask).
|
|
79
|
-
*
|
|
80
|
-
* Cooldown: if the immediately-prior recall fired a hint on the SAME
|
|
81
|
-
* topMemoryId within `cooldown=3` history entries, suppress. Prevents
|
|
82
|
-
* spam when the agent repeatedly recalls within the dominance window.
|
|
83
|
-
* Cooldown is per-memory, not per-rule: if memory_dominance fired on M
|
|
84
|
-
* (cooldown engaged for M), and the next recall has top=N + repeated query,
|
|
85
|
-
* query_repeat fires on N (different memory, not in cooldown).
|
|
86
|
-
*
|
|
87
|
-
* @returns AnchoringHint when a pattern fires; null otherwise.
|
|
88
|
-
*/
|
|
89
|
-
export declare function detectAnchoring(history: RecallHistorySnapshot, currentQueryHash: number, currentTopMemoryId: string | null, opts?: DetectAnchoringOpts): AnchoringHint | null;
|
|
90
|
-
/**
|
|
91
|
-
* Bounded FIFO ring of RecallHistoryEntry. Newest entries pushed via
|
|
92
|
-
* append; oldest evicted when the ring is full. The class is intentionally
|
|
93
|
-
* a thin wrapper around an array so snapshotRing returns a readonly view
|
|
94
|
-
* without copying on the hot path.
|
|
95
|
-
*/
|
|
96
|
-
export declare class RingBuffer {
|
|
97
|
-
private entries;
|
|
98
|
-
append(entry: RecallHistoryEntry): void;
|
|
99
|
-
snapshot(): RecallHistorySnapshot;
|
|
100
|
-
size(): number;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Build the (tenant, session) key for a per-session ring Map. Uses a NUL
|
|
104
|
-
* (`\x00`) byte as delimiter because tenant ids and session ids are
|
|
105
|
-
* validated elsewhere to reject NUL chars — guarantees collision-free
|
|
106
|
-
* concatenation regardless of what `:` or other delimiters might appear
|
|
107
|
-
* inside either field (notably API-key-derived subjects can contain `:`).
|
|
108
|
-
*/
|
|
109
|
-
export declare function buildSessionKey(tenantId: string, sessionId: string): string;
|
|
110
|
-
/**
|
|
111
|
-
* Get-or-create a RingBuffer for a session key. Caps total tracked keys
|
|
112
|
-
* at `maxSessions` (default 1000) with LRU eviction — when the cap is
|
|
113
|
-
* hit, deletes the oldest-inserted key before inserting the new one.
|
|
114
|
-
* Map iteration order preserves insertion order per ECMA-262 spec, so
|
|
115
|
-
* "oldest" = first key returned by Map.prototype.keys().
|
|
116
|
-
*/
|
|
117
|
-
export declare function getOrCreateRing(map: Map<string, RingBuffer>, key: string, maxSessions?: number): RingBuffer;
|
|
118
|
-
/**
|
|
119
|
-
* Append a recall to a ring. The `anchoredOn` argument carries the
|
|
120
|
-
* memoryId of the AnchoringHint that fired on THIS recall (or undefined
|
|
121
|
-
* if no hint). detectAnchoring reads it next time for cooldown gating.
|
|
122
|
-
*/
|
|
123
|
-
export declare function appendRecall(ring: RingBuffer, queryHash: number, topMemoryId: string | null, anchoredOn?: string): void;
|
|
124
|
-
/** Snapshot a ring as a readonly RecallHistorySnapshot. */
|
|
125
|
-
export declare function snapshotRing(ring: RingBuffer): RecallHistorySnapshot;
|
|
126
|
-
/**
|
|
127
|
-
* Whether a recall bias hint is enabled. Reads the env at call time, so
|
|
128
|
-
* `HIPPO_ANCHORING=off` or `HIPPO_AVAILABILITY=off` disables only that kind.
|
|
129
|
-
*/
|
|
130
|
-
export declare function biasHintEnabled(kind: 'anchoring' | 'availability'): boolean;
|
|
131
|
-
//# sourceMappingURL=recall-history.d.ts.map
|
package/dist/recall-history.js
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Anchoring detector (recall-recurrence), pure module.
|
|
3
|
-
*
|
|
4
|
-
* Implements two detection rules:
|
|
5
|
-
* query_repeat: same queryHash within recentRepeatWindow returned
|
|
6
|
-
* same topMemoryId (caller is re-asking the same question).
|
|
7
|
-
* memory_dominance: same topMemoryId across >= minDominance distinct
|
|
8
|
-
* queryHashes (memory acts as a fixed-point anchor regardless of what
|
|
9
|
-
* the agent asks).
|
|
10
|
-
*
|
|
11
|
-
* Each pipeline (api.recall via
|
|
12
|
-
* HTTP, cmdRecall, MCP hippo_recall) owns its OWN ring buffer Map keyed
|
|
13
|
-
* by (tenant, session). No cross-pipeline sharing (the typical multi-
|
|
14
|
-
* process deployment makes IPC ring-sharing impractical; per-pipeline
|
|
15
|
-
* is correct because each pipeline has its own top-1 ranking anyway).
|
|
16
|
-
*
|
|
17
|
-
* AnchoringHint + PlanningFallacyHint are independent
|
|
18
|
-
* signals; both can fire on the same recall.
|
|
19
|
-
*/
|
|
20
|
-
import { envAnchoringOff, envAvailabilityOff } from './env.js';
|
|
21
|
-
const DEFAULT_MIN_DOMINANCE = 3;
|
|
22
|
-
const DEFAULT_RECENT_REPEAT_WINDOW = 5;
|
|
23
|
-
const DEFAULT_COOLDOWN = 3;
|
|
24
|
-
// ---------------------------------------------------------------------------
|
|
25
|
-
// Query text normalization + hashing
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
/**
|
|
28
|
-
* Normalize + hash a query text into a 32-bit integer.
|
|
29
|
-
* Lowercase → strip non-alphanumeric → split → drop empty + short tokens →
|
|
30
|
-
* sort tokens → join → FNV-1a 32-bit.
|
|
31
|
-
*
|
|
32
|
-
* Token sort + dedup means semantically-equivalent queries with reordered
|
|
33
|
-
* words collide intentionally ("semantically-distinct" is approximated by
|
|
34
|
-
* textual normalization, not embeddings).
|
|
35
|
-
*
|
|
36
|
-
* Deterministic across processes; stable across Node + V8 versions.
|
|
37
|
-
*/
|
|
38
|
-
export function hashQueryText(query) {
|
|
39
|
-
if (!query)
|
|
40
|
-
return 0;
|
|
41
|
-
// Tokens are deduped before join so `foo foo bar` and `foo bar` count as one query for memory_dominance.
|
|
42
|
-
// Unicode classes (\p{L} letter, \p{N} number, \p{M} combining mark; needs /u) keep
|
|
43
|
-
// non-Latin queries from collapsing to an empty token set and colliding at hash 0.
|
|
44
|
-
const normalized = query
|
|
45
|
-
.toLowerCase()
|
|
46
|
-
.replace(/[^\p{L}\p{N}\p{M}\s]/gu, ' ')
|
|
47
|
-
.split(/\s+/)
|
|
48
|
-
.filter((t) => t.length > 0);
|
|
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.
|
|
51
|
-
const filtered = normalized.filter((t) => t.length >= 3);
|
|
52
|
-
// Fall back to all tokens when the filter empties the query (CJK 2-char words,
|
|
53
|
-
// acronyms like `AI`) so distinct short queries do not all hash to fnv1a32('').
|
|
54
|
-
const tokens = filtered.length > 0 ? filtered : normalized;
|
|
55
|
-
const deduped = Array.from(new Set(tokens)).sort();
|
|
56
|
-
return fnv1a32(deduped.join(' '));
|
|
57
|
-
}
|
|
58
|
-
function fnv1a32(text) {
|
|
59
|
-
// FNV-1a 32-bit. Offset basis 2166136261, prime 16777619.
|
|
60
|
-
let hash = 2166136261;
|
|
61
|
-
for (let i = 0; i < text.length; i++) {
|
|
62
|
-
hash ^= text.charCodeAt(i);
|
|
63
|
-
// 32-bit multiply via Math.imul — handles overflow correctly.
|
|
64
|
-
hash = Math.imul(hash, 16777619);
|
|
65
|
-
}
|
|
66
|
-
// Coerce to unsigned 32-bit for stable comparison.
|
|
67
|
-
return hash >>> 0;
|
|
68
|
-
}
|
|
69
|
-
// ---------------------------------------------------------------------------
|
|
70
|
-
// Anchoring detection
|
|
71
|
-
// ---------------------------------------------------------------------------
|
|
72
|
-
/**
|
|
73
|
-
* Detect anchoring patterns in the recall history against the current
|
|
74
|
-
* recall's (queryHash, topMemoryId).
|
|
75
|
-
*
|
|
76
|
-
* Rule precedence: memory_dominance wins on tie. When both rules fire on the
|
|
77
|
-
* same recall, return only memory_dominance, the stronger signal (a memory
|
|
78
|
-
* dominating multiple DIFFERENT queries is a fixed-point anchor; query_repeat
|
|
79
|
-
* alone is just a literal re-ask).
|
|
80
|
-
*
|
|
81
|
-
* Cooldown: if the immediately-prior recall fired a hint on the SAME
|
|
82
|
-
* topMemoryId within `cooldown=3` history entries, suppress. Prevents
|
|
83
|
-
* spam when the agent repeatedly recalls within the dominance window.
|
|
84
|
-
* Cooldown is per-memory, not per-rule: if memory_dominance fired on M
|
|
85
|
-
* (cooldown engaged for M), and the next recall has top=N + repeated query,
|
|
86
|
-
* query_repeat fires on N (different memory, not in cooldown).
|
|
87
|
-
*
|
|
88
|
-
* @returns AnchoringHint when a pattern fires; null otherwise.
|
|
89
|
-
*/
|
|
90
|
-
export function detectAnchoring(history, currentQueryHash, currentTopMemoryId, opts = {}) {
|
|
91
|
-
if (currentTopMemoryId === null)
|
|
92
|
-
return null;
|
|
93
|
-
const minDominance = opts.minDominance ?? DEFAULT_MIN_DOMINANCE;
|
|
94
|
-
const recentRepeatWindow = opts.recentRepeatWindow ?? DEFAULT_RECENT_REPEAT_WINDOW;
|
|
95
|
-
const cooldown = opts.cooldown ?? DEFAULT_COOLDOWN;
|
|
96
|
-
// Cooldown gate: was the most-recent hint (across the last `cooldown`
|
|
97
|
-
// entries) for THIS memory? If yes, suppress regardless of rule.
|
|
98
|
-
const cooldownSlice = history.slice(-cooldown);
|
|
99
|
-
for (const entry of cooldownSlice) {
|
|
100
|
-
if (entry.anchoredOn === currentTopMemoryId) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
// memory_dominance check FIRST (wins on tie). Count distinct queryHashes in history
|
|
105
|
-
// where topMemoryId === currentTopMemoryId (excluding null tops).
|
|
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;
|
|
115
|
-
if (queryCount >= minDominance) {
|
|
116
|
-
return {
|
|
117
|
-
reason: 'memory_dominance',
|
|
118
|
-
memoryId: currentTopMemoryId,
|
|
119
|
-
queryCount,
|
|
120
|
-
summary: `Memory ${currentTopMemoryId} has been the top result for ${queryCount} distinct queries in this session and may be anchoring your reasoning.`,
|
|
121
|
-
source: 'j1-recurrence',
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
// query_repeat check: is currentQueryHash present in the last `recentRepeatWindow`
|
|
125
|
-
// entries AND was that entry's topMemoryId === currentTopMemoryId?
|
|
126
|
-
const r1Slice = history.slice(-recentRepeatWindow);
|
|
127
|
-
for (const entry of r1Slice) {
|
|
128
|
-
if (entry.queryHash === currentQueryHash && entry.topMemoryId === currentTopMemoryId) {
|
|
129
|
-
return {
|
|
130
|
-
reason: 'query_repeat',
|
|
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
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return null;
|
|
138
|
-
}
|
|
139
|
-
// ---------------------------------------------------------------------------
|
|
140
|
-
// RingBuffer + caller-side state helpers
|
|
141
|
-
// ---------------------------------------------------------------------------
|
|
142
|
-
const MAX_HISTORY = 10;
|
|
143
|
-
const DEFAULT_MAX_SESSIONS = 1000;
|
|
144
|
-
/**
|
|
145
|
-
* Bounded FIFO ring of RecallHistoryEntry. Newest entries pushed via
|
|
146
|
-
* append; oldest evicted when the ring is full. The class is intentionally
|
|
147
|
-
* a thin wrapper around an array so snapshotRing returns a readonly view
|
|
148
|
-
* without copying on the hot path.
|
|
149
|
-
*/
|
|
150
|
-
export class RingBuffer {
|
|
151
|
-
entries = [];
|
|
152
|
-
append(entry) {
|
|
153
|
-
this.entries.push(entry);
|
|
154
|
-
if (this.entries.length > MAX_HISTORY) {
|
|
155
|
-
this.entries.shift();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
snapshot() {
|
|
159
|
-
return this.entries;
|
|
160
|
-
}
|
|
161
|
-
size() {
|
|
162
|
-
return this.entries.length;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Build the (tenant, session) key for a per-session ring Map. Uses a NUL
|
|
167
|
-
* (`\x00`) byte as delimiter because tenant ids and session ids are
|
|
168
|
-
* validated elsewhere to reject NUL chars — guarantees collision-free
|
|
169
|
-
* concatenation regardless of what `:` or other delimiters might appear
|
|
170
|
-
* inside either field (notably API-key-derived subjects can contain `:`).
|
|
171
|
-
*/
|
|
172
|
-
export function buildSessionKey(tenantId, sessionId) {
|
|
173
|
-
return `${tenantId}\x00${sessionId}`;
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Get-or-create a RingBuffer for a session key. Caps total tracked keys
|
|
177
|
-
* at `maxSessions` (default 1000) with LRU eviction — when the cap is
|
|
178
|
-
* hit, deletes the oldest-inserted key before inserting the new one.
|
|
179
|
-
* Map iteration order preserves insertion order per ECMA-262 spec, so
|
|
180
|
-
* "oldest" = first key returned by Map.prototype.keys().
|
|
181
|
-
*/
|
|
182
|
-
export function getOrCreateRing(map, key, maxSessions = DEFAULT_MAX_SESSIONS) {
|
|
183
|
-
const existing = map.get(key);
|
|
184
|
-
if (existing) {
|
|
185
|
-
// LRU touch: delete + re-insert to move to back of iteration order.
|
|
186
|
-
map.delete(key);
|
|
187
|
-
map.set(key, existing);
|
|
188
|
-
return existing;
|
|
189
|
-
}
|
|
190
|
-
if (map.size >= maxSessions) {
|
|
191
|
-
const oldest = map.keys().next().value;
|
|
192
|
-
if (oldest !== undefined)
|
|
193
|
-
map.delete(oldest);
|
|
194
|
-
}
|
|
195
|
-
const ring = new RingBuffer();
|
|
196
|
-
map.set(key, ring);
|
|
197
|
-
return ring;
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Append a recall to a ring. The `anchoredOn` argument carries the
|
|
201
|
-
* memoryId of the AnchoringHint that fired on THIS recall (or undefined
|
|
202
|
-
* if no hint). detectAnchoring reads it next time for cooldown gating.
|
|
203
|
-
*/
|
|
204
|
-
export function appendRecall(ring, queryHash, topMemoryId, anchoredOn) {
|
|
205
|
-
const entry = {
|
|
206
|
-
queryHash,
|
|
207
|
-
topMemoryId,
|
|
208
|
-
ts: new Date().toISOString(),
|
|
209
|
-
};
|
|
210
|
-
if (anchoredOn !== undefined)
|
|
211
|
-
entry.anchoredOn = anchoredOn;
|
|
212
|
-
ring.append(entry);
|
|
213
|
-
}
|
|
214
|
-
/** Snapshot a ring as a readonly RecallHistorySnapshot. */
|
|
215
|
-
export function snapshotRing(ring) {
|
|
216
|
-
return ring.snapshot();
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Whether a recall bias hint is enabled. Reads the env at call time, so
|
|
220
|
-
* `HIPPO_ANCHORING=off` or `HIPPO_AVAILABILITY=off` disables only that kind.
|
|
221
|
-
*/
|
|
222
|
-
export function biasHintEnabled(kind) {
|
|
223
|
-
return kind === 'anchoring'
|
|
224
|
-
? !envAnchoringOff()
|
|
225
|
-
: !envAvailabilityOff();
|
|
226
|
-
}
|
|
227
|
-
//# sourceMappingURL=recall-history.js.map
|
package/dist/recall-scope.d.ts
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recall-side scope predicates, in a leaf module so shared.ts (which api.ts
|
|
3
|
-
* imports) can apply the same default-deny rule to searchBothHybrid's internal
|
|
4
|
-
* candidate loads without an import cycle. api.ts imports
|
|
5
|
-
* these for its own call sites AND re-exports them for back-compat
|
|
6
|
-
* (`api.isPrivateScope`, test imports of `passesScopeFilterForRecall`).
|
|
7
|
-
*/
|
|
8
|
-
import { ForbiddenError } from './api-errors.js';
|
|
9
|
-
/**
|
|
10
|
-
* Literal scopes excluded from recall by default-deny when the
|
|
11
|
-
* caller passes no `scope`. The SQL clause in `loadSearchRows` and the JS
|
|
12
|
-
* helper `passesScopeFilterForRecall` (src/api.ts) both read from this
|
|
13
|
-
* constant. Adding a deny scope is a one-place change.
|
|
14
|
-
*
|
|
15
|
-
* Regex-based denies (e.g. `<source>:private:*`) stay in
|
|
16
|
-
* `passesScopeFilterForRecall` as a separate JS step — they don't translate
|
|
17
|
-
* cleanly to SQL.
|
|
18
|
-
*
|
|
19
|
-
* Invariant: never empty. An empty array would silently allow quarantine
|
|
20
|
-
* scopes through both paths (SQL clause omitted, JS check vacuous). The
|
|
21
|
-
* module-load assertion below pins this loudly.
|
|
22
|
-
*/
|
|
23
|
-
export declare const RECALL_DEFAULT_DENY_SCOPES: readonly ["unknown:legacy"];
|
|
24
|
-
/**
|
|
25
|
-
* @internal Runtime guard against a future maintainer blanking a
|
|
26
|
-
* load-bearing literal array. Extracted from the inline guard so the throw
|
|
27
|
-
* path is directly testable. `as const` arrays widen via `readonly T[]` at
|
|
28
|
-
* the call site so the empty case is reachable at runtime.
|
|
29
|
-
*/
|
|
30
|
-
export declare function assertNonEmpty<T>(arr: readonly T[], name: string): void;
|
|
31
|
-
/**
|
|
32
|
-
* Source-agnostic private-scope detector. A scope string is treated
|
|
33
|
-
* as private when it has the shape `<lowercase-source>:private:<rest>`.
|
|
34
|
-
*
|
|
35
|
-
* Examples that match:
|
|
36
|
-
* slack:private:Cabc, github:private:owner/repo, jira:private:PROJ-1
|
|
37
|
-
* Examples that DO NOT match:
|
|
38
|
-
* slack:public:Cgeneral, acme:public:my-private-channel, null, '',
|
|
39
|
-
* 'unknown:legacy', 'private' (alone), 'private:foo' (no source prefix).
|
|
40
|
-
*
|
|
41
|
-
* Used by api.recall, mcp/server.ts (hippo_recall + hippo_context),
|
|
42
|
-
* cli.ts (cmdRecall + cmdExplain + continuity), shared.ts (searchBothHybrid
|
|
43
|
-
* recall mode). Keep these in sync — the export is the single source of
|
|
44
|
-
* truth so connector work cannot drift.
|
|
45
|
-
*/
|
|
46
|
-
export declare const PRIVATE_SCOPE_RE: RegExp;
|
|
47
|
-
/** True when `scope` matches the `<source>:private:*` shape. */
|
|
48
|
-
export declare function isPrivateScope(scope: string | null | undefined): boolean;
|
|
49
|
-
export declare const PERSONAL_SCOPE_PREFIX = "personal:private:";
|
|
50
|
-
export declare const PERSONAL_OWNER_MAX: number;
|
|
51
|
-
/** True for a `personal:private:<owner>` scope, any case, so a case variant is never mistaken for a team scope. */
|
|
52
|
-
export declare function isPersonalScope(scope: string | null | undefined): boolean;
|
|
53
|
-
/** The caller's own personal scope, or null when it has no owner that can hold one. */
|
|
54
|
-
export declare function personalScopeOf(actor: {
|
|
55
|
-
owner?: string;
|
|
56
|
-
} | undefined): string | null;
|
|
57
|
-
/** Refuses a client-sent `personal:` scope: only the server stamps one, from the caller's owner. */
|
|
58
|
-
export declare function assertClientScope(scope: string | null | undefined): void;
|
|
59
|
-
/** True when `actor` may change or delete a row in `scope`: any non-personal scope, or its own personal one. */
|
|
60
|
-
export declare function canTouchScope(actor: {
|
|
61
|
-
owner?: string;
|
|
62
|
-
}, scope: string | null): boolean;
|
|
63
|
-
/** canTouchScope for a caller known by its own personal scope, as a store method receives it. */
|
|
64
|
-
export declare function ownScopeTouches(ownScope: string | null, scope: string | null): boolean;
|
|
65
|
-
/**
|
|
66
|
-
* Recall-side scope filter — the canonical JS half of the recall default-deny
|
|
67
|
-
* rule (the SQL half lives in `loadSearchRows` via `loadRecallSearchEntries`).
|
|
68
|
-
*
|
|
69
|
-
* - When `requested` is set and non-empty: exact match required.
|
|
70
|
-
* - When `requested` is undefined/empty: default-deny on any
|
|
71
|
-
* `<source>:private:*` scope and on the `RECALL_DEFAULT_DENY_SCOPES`
|
|
72
|
-
* quarantine buckets. `null` and public scopes pass, and so does `ownScope`, the caller's own personal scope.
|
|
73
|
-
*/
|
|
74
|
-
export declare function passesScopeFilterForRecall(scope: string | null, requested: string | undefined, ownScope?: string | null): boolean;
|
|
75
|
-
export interface SqlFragment {
|
|
76
|
-
sql: string;
|
|
77
|
-
params: string[];
|
|
78
|
-
}
|
|
79
|
-
/** SQL twin of the no-request arm of passesScopeFilterForRecall; `ownScope` is bound and compared with `=`, so `%` or `_` in an owner match nothing extra. */
|
|
80
|
-
export declare function scopeAdmitSql(col: '' | 'm.', ownScope?: string | null): SqlFragment;
|
|
81
|
-
/** SQL twin of canTouchScope, which is also canReadScope for an admin: every row but another person's personal one. LIKE folds ASCII case as isPersonalScope's /i does. */
|
|
82
|
-
export declare function touchableScopeSql(col: '' | 'm.', ownScope?: string | null): SqlFragment;
|
|
83
|
-
/**
|
|
84
|
-
* The CLI `--scope` variant of the recall filter (JS half of the
|
|
85
|
-
* SQL 'default-deny-or-exact' mode in loadSearchRows).
|
|
86
|
-
*
|
|
87
|
-
* The CLI flag predates the envelope column as a TAG-boost ranking hint
|
|
88
|
-
* (`scope:<v>` tags, HIPPO_SCOPE, detectScope()), so an explicit `--scope X`
|
|
89
|
-
* UNLOCKS envelope scope X in addition to the default-admitted set — it does
|
|
90
|
-
* NOT narrow the result to X (that would return zero rows for every
|
|
91
|
-
* tag-scoped workflow, whose envelope scope is NULL). api.recall keeps the
|
|
92
|
-
* narrowing 'exact' semantics via `passesScopeFilterForRecall`.
|
|
93
|
-
*
|
|
94
|
-
* Note the unlock applies to whatever scope was explicitly named — including
|
|
95
|
-
* a private scope or a quarantine bucket (`--scope unknown:legacy`). That is
|
|
96
|
-
* deliberate owner access, identical in reach to api.recall's exact-match
|
|
97
|
-
* for the same input; only NON-requested private/quarantine scopes stay
|
|
98
|
-
* denied. A named personal scope never unlocks: the CLI has no caller identity to check it against.
|
|
99
|
-
*/
|
|
100
|
-
export declare function passesCliRecallScopeFilter(scope: string | null, requested: string | undefined): boolean;
|
|
101
|
-
/**
|
|
102
|
-
* Thrown when a caller requests a scope its role may not read. The HTTP layer
|
|
103
|
-
* maps it to 403.
|
|
104
|
-
*/
|
|
105
|
-
export declare class ScopeForbiddenError extends ForbiddenError {
|
|
106
|
-
readonly scope: string;
|
|
107
|
-
constructor(scope: string);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* True for scopes that default-deny hides: `<source>:private:*` and the
|
|
111
|
-
* quarantine buckets. Naming one explicitly is what unlocks it, so naming one
|
|
112
|
-
* is the act that needs authorization.
|
|
113
|
-
*/
|
|
114
|
-
export declare function isRestrictedScope(scope: string | null | undefined): boolean;
|
|
115
|
-
/** The identity a scope check runs against: a role, any scope grants, and the person who owns the key. */
|
|
116
|
-
export interface ScopeActor {
|
|
117
|
-
role: 'admin' | 'member';
|
|
118
|
-
scopes?: readonly string[];
|
|
119
|
-
owner?: string;
|
|
120
|
-
}
|
|
121
|
-
/** Personal rows answer to their owner alone: role, key grants and resolver scopes never open one. Else admin reads all; a member needs an exact grant on a restricted scope. */
|
|
122
|
-
export declare function canReadScope(actor: ScopeActor, scope: string): boolean;
|
|
123
|
-
/** Authorize an explicitly requested scope before any read honours it (member scope grants). */
|
|
124
|
-
export declare function assertScopeRequestAllowed(actor: ScopeActor, requested: string | undefined): void;
|
|
125
|
-
/** Scope a derived row keeps from one source: the restricted scope itself, else null. */
|
|
126
|
-
export declare function derivationScope(scope: string | null | undefined): string | null;
|
|
127
|
-
/** The one derivation scope shared by every source, or `{ ok: false }` when
|
|
128
|
-
* two disagree, so the caller skips the derived row instead of under-scoping it. */
|
|
129
|
-
export declare function commonDerivationScope(scopes: readonly (string | null | undefined)[]): {
|
|
130
|
-
ok: true;
|
|
131
|
-
scope: string | null;
|
|
132
|
-
} | {
|
|
133
|
-
ok: false;
|
|
134
|
-
};
|
|
135
|
-
/** Map-partition key for consolidate/dag/dedup producers: tenant + derivation scope + origin project,
|
|
136
|
-
* so a derived row never blends two restricted scopes, a mixed pair, or two projects. */
|
|
137
|
-
export declare function derivationPartitionKey(tenantId: string, scope: string | null | undefined, origin: string | null | undefined): string;
|
|
138
|
-
//# sourceMappingURL=recall-scope.d.ts.map
|
package/dist/refine-llm.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LLM-powered refinement of consolidated semantic memories.
|
|
3
|
-
*
|
|
4
|
-
* The rule-based `mergeContents` in consolidate.ts produces functional but
|
|
5
|
-
* ugly semantic memories — typically "[Consolidated from N related memories]"
|
|
6
|
-
* prepended to the longest source, or a bulleted list. `hippo refine` takes
|
|
7
|
-
* those and asks Claude to synthesize a clean, generalized principle.
|
|
8
|
-
*
|
|
9
|
-
* Design choices:
|
|
10
|
-
* - Separate command (not baked into `hippo sleep`) so API-key users opt in.
|
|
11
|
-
* - Idempotent via the `llm-refined` tag — re-running skips already-refined.
|
|
12
|
-
* - Uses fetch directly so no SDK dependency.
|
|
13
|
-
* - On failure (API error, bad response), the original memory is untouched.
|
|
14
|
-
*/
|
|
15
|
-
import { MemoryEntry } from './memory.js';
|
|
16
|
-
export interface RefineOptions {
|
|
17
|
-
apiKey: string;
|
|
18
|
-
model?: string;
|
|
19
|
-
limit?: number;
|
|
20
|
-
dryRun?: boolean;
|
|
21
|
-
/** Ignore the llm-refined tag and re-refine everything eligible. */
|
|
22
|
-
all?: boolean;
|
|
23
|
-
/** Injected for testing — defaults to the real fetch. */
|
|
24
|
-
fetcher?: typeof fetch;
|
|
25
|
-
/**
|
|
26
|
-
* Tenant scope. When provided, refineStore only scans consolidated
|
|
27
|
-
* entries belonging to this tenant, and parent lookups are scoped to the
|
|
28
|
-
* same tenant. Cross-tenant parents return null from readEntry and are
|
|
29
|
-
* silently skipped (refine still produces output from merged content).
|
|
30
|
-
* Undefined preserves pre-1.12.1 host-wide scan behaviour.
|
|
31
|
-
*/
|
|
32
|
-
tenantId?: string;
|
|
33
|
-
}
|
|
34
|
-
export interface RefineResult {
|
|
35
|
-
scanned: number;
|
|
36
|
-
refined: number;
|
|
37
|
-
skipped: number;
|
|
38
|
-
failed: number;
|
|
39
|
-
details: Array<{
|
|
40
|
-
id: string;
|
|
41
|
-
status: 'refined' | 'skipped' | 'failed';
|
|
42
|
-
reason?: string;
|
|
43
|
-
}>;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Ask Claude to synthesize a clean semantic memory from the merged content
|
|
47
|
-
* plus the original source memories. Returns the refined content string or
|
|
48
|
-
* `null` when the API call failed.
|
|
49
|
-
*/
|
|
50
|
-
export declare function refineSemanticMemory(merged: string, sources: MemoryEntry[], opts: {
|
|
51
|
-
apiKey: string;
|
|
52
|
-
model?: string;
|
|
53
|
-
fetcher?: typeof fetch;
|
|
54
|
-
}): Promise<string | null>;
|
|
55
|
-
/**
|
|
56
|
-
* Scan the store for consolidated semantic memories, refine each with the
|
|
57
|
-
* LLM, and write the refined content back. Tags with `llm-refined` so
|
|
58
|
-
* repeated runs are idempotent (unless `all` is set).
|
|
59
|
-
*/
|
|
60
|
-
export declare function refineStore(hippoRoot: string, opts: RefineOptions): Promise<RefineResult>;
|
|
61
|
-
//# sourceMappingURL=refine-llm.d.ts.map
|