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/refine-llm.js
DELETED
|
@@ -1,167 +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 { Layer } from './memory.js';
|
|
16
|
-
import { writeEntry } from './store/entry-writes.js';
|
|
17
|
-
import { loadAllEntries, readEntry } from './store/entry-reads.js';
|
|
18
|
-
import { redactSecretsStrict } from './secret-detect.js';
|
|
19
|
-
import { fetchWithRetry, llmTimeoutMs } from './http-retry.js';
|
|
20
|
-
import { log } from './log.js';
|
|
21
|
-
const REFINED_TAG = 'llm-refined';
|
|
22
|
-
const CONSOLIDATED_MARKERS = [
|
|
23
|
-
'[Consolidated from',
|
|
24
|
-
'[Consolidated pattern from',
|
|
25
|
-
];
|
|
26
|
-
/**
|
|
27
|
-
* Ask Claude to synthesize a clean semantic memory from the merged content
|
|
28
|
-
* plus the original source memories. Returns the refined content string or
|
|
29
|
-
* `null` when the API call failed.
|
|
30
|
-
*/
|
|
31
|
-
export async function refineSemanticMemory(merged, sources, opts) {
|
|
32
|
-
const model = opts.model ?? 'claude-sonnet-4-6';
|
|
33
|
-
const fetchFn = opts.fetcher ?? fetch;
|
|
34
|
-
const sourceBlock = sources
|
|
35
|
-
.slice(0, 8)
|
|
36
|
-
.map((s, i) => `[source ${i + 1}] ${redactSecretsStrict(s.content).slice(0, 400)}`)
|
|
37
|
-
.join('\n\n');
|
|
38
|
-
const prompt = `You are refining a semantic memory in an agent's memory store. The rule-based consolidator merged several related episodic memories into one, but the output is clumsy. Produce a single coherent semantic memory that captures the underlying principle.
|
|
39
|
-
|
|
40
|
-
Rules:
|
|
41
|
-
- Output ONLY the refined content — no preamble, no quote marks, no "Here is...".
|
|
42
|
-
- Keep it concise: one paragraph, no headers, no bullet lists unless the sources are inherently a list.
|
|
43
|
-
- Preserve specific facts (names, numbers, paths, IDs) from the sources.
|
|
44
|
-
- Generalize: state the pattern, not each instance.
|
|
45
|
-
- Do NOT include the "[Consolidated from N ...]" marker.
|
|
46
|
-
|
|
47
|
-
Current merged content:
|
|
48
|
-
${redactSecretsStrict(merged)}
|
|
49
|
-
|
|
50
|
-
Source memories (up to 8 shown):
|
|
51
|
-
${sourceBlock}`;
|
|
52
|
-
let res;
|
|
53
|
-
try {
|
|
54
|
-
res = await fetchWithRetry('https://api.anthropic.com/v1/messages', {
|
|
55
|
-
method: 'POST',
|
|
56
|
-
headers: {
|
|
57
|
-
'content-type': 'application/json',
|
|
58
|
-
'x-api-key': opts.apiKey,
|
|
59
|
-
'anthropic-version': '2023-06-01',
|
|
60
|
-
},
|
|
61
|
-
body: JSON.stringify({
|
|
62
|
-
model,
|
|
63
|
-
max_tokens: 800,
|
|
64
|
-
messages: [{ role: 'user', content: prompt }],
|
|
65
|
-
}),
|
|
66
|
-
}, { timeoutMs: llmTimeoutMs(), fetchFn });
|
|
67
|
-
}
|
|
68
|
-
catch (err) {
|
|
69
|
-
log.warn(`refine: request failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
if (!res.ok) {
|
|
73
|
-
log.warn(`refine: API answered HTTP ${res.status}`);
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
let text;
|
|
77
|
-
try {
|
|
78
|
-
// SAFETY: data is the Anthropic Messages API response body; the
|
|
79
|
-
// documented response shape is `{ content: [{ type, text, ... }] }`
|
|
80
|
-
// for a text-generating request like this one.
|
|
81
|
-
const data = await res.json();
|
|
82
|
-
text = data.content?.[0]?.text?.trim() ?? '';
|
|
83
|
-
}
|
|
84
|
-
catch (err) {
|
|
85
|
-
log.warn(`refine: unreadable response: ${err instanceof Error ? err.message : String(err)}`);
|
|
86
|
-
return null;
|
|
87
|
-
}
|
|
88
|
-
if (text.length < 10) {
|
|
89
|
-
log.warn('refine: response was empty or too short to use');
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
return text;
|
|
93
|
-
}
|
|
94
|
-
function isConsolidated(entry) {
|
|
95
|
-
if (entry.layer !== Layer.Semantic)
|
|
96
|
-
return false;
|
|
97
|
-
return CONSOLIDATED_MARKERS.some((m) => entry.content.startsWith(m));
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Scan the store for consolidated semantic memories, refine each with the
|
|
101
|
-
* LLM, and write the refined content back. Tags with `llm-refined` so
|
|
102
|
-
* repeated runs are idempotent (unless `all` is set).
|
|
103
|
-
*/
|
|
104
|
-
export async function refineStore(hippoRoot, opts) {
|
|
105
|
-
const result = {
|
|
106
|
-
scanned: 0,
|
|
107
|
-
refined: 0,
|
|
108
|
-
skipped: 0,
|
|
109
|
-
failed: 0,
|
|
110
|
-
details: [],
|
|
111
|
-
};
|
|
112
|
-
// When opts.tenantId is provided, scope the top-level scan to this
|
|
113
|
-
// tenant's consolidated entries.
|
|
114
|
-
const entries = loadAllEntries(hippoRoot, opts.tenantId);
|
|
115
|
-
let processed = 0;
|
|
116
|
-
for (const entry of entries) {
|
|
117
|
-
if (!isConsolidated(entry))
|
|
118
|
-
continue;
|
|
119
|
-
result.scanned++;
|
|
120
|
-
if (!opts.all && entry.tags.includes(REFINED_TAG)) {
|
|
121
|
-
result.skipped++;
|
|
122
|
-
result.details.push({ id: entry.id, status: 'skipped', reason: 'already refined' });
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
if (opts.limit !== undefined && processed >= opts.limit)
|
|
126
|
-
break;
|
|
127
|
-
processed++;
|
|
128
|
-
// Best-effort: walk parents_json (schema v9) to fetch originals. When
|
|
129
|
-
// parents aren't recorded we still refine using just the merged content.
|
|
130
|
-
const sources = [];
|
|
131
|
-
const parentIds = Array.isArray(entry.parents) ? entry.parents : [];
|
|
132
|
-
for (const pid of parentIds) {
|
|
133
|
-
// Parent lookup scoped by opts.tenantId when provided.
|
|
134
|
-
// Cross-tenant parents return null and are silently skipped — refine
|
|
135
|
-
// still produces output from the merged content alone (graceful
|
|
136
|
-
// degradation rather than refuse-to-refine).
|
|
137
|
-
const p = readEntry(hippoRoot, pid, opts.tenantId);
|
|
138
|
-
if (p)
|
|
139
|
-
sources.push(p);
|
|
140
|
-
}
|
|
141
|
-
const refined = await refineSemanticMemory(entry.content, sources, {
|
|
142
|
-
apiKey: opts.apiKey,
|
|
143
|
-
model: opts.model,
|
|
144
|
-
fetcher: opts.fetcher,
|
|
145
|
-
});
|
|
146
|
-
if (refined === null) {
|
|
147
|
-
result.failed++;
|
|
148
|
-
result.details.push({ id: entry.id, status: 'failed', reason: 'api error or empty response' });
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
if (opts.dryRun) {
|
|
152
|
-
result.refined++;
|
|
153
|
-
result.details.push({ id: entry.id, status: 'refined', reason: 'dry-run (no write)' });
|
|
154
|
-
continue;
|
|
155
|
-
}
|
|
156
|
-
const updated = {
|
|
157
|
-
...entry,
|
|
158
|
-
content: refined,
|
|
159
|
-
tags: entry.tags.includes(REFINED_TAG) ? entry.tags : [...entry.tags, REFINED_TAG],
|
|
160
|
-
};
|
|
161
|
-
writeEntry(hippoRoot, updated);
|
|
162
|
-
result.refined++;
|
|
163
|
-
result.details.push({ id: entry.id, status: 'refined' });
|
|
164
|
-
}
|
|
165
|
-
return result;
|
|
166
|
-
}
|
|
167
|
-
//# sourceMappingURL=refine-llm.js.map
|
package/dist/reject-flow.d.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rejected-value tombstone: shared reject/unreject/list flow.
|
|
3
|
-
*
|
|
4
|
-
* The CLI (`hippo reject`/`rejections`/`unreject`) and the Context-based
|
|
5
|
-
* `api.reject`/`api.unreject`/`api.listRejections` surfaces both need the
|
|
6
|
-
* SAME multi-step transaction + post-commit mirror-purge flow. Extracted
|
|
7
|
-
* here (leaf module) so neither duplicates it.
|
|
8
|
-
*
|
|
9
|
-
* Module direction: this file imports from store.ts, rejection.ts, raw-archive.ts,
|
|
10
|
-
* dormant.ts, same-text.ts and merged-row.ts. Nothing imports FROM this file except
|
|
11
|
-
* cli.ts and api.ts, so it introduces no cycle.
|
|
12
|
-
*/
|
|
13
|
-
import { type RejectedValueRow } from './rejection.js';
|
|
14
|
-
export interface RejectFlowOpts {
|
|
15
|
-
hippoRoot: string;
|
|
16
|
-
tenantId: string;
|
|
17
|
-
actor: string;
|
|
18
|
-
reason: string;
|
|
19
|
-
/** By-id form: reject the CURRENT content of an existing memory. */
|
|
20
|
-
memoryId?: string;
|
|
21
|
-
/** Pre-emptive form: reject a value not currently stored (or already gone). */
|
|
22
|
-
value?: string;
|
|
23
|
-
/** The caller's own personal scope: the only personal rows the sweep may remove. Unset (the CLI) skips every personal row. */
|
|
24
|
-
ownScope?: string;
|
|
25
|
-
}
|
|
26
|
-
export interface RejectFlowResult {
|
|
27
|
-
digest: string;
|
|
28
|
-
/** The rejected content, for the CLI's at-reject-time echo (the
|
|
29
|
-
* tombstone itself stores no content — this is the only place it's seen
|
|
30
|
-
* again after this call returns). */
|
|
31
|
-
content: string;
|
|
32
|
-
/** Every row removed this call, live or dormant: all whose normalized digest matched (not just the id
|
|
33
|
-
* passed, since duplicates share a digest), and each sleep-merged row holding the value, whose other
|
|
34
|
-
* texts move to a new row: listed in successorIds when it was live, dormantSuccessorIds when dormant. */
|
|
35
|
-
removedIds: string[];
|
|
36
|
-
/** Subset of removedIds that were kind='raw' (archived, not deleted). */
|
|
37
|
-
removedRawIds: string[];
|
|
38
|
-
successorIds: string[];
|
|
39
|
-
dormantSuccessorIds: string[];
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* `hippo reject` / `api.reject` core flow. ONE connection, one transaction:
|
|
43
|
-
* insert the tombstone, enumerate + remove every live tenant row whose
|
|
44
|
-
* normalized digest matches (kind-aware), one aggregate `reject_value`
|
|
45
|
-
* audit, COMMIT. Then post-commit (mirrors the existing purge+reaper
|
|
46
|
-
* pattern verbatim from api.archiveRaw, api.ts:1913-1938): best-effort
|
|
47
|
-
* mirror purge per removed id, `mirror_cleaned_at` stamps for raw ids.
|
|
48
|
-
* index.json itself is only refreshed by `rebuildIndex()`.
|
|
49
|
-
*/
|
|
50
|
-
export declare function rejectValue(opts: RejectFlowOpts): RejectFlowResult;
|
|
51
|
-
export type UnrejectOutcome = {
|
|
52
|
-
status: 'ok';
|
|
53
|
-
digest: string;
|
|
54
|
-
reason: string | null;
|
|
55
|
-
} | {
|
|
56
|
-
status: 'not_found';
|
|
57
|
-
} | {
|
|
58
|
-
status: 'ambiguous';
|
|
59
|
-
candidates: RejectedValueRow[];
|
|
60
|
-
};
|
|
61
|
-
/**
|
|
62
|
-
* `hippo unreject` / `api.unreject` — resolve a unique tombstone by digest
|
|
63
|
-
* (or prefix), delete it, audit `unreject_value`. The only v1 escape hatch
|
|
64
|
-
* (plan §4): no per-write force flag.
|
|
65
|
-
*/
|
|
66
|
-
export declare function unrejectValue(hippoRoot: string, tenantId: string, digestOrPrefix: string, actor: string): UnrejectOutcome;
|
|
67
|
-
/** `hippo rejections` / `api.listRejections` — list tombstones for a tenant. */
|
|
68
|
-
export declare function listRejectionsForTenant(hippoRoot: string, tenantId: string): RejectedValueRow[];
|
|
69
|
-
//# sourceMappingURL=reject-flow.d.ts.map
|
package/dist/reject-flow.js
DELETED
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rejected-value tombstone: shared reject/unreject/list flow.
|
|
3
|
-
*
|
|
4
|
-
* The CLI (`hippo reject`/`rejections`/`unreject`) and the Context-based
|
|
5
|
-
* `api.reject`/`api.unreject`/`api.listRejections` surfaces both need the
|
|
6
|
-
* SAME multi-step transaction + post-commit mirror-purge flow. Extracted
|
|
7
|
-
* here (leaf module) so neither duplicates it.
|
|
8
|
-
*
|
|
9
|
-
* Module direction: this file imports from store.ts, rejection.ts, raw-archive.ts,
|
|
10
|
-
* dormant.ts, same-text.ts and merged-row.ts. Nothing imports FROM this file except
|
|
11
|
-
* cli.ts and api.ts, so it introduces no cycle.
|
|
12
|
-
*/
|
|
13
|
-
import { closeHippoDb } from './db.js';
|
|
14
|
-
import { BadRequestError } from './api-errors.js';
|
|
15
|
-
import { appendAuditEvent, reportAuditWriteFailure } from './audit.js';
|
|
16
|
-
import { isPersonalScope } from './recall-scope.js';
|
|
17
|
-
import { archiveRawMemory } from './raw-archive.js';
|
|
18
|
-
import { deleteDormantRow, listDormantSnapshots, purgeDormantByDigest, replaceDormantEntry } from './dormant.js';
|
|
19
|
-
import { stampOriginProject } from './store/entry-row.js';
|
|
20
|
-
import { purgeMirrorBestEffort } from './store/mirrors.js';
|
|
21
|
-
import { openStore } from './store/open.js';
|
|
22
|
-
import { writeEntryDbOnly, writeEntryMirrors } from './store/entry-writes.js';
|
|
23
|
-
import { selectAllEntries } from './store/entry-reads.js';
|
|
24
|
-
import { deleteEntryCore } from './store/delete-and-batch.js';
|
|
25
|
-
import { heldTexts } from './same-text.js';
|
|
26
|
-
import { mergedSuccessor } from './merged-row.js';
|
|
27
|
-
import { rejectionDigest, normalizeValueForRejection, insertRejectedValue, deleteRejectedValue, listRejectedValues, } from './rejection.js';
|
|
28
|
-
function assertRejectOpts(opts) {
|
|
29
|
-
if (!opts.reason.trim()) {
|
|
30
|
-
throw new Error('reject requires a non-empty --reason (the tombstone stores no content; reason is its only identity).');
|
|
31
|
-
}
|
|
32
|
-
if (opts.memoryId === undefined && opts.value === undefined) {
|
|
33
|
-
throw new Error('reject requires either a memory id or --value.');
|
|
34
|
-
}
|
|
35
|
-
if (opts.memoryId !== undefined && opts.value !== undefined) {
|
|
36
|
-
// Enforced here, not only in the CLI parser, so a direct api caller passing both
|
|
37
|
-
// is refused instead of silently getting the memoryId path with `value` ignored.
|
|
38
|
-
throw new Error('reject accepts either a memory id or --value, not both.');
|
|
39
|
-
}
|
|
40
|
-
if (opts.value !== undefined && normalizeValueForRejection(opts.value).length === 0) {
|
|
41
|
-
// Direct api callers can pass strings the CLI flag parser would have
|
|
42
|
-
// refused; an empty-normalized tombstone would refuse nothing meaningful
|
|
43
|
-
// and pollute the listing.
|
|
44
|
-
throw new Error('reject --value requires non-empty content.');
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function contentToReject(db, opts) {
|
|
48
|
-
if (opts.memoryId === undefined)
|
|
49
|
-
return opts.value;
|
|
50
|
-
// SAFETY: row's shape matches the three columns named in the SELECT above.
|
|
51
|
-
const row = db
|
|
52
|
-
.prepare(`SELECT content, tenant_id, scope FROM memories WHERE id = ?`)
|
|
53
|
-
.get(opts.memoryId);
|
|
54
|
-
if (!row || row.tenant_id !== opts.tenantId) {
|
|
55
|
-
throw new Error(`memory not found: ${opts.memoryId}`);
|
|
56
|
-
}
|
|
57
|
-
// A tombstone is tenant-wide, so one made from personal text would show its reason to everyone.
|
|
58
|
-
if (isPersonalScope(row.scope))
|
|
59
|
-
throw new BadRequestError("Personal memories can't be rejected. Use forget to remove it.");
|
|
60
|
-
return row.content;
|
|
61
|
-
}
|
|
62
|
-
/** Every row but another person's personal one, which is outside the caller's recall and so outside its reject. */
|
|
63
|
-
function inReach(opts, scope) {
|
|
64
|
-
return !isPersonalScope(scope) || scope === opts.ownScope;
|
|
65
|
-
}
|
|
66
|
-
function removeLiveRows(db, opts, holdsValue, removal) {
|
|
67
|
-
const { removedIds, removedRawIds, successors } = removal;
|
|
68
|
-
const merged = [];
|
|
69
|
-
for (const row of selectAllEntries(db, opts.tenantId)) {
|
|
70
|
-
if (!inReach(opts, row.scope))
|
|
71
|
-
continue;
|
|
72
|
-
if (!holdsValue(row.content)) {
|
|
73
|
-
if (heldTexts(row).some(holdsValue))
|
|
74
|
-
merged.push(row);
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
if (row.kind === 'raw') {
|
|
78
|
-
// Append-only trigger respected — archiveRawMemory is the only
|
|
79
|
-
// legitimate removal path for kind='raw', and its inner SAVEPOINT
|
|
80
|
-
// composes safely inside this BEGIN/COMMIT.
|
|
81
|
-
archiveRawMemory(db, row.id, { reason: opts.reason, who: opts.actor });
|
|
82
|
-
removedRawIds.push(row.id);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
// suppressForgetAudit: the aggregate reject_value row below is the
|
|
86
|
-
// trail for these removals, not N individual forget rows.
|
|
87
|
-
deleteEntryCore(db, row.id, { actor: opts.actor, suppressForgetAudit: true });
|
|
88
|
-
}
|
|
89
|
-
removedIds.push(row.id);
|
|
90
|
-
}
|
|
91
|
-
for (const row of merged) {
|
|
92
|
-
const successor = mergedSuccessor(row, holdsValue, new Set(removedIds));
|
|
93
|
-
deleteEntryCore(db, row.id, { actor: opts.actor, suppressForgetAudit: true });
|
|
94
|
-
removedIds.push(row.id);
|
|
95
|
-
if (!successor)
|
|
96
|
-
continue;
|
|
97
|
-
const kept = stampOriginProject(opts.hippoRoot, successor);
|
|
98
|
-
writeEntryDbOnly(db, kept, { actor: opts.actor });
|
|
99
|
-
successors.push(kept);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// Dormant copies (src/dormant.ts), whole or inside a merged row, go too, in the same transaction: a
|
|
103
|
-
// rejected value may not linger where `hippo dormant restore` could
|
|
104
|
-
// bring it back. They have no markdown mirror, so the post-commit
|
|
105
|
-
// mirror purge below is a no-op for them; they join removedIds for the
|
|
106
|
-
// audit trail and the caller's report.
|
|
107
|
-
function removeDormantCopies(db, opts, digest, holdsValue, removal) {
|
|
108
|
-
const { tenantId } = opts;
|
|
109
|
-
const { removedIds, dormantSuccessorIds } = removal;
|
|
110
|
-
removedIds.push(...purgeDormantByDigest(db, tenantId, digest, (scope) => inReach(opts, scope)));
|
|
111
|
-
for (const dormant of listDormantSnapshots(db, tenantId)) {
|
|
112
|
-
if (!inReach(opts, dormant.entry.scope))
|
|
113
|
-
continue;
|
|
114
|
-
const successor = mergedSuccessor(dormant.entry, holdsValue, new Set(removedIds));
|
|
115
|
-
if (successor === undefined)
|
|
116
|
-
continue;
|
|
117
|
-
removedIds.push(dormant.entry.id);
|
|
118
|
-
if (!successor) {
|
|
119
|
-
deleteDormantRow(db, tenantId, dormant.entry.id);
|
|
120
|
-
continue;
|
|
121
|
-
}
|
|
122
|
-
replaceDormantEntry(db, tenantId, dormant.entry.id, successor);
|
|
123
|
-
dormantSuccessorIds.push(successor.id);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
function auditRejectValue(db, opts, digest, removedIds) {
|
|
127
|
-
try {
|
|
128
|
-
appendAuditEvent(db, {
|
|
129
|
-
tenantId: opts.tenantId,
|
|
130
|
-
actor: opts.actor,
|
|
131
|
-
op: 'reject_value',
|
|
132
|
-
targetId: opts.memoryId,
|
|
133
|
-
metadata: { digest, removedIds, count: removedIds.length },
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
// Inside the open transaction: the reject commits without its trail row rather than rolling back over bookkeeping.
|
|
138
|
-
reportAuditWriteFailure('reject_value', String(error), opts.memoryId);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// Post-commit, db handle still open (same pattern as api.archiveRaw):
|
|
142
|
-
// best-effort mirror purge per removed id, reaper-backstop stamp for
|
|
143
|
-
// raw ids.
|
|
144
|
-
function purgeRemovedMirrors(db, hippoRoot, removal) {
|
|
145
|
-
for (const id of removal.removedIds) {
|
|
146
|
-
// purgeMirrorBestEffort retries once, then for non-raw ids (which the
|
|
147
|
-
// reaper never scans) reports the EXPLICIT leftover path(s). See its own doc comment (store.ts, near
|
|
148
|
-
// removeEntryMirrors) for the full rationale.
|
|
149
|
-
const mirrorOk = purgeMirrorBestEffort(hippoRoot, id, removal.removedRawIds.includes(id), 'hippo reject');
|
|
150
|
-
if (mirrorOk && removal.removedRawIds.includes(id)) {
|
|
151
|
-
db.prepare(`UPDATE raw_archive SET mirror_cleaned_at = ? WHERE memory_id = ?`).run(new Date().toISOString(), id);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
for (const successor of removal.successors)
|
|
155
|
-
writeEntryMirrors(hippoRoot, successor);
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* `hippo reject` / `api.reject` core flow. ONE connection, one transaction:
|
|
159
|
-
* insert the tombstone, enumerate + remove every live tenant row whose
|
|
160
|
-
* normalized digest matches (kind-aware), one aggregate `reject_value`
|
|
161
|
-
* audit, COMMIT. Then post-commit (mirrors the existing purge+reaper
|
|
162
|
-
* pattern verbatim from api.archiveRaw, api.ts:1913-1938): best-effort
|
|
163
|
-
* mirror purge per removed id, `mirror_cleaned_at` stamps for raw ids.
|
|
164
|
-
* index.json itself is only refreshed by `rebuildIndex()`.
|
|
165
|
-
*/
|
|
166
|
-
export function rejectValue(opts) {
|
|
167
|
-
assertRejectOpts(opts);
|
|
168
|
-
const db = openStore(opts.hippoRoot);
|
|
169
|
-
try {
|
|
170
|
-
const content = contentToReject(db, opts);
|
|
171
|
-
const digest = rejectionDigest(content);
|
|
172
|
-
const now = new Date().toISOString();
|
|
173
|
-
const removal = { removedIds: [], removedRawIds: [], successors: [], dormantSuccessorIds: [] };
|
|
174
|
-
db.exec('BEGIN IMMEDIATE');
|
|
175
|
-
try {
|
|
176
|
-
insertRejectedValue(db, {
|
|
177
|
-
tenantId: opts.tenantId,
|
|
178
|
-
digest,
|
|
179
|
-
reason: opts.reason,
|
|
180
|
-
rejectedBy: opts.actor,
|
|
181
|
-
rejectedAt: now,
|
|
182
|
-
sourceMemoryId: opts.memoryId ?? null,
|
|
183
|
-
normalizedChars: normalizeValueForRejection(content).length,
|
|
184
|
-
});
|
|
185
|
-
// O(N) scan over the tenant's rows (plan §4): human-triggered command
|
|
186
|
-
// on ~1-5k-row stores — acceptable, documented. A digest column on
|
|
187
|
-
// memories is the escape if stores grow 100x; not needed now.
|
|
188
|
-
const holdsValue = (text) => rejectionDigest(text) === digest;
|
|
189
|
-
removeLiveRows(db, opts, holdsValue, removal);
|
|
190
|
-
removeDormantCopies(db, opts, digest, holdsValue, removal);
|
|
191
|
-
auditRejectValue(db, opts, digest, removal.removedIds);
|
|
192
|
-
db.exec('COMMIT');
|
|
193
|
-
}
|
|
194
|
-
catch (err) {
|
|
195
|
-
try {
|
|
196
|
-
db.exec('ROLLBACK');
|
|
197
|
-
}
|
|
198
|
-
catch {
|
|
199
|
-
// already rolled back
|
|
200
|
-
}
|
|
201
|
-
throw err;
|
|
202
|
-
}
|
|
203
|
-
purgeRemovedMirrors(db, opts.hippoRoot, removal);
|
|
204
|
-
const { removedIds, removedRawIds, successors, dormantSuccessorIds } = removal;
|
|
205
|
-
return { digest, content, removedIds, removedRawIds, successorIds: successors.map((s) => s.id), dormantSuccessorIds };
|
|
206
|
-
}
|
|
207
|
-
finally {
|
|
208
|
-
closeHippoDb(db);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* `hippo unreject` / `api.unreject` — resolve a unique tombstone by digest
|
|
213
|
-
* (or prefix), delete it, audit `unreject_value`. The only v1 escape hatch
|
|
214
|
-
* (plan §4): no per-write force flag.
|
|
215
|
-
*/
|
|
216
|
-
export function unrejectValue(hippoRoot, tenantId, digestOrPrefix, actor) {
|
|
217
|
-
// An empty/blank prefix startsWith-matches EVERY digest and would list the whole
|
|
218
|
-
// tombstone set as ambiguous, so reject it before the DB round trip.
|
|
219
|
-
if (digestOrPrefix.trim().length === 0) {
|
|
220
|
-
return { status: 'not_found' };
|
|
221
|
-
}
|
|
222
|
-
const db = openStore(hippoRoot);
|
|
223
|
-
try {
|
|
224
|
-
const all = listRejectedValues(db, tenantId);
|
|
225
|
-
const matches = all.filter((r) => r.digest.startsWith(digestOrPrefix));
|
|
226
|
-
if (matches.length === 0)
|
|
227
|
-
return { status: 'not_found' };
|
|
228
|
-
if (matches.length > 1)
|
|
229
|
-
return { status: 'ambiguous', candidates: matches };
|
|
230
|
-
const target = matches[0];
|
|
231
|
-
deleteRejectedValue(db, tenantId, target.digest);
|
|
232
|
-
try {
|
|
233
|
-
appendAuditEvent(db, {
|
|
234
|
-
tenantId,
|
|
235
|
-
actor,
|
|
236
|
-
op: 'unreject_value',
|
|
237
|
-
targetId: target.sourceMemoryId ?? undefined,
|
|
238
|
-
metadata: { digest: target.digest, reason: target.reason },
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
catch (error) {
|
|
242
|
-
reportAuditWriteFailure('unreject_value', String(error), target.sourceMemoryId);
|
|
243
|
-
}
|
|
244
|
-
return { status: 'ok', digest: target.digest, reason: target.reason };
|
|
245
|
-
}
|
|
246
|
-
finally {
|
|
247
|
-
closeHippoDb(db);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
/** `hippo rejections` / `api.listRejections` — list tombstones for a tenant. */
|
|
251
|
-
export function listRejectionsForTenant(hippoRoot, tenantId) {
|
|
252
|
-
const db = openStore(hippoRoot);
|
|
253
|
-
try {
|
|
254
|
-
return listRejectedValues(db, tenantId);
|
|
255
|
-
}
|
|
256
|
-
finally {
|
|
257
|
-
closeHippoDb(db);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
//# sourceMappingURL=reject-flow.js.map
|
package/dist/rejection.d.ts
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rejected-value tombstone: core invariant.
|
|
3
|
-
*
|
|
4
|
-
* Exact-normalized-value semantics: a human who rejects a fact can refuse
|
|
5
|
-
* byte-stable re-ingestion of the same value across remember/capture/import/
|
|
6
|
-
* sync surfaces. Paraphrase/semantic matching is explicitly out of scope
|
|
7
|
-
* (documented limitation, plan "Design").
|
|
8
|
-
*
|
|
9
|
-
* Kept db-agnostic (helpers take a `DatabaseSyncLike` handle) and does NOT
|
|
10
|
-
* import from store.ts — store.ts imports from here, and the reverse would
|
|
11
|
-
* be a cycle.
|
|
12
|
-
*/
|
|
13
|
-
import type { DatabaseSyncLike } from './db.js';
|
|
14
|
-
import { BadRequestError } from './api-errors.js';
|
|
15
|
-
/**
|
|
16
|
-
* Normalize content for rejection-digest comparisons: Unicode NFC →
|
|
17
|
-
* lowercase → collapse whitespace runs to a single space → trim. No
|
|
18
|
-
* punctuation stripping — over-normalization creates false refusals, which
|
|
19
|
-
* are worse than misses (plan §1).
|
|
20
|
-
*/
|
|
21
|
-
export declare function normalizeValueForRejection(content: string): string;
|
|
22
|
-
/**
|
|
23
|
-
* Full sha256 hex (64 chars) of the normalized content. Reuses the strong-
|
|
24
|
-
* identity convention (importers.ts:814 content-hash tag), NOT the privacy-
|
|
25
|
-
* lossy 16-char convention (recall-trace query hashing) — a tombstone lookup
|
|
26
|
-
* key needs collision resistance, not redaction (plan §1).
|
|
27
|
-
*/
|
|
28
|
-
export declare function rejectionDigest(content: string): string;
|
|
29
|
-
/**
|
|
30
|
-
* Thrown by the write-path guard (checkRejectionGuard, called from
|
|
31
|
-
* upsertEntryRow) when an incoming write would introduce a value matching a
|
|
32
|
-
* tombstoned digest. Carries enough context for the transaction-owner catch
|
|
33
|
-
* blocks (writeEntry, api.supersede) to write a post-rollback
|
|
34
|
-
* `reject_refusal` audit row via `auditRejectionRefusal` (plan §3).
|
|
35
|
-
*/
|
|
36
|
-
export declare class RejectedValueError extends BadRequestError {
|
|
37
|
-
readonly digest: string;
|
|
38
|
-
readonly tenantId: string;
|
|
39
|
-
readonly entryId: string;
|
|
40
|
-
readonly reason: string | null;
|
|
41
|
-
readonly rejectedAt: string;
|
|
42
|
-
constructor(opts: {
|
|
43
|
-
digest: string;
|
|
44
|
-
tenantId: string;
|
|
45
|
-
entryId: string;
|
|
46
|
-
reason: string | null;
|
|
47
|
-
rejectedAt: string;
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
export interface RejectedValueRow {
|
|
51
|
-
tenantId: string;
|
|
52
|
-
digest: string;
|
|
53
|
-
reason: string | null;
|
|
54
|
-
rejectedBy: string | null;
|
|
55
|
-
rejectedAt: string;
|
|
56
|
-
sourceMemoryId: string | null;
|
|
57
|
-
normalizedChars: number | null;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Look up a tombstone by tenant + digest. One indexed point query — the
|
|
61
|
-
* guard's common-case cost, a miss ends the guard (plan §3).
|
|
62
|
-
*/
|
|
63
|
-
export declare function findRejectedValue(db: DatabaseSyncLike, tenantId: string, digest: string): RejectedValueRow | null;
|
|
64
|
-
/**
|
|
65
|
-
* Insert (or refresh) a tombstone row. Caller owns the transaction — used by
|
|
66
|
-
* the `reject` verb and `resolveConflict`'s `rejectLoserValue` path.
|
|
67
|
-
*/
|
|
68
|
-
export declare function insertRejectedValue(db: DatabaseSyncLike, opts: {
|
|
69
|
-
tenantId: string;
|
|
70
|
-
digest: string;
|
|
71
|
-
reason: string;
|
|
72
|
-
rejectedBy: string;
|
|
73
|
-
rejectedAt: string;
|
|
74
|
-
sourceMemoryId?: string | null;
|
|
75
|
-
normalizedChars: number;
|
|
76
|
-
}): void;
|
|
77
|
-
/**
|
|
78
|
-
* Delete a tombstone by tenant + exact digest: the `unreject` verb, the
|
|
79
|
-
* only escape hatch.
|
|
80
|
-
*/
|
|
81
|
-
export declare function deleteRejectedValue(db: DatabaseSyncLike, tenantId: string, digest: string): boolean;
|
|
82
|
-
/** List tombstones for a tenant, newest first: the `rejections` verb. */
|
|
83
|
-
export declare function listRejectedValues(db: DatabaseSyncLike, tenantId: string): RejectedValueRow[];
|
|
84
|
-
/**
|
|
85
|
-
* The write-path guard's check helper, called from `upsertEntryRow`
|
|
86
|
-
* (store.ts). Fires when the incoming content's digest matches a tombstone
|
|
87
|
-
* AND the write *introduces* that content: the row is new, OR the stored
|
|
88
|
-
* row's content digest differs from the incoming one — an UPSERT editing a
|
|
89
|
-
* same-id row TO a rejected value is a content introduction and must be
|
|
90
|
-
* refused. Unchanged same-id re-persists (recall boost, decay, star toggle)
|
|
91
|
-
* are exempt by construction (plan §3).
|
|
92
|
-
*
|
|
93
|
-
* Ordering minimizes queries on the common (miss) path: (a) caller has
|
|
94
|
-
* already computed nothing yet — this does the digest + point lookup first;
|
|
95
|
-
* (b) a miss returns immediately (ONE indexed point query); (c) only on a
|
|
96
|
-
* tombstone hit does it SELECT the stored row's content to classify
|
|
97
|
-
* new-row vs content-introduction (+1 query, rare path).
|
|
98
|
-
*/
|
|
99
|
-
export declare function checkRejectionGuard(db: DatabaseSyncLike, tenantId: string, entryId: string, content: string): void;
|
|
100
|
-
//# sourceMappingURL=rejection.d.ts.map
|
package/dist/replay.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Replay — biologically-inspired rehearsal during consolidation.
|
|
3
|
-
*
|
|
4
|
-
* Hippocampal replay is internally-driven reactivation of memories during
|
|
5
|
-
* slow-wave sleep: the brain picks important recent experiences and "plays
|
|
6
|
-
* them back" without external input, strengthening them before they decay.
|
|
7
|
-
* In McClelland's complementary-learning-systems framing, replay is also
|
|
8
|
-
* how episodic memories train the neocortex (interleaved rehearsal); in
|
|
9
|
-
* reward-modulated STDP, replay is gated by dopamine so rewarded
|
|
10
|
-
* experiences get preferentially consolidated.
|
|
11
|
-
*
|
|
12
|
-
* This module implements a lightweight, deterministic analog. During each
|
|
13
|
-
* `hippo sleep`, we sample N surviving memories by a priority score that
|
|
14
|
-
* weighs reward feedback, emotional valence, under-rehearsal, and age —
|
|
15
|
-
* then apply the same retrieval-strengthening dynamics `markRetrieved`
|
|
16
|
-
* applies to real queries. The effect is that important memories stay
|
|
17
|
-
* strong even when the user hasn't explicitly queried them recently.
|
|
18
|
-
*
|
|
19
|
-
* Distinct from the other consolidation passes:
|
|
20
|
-
* - decay: removes what's too weak
|
|
21
|
-
* - physics: moves particles in embedding space
|
|
22
|
-
* - merge: collapses near-duplicate episodics into semantics
|
|
23
|
-
* - REPLAY: picks winners and rehearses them (this file)
|
|
24
|
-
*/
|
|
25
|
-
import { type MemoryEntry } from './memory.js';
|
|
26
|
-
/**
|
|
27
|
-
* Priority score used to rank survivors for replay. Higher = more likely
|
|
28
|
-
* to be sampled. Pure function of the entry and current time.
|
|
29
|
-
*/
|
|
30
|
-
export declare function replayPriority(entry: MemoryEntry, now: Date): number;
|
|
31
|
-
/**
|
|
32
|
-
* Pick `count` memories for replay, weighted by `replayPriority`, without
|
|
33
|
-
* replacement. Deterministic given the same seed.
|
|
34
|
-
*
|
|
35
|
-
* The sampler is weighted but not greedy — picking by priority alone would
|
|
36
|
-
* always pick the top-N, which overfits. Biological replay shows both
|
|
37
|
-
* preferential-for-reward AND stochastic-exploration characteristics; we
|
|
38
|
-
* keep the stochastic element so adjacent survivors aren't always ignored.
|
|
39
|
-
*/
|
|
40
|
-
export declare function sampleForReplay(survivors: MemoryEntry[], count: number, now: Date, seed?: number): MemoryEntry[];
|
|
41
|
-
//# sourceMappingURL=replay.d.ts.map
|