hippo-memory 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +32 -19
- package/dist/api/prompt-hook.js +65 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +28 -7
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +33 -14
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +45 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +23 -23
- package/dist/cli/auth.js +19 -27
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +4 -4
- package/dist/cli/object-verbs.js +10 -13
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +14 -6
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -5
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -6
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -6
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -6
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -5
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -6
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +24 -14
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +21 -16
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +84 -27
- package/dist/core/memory.js +73 -29
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -3
- package/dist/db/connect.js +8 -3
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +26 -13
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -4
- package/dist/db/physics-state.js +13 -20
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +19 -5
- package/dist/db/request-stores.js +14 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +19 -6
- package/dist/entry/store-kit.js +6 -4
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +16 -6
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +69 -34
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +8 -7
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +16 -9
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -7
- package/dist/learn/invalidation.js +56 -27
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +18 -14
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +57 -74
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +52 -21
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +9 -6
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +547 -93
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -19
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +75 -36
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +93 -60
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +8 -10
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +3 -1
- package/dist/store/index.js +1 -0
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +215 -229
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +9 -4
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.js +2 -1
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +84 -33
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -11
- package/dist/store/sqlite/store.js +84 -11
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +19 -12
- package/dist/store/summaries.js +36 -21
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +6 -3
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +24 -10
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +16 -4
- package/dist/util/env.js +78 -25
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +11 -3
- package/dist/util/request-scope.js +13 -4
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +3 -1
- package/dist/util/spawn-argv.js +13 -4
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -11
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -4
- package/dist/store/sqlite/local.js +0 -8
|
@@ -33,8 +33,10 @@ const RELATIONS_TABLE = `
|
|
|
33
33
|
FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE SET NULL
|
|
34
34
|
)
|
|
35
35
|
`;
|
|
36
|
-
// entities guard (dual-provenance): at least one valid provenance, no raw. Memory path: source_kind must equal the FK'd
|
|
37
|
-
//
|
|
36
|
+
// entities guard (dual-provenance): at least one valid provenance, no raw. Memory path: source_kind must equal the FK'd
|
|
37
|
+
// memory's kind, plus tenant-match.
|
|
38
|
+
// Object path (memory_id NULL): (type,id) must point at an existing same-tenant object with status active|superseded
|
|
39
|
+
// (4-way CASE per table); all-null aborts.
|
|
38
40
|
const TRG_ENTITIES_CONSOLIDATED_ONLY_INSERT = `
|
|
39
41
|
CREATE TRIGGER IF NOT EXISTS trg_entities_consolidated_only_insert
|
|
40
42
|
BEFORE INSERT ON entities
|
|
@@ -197,7 +199,8 @@ const TRG_RELATIONS_CONSOLIDATED_ONLY_UPDATE = `
|
|
|
197
199
|
END;
|
|
198
200
|
END
|
|
199
201
|
`;
|
|
200
|
-
// Recreated verbatim from v37 (relation endpoints cannot move cross-tenant). The memories and graph queue triggers
|
|
202
|
+
// Recreated verbatim from v37 (relation endpoints cannot move cross-tenant). The memories and graph queue triggers
|
|
203
|
+
// survive: those tables are not dropped.
|
|
201
204
|
const TRG_ENTITIES_NO_TENANT_MOVE_WHEN_REFERENCED = `
|
|
202
205
|
CREATE TRIGGER IF NOT EXISTS trg_entities_no_tenant_move_when_referenced
|
|
203
206
|
BEFORE UPDATE ON entities
|
|
@@ -210,8 +213,10 @@ const TRG_ENTITIES_NO_TENANT_MOVE_WHEN_REFERENCED = `
|
|
|
210
213
|
export const v38 = {
|
|
211
214
|
version: 38,
|
|
212
215
|
up: (db) => {
|
|
213
|
-
// Anchor graph provenance to the authoritative object, not the decaying mirror memory; the graph is a derived
|
|
214
|
-
//
|
|
216
|
+
// Anchor graph provenance to the authoritative object, not the decaying mirror memory; the graph is a derived
|
|
217
|
+
// cache, so entities/relations are recreated.
|
|
218
|
+
// memory_id is NULLABLE ON DELETE SET NULL; node:sqlite fires the BEFORE UPDATE guard on that SET NULL, so the
|
|
219
|
+
// UPDATE triggers omit the all-null ABORT.
|
|
215
220
|
recreateGraphTables(db);
|
|
216
221
|
createGraphGuards(db);
|
|
217
222
|
},
|
|
@@ -11,16 +11,22 @@ export const v39 = {
|
|
|
11
11
|
if (!tableHasColumn(db, 'memories', 'origin_project')) {
|
|
12
12
|
db.exec(`ALTER TABLE memories ADD COLUMN origin_project TEXT`);
|
|
13
13
|
}
|
|
14
|
-
// Backfill from store location only (no path-tag guessing): 'shared:<project>:<ts>' rows take <project> (home-dir
|
|
15
|
-
//
|
|
14
|
+
// Backfill from store location only (no path-tag guessing): 'shared:<project>:<ts>' rows take <project> (home-dir
|
|
15
|
+
// basename maps to '' user-global);
|
|
16
|
+
// every other row takes this store's origin (`<project>/.hippo` -> '<project>', global store -> ''). Rows stay
|
|
17
|
+
// NULL only when no hippoRoot was provided.
|
|
16
18
|
const hippoRoot = ctx?.hippoRoot;
|
|
17
19
|
if (hippoRoot) {
|
|
18
|
-
// Provenance-source evidence first (shared:<project>: / promoted:<localRoot>, parsed by the markdown-import
|
|
20
|
+
// Provenance-source evidence first (shared:<project>: / promoted:<localRoot>, parsed by the markdown-import
|
|
21
|
+
// stamp's helper),
|
|
19
22
|
// then the store's own location for everything else.
|
|
20
23
|
const homeName = path.basename(os.homedir()).toLowerCase();
|
|
21
24
|
// SAFETY: sourcedRows' shape matches the two columns (id, source)
|
|
22
25
|
// named in the SELECT above.
|
|
23
|
-
const sourcedRows = db
|
|
26
|
+
const sourcedRows = db
|
|
27
|
+
.prepare(`SELECT id, source FROM memories WHERE origin_project IS NULL ` +
|
|
28
|
+
`AND (source LIKE 'shared:%' OR source LIKE 'promoted:%')`)
|
|
29
|
+
.all();
|
|
24
30
|
const setOrigin = db.prepare(`UPDATE memories SET origin_project = ? WHERE id = ?`);
|
|
25
31
|
for (const row of sourcedRows) {
|
|
26
32
|
const origin = originFromSource(row.source, homeName);
|
|
@@ -28,14 +34,16 @@ export const v39 = {
|
|
|
28
34
|
continue;
|
|
29
35
|
setOrigin.run(origin, row.id);
|
|
30
36
|
}
|
|
31
|
-
// The global root itself is always user-global (''), whatever surrounds it on disk: a HIPPO_HOME inside a
|
|
37
|
+
// The global root itself is always user-global (''), whatever surrounds it on disk: a HIPPO_HOME inside a
|
|
38
|
+
// dotfiles git repo
|
|
32
39
|
// must not stamp the whole corpus with that repo's name.
|
|
33
40
|
const storeOrigin = isGlobalStoreRoot(hippoRoot)
|
|
34
41
|
? ''
|
|
35
42
|
: deriveOriginProject(path.dirname(hippoRoot));
|
|
36
43
|
db.prepare(`UPDATE memories SET origin_project = ? WHERE origin_project IS NULL`).run(storeOrigin);
|
|
37
44
|
}
|
|
38
|
-
// Rollback-safety guard: a pre-isolation binary would ignore origin_project and the secret veto and resume
|
|
45
|
+
// Rollback-safety guard: a pre-isolation binary would ignore origin_project and the secret veto and resume
|
|
46
|
+
// injecting cross-project rows.
|
|
39
47
|
// 1.24.0 is the first version with isolation; forward-only, never lower an existing minimum.
|
|
40
48
|
raiseMinBinary(db, '1.24.0');
|
|
41
49
|
},
|
|
@@ -48,8 +48,10 @@ const RECALL_TRACES_SCHEMA_SQL = `
|
|
|
48
48
|
export const v40 = {
|
|
49
49
|
version: 40,
|
|
50
50
|
up: (db) => {
|
|
51
|
-
// Retrieval-trace persistence: one trace row per recall, a WITHOUT ROWID results table, append-only outcomes
|
|
52
|
-
//
|
|
51
|
+
// Retrieval-trace persistence: one trace row per recall, a WITHOUT ROWID results table, append-only outcomes
|
|
52
|
+
// (audit_log pruning must not erase them).
|
|
53
|
+
// No min_compatible_binary bump on purpose: old binaries ignore these tables and recordTraceOutcome re-validates
|
|
54
|
+
// trace ids; a bump would lock them out.
|
|
53
55
|
db.exec(RECALL_TRACES_SCHEMA_SQL);
|
|
54
56
|
},
|
|
55
57
|
};
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export const v41 = {
|
|
2
2
|
version: 41,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Rejected-value tombstone: upsertEntryRow refuses writes matching a row's digest. No raw content stored (may be
|
|
5
|
-
//
|
|
4
|
+
// Rejected-value tombstone: upsertEntryRow refuses writes matching a row's digest. No raw content stored (may be
|
|
5
|
+
// secret); no FK: it outlives its row.
|
|
6
|
+
// No min_compatible_binary bump, a deliberate tradeoff: an old binary writes without the guard until upgraded
|
|
7
|
+
// (see MEMORY_ENVELOPE.md).
|
|
6
8
|
db.exec(`
|
|
7
9
|
CREATE TABLE IF NOT EXISTS rejected_values (
|
|
8
10
|
tenant_id TEXT NOT NULL,
|
|
@@ -34,7 +34,8 @@ export const v42 = {
|
|
|
34
34
|
if (!tableHasColumn(db, 'session_handoffs', 'card_id')) {
|
|
35
35
|
db.exec(`ALTER TABLE session_handoffs ADD COLUMN card_id TEXT`);
|
|
36
36
|
}
|
|
37
|
-
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_handoffs_tenant_outcome
|
|
37
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_handoffs_tenant_outcome ` +
|
|
38
|
+
`ON session_handoffs(tenant_id, outcome, created_at DESC)`);
|
|
38
39
|
},
|
|
39
40
|
};
|
|
40
41
|
//# sourceMappingURL=v42.js.map
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export const v44 = {
|
|
2
2
|
version: 44,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Dormant memories (src/store/dormant.ts): with `dormant.enabled`, sleep moves a faded memory here; `hippo
|
|
5
|
-
//
|
|
4
|
+
// Dormant memories (src/store/dormant.ts): with `dormant.enabled`, sleep moves a faded memory here; `hippo
|
|
5
|
+
// dormant restore` writes entry_json back.
|
|
6
|
+
// No FK to memories (the row is gone by design). Additive only: no min_compatible_binary bump, an older binary
|
|
7
|
+
// ignores the table and keeps deleting.
|
|
6
8
|
db.exec(`
|
|
7
9
|
CREATE TABLE IF NOT EXISTS dormant_memories (
|
|
8
10
|
tenant_id TEXT NOT NULL DEFAULT 'default',
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export const v45 = {
|
|
2
2
|
version: 45,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Token ledger (src/store/token-ledger.ts): one row per block of memory text handed to an agent; `event` is
|
|
5
|
-
//
|
|
4
|
+
// Token ledger (src/store/token-ledger.ts): one row per block of memory text handed to an agent; `event` is
|
|
5
|
+
// inject, skip, reset (compaction) or reread.
|
|
6
|
+
// block_hash lets the per-prompt hook skip an unchanged block; rows past retention are pruned on write. Additive:
|
|
7
|
+
// no min_compatible_binary bump.
|
|
6
8
|
db.exec(`
|
|
7
9
|
CREATE TABLE IF NOT EXISTS token_ledger (
|
|
8
10
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export const v49 = {
|
|
2
2
|
version: 49,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Compaction record (src/capture/compaction-record.ts): one row per Claude Code compaction, written before it
|
|
4
|
+
// Compaction record (src/capture/compaction-record.ts): one row per Claude Code compaction, written before it
|
|
5
|
+
// (started)
|
|
5
6
|
// and after it (summarised, done). Not a memory row. Additive only: no min_compatible_binary bump.
|
|
6
7
|
db.exec(`
|
|
7
8
|
CREATE TABLE IF NOT EXISTS compactions (
|
|
@@ -60,8 +60,10 @@ const DELIVERY_EVENTS_SCHEMA_SQL = `
|
|
|
60
60
|
export const v50 = {
|
|
61
61
|
version: 50,
|
|
62
62
|
up: (db) => {
|
|
63
|
-
// Per-turn delivery events (src/store/recall-trace.ts). Additive only: no min_compatible_binary bump; rollback
|
|
64
|
-
//
|
|
63
|
+
// Per-turn delivery events (src/store/recall-trace.ts). Additive only: no min_compatible_binary bump; rollback
|
|
64
|
+
// drops both tables
|
|
65
|
+
// and sets schema_version back to 49. No CHECK on enum columns since SQLite cannot alter one;
|
|
66
|
+
// delivery-recorder.ts unions are the allowlist.
|
|
65
67
|
db.exec(DELIVERY_EVENTS_SCHEMA_SQL);
|
|
66
68
|
},
|
|
67
69
|
};
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export const v51 = {
|
|
2
2
|
version: 51,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Both indexes serve loadAmbientCandidates (src/store/candidates.ts); their WHERE text must match its SQL for the
|
|
5
|
-
//
|
|
4
|
+
// Both indexes serve loadAmbientCandidates (src/store/candidates.ts); their WHERE text must match its SQL for the
|
|
5
|
+
// planner to pick them.
|
|
6
|
+
// The drift index stays empty on a healthy store, so the drift probe is one index seek instead of a tenant scan.
|
|
7
|
+
// Additive only.
|
|
6
8
|
db.exec(`
|
|
7
9
|
CREATE INDEX IF NOT EXISTS idx_memories_pinned
|
|
8
10
|
ON memories(tenant_id, created, id) WHERE pinned = 1;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { MEMORY_VECTORS_DDL } from '../vector-store.js';
|
|
2
2
|
export const v52 = {
|
|
3
3
|
version: 52,
|
|
4
|
-
// Vectors move out of embeddings.json so hybrid search reads only the rows it ranks. Additive only; the JSON import
|
|
4
|
+
// Vectors move out of embeddings.json so hybrid search reads only the rows it ranks. Additive only; the JSON import
|
|
5
|
+
// runs after COMMIT.
|
|
5
6
|
up: (db) => db.exec(MEMORY_VECTORS_DDL),
|
|
6
7
|
};
|
|
7
8
|
//# sourceMappingURL=v52.js.map
|
|
@@ -2,14 +2,18 @@ import { tableHasColumn, tableExists } from '../tables.js';
|
|
|
2
2
|
export const v53 = {
|
|
3
3
|
version: 53,
|
|
4
4
|
up: (db) => {
|
|
5
|
-
// Self-service keys record who minted them and when they
|
|
6
|
-
//
|
|
5
|
+
// Self-service keys record who minted them and when they
|
|
6
|
+
// stop working; both stay null for keys minted before this.
|
|
7
|
+
// No floor raise here: a store with no expiring key is safe
|
|
8
|
+
// for older binaries, so the first expiring key raises it.
|
|
7
9
|
if (tableExists(db, 'api_keys')) {
|
|
8
|
-
if (!tableHasColumn(db, 'api_keys', 'owner_subject'))
|
|
10
|
+
if (!tableHasColumn(db, 'api_keys', 'owner_subject')) {
|
|
9
11
|
db.exec(`ALTER TABLE api_keys ADD COLUMN owner_subject TEXT`);
|
|
12
|
+
}
|
|
10
13
|
if (!tableHasColumn(db, 'api_keys', 'expires_at'))
|
|
11
14
|
db.exec(`ALTER TABLE api_keys ADD COLUMN expires_at TEXT`);
|
|
12
|
-
db.exec(`CREATE INDEX IF NOT EXISTS idx_api_keys_live_owner
|
|
15
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_api_keys_live_owner ` +
|
|
16
|
+
`ON api_keys(tenant_id, owner_subject) WHERE revoked_at IS NULL`);
|
|
13
17
|
}
|
|
14
18
|
},
|
|
15
19
|
};
|
|
@@ -14,7 +14,8 @@ export const v54 = {
|
|
|
14
14
|
version: 54,
|
|
15
15
|
up: (db) => {
|
|
16
16
|
// Rows from before this stay NULL: no backfill, so they never match an owner's key.
|
|
17
|
-
// No floor raise here: the first session bind or owner snapshot raises it, so an unused store stays open to older
|
|
17
|
+
// No floor raise here: the first session bind or owner snapshot raises it, so an unused store stays open to older
|
|
18
|
+
// binaries.
|
|
18
19
|
for (const [t, c] of OWNER_COLUMNS) {
|
|
19
20
|
if (tableExists(db, t) && !tableHasColumn(db, t, c))
|
|
20
21
|
db.exec(`ALTER TABLE ${t} ADD COLUMN ${c} TEXT`);
|
|
@@ -5,10 +5,12 @@ export const v55 = {
|
|
|
5
5
|
// No backfill and no floor raise: an older binary names its INSERT columns, so it still writes.
|
|
6
6
|
if (!tableExists(db, 'delivery_events'))
|
|
7
7
|
return;
|
|
8
|
-
if (!tableHasColumn(db, 'delivery_events', 'tool_use_id'))
|
|
8
|
+
if (!tableHasColumn(db, 'delivery_events', 'tool_use_id')) {
|
|
9
9
|
db.exec('ALTER TABLE delivery_events ADD COLUMN tool_use_id TEXT');
|
|
10
|
-
|
|
10
|
+
}
|
|
11
|
+
if (!tableHasColumn(db, 'delivery_events', 'failure_id')) {
|
|
11
12
|
db.exec('ALTER TABLE delivery_events ADD COLUMN failure_id INTEGER');
|
|
13
|
+
}
|
|
12
14
|
db.exec(`CREATE UNIQUE INDEX IF NOT EXISTS idx_delivery_events_tool_call
|
|
13
15
|
ON delivery_events(tenant_id, session_id, tool_use_id)
|
|
14
16
|
WHERE tool_use_id IS NOT NULL AND turn_seq IS NOT NULL`);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { tableExists } from '../tables.js';
|
|
2
|
+
const OBJECT_TABLES = [
|
|
3
|
+
'decisions',
|
|
4
|
+
'incidents',
|
|
5
|
+
'processes',
|
|
6
|
+
'policies',
|
|
7
|
+
'skills',
|
|
8
|
+
'project_briefs',
|
|
9
|
+
'customer_notes',
|
|
10
|
+
];
|
|
11
|
+
export const v56 = {
|
|
12
|
+
version: 56,
|
|
13
|
+
up: (db) => {
|
|
14
|
+
// The list order is part of the key, so a page by status reads in index order with no sort; the old (tenant_id,
|
|
15
|
+
// status) index stays.
|
|
16
|
+
for (const table of OBJECT_TABLES) {
|
|
17
|
+
if (!tableExists(db, table))
|
|
18
|
+
continue;
|
|
19
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_${table}_tenant_status_created ` +
|
|
20
|
+
`ON ${table}(tenant_id, status, created_at DESC, id DESC)`);
|
|
21
|
+
}
|
|
22
|
+
// Source leads so a tenant-only query cannot pick this over idx_memories_tenant_created and change the order of
|
|
23
|
+
// its unsorted rows;
|
|
24
|
+
// created and id let a per-source read come back in store order with no sort.
|
|
25
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_memories_source_tenant_created ON memories(source, tenant_id, created, id)');
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=v56.js.map
|
package/dist/db/open.d.ts
CHANGED
|
@@ -1,32 +1,42 @@
|
|
|
1
1
|
import { type DatabaseSyncLike } from './sqlite.js';
|
|
2
2
|
import { getHippoDbPath, type OpenedDb } from './connect.js';
|
|
3
3
|
export { getHippoDbPath };
|
|
4
|
-
/** Lock wait for hook commands: under the 5 s prompt-hook budget even after a few skipped writes, and far above a
|
|
4
|
+
/** Lock wait for hook commands: under the 5 s prompt-hook budget even after a few skipped writes, and far above a
|
|
5
|
+
* normal write's hold. */
|
|
5
6
|
export declare const HOOK_DB_WAIT_MS = 1000;
|
|
6
|
-
/** Lock wait inside an HTTP request: SQLite waits synchronously, so a long wait would stall every other request on
|
|
7
|
+
/** Lock wait inside an HTTP request: SQLite waits synchronously, so a long wait would stall every other request on
|
|
8
|
+
* the event loop. */
|
|
7
9
|
export declare const SERVER_DB_WAIT_MS = 250;
|
|
8
10
|
/** A busy store made a command skip work: warn once per process (the holder is usually `hippo sleep`). */
|
|
9
11
|
export declare function noteStoreBusy(skipped: string): void;
|
|
10
|
-
/** Runs `fn` with one handle per store: openHippoDb reuses it and closeHippoDb leaves it open until `fn` settles or the
|
|
12
|
+
/** Runs `fn` with one handle per store: openHippoDb reuses it and closeHippoDb leaves it open until `fn` settles or the
|
|
13
|
+
* process exits.
|
|
11
14
|
* `busyWaitMs` is the lock wait of every open inside `fn` that does not pass its own. */
|
|
12
15
|
export declare function withSharedStoreHandles<T>(fn: () => T | Promise<T>, opts?: {
|
|
13
16
|
busyWaitMs?: number;
|
|
14
17
|
}): Promise<T>;
|
|
15
|
-
/** Lock wait for each of sleep's short write transactions, even inside a server request: a run stops only on a
|
|
18
|
+
/** Lock wait for each of sleep's short write transactions, even inside a server request: a run stops only on a
|
|
19
|
+
* writer that holds the lock longer. */
|
|
16
20
|
export declare const SLEEP_DB_WAIT_MS = 5000;
|
|
17
|
-
/** The lock wait an open here would get without its own `busyWaitMs`: the request scope's; undefined outside every
|
|
21
|
+
/** The lock wait an open here would get without its own `busyWaitMs`: the request scope's; undefined outside every
|
|
22
|
+
* scope. */
|
|
18
23
|
export declare function scopedBusyWait(): number | undefined;
|
|
19
|
-
/** Runs `fn` so that every hippo.db open inside it, across awaits, throws; otherwise a missed port would create and
|
|
24
|
+
/** Runs `fn` so that every hippo.db open inside it, across awaits, throws; otherwise a missed port would create and
|
|
25
|
+
* write a hippo.db nobody reads. */
|
|
20
26
|
export declare function withSqliteBlocked<T>(storeKind: string, fn: () => T): T;
|
|
21
|
-
/** Runs `fn` with hippo.db opens allowed again, for a store whose own methods are backed by hippo.db, or a copy that
|
|
27
|
+
/** Runs `fn` with hippo.db opens allowed again, for a store whose own methods are backed by hippo.db, or a copy that
|
|
28
|
+
* reads the old hippo.db. */
|
|
22
29
|
export declare function withSqliteAllowed<T>(fn: () => T): T;
|
|
23
|
-
/** Runs `fn` so that a hippo.db open on this thread throws, across awaits; a block of another store, when one is
|
|
30
|
+
/** Runs `fn` so that a hippo.db open on this thread throws, across awaits; a block of another store, when one is
|
|
31
|
+
* open, already refuses and stays as it is. */
|
|
24
32
|
export declare function withSqliteOffLoop<T>(fn: () => T): T;
|
|
25
|
-
/** Leaves withSqliteOffLoop's block and nothing else: another store's block and the folder marker still refuse,
|
|
33
|
+
/** Leaves withSqliteOffLoop's block and nothing else: another store's block and the folder marker still refuse,
|
|
34
|
+
* which withSqliteAllowed would waive. */
|
|
26
35
|
export declare function outsideSqliteOffLoop<T>(fn: () => T): T;
|
|
27
36
|
/** store init --db, store copy --db and serve --db write this file in the hippo root; its text is the store kind. */
|
|
28
37
|
export declare const OTHER_STORE_MARKER = "other-store";
|
|
29
|
-
/** Throws where hippo.db must not open; checked on every open, not cached, since the marker can appear while a
|
|
38
|
+
/** Throws where hippo.db must not open; checked on every open, not cached, since the marker can appear while a
|
|
39
|
+
* process runs. */
|
|
30
40
|
export declare function assertSqliteAllowed(hippoRoot: string): void;
|
|
31
41
|
/** `busyWaitMs` shortens every lock wait of this open, for a hook that must finish inside its own timeout. */
|
|
32
42
|
export declare function openHippoDb(hippoRoot: string, opts?: {
|
|
@@ -36,9 +46,11 @@ export declare function openHippoDb(hippoRoot: string, opts?: {
|
|
|
36
46
|
export declare function openHippoDbWithFacts(hippoRoot: string, opts?: {
|
|
37
47
|
busyWaitMs?: number;
|
|
38
48
|
}): OpenedDb;
|
|
39
|
-
/** Open an existing store without changing it: no mkdir, WAL switch, migration or mirror cleanup. Throws when
|
|
49
|
+
/** Open an existing store without changing it: no mkdir, WAL switch, migration or mirror cleanup. Throws when
|
|
50
|
+
* hippo.db is missing. */
|
|
40
51
|
export declare function openHippoDbReadOnly(hippoRoot: string): DatabaseSyncLike;
|
|
41
|
-
/** Runs `fn` on an existing hippo.db opened without migrations, for a repair of a store whose schema is behind;
|
|
52
|
+
/** Runs `fn` on an existing hippo.db opened without migrations, for a repair of a store whose schema is behind;
|
|
53
|
+
* closes it after. */
|
|
42
54
|
export declare function withUnmigratedDb<T>(hippoRoot: string, readOnly: boolean, fn: (db: DatabaseSyncLike) => T): T;
|
|
43
55
|
export declare function closeHippoDb(db: DatabaseSyncLike): void;
|
|
44
56
|
//# sourceMappingURL=open.d.ts.map
|
package/dist/db/open.js
CHANGED
|
@@ -10,43 +10,52 @@ import { connectWithFacts, getHippoDbPath } from './connect.js';
|
|
|
10
10
|
import { currentRequestStores, isScopedHandle, runWithRequestStores } from './request-stores.js';
|
|
11
11
|
import { OtherStoreFolderError, SqliteBlockedError } from '../util/sqlite-blocked.js';
|
|
12
12
|
export { getHippoDbPath };
|
|
13
|
-
/** Lock wait for hook commands: under the 5 s prompt-hook budget even after a few skipped writes, and far above a
|
|
13
|
+
/** Lock wait for hook commands: under the 5 s prompt-hook budget even after a few skipped writes, and far above a
|
|
14
|
+
* normal write's hold. */
|
|
14
15
|
export const HOOK_DB_WAIT_MS = 1000;
|
|
15
|
-
/** Lock wait inside an HTTP request: SQLite waits synchronously, so a long wait would stall every other request on
|
|
16
|
+
/** Lock wait inside an HTTP request: SQLite waits synchronously, so a long wait would stall every other request on
|
|
17
|
+
* the event loop. */
|
|
16
18
|
export const SERVER_DB_WAIT_MS = 250;
|
|
17
19
|
/** A busy store made a command skip work: warn once per process (the holder is usually `hippo sleep`). */
|
|
18
20
|
export function noteStoreBusy(skipped) {
|
|
19
21
|
log.once('store-busy', 'warn', `store busy (another hippo process holds the write lock); ${skipped}`);
|
|
20
22
|
currentRequestStores()?.noteBusy();
|
|
21
23
|
}
|
|
22
|
-
/** Runs `fn` with one handle per store: openHippoDb reuses it and closeHippoDb leaves it open until `fn` settles or the
|
|
24
|
+
/** Runs `fn` with one handle per store: openHippoDb reuses it and closeHippoDb leaves it open until `fn` settles or the
|
|
25
|
+
* process exits.
|
|
23
26
|
* `busyWaitMs` is the lock wait of every open inside `fn` that does not pass its own. */
|
|
24
27
|
export async function withSharedStoreHandles(fn, opts) {
|
|
25
28
|
return runWithRequestStores(fn, { busyWaitMs: opts?.busyWaitMs });
|
|
26
29
|
}
|
|
27
|
-
/** Lock wait for each of sleep's short write transactions, even inside a server request: a run stops only on a
|
|
30
|
+
/** Lock wait for each of sleep's short write transactions, even inside a server request: a run stops only on a
|
|
31
|
+
* writer that holds the lock longer. */
|
|
28
32
|
export const SLEEP_DB_WAIT_MS = 5000;
|
|
29
|
-
/** The lock wait an open here would get without its own `busyWaitMs`: the request scope's; undefined outside every
|
|
33
|
+
/** The lock wait an open here would get without its own `busyWaitMs`: the request scope's; undefined outside every
|
|
34
|
+
* scope. */
|
|
30
35
|
export function scopedBusyWait() {
|
|
31
36
|
return currentRequestStores()?.busyWaitMs;
|
|
32
37
|
}
|
|
33
38
|
const sqliteBlockedBy = new AsyncLocalStorage();
|
|
34
|
-
/** Runs `fn` so that every hippo.db open inside it, across awaits, throws; otherwise a missed port would create and
|
|
39
|
+
/** Runs `fn` so that every hippo.db open inside it, across awaits, throws; otherwise a missed port would create and
|
|
40
|
+
* write a hippo.db nobody reads. */
|
|
35
41
|
export function withSqliteBlocked(storeKind, fn) {
|
|
36
42
|
return sqliteBlockedBy.run(storeKind, fn);
|
|
37
43
|
}
|
|
38
|
-
/** Runs `fn` with hippo.db opens allowed again, for a store whose own methods are backed by hippo.db, or a copy that
|
|
44
|
+
/** Runs `fn` with hippo.db opens allowed again, for a store whose own methods are backed by hippo.db, or a copy that
|
|
45
|
+
* reads the old hippo.db. */
|
|
39
46
|
export function withSqliteAllowed(fn) {
|
|
40
47
|
return sqliteBlockedBy.exit(() => markerWaived.run(true, fn));
|
|
41
48
|
}
|
|
42
49
|
// Not a store kind: the block of a route whose SQLite work belongs on a worker thread, under the hippo.db store itself.
|
|
43
50
|
const OFF_LOOP = 'sqlite (off the event loop)';
|
|
44
51
|
const OFF_LOOP_MESSAGE = 'hippo.db was opened on the server thread by a route whose SQLite work runs on a worker thread';
|
|
45
|
-
/** Runs `fn` so that a hippo.db open on this thread throws, across awaits; a block of another store, when one is
|
|
52
|
+
/** Runs `fn` so that a hippo.db open on this thread throws, across awaits; a block of another store, when one is
|
|
53
|
+
* open, already refuses and stays as it is. */
|
|
46
54
|
export function withSqliteOffLoop(fn) {
|
|
47
55
|
return sqliteBlockedBy.getStore() === undefined ? sqliteBlockedBy.run(OFF_LOOP, fn) : fn();
|
|
48
56
|
}
|
|
49
|
-
/** Leaves withSqliteOffLoop's block and nothing else: another store's block and the folder marker still refuse,
|
|
57
|
+
/** Leaves withSqliteOffLoop's block and nothing else: another store's block and the folder marker still refuse,
|
|
58
|
+
* which withSqliteAllowed would waive. */
|
|
50
59
|
export function outsideSqliteOffLoop(fn) {
|
|
51
60
|
return sqliteBlockedBy.getStore() === OFF_LOOP ? sqliteBlockedBy.exit(fn) : fn();
|
|
52
61
|
}
|
|
@@ -59,11 +68,12 @@ function markerKind(marker) {
|
|
|
59
68
|
return readFileSync(marker, 'utf8').trim() || 'unknown';
|
|
60
69
|
}
|
|
61
70
|
catch (err) {
|
|
62
|
-
log.
|
|
71
|
+
log.warn(`${marker} is unreadable, so its store kind reads as unknown: ${errorMessage(err)}`, errorFields(err));
|
|
63
72
|
return 'unknown';
|
|
64
73
|
}
|
|
65
74
|
}
|
|
66
|
-
/** Throws where hippo.db must not open; checked on every open, not cached, since the marker can appear while a
|
|
75
|
+
/** Throws where hippo.db must not open; checked on every open, not cached, since the marker can appear while a
|
|
76
|
+
* process runs. */
|
|
67
77
|
export function assertSqliteAllowed(hippoRoot) {
|
|
68
78
|
const storeKind = sqliteBlockedBy.getStore();
|
|
69
79
|
if (storeKind === OFF_LOOP)
|
|
@@ -86,7 +96,8 @@ export function openHippoDbWithFacts(hippoRoot, opts) {
|
|
|
86
96
|
const stores = currentRequestStores();
|
|
87
97
|
return stores ? stores.getWithFacts(hippoRoot, opts) : connectWithFacts(hippoRoot, opts?.busyWaitMs);
|
|
88
98
|
}
|
|
89
|
-
/** Open an existing store without changing it: no mkdir, WAL switch, migration or mirror cleanup. Throws when
|
|
99
|
+
/** Open an existing store without changing it: no mkdir, WAL switch, migration or mirror cleanup. Throws when
|
|
100
|
+
* hippo.db is missing. */
|
|
90
101
|
export function openHippoDbReadOnly(hippoRoot) {
|
|
91
102
|
assertSqliteAllowed(hippoRoot);
|
|
92
103
|
const db = new DatabaseSync(getHippoDbPath(hippoRoot), { readOnly: true });
|
|
@@ -106,7 +117,8 @@ export function openHippoDbReadOnly(hippoRoot) {
|
|
|
106
117
|
throw error;
|
|
107
118
|
}
|
|
108
119
|
}
|
|
109
|
-
/** Runs `fn` on an existing hippo.db opened without migrations, for a repair of a store whose schema is behind;
|
|
120
|
+
/** Runs `fn` on an existing hippo.db opened without migrations, for a repair of a store whose schema is behind;
|
|
121
|
+
* closes it after. */
|
|
110
122
|
export function withUnmigratedDb(hippoRoot, readOnly, fn) {
|
|
111
123
|
// Skips openHippoDb, so it takes the same refusal itself.
|
|
112
124
|
assertSqliteAllowed(hippoRoot);
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Physics state persistence: particle state (position, velocity, mass, charge, temperature) in SQLite, with BLOB
|
|
3
|
+
* columns for 384-dim vectors.
|
|
4
|
+
*/
|
|
2
5
|
import type { DatabaseSyncLike } from './index.js';
|
|
3
6
|
import type { MemoryEntry } from '../core/memory.js';
|
|
4
7
|
import type { PhysicsParticle } from '../core/physics.js';
|
|
@@ -12,8 +15,9 @@ export declare function loadPhysicsState(db: DatabaseSyncLike, memoryIds?: strin
|
|
|
12
15
|
* Save physics state for multiple particles (batch upsert).
|
|
13
16
|
*/
|
|
14
17
|
export declare function savePhysicsState(db: DatabaseSyncLike, particles: PhysicsParticle[]): void;
|
|
15
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Drops every particle, then seeds one per entry that has an embedding; `entries` may be read lazily, as each batch is
|
|
20
|
+
* written before the next is read.
|
|
21
|
+
*/
|
|
16
22
|
export declare function resetAllPhysicsState(db: DatabaseSyncLike, entries: Iterable<MemoryEntry>, embeddingIndex: Record<string, number[]>, now?: Date): number;
|
|
17
|
-
/** Refresh mass, charge and temperature for existing particles from current memory attributes (called during consolidation). */
|
|
18
|
-
export declare function refreshParticleProperties(particles: PhysicsParticle[], entries: Map<string, MemoryEntry>, now?: Date): void;
|
|
19
23
|
//# sourceMappingURL=physics-state.d.ts.map
|
package/dist/db/physics-state.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Physics state persistence: particle state (position, velocity, mass, charge, temperature) in SQLite, with BLOB
|
|
3
|
+
* columns for 384-dim vectors.
|
|
4
|
+
*/
|
|
5
|
+
import { evalNow } from '../core/ablation.js';
|
|
3
6
|
import { withWriteScope } from './busy.js';
|
|
4
|
-
import {
|
|
5
|
-
import { calculateStrength } from '../core/memory.js';
|
|
6
|
-
import { DAY_MS } from '../util/time.js';
|
|
7
|
+
import { initializeParticle } from '../core/physics.js';
|
|
7
8
|
import { placeholders } from '../util/sql.js';
|
|
8
9
|
import { bufferToFloat32, float32ToBuffer } from '../util/vector-codec.js';
|
|
9
10
|
// Schema migration
|
|
@@ -68,7 +69,9 @@ export function savePhysicsState(db, particles) {
|
|
|
68
69
|
if (particles.length === 0)
|
|
69
70
|
return;
|
|
70
71
|
const stmt = db.prepare(`
|
|
71
|
-
INSERT INTO memory_physics (
|
|
72
|
+
INSERT INTO memory_physics (
|
|
73
|
+
memory_id, position_blob, velocity_blob, mass, charge, temperature, last_simulation, updated_at
|
|
74
|
+
)
|
|
72
75
|
VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'))
|
|
73
76
|
ON CONFLICT(memory_id) DO UPDATE SET
|
|
74
77
|
position_blob = excluded.position_blob,
|
|
@@ -86,7 +89,10 @@ export function savePhysicsState(db, particles) {
|
|
|
86
89
|
});
|
|
87
90
|
}
|
|
88
91
|
const RESET_BATCH = 64;
|
|
89
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Drops every particle, then seeds one per entry that has an embedding; `entries` may be read lazily, as each batch is
|
|
94
|
+
* written before the next is read.
|
|
95
|
+
*/
|
|
90
96
|
export function resetAllPhysicsState(db, entries, embeddingIndex, now = evalNow()) {
|
|
91
97
|
db.exec('DELETE FROM memory_physics');
|
|
92
98
|
// One transaction for every batch, so a failure part way leaves no particles rather than some.
|
|
@@ -109,17 +115,4 @@ export function resetAllPhysicsState(db, entries, embeddingIndex, now = evalNow(
|
|
|
109
115
|
return count;
|
|
110
116
|
});
|
|
111
117
|
}
|
|
112
|
-
/** Refresh mass, charge and temperature for existing particles from current memory attributes (called during consolidation). */
|
|
113
|
-
export function refreshParticleProperties(particles, entries, now = evalNow()) {
|
|
114
|
-
for (const p of particles) {
|
|
115
|
-
const entry = entries.get(p.memoryId);
|
|
116
|
-
if (!entry)
|
|
117
|
-
continue;
|
|
118
|
-
const strength = calculateStrength(entry, now, { ablation: strengthAblation() });
|
|
119
|
-
const ageDays = (now.getTime() - new Date(entry.created).getTime()) / DAY_MS;
|
|
120
|
-
p.mass = computeMass(strength, entry.retrieval_count);
|
|
121
|
-
p.charge = computeCharge(entry.emotional_valence);
|
|
122
|
-
p.temperature = computeTemperature(ageDays, 1.0);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
118
|
//# sourceMappingURL=physics-state.js.map
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { DatabaseSyncLike } from './index.js';
|
|
2
|
-
/** Path A backfill cleanup: delete markdown mirrors (<hippoRoot>/<layer>/<id>.md) of rows archived before redaction, so
|
|
3
|
-
*
|
|
2
|
+
/** Path A backfill cleanup: delete markdown mirrors (<hippoRoot>/<layer>/<id>.md) of rows archived before redaction, so
|
|
3
|
+
* RTBF holds for historical archives.
|
|
4
|
+
* Tracked by raw_archive.mirror_cleaned_at: set only on success, so a failed unlink retries next connection. Returns
|
|
5
|
+
* whether all pending rows were cleaned. */
|
|
4
6
|
export declare function cleanupArchivedMirrors(hippoRoot: string, db: DatabaseSyncLike): boolean;
|
|
5
7
|
//# sourceMappingURL=raw-archive-mirror-cleanup.d.ts.map
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { errorMessage, log } from '../util/log.js';
|
|
3
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
4
4
|
const LAYERS = ['episodic', 'buffer', 'semantic'];
|
|
5
5
|
const MAX_WARN_LOGS = 5;
|
|
6
|
-
/** Path A backfill cleanup: delete markdown mirrors (<hippoRoot>/<layer>/<id>.md) of rows archived before redaction, so
|
|
7
|
-
*
|
|
6
|
+
/** Path A backfill cleanup: delete markdown mirrors (<hippoRoot>/<layer>/<id>.md) of rows archived before redaction, so
|
|
7
|
+
* RTBF holds for historical archives.
|
|
8
|
+
* Tracked by raw_archive.mirror_cleaned_at: set only on success, so a failed unlink retries next connection. Returns
|
|
9
|
+
* whether all pending rows were cleaned. */
|
|
8
10
|
export function cleanupArchivedMirrors(hippoRoot, db) {
|
|
9
11
|
// SAFETY: the SELECT above names exactly one column, memory_id (raw_archive.memory_id
|
|
10
12
|
// is NOT NULL TEXT), so the row shape matches this assertion.
|
|
@@ -29,7 +31,7 @@ export function cleanupArchivedMirrors(hippoRoot, db) {
|
|
|
29
31
|
catch (err) {
|
|
30
32
|
allOk = false;
|
|
31
33
|
if (warnCount < MAX_WARN_LOGS) {
|
|
32
|
-
log.warn(`cleanupArchivedMirrors: unlink failed for ${filePath} (will retry on next DB open): ${errorMessage(err)}
|
|
34
|
+
log.warn(`cleanupArchivedMirrors: unlink failed for ${filePath} (will retry on next DB open): ${errorMessage(err)}`, errorFields(err));
|
|
33
35
|
warnCount += 1;
|
|
34
36
|
}
|
|
35
37
|
}
|
|
@@ -4,9 +4,15 @@ import { type RequestScope } from '../util/request-scope.js';
|
|
|
4
4
|
export interface RequestStoresOptions {
|
|
5
5
|
/** Lock wait of every open in the scope that does not pass its own. */
|
|
6
6
|
readonly busyWaitMs?: number;
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Set for hook scopes: after one lock wait runs out, {@link RequestStores.noteBusy} makes the scope's later writes
|
|
9
|
+
* skip at once.
|
|
10
|
+
*/
|
|
8
11
|
readonly failFastWhenBusy?: boolean;
|
|
9
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* The store whose open-time setup another connection has already run, so an open in this scope skips it: a store
|
|
14
|
+
* worker's reader, which cannot write it.
|
|
15
|
+
*/
|
|
10
16
|
readonly setupDoneFor?: string;
|
|
11
17
|
}
|
|
12
18
|
/** The handles one request opened, keyed by resolved store path and lock wait. */
|
|
@@ -31,13 +37,21 @@ export declare class RequestStores implements RequestScope {
|
|
|
31
37
|
noteBusy(): void;
|
|
32
38
|
close(): void;
|
|
33
39
|
}
|
|
34
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Runs `fn` in a request scope whose handles close when `fn` settles; inside an open scope `fn` joins it and `opts` is
|
|
42
|
+
* ignored.
|
|
43
|
+
*/
|
|
35
44
|
export declare function runWithRequestStores<T>(fn: () => T | Promise<T>, opts?: RequestStoresOptions): Promise<T>;
|
|
36
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* runWithRequestStores for a synchronous `fn`, so a batch called from outside any request still opens each store once.
|
|
47
|
+
*/
|
|
37
48
|
export declare function withRequestStoresSync<T>(fn: () => T): T;
|
|
38
49
|
/** The scope this code runs in, if any. A closed scope still answers: its `get` falls through to a plain open. */
|
|
39
50
|
export declare function currentRequestStores(): RequestStores | undefined;
|
|
40
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Runs `fn` outside every store scope, for a connection that must outlive the request that happens to open it; its log
|
|
53
|
+
* lines keep the request's id.
|
|
54
|
+
*/
|
|
41
55
|
export declare function outsideRequestStores<T>(fn: () => T): T;
|
|
42
56
|
/** Whether a scope owns `db` and will close it itself. */
|
|
43
57
|
export declare function isScopedHandle(db: DatabaseSyncLike): boolean;
|