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/ablation.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* EVAL-ONLY ablation switches (HIPPO_ABLATE_*, HIPPO_EVAL_RECENCY_DAYS, HIPPO_FAKE_NOW): each cuts ONE mechanism
|
|
3
|
+
* (outcome also replayPriority bias).
|
|
4
|
+
* Not a production surface. Env is read once per process; tests that mutate these vars MUST call
|
|
5
|
+
* _resetAblationCacheForTests() in beforeEach AND afterEach. See
|
|
3
6
|
* docs/ARCHITECTURE.md#srccoreablationts. */
|
|
4
7
|
import { envAblateDecay, envAblateOutcome, envAblateOutcomeFast, envAblateOutcomeSlow, envAblateRecallBoost, envAblateRecency, envEvalRecencyDays, envFakeNowMs, } from '../util/env.js';
|
|
5
8
|
/** Production scoring: nothing ablated. Core falls back to this, so it never reads the environment. */
|
|
6
|
-
export const NO_STRENGTH_ABLATION = Object.freeze({
|
|
9
|
+
export const NO_STRENGTH_ABLATION = Object.freeze({
|
|
10
|
+
decay: false,
|
|
11
|
+
recallBoost: false,
|
|
12
|
+
outcomeSlow: false,
|
|
13
|
+
});
|
|
7
14
|
let _cache;
|
|
8
15
|
let _strengthCache;
|
|
9
16
|
function readFlags() {
|
|
@@ -48,7 +55,10 @@ export function isRecencyAblated() {
|
|
|
48
55
|
export function evalRecencyScaleDays() {
|
|
49
56
|
return readFlags().recencyDays;
|
|
50
57
|
}
|
|
51
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* The default `now` for lifecycle computations: HIPPO_FAKE_NOW when set and parseable, else the real clock; an explicit
|
|
60
|
+
* `now` parameter always wins.
|
|
61
|
+
*/
|
|
52
62
|
export function evalNow() {
|
|
53
63
|
const ms = readFlags().fakeNowMs;
|
|
54
64
|
return ms === null ? new Date() : new Date(ms);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Detect the current operational scope from env (HIPPO_SCOPE > GSTACK_SKILL > OPENCLAW_SKILL); returns the name without
|
|
3
|
+
* prefix, or null.
|
|
2
4
|
* Pure env reads, no I/O, so it is safe on hot paths such as the UserPromptSubmit hook. */
|
|
3
5
|
export declare function detectScope(): string | null;
|
|
4
6
|
/** Compute scope match between a memory's scope tags and the active scope.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { envGstackSkill, envOpenclawSkill, envScope } from '../util/env.js';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Detect the current operational scope from env (HIPPO_SCOPE > GSTACK_SKILL > OPENCLAW_SKILL); returns the name without
|
|
4
|
+
* prefix, or null.
|
|
3
5
|
* Pure env reads, no I/O, so it is safe on hot paths such as the UserPromptSubmit hook. */
|
|
4
6
|
export function detectScope() {
|
|
5
7
|
const explicit = envScope();
|
|
@@ -26,6 +26,8 @@ export declare const AGENT_MEMORY_TOOLS: readonly [{
|
|
|
26
26
|
export type AgentMemoryTool = (typeof AGENT_MEMORY_TOOLS)[number];
|
|
27
27
|
export type ToolId = AgentMemoryTool['id'];
|
|
28
28
|
export declare const AGENT_MEMORY_SOURCE_PREFIX = "agent-memory:";
|
|
29
|
+
/** The actor on every row and audit event the agent-memories import writes. */
|
|
30
|
+
export declare const SYNC_ACTOR = "agent-memories";
|
|
29
31
|
/** Every imported row of a tool has a source starting with this. */
|
|
30
32
|
export declare function toolSourcePrefix(id: ToolId): string;
|
|
31
33
|
export declare const AGENT_MEMORY_TAGS: readonly string[];
|
|
@@ -8,6 +8,8 @@ export const AGENT_MEMORY_TOOLS = [
|
|
|
8
8
|
{ id: 'qwen-code', tag: 'qwen-code-memory', label: 'Qwen Code' },
|
|
9
9
|
];
|
|
10
10
|
export const AGENT_MEMORY_SOURCE_PREFIX = 'agent-memory:';
|
|
11
|
+
/** The actor on every row and audit event the agent-memories import writes. */
|
|
12
|
+
export const SYNC_ACTOR = 'agent-memories';
|
|
11
13
|
/** Every imported row of a tool has a source starting with this. */
|
|
12
14
|
export function toolSourcePrefix(id) {
|
|
13
15
|
return `${AGENT_MEMORY_SOURCE_PREFIX}${id}:`;
|
package/dist/core/ambient.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Ambient state vector: a compact O(N) summary of the corpus telling the agent "where it is" in knowledge-space without
|
|
3
|
+
* retrieving specific memories.
|
|
4
|
+
*/
|
|
2
5
|
import type { MemoryEntry } from './memory.js';
|
|
3
6
|
export interface AmbientState {
|
|
4
7
|
tagEntropy: number;
|
|
@@ -15,8 +18,6 @@ export interface AmbientState {
|
|
|
15
18
|
}
|
|
16
19
|
/** A memory is fresh when created within this window. */
|
|
17
20
|
export declare const AMBIENT_FRESH_WINDOW_MS: number;
|
|
18
|
-
/** A memory counts as high schema fit strictly above this. */
|
|
19
|
-
export declare const HIGH_SCHEMA_FIT_ABOVE = 0.7;
|
|
20
21
|
/** Row counts and sums an AmbientState is derived from; two stores' tallies add with addAmbientTallies. */
|
|
21
22
|
export interface AmbientTallies {
|
|
22
23
|
total: number;
|
package/dist/core/ambient.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Ambient state vector: a compact O(N) summary of the corpus telling the agent "where it is" in knowledge-space without
|
|
3
|
+
* retrieving specific memories.
|
|
4
|
+
*/
|
|
2
5
|
import { evalNow, strengthAblation } from './ablation.js';
|
|
3
6
|
import { Layer } from './memory.js';
|
|
4
|
-
import { calculateStrength } from './memory.js';
|
|
7
|
+
import { calculateStrength, HIGH_SCHEMA_FIT } from './memory.js';
|
|
5
8
|
import { DAY_MS } from '../util/time.js';
|
|
6
9
|
const STATE_DECIMALS = 3;
|
|
7
10
|
// Cut points renderAmbientSummary uses to turn the state vector into words.
|
|
@@ -22,8 +25,6 @@ const SUMMARY_THRESHOLD = {
|
|
|
22
25
|
};
|
|
23
26
|
/** A memory is fresh when created within this window. */
|
|
24
27
|
export const AMBIENT_FRESH_WINDOW_MS = 7 * DAY_MS;
|
|
25
|
-
/** A memory counts as high schema fit strictly above this. */
|
|
26
|
-
export const HIGH_SCHEMA_FIT_ABOVE = 0.7;
|
|
27
28
|
/** The tallies of two disjoint row sets taken together. */
|
|
28
29
|
export function addAmbientTallies(a, b) {
|
|
29
30
|
const tagCounts = new Map(a.tagCounts);
|
|
@@ -68,7 +69,7 @@ export function tallyAmbientEntries(entries, now) {
|
|
|
68
69
|
t.negative++;
|
|
69
70
|
if (isErrorTagged(entry.tags))
|
|
70
71
|
t.errors++;
|
|
71
|
-
if (entry.schema_fit >
|
|
72
|
+
if (entry.schema_fit > HIGH_SCHEMA_FIT)
|
|
72
73
|
t.highSchemaFit++;
|
|
73
74
|
if (entry.layer === Layer.Semantic)
|
|
74
75
|
t.semantic++;
|
|
@@ -153,8 +154,9 @@ export function renderAmbientSummary(state) {
|
|
|
153
154
|
parts.push('mostly episodic');
|
|
154
155
|
if (state.extractionCoverage > T.extractionHigh)
|
|
155
156
|
parts.push('high extraction coverage');
|
|
156
|
-
if (state.conflictIntensity > T.conflictShown)
|
|
157
|
+
if (state.conflictIntensity > T.conflictShown) {
|
|
157
158
|
parts.push(`${(state.conflictIntensity * 100).toFixed(0)}% conflict rate`);
|
|
159
|
+
}
|
|
158
160
|
if (state.dagDepth >= T.dagDepthShown)
|
|
159
161
|
parts.push(`DAG depth ${state.dagDepth}`);
|
|
160
162
|
if (state.avgStrength < T.strengthLow)
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Errors whose HTTP status is part of the API contract; the server maps by class, so message text can change freely.
|
|
3
|
+
*/
|
|
2
4
|
export type ApiErrorStatus = 400 | 403 | 404 | 409;
|
|
3
5
|
/** Base class: an error the caller caused, carrying the status the HTTP layer answers with. */
|
|
4
6
|
export declare abstract class ApiError extends Error {
|
|
@@ -24,8 +26,12 @@ export declare class ConflictError extends ApiError {
|
|
|
24
26
|
readonly status = 409;
|
|
25
27
|
constructor(message: string);
|
|
26
28
|
}
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
29
|
+
/**
|
|
30
|
+
* Thrown by the write-path guard (checkRejectionGuard, via upsertEntryRow) when a write would introduce a tombstoned
|
|
31
|
+
* value; carries what the
|
|
32
|
+
* transaction-owner catch blocks (writeEntry, api.supersede) need to write the post-rollback `reject_refusal` audit row
|
|
33
|
+
* via `auditRejectionRefusal`.
|
|
34
|
+
*/
|
|
29
35
|
export declare class RejectedValueError extends BadRequestError {
|
|
30
36
|
readonly digest: string;
|
|
31
37
|
readonly tenantId: string;
|
package/dist/core/api-errors.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Errors whose HTTP status is part of the API contract; the server maps by class, so message text can change freely.
|
|
3
|
+
*/
|
|
2
4
|
import { DIGEST_DISPLAY_CHARS } from '../util/token-text.js';
|
|
3
5
|
/** Base class: an error the caller caused, carrying the status the HTTP layer answers with. */
|
|
4
6
|
export class ApiError extends Error {
|
|
@@ -35,8 +37,12 @@ export class ConflictError extends ApiError {
|
|
|
35
37
|
this.name = 'ConflictError';
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
40
|
+
/**
|
|
41
|
+
* Thrown by the write-path guard (checkRejectionGuard, via upsertEntryRow) when a write would introduce a tombstoned
|
|
42
|
+
* value; carries what the
|
|
43
|
+
* transaction-owner catch blocks (writeEntry, api.supersede) need to write the post-rollback `reject_refusal` audit row
|
|
44
|
+
* via `auditRejectionRefusal`.
|
|
45
|
+
*/
|
|
40
46
|
export class RejectedValueError extends BadRequestError {
|
|
41
47
|
digest;
|
|
42
48
|
tenantId;
|
|
@@ -54,7 +54,10 @@ export type HookRuntime = 'claude-code' | 'copilot';
|
|
|
54
54
|
/** Reads a Claude Code PreCompact payload, or a Copilot one after stdin.ts mapped
|
|
55
55
|
* it to the same snake_case keys; only an empty stdin counts as a manual run. */
|
|
56
56
|
export declare function readClaudeCodePreCompact(stdinText: string | undefined, timedOut: boolean, runtime?: HookRuntime): CaptureReceipt;
|
|
57
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Reads VS Code's per-reply Stop payload. Pass the raw stdin: stdin.ts would give a Copilot CLI agentStop the same
|
|
59
|
+
* snake_case keys.
|
|
60
|
+
*/
|
|
58
61
|
export declare function readVscodeStop(stdinText: string | undefined, timedOut: boolean): CaptureReceipt;
|
|
59
62
|
/** Reads a Claude Code PostCompact payload; it must name a session, but needs no transcript_path. */
|
|
60
63
|
export declare function readClaudeCodePostCompact(stdinText: string | undefined, timedOut: boolean): CaptureReceipt<PostCompactInput>;
|
|
@@ -17,7 +17,10 @@ export function readClaudeCodePreCompact(stdinText, timedOut, runtime = 'claude-
|
|
|
17
17
|
}
|
|
18
18
|
const base = { runtime, event: 'pre-compact' };
|
|
19
19
|
if (empty) {
|
|
20
|
-
return {
|
|
20
|
+
return {
|
|
21
|
+
status: 'received',
|
|
22
|
+
input: { ...base, manual: true, sessionId: null, cwd: null, transcriptPath: null, trigger: null },
|
|
23
|
+
};
|
|
21
24
|
}
|
|
22
25
|
let payload;
|
|
23
26
|
try {
|
|
@@ -31,7 +34,8 @@ export function readClaudeCodePreCompact(stdinText, timedOut, runtime = 'claude-
|
|
|
31
34
|
return { status: 'skipped', reason: 'malformed or incomplete PreCompact payload (missing string transcript_path)' };
|
|
32
35
|
}
|
|
33
36
|
const transcriptPath = payload.transcript_path;
|
|
34
|
-
// Path shape only: CLAUDE_CONFIG_DIR can move the transcript root, and a same-user process can already read every
|
|
37
|
+
// Path shape only: CLAUDE_CONFIG_DIR can move the transcript root, and a same-user process can already read every
|
|
38
|
+
// transcript.
|
|
35
39
|
if (!/\.jsonl$/i.test(transcriptPath)) {
|
|
36
40
|
return { status: 'skipped', reason: `payload transcript_path is not a .jsonl file: ${transcriptPath}` };
|
|
37
41
|
}
|
|
@@ -47,7 +51,10 @@ export function readClaudeCodePreCompact(stdinText, timedOut, runtime = 'claude-
|
|
|
47
51
|
},
|
|
48
52
|
};
|
|
49
53
|
}
|
|
50
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Reads VS Code's per-reply Stop payload. Pass the raw stdin: stdin.ts would give a Copilot CLI agentStop the same
|
|
56
|
+
* snake_case keys.
|
|
57
|
+
*/
|
|
51
58
|
export function readVscodeStop(stdinText, timedOut) {
|
|
52
59
|
if (!stdinText || stdinText.trim() === '') {
|
|
53
60
|
return timedOut
|
|
@@ -64,7 +71,9 @@ export function readVscodeStop(stdinText, timedOut) {
|
|
|
64
71
|
if (!isObjectLike(payload) || !('hook_event_name' in payload) || payload.hook_event_name !== 'Stop') {
|
|
65
72
|
return { status: 'skipped', reason: 'not a VS Code Stop payload (no snake_case hook_event_name "Stop")' };
|
|
66
73
|
}
|
|
67
|
-
if (!('transcript_path' in payload) ||
|
|
74
|
+
if (!('transcript_path' in payload) ||
|
|
75
|
+
!isStringValue(payload.transcript_path) ||
|
|
76
|
+
!/\.jsonl$/i.test(payload.transcript_path)) {
|
|
68
77
|
return { status: 'skipped', reason: 'Stop payload names no .jsonl transcript_path' };
|
|
69
78
|
}
|
|
70
79
|
if (!('session_id' in payload) || !isStringValue(payload.session_id) || payload.session_id === '') {
|
|
@@ -96,7 +105,10 @@ export function readClaudeCodePostCompact(stdinText, timedOut) {
|
|
|
96
105
|
catch {
|
|
97
106
|
// Non-JSON stdin leaves payload undefined, which the shape check rejects.
|
|
98
107
|
}
|
|
99
|
-
if (!isObjectLike(payload) ||
|
|
108
|
+
if (!isObjectLike(payload) ||
|
|
109
|
+
!('session_id' in payload) ||
|
|
110
|
+
!isStringValue(payload.session_id) ||
|
|
111
|
+
payload.session_id === '') {
|
|
100
112
|
return { status: 'skipped', reason: 'no PostCompact payload naming a session' };
|
|
101
113
|
}
|
|
102
114
|
return {
|
|
@@ -122,7 +134,10 @@ export function readSessionEnd(stdinText, timedOut, runtime = 'claude-code') {
|
|
|
122
134
|
}
|
|
123
135
|
const base = { runtime, event: 'session-end' };
|
|
124
136
|
if (empty) {
|
|
125
|
-
return {
|
|
137
|
+
return {
|
|
138
|
+
status: 'received',
|
|
139
|
+
input: { ...base, manual: true, sessionId: null, cwd: null, transcriptPath: null, trigger: null },
|
|
140
|
+
};
|
|
126
141
|
}
|
|
127
142
|
let payload;
|
|
128
143
|
try {
|
|
@@ -140,9 +155,13 @@ export function readSessionEnd(stdinText, timedOut, runtime = 'claude-code') {
|
|
|
140
155
|
input: {
|
|
141
156
|
...base,
|
|
142
157
|
manual: false,
|
|
143
|
-
sessionId: 'session_id' in payload && isStringValue(payload.session_id) && payload.session_id !== ''
|
|
158
|
+
sessionId: 'session_id' in payload && isStringValue(payload.session_id) && payload.session_id !== ''
|
|
159
|
+
? payload.session_id
|
|
160
|
+
: null,
|
|
144
161
|
cwd: 'cwd' in payload && isStringValue(payload.cwd) ? payload.cwd : null,
|
|
145
|
-
transcriptPath: 'transcript_path' in payload && isStringValue(payload.transcript_path) && payload.transcript_path !== ''
|
|
162
|
+
transcriptPath: 'transcript_path' in payload && isStringValue(payload.transcript_path) && payload.transcript_path !== ''
|
|
163
|
+
? payload.transcript_path
|
|
164
|
+
: null,
|
|
146
165
|
// Both hosts name a session end's trigger `reason`.
|
|
147
166
|
trigger: 'reason' in payload && isStringValue(payload.reason) ? payload.reason : null,
|
|
148
167
|
},
|
package/dist/core/compare.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic tie-break comparators for recall ranking. A true LEAF module: it imports from no sort-site module
|
|
3
|
+
* (search, physics, api, cli, goals,
|
|
4
|
+
* graph-recall, multihop, rerankers), taking structural param types instead, because even a type-only import back would
|
|
5
|
+
* recreate the search <-> physics ESM
|
|
3
6
|
* cycle this module exists to avoid. */
|
|
4
7
|
/** Minimal shape for a deterministic tie-break across fresh ingests into different stores;
|
|
5
8
|
* the metadata keys are optional so `{ content, id }` callers still fit. */
|
|
@@ -10,8 +13,12 @@ export interface EntryIdentity {
|
|
|
10
13
|
tags?: readonly string[];
|
|
11
14
|
source?: string;
|
|
12
15
|
}
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
16
|
+
/**
|
|
17
|
+
* Order: content, layer rank (semantic first, keeping the promotion), tag count desc, sorted tags, source, id; plain
|
|
18
|
+
* `<`/`>`, never `localeCompare`.
|
|
19
|
+
* `content` is the cross-ingest-stable key; `id` is random per instance, so it is only the terminal key. Metadata keys
|
|
20
|
+
* are computed only on a content tie.
|
|
21
|
+
*/
|
|
15
22
|
export declare function compareEntryIdentity(a: EntryIdentity, b: EntryIdentity): number;
|
|
16
23
|
/** Minimal shape for score-primary sort sites (SearchResult and friends
|
|
17
24
|
* that carry `{ score, entry: { content, id } }`). */
|
|
@@ -19,13 +26,22 @@ export interface ScoredEntryLike {
|
|
|
19
26
|
score: number;
|
|
20
27
|
entry: EntryIdentity;
|
|
21
28
|
}
|
|
22
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* score descending, then `compareEntryIdentity`: the shared ordering for every score-primary recall sort site, which
|
|
31
|
+
* delegate here (via an arrow when the
|
|
23
32
|
* score field is not named `score`) so the tiebreak cannot drift between call sites. */
|
|
24
33
|
export declare function compareScoredResults(a: ScoredEntryLike, b: ScoredEntryLike): number;
|
|
25
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Larger first, NaN after every number, 0 for equal scores. Not a subtraction: two infinities, or any NaN, subtract to
|
|
36
|
+
* NaN, which a sort reads as a tie.
|
|
37
|
+
*/
|
|
26
38
|
export declare function compareScoresDesc(a: number, b: number): number;
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
39
|
+
/**
|
|
40
|
+
* Score-desc then tie-key comparator for the physics layer (no `entry`/`content` in scope): the default memoryId key is
|
|
41
|
+
* per-instance determinism only.
|
|
42
|
+
* Cross-ingest stability needs `tieKeyOf` (content), since the baseScore tie order picks the cluster_top_k set. A
|
|
43
|
+
* factory, as two fields sort in turn.
|
|
44
|
+
*/
|
|
29
45
|
export declare function comparePhysicsResultsBy<T extends {
|
|
30
46
|
memoryId: string;
|
|
31
47
|
}>(scoreOf: (r: T) => number, tieKeyOf?: (r: T) => string): (a: T, b: T) => number;
|
package/dist/core/compare.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic tie-break comparators for recall ranking. A true LEAF module: it imports from no sort-site module
|
|
3
|
+
* (search, physics, api, cli, goals,
|
|
4
|
+
* graph-recall, multihop, rerankers), taking structural param types instead, because even a type-only import back would
|
|
5
|
+
* recreate the search <-> physics ESM
|
|
3
6
|
* cycle this module exists to avoid. */
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
7
|
+
/**
|
|
8
|
+
* Order: content, layer rank (semantic first, keeping the promotion), tag count desc, sorted tags, source, id; plain
|
|
9
|
+
* `<`/`>`, never `localeCompare`.
|
|
10
|
+
* `content` is the cross-ingest-stable key; `id` is random per instance, so it is only the terminal key. Metadata keys
|
|
11
|
+
* are computed only on a content tie.
|
|
12
|
+
*/
|
|
6
13
|
export function compareEntryIdentity(a, b) {
|
|
7
14
|
return (compareStrings(a.content, b.content) ||
|
|
8
15
|
layerRank(a.layer) - layerRank(b.layer) ||
|
|
@@ -36,12 +43,17 @@ function compareTags(a, b) {
|
|
|
36
43
|
}
|
|
37
44
|
return 0;
|
|
38
45
|
}
|
|
39
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* score descending, then `compareEntryIdentity`: the shared ordering for every score-primary recall sort site, which
|
|
48
|
+
* delegate here (via an arrow when the
|
|
40
49
|
* score field is not named `score`) so the tiebreak cannot drift between call sites. */
|
|
41
50
|
export function compareScoredResults(a, b) {
|
|
42
51
|
return compareScoresDesc(a.score, b.score) || compareEntryIdentity(a.entry, b.entry);
|
|
43
52
|
}
|
|
44
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Larger first, NaN after every number, 0 for equal scores. Not a subtraction: two infinities, or any NaN, subtract to
|
|
55
|
+
* NaN, which a sort reads as a tie.
|
|
56
|
+
*/
|
|
45
57
|
export function compareScoresDesc(a, b) {
|
|
46
58
|
if (a > b)
|
|
47
59
|
return -1;
|
|
@@ -49,8 +61,12 @@ export function compareScoresDesc(a, b) {
|
|
|
49
61
|
return 1;
|
|
50
62
|
return Number(Number.isNaN(a)) - Number(Number.isNaN(b));
|
|
51
63
|
}
|
|
52
|
-
/**
|
|
53
|
-
*
|
|
64
|
+
/**
|
|
65
|
+
* Score-desc then tie-key comparator for the physics layer (no `entry`/`content` in scope): the default memoryId key is
|
|
66
|
+
* per-instance determinism only.
|
|
67
|
+
* Cross-ingest stability needs `tieKeyOf` (content), since the baseScore tie order picks the cluster_top_k set. A
|
|
68
|
+
* factory, as two fields sort in turn.
|
|
69
|
+
*/
|
|
54
70
|
export function comparePhysicsResultsBy(scoreOf, tieKeyOf) {
|
|
55
71
|
return (a, b) => {
|
|
56
72
|
const d = compareScoresDesc(scoreOf(a), scoreOf(b));
|
package/dist/core/config.d.ts
CHANGED
|
@@ -19,7 +19,8 @@ export interface HippoConfig {
|
|
|
19
19
|
enabled: boolean | 'auto';
|
|
20
20
|
model: string;
|
|
21
21
|
hybridWeight: number;
|
|
22
|
-
/** Embedding backend: 'local' (default) = zero-dependency transformers.js; 'openai' | 'voyage' | 'cohere' = opt-in
|
|
22
|
+
/** Embedding backend: 'local' (default) = zero-dependency transformers.js; 'openai' | 'voyage' | 'cohere' = opt-in
|
|
23
|
+
* API embedder needing the provider's
|
|
23
24
|
* API key in env (OPENAI_API_KEY / VOYAGE_API_KEY / COHERE_API_KEY). See src/embeddings/provider.ts. */
|
|
24
25
|
provider?: 'local' | 'openai' | 'voyage' | 'cohere';
|
|
25
26
|
/** Optional API base-URL override (self-host / proxy). HTTPS only (localhost
|
|
@@ -55,14 +56,16 @@ export interface HippoConfig {
|
|
|
55
56
|
autoTraceCapture: boolean;
|
|
56
57
|
/** Only promote sessions whose session_complete event is within N days. */
|
|
57
58
|
autoTraceWindowDays: number;
|
|
58
|
-
/** Mid-session pinned-rule re-injection through the UserPromptSubmit hook: pinned memories are re-injected each
|
|
59
|
+
/** Mid-session pinned-rule re-injection through the UserPromptSubmit hook: pinned memories are re-injected each
|
|
60
|
+
* turn within the token budget. */
|
|
59
61
|
pinnedInject: {
|
|
60
62
|
enabled: boolean;
|
|
61
63
|
budget: number;
|
|
62
64
|
/** Skip a block identical to the one already injected this session
|
|
63
65
|
* Default true. Needs a session id from the hook payload. */
|
|
64
66
|
skipUnchanged: boolean;
|
|
65
|
-
/** Resend an unchanged block after this many consecutive skips, so long sessions still see pinned rules near the
|
|
67
|
+
/** Resend an unchanged block after this many consecutive skips, so long sessions still see pinned rules near the
|
|
68
|
+
* latest turn (default 10; 0 never
|
|
66
69
|
* resends). */
|
|
67
70
|
refreshTurns: number;
|
|
68
71
|
/** Gate the hook's backfill on the prompt's own content instead of the five
|
|
@@ -79,8 +82,10 @@ export interface HippoConfig {
|
|
|
79
82
|
/** FTS candidate pool size per store before gating. Default 100. */
|
|
80
83
|
promptRecallCandidates: number;
|
|
81
84
|
};
|
|
82
|
-
/** Memory scope isolation (default true): ambient context (`hippo context`, the hook, /v1/context, MCP hippo_context)
|
|
83
|
-
*
|
|
85
|
+
/** Memory scope isolation (default true): ambient context (`hippo context`, the hook, /v1/context, MCP hippo_context)
|
|
86
|
+
* excludes OTHER projects' memories;
|
|
87
|
+
* explicit recall is unaffected. False disables the ORIGIN PARTITION only: the secret veto is unconditional, and
|
|
88
|
+
* no flag re-includes secret-flagged rows. */
|
|
84
89
|
contextProjectIsolation: boolean;
|
|
85
90
|
extraction: {
|
|
86
91
|
enabled: boolean | 'auto';
|
|
@@ -100,12 +105,15 @@ export interface HippoConfig {
|
|
|
100
105
|
enabled: boolean;
|
|
101
106
|
};
|
|
102
107
|
/** Opt-in learned memory-value rescue veto on the sleep decay pass. Default OFF: the frozen weights
|
|
103
|
-
*
|
|
108
|
+
* (src/consolidate/memory-value-weights.ts) only run when enabled; the rescue budget is a code constant, not
|
|
109
|
+
* user-tunable. */
|
|
104
110
|
memoryValue: {
|
|
105
111
|
enabled: boolean;
|
|
106
112
|
};
|
|
107
|
-
/** Dormant memories (src/store/dormant.ts), on by default: the sleep decay pass moves a memory that faded below the
|
|
108
|
-
*
|
|
113
|
+
/** Dormant memories (src/store/dormant.ts), on by default: the sleep decay pass moves a memory that faded below the
|
|
114
|
+
* threshold there instead of deleting it
|
|
115
|
+
* (`hippo dormant restore|forget <id>`); a faded memory the secret detector flags is always deleted. `{"enabled":
|
|
116
|
+
* false}` restores delete-on-fade. */
|
|
109
117
|
dormant: {
|
|
110
118
|
enabled: boolean;
|
|
111
119
|
/** Days a dormant memory is kept before sleep deletes it for good.
|
|
@@ -143,7 +151,8 @@ export interface HippoConfig {
|
|
|
143
151
|
export declare const DEFAULT_CONFIG: HippoConfig;
|
|
144
152
|
export declare function loadConfig(hippoRoot: string): HippoConfig;
|
|
145
153
|
/** True when the store's config.json sets `"sharedStore": true`. Once true, a root stays true for this process,
|
|
146
|
-
*
|
|
154
|
+
* so a broken edit while a server runs cannot turn it off. Reads only this key, so loadConfig's warnings stay
|
|
155
|
+
* loadConfig's. */
|
|
147
156
|
export declare function isSharedStore(hippoRoot: string): boolean;
|
|
148
157
|
/** Reads the root as shared for the rest of this process, whatever its config.json says. */
|
|
149
158
|
export declare function markSharedStore(hippoRoot: string): void;
|
package/dist/core/config.js
CHANGED
|
@@ -5,8 +5,8 @@ import * as fs from 'fs';
|
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import { DEFAULT_PHYSICS_CONFIG, mergePhysicsConfig } from './physics-config.js';
|
|
7
7
|
import { DEFAULT_HALF_LIFE_DAYS } from './memory.js';
|
|
8
|
-
import { DEFAULT_LOCAL_BUMP, DEFAULT_RECALL_BUDGET } from './search-types.js';
|
|
9
|
-
import { errorCode, errorMessage, log } from '../util/log.js';
|
|
8
|
+
import { DEFAULT_LOCAL_BUMP, DEFAULT_MMR_LAMBDA, DEFAULT_RECALL_BUDGET } from './search-types.js';
|
|
9
|
+
import { errorCode, errorMessage, log, errorFields } from '../util/log.js';
|
|
10
10
|
import { isJsonObject } from '../util/json.js';
|
|
11
11
|
export const DEFAULT_CONFIG = {
|
|
12
12
|
defaultHalfLifeDays: DEFAULT_HALF_LIFE_DAYS,
|
|
@@ -35,7 +35,7 @@ export const DEFAULT_CONFIG = {
|
|
|
35
35
|
physics: { ...DEFAULT_PHYSICS_CONFIG },
|
|
36
36
|
mmr: {
|
|
37
37
|
enabled: true,
|
|
38
|
-
lambda:
|
|
38
|
+
lambda: DEFAULT_MMR_LAMBDA,
|
|
39
39
|
},
|
|
40
40
|
search: {
|
|
41
41
|
localBump: DEFAULT_LOCAL_BUMP,
|
|
@@ -158,7 +158,8 @@ function memoryValueOverride(raw) {
|
|
|
158
158
|
return memoryValueRaw !== undefined && isJsonObject(memoryValueRaw) ? memoryValueRaw : {};
|
|
159
159
|
}
|
|
160
160
|
function dormantSettings(raw) {
|
|
161
|
-
// Same rule as memoryValue above: a malformed value never silently changes what sleep does; anything but a real
|
|
161
|
+
// Same rule as memoryValue above: a malformed value never silently changes what sleep does; anything but a real
|
|
162
|
+
// object / boolean / number
|
|
162
163
|
// warns and falls back to the default, which keeps faded memories.
|
|
163
164
|
const dormantRaw = raw.dormant;
|
|
164
165
|
if (dormantRaw !== undefined && !isJsonObject(dormantRaw)) {
|
|
@@ -200,7 +201,8 @@ function churnStalenessEnabled(raw) {
|
|
|
200
201
|
return enabled;
|
|
201
202
|
}
|
|
202
203
|
function defaultHalfLifeDays(raw) {
|
|
203
|
-
// Every writer starts a memory on this, and a zero or negative half-life scores zero strength, so sleep would retire
|
|
204
|
+
// Every writer starts a memory on this, and a zero or negative half-life scores zero strength, so sleep would retire
|
|
205
|
+
// it.
|
|
204
206
|
const days = raw.defaultHalfLifeDays ?? DEFAULT_CONFIG.defaultHalfLifeDays;
|
|
205
207
|
if (!Number.isFinite(days) || days <= 0) {
|
|
206
208
|
log.warn(`config.json's "defaultHalfLifeDays" must be a number of days above 0 ` +
|
|
@@ -218,7 +220,8 @@ function sharedStoreFlag(raw) {
|
|
|
218
220
|
return false;
|
|
219
221
|
}
|
|
220
222
|
export function loadConfig(hippoRoot) {
|
|
221
|
-
// A caller that names no folder, as an add-on serving another store does, gets the defaults, never the working
|
|
223
|
+
// A caller that names no folder, as an add-on serving another store does, gets the defaults, never the working
|
|
224
|
+
// folder's config.json.
|
|
222
225
|
if (hippoRoot === '')
|
|
223
226
|
return { ...DEFAULT_CONFIG };
|
|
224
227
|
const configPath = path.join(hippoRoot, 'config.json');
|
|
@@ -236,7 +239,8 @@ export function loadConfig(hippoRoot) {
|
|
|
236
239
|
const PARSED_CONFIGS_MAX = 64;
|
|
237
240
|
// Each path's parsed config with the stamp of the file it came from, so an unchanged file costs one stat and no parse.
|
|
238
241
|
const parsedConfigs = new Map();
|
|
239
|
-
/** A file's mtime and size, which an edit changes; null when it is missing or cannot be reached, as existsSync
|
|
242
|
+
/** A file's mtime and size, which an edit changes; null when it is missing or cannot be reached, as existsSync
|
|
243
|
+
* answers false. */
|
|
240
244
|
function fileStamp(file) {
|
|
241
245
|
try {
|
|
242
246
|
const stat = fs.statSync(file, { throwIfNoEntry: false });
|
|
@@ -245,24 +249,33 @@ function fileStamp(file) {
|
|
|
245
249
|
catch (err) {
|
|
246
250
|
const code = errorCode(err);
|
|
247
251
|
const message = `config: ${file} could not be reached, read as missing: ${errorMessage(err)}`;
|
|
248
|
-
if (code === 'EACCES' || code === 'EPERM')
|
|
249
|
-
log.warnThenDebug(`config-unreachable:${file}:${code}`, message, { path: file, code });
|
|
252
|
+
if (code === 'EACCES' || code === 'EPERM') {
|
|
253
|
+
log.warnThenDebug(`config-unreachable:${file}:${code}`, message, { path: file, code, ...errorFields(err) });
|
|
254
|
+
}
|
|
255
|
+
// Any other refusal (ENOTDIR, ELOOP) means the path is simply not there, so only a permission refusal is told.
|
|
250
256
|
else
|
|
251
|
-
log.debug(message);
|
|
257
|
+
log.debug(message, errorFields(err));
|
|
252
258
|
return null;
|
|
253
259
|
}
|
|
254
260
|
}
|
|
255
|
-
|
|
261
|
+
/** A config.json that exists must load: running on defaults would silently drop the user's settings, such as
|
|
262
|
+
* `sharedStore`. */
|
|
263
|
+
function readConfigFile(configPath) {
|
|
264
|
+
let raw;
|
|
256
265
|
try {
|
|
257
|
-
|
|
258
|
-
return configOverDefaults(raw);
|
|
266
|
+
raw = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
259
267
|
}
|
|
260
268
|
catch (err) {
|
|
261
|
-
|
|
262
|
-
log.warn(`failed to parse ${configPath}: ${errorMessage(err)}`);
|
|
263
|
-
}
|
|
264
|
-
return { ...DEFAULT_CONFIG };
|
|
269
|
+
throw new Error(`${configPath} could not be loaded: ${errorMessage(err)}. Fix the file or delete it to use the defaults.`, { cause: err });
|
|
265
270
|
}
|
|
271
|
+
if (!isJsonObject(raw)) {
|
|
272
|
+
throw new Error(`${configPath} must hold a JSON object. Fix the file or delete it to use the defaults.`);
|
|
273
|
+
}
|
|
274
|
+
// SAFETY: an object is all the shape check proves; configOverDefaults validates each key it reads.
|
|
275
|
+
return raw;
|
|
276
|
+
}
|
|
277
|
+
function parseConfigFile(configPath) {
|
|
278
|
+
return configOverDefaults(readConfigFile(configPath));
|
|
266
279
|
}
|
|
267
280
|
function configOverDefaults(raw) {
|
|
268
281
|
const basis = raw.decayBasis;
|
|
@@ -312,20 +325,23 @@ function configOverDefaults(raw) {
|
|
|
312
325
|
const sharedStoreRoots = new Set();
|
|
313
326
|
// The stamp of each config.json last read as not shared: an unchanged file is not parsed again.
|
|
314
327
|
const notSharedStamps = new Map();
|
|
315
|
-
/** The folder as isGlobalStoreRoot compares it (realpath, case-folded on Windows); its helper sits behind an import
|
|
328
|
+
/** The folder as isGlobalStoreRoot compares it (realpath, case-folded on Windows); its helper sits behind an import
|
|
329
|
+
* cycle. */
|
|
316
330
|
function sharedStoreKey(hippoRoot) {
|
|
317
331
|
let real;
|
|
318
332
|
try {
|
|
319
333
|
real = fs.realpathSync.native(hippoRoot);
|
|
320
334
|
}
|
|
321
335
|
catch (err) {
|
|
322
|
-
|
|
336
|
+
// A folder that does not exist yet has no real path, so the resolved one stands in.
|
|
337
|
+
log.debug(`sharedStore: realpath fell back to resolve for ${hippoRoot}: ${errorMessage(err)}`, errorFields(err));
|
|
323
338
|
real = path.resolve(hippoRoot);
|
|
324
339
|
}
|
|
325
340
|
return process.platform === 'win32' ? real.toLowerCase() : real;
|
|
326
341
|
}
|
|
327
342
|
/** True when the store's config.json sets `"sharedStore": true`. Once true, a root stays true for this process,
|
|
328
|
-
*
|
|
343
|
+
* so a broken edit while a server runs cannot turn it off. Reads only this key, so loadConfig's warnings stay
|
|
344
|
+
* loadConfig's. */
|
|
329
345
|
export function isSharedStore(hippoRoot) {
|
|
330
346
|
const key = sharedStoreKey(hippoRoot);
|
|
331
347
|
if (sharedStoreRoots.has(key))
|
|
@@ -334,15 +350,8 @@ export function isSharedStore(hippoRoot) {
|
|
|
334
350
|
const stamp = fileStamp(configPath);
|
|
335
351
|
if (stamp === null || notSharedStamps.get(configPath) === stamp)
|
|
336
352
|
return false;
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
raw = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
340
|
-
}
|
|
341
|
-
catch (err) {
|
|
342
|
-
log.warn(`failed to read ${configPath}: ${errorMessage(err)} - sharedStore read as false.`);
|
|
343
|
-
return false;
|
|
344
|
-
}
|
|
345
|
-
if (raw?.sharedStore !== true) {
|
|
353
|
+
const raw = readConfigFile(configPath);
|
|
354
|
+
if (raw.sharedStore !== true) {
|
|
346
355
|
if (notSharedStamps.size >= PARSED_CONFIGS_MAX)
|
|
347
356
|
notSharedStamps.clear();
|
|
348
357
|
notSharedStamps.set(configPath, stamp);
|
package/dist/core/cosine.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Cosine over any indexable vectors (a Float32 view scores as its number[] copy); 0 for empty, mismatched or zero-norm
|
|
3
|
+
* input.
|
|
4
|
+
*/
|
|
2
5
|
export declare function cosineOf(a: ArrayLike<number>, b: ArrayLike<number>): number;
|
|
3
6
|
//# sourceMappingURL=cosine.d.ts.map
|
package/dist/core/cosine.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Cosine over any indexable vectors (a Float32 view scores as its number[] copy); 0 for empty, mismatched or zero-norm
|
|
3
|
+
* input.
|
|
4
|
+
*/
|
|
2
5
|
export function cosineOf(a, b) {
|
|
3
6
|
if (a.length === 0 || b.length === 0 || a.length !== b.length)
|
|
4
7
|
return 0;
|