hippo-memory 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +32 -19
- package/dist/api/prompt-hook.js +65 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +28 -7
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +33 -14
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +45 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +23 -23
- package/dist/cli/auth.js +19 -27
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +4 -4
- package/dist/cli/object-verbs.js +10 -13
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +14 -6
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -5
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -6
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -6
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -6
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -5
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -6
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +24 -14
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +21 -16
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +84 -27
- package/dist/core/memory.js +73 -29
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -3
- package/dist/db/connect.js +8 -3
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +26 -13
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -4
- package/dist/db/physics-state.js +13 -20
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +19 -5
- package/dist/db/request-stores.js +14 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +19 -6
- package/dist/entry/store-kit.js +6 -4
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +16 -6
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +69 -34
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +8 -7
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +16 -9
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -7
- package/dist/learn/invalidation.js +56 -27
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +18 -14
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +57 -74
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +52 -21
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +9 -6
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +547 -93
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -19
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +75 -36
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +93 -60
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +8 -10
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +3 -1
- package/dist/store/index.js +1 -0
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +215 -229
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +9 -4
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.js +2 -1
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +84 -33
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -11
- package/dist/store/sqlite/store.js +84 -11
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +19 -12
- package/dist/store/summaries.js +36 -21
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +6 -3
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +24 -10
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +16 -4
- package/dist/util/env.js +78 -25
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +11 -3
- package/dist/util/request-scope.js +13 -4
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +3 -1
- package/dist/util/spawn-argv.js +13 -4
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -11
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -4
- package/dist/store/sqlite/local.js +0 -8
package/dist/core/memory.d.ts
CHANGED
|
@@ -44,7 +44,10 @@ export interface MemoryEntry {
|
|
|
44
44
|
descendant_count?: number;
|
|
45
45
|
earliest_at?: string | null;
|
|
46
46
|
latest_at?: string | null;
|
|
47
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* True when a child was invalidated, superseded, forgotten or archived since the last rebuild; sleep clears it.
|
|
49
|
+
* Always false below level 2.
|
|
50
|
+
*/
|
|
48
51
|
summary_dirty?: boolean;
|
|
49
52
|
/** ISO 8601 time of the last successful rebuild, or null if never rebuilt. */
|
|
50
53
|
last_rebuilt_at?: string | null;
|
|
@@ -57,13 +60,23 @@ export interface MemoryEntry {
|
|
|
57
60
|
owner: string | null;
|
|
58
61
|
artifact_ref: string | null;
|
|
59
62
|
tenant_id: string;
|
|
60
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Owning project, lowercased; '' = user-global (injectable everywhere), null = none known (legacy or unnamed write),
|
|
65
|
+
* denied by ambient context.
|
|
61
66
|
* Stamped at write time by stampOriginProject (src/store/entry-row.ts); undefined only before the first write. */
|
|
62
67
|
origin_project?: string | null;
|
|
63
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Raw FTS5 bm25() from the search path (negative, lower = better); set only for a non-empty query the FTS join
|
|
70
|
+
* answered.
|
|
64
71
|
* Not comparable to the JS scorer in src/search/bm25.ts, so read it as rank metadata only. */
|
|
65
72
|
bm25_score?: number;
|
|
66
73
|
}
|
|
74
|
+
/** Named dag_level values; level 0 is a raw leaf. */
|
|
75
|
+
export declare const DAG_LEVEL: {
|
|
76
|
+
readonly extracted: 1;
|
|
77
|
+
readonly topic: 2;
|
|
78
|
+
readonly entity: 3;
|
|
79
|
+
};
|
|
67
80
|
/** Tag on a memory whose named file/symbol/script changed after it was stored. */
|
|
68
81
|
export declare const CHURN_STALE_TAG = "churn-stale";
|
|
69
82
|
export declare const EMOTIONAL_MULTIPLIERS: {
|
|
@@ -72,22 +85,36 @@ export declare const EMOTIONAL_MULTIPLIERS: {
|
|
|
72
85
|
negative: number;
|
|
73
86
|
critical: number;
|
|
74
87
|
};
|
|
75
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Test-only: a test that sets HIPPO_LOSS_AVERSION_RATIO calls this in beforeEach and afterEach
|
|
90
|
+
* (tests/emotional-multipliers.test.ts).
|
|
91
|
+
*/
|
|
76
92
|
export declare function _resetLossAversionRatioCacheForTests(): void;
|
|
77
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Scales only the `negative` multiplier; `critical` stays unscaled so the knob moves just the losses-vs-gains claim.
|
|
95
|
+
*/
|
|
78
96
|
export declare function applyLossAversionRatio(valence: EmotionalValence, baseMultiplier: number): number;
|
|
79
|
-
/**
|
|
97
|
+
/**
|
|
98
|
+
* 1 + REWARD_SLOPE * (pos - neg) / (pos + neg + 1), in (0.5, 1.5), 1.0 with no outcomes; it scales the effective
|
|
99
|
+
* half-life.
|
|
100
|
+
*/
|
|
80
101
|
export declare function calculateRewardFactor(entry: Pick<MemoryEntry, 'outcome_positive' | 'outcome_negative'>, ablation?: StrengthAblation): number;
|
|
81
102
|
/** Bad marks alone never push a memory under sleep's 0.05 retire line; supersede is the hard correction. */
|
|
82
103
|
export declare const MAX_WRONG_HALVINGS = 3;
|
|
83
104
|
export declare const DECAY_BASE = 0.5;
|
|
84
105
|
export declare const REWARD_SLOPE = 0.5;
|
|
85
106
|
export declare const RETRIEVAL_BOOST_SLOPE = 0.1;
|
|
86
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* Bad outcome marks past good ones, floored at zero; each halves strength and stops recall strengthening, so a
|
|
109
|
+
* correction outranks pinning.
|
|
110
|
+
*/
|
|
87
111
|
export declare function netWrong(entry: Pick<MemoryEntry, 'outcome_positive' | 'outcome_negative'>, ablation?: StrengthAblation): number;
|
|
88
112
|
/** What calculateStrength reads, so a caller can score a row without loading its text. */
|
|
89
113
|
export type StrengthInputs = Pick<MemoryEntry, 'pinned' | 'created' | 'last_retrieved' | 'half_life_days' | 'retrieval_count' | 'emotional_valence' | 'outcome_positive' | 'outcome_negative'>;
|
|
90
|
-
/**
|
|
114
|
+
/**
|
|
115
|
+
* Decay basis: clock = wall time, session = per sleep cycle (intermittent agents), adaptive = half-life scaled by
|
|
116
|
+
* session frequency.
|
|
117
|
+
*/
|
|
91
118
|
export interface DecayOptions {
|
|
92
119
|
decayBasis?: 'clock' | 'session' | 'adaptive';
|
|
93
120
|
/** Average interval between sleep cycles, in days. Used by 'adaptive' and 'session' modes. */
|
|
@@ -97,12 +124,19 @@ export interface DecayOptions {
|
|
|
97
124
|
/** EVAL-ONLY switches resolved once at the entry layer (`strengthAblation()`); absent means production scoring. */
|
|
98
125
|
ablation?: StrengthAblation;
|
|
99
126
|
}
|
|
100
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* Strength at `now` = decay * retrieval boost * emotional multiplier, clamped to [0, 1]; the basis modes are on
|
|
129
|
+
* DecayOptions.
|
|
101
130
|
* Pinned memories skip time decay, but being marked wrong still fades them (netWrong). */
|
|
102
131
|
export declare function calculateStrength(entry: StrengthInputs, now?: Date, options?: DecayOptions): number;
|
|
132
|
+
/** A memory counts as high schema fit strictly above this. */
|
|
133
|
+
export declare const HIGH_SCHEMA_FIT = 0.7;
|
|
103
134
|
/** The base half-life scaled by the PLAN.md signals: an error tag, and high or low schema fit. */
|
|
104
135
|
export declare function deriveHalfLife(base: number, entry: Partial<MemoryEntry>): number;
|
|
105
|
-
/**
|
|
136
|
+
/**
|
|
137
|
+
* Counts the outcome; calculateStrength turns the counts into a reward factor on the half-life, so there is no fixed
|
|
138
|
+
* delta here.
|
|
139
|
+
*/
|
|
106
140
|
export declare function applyOutcome(entry: MemoryEntry, good: boolean): MemoryEntry;
|
|
107
141
|
/** applyOutcome as a served outcome applies it: a good outcome reconfirms the entry, so its churn-stale tag goes. */
|
|
108
142
|
export declare function entryAfterOutcome(entry: MemoryEntry, good: boolean): MemoryEntry;
|
|
@@ -120,14 +154,24 @@ export declare function confidenceLabel(entry: MemoryEntry, now?: Date): {
|
|
|
120
154
|
text: string;
|
|
121
155
|
warn: boolean;
|
|
122
156
|
};
|
|
123
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* The stored confidence, or 'stale' once the entry is aged out (not retrieved for AGED_OUT_AFTER_DAYS; pinned and
|
|
159
|
+
* verified exempt).
|
|
160
|
+
*/
|
|
124
161
|
export declare function resolveConfidence(entry: MemoryEntry, now?: Date): ConfidenceLevel;
|
|
125
|
-
/**
|
|
162
|
+
/**
|
|
163
|
+
* Base half-life in days before deriveHalfLife's multipliers: 365 because 7 lost the current fact far more often and
|
|
164
|
+
* 730 did no better.
|
|
126
165
|
* `hippo sleep` moves memories still on an older base (src/consolidate/half-life-migration.ts). */
|
|
127
166
|
export declare const DEFAULT_HALF_LIFE_DAYS = 365;
|
|
167
|
+
/** The flat half-life the decision, incident and other object writers gave their memories before they took the
|
|
168
|
+
* default. */
|
|
169
|
+
export declare const LEGACY_TYPED_HALF_LIFE = 90;
|
|
128
170
|
export declare const COMPACTION_MEMORY_TAG = "compaction-memory";
|
|
129
171
|
export declare const COMPACTION_SOURCE_PREFIX = "compaction:";
|
|
130
|
-
/**
|
|
172
|
+
/**
|
|
173
|
+
* An imported agent memory is kept for good: the agent's note file is its record. It needs both its tool's tag and a
|
|
174
|
+
* source with that tool's prefix,
|
|
131
175
|
* since merge copies source tags onto rows whose source is 'consolidation'. */
|
|
132
176
|
export interface KeepPair {
|
|
133
177
|
readonly tag: string;
|
|
@@ -136,31 +180,40 @@ export interface KeepPair {
|
|
|
136
180
|
export declare const KEEP_PAIRS: readonly KeepPair[];
|
|
137
181
|
export declare function isKeptForGood(entry: Pick<MemoryEntry, 'tags' | 'source' | 'superseded_by'>): boolean;
|
|
138
182
|
export declare function canAutoDelete(entry: Pick<MemoryEntry, 'pinned' | 'kind' | 'tags' | 'source' | 'superseded_by'>): boolean;
|
|
183
|
+
/** Options are camelCase; `MemoryEntry` keeps the snake_case stored-row names. */
|
|
139
184
|
export interface CreateMemoryOptions {
|
|
140
185
|
layer?: Layer;
|
|
141
186
|
tags?: string[];
|
|
142
|
-
|
|
187
|
+
emotionalValence?: EmotionalValence;
|
|
143
188
|
pinned?: boolean;
|
|
144
|
-
|
|
189
|
+
schemaFit?: number;
|
|
145
190
|
source?: string;
|
|
146
191
|
confidence?: ConfidenceLevel;
|
|
147
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* The store's `loadConfig(hippoRoot).defaultHalfLifeDays`; required so no writer silently gets the compiled default.
|
|
194
|
+
*/
|
|
148
195
|
baseHalfLifeDays: number;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
196
|
+
traceOutcome?: TraceOutcome;
|
|
197
|
+
sourceSessionId?: string | null;
|
|
198
|
+
validFrom?: string;
|
|
199
|
+
extractedFrom?: string;
|
|
200
|
+
dagLevel?: number;
|
|
201
|
+
dagParentId?: string;
|
|
155
202
|
kind?: MemoryKind;
|
|
156
203
|
scope?: string | null;
|
|
157
204
|
owner?: string | null;
|
|
158
|
-
|
|
205
|
+
artifactRef?: string | null;
|
|
159
206
|
tenantId?: string;
|
|
160
207
|
}
|
|
161
|
-
/**
|
|
208
|
+
/**
|
|
209
|
+
* Create a new memory entry with defaults. Untyped JavaScript callers that omit the options get the compiled default
|
|
210
|
+
* half-life.
|
|
211
|
+
*/
|
|
162
212
|
export declare function createMemory(content: string, options: CreateMemoryOptions): MemoryEntry;
|
|
163
|
-
/**
|
|
213
|
+
/**
|
|
214
|
+
* The row that replaces `old`: a supersede never changes where a memory belongs, so source, scope, session and a
|
|
215
|
+
* stamped origin carry over.
|
|
216
|
+
*/
|
|
164
217
|
export declare function createSuccessor(old: MemoryEntry, content: string, opts: {
|
|
165
218
|
tenantId: string;
|
|
166
219
|
baseHalfLifeDays: number;
|
|
@@ -168,7 +221,9 @@ export declare function createSuccessor(old: MemoryEntry, content: string, opts:
|
|
|
168
221
|
tags?: string[];
|
|
169
222
|
pinned?: boolean;
|
|
170
223
|
}): MemoryEntry;
|
|
171
|
-
/**
|
|
224
|
+
/**
|
|
225
|
+
* How well new content fits existing knowledge, 0..1: above 0.7 consolidates faster, below 0.3 is novel and decays
|
|
226
|
+
* faster if unused.
|
|
172
227
|
* Tags shared with existing memories count by rarity (a rare shared tag fits more), plus content-token overlap. */
|
|
173
228
|
export declare function computeSchemaFit(content: string, tags: string[], existingEntries: MemoryEntry[]): number;
|
|
174
229
|
/** What schema fit reads from `entries`, built once for a caller that scores many contents against the same rows. */
|
|
@@ -184,6 +239,8 @@ export interface SchemaFitSource {
|
|
|
184
239
|
/** computeSchemaFit against `source`, for a caller that holds counts and texts but no rows. */
|
|
185
240
|
export declare function schemaFitFrom(content: string, tags: readonly string[], source: SchemaFitSource): number;
|
|
186
241
|
/** Returns copies with the retrieval count, clock and half-life updated; the caller persists them.
|
|
187
|
-
*
|
|
242
|
+
* Under HIPPO_ABLATE_RECALL_BOOST (eval-only) the entries come back unchanged, not empty, since callers derive
|
|
243
|
+
* last_retrieval_ids from them.
|
|
244
|
+
*/
|
|
188
245
|
export declare function markRetrieved(entries: MemoryEntry[], now?: Date, options?: Pick<DecayOptions, 'ablation'>): MemoryEntry[];
|
|
189
246
|
//# sourceMappingURL=memory.d.ts.map
|
package/dist/core/memory.js
CHANGED
|
@@ -17,6 +17,8 @@ export var Layer;
|
|
|
17
17
|
Layer["Trace"] = "trace";
|
|
18
18
|
})(Layer || (Layer = {}));
|
|
19
19
|
export const MEMORY_KINDS = ['raw', 'distilled', 'superseded', 'archived'];
|
|
20
|
+
/** Named dag_level values; level 0 is a raw leaf. */
|
|
21
|
+
export const DAG_LEVEL = { extracted: 1, topic: 2, entity: 3 };
|
|
20
22
|
/** Tag on a memory whose named file/symbol/script changed after it was stored. */
|
|
21
23
|
export const CHURN_STALE_TAG = 'churn-stale';
|
|
22
24
|
// Losses weigh ~2x gains (Lovallo-Kahneman), so negative is 2.0; HIPPO_LOSS_AVERSION_RATIO scales it per process.
|
|
@@ -47,17 +49,25 @@ function getLossAversionRatio() {
|
|
|
47
49
|
_lossAversionRatioCache = parsed;
|
|
48
50
|
return parsed;
|
|
49
51
|
}
|
|
50
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Test-only: a test that sets HIPPO_LOSS_AVERSION_RATIO calls this in beforeEach and afterEach
|
|
54
|
+
* (tests/emotional-multipliers.test.ts).
|
|
55
|
+
*/
|
|
51
56
|
export function _resetLossAversionRatioCacheForTests() {
|
|
52
57
|
_lossAversionRatioCache = undefined;
|
|
53
58
|
}
|
|
54
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Scales only the `negative` multiplier; `critical` stays unscaled so the knob moves just the losses-vs-gains claim.
|
|
61
|
+
*/
|
|
55
62
|
export function applyLossAversionRatio(valence, baseMultiplier) {
|
|
56
63
|
if (valence !== 'negative')
|
|
57
64
|
return baseMultiplier;
|
|
58
65
|
return baseMultiplier * getLossAversionRatio();
|
|
59
66
|
}
|
|
60
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* 1 + REWARD_SLOPE * (pos - neg) / (pos + neg + 1), in (0.5, 1.5), 1.0 with no outcomes; it scales the effective
|
|
69
|
+
* half-life.
|
|
70
|
+
*/
|
|
61
71
|
export function calculateRewardFactor(entry, ablation = NO_STRENGTH_ABLATION) {
|
|
62
72
|
// EVAL-ONLY ablation (see ablation.ts): the slow outcome channel.
|
|
63
73
|
if (ablation.outcomeSlow)
|
|
@@ -75,13 +85,18 @@ export const MAX_WRONG_HALVINGS = 3;
|
|
|
75
85
|
export const DECAY_BASE = 0.5;
|
|
76
86
|
export const REWARD_SLOPE = 0.5;
|
|
77
87
|
export const RETRIEVAL_BOOST_SLOPE = 0.1;
|
|
78
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Bad outcome marks past good ones, floored at zero; each halves strength and stops recall strengthening, so a
|
|
90
|
+
* correction outranks pinning.
|
|
91
|
+
*/
|
|
79
92
|
export function netWrong(entry, ablation = NO_STRENGTH_ABLATION) {
|
|
80
93
|
if (ablation.outcomeSlow || ablation.decay)
|
|
81
94
|
return 0;
|
|
82
95
|
return Math.max(0, (entry.outcome_negative ?? 0) - (entry.outcome_positive ?? 0));
|
|
83
96
|
}
|
|
84
|
-
/**
|
|
97
|
+
/**
|
|
98
|
+
* Strength at `now` = decay * retrieval boost * emotional multiplier, clamped to [0, 1]; the basis modes are on
|
|
99
|
+
* DecayOptions.
|
|
85
100
|
* Pinned memories skip time decay, but being marked wrong still fades them (netWrong). */
|
|
86
101
|
export function calculateStrength(entry,
|
|
87
102
|
// evalNow() is the real clock unless HIPPO_FAKE_NOW is set (eval-only); an explicit `now` wins.
|
|
@@ -91,7 +106,8 @@ now = evalNow(), options = {}) {
|
|
|
91
106
|
const wrongPenalty = Math.pow(DECAY_BASE, Math.min(netWrong(entry, ablation), MAX_WRONG_HALVINGS));
|
|
92
107
|
if (entry.pinned)
|
|
93
108
|
return wrongPenalty;
|
|
94
|
-
// EVAL-ONLY ablation (see ablation.ts): anchor decay at creation so clock resets from earlier unflagged runs cannot
|
|
109
|
+
// EVAL-ONLY ablation (see ablation.ts): anchor decay at creation so clock resets from earlier unflagged runs cannot
|
|
110
|
+
// leak in.
|
|
95
111
|
const lastRetrieved = new Date(ablation.recallBoost ? entry.created : entry.last_retrieved);
|
|
96
112
|
const daysSince = (now.getTime() - lastRetrieved.getTime()) / DAY_MS;
|
|
97
113
|
const rewardFactor = calculateRewardFactor(entry, ablation);
|
|
@@ -113,7 +129,8 @@ function decayExponentFor(options, daysSince, halfLifeDays) {
|
|
|
113
129
|
let effectiveHalfLife = halfLifeDays;
|
|
114
130
|
const basis = options.decayBasis ?? 'clock';
|
|
115
131
|
if (basis === 'session') {
|
|
116
|
-
// Each sleep cycle counts as one "day"; sessions since last retrieval are estimated from wall time and the average
|
|
132
|
+
// Each sleep cycle counts as one "day"; sessions since last retrieval are estimated from wall time and the average
|
|
133
|
+
// interval.
|
|
117
134
|
const avgInterval = options.avgSessionIntervalDays ?? 1;
|
|
118
135
|
const sessionsSince = avgInterval > 0 ? Math.max(0, daysSince / avgInterval) : daysSince;
|
|
119
136
|
return sessionsSince / effectiveHalfLife;
|
|
@@ -134,7 +151,8 @@ function retrievalBoostFor(entry, ablation) {
|
|
|
134
151
|
? 1.0
|
|
135
152
|
: 1 + RETRIEVAL_BOOST_SLOPE * Math.log2(entry.retrieval_count + 1);
|
|
136
153
|
}
|
|
137
|
-
|
|
154
|
+
/** A memory counts as high schema fit strictly above this. */
|
|
155
|
+
export const HIGH_SCHEMA_FIT = 0.7;
|
|
138
156
|
const HIGH_FIT_HALF_LIFE_FACTOR = 1.5;
|
|
139
157
|
const LOW_SCHEMA_FIT = 0.3;
|
|
140
158
|
const LOW_FIT_HALF_LIFE_FACTOR = 0.5;
|
|
@@ -161,7 +179,10 @@ export function deriveHalfLife(base, entry) {
|
|
|
161
179
|
}
|
|
162
180
|
return hl;
|
|
163
181
|
}
|
|
164
|
-
/**
|
|
182
|
+
/**
|
|
183
|
+
* Counts the outcome; calculateStrength turns the counts into a reward factor on the half-life, so there is no fixed
|
|
184
|
+
* delta here.
|
|
185
|
+
*/
|
|
165
186
|
export function applyOutcome(entry, good) {
|
|
166
187
|
const updated = {
|
|
167
188
|
...entry,
|
|
@@ -205,18 +226,30 @@ export function confidenceLabel(entry, now = evalNow()) {
|
|
|
205
226
|
warn: agedOut || tier === 'stale' || tier === 'inferred',
|
|
206
227
|
};
|
|
207
228
|
}
|
|
208
|
-
/**
|
|
229
|
+
/**
|
|
230
|
+
* The stored confidence, or 'stale' once the entry is aged out (not retrieved for AGED_OUT_AFTER_DAYS; pinned and
|
|
231
|
+
* verified exempt).
|
|
232
|
+
*/
|
|
209
233
|
export function resolveConfidence(entry, now = evalNow()) {
|
|
210
234
|
return isAgedOut(entry, now) ? 'stale' : entry.confidence;
|
|
211
235
|
}
|
|
212
|
-
/**
|
|
236
|
+
/**
|
|
237
|
+
* Base half-life in days before deriveHalfLife's multipliers: 365 because 7 lost the current fact far more often and
|
|
238
|
+
* 730 did no better.
|
|
213
239
|
* `hippo sleep` moves memories still on an older base (src/consolidate/half-life-migration.ts). */
|
|
214
240
|
export const DEFAULT_HALF_LIFE_DAYS = 365;
|
|
241
|
+
/** The flat half-life the decision, incident and other object writers gave their memories before they took the
|
|
242
|
+
* default. */
|
|
243
|
+
export const LEGACY_TYPED_HALF_LIFE = 90;
|
|
215
244
|
export const COMPACTION_MEMORY_TAG = 'compaction-memory';
|
|
216
245
|
export const COMPACTION_SOURCE_PREFIX = 'compaction:';
|
|
217
|
-
export const KEEP_PAIRS = AGENT_MEMORY_TOOLS.map((t) => ({
|
|
246
|
+
export const KEEP_PAIRS = AGENT_MEMORY_TOOLS.map((t) => ({
|
|
247
|
+
tag: t.tag,
|
|
248
|
+
sourcePrefix: toolSourcePrefix(t.id),
|
|
249
|
+
}));
|
|
218
250
|
export function isKeptForGood(entry) {
|
|
219
|
-
return !entry.superseded_by &&
|
|
251
|
+
return (!entry.superseded_by &&
|
|
252
|
+
KEEP_PAIRS.some((p) => entry.tags.includes(p.tag) && entry.source.startsWith(p.sourcePrefix)));
|
|
220
253
|
}
|
|
221
254
|
export function canAutoDelete(entry) {
|
|
222
255
|
return !entry.pinned && entry.kind !== 'raw' && !isKeptForGood(entry);
|
|
@@ -226,8 +259,8 @@ export function createMemory(content, options = {}) {
|
|
|
226
259
|
const now = evalNow().toISOString(); // honors HIPPO_FAKE_NOW (eval-only)
|
|
227
260
|
const layer = options.layer ?? Layer.Episodic;
|
|
228
261
|
const tags = options.tags ?? [];
|
|
229
|
-
const emotional_valence = options.
|
|
230
|
-
const schema_fit = options.
|
|
262
|
+
const emotional_valence = options.emotionalValence ?? inferValence(tags);
|
|
263
|
+
const schema_fit = options.schemaFit ?? DEFAULT_SCHEMA_FIT;
|
|
231
264
|
const half_life_days = deriveHalfLife(options.baseHalfLifeDays ?? DEFAULT_HALF_LIFE_DAYS, { tags, schema_fit });
|
|
232
265
|
const entry = {
|
|
233
266
|
id: generateId(layer === Layer.Semantic ? 'sem' : 'mem'),
|
|
@@ -250,17 +283,17 @@ export function createMemory(content, options = {}) {
|
|
|
250
283
|
content,
|
|
251
284
|
parents: [],
|
|
252
285
|
starred: false,
|
|
253
|
-
trace_outcome: options.
|
|
254
|
-
source_session_id: options.
|
|
255
|
-
valid_from: options.
|
|
286
|
+
trace_outcome: options.traceOutcome ?? null,
|
|
287
|
+
source_session_id: options.sourceSessionId ?? null,
|
|
288
|
+
valid_from: options.validFrom ?? now,
|
|
256
289
|
superseded_by: null,
|
|
257
|
-
extracted_from: options.
|
|
258
|
-
dag_level: options.
|
|
259
|
-
dag_parent_id: options.
|
|
290
|
+
extracted_from: options.extractedFrom ?? null,
|
|
291
|
+
dag_level: options.dagLevel ?? 0,
|
|
292
|
+
dag_parent_id: options.dagParentId ?? null,
|
|
260
293
|
kind: options.kind ?? 'distilled',
|
|
261
294
|
scope: options.scope ?? null,
|
|
262
295
|
owner: options.owner ?? null,
|
|
263
|
-
artifact_ref: options.
|
|
296
|
+
artifact_ref: options.artifactRef ?? null,
|
|
264
297
|
tenant_id: options.tenantId ?? DEFAULT_TENANT_ID,
|
|
265
298
|
};
|
|
266
299
|
entry.strength = calculateStrength(entry);
|
|
@@ -272,11 +305,14 @@ function assertValidMemoryInput(content, options) {
|
|
|
272
305
|
throw new BadRequestError(`Memory content too short (${trimmed.length} chars, minimum 3): "${trimmed}"`);
|
|
273
306
|
}
|
|
274
307
|
const validOutcomes = ['success', 'failure', 'partial', null];
|
|
275
|
-
if (options.
|
|
276
|
-
throw new BadRequestError(`Invalid trace_outcome: ${options.
|
|
308
|
+
if (options.traceOutcome !== undefined && !validOutcomes.includes(options.traceOutcome)) {
|
|
309
|
+
throw new BadRequestError(`Invalid trace_outcome: ${options.traceOutcome}. Must be 'success', 'failure', 'partial', or null.`);
|
|
277
310
|
}
|
|
278
311
|
}
|
|
279
|
-
/**
|
|
312
|
+
/**
|
|
313
|
+
* The row that replaces `old`: a supersede never changes where a memory belongs, so source, scope, session and a
|
|
314
|
+
* stamped origin carry over.
|
|
315
|
+
*/
|
|
280
316
|
export function createSuccessor(old, content, opts) {
|
|
281
317
|
const next = createMemory(content, {
|
|
282
318
|
layer: opts.layer ?? old.layer,
|
|
@@ -286,7 +322,7 @@ export function createSuccessor(old, content, opts) {
|
|
|
286
322
|
confidence: 'verified',
|
|
287
323
|
tenantId: opts.tenantId,
|
|
288
324
|
scope: old.scope,
|
|
289
|
-
|
|
325
|
+
sourceSessionId: old.source_session_id,
|
|
290
326
|
baseHalfLifeDays: opts.baseHalfLifeDays,
|
|
291
327
|
});
|
|
292
328
|
// A legacy null origin has nothing to carry, so the store stamps it from its own location.
|
|
@@ -295,7 +331,9 @@ export function createSuccessor(old, content, opts) {
|
|
|
295
331
|
}
|
|
296
332
|
return next;
|
|
297
333
|
}
|
|
298
|
-
/**
|
|
334
|
+
/**
|
|
335
|
+
* How well new content fits existing knowledge, 0..1: above 0.7 consolidates faster, below 0.3 is novel and decays
|
|
336
|
+
* faster if unused.
|
|
299
337
|
* Tags shared with existing memories count by rarity (a rare shared tag fits more), plus content-token overlap. */
|
|
300
338
|
export function computeSchemaFit(content, tags, existingEntries) {
|
|
301
339
|
return schemaFitFrom(content, tags, schemaFitSourceOf(existingEntries));
|
|
@@ -317,7 +355,11 @@ const TAG_OVERLAP_SCALE = 2;
|
|
|
317
355
|
// Floor on the matches that saturate the content score, so a tiny store cannot saturate it on one hit.
|
|
318
356
|
const CONTENT_ENOUGH_MIN_MATCHES = 5;
|
|
319
357
|
function significantTokens(text) {
|
|
320
|
-
return new Set(text
|
|
358
|
+
return new Set(text
|
|
359
|
+
.toLowerCase()
|
|
360
|
+
.replace(/[^\w\s]/g, ' ')
|
|
361
|
+
.split(/\s+/)
|
|
362
|
+
.filter((t) => t.length > FILLER_TOKEN_MAX_LENGTH));
|
|
321
363
|
}
|
|
322
364
|
/** computeSchemaFit against `source`, for a caller that holds counts and texts but no rows. */
|
|
323
365
|
export function schemaFitFrom(content, tags, source) {
|
|
@@ -368,7 +410,9 @@ function inferValence(tags) {
|
|
|
368
410
|
return 'neutral';
|
|
369
411
|
}
|
|
370
412
|
/** Returns copies with the retrieval count, clock and half-life updated; the caller persists them.
|
|
371
|
-
*
|
|
413
|
+
* Under HIPPO_ABLATE_RECALL_BOOST (eval-only) the entries come back unchanged, not empty, since callers derive
|
|
414
|
+
* last_retrieval_ids from them.
|
|
415
|
+
*/
|
|
372
416
|
export function markRetrieved(entries, now = evalNow(), options = {}) {
|
|
373
417
|
const ablation = options.ablation ?? NO_STRENGTH_ABLATION;
|
|
374
418
|
if (ablation.recallBoost)
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { type MemoryEntry } from './memory.js';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The row that replaces a merged row once its retired texts leave: undefined when it holds none, null when nothing else
|
|
4
|
+
* is left.
|
|
5
|
+
*/
|
|
3
6
|
export declare function mergedSuccessor(row: MemoryEntry, retired: (text: string) => boolean, retiredIds: ReadonlySet<string>): MemoryEntry | null | undefined;
|
|
4
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Sleep's check on a merged row: drops texts whose source was superseded since the merge, or that a rejection now
|
|
9
|
+
* covers.
|
|
10
|
+
*/
|
|
5
11
|
export declare function successorAfterRetirement(row: MemoryEntry, byId: ReadonlyMap<string, MemoryEntry>, rejected: (text: string) => boolean): MemoryEntry | null | undefined;
|
|
6
12
|
//# sourceMappingURL=merged-row.d.ts.map
|
package/dist/core/merged-row.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
// A sleep-merged row copies its sources' texts, so retiring a text (reject, or superseding its source) must reach the
|
|
1
|
+
// A sleep-merged row copies its sources' texts, so retiring a text (reject, or superseding its source) must reach the
|
|
2
|
+
// row too.
|
|
2
3
|
// SHORTCUT: reject rewrites merged rows at once, live and dormant; supersede and `resolve
|
|
3
4
|
// --reject-loser` wait for the next sleep's check, which sees a dormant row only once restored.
|
|
4
5
|
import { generateId } from './memory.js';
|
|
5
6
|
import { duplicateKey, heldTexts, mergedText } from '../util/same-text.js';
|
|
6
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* The row that replaces a merged row once its retired texts leave: undefined when it holds none, null when nothing else
|
|
9
|
+
* is left.
|
|
10
|
+
*/
|
|
7
11
|
export function mergedSuccessor(row, retired, retiredIds) {
|
|
8
12
|
const texts = heldTexts(row);
|
|
9
13
|
const kept = texts.filter((t) => !retired(t));
|
|
@@ -22,7 +26,10 @@ export function mergedSuccessor(row, retired, retiredIds) {
|
|
|
22
26
|
conflicts_with: [],
|
|
23
27
|
};
|
|
24
28
|
}
|
|
25
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Sleep's check on a merged row: drops texts whose source was superseded since the merge, or that a rejection now
|
|
31
|
+
* covers.
|
|
32
|
+
*/
|
|
26
33
|
export function successorAfterRetirement(row, byId, rejected) {
|
|
27
34
|
if (row.source !== 'consolidation' || row.superseded_by)
|
|
28
35
|
return undefined;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* The package folder: it holds package.json, bin/ and dist-ui/. The same two steps up from src/core and from dist/core.
|
|
3
|
+
*/
|
|
2
4
|
export declare const PACKAGE_ROOT: string;
|
|
3
5
|
//# sourceMappingURL=package-root.d.ts.map
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
import { fileURLToPath } from 'url';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* The package folder: it holds package.json, bin/ and dist-ui/. The same two steps up from src/core and from dist/core.
|
|
5
|
+
*/
|
|
4
6
|
export const PACKAGE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
5
7
|
//# sourceMappingURL=package-root.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type MemoryEntry } from './memory.js';
|
|
2
|
+
import { type PhysicsParticle } from './physics.js';
|
|
3
|
+
/**
|
|
4
|
+
* Refresh mass, charge and temperature for existing particles
|
|
5
|
+
* from current memory attributes (called during consolidation).
|
|
6
|
+
*/
|
|
7
|
+
export declare function refreshParticleProperties(particles: PhysicsParticle[], entries: Map<string, MemoryEntry>, now?: Date): void;
|
|
8
|
+
//# sourceMappingURL=particle-refresh.d.ts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Particle properties follow the memory they stand for; pure, so sleep refreshes them without reaching the store.
|
|
2
|
+
import { evalNow, strengthAblation } from './ablation.js';
|
|
3
|
+
import { calculateStrength } from './memory.js';
|
|
4
|
+
import { computeCharge, computeMass, computeTemperature } from './physics.js';
|
|
5
|
+
import { DAY_MS } from '../util/time.js';
|
|
6
|
+
/**
|
|
7
|
+
* Refresh mass, charge and temperature for existing particles
|
|
8
|
+
* from current memory attributes (called during consolidation).
|
|
9
|
+
*/
|
|
10
|
+
export function refreshParticleProperties(particles, entries, now = evalNow()) {
|
|
11
|
+
for (const p of particles) {
|
|
12
|
+
const entry = entries.get(p.memoryId);
|
|
13
|
+
if (!entry)
|
|
14
|
+
continue;
|
|
15
|
+
const strength = calculateStrength(entry, now, { ablation: strengthAblation() });
|
|
16
|
+
const ageDays = (now.getTime() - new Date(entry.created).getTime()) / DAY_MS;
|
|
17
|
+
p.mass = computeMass(strength, entry.retrieval_count);
|
|
18
|
+
p.charge = computeCharge(entry.emotional_valence);
|
|
19
|
+
p.temperature = computeTemperature(ageDays, 1.0);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=particle-refresh.js.map
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Physics engine configuration for Hippo memory-as-physics. All constants are tunable; defaults calibrated for ~500
|
|
3
|
+
* memory corpus.
|
|
4
|
+
*/
|
|
2
5
|
export interface PhysicsConfig {
|
|
3
6
|
/** Use physics scoring when embeddings available. 'auto' = yes if embeddings exist. */
|
|
4
7
|
enabled: boolean | 'auto';
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Physics engine configuration for Hippo memory-as-physics. All constants are tunable; defaults calibrated for ~500
|
|
3
|
+
* memory corpus.
|
|
4
|
+
*/
|
|
2
5
|
export const DEFAULT_PHYSICS_CONFIG = {
|
|
3
|
-
// Off by default: the paired ablation (benchmarks/physics-ablation/) found physics worse than classic hybrid on every
|
|
6
|
+
// Off by default: the paired ablation (benchmarks/physics-ablation/) found physics worse than classic hybrid on every
|
|
7
|
+
// metric, CI excluding zero
|
|
4
8
|
// (MRR 0.68 vs 0.84, R@5 74% vs 84%). Opt in with physics.enabled 'auto' or true.
|
|
5
9
|
enabled: false,
|
|
6
10
|
G_query: 2.0,
|
package/dist/core/physics.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Memory-as-Physics engine: pure math (forces, Velocity Verlet integration, physics-based scoring, cluster
|
|
3
|
+
* amplification), no I/O.
|
|
4
|
+
* Memories are particles on the unit hypersphere in embedding space (384-dim); query gravity, attraction, conflict
|
|
5
|
+
* repulsion and drag act on them,
|
|
3
6
|
* and nearby high-scoring memories amplify each other. */
|
|
4
7
|
import { type EmotionalValence, type MemoryEntry } from './memory.js';
|
|
5
8
|
import type { PhysicsConfig } from './physics-config.js';
|
|
@@ -43,16 +46,29 @@ export declare function vecClampMagnitude(v: number[], maxMag: number): number[]
|
|
|
43
46
|
export declare function computeMass(strength: number, retrievalCount: number): number;
|
|
44
47
|
export declare function computeCharge(valence: EmotionalValence): number;
|
|
45
48
|
export declare function computeTemperature(ageDays: number, temperatureDecay: number): number;
|
|
46
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Query gravity (retrieval-time, virtual: does not move the particle): scalar ranking magnitude F = G_Q * mass * max(0,
|
|
51
|
+
* cosine(pos, query))^2.
|
|
52
|
+
*/
|
|
47
53
|
export declare function queryGravityMagnitude(particle: PhysicsParticle, queryEmbedding: number[], G_query: number): number;
|
|
48
54
|
/** Momentum bonus in [0, 1]: how aligned the particle's velocity is with the query direction. */
|
|
49
55
|
export declare function velocityAlignmentBonus(particle: PhysicsParticle, queryEmbedding: number[]): number;
|
|
50
|
-
/**
|
|
51
|
-
*
|
|
56
|
+
/**
|
|
57
|
+
* Attraction force on particle i from j (consolidation-time): G_M m_i m_j max(0, cosine)^3, directed along (pos_j -
|
|
58
|
+
* pos_i) projected tangent to the unit
|
|
59
|
+
* sphere at pos_i (positions are re-normalized to the sphere after integration). Adds into `out` (a fresh zero vector
|
|
60
|
+
* by default) using `diff` as scratch.
|
|
61
|
+
*/
|
|
52
62
|
export declare function attractionForce(pi: PhysicsParticle, pj: PhysicsParticle, G_memory: number, out?: number[], diff?: number[]): number[];
|
|
53
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Conflict repulsion on i away from j (consolidation-time): K_R * m_i * m_j / max(0.01, cosine_distance)^2, where
|
|
65
|
+
* cosine_distance = 1 - cosine_similarity.
|
|
66
|
+
*/
|
|
54
67
|
export declare function repulsionForce(pi: PhysicsParticle, pj: PhysicsParticle, K_repulsion: number): number[];
|
|
55
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Drag force (consolidation-time): -drag * velocity / max(1, effectiveHalfLife), with effectiveHalfLife from the
|
|
70
|
+
* memory's current half_life_days.
|
|
71
|
+
*/
|
|
56
72
|
export declare function dragForce(particle: PhysicsParticle, drag: number, effectiveHalfLife: number): number[];
|
|
57
73
|
export interface ForceContext {
|
|
58
74
|
/** Map of memory ID -> list of conflicting memory IDs */
|
|
@@ -64,13 +80,23 @@ export interface ForceContext {
|
|
|
64
80
|
/** Full physics simulation for one sleep cycle; mutates particles in place and returns simulation statistics. */
|
|
65
81
|
export declare function simulate(particles: PhysicsParticle[], ctx: ForceContext): SimulationStats;
|
|
66
82
|
export declare function computeSystemEnergy(particles: PhysicsParticle[], G_memory: number): SystemEnergy;
|
|
67
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Scores all particles against a query embedding; virtual force computation, so it does NOT modify particle positions.
|
|
85
|
+
*/
|
|
68
86
|
export declare function physicsScore(particles: PhysicsParticle[], queryEmbedding: number[], config: PhysicsConfig,
|
|
69
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* Cross-ingest-stable tie key per memoryId (typically the memory content, from a caller with entries in scope);
|
|
89
|
+
* without it ties fall to memoryId,
|
|
70
90
|
* which is per-instance only and lets the cluster_top_k amplification set vary across fresh ingests. */
|
|
71
91
|
tieKeyOf?: (memoryId: string) => string): ScoredPhysicsResult[];
|
|
72
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Nudges a particle toward (good outcome) or away from (bad outcome) the query embedding; new memories respond more
|
|
94
|
+
* (temperature). Mutates in place.
|
|
95
|
+
*/
|
|
73
96
|
export declare function applyOutcomeFeedback(particle: PhysicsParticle, queryEmbedding: number[], good: boolean, feedbackAlpha: number): void;
|
|
74
|
-
/**
|
|
97
|
+
/**
|
|
98
|
+
* Initialize physics state for a memory from its embedding vector; returns the new particle without persisting (the
|
|
99
|
+
* caller must save).
|
|
100
|
+
*/
|
|
75
101
|
export declare function initializeParticle(entry: MemoryEntry, embedding: number[], now?: Date): PhysicsParticle;
|
|
76
102
|
//# sourceMappingURL=physics.d.ts.map
|