hippo-memory 1.72.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -5
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/auth/audit.js +58 -0
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
- package/dist/api/{auth.js → auth/auth.js} +66 -54
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +14 -4
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +31 -34
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +120 -63
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +23 -17
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/memories/memories.js +52 -0
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/memories/outcome.js +28 -0
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/memories/promote.js +76 -0
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
- package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
- package/dist/api/{remember.js → memories/remember.js} +50 -32
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -3
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -5
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +35 -20
- package/dist/api/prompt-hook.js +66 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +116 -72
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +36 -8
- package/dist/api/session-end.js +71 -25
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +27 -12
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +34 -15
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +18 -9
- package/dist/capture/compaction-spool.js +105 -63
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +58 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +33 -33
- package/dist/cli/auth.js +23 -31
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -5
- package/dist/cli/client.js +53 -23
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +43 -18
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +5 -4
- package/dist/cli/curate.js +55 -77
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +30 -30
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +34 -10
- package/dist/cli/hook-runtime.js +41 -16
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +35 -20
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +5 -5
- package/dist/cli/object-verbs.js +13 -16
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +17 -22
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +17 -7
- package/dist/cli/remember.js +51 -55
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +28 -18
- package/dist/cli/session-hooks.d.ts +2 -6
- package/dist/cli/session-hooks.js +140 -112
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.js +56 -34
- package/dist/cli/shared.d.ts +4 -2
- package/dist/cli/shared.js +26 -11
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +16 -8
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +97 -82
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +1 -1
- package/dist/cli/verb-row.d.ts +2 -0
- package/dist/cli/verbs/health.js +2 -0
- package/dist/cli/verbs/memory.js +47 -53
- package/dist/cli/verbs/objects.js +16 -7
- package/dist/cli/verbs/sessions.js +4 -2
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +14 -18
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -7
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -4
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -5
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -5
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +36 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -3
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -5
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -4
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -5
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +24 -10
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +45 -39
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +28 -17
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +37 -14
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +47 -37
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +42 -39
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +27 -30
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +38 -29
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +22 -17
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +87 -30
- package/dist/core/memory.js +82 -33
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +39 -11
- package/dist/core/physics.js +71 -21
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +35 -18
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.d.ts +2 -2
- package/dist/dashboard/dashboard-actions.js +18 -7
- package/dist/dashboard/dashboard-queries.js +2 -7
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +5 -7
- package/dist/dashboard/dashboard.js +22 -8
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -2
- package/dist/db/connect.js +8 -2
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +40 -20
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v11.js +1 -0
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -0
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -8
- package/dist/db/physics-state.js +17 -50
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +20 -5
- package/dist/db/request-stores.js +15 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +35 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.js +128 -46
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +11 -7
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +32 -27
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +50 -0
- package/dist/entry/store-kit.js +27 -0
- package/dist/entry/testing.d.ts +6 -0
- package/dist/entry/testing.js +7 -0
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +17 -7
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +72 -33
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +11 -10
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +3 -3
- package/dist/importers/vault.js +61 -45
- package/dist/index.d.ts +33 -7
- package/dist/index.js +26 -8
- package/dist/learn/autolearn.d.ts +21 -6
- package/dist/learn/autolearn.js +57 -26
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +17 -10
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -6
- package/dist/learn/invalidation.js +62 -28
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +21 -20
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +61 -77
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +59 -23
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +19 -9
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +12 -4
- package/dist/search/embed-memories.js +96 -58
- package/dist/search/engine.d.ts +11 -0
- package/dist/search/engine.js +14 -0
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +14 -8
- package/dist/server/auth.d.ts +19 -15
- package/dist/server/auth.js +68 -38
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.js +115 -67
- package/dist/server/client-ip.d.ts +17 -5
- package/dist/server/client-ip.js +56 -21
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +550 -97
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -17
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +40 -18
- package/dist/server/tls.d.ts +10 -2
- package/dist/server/tls.js +25 -5
- package/dist/server/types.d.ts +41 -24
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +17 -49
- package/dist/server.js +33 -40
- package/dist/sharing/global-store.d.ts +6 -12
- package/dist/sharing/global-store.js +8 -48
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +17 -7
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +28 -14
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +40 -18
- package/dist/store/ambient.js +10 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +90 -41
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +97 -63
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +101 -37
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +16 -5
- package/dist/store/conflicts.js +104 -48
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +58 -6
- package/dist/store/connectors/event-log.d.ts +122 -0
- package/dist/store/connectors/event-log.js +25 -0
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +30 -48
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +31 -47
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -10
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +70 -28
- package/dist/store/delivery-recorder.d.ts +10 -7
- package/dist/store/delivery-recorder.js +70 -37
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +26 -10
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +45 -19
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +72 -21
- package/dist/store/entry-reads.js +215 -69
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +26 -14
- package/dist/store/entry-writes.d.ts +28 -13
- package/dist/store/entry-writes.js +61 -22
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +11 -12
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +29 -19
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +15 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/half-life.js +2 -2
- package/dist/store/handoffs.d.ts +13 -7
- package/dist/store/handoffs.js +44 -22
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +4 -2
- package/dist/store/index.js +2 -1
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +96 -19
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +6 -3
- package/dist/store/open.js +20 -10
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +261 -219
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +128 -64
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +46 -20
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +20 -13
- package/dist/store/rule-sql.d.ts +7 -3
- package/dist/store/rule-sql.js +26 -13
- package/dist/store/search-rows.d.ts +16 -11
- package/dist/store/search-rows.js +54 -32
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +12 -5
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +8 -0
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +15 -0
- package/dist/store/sqlite/last-recall-group.js +62 -0
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
- package/dist/store/sqlite/maintenance-groups.js +61 -0
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +97 -38
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -18
- package/dist/store/sqlite/store.js +95 -33
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +25 -11
- package/dist/store/summaries.js +84 -27
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +8 -4
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +28 -11
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +7 -2
- package/dist/util/anthropic-messages.js +18 -7
- package/dist/util/atomic-write.d.ts +8 -3
- package/dist/util/atomic-write.js +36 -21
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +26 -5
- package/dist/util/env.js +87 -25
- package/dist/util/format.d.ts +2 -0
- package/dist/util/format.js +4 -0
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +16 -4
- package/dist/util/request-scope.js +19 -6
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +11 -0
- package/dist/util/spawn-argv.js +66 -0
- package/dist/util/sql.d.ts +3 -0
- package/dist/util/sql.js +6 -0
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/vector-codec.d.ts +4 -0
- package/dist/util/vector-codec.js +15 -0
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/audit.js +0 -56
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -7
- package/dist/api/learn.js +0 -124
- package/dist/api/memories.d.ts +0 -23
- package/dist/api/memories.js +0 -46
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/on-store.d.ts +0 -16
- package/dist/api/on-store.js +0 -38
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/outcome.js +0 -21
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/promote.js +0 -65
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -120
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -10
- package/dist/cli/lenient-id.d.ts +0 -2
- package/dist/cli/lenient-id.js +0 -13
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -21
- package/dist/store/sqlite/local.js +0 -39
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,18 +283,18 @@ 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.
|
|
264
|
-
|
|
296
|
+
artifact_ref: options.artifactRef ?? null,
|
|
297
|
+
tenant_id: options.tenantId ?? DEFAULT_TENANT_ID,
|
|
265
298
|
};
|
|
266
299
|
entry.strength = calculateStrength(entry);
|
|
267
300
|
return 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));
|
|
@@ -310,8 +348,18 @@ export function schemaFitSourceOf(entries) {
|
|
|
310
348
|
}
|
|
311
349
|
return { rows: entries.length, tagCounts, contents: entries.map((e) => e.content) };
|
|
312
350
|
}
|
|
351
|
+
// Tokens of this length or shorter are filler for schema fit.
|
|
352
|
+
const FILLER_TOKEN_MAX_LENGTH = 3;
|
|
353
|
+
// Matching half the tags at average weight scores about 0.5, so the raw overlap ratio is doubled.
|
|
354
|
+
const TAG_OVERLAP_SCALE = 2;
|
|
355
|
+
// Floor on the matches that saturate the content score, so a tiny store cannot saturate it on one hit.
|
|
356
|
+
const CONTENT_ENOUGH_MIN_MATCHES = 5;
|
|
313
357
|
function significantTokens(text) {
|
|
314
|
-
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));
|
|
315
363
|
}
|
|
316
364
|
/** computeSchemaFit against `source`, for a caller that holds counts and texts but no rows. */
|
|
317
365
|
export function schemaFitFrom(content, tags, source) {
|
|
@@ -331,13 +379,12 @@ export function schemaFitFrom(content, tags, source) {
|
|
|
331
379
|
weightedOverlap += Math.log(N / freq) + 1;
|
|
332
380
|
totalWeight += maxIdf;
|
|
333
381
|
}
|
|
334
|
-
|
|
335
|
-
const tagScore = totalWeight > 0 ? Math.min(1, (weightedOverlap / totalWeight) * 2) : 0;
|
|
382
|
+
const tagScore = totalWeight > 0 ? Math.min(1, (weightedOverlap / totalWeight) * TAG_OVERLAP_SCALE) : 0;
|
|
336
383
|
const newTokens = significantTokens(content);
|
|
337
384
|
if (newTokens.size === 0)
|
|
338
385
|
return Math.min(1, Math.max(0, tagScore));
|
|
339
386
|
// The content score is capped at 1, which this many matching memories reach.
|
|
340
|
-
const enough = Math.max(
|
|
387
|
+
const enough = Math.max(CONTENT_ENOUGH_MIN_MATCHES, N * CONTENT_ENOUGH_FRACTION);
|
|
341
388
|
let contentMatches = 0;
|
|
342
389
|
for (const text of source.contents) {
|
|
343
390
|
const entryTokens = significantTokens(text);
|
|
@@ -363,7 +410,9 @@ function inferValence(tags) {
|
|
|
363
410
|
return 'neutral';
|
|
364
411
|
}
|
|
365
412
|
/** Returns copies with the retrieval count, clock and half-life updated; the caller persists them.
|
|
366
|
-
*
|
|
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
|
+
*/
|
|
367
416
|
export function markRetrieved(entries, now = evalNow(), options = {}) {
|
|
368
417
|
const ablation = options.ablation ?? NO_STRENGTH_ABLATION;
|
|
369
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,7 +1,10 @@
|
|
|
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
|
-
import { type EmotionalValence } from './memory.js';
|
|
7
|
+
import { type EmotionalValence, type MemoryEntry } from './memory.js';
|
|
5
8
|
import type { PhysicsConfig } from './physics-config.js';
|
|
6
9
|
export interface PhysicsParticle {
|
|
7
10
|
memoryId: string;
|
|
@@ -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,11 +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;
|
|
97
|
+
/**
|
|
98
|
+
* Initialize physics state for a memory from its embedding vector; returns the new particle without persisting (the
|
|
99
|
+
* caller must save).
|
|
100
|
+
*/
|
|
101
|
+
export declare function initializeParticle(entry: MemoryEntry, embedding: number[], now?: Date): PhysicsParticle;
|
|
74
102
|
//# sourceMappingURL=physics.d.ts.map
|
package/dist/core/physics.js
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
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 { cosineOf } from './cosine.js';
|
|
5
|
-
import { isRecallBoostAblated } from './ablation.js';
|
|
6
|
-
import { FALLBACK_HALF_LIFE_DAYS } from './memory.js';
|
|
8
|
+
import { evalNow, isRecallBoostAblated, strengthAblation } from './ablation.js';
|
|
9
|
+
import { calculateStrength, FALLBACK_HALF_LIFE_DAYS } from './memory.js';
|
|
10
|
+
import { DAY_MS } from '../util/time.js';
|
|
7
11
|
import { comparePhysicsResultsBy } from './compare.js';
|
|
12
|
+
// Floors that stop a near-zero mass or a coincident pair from dividing a force by about zero.
|
|
13
|
+
const MIN_MASS = 0.01;
|
|
14
|
+
const MIN_COSINE_DISTANCE = 0.01;
|
|
15
|
+
// Mass gained per doubling of the retrieval count.
|
|
16
|
+
const RETRIEVAL_MASS_GAIN = 0.1;
|
|
17
|
+
const NEAR_ZERO = 1e-10;
|
|
8
18
|
export function vecDot(a, b) {
|
|
9
19
|
let sum = 0;
|
|
10
20
|
for (let i = 0; i < a.length; i++)
|
|
@@ -38,7 +48,7 @@ export function vecZero(dim) {
|
|
|
38
48
|
/** Normalize to unit length. Returns zero vector if magnitude < epsilon. */
|
|
39
49
|
export function vecNormalize(v) {
|
|
40
50
|
const mag = vecNorm(v);
|
|
41
|
-
if (mag <
|
|
51
|
+
if (mag < NEAR_ZERO)
|
|
42
52
|
return vecZero(v.length);
|
|
43
53
|
return vecScale(v, 1 / mag);
|
|
44
54
|
}
|
|
@@ -56,10 +66,12 @@ const CHARGE_MAP = {
|
|
|
56
66
|
critical: -1.0,
|
|
57
67
|
};
|
|
58
68
|
export function computeMass(strength, retrievalCount) {
|
|
59
|
-
// EVAL-ONLY ablation (ablation.ts): under the recall-boost flag mass ignores retrieval history, which would otherwise
|
|
60
|
-
//
|
|
69
|
+
// EVAL-ONLY ablation (ablation.ts): under the recall-boost flag mass ignores retrieval history, which would otherwise
|
|
70
|
+
// leak strengthening into the ablated
|
|
71
|
+
// arm's physics-pool rankings (query gravity ranks by mass). Covers both init and refresh callers in
|
|
72
|
+
// physics-state.ts.
|
|
61
73
|
const effectiveCount = isRecallBoostAblated() ? 0 : retrievalCount;
|
|
62
|
-
return Math.max(
|
|
74
|
+
return Math.max(MIN_MASS, strength * (1 + RETRIEVAL_MASS_GAIN * Math.log2(effectiveCount + 1)));
|
|
63
75
|
}
|
|
64
76
|
export function computeCharge(valence) {
|
|
65
77
|
return CHARGE_MAP[valence] ?? 0;
|
|
@@ -67,7 +79,10 @@ export function computeCharge(valence) {
|
|
|
67
79
|
export function computeTemperature(ageDays, temperatureDecay) {
|
|
68
80
|
return 1 / (ageDays * temperatureDecay + 1);
|
|
69
81
|
}
|
|
70
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Query gravity (retrieval-time, virtual: does not move the particle): scalar ranking magnitude F = G_Q * mass * max(0,
|
|
84
|
+
* cosine(pos, query))^2.
|
|
85
|
+
*/
|
|
71
86
|
export function queryGravityMagnitude(particle, queryEmbedding, G_query) {
|
|
72
87
|
const cos = cosineOf(particle.position, queryEmbedding);
|
|
73
88
|
return G_query * particle.mass * Math.pow(Math.max(0, cos), 2);
|
|
@@ -78,13 +93,17 @@ export function velocityAlignmentBonus(particle, queryEmbedding) {
|
|
|
78
93
|
return 0;
|
|
79
94
|
const velMag = vecNorm(particle.velocity);
|
|
80
95
|
const qNorm = vecNorm(queryEmbedding);
|
|
81
|
-
if (velMag <
|
|
96
|
+
if (velMag < NEAR_ZERO || qNorm < NEAR_ZERO)
|
|
82
97
|
return 0;
|
|
83
98
|
const alignment = vecDot(particle.velocity, queryEmbedding) / (velMag * qNorm);
|
|
84
99
|
return Math.max(0, alignment);
|
|
85
100
|
}
|
|
86
|
-
/**
|
|
87
|
-
*
|
|
101
|
+
/**
|
|
102
|
+
* Attraction force on particle i from j (consolidation-time): G_M m_i m_j max(0, cosine)^3, directed along (pos_j -
|
|
103
|
+
* pos_i) projected tangent to the unit
|
|
104
|
+
* sphere at pos_i (positions are re-normalized to the sphere after integration). Adds into `out` (a fresh zero vector
|
|
105
|
+
* by default) using `diff` as scratch.
|
|
106
|
+
*/
|
|
88
107
|
export function attractionForce(pi, pj, G_memory, out = vecZero(pi.position.length), diff = vecZero(pi.position.length)) {
|
|
89
108
|
const cos = cosineOf(pi.position, pj.position);
|
|
90
109
|
if (cos <= 0)
|
|
@@ -94,23 +113,29 @@ export function attractionForce(pi, pj, G_memory, out = vecZero(pi.position.leng
|
|
|
94
113
|
for (let k = 0; k < out.length; k++)
|
|
95
114
|
diff[k] = pj.position[k] - pi.position[k];
|
|
96
115
|
const norm = vecNorm(diff);
|
|
97
|
-
if (norm <
|
|
116
|
+
if (norm < NEAR_ZERO)
|
|
98
117
|
return out;
|
|
99
118
|
const inv = 1 / norm;
|
|
100
119
|
for (let k = 0; k < out.length; k++)
|
|
101
120
|
out[k] += diff[k] * inv * magnitude;
|
|
102
121
|
return out;
|
|
103
122
|
}
|
|
104
|
-
/**
|
|
123
|
+
/**
|
|
124
|
+
* Conflict repulsion on i away from j (consolidation-time): K_R * m_i * m_j / max(0.01, cosine_distance)^2, where
|
|
125
|
+
* cosine_distance = 1 - cosine_similarity.
|
|
126
|
+
*/
|
|
105
127
|
export function repulsionForce(pi, pj, K_repulsion) {
|
|
106
128
|
const cos = cosineOf(pi.position, pj.position);
|
|
107
|
-
const dist = Math.max(
|
|
129
|
+
const dist = Math.max(MIN_COSINE_DISTANCE, 1 - cos);
|
|
108
130
|
const magnitude = K_repulsion * pi.mass * pj.mass / (dist * dist);
|
|
109
131
|
// Direction: away from j
|
|
110
132
|
const direction = vecNormalize(vecSub(pi.position, pj.position));
|
|
111
133
|
return vecScale(direction, magnitude);
|
|
112
134
|
}
|
|
113
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* Drag force (consolidation-time): -drag * velocity / max(1, effectiveHalfLife), with effectiveHalfLife from the
|
|
137
|
+
* memory's current half_life_days.
|
|
138
|
+
*/
|
|
114
139
|
export function dragForce(particle, drag, effectiveHalfLife) {
|
|
115
140
|
const damping = drag / Math.max(1, effectiveHalfLife);
|
|
116
141
|
return vecScale(particle.velocity, -damping);
|
|
@@ -142,7 +167,7 @@ function computeNetForce(i, particles, ctx, diff) {
|
|
|
142
167
|
/** Acceleration of particle i: its net force divided by mass, scaled in place. */
|
|
143
168
|
function computeAcceleration(i, particles, ctx, diff) {
|
|
144
169
|
const accel = computeNetForce(i, particles, ctx, diff);
|
|
145
|
-
const inv = 1 / Math.max(
|
|
170
|
+
const inv = 1 / Math.max(MIN_MASS, particles[i].mass);
|
|
146
171
|
for (let k = 0; k < accel.length; k++)
|
|
147
172
|
accel[k] *= inv;
|
|
148
173
|
return accel;
|
|
@@ -233,9 +258,13 @@ export function computeSystemEnergy(particles, G_memory) {
|
|
|
233
258
|
}
|
|
234
259
|
return { kinetic, potential, total: kinetic + potential };
|
|
235
260
|
}
|
|
236
|
-
/**
|
|
261
|
+
/**
|
|
262
|
+
* Scores all particles against a query embedding; virtual force computation, so it does NOT modify particle positions.
|
|
263
|
+
*/
|
|
237
264
|
export function physicsScore(particles, queryEmbedding, config,
|
|
238
|
-
/**
|
|
265
|
+
/**
|
|
266
|
+
* Cross-ingest-stable tie key per memoryId (typically the memory content, from a caller with entries in scope);
|
|
267
|
+
* without it ties fall to memoryId,
|
|
239
268
|
* which is per-instance only and lets the cluster_top_k amplification set vary across fresh ingests. */
|
|
240
269
|
tieKeyOf) {
|
|
241
270
|
if (particles.length === 0 || queryEmbedding.length === 0)
|
|
@@ -251,7 +280,8 @@ tieKeyOf) {
|
|
|
251
280
|
finalScore: gravity + momentum,
|
|
252
281
|
};
|
|
253
282
|
});
|
|
254
|
-
// Base-score order picks the cluster_top_k amplification SET (which mutates scores), so ties must be
|
|
283
|
+
// Base-score order picks the cluster_top_k amplification SET (which mutates scores), so ties must be
|
|
284
|
+
// cross-ingest-stable
|
|
255
285
|
// when the caller supplies a content tie key (see comparePhysicsResultsBy in compare.ts).
|
|
256
286
|
const tie = tieKeyOf ? (r) => tieKeyOf(r.memoryId) : undefined;
|
|
257
287
|
results.sort(comparePhysicsResultsBy((r) => r.baseScore, tie));
|
|
@@ -292,7 +322,10 @@ function applyClusterAmplification(results, particles, config) {
|
|
|
292
322
|
top[i].finalScore = top[i].baseScore * amplification;
|
|
293
323
|
}
|
|
294
324
|
}
|
|
295
|
-
/**
|
|
325
|
+
/**
|
|
326
|
+
* Nudges a particle toward (good outcome) or away from (bad outcome) the query embedding; new memories respond more
|
|
327
|
+
* (temperature). Mutates in place.
|
|
328
|
+
*/
|
|
296
329
|
export function applyOutcomeFeedback(particle, queryEmbedding, good, feedbackAlpha) {
|
|
297
330
|
if (particle.position.length === 0 || particle.position.length !== queryEmbedding.length)
|
|
298
331
|
return;
|
|
@@ -301,4 +334,21 @@ export function applyOutcomeFeedback(particle, queryEmbedding, good, feedbackAlp
|
|
|
301
334
|
const nudge = vecScale(direction, sign * feedbackAlpha * particle.temperature);
|
|
302
335
|
particle.position = vecNormalize(vecAdd(particle.position, nudge));
|
|
303
336
|
}
|
|
337
|
+
/**
|
|
338
|
+
* Initialize physics state for a memory from its embedding vector; returns the new particle without persisting (the
|
|
339
|
+
* caller must save).
|
|
340
|
+
*/
|
|
341
|
+
export function initializeParticle(entry, embedding, now = evalNow()) {
|
|
342
|
+
const strength = calculateStrength(entry, now, { ablation: strengthAblation() });
|
|
343
|
+
const ageDays = (now.getTime() - new Date(entry.created).getTime()) / DAY_MS;
|
|
344
|
+
return {
|
|
345
|
+
memoryId: entry.id,
|
|
346
|
+
position: [...embedding], // copy: position will diverge from original embedding
|
|
347
|
+
velocity: vecZero(embedding.length),
|
|
348
|
+
mass: computeMass(strength, entry.retrieval_count),
|
|
349
|
+
charge: computeCharge(entry.emotional_valence),
|
|
350
|
+
temperature: computeTemperature(ageDays, 1.0),
|
|
351
|
+
lastSimulation: now.toISOString(),
|
|
352
|
+
};
|
|
353
|
+
}
|
|
304
354
|
//# sourceMappingURL=physics.js.map
|