hippo-memory 1.70.0 → 1.72.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 +2 -2
- package/dist/agent-memories/apply.d.ts +0 -11
- package/dist/agent-memories/apply.js +6 -21
- package/dist/agent-memories/claude-code.d.ts +4 -2
- package/dist/agent-memories/claude-code.js +15 -6
- package/dist/agent-memories/codex.js +1 -1
- package/dist/agent-memories/copilot.d.ts +1 -3
- package/dist/agent-memories/copilot.js +1 -17
- package/dist/agent-memories/files.js +23 -12
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/project-folds.d.ts +10 -0
- package/dist/agent-memories/project-folds.js +34 -0
- package/dist/agent-memories/report.js +2 -1
- package/dist/agent-memories/sync.d.ts +4 -2
- package/dist/agent-memories/sync.js +18 -11
- package/dist/api/assemble.d.ts +7 -44
- package/dist/api/assemble.js +3 -23
- package/dist/api/audit.d.ts +33 -1
- package/dist/api/audit.js +48 -1
- package/dist/api/auth.d.ts +20 -26
- package/dist/api/auth.js +43 -29
- package/dist/api/auto-sleep.d.ts +5 -2
- package/dist/api/auto-sleep.js +9 -5
- package/dist/api/availability.d.ts +2 -15
- package/dist/api/availability.js +4 -18
- package/dist/api/cards.d.ts +42 -0
- package/dist/api/cards.js +52 -0
- package/dist/api/conflicts.d.ts +28 -0
- package/dist/api/conflicts.js +61 -0
- package/dist/api/context-render.js +4 -3
- package/dist/api/context-select.js +12 -15
- package/dist/api/context-types.d.ts +10 -35
- package/dist/api/context.d.ts +5 -22
- package/dist/api/context.js +38 -46
- package/dist/api/continuity.d.ts +47 -0
- package/dist/api/continuity.js +66 -0
- package/dist/{cli → api}/correction-latency.d.ts +2 -14
- package/dist/{cli → api}/correction-latency.js +2 -14
- package/dist/api/dormant.d.ts +5 -21
- package/dist/api/dormant.js +11 -28
- package/dist/api/drill-down.d.ts +7 -46
- package/dist/api/drill-down.js +6 -27
- package/dist/api/embeddings.d.ts +17 -0
- package/dist/api/embeddings.js +28 -0
- package/dist/api/error-reply.d.ts +8 -0
- package/dist/api/error-reply.js +21 -0
- package/dist/api/forget.d.ts +11 -26
- package/dist/api/forget.js +23 -35
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +5 -9
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +6 -2
- package/dist/api/index.js +6 -2
- package/dist/api/instruction-detect.js +21 -6
- package/dist/api/learn.d.ts +4 -0
- package/dist/api/learn.js +53 -27
- package/dist/api/ledger-db.d.ts +2 -5
- package/dist/api/ledger-db.js +5 -35
- package/dist/api/memories.d.ts +23 -0
- package/dist/api/memories.js +46 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.js +5 -3
- package/dist/api/outcome.js +1 -1
- package/dist/api/pilot-arm.d.ts +1 -11
- package/dist/api/pilot-arm.js +5 -45
- package/dist/api/predictions.d.ts +11 -0
- package/dist/api/predictions.js +24 -0
- package/dist/api/projects.d.ts +21 -0
- package/dist/api/projects.js +24 -0
- package/dist/api/promote.d.ts +13 -17
- package/dist/api/promote.js +12 -20
- package/dist/api/prompt-hook.d.ts +19 -6
- package/dist/api/prompt-hook.js +54 -13
- package/dist/api/provenance-coverage.d.ts +14 -0
- package/dist/{cli → api}/provenance-coverage.js +2 -6
- package/dist/api/recall-cli.d.ts +58 -0
- package/dist/api/recall-cli.js +103 -0
- package/dist/api/recall-core.js +17 -9
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +17 -84
- package/dist/api/recall-history.js +15 -88
- package/dist/api/recall-pipeline.d.ts +2 -3
- package/dist/api/recall-pipeline.js +21 -15
- package/dist/api/recall-request.js +1 -1
- package/dist/api/recall-types.d.ts +64 -304
- package/dist/api/recall.d.ts +3 -34
- package/dist/api/recall.js +63 -89
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +20 -2
- package/dist/api/remember.js +16 -3
- package/dist/api/session-end.d.ts +22 -0
- package/dist/api/session-end.js +101 -0
- package/dist/api/sleep-run.d.ts +2 -4
- package/dist/api/sleep-run.js +28 -28
- package/dist/api/sleep.d.ts +9 -28
- package/dist/api/status.d.ts +24 -0
- package/dist/api/status.js +40 -0
- package/dist/api/store-init.d.ts +4 -0
- package/dist/api/store-init.js +9 -0
- package/dist/api/tokens.d.ts +3 -10
- package/dist/api/tokens.js +4 -11
- package/dist/api/types.d.ts +8 -29
- package/dist/api/types.js +10 -23
- package/dist/capture/caller-session.d.ts +0 -3
- package/dist/capture/caller-session.js +1 -12
- package/dist/capture/capture-error.d.ts +2 -2
- package/dist/capture/capture-error.js +23 -18
- package/dist/capture/codex-patch.js +3 -1
- package/dist/capture/command.d.ts +4 -12
- package/dist/capture/command.js +39 -114
- package/dist/capture/compact.d.ts +4 -15
- package/dist/capture/compact.js +26 -30
- package/dist/capture/compaction-items-caller.js +11 -20
- package/dist/capture/compaction-record.d.ts +7 -93
- package/dist/capture/compaction-record.js +34 -399
- package/dist/capture/compaction-spool.d.ts +5 -3
- package/dist/capture/compaction-spool.js +21 -7
- package/dist/capture/copilot-transcript.d.ts +2 -1
- package/dist/capture/copilot-transcript.js +2 -1
- package/dist/capture/extract.d.ts +5 -2
- package/dist/capture/extract.js +4 -3
- package/dist/capture/failure-caller.d.ts +1 -1
- package/dist/capture/failure-caller.js +21 -16
- package/dist/capture/failure-reading.d.ts +2 -1
- package/dist/capture/failure-reading.js +7 -9
- package/dist/capture/pre-compact-caller.js +5 -4
- package/dist/capture/session-digest.d.ts +1 -1
- package/dist/capture/session-digest.js +17 -10
- package/dist/capture/session-end-caller.js +2 -1
- package/dist/capture/session-worker.js +3 -4
- package/dist/capture/transcript.d.ts +4 -11
- package/dist/capture/transcript.js +10 -21
- package/dist/capture/working-state.d.ts +4 -2
- package/dist/capture/working-state.js +4 -2
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +1 -59
- package/dist/cli/audit-prune.js +2 -61
- package/dist/cli/audit.d.ts +1 -1
- package/dist/cli/audit.js +42 -43
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +61 -44
- package/dist/cli/briefs.d.ts +1 -4
- package/dist/cli/briefs.js +42 -301
- package/dist/cli/card.d.ts +2 -2
- package/dist/cli/card.js +63 -56
- package/dist/cli/client.d.ts +12 -27
- package/dist/cli/client.js +41 -44
- package/dist/cli/compact-resume-payload.js +4 -3
- package/dist/cli/context.d.ts +2 -3
- package/dist/cli/context.js +22 -18
- package/dist/cli/continuity.d.ts +6 -6
- package/dist/cli/continuity.js +81 -86
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +88 -116
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +55 -34
- package/dist/cli/decisions.d.ts +2 -4
- package/dist/cli/decisions.js +18 -309
- package/dist/cli/eval.d.ts +1 -1
- package/dist/cli/eval.js +27 -26
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +2 -3
- package/dist/cli/explain.js +25 -27
- package/dist/cli/flag-values.d.ts +6 -1
- package/dist/cli/flag-values.js +42 -15
- package/dist/cli/flags.d.ts +0 -288
- package/dist/cli/flags.js +3 -138
- package/dist/cli/github.d.ts +14 -0
- package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
- package/dist/cli/goals.d.ts +2 -2
- package/dist/cli/goals.js +46 -50
- package/dist/cli/graph.d.ts +3 -0
- package/dist/cli/graph.js +83 -0
- package/dist/cli/hook-runtime.d.ts +12 -32
- package/dist/cli/hook-runtime.js +21 -64
- package/dist/cli/incidents.d.ts +3 -0
- package/dist/cli/incidents.js +112 -0
- package/dist/cli/init.d.ts +2 -2
- package/dist/cli/init.js +33 -30
- package/dist/cli/install-steps.d.ts +2 -1
- package/dist/cli/install-steps.js +13 -14
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +4 -1
- package/dist/cli/lenient-id.d.ts +2 -0
- package/dist/cli/lenient-id.js +13 -0
- package/dist/cli/maintenance.d.ts +5 -5
- package/dist/cli/maintenance.js +37 -43
- package/dist/cli/notes.d.ts +2 -0
- package/dist/cli/notes.js +41 -0
- package/dist/cli/object-verbs.js +4 -3
- package/dist/cli/open-browser.d.ts +14 -0
- package/dist/cli/open-browser.js +26 -0
- package/dist/cli/owner-validation.d.ts +5 -28
- package/dist/cli/owner-validation.js +5 -28
- package/dist/cli/playbooks.d.ts +3 -4
- package/dist/cli/playbooks.js +131 -300
- package/dist/cli/predictions.d.ts +3 -0
- package/dist/cli/predictions.js +175 -0
- package/dist/cli/print.d.ts +2 -5
- package/dist/cli/print.js +3 -5
- package/dist/cli/projects.d.ts +2 -2
- package/dist/cli/projects.js +31 -25
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +67 -137
- package/dist/cli/refine-llm.d.ts +5 -31
- package/dist/cli/refine-llm.js +23 -50
- package/dist/cli/remember.d.ts +3 -3
- package/dist/cli/remember.js +134 -192
- package/dist/cli/scheduler.d.ts +2 -17
- package/dist/cli/scheduler.js +14 -19
- package/dist/cli/serve.js +23 -14
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +143 -214
- package/dist/cli/setup.d.ts +4 -4
- package/dist/cli/setup.js +35 -30
- package/dist/cli/shared.d.ts +7 -25
- package/dist/cli/shared.js +17 -60
- package/dist/cli/slack.d.ts +2 -2
- package/dist/cli/slack.js +19 -23
- package/dist/cli/sleep-render.js +6 -3
- package/dist/cli/sleep.d.ts +3 -2
- package/dist/cli/sleep.js +17 -49
- package/dist/cli/status.d.ts +11 -14
- package/dist/cli/status.js +74 -120
- package/dist/cli/stdin.d.ts +4 -6
- package/dist/cli/stdin.js +2 -3
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +87 -108
- package/dist/cli/usage.d.ts +0 -79
- package/dist/cli/usage.js +1 -689
- package/dist/cli/verb-row.d.ts +32 -0
- package/dist/cli/verb-row.js +6 -0
- package/dist/cli/verbs/health.d.ts +27 -0
- package/dist/cli/verbs/health.js +232 -0
- package/dist/cli/verbs/memory.d.ts +16 -0
- package/dist/cli/verbs/memory.js +244 -0
- package/dist/cli/verbs/objects.d.ts +20 -0
- package/dist/cli/verbs/objects.js +254 -0
- package/dist/cli/verbs/sessions.d.ts +31 -0
- package/dist/cli/verbs/sessions.js +312 -0
- package/dist/cli/verbs.d.ts +81 -0
- package/dist/cli/verbs.js +7 -0
- package/dist/cli/versioned-verbs.d.ts +51 -0
- package/dist/cli/versioned-verbs.js +79 -0
- package/dist/cli.d.ts +1 -654
- package/dist/cli.js +44 -510
- package/dist/connectors/dlq.d.ts +39 -3
- package/dist/connectors/dlq.js +37 -3
- package/dist/connectors/github/backfill.d.ts +5 -25
- package/dist/connectors/github/backfill.js +26 -52
- package/dist/connectors/github/deletion.d.ts +4 -18
- package/dist/connectors/github/deletion.js +2 -15
- package/dist/connectors/github/dlq.d.ts +8 -33
- package/dist/connectors/github/dlq.js +34 -93
- package/dist/connectors/github/ingest.d.ts +4 -12
- package/dist/connectors/github/ingest.js +5 -36
- package/dist/connectors/github/octokit-client.d.ts +4 -16
- package/dist/connectors/github/octokit-client.js +27 -24
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +2 -24
- package/dist/connectors/github/tenant-routing.js +4 -26
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +3 -15
- package/dist/connectors/github/types.js +2 -9
- package/dist/connectors/github/webhook.d.ts +3 -16
- package/dist/connectors/github/webhook.js +38 -23
- package/dist/connectors/ingest.d.ts +10 -0
- package/dist/connectors/ingest.js +28 -0
- package/dist/connectors/slack/backfill.d.ts +4 -17
- package/dist/connectors/slack/backfill.js +4 -13
- package/dist/connectors/slack/dlq.d.ts +2 -19
- package/dist/connectors/slack/dlq.js +51 -90
- package/dist/connectors/slack/ingest.d.ts +4 -9
- package/dist/connectors/slack/ingest.js +4 -30
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/tenant-routing.d.ts +2 -19
- package/dist/connectors/slack/tenant-routing.js +2 -21
- package/dist/connectors/slack/transform.d.ts +2 -18
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +3 -9
- package/dist/connectors/slack/types.js +2 -4
- package/dist/connectors/slack/web-client.js +33 -27
- package/dist/connectors/slack/webhook.d.ts +3 -19
- package/dist/connectors/slack/webhook.js +6 -26
- package/dist/connectors/slack/workspaces.d.ts +4 -24
- package/dist/connectors/slack/workspaces.js +4 -24
- package/dist/consolidate/conflicts.js +7 -15
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/consolidate/dag.d.ts +5 -28
- package/dist/consolidate/dag.js +29 -84
- package/dist/consolidate/decay.js +7 -19
- package/dist/consolidate/dedupe.d.ts +13 -52
- package/dist/consolidate/dedupe.js +18 -74
- package/dist/consolidate/flush-units.d.ts +3 -4
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +3 -26
- package/dist/consolidate/half-life-migration.js +11 -28
- package/dist/consolidate/llm-passes.js +49 -40
- package/dist/consolidate/memory-value-weights.d.ts +2 -13
- package/dist/consolidate/memory-value-weights.js +2 -13
- package/dist/consolidate/memory-value.d.ts +11 -84
- package/dist/consolidate/memory-value.js +18 -105
- package/dist/consolidate/merge.js +12 -33
- package/dist/consolidate/physics-pass.d.ts +6 -1
- package/dist/consolidate/physics-pass.js +27 -9
- package/dist/consolidate/replay.d.ts +6 -38
- package/dist/consolidate/replay.js +25 -56
- package/dist/consolidate/run.js +1 -1
- package/dist/consolidate/sleep.d.ts +1 -8
- package/dist/consolidate/sleep.js +13 -22
- package/dist/consolidate/trace.d.ts +3 -18
- package/dist/consolidate/trace.js +3 -18
- package/dist/consolidate/traces.js +9 -25
- package/dist/core/ablation.d.ts +14 -91
- package/dist/core/ablation.js +16 -91
- package/dist/core/active-scope.d.ts +7 -0
- package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
- package/dist/core/ambient.d.ts +5 -8
- package/dist/core/ambient.js +40 -26
- package/dist/core/api-errors.d.ts +16 -0
- package/dist/core/api-errors.js +20 -0
- package/dist/core/capture-contract.d.ts +4 -2
- package/dist/core/capture-contract.js +4 -2
- package/dist/core/card.d.ts +4 -1
- package/dist/core/card.js +11 -1
- package/dist/core/compaction-timing.d.ts +7 -0
- package/dist/core/compaction-timing.js +9 -0
- package/dist/core/compare.d.ts +11 -67
- package/dist/core/compare.js +9 -63
- package/dist/core/config.d.ts +10 -24
- package/dist/core/config.js +20 -16
- package/dist/core/cosine.d.ts +3 -0
- package/dist/core/cosine.js +19 -0
- package/dist/core/handoff.d.ts +1 -7
- package/dist/core/handoff.js +1 -7
- package/dist/core/markdown.d.ts +6 -0
- package/dist/{store → core}/markdown.js +23 -22
- package/dist/core/memory-audit.d.ts +17 -0
- package/dist/core/memory-audit.js +54 -0
- package/dist/core/memory-quality.js +1 -1
- package/dist/core/memory.d.ts +51 -168
- package/dist/core/memory.js +76 -239
- package/dist/{consolidate → core}/merged-row.d.ts +1 -1
- package/dist/{consolidate → core}/merged-row.js +3 -2
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/core/physics-config.d.ts +1 -4
- package/dist/core/physics-config.js +3 -8
- package/dist/core/physics.d.ts +15 -61
- package/dist/core/physics.js +65 -138
- package/dist/core/prediction.d.ts +3 -0
- package/dist/core/prediction.js +6 -0
- package/dist/core/project-identity.d.ts +20 -58
- package/dist/core/project-identity.js +27 -39
- package/dist/core/project-remote.js +13 -2
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/core/recall-scope.d.ts +69 -0
- package/dist/core/recall-scope.js +138 -0
- package/dist/core/salience.d.ts +1 -7
- package/dist/core/salience.js +1 -7
- package/dist/dashboard/dashboard-actions.js +2 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
- package/dist/dashboard/dashboard-snapshot.js +11 -2
- package/dist/dashboard/dashboard-types.d.ts +2 -1
- package/dist/dashboard/dashboard.d.ts +1 -0
- package/dist/dashboard/dashboard.js +50 -4
- package/dist/db/busy.d.ts +3 -8
- package/dist/db/busy.js +37 -33
- package/dist/db/connect.js +7 -8
- package/dist/db/index.d.ts +3 -3
- package/dist/db/index.js +3 -3
- package/dist/db/migrate.js +3 -3
- 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 -5
- package/dist/db/migrations/v14.js +2 -3
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +2 -3
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +2 -7
- package/dist/db/migrations/v22.js +4 -17
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +2 -4
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +4 -18
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +2 -15
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +9 -20
- package/dist/db/migrations/v40.js +2 -9
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +1 -1
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v55.d.ts +3 -0
- package/dist/db/migrations/v55.js +17 -0
- package/dist/db/open.d.ts +2 -2
- package/dist/db/open.js +21 -9
- package/dist/db/physics-state.d.ts +6 -22
- package/dist/db/physics-state.js +28 -39
- package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
- package/dist/db/raw-archive-mirror-cleanup.js +2 -17
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -2
- package/dist/db/vector-store.d.ts +2 -0
- package/dist/db/vector-store.js +25 -5
- package/dist/db/wal-checkpointer.js +2 -1
- package/dist/doctor.js +85 -27
- package/dist/embeddings/local.d.ts +62 -0
- package/dist/embeddings/local.js +146 -0
- package/dist/embeddings/provider.d.ts +43 -0
- package/dist/{store/embeddings → embeddings}/provider.js +58 -83
- package/dist/embeddings/transformers.d.ts +26 -0
- package/dist/embeddings/transformers.js +89 -0
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +3 -2
- package/dist/eval/eval-stats.d.ts +15 -53
- package/dist/eval/eval-stats.js +12 -42
- package/dist/eval/eval-suite.d.ts +2 -13
- package/dist/eval/eval-suite.js +91 -45
- package/dist/eval/eval.d.ts +6 -24
- package/dist/eval/eval.js +8 -35
- package/dist/eval/judgment.d.ts +0 -3
- package/dist/eval/judgment.js +30 -15
- package/dist/extensions/openclaw-plugin/index.js +1 -1
- package/dist/graph/extract.d.ts +5 -27
- package/dist/graph/extract.js +10 -36
- package/dist/graph/recall.d.ts +7 -20
- package/dist/graph/recall.js +15 -77
- package/dist/graph/stream.d.ts +7 -39
- package/dist/graph/stream.js +11 -34
- package/dist/graph/view.d.ts +9 -35
- package/dist/graph/view.js +24 -44
- package/dist/graph/write.d.ts +1 -1
- package/dist/graph/write.js +9 -9
- package/dist/hooks/codex-session.js +3 -2
- package/dist/hooks/codex-wrapper.js +4 -3
- package/dist/hooks/copilot.js +2 -1
- package/dist/hooks/hook-blocks.d.ts +6 -2
- package/dist/hooks/hook-blocks.js +37 -124
- package/dist/hooks/json-hooks.d.ts +4 -36
- package/dist/hooks/json-hooks.js +22 -59
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +17 -81
- package/dist/hooks/shared.d.ts +6 -21
- package/dist/hooks/shared.js +31 -33
- package/dist/importers/core.d.ts +12 -37
- package/dist/importers/core.js +10 -28
- package/dist/importers/markdown-parse.d.ts +8 -22
- package/dist/importers/markdown-parse.js +8 -25
- package/dist/importers/markdown.js +3 -12
- package/dist/importers/sources.js +12 -39
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +31 -85
- package/dist/index.d.ts +8 -3
- package/dist/index.js +8 -3
- package/dist/learn/autolearn.d.ts +23 -42
- package/dist/learn/autolearn.js +45 -52
- package/dist/learn/churn-git.js +13 -4
- package/dist/learn/extract.d.ts +3 -2
- package/dist/learn/extract.js +8 -8
- package/dist/learn/forward-claim-detector.d.ts +6 -30
- package/dist/learn/forward-claim-detector.js +18 -68
- package/dist/learn/invalidation.d.ts +6 -18
- package/dist/learn/invalidation.js +18 -31
- package/dist/mcp/admin-tools.d.ts +2 -2
- package/dist/mcp/admin-tools.js +30 -53
- package/dist/mcp/format.js +3 -2
- package/dist/mcp/framing.d.ts +1 -0
- package/dist/mcp/framing.js +1 -1
- package/dist/mcp/memory-tools.js +7 -10
- package/dist/mcp/protocol.d.ts +15 -29
- package/dist/mcp/protocol.js +26 -16
- package/dist/mcp/recall-tools.js +14 -11
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +12 -27
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +5 -16
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +5 -11
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +68 -16
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +47 -22
- package/dist/objects/customer-notes.d.ts +9 -44
- package/dist/objects/customer-notes.js +7 -48
- package/dist/objects/decisions.d.ts +14 -52
- package/dist/objects/decisions.js +15 -53
- package/dist/objects/descriptor.d.ts +1 -1
- package/dist/objects/incidents.d.ts +9 -40
- package/dist/objects/incidents.js +7 -41
- package/dist/objects/lifecycle.d.ts +1 -1
- package/dist/objects/lifecycle.js +2 -1
- package/dist/objects/policies.d.ts +13 -91
- package/dist/objects/policies.js +13 -99
- package/dist/objects/processes.d.ts +9 -54
- package/dist/objects/processes.js +7 -61
- package/dist/objects/project-briefs.d.ts +13 -57
- package/dist/objects/project-briefs.js +16 -78
- package/dist/objects/skills.d.ts +9 -44
- package/dist/objects/skills.js +8 -54
- package/dist/postinstall.js +7 -20
- package/dist/predictions/planning-fallacy.d.ts +11 -34
- package/dist/rerankers/clef.js +6 -37
- package/dist/rerankers/cross-encoder.d.ts +31 -2
- package/dist/rerankers/cross-encoder.js +65 -101
- package/dist/rerankers/index.js +5 -4
- package/dist/rerankers/jev.js +11 -10
- package/dist/rerankers/llm.d.ts +2 -11
- package/dist/rerankers/llm.js +14 -14
- package/dist/rerankers/outage-warning.d.ts +5 -2
- package/dist/rerankers/outage-warning.js +7 -4
- package/dist/rerankers/remote.d.ts +1 -0
- package/dist/rerankers/remote.js +2 -0
- package/dist/rerankers/types.d.ts +2 -14
- package/dist/search/bm25-search.js +1 -1
- package/dist/search/boosts.d.ts +0 -2
- package/dist/search/boosts.js +3 -3
- package/dist/search/embed-memories.d.ts +9 -0
- package/dist/search/embed-memories.js +377 -0
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +93 -0
- package/dist/search/hybrid.d.ts +11 -2
- package/dist/search/hybrid.js +9 -4
- package/dist/search/multihop.js +2 -3
- package/dist/search/path-context.d.ts +5 -18
- package/dist/search/path-context.js +5 -18
- package/dist/search/physics-search.d.ts +6 -3
- package/dist/search/physics-search.js +29 -19
- package/dist/search/rerank.js +1 -1
- package/dist/search/rrf.d.ts +7 -35
- package/dist/search/rrf.js +5 -30
- package/dist/search/vector.d.ts +13 -4
- package/dist/search/vector.js +40 -13
- package/dist/server/auth.d.ts +11 -28
- package/dist/server/auth.js +49 -32
- package/dist/server/boot.d.ts +2 -21
- package/dist/server/boot.js +69 -161
- package/dist/server/client-ip.d.ts +3 -21
- package/dist/server/client-ip.js +8 -30
- package/dist/server/deadline.d.ts +0 -2
- package/dist/server/deadline.js +1 -7
- package/dist/server/defaults.d.ts +4 -0
- package/dist/server/defaults.js +5 -0
- package/dist/server/key-check-bounds.d.ts +2 -1
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +19 -4
- package/dist/server/mcp-http.js +24 -53
- package/dist/server/rate-limit.d.ts +5 -18
- package/dist/server/rate-limit.js +4 -13
- package/dist/server/request.d.ts +4 -8
- package/dist/server/request.js +16 -19
- package/dist/server/route-checks.d.ts +7 -0
- package/dist/server/route-checks.js +42 -0
- package/dist/server/route-table.d.ts +9 -8
- package/dist/server/route-table.js +127 -139
- package/dist/server/routes/admin.d.ts +8 -8
- package/dist/server/routes/admin.js +35 -49
- package/dist/server/routes/customer-notes.d.ts +6 -6
- package/dist/server/routes/customer-notes.js +8 -14
- package/dist/server/routes/decisions.d.ts +6 -6
- package/dist/server/routes/decisions.js +12 -21
- package/dist/server/routes/incidents.d.ts +6 -6
- package/dist/server/routes/incidents.js +14 -25
- package/dist/server/routes/memories.d.ts +9 -9
- package/dist/server/routes/memories.js +20 -63
- package/dist/server/routes/object-routes.d.ts +6 -11
- package/dist/server/routes/object-routes.js +11 -22
- package/dist/server/routes/policies.d.ts +7 -7
- package/dist/server/routes/policies.js +12 -22
- package/dist/server/routes/predictions.d.ts +6 -6
- package/dist/server/routes/predictions.js +22 -38
- package/dist/server/routes/processes.d.ts +6 -6
- package/dist/server/routes/processes.js +17 -28
- package/dist/server/routes/project-briefs.d.ts +7 -7
- package/dist/server/routes/project-briefs.js +11 -20
- package/dist/server/routes/recall.d.ts +5 -5
- package/dist/server/routes/recall.js +16 -45
- package/dist/server/routes/skills.d.ts +7 -7
- package/dist/server/routes/skills.js +10 -22
- package/dist/server/server-detect.d.ts +15 -53
- package/dist/server/server-detect.js +55 -96
- package/dist/server/sleep-child.js +26 -7
- package/dist/server/sleep-offload.d.ts +11 -5
- package/dist/server/sleep-offload.js +21 -12
- package/dist/server/types.d.ts +32 -18
- package/dist/server/validation.d.ts +3 -2
- package/dist/server/validation.js +15 -33
- package/dist/server.d.ts +7 -6
- package/dist/server.js +8 -6
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +73 -0
- package/dist/sharing/project-merge.d.ts +11 -19
- package/dist/sharing/project-merge.js +63 -125
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +40 -0
- package/dist/sharing/share.js +229 -0
- package/dist/store/ambient.js +9 -15
- package/dist/store/audit-event.d.ts +5 -13
- package/dist/store/audit-event.js +4 -12
- package/dist/store/audit.d.ts +2 -21
- package/dist/store/audit.js +8 -67
- package/dist/store/auth.d.ts +10 -8
- package/dist/store/auth.js +17 -12
- package/dist/store/candidates.d.ts +23 -5
- package/dist/store/candidates.js +119 -71
- package/dist/store/capture-write.d.ts +17 -0
- package/dist/store/capture-write.js +35 -0
- package/dist/store/card-detail.d.ts +2 -1
- package/dist/store/card-detail.js +2 -1
- package/dist/store/cards.d.ts +14 -9
- package/dist/store/cards.js +72 -126
- package/dist/store/compaction-caller.d.ts +18 -0
- package/dist/store/compaction-caller.js +29 -0
- package/dist/store/compactions-record.d.ts +115 -0
- package/dist/store/compactions-record.js +417 -0
- package/dist/store/compactions.js +6 -4
- package/dist/store/conflicts.d.ts +4 -21
- package/dist/store/conflicts.js +76 -152
- package/dist/store/connectors/dlq.d.ts +10 -0
- package/dist/store/connectors/dlq.js +32 -0
- package/dist/store/connectors/github.d.ts +14 -16
- package/dist/store/connectors/github.js +34 -57
- package/dist/store/connectors/slack.d.ts +2 -11
- package/dist/store/connectors/slack.js +18 -47
- package/dist/store/dashboard-reads.js +11 -14
- package/dist/store/delete-and-batch.d.ts +17 -31
- package/dist/store/delete-and-batch.js +84 -67
- package/dist/store/delivery-recorder.d.ts +15 -4
- package/dist/store/delivery-recorder.js +34 -17
- package/dist/store/descendant-page.js +6 -3
- package/dist/store/diagnostics.js +6 -13
- package/dist/store/dormant.d.ts +8 -30
- package/dist/store/dormant.js +18 -57
- package/dist/store/embeddings/index.d.ts +11 -90
- package/dist/store/embeddings/index.js +18 -523
- package/dist/store/entry-reads.d.ts +34 -61
- package/dist/store/entry-reads.js +111 -136
- package/dist/store/entry-row.d.ts +6 -35
- package/dist/store/entry-row.js +9 -37
- package/dist/store/entry-writes.d.ts +12 -18
- package/dist/store/entry-writes.js +46 -44
- package/dist/store/failure-log-at.d.ts +8 -0
- package/dist/store/failure-log-at.js +16 -0
- package/dist/store/failure-log.d.ts +2 -2
- package/dist/store/failure-log.js +5 -3
- package/dist/{trust → store}/gated-write.d.ts +3 -1
- package/dist/{trust → store}/gated-write.js +7 -5
- package/dist/store/goals.d.ts +3 -40
- package/dist/store/goals.js +41 -178
- package/dist/store/graph-queue.d.ts +6 -22
- package/dist/store/graph-queue.js +14 -45
- package/dist/store/graph-reads.d.ts +11 -35
- package/dist/store/graph-reads.js +24 -60
- package/dist/store/graph-rows.d.ts +3 -6
- package/dist/store/graph-rows.js +6 -9
- package/dist/store/graph-view-rows.d.ts +2 -1
- package/dist/store/graph-view-rows.js +2 -1
- package/dist/store/graph-writes.d.ts +10 -35
- package/dist/store/graph-writes.js +59 -106
- package/dist/store/half-life.d.ts +2 -1
- package/dist/store/half-life.js +14 -16
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +22 -40
- package/dist/store/index-and-stats.d.ts +6 -19
- package/dist/store/index-and-stats.js +36 -84
- package/dist/store/key-writes.js +1 -1
- package/dist/store/ledger-turn.d.ts +9 -0
- package/dist/store/ledger-turn.js +38 -0
- package/dist/store/mirrors.d.ts +2 -6
- package/dist/store/mirrors.js +24 -29
- package/dist/store/open.d.ts +0 -4
- package/dist/store/open.js +42 -62
- package/dist/store/pilot-arm.d.ts +12 -0
- package/dist/store/pilot-arm.js +42 -0
- package/dist/store/planning-fallacy-evidence.d.ts +2 -30
- package/dist/store/planning-fallacy-evidence.js +8 -37
- package/dist/store/port.d.ts +91 -82
- package/dist/store/port.js +8 -0
- package/dist/store/predictions.d.ts +12 -53
- package/dist/store/predictions.js +41 -125
- package/dist/store/project-tags.d.ts +62 -0
- package/dist/store/project-tags.js +67 -0
- package/dist/{cli → store}/quality-repair.js +15 -31
- package/dist/store/quarantine.js +2 -1
- package/dist/store/raw-archive.d.ts +4 -16
- package/dist/store/raw-archive.js +14 -29
- package/dist/store/recall-trace.d.ts +12 -77
- package/dist/store/recall-trace.js +37 -97
- package/dist/store/rejected-values.js +9 -20
- package/dist/store/rejection-probe.d.ts +4 -0
- package/dist/store/rejection-probe.js +19 -0
- package/dist/store/rejection.d.ts +10 -73
- package/dist/store/rejection.js +12 -84
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +9 -19
- package/dist/store/rows.js +36 -34
- package/dist/store/rule-sql.d.ts +14 -0
- package/dist/store/rule-sql.js +56 -0
- package/dist/store/search-rows.d.ts +7 -38
- package/dist/store/search-rows.js +23 -54
- package/dist/store/sessions.d.ts +10 -47
- package/dist/store/sessions.js +21 -75
- package/dist/store/set-aside.d.ts +14 -0
- package/dist/store/set-aside.js +23 -0
- package/dist/store/sqlite/busy.d.ts +3 -0
- package/dist/store/sqlite/busy.js +8 -0
- package/dist/store/sqlite/connector-events-group.js +5 -8
- package/dist/store/sqlite/connector-writes-group.js +3 -3
- package/dist/store/sqlite/entry-writes-group.js +4 -4
- package/dist/store/sqlite/error-codec.js +8 -5
- package/dist/store/sqlite/executor.d.ts +2 -1
- package/dist/store/sqlite/executor.js +12 -5
- package/dist/store/sqlite/graph-reads-group.js +1 -1
- package/dist/store/sqlite/held-connection.d.ts +9 -0
- package/dist/store/sqlite/held-connection.js +41 -0
- package/dist/store/sqlite/local.d.ts +3 -3
- package/dist/store/sqlite/local.js +1 -0
- package/dist/store/sqlite/object-rows.d.ts +1 -1
- package/dist/store/sqlite/object-rows.js +6 -3
- package/dist/store/sqlite/objects-group.d.ts +1 -1
- package/dist/store/sqlite/objects-group.js +5 -3
- package/dist/store/sqlite/quarantine-group.js +2 -2
- package/dist/store/sqlite/store.d.ts +1 -4
- package/dist/store/sqlite/store.js +16 -15
- package/dist/store/sqlite/vector-reads-group.js +2 -2
- package/dist/store/sqlite/worker-jobs.js +1 -1
- package/dist/store/sqlite/worker-ops.d.ts +13 -2
- package/dist/store/sqlite/worker-ops.js +13 -2
- package/dist/store/sqlite/worker-store.js +5 -2
- package/dist/store/summaries.d.ts +11 -63
- package/dist/store/summaries.js +37 -148
- package/dist/store/summary-dirty.js +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +2 -16
- package/dist/store/tenant.js +4 -19
- package/dist/store/token-ledger.d.ts +13 -50
- package/dist/store/token-ledger.js +19 -85
- package/dist/store/usage-reports.js +5 -13
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +171 -0
- package/dist/store/working-memory.d.ts +6 -25
- package/dist/store/working-memory.js +18 -52
- package/dist/support-bundle.js +9 -8
- package/dist/trust/reject-flow.js +3 -5
- package/dist/util/agent-homes.d.ts +15 -0
- package/dist/util/agent-homes.js +34 -0
- package/dist/util/anthropic-messages.d.ts +3 -0
- package/dist/util/anthropic-messages.js +35 -6
- package/dist/util/atomic-write.d.ts +2 -1
- package/dist/util/atomic-write.js +35 -4
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/chunked.d.ts +3 -0
- package/dist/util/chunked.js +10 -0
- package/dist/util/crash-handlers.d.ts +8 -1
- package/dist/util/crash-handlers.js +52 -10
- package/dist/util/ellipsize.d.ts +3 -0
- package/dist/util/ellipsize.js +5 -0
- package/dist/util/env.d.ts +14 -6
- package/dist/util/env.js +15 -7
- package/dist/util/format.d.ts +3 -0
- package/dist/util/format.js +6 -0
- package/dist/util/home-path.d.ts +2 -1
- package/dist/util/home-path.js +4 -2
- package/dist/util/hook-payload.d.ts +8 -0
- package/dist/util/hook-payload.js +37 -0
- package/dist/util/http-retry.d.ts +9 -1
- package/dist/util/http-retry.js +67 -8
- package/dist/util/http-util.d.ts +0 -8
- package/dist/util/http-util.js +10 -21
- package/dist/util/limits.d.ts +7 -0
- package/dist/util/limits.js +14 -0
- package/dist/util/log.d.ts +7 -2
- package/dist/util/log.js +34 -9
- package/dist/util/request-scope.d.ts +5 -2
- package/dist/util/request-scope.js +13 -7
- package/dist/util/secret-detect.d.ts +5 -30
- package/dist/util/secret-detect.js +19 -40
- package/dist/util/sqlite-blocked.d.ts +2 -0
- package/dist/util/sqlite-blocked.js +5 -0
- package/dist/util/stored-json.d.ts +1 -1
- package/dist/util/stored-json.js +1 -1
- package/dist/util/stream-tee.d.ts +3 -0
- package/dist/util/stream-tee.js +35 -0
- package/dist/util/time.d.ts +4 -0
- package/dist/util/time.js +4 -0
- package/dist/util/token-text.d.ts +1 -4
- package/dist/util/token-text.js +1 -4
- package/dist/util/transcript-tail.d.ts +2 -0
- package/dist/util/transcript-tail.js +24 -23
- package/dist/util/version.d.ts +5 -20
- package/dist/util/version.js +5 -20
- package/dist/{store → util}/yaml.d.ts +1 -5
- package/dist/{store → util}/yaml.js +2 -6
- package/extensions/openclaw-plugin/index.ts +1 -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 -2
- package/dist/cli/provenance-coverage.d.ts +0 -18
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/sharing/scope.d.ts +0 -14
- package/dist/sharing/shared.d.ts +0 -187
- package/dist/sharing/shared.js +0 -563
- package/dist/store/embeddings/local.d.ts +0 -15
- package/dist/store/embeddings/local.js +0 -192
- package/dist/store/embeddings/provider.d.ts +0 -77
- package/dist/store/markdown.d.ts +0 -10
- package/dist/store/recall-scope.d.ts +0 -138
- package/dist/store/recall-scope.js +0 -216
- package/dist/store/vector-writes.d.ts +0 -13
- package/dist/store/vector-writes.js +0 -89
- /package/dist/{store → core}/object-types.d.ts +0 -0
- /package/dist/{store → core}/object-types.js +0 -0
- /package/dist/{cli → store}/quality-repair.d.ts +0 -0
- /package/dist/{capture → util}/compaction-items.d.ts +0 -0
- /package/dist/{capture → util}/compaction-items.js +0 -0
package/dist/core/physics.d.ts
CHANGED
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Pure math module: forces, Velocity Verlet integration, physics-based scoring,
|
|
5
|
-
* and cluster amplification. No I/O — all state is passed in and returned.
|
|
6
|
-
*
|
|
7
|
-
* Memories are particles on the unit hypersphere in embedding space (384-dim).
|
|
8
|
-
* Forces act on them: query gravity (retrieval), inter-memory attraction,
|
|
9
|
-
* conflict repulsion, and drag (consolidation). Nearby high-scoring memories
|
|
10
|
-
* amplify each other via constructive interference.
|
|
11
|
-
*/
|
|
1
|
+
/** Memory-as-Physics engine: pure math (forces, Velocity Verlet integration, physics-based scoring, cluster amplification), no I/O.
|
|
2
|
+
* Memories are particles on the unit hypersphere in embedding space (384-dim); query gravity, attraction, conflict repulsion and drag act on them,
|
|
3
|
+
* and nearby high-scoring memories amplify each other. */
|
|
12
4
|
import { type EmotionalValence } from './memory.js';
|
|
13
5
|
import type { PhysicsConfig } from './physics-config.js';
|
|
14
6
|
export interface PhysicsParticle {
|
|
@@ -51,42 +43,16 @@ export declare function vecClampMagnitude(v: number[], maxMag: number): number[]
|
|
|
51
43
|
export declare function computeMass(strength: number, retrievalCount: number): number;
|
|
52
44
|
export declare function computeCharge(valence: EmotionalValence): number;
|
|
53
45
|
export declare function computeTemperature(ageDays: number, temperatureDecay: number): number;
|
|
54
|
-
/**
|
|
55
|
-
* Query gravity (retrieval-time, virtual — does not update position).
|
|
56
|
-
* Returns scalar force magnitude for ranking.
|
|
57
|
-
*
|
|
58
|
-
* F_query(i) = G_Q * mass(i) * max(0, cosine(pos_i, query))^2
|
|
59
|
-
*/
|
|
46
|
+
/** Query gravity (retrieval-time, virtual: does not move the particle): scalar ranking magnitude F = G_Q * mass * max(0, cosine(pos, query))^2. */
|
|
60
47
|
export declare function queryGravityMagnitude(particle: PhysicsParticle, queryEmbedding: number[], G_query: number): number;
|
|
61
|
-
/**
|
|
62
|
-
* Momentum bonus: how aligned is the particle's velocity with the query direction?
|
|
63
|
-
* Returns a value in [0, 1].
|
|
64
|
-
*/
|
|
48
|
+
/** Momentum bonus in [0, 1]: how aligned the particle's velocity is with the query direction. */
|
|
65
49
|
export declare function velocityAlignmentBonus(particle: PhysicsParticle, queryEmbedding: number[]): number;
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
68
|
-
|
|
69
|
-
*
|
|
70
|
-
* F_attract(i,j) = G_M * m_i * m_j * max(0, cosine(i,j))^3 * direction(j→i in embedding space)
|
|
71
|
-
*
|
|
72
|
-
* Direction is computed as the component of (pos_j - pos_i) that lies tangent to the
|
|
73
|
-
* unit sphere at pos_i (since we normalize positions back to the sphere after integration).
|
|
74
|
-
*/
|
|
75
|
-
export declare function attractionForce(pi: PhysicsParticle, pj: PhysicsParticle, G_memory: number): number[];
|
|
76
|
-
/**
|
|
77
|
-
* Conflict repulsion force vector (consolidation-time).
|
|
78
|
-
* Repulsive force pushing i away from j.
|
|
79
|
-
*
|
|
80
|
-
* F_repel(i,j) = K_R * m_i * m_j / max(0.01, cosine_distance(i,j))^2
|
|
81
|
-
* where cosine_distance = 1 - cosine_similarity
|
|
82
|
-
*/
|
|
50
|
+
/** Attraction force on particle i from j (consolidation-time): G_M m_i m_j max(0, cosine)^3, directed along (pos_j - pos_i) projected tangent to the unit
|
|
51
|
+
* sphere at pos_i (positions are re-normalized to the sphere after integration). Adds into `out` (a fresh zero vector by default) using `diff` as scratch. */
|
|
52
|
+
export declare function attractionForce(pi: PhysicsParticle, pj: PhysicsParticle, G_memory: number, out?: number[], diff?: number[]): number[];
|
|
53
|
+
/** Conflict repulsion on i away from j (consolidation-time): K_R * m_i * m_j / max(0.01, cosine_distance)^2, where cosine_distance = 1 - cosine_similarity. */
|
|
83
54
|
export declare function repulsionForce(pi: PhysicsParticle, pj: PhysicsParticle, K_repulsion: number): number[];
|
|
84
|
-
/**
|
|
85
|
-
* Drag force vector (consolidation-time).
|
|
86
|
-
* F_drag(i) = -drag * velocity(i) / max(1, effective_half_life(i))
|
|
87
|
-
*
|
|
88
|
-
* effectiveHalfLife should be passed in from the memory's current half_life_days.
|
|
89
|
-
*/
|
|
55
|
+
/** Drag force (consolidation-time): -drag * velocity / max(1, effectiveHalfLife), with effectiveHalfLife from the memory's current half_life_days. */
|
|
90
56
|
export declare function dragForce(particle: PhysicsParticle, drag: number, effectiveHalfLife: number): number[];
|
|
91
57
|
export interface ForceContext {
|
|
92
58
|
/** Map of memory ID -> list of conflicting memory IDs */
|
|
@@ -95,26 +61,14 @@ export interface ForceContext {
|
|
|
95
61
|
halfLives: Map<string, number>;
|
|
96
62
|
config: PhysicsConfig;
|
|
97
63
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Run the full physics simulation for one sleep cycle.
|
|
100
|
-
* Mutates particles in place. Returns simulation statistics.
|
|
101
|
-
*/
|
|
64
|
+
/** Full physics simulation for one sleep cycle; mutates particles in place and returns simulation statistics. */
|
|
102
65
|
export declare function simulate(particles: PhysicsParticle[], ctx: ForceContext): SimulationStats;
|
|
103
66
|
export declare function computeSystemEnergy(particles: PhysicsParticle[], G_memory: number): SystemEnergy;
|
|
104
|
-
/**
|
|
105
|
-
* Score all particles against a query embedding using physics-based ranking.
|
|
106
|
-
* Does NOT modify particle positions (virtual force computation).
|
|
107
|
-
*/
|
|
67
|
+
/** Scores all particles against a query embedding; virtual force computation, so it does NOT modify particle positions. */
|
|
108
68
|
export declare function physicsScore(particles: PhysicsParticle[], queryEmbedding: number[], config: PhysicsConfig,
|
|
109
|
-
/** Cross-ingest-stable tie key per memoryId (typically the memory
|
|
110
|
-
*
|
|
111
|
-
* it ties fall to memoryId -- per-instance only, which lets the
|
|
112
|
-
* cluster_top_k amplification set vary across fresh ingests. */
|
|
69
|
+
/** Cross-ingest-stable tie key per memoryId (typically the memory content, from a caller with entries in scope); without it ties fall to memoryId,
|
|
70
|
+
* which is per-instance only and lets the cluster_top_k amplification set vary across fresh ingests. */
|
|
113
71
|
tieKeyOf?: (memoryId: string) => string): ScoredPhysicsResult[];
|
|
114
|
-
/**
|
|
115
|
-
* Nudge a particle's position toward (good outcome) or away from (bad outcome)
|
|
116
|
-
* the query embedding. Respects temperature: new memories respond more.
|
|
117
|
-
* Mutates particle in place.
|
|
118
|
-
*/
|
|
72
|
+
/** Nudges a particle toward (good outcome) or away from (bad outcome) the query embedding; new memories respond more (temperature). Mutates in place. */
|
|
119
73
|
export declare function applyOutcomeFeedback(particle: PhysicsParticle, queryEmbedding: number[], good: boolean, feedbackAlpha: number): void;
|
|
120
74
|
//# sourceMappingURL=physics.d.ts.map
|
package/dist/core/physics.js
CHANGED
|
@@ -1,20 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
* and cluster amplification. No I/O — all state is passed in and returned.
|
|
6
|
-
*
|
|
7
|
-
* Memories are particles on the unit hypersphere in embedding space (384-dim).
|
|
8
|
-
* Forces act on them: query gravity (retrieval), inter-memory attraction,
|
|
9
|
-
* conflict repulsion, and drag (consolidation). Nearby high-scoring memories
|
|
10
|
-
* amplify each other via constructive interference.
|
|
11
|
-
*/
|
|
1
|
+
/** Memory-as-Physics engine: pure math (forces, Velocity Verlet integration, physics-based scoring, cluster amplification), no I/O.
|
|
2
|
+
* Memories are particles on the unit hypersphere in embedding space (384-dim); query gravity, attraction, conflict repulsion and drag act on them,
|
|
3
|
+
* and nearby high-scoring memories amplify each other. */
|
|
4
|
+
import { cosineOf } from './cosine.js';
|
|
12
5
|
import { isRecallBoostAblated } from './ablation.js';
|
|
13
6
|
import { FALLBACK_HALF_LIFE_DAYS } from './memory.js';
|
|
14
7
|
import { comparePhysicsResultsBy } from './compare.js';
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
// Vector math (hot path — kept inline for performance)
|
|
17
|
-
// ---------------------------------------------------------------------------
|
|
18
8
|
export function vecDot(a, b) {
|
|
19
9
|
let sum = 0;
|
|
20
10
|
for (let i = 0; i < a.length; i++)
|
|
@@ -25,25 +15,25 @@ export function vecNorm(v) {
|
|
|
25
15
|
return Math.sqrt(vecDot(v, v));
|
|
26
16
|
}
|
|
27
17
|
export function vecScale(v, s) {
|
|
28
|
-
const out =
|
|
18
|
+
const out = v.slice();
|
|
29
19
|
for (let i = 0; i < v.length; i++)
|
|
30
20
|
out[i] = v[i] * s;
|
|
31
21
|
return out;
|
|
32
22
|
}
|
|
33
23
|
export function vecAdd(a, b) {
|
|
34
|
-
const out =
|
|
24
|
+
const out = a.slice();
|
|
35
25
|
for (let i = 0; i < a.length; i++)
|
|
36
26
|
out[i] = a[i] + b[i];
|
|
37
27
|
return out;
|
|
38
28
|
}
|
|
39
29
|
export function vecSub(a, b) {
|
|
40
|
-
const out =
|
|
30
|
+
const out = a.slice();
|
|
41
31
|
for (let i = 0; i < a.length; i++)
|
|
42
32
|
out[i] = a[i] - b[i];
|
|
43
33
|
return out;
|
|
44
34
|
}
|
|
45
35
|
export function vecZero(dim) {
|
|
46
|
-
return
|
|
36
|
+
return Array(dim).fill(0);
|
|
47
37
|
}
|
|
48
38
|
/** Normalize to unit length. Returns zero vector if magnitude < epsilon. */
|
|
49
39
|
export function vecNormalize(v) {
|
|
@@ -59,20 +49,6 @@ export function vecClampMagnitude(v, maxMag) {
|
|
|
59
49
|
return v;
|
|
60
50
|
return vecScale(v, maxMag / mag);
|
|
61
51
|
}
|
|
62
|
-
/** Cosine similarity between two vectors. */
|
|
63
|
-
function cosine(a, b) {
|
|
64
|
-
if (a.length === 0 || b.length === 0 || a.length !== b.length)
|
|
65
|
-
return 0;
|
|
66
|
-
const dot = vecDot(a, b);
|
|
67
|
-
const na = vecNorm(a);
|
|
68
|
-
const nb = vecNorm(b);
|
|
69
|
-
if (na < 1e-10 || nb < 1e-10)
|
|
70
|
-
return 0;
|
|
71
|
-
return Math.min(1, Math.max(-1, dot / (na * nb)));
|
|
72
|
-
}
|
|
73
|
-
// ---------------------------------------------------------------------------
|
|
74
|
-
// Property derivation from memory attributes
|
|
75
|
-
// ---------------------------------------------------------------------------
|
|
76
52
|
const CHARGE_MAP = {
|
|
77
53
|
neutral: 0,
|
|
78
54
|
positive: 0.3,
|
|
@@ -80,9 +56,8 @@ const CHARGE_MAP = {
|
|
|
80
56
|
critical: -1.0,
|
|
81
57
|
};
|
|
82
58
|
export function computeMass(strength, retrievalCount) {
|
|
83
|
-
// EVAL-ONLY ablation (
|
|
84
|
-
// query gravity ranks by mass
|
|
85
|
-
// physics-pool rankings. Covers both the init and refresh callers in physics-state.ts.
|
|
59
|
+
// EVAL-ONLY ablation (ablation.ts): under the recall-boost flag mass ignores retrieval history, which would otherwise leak strengthening into the ablated
|
|
60
|
+
// arm's physics-pool rankings (query gravity ranks by mass). Covers both init and refresh callers in physics-state.ts.
|
|
86
61
|
const effectiveCount = isRecallBoostAblated() ? 0 : retrievalCount;
|
|
87
62
|
return Math.max(0.01, strength * (1 + 0.1 * Math.log2(effectiveCount + 1)));
|
|
88
63
|
}
|
|
@@ -92,23 +67,12 @@ export function computeCharge(valence) {
|
|
|
92
67
|
export function computeTemperature(ageDays, temperatureDecay) {
|
|
93
68
|
return 1 / (ageDays * temperatureDecay + 1);
|
|
94
69
|
}
|
|
95
|
-
|
|
96
|
-
// Force computations
|
|
97
|
-
// ---------------------------------------------------------------------------
|
|
98
|
-
/**
|
|
99
|
-
* Query gravity (retrieval-time, virtual — does not update position).
|
|
100
|
-
* Returns scalar force magnitude for ranking.
|
|
101
|
-
*
|
|
102
|
-
* F_query(i) = G_Q * mass(i) * max(0, cosine(pos_i, query))^2
|
|
103
|
-
*/
|
|
70
|
+
/** Query gravity (retrieval-time, virtual: does not move the particle): scalar ranking magnitude F = G_Q * mass * max(0, cosine(pos, query))^2. */
|
|
104
71
|
export function queryGravityMagnitude(particle, queryEmbedding, G_query) {
|
|
105
|
-
const cos =
|
|
72
|
+
const cos = cosineOf(particle.position, queryEmbedding);
|
|
106
73
|
return G_query * particle.mass * Math.pow(Math.max(0, cos), 2);
|
|
107
74
|
}
|
|
108
|
-
/**
|
|
109
|
-
* Momentum bonus: how aligned is the particle's velocity with the query direction?
|
|
110
|
-
* Returns a value in [0, 1].
|
|
111
|
-
*/
|
|
75
|
+
/** Momentum bonus in [0, 1]: how aligned the particle's velocity is with the query direction. */
|
|
112
76
|
export function velocityAlignmentBonus(particle, queryEmbedding) {
|
|
113
77
|
if (particle.velocity.length === 0 || particle.velocity.length !== queryEmbedding.length)
|
|
114
78
|
return 0;
|
|
@@ -119,79 +83,71 @@ export function velocityAlignmentBonus(particle, queryEmbedding) {
|
|
|
119
83
|
const alignment = vecDot(particle.velocity, queryEmbedding) / (velMag * qNorm);
|
|
120
84
|
return Math.max(0, alignment);
|
|
121
85
|
}
|
|
122
|
-
/**
|
|
123
|
-
*
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
* F_attract(i,j) = G_M * m_i * m_j * max(0, cosine(i,j))^3 * direction(j→i in embedding space)
|
|
127
|
-
*
|
|
128
|
-
* Direction is computed as the component of (pos_j - pos_i) that lies tangent to the
|
|
129
|
-
* unit sphere at pos_i (since we normalize positions back to the sphere after integration).
|
|
130
|
-
*/
|
|
131
|
-
export function attractionForce(pi, pj, G_memory) {
|
|
132
|
-
const cos = cosine(pi.position, pj.position);
|
|
86
|
+
/** Attraction force on particle i from j (consolidation-time): G_M m_i m_j max(0, cosine)^3, directed along (pos_j - pos_i) projected tangent to the unit
|
|
87
|
+
* sphere at pos_i (positions are re-normalized to the sphere after integration). Adds into `out` (a fresh zero vector by default) using `diff` as scratch. */
|
|
88
|
+
export function attractionForce(pi, pj, G_memory, out = vecZero(pi.position.length), diff = vecZero(pi.position.length)) {
|
|
89
|
+
const cos = cosineOf(pi.position, pj.position);
|
|
133
90
|
if (cos <= 0)
|
|
134
|
-
return
|
|
91
|
+
return out;
|
|
135
92
|
const magnitude = G_memory * pi.mass * pj.mass * Math.pow(cos, 3);
|
|
136
93
|
// Direction: from i toward j (tangent projection handled by normalization after integration)
|
|
137
|
-
|
|
138
|
-
|
|
94
|
+
for (let k = 0; k < out.length; k++)
|
|
95
|
+
diff[k] = pj.position[k] - pi.position[k];
|
|
96
|
+
const norm = vecNorm(diff);
|
|
97
|
+
if (norm < 1e-10)
|
|
98
|
+
return out;
|
|
99
|
+
const inv = 1 / norm;
|
|
100
|
+
for (let k = 0; k < out.length; k++)
|
|
101
|
+
out[k] += diff[k] * inv * magnitude;
|
|
102
|
+
return out;
|
|
139
103
|
}
|
|
140
|
-
/**
|
|
141
|
-
* Conflict repulsion force vector (consolidation-time).
|
|
142
|
-
* Repulsive force pushing i away from j.
|
|
143
|
-
*
|
|
144
|
-
* F_repel(i,j) = K_R * m_i * m_j / max(0.01, cosine_distance(i,j))^2
|
|
145
|
-
* where cosine_distance = 1 - cosine_similarity
|
|
146
|
-
*/
|
|
104
|
+
/** Conflict repulsion on i away from j (consolidation-time): K_R * m_i * m_j / max(0.01, cosine_distance)^2, where cosine_distance = 1 - cosine_similarity. */
|
|
147
105
|
export function repulsionForce(pi, pj, K_repulsion) {
|
|
148
|
-
const cos =
|
|
106
|
+
const cos = cosineOf(pi.position, pj.position);
|
|
149
107
|
const dist = Math.max(0.01, 1 - cos);
|
|
150
108
|
const magnitude = K_repulsion * pi.mass * pj.mass / (dist * dist);
|
|
151
109
|
// Direction: away from j
|
|
152
110
|
const direction = vecNormalize(vecSub(pi.position, pj.position));
|
|
153
111
|
return vecScale(direction, magnitude);
|
|
154
112
|
}
|
|
155
|
-
/**
|
|
156
|
-
* Drag force vector (consolidation-time).
|
|
157
|
-
* F_drag(i) = -drag * velocity(i) / max(1, effective_half_life(i))
|
|
158
|
-
*
|
|
159
|
-
* effectiveHalfLife should be passed in from the memory's current half_life_days.
|
|
160
|
-
*/
|
|
113
|
+
/** Drag force (consolidation-time): -drag * velocity / max(1, effectiveHalfLife), with effectiveHalfLife from the memory's current half_life_days. */
|
|
161
114
|
export function dragForce(particle, drag, effectiveHalfLife) {
|
|
162
115
|
const damping = drag / Math.max(1, effectiveHalfLife);
|
|
163
116
|
return vecScale(particle.velocity, -damping);
|
|
164
117
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
118
|
+
function addInto(net, force) {
|
|
119
|
+
for (let k = 0; k < net.length; k++)
|
|
120
|
+
net[k] += force[k];
|
|
121
|
+
}
|
|
122
|
+
/** The net force on particle i, accumulated into one new array; `diff` is the caller's scratch for pair directions. */
|
|
123
|
+
function computeNetForce(i, particles, ctx, diff) {
|
|
169
124
|
const pi = particles[i];
|
|
170
125
|
const dim = pi.position.length;
|
|
171
|
-
|
|
126
|
+
const net = vecZero(dim);
|
|
172
127
|
const conflicts = ctx.conflictPairs.get(pi.memoryId);
|
|
173
128
|
for (let j = 0; j < particles.length; j++) {
|
|
174
129
|
if (i === j)
|
|
175
130
|
continue;
|
|
176
131
|
const pj = particles[j];
|
|
177
132
|
// Attraction (all pairs)
|
|
178
|
-
|
|
179
|
-
net = vecAdd(net, fa);
|
|
133
|
+
attractionForce(pi, pj, ctx.config.G_memory, net, diff);
|
|
180
134
|
// Repulsion (conflict pairs only)
|
|
181
|
-
if (conflicts?.has(pj.memoryId))
|
|
182
|
-
|
|
183
|
-
net = vecAdd(net, fr);
|
|
184
|
-
}
|
|
135
|
+
if (conflicts?.has(pj.memoryId))
|
|
136
|
+
addInto(net, repulsionForce(pi, pj, ctx.config.K_repulsion));
|
|
185
137
|
}
|
|
186
138
|
// Drag
|
|
187
|
-
|
|
188
|
-
net = vecAdd(net, fd);
|
|
139
|
+
addInto(net, dragForce(pi, ctx.config.drag, ctx.halfLives.get(pi.memoryId) ?? FALLBACK_HALF_LIFE_DAYS));
|
|
189
140
|
return net;
|
|
190
141
|
}
|
|
191
|
-
/**
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
142
|
+
/** Acceleration of particle i: its net force divided by mass, scaled in place. */
|
|
143
|
+
function computeAcceleration(i, particles, ctx, diff) {
|
|
144
|
+
const accel = computeNetForce(i, particles, ctx, diff);
|
|
145
|
+
const inv = 1 / Math.max(0.01, particles[i].mass);
|
|
146
|
+
for (let k = 0; k < accel.length; k++)
|
|
147
|
+
accel[k] *= inv;
|
|
148
|
+
return accel;
|
|
149
|
+
}
|
|
150
|
+
/** One Velocity Verlet step for all particles; mutates in place for performance. */
|
|
195
151
|
function verletStep(particles, accelerations, ctx) {
|
|
196
152
|
const dt = ctx.config.dt;
|
|
197
153
|
const maxVel = ctx.config.max_velocity;
|
|
@@ -203,11 +159,10 @@ function verletStep(particles, accelerations, ctx) {
|
|
|
203
159
|
p.position = vecAdd(vecAdd(p.position, velDt), accelDt2);
|
|
204
160
|
}
|
|
205
161
|
// Compute new accelerations
|
|
162
|
+
const diff = vecZero(particles[0].position.length);
|
|
206
163
|
const newAccelerations = [];
|
|
207
|
-
for (let i = 0; i < particles.length; i++)
|
|
208
|
-
|
|
209
|
-
newAccelerations.push(vecScale(force, 1 / Math.max(0.01, particles[i].mass)));
|
|
210
|
-
}
|
|
164
|
+
for (let i = 0; i < particles.length; i++)
|
|
165
|
+
newAccelerations.push(computeAcceleration(i, particles, ctx, diff));
|
|
211
166
|
// Velocity update: vel += 0.5*(accel_old + accel_new)*dt
|
|
212
167
|
for (let i = 0; i < particles.length; i++) {
|
|
213
168
|
const p = particles[i];
|
|
@@ -222,10 +177,7 @@ function verletStep(particles, accelerations, ctx) {
|
|
|
222
177
|
accelerations[i] = newAccelerations[i];
|
|
223
178
|
}
|
|
224
179
|
}
|
|
225
|
-
/**
|
|
226
|
-
* Run the full physics simulation for one sleep cycle.
|
|
227
|
-
* Mutates particles in place. Returns simulation statistics.
|
|
228
|
-
*/
|
|
180
|
+
/** Full physics simulation for one sleep cycle; mutates particles in place and returns simulation statistics. */
|
|
229
181
|
export function simulate(particles, ctx) {
|
|
230
182
|
if (particles.length === 0) {
|
|
231
183
|
return {
|
|
@@ -237,10 +189,8 @@ export function simulate(particles, ctx) {
|
|
|
237
189
|
};
|
|
238
190
|
}
|
|
239
191
|
// Initial accelerations
|
|
240
|
-
const
|
|
241
|
-
|
|
242
|
-
return vecScale(force, 1 / Math.max(0.01, particles[i].mass));
|
|
243
|
-
});
|
|
192
|
+
const diff = vecZero(particles[0].position.length);
|
|
193
|
+
const accelerations = particles.map((_, i) => computeAcceleration(i, particles, ctx, diff));
|
|
244
194
|
// Run substeps
|
|
245
195
|
for (let step = 0; step < ctx.config.substeps; step++) {
|
|
246
196
|
verletStep(particles, accelerations, ctx);
|
|
@@ -268,9 +218,6 @@ export function simulate(particles, ctx) {
|
|
|
268
218
|
substepsRun: ctx.config.substeps,
|
|
269
219
|
};
|
|
270
220
|
}
|
|
271
|
-
// ---------------------------------------------------------------------------
|
|
272
|
-
// System energy (health monitoring)
|
|
273
|
-
// ---------------------------------------------------------------------------
|
|
274
221
|
export function computeSystemEnergy(particles, G_memory) {
|
|
275
222
|
let kinetic = 0;
|
|
276
223
|
let potential = 0;
|
|
@@ -280,24 +227,16 @@ export function computeSystemEnergy(particles, G_memory) {
|
|
|
280
227
|
}
|
|
281
228
|
for (let i = 0; i < particles.length; i++) {
|
|
282
229
|
for (let j = i + 1; j < particles.length; j++) {
|
|
283
|
-
const cos =
|
|
230
|
+
const cos = cosineOf(particles[i].position, particles[j].position);
|
|
284
231
|
potential -= G_memory * particles[i].mass * particles[j].mass * Math.max(0, cos);
|
|
285
232
|
}
|
|
286
233
|
}
|
|
287
234
|
return { kinetic, potential, total: kinetic + potential };
|
|
288
235
|
}
|
|
289
|
-
|
|
290
|
-
// Physics-based scoring (retrieval-time)
|
|
291
|
-
// ---------------------------------------------------------------------------
|
|
292
|
-
/**
|
|
293
|
-
* Score all particles against a query embedding using physics-based ranking.
|
|
294
|
-
* Does NOT modify particle positions (virtual force computation).
|
|
295
|
-
*/
|
|
236
|
+
/** Scores all particles against a query embedding; virtual force computation, so it does NOT modify particle positions. */
|
|
296
237
|
export function physicsScore(particles, queryEmbedding, config,
|
|
297
|
-
/** Cross-ingest-stable tie key per memoryId (typically the memory
|
|
298
|
-
*
|
|
299
|
-
* it ties fall to memoryId -- per-instance only, which lets the
|
|
300
|
-
* cluster_top_k amplification set vary across fresh ingests. */
|
|
238
|
+
/** Cross-ingest-stable tie key per memoryId (typically the memory content, from a caller with entries in scope); without it ties fall to memoryId,
|
|
239
|
+
* which is per-instance only and lets the cluster_top_k amplification set vary across fresh ingests. */
|
|
301
240
|
tieKeyOf) {
|
|
302
241
|
if (particles.length === 0 || queryEmbedding.length === 0)
|
|
303
242
|
return [];
|
|
@@ -312,10 +251,8 @@ tieKeyOf) {
|
|
|
312
251
|
finalScore: gravity + momentum,
|
|
313
252
|
};
|
|
314
253
|
});
|
|
315
|
-
//
|
|
316
|
-
//
|
|
317
|
-
// mutates scores), so it must be cross-ingest-stable when the caller
|
|
318
|
-
// supplies a content tie key. See compare.ts comparePhysicsResultsBy.
|
|
254
|
+
// Base-score order picks the cluster_top_k amplification SET (which mutates scores), so ties must be cross-ingest-stable
|
|
255
|
+
// when the caller supplies a content tie key (see comparePhysicsResultsBy in compare.ts).
|
|
319
256
|
const tie = tieKeyOf ? (r) => tieKeyOf(r.memoryId) : undefined;
|
|
320
257
|
results.sort(comparePhysicsResultsBy((r) => r.baseScore, tie));
|
|
321
258
|
// Pass 2: cluster amplification on top K
|
|
@@ -324,10 +261,7 @@ tieKeyOf) {
|
|
|
324
261
|
results.sort(comparePhysicsResultsBy((r) => r.finalScore, tie));
|
|
325
262
|
return results;
|
|
326
263
|
}
|
|
327
|
-
/**
|
|
328
|
-
* Cluster amplification: nearby high-scoring memories reinforce each other.
|
|
329
|
-
* Mutates results in place.
|
|
330
|
-
*/
|
|
264
|
+
/** Cluster amplification: nearby high-scoring memories reinforce each other; mutates results in place. */
|
|
331
265
|
function applyClusterAmplification(results, particles, config) {
|
|
332
266
|
const topK = Math.min(config.cluster_top_k, results.length);
|
|
333
267
|
if (topK < 2)
|
|
@@ -348,7 +282,7 @@ function applyClusterAmplification(results, particles, config) {
|
|
|
348
282
|
const pj = particleMap.get(top[j].memoryId);
|
|
349
283
|
if (!pj)
|
|
350
284
|
continue;
|
|
351
|
-
const proximity =
|
|
285
|
+
const proximity = cosineOf(pi.position, pj.position);
|
|
352
286
|
if (proximity > config.cluster_threshold) {
|
|
353
287
|
clusterSignal += top[j].baseScore * proximity;
|
|
354
288
|
}
|
|
@@ -358,14 +292,7 @@ function applyClusterAmplification(results, particles, config) {
|
|
|
358
292
|
top[i].finalScore = top[i].baseScore * amplification;
|
|
359
293
|
}
|
|
360
294
|
}
|
|
361
|
-
|
|
362
|
-
// Outcome feedback (micro-nudge)
|
|
363
|
-
// ---------------------------------------------------------------------------
|
|
364
|
-
/**
|
|
365
|
-
* Nudge a particle's position toward (good outcome) or away from (bad outcome)
|
|
366
|
-
* the query embedding. Respects temperature: new memories respond more.
|
|
367
|
-
* Mutates particle in place.
|
|
368
|
-
*/
|
|
295
|
+
/** Nudges a particle toward (good outcome) or away from (bad outcome) the query embedding; new memories respond more (temperature). Mutates in place. */
|
|
369
296
|
export function applyOutcomeFeedback(particle, queryEmbedding, good, feedbackAlpha) {
|
|
370
297
|
if (particle.position.length === 0 || particle.position.length !== queryEmbedding.length)
|
|
371
298
|
return;
|
|
@@ -1,22 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Resolution rules:
|
|
5
|
-
* - The nearest ancestor of cwd (including cwd itself) containing a `.hippo`
|
|
6
|
-
* directory is the project root; if none exists, the nearest ancestor
|
|
7
|
-
* containing `.git` (directory or worktree file).
|
|
8
|
-
* - The user home directory is NEVER a project, even though it contains the
|
|
9
|
-
* global store at `~/.hippo`. Reaching home or the temp root (inside home on Windows) ends the walk.
|
|
10
|
-
* - A directory with no marker anywhere up the walk is NOT a project: it
|
|
11
|
-
* resolves to the user-global identity (empty name), so memories written
|
|
12
|
-
* there stay injectable everywhere (matches pre-isolation behavior).
|
|
13
|
-
* - A project's name is its id: `.hippo-project.json` at the root, else the
|
|
14
|
-
* checkout's normalised `origin` remote, else the folder rule (legacyName),
|
|
15
|
-
* so two repos in folders of one name stay apart.
|
|
16
|
-
*
|
|
17
|
-
* NOTE: this module must stay free of imports from shared.ts / store.ts /
|
|
18
|
-
* api.ts so any of them can import it without creating a cycle.
|
|
19
|
-
*/
|
|
1
|
+
/** Project = nearest ancestor of cwd with `.hippo` (else `.git`); home and the temp root never are, and no marker means user-global (empty name).
|
|
2
|
+
* Name: `.hippo-project.json`, else the normalised `origin`, else the folder name. Must not import shared.ts / store.ts / api/index.ts (cycle). */
|
|
20
3
|
/** The project a working directory belongs to. */
|
|
21
4
|
export interface ProjectIdentity {
|
|
22
5
|
/** Realpath-resolved root directory of the project (the start dir when not in a project). */
|
|
@@ -25,30 +8,28 @@ export interface ProjectIdentity {
|
|
|
25
8
|
name: string;
|
|
26
9
|
/** The folder rule rows written before ids carry: the root's lowercased basename, or its repo's for a linked worktree with no `.hippo`. */
|
|
27
10
|
legacyName: string;
|
|
28
|
-
/** Every other name this root resolves to (the project file id, the origin remote even
|
|
11
|
+
/** Every other name this root resolves to (the project file id, the origin remote even
|
|
12
|
+
* with the rule off, legacyName), so rows written under an earlier id stay readable. */
|
|
29
13
|
aliases?: readonly string[];
|
|
30
14
|
/** True when the directory resolves to the user home working set. */
|
|
31
15
|
isHome: boolean;
|
|
32
16
|
}
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* not cached when either is set. stopDir bounds the upward walk so tests in a
|
|
36
|
-
* temp sandbox never escape it and hit the host machine's real markers.
|
|
37
|
-
*/
|
|
17
|
+
/** Options for resolveProjectIdentity. Both fields are test seams and disable caching;
|
|
18
|
+
* stopDir bounds the upward walk so tests in a temp sandbox never reach the host's real markers. */
|
|
38
19
|
export interface ResolveProjectIdentityOpts {
|
|
39
20
|
homeDir?: string;
|
|
40
21
|
stopDir?: string;
|
|
41
22
|
}
|
|
42
23
|
/** Clear the per-process identity cache and the remote switch it read (test seam). */
|
|
43
24
|
export declare function clearProjectIdentityCache(): void;
|
|
44
|
-
/**
|
|
45
|
-
* Resolve the project identity for a working directory.
|
|
46
|
-
* Defaults to process.cwd(). Results are cached per resolved input path.
|
|
47
|
-
*/
|
|
25
|
+
/** Resolves the project identity for a working directory (default process.cwd()); results are cached per resolved input path. */
|
|
48
26
|
export declare function resolveProjectIdentity(cwd?: string, opts?: ResolveProjectIdentityOpts): ProjectIdentity;
|
|
49
27
|
/** Nearest ancestor `.hippo` below home and the temp root (never projects; on Windows the temp root sits inside home).
|
|
50
28
|
* Everything is realpath'd so a symlinked temp root or cwd still matches its bound. */
|
|
51
29
|
export declare function findHippoStoreDir(cwd?: string, opts?: ResolveProjectIdentityOpts): string | null;
|
|
30
|
+
/** Nearest ancestor store like git; the strict join is the fallback so `hippo init` still creates `<cwd>/.hippo`. */
|
|
31
|
+
export declare function getHippoRoot(cwd?: string, opts?: ResolveProjectIdentityOpts): string;
|
|
32
|
+
export declare function isInitialized(hippoRoot: string): boolean;
|
|
52
33
|
/** A reader's project: a bare name, or an identity whose own rows may also carry its legacy folder name. */
|
|
53
34
|
export type ProjectRef = string | Pick<ProjectIdentity, 'name' | 'legacyName' | 'aliases'>;
|
|
54
35
|
/** The id a reader's new rows are stamped with; '' outside a project. */
|
|
@@ -57,44 +38,25 @@ export declare function projectId(project: ProjectRef): string;
|
|
|
57
38
|
export declare function projectNames(project: ProjectRef): readonly string[];
|
|
58
39
|
export declare const MAX_PROJECT_ALIASES = 10;
|
|
59
40
|
export declare const MCP_PROJECT_SCOPED_HEADER = "X-Hippo-Project-Scoped";
|
|
60
|
-
/** Refuses a caller's project that is blank (it would stamp user-global), past the caps, or unlike the resolver's ids: rows match
|
|
41
|
+
/** Refuses a caller's project that is blank (it would stamp user-global), past the caps, or unlike the resolver's ids: rows match
|
|
42
|
+
* verbatim, so a rewrite would split a project. Inner spaces pass, since a checkout with no remote is named by its folder. */
|
|
61
43
|
export declare function assertCallerProject(project: {
|
|
62
44
|
readonly name: string;
|
|
63
45
|
readonly aliases?: readonly string[];
|
|
64
46
|
}): void;
|
|
65
47
|
/** `origin_project IN (?, ...)` with one placeholder per name; an empty list matches nothing. */
|
|
66
48
|
export declare function originInSql(names: readonly string[], column?: string): string;
|
|
67
|
-
/**
|
|
68
|
-
*
|
|
69
|
-
* active project. An empty current id means the session is not in a project
|
|
70
|
-
* (home dir or markerless cwd) - everything is in scope there, matching
|
|
71
|
-
* pre-isolation behavior. NULL/undefined origin means no known project (a legacy
|
|
72
|
-
* row, or a shared-store write that named none) and is treated as cross-project
|
|
73
|
-
* (deny by default) - the safe direction for a security partition.
|
|
74
|
-
*/
|
|
49
|
+
/** Classifies a memory's origin_project against the active project. An empty current id (home or markerless cwd) puts everything in scope;
|
|
50
|
+
* NULL/undefined origin (legacy row, or a shared-store write naming none) counts as cross-project: deny by default for a security partition. */
|
|
75
51
|
export declare function classifyOriginProject(origin: string | null | undefined, current: ProjectRef): 'project' | 'user-global' | 'cross-project';
|
|
76
|
-
/**
|
|
77
|
-
*
|
|
78
|
-
* $HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo. Lives here (leaf module) so
|
|
79
|
-
* db.ts migrations can use it without importing shared.ts (store.ts cycle);
|
|
80
|
-
* shared.getGlobalRoot delegates to this.
|
|
81
|
-
*/
|
|
52
|
+
/** The global Hippo store directory ($HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo); getGlobalRoot (sharing/global-store.ts) returns it.
|
|
53
|
+
* Leaf module so store migrations can use it without importing sharing/ (store cycle). */
|
|
82
54
|
export declare function resolveGlobalRootDir(): string;
|
|
83
|
-
/**
|
|
84
|
-
*
|
|
85
|
-
* global store whose parent chain happens to contain `.git`/`.hippo`
|
|
86
|
-
* (git-managed HIPPO_HOME, dotfiles setups) still backfills as user-global
|
|
87
|
-
* ('') instead of being stamped with the surrounding repo's name - which
|
|
88
|
-
* would hide the user's entire global corpus from every project.
|
|
89
|
-
*/
|
|
55
|
+
/** True when `p` IS the global store root, so a global store whose parent chain contains `.git`/`.hippo` (git-managed HIPPO_HOME) still backfills as
|
|
56
|
+
* user-global ('') instead of being stamped with the surrounding repo's name, which would hide the global corpus from every project. */
|
|
90
57
|
export declare function isGlobalStoreRoot(p: string): boolean;
|
|
91
|
-
/**
|
|
92
|
-
*
|
|
93
|
-
* v39 migration's evidence rules: `shared:<project>:<ts>` and
|
|
94
|
-
* `promoted:<localRoot>` identify the owning project; the user home dir's
|
|
95
|
-
* basename maps to '' (user-global). Returns null when the source carries no
|
|
96
|
-
* origin evidence. Pure string logic - recorded paths may no longer exist.
|
|
97
|
-
*/
|
|
58
|
+
/** Parses a memory's origin from its provenance `source`: `shared:<project>:<ts>` and `promoted:<localRoot>` name the owning project; the home dir basename
|
|
59
|
+
* maps to '' (user-global). Returns null without origin evidence. Pure string logic, since recorded paths may no longer exist. */
|
|
98
60
|
export declare function originFromSource(source: string | null | undefined, homeName?: string): string | null;
|
|
99
61
|
/** The origin to stamp on a memory written from cwd: its project name, or '' (user-global, injectable everywhere) outside a project.
|
|
100
62
|
* NULL means no known project: a legacy row with no evidence, or a write to a shared store that named none; ambient context treats it as deny. */
|