hippo-memory 1.70.0 → 1.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/agent-memories/apply.d.ts +0 -11
- package/dist/agent-memories/apply.js +6 -21
- package/dist/agent-memories/claude-code.d.ts +4 -2
- package/dist/agent-memories/claude-code.js +15 -6
- package/dist/agent-memories/codex.js +1 -1
- package/dist/agent-memories/copilot.d.ts +1 -3
- package/dist/agent-memories/copilot.js +1 -17
- package/dist/agent-memories/files.js +23 -12
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/project-folds.d.ts +10 -0
- package/dist/agent-memories/project-folds.js +34 -0
- package/dist/agent-memories/report.js +2 -1
- package/dist/agent-memories/sync.d.ts +4 -2
- package/dist/agent-memories/sync.js +18 -11
- package/dist/api/assemble.d.ts +7 -44
- package/dist/api/assemble.js +3 -23
- package/dist/api/audit.d.ts +33 -1
- package/dist/api/audit.js +48 -1
- package/dist/api/auth.d.ts +20 -26
- package/dist/api/auth.js +43 -29
- package/dist/api/auto-sleep.d.ts +5 -2
- package/dist/api/auto-sleep.js +9 -5
- package/dist/api/availability.d.ts +2 -15
- package/dist/api/availability.js +4 -18
- package/dist/api/cards.d.ts +42 -0
- package/dist/api/cards.js +52 -0
- package/dist/api/conflicts.d.ts +28 -0
- package/dist/api/conflicts.js +61 -0
- package/dist/api/context-render.js +4 -3
- package/dist/api/context-select.js +12 -15
- package/dist/api/context-types.d.ts +10 -35
- package/dist/api/context.d.ts +5 -22
- package/dist/api/context.js +38 -46
- package/dist/api/continuity.d.ts +47 -0
- package/dist/api/continuity.js +66 -0
- package/dist/{cli → api}/correction-latency.d.ts +2 -14
- package/dist/{cli → api}/correction-latency.js +2 -14
- package/dist/api/dormant.d.ts +5 -21
- package/dist/api/dormant.js +11 -28
- package/dist/api/drill-down.d.ts +7 -46
- package/dist/api/drill-down.js +6 -27
- package/dist/api/embeddings.d.ts +17 -0
- package/dist/api/embeddings.js +28 -0
- package/dist/api/error-reply.d.ts +8 -0
- package/dist/api/error-reply.js +21 -0
- package/dist/api/forget.d.ts +11 -26
- package/dist/api/forget.js +23 -35
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +5 -9
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +6 -2
- package/dist/api/index.js +6 -2
- package/dist/api/instruction-detect.js +21 -6
- package/dist/api/learn.d.ts +4 -0
- package/dist/api/learn.js +53 -27
- package/dist/api/ledger-db.d.ts +2 -5
- package/dist/api/ledger-db.js +5 -35
- package/dist/api/memories.d.ts +23 -0
- package/dist/api/memories.js +46 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.js +5 -3
- package/dist/api/outcome.js +1 -1
- package/dist/api/pilot-arm.d.ts +1 -11
- package/dist/api/pilot-arm.js +5 -45
- package/dist/api/predictions.d.ts +11 -0
- package/dist/api/predictions.js +24 -0
- package/dist/api/projects.d.ts +21 -0
- package/dist/api/projects.js +24 -0
- package/dist/api/promote.d.ts +13 -17
- package/dist/api/promote.js +12 -20
- package/dist/api/prompt-hook.d.ts +19 -6
- package/dist/api/prompt-hook.js +54 -13
- package/dist/api/provenance-coverage.d.ts +14 -0
- package/dist/{cli → api}/provenance-coverage.js +2 -6
- package/dist/api/recall-cli.d.ts +58 -0
- package/dist/api/recall-cli.js +103 -0
- package/dist/api/recall-core.js +17 -9
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +17 -84
- package/dist/api/recall-history.js +15 -88
- package/dist/api/recall-pipeline.d.ts +2 -3
- package/dist/api/recall-pipeline.js +21 -15
- package/dist/api/recall-request.js +1 -1
- package/dist/api/recall-types.d.ts +64 -304
- package/dist/api/recall.d.ts +3 -34
- package/dist/api/recall.js +63 -89
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +20 -2
- package/dist/api/remember.js +16 -3
- package/dist/api/session-end.d.ts +22 -0
- package/dist/api/session-end.js +101 -0
- package/dist/api/sleep-run.d.ts +2 -4
- package/dist/api/sleep-run.js +28 -28
- package/dist/api/sleep.d.ts +9 -28
- package/dist/api/status.d.ts +24 -0
- package/dist/api/status.js +40 -0
- package/dist/api/store-init.d.ts +4 -0
- package/dist/api/store-init.js +9 -0
- package/dist/api/tokens.d.ts +3 -10
- package/dist/api/tokens.js +4 -11
- package/dist/api/types.d.ts +8 -29
- package/dist/api/types.js +10 -23
- package/dist/capture/caller-session.d.ts +0 -3
- package/dist/capture/caller-session.js +1 -12
- package/dist/capture/capture-error.d.ts +2 -2
- package/dist/capture/capture-error.js +23 -18
- package/dist/capture/codex-patch.js +3 -1
- package/dist/capture/command.d.ts +4 -12
- package/dist/capture/command.js +39 -114
- package/dist/capture/compact.d.ts +4 -15
- package/dist/capture/compact.js +26 -30
- package/dist/capture/compaction-items-caller.js +11 -20
- package/dist/capture/compaction-record.d.ts +7 -93
- package/dist/capture/compaction-record.js +34 -399
- package/dist/capture/compaction-spool.d.ts +5 -3
- package/dist/capture/compaction-spool.js +21 -7
- package/dist/capture/copilot-transcript.d.ts +2 -1
- package/dist/capture/copilot-transcript.js +2 -1
- package/dist/capture/extract.d.ts +5 -2
- package/dist/capture/extract.js +4 -3
- package/dist/capture/failure-caller.d.ts +1 -1
- package/dist/capture/failure-caller.js +21 -16
- package/dist/capture/failure-reading.d.ts +2 -1
- package/dist/capture/failure-reading.js +7 -9
- package/dist/capture/pre-compact-caller.js +5 -4
- package/dist/capture/session-digest.d.ts +1 -1
- package/dist/capture/session-digest.js +17 -10
- package/dist/capture/session-end-caller.js +2 -1
- package/dist/capture/session-worker.js +3 -4
- package/dist/capture/transcript.d.ts +4 -11
- package/dist/capture/transcript.js +10 -21
- package/dist/capture/working-state.d.ts +4 -2
- package/dist/capture/working-state.js +4 -2
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +1 -59
- package/dist/cli/audit-prune.js +2 -61
- package/dist/cli/audit.d.ts +1 -1
- package/dist/cli/audit.js +42 -43
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +61 -44
- package/dist/cli/briefs.d.ts +1 -4
- package/dist/cli/briefs.js +42 -301
- package/dist/cli/card.d.ts +2 -2
- package/dist/cli/card.js +63 -56
- package/dist/cli/client.d.ts +12 -27
- package/dist/cli/client.js +41 -44
- package/dist/cli/compact-resume-payload.js +4 -3
- package/dist/cli/context.d.ts +2 -3
- package/dist/cli/context.js +22 -18
- package/dist/cli/continuity.d.ts +6 -6
- package/dist/cli/continuity.js +81 -86
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +88 -116
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +55 -34
- package/dist/cli/decisions.d.ts +2 -4
- package/dist/cli/decisions.js +18 -309
- package/dist/cli/eval.d.ts +1 -1
- package/dist/cli/eval.js +27 -26
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +2 -3
- package/dist/cli/explain.js +25 -27
- package/dist/cli/flag-values.d.ts +6 -1
- package/dist/cli/flag-values.js +42 -15
- package/dist/cli/flags.d.ts +0 -288
- package/dist/cli/flags.js +3 -138
- package/dist/cli/github.d.ts +14 -0
- package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
- package/dist/cli/goals.d.ts +2 -2
- package/dist/cli/goals.js +46 -50
- package/dist/cli/graph.d.ts +3 -0
- package/dist/cli/graph.js +83 -0
- package/dist/cli/hook-runtime.d.ts +12 -32
- package/dist/cli/hook-runtime.js +21 -64
- package/dist/cli/incidents.d.ts +3 -0
- package/dist/cli/incidents.js +112 -0
- package/dist/cli/init.d.ts +2 -2
- package/dist/cli/init.js +33 -30
- package/dist/cli/install-steps.d.ts +2 -1
- package/dist/cli/install-steps.js +13 -14
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +4 -1
- package/dist/cli/lenient-id.d.ts +2 -0
- package/dist/cli/lenient-id.js +13 -0
- package/dist/cli/maintenance.d.ts +5 -5
- package/dist/cli/maintenance.js +37 -43
- package/dist/cli/notes.d.ts +2 -0
- package/dist/cli/notes.js +41 -0
- package/dist/cli/object-verbs.js +4 -3
- package/dist/cli/open-browser.d.ts +14 -0
- package/dist/cli/open-browser.js +26 -0
- package/dist/cli/owner-validation.d.ts +5 -28
- package/dist/cli/owner-validation.js +5 -28
- package/dist/cli/playbooks.d.ts +3 -4
- package/dist/cli/playbooks.js +131 -300
- package/dist/cli/predictions.d.ts +3 -0
- package/dist/cli/predictions.js +175 -0
- package/dist/cli/print.d.ts +2 -5
- package/dist/cli/print.js +3 -5
- package/dist/cli/projects.d.ts +2 -2
- package/dist/cli/projects.js +31 -25
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +67 -137
- package/dist/cli/refine-llm.d.ts +5 -31
- package/dist/cli/refine-llm.js +23 -50
- package/dist/cli/remember.d.ts +3 -3
- package/dist/cli/remember.js +134 -192
- package/dist/cli/scheduler.d.ts +2 -17
- package/dist/cli/scheduler.js +14 -19
- package/dist/cli/serve.js +23 -14
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +143 -214
- package/dist/cli/setup.d.ts +4 -4
- package/dist/cli/setup.js +35 -30
- package/dist/cli/shared.d.ts +7 -25
- package/dist/cli/shared.js +17 -60
- package/dist/cli/slack.d.ts +2 -2
- package/dist/cli/slack.js +19 -23
- package/dist/cli/sleep-render.js +6 -3
- package/dist/cli/sleep.d.ts +3 -2
- package/dist/cli/sleep.js +17 -49
- package/dist/cli/status.d.ts +11 -14
- package/dist/cli/status.js +74 -120
- package/dist/cli/stdin.d.ts +4 -6
- package/dist/cli/stdin.js +2 -3
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +87 -108
- package/dist/cli/usage.d.ts +0 -79
- package/dist/cli/usage.js +1 -689
- package/dist/cli/verb-row.d.ts +32 -0
- package/dist/cli/verb-row.js +6 -0
- package/dist/cli/verbs/health.d.ts +27 -0
- package/dist/cli/verbs/health.js +232 -0
- package/dist/cli/verbs/memory.d.ts +16 -0
- package/dist/cli/verbs/memory.js +244 -0
- package/dist/cli/verbs/objects.d.ts +20 -0
- package/dist/cli/verbs/objects.js +254 -0
- package/dist/cli/verbs/sessions.d.ts +31 -0
- package/dist/cli/verbs/sessions.js +312 -0
- package/dist/cli/verbs.d.ts +81 -0
- package/dist/cli/verbs.js +7 -0
- package/dist/cli/versioned-verbs.d.ts +51 -0
- package/dist/cli/versioned-verbs.js +79 -0
- package/dist/cli.d.ts +1 -654
- package/dist/cli.js +44 -510
- package/dist/connectors/dlq.d.ts +39 -3
- package/dist/connectors/dlq.js +37 -3
- package/dist/connectors/github/backfill.d.ts +5 -25
- package/dist/connectors/github/backfill.js +26 -52
- package/dist/connectors/github/deletion.d.ts +4 -18
- package/dist/connectors/github/deletion.js +2 -15
- package/dist/connectors/github/dlq.d.ts +8 -33
- package/dist/connectors/github/dlq.js +34 -93
- package/dist/connectors/github/ingest.d.ts +4 -12
- package/dist/connectors/github/ingest.js +5 -36
- package/dist/connectors/github/octokit-client.d.ts +4 -16
- package/dist/connectors/github/octokit-client.js +27 -24
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +2 -24
- package/dist/connectors/github/tenant-routing.js +4 -26
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +3 -15
- package/dist/connectors/github/types.js +2 -9
- package/dist/connectors/github/webhook.d.ts +3 -16
- package/dist/connectors/github/webhook.js +38 -23
- package/dist/connectors/ingest.d.ts +10 -0
- package/dist/connectors/ingest.js +28 -0
- package/dist/connectors/slack/backfill.d.ts +4 -17
- package/dist/connectors/slack/backfill.js +4 -13
- package/dist/connectors/slack/dlq.d.ts +2 -19
- package/dist/connectors/slack/dlq.js +51 -90
- package/dist/connectors/slack/ingest.d.ts +4 -9
- package/dist/connectors/slack/ingest.js +4 -30
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/tenant-routing.d.ts +2 -19
- package/dist/connectors/slack/tenant-routing.js +2 -21
- package/dist/connectors/slack/transform.d.ts +2 -18
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +3 -9
- package/dist/connectors/slack/types.js +2 -4
- package/dist/connectors/slack/web-client.js +33 -27
- package/dist/connectors/slack/webhook.d.ts +3 -19
- package/dist/connectors/slack/webhook.js +6 -26
- package/dist/connectors/slack/workspaces.d.ts +4 -24
- package/dist/connectors/slack/workspaces.js +4 -24
- package/dist/consolidate/conflicts.js +7 -15
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/consolidate/dag.d.ts +5 -28
- package/dist/consolidate/dag.js +29 -84
- package/dist/consolidate/decay.js +7 -19
- package/dist/consolidate/dedupe.d.ts +13 -52
- package/dist/consolidate/dedupe.js +18 -74
- package/dist/consolidate/flush-units.d.ts +3 -4
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +3 -26
- package/dist/consolidate/half-life-migration.js +11 -28
- package/dist/consolidate/llm-passes.js +49 -40
- package/dist/consolidate/memory-value-weights.d.ts +2 -13
- package/dist/consolidate/memory-value-weights.js +2 -13
- package/dist/consolidate/memory-value.d.ts +11 -84
- package/dist/consolidate/memory-value.js +18 -105
- package/dist/consolidate/merge.js +12 -33
- package/dist/consolidate/physics-pass.d.ts +6 -1
- package/dist/consolidate/physics-pass.js +27 -9
- package/dist/consolidate/replay.d.ts +6 -38
- package/dist/consolidate/replay.js +25 -56
- package/dist/consolidate/run.js +1 -1
- package/dist/consolidate/sleep.d.ts +1 -8
- package/dist/consolidate/sleep.js +13 -22
- package/dist/consolidate/trace.d.ts +3 -18
- package/dist/consolidate/trace.js +3 -18
- package/dist/consolidate/traces.js +9 -25
- package/dist/core/ablation.d.ts +14 -91
- package/dist/core/ablation.js +16 -91
- package/dist/core/active-scope.d.ts +7 -0
- package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
- package/dist/core/ambient.d.ts +5 -8
- package/dist/core/ambient.js +40 -26
- package/dist/core/api-errors.d.ts +16 -0
- package/dist/core/api-errors.js +20 -0
- package/dist/core/capture-contract.d.ts +4 -2
- package/dist/core/capture-contract.js +4 -2
- package/dist/core/card.d.ts +4 -1
- package/dist/core/card.js +11 -1
- package/dist/core/compaction-timing.d.ts +7 -0
- package/dist/core/compaction-timing.js +9 -0
- package/dist/core/compare.d.ts +11 -67
- package/dist/core/compare.js +9 -63
- package/dist/core/config.d.ts +10 -24
- package/dist/core/config.js +20 -16
- package/dist/core/cosine.d.ts +3 -0
- package/dist/core/cosine.js +19 -0
- package/dist/core/handoff.d.ts +1 -7
- package/dist/core/handoff.js +1 -7
- package/dist/core/markdown.d.ts +6 -0
- package/dist/{store → core}/markdown.js +23 -22
- package/dist/core/memory-audit.d.ts +17 -0
- package/dist/core/memory-audit.js +54 -0
- package/dist/core/memory-quality.js +1 -1
- package/dist/core/memory.d.ts +51 -168
- package/dist/core/memory.js +76 -239
- package/dist/{consolidate → core}/merged-row.d.ts +1 -1
- package/dist/{consolidate → core}/merged-row.js +3 -2
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/core/physics-config.d.ts +1 -4
- package/dist/core/physics-config.js +3 -8
- package/dist/core/physics.d.ts +15 -61
- package/dist/core/physics.js +65 -138
- package/dist/core/prediction.d.ts +3 -0
- package/dist/core/prediction.js +6 -0
- package/dist/core/project-identity.d.ts +20 -58
- package/dist/core/project-identity.js +27 -39
- package/dist/core/project-remote.js +13 -2
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/core/recall-scope.d.ts +69 -0
- package/dist/core/recall-scope.js +138 -0
- package/dist/core/salience.d.ts +1 -7
- package/dist/core/salience.js +1 -7
- package/dist/dashboard/dashboard-actions.js +2 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
- package/dist/dashboard/dashboard-snapshot.js +11 -2
- package/dist/dashboard/dashboard-types.d.ts +2 -1
- package/dist/dashboard/dashboard.d.ts +1 -0
- package/dist/dashboard/dashboard.js +50 -4
- package/dist/db/busy.d.ts +3 -8
- package/dist/db/busy.js +37 -33
- package/dist/db/connect.js +7 -8
- package/dist/db/index.d.ts +3 -3
- package/dist/db/index.js +3 -3
- package/dist/db/migrate.js +3 -3
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v14.js +2 -3
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +2 -3
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +2 -7
- package/dist/db/migrations/v22.js +4 -17
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +2 -4
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +4 -18
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +2 -15
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +9 -20
- package/dist/db/migrations/v40.js +2 -9
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +1 -1
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v55.d.ts +3 -0
- package/dist/db/migrations/v55.js +17 -0
- package/dist/db/open.d.ts +2 -2
- package/dist/db/open.js +21 -9
- package/dist/db/physics-state.d.ts +6 -22
- package/dist/db/physics-state.js +28 -39
- package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
- package/dist/db/raw-archive-mirror-cleanup.js +2 -17
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -2
- package/dist/db/vector-store.d.ts +2 -0
- package/dist/db/vector-store.js +25 -5
- package/dist/db/wal-checkpointer.js +2 -1
- package/dist/doctor.js +85 -27
- package/dist/embeddings/local.d.ts +62 -0
- package/dist/embeddings/local.js +146 -0
- package/dist/embeddings/provider.d.ts +43 -0
- package/dist/{store/embeddings → embeddings}/provider.js +58 -83
- package/dist/embeddings/transformers.d.ts +26 -0
- package/dist/embeddings/transformers.js +89 -0
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +3 -2
- package/dist/eval/eval-stats.d.ts +15 -53
- package/dist/eval/eval-stats.js +12 -42
- package/dist/eval/eval-suite.d.ts +2 -13
- package/dist/eval/eval-suite.js +91 -45
- package/dist/eval/eval.d.ts +6 -24
- package/dist/eval/eval.js +8 -35
- package/dist/eval/judgment.d.ts +0 -3
- package/dist/eval/judgment.js +30 -15
- package/dist/extensions/openclaw-plugin/index.js +1 -1
- package/dist/graph/extract.d.ts +5 -27
- package/dist/graph/extract.js +10 -36
- package/dist/graph/recall.d.ts +7 -20
- package/dist/graph/recall.js +15 -77
- package/dist/graph/stream.d.ts +7 -39
- package/dist/graph/stream.js +11 -34
- package/dist/graph/view.d.ts +9 -35
- package/dist/graph/view.js +24 -44
- package/dist/graph/write.d.ts +1 -1
- package/dist/graph/write.js +9 -9
- package/dist/hooks/codex-session.js +3 -2
- package/dist/hooks/codex-wrapper.js +4 -3
- package/dist/hooks/copilot.js +2 -1
- package/dist/hooks/hook-blocks.d.ts +6 -2
- package/dist/hooks/hook-blocks.js +37 -124
- package/dist/hooks/json-hooks.d.ts +4 -36
- package/dist/hooks/json-hooks.js +22 -59
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +17 -81
- package/dist/hooks/shared.d.ts +6 -21
- package/dist/hooks/shared.js +31 -33
- package/dist/importers/core.d.ts +12 -37
- package/dist/importers/core.js +10 -28
- package/dist/importers/markdown-parse.d.ts +8 -22
- package/dist/importers/markdown-parse.js +8 -25
- package/dist/importers/markdown.js +3 -12
- package/dist/importers/sources.js +12 -39
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +31 -85
- package/dist/index.d.ts +8 -3
- package/dist/index.js +8 -3
- package/dist/learn/autolearn.d.ts +23 -42
- package/dist/learn/autolearn.js +45 -52
- package/dist/learn/churn-git.js +13 -4
- package/dist/learn/extract.d.ts +3 -2
- package/dist/learn/extract.js +8 -8
- package/dist/learn/forward-claim-detector.d.ts +6 -30
- package/dist/learn/forward-claim-detector.js +18 -68
- package/dist/learn/invalidation.d.ts +6 -18
- package/dist/learn/invalidation.js +18 -31
- package/dist/mcp/admin-tools.d.ts +2 -2
- package/dist/mcp/admin-tools.js +30 -53
- package/dist/mcp/format.js +3 -2
- package/dist/mcp/framing.d.ts +1 -0
- package/dist/mcp/framing.js +1 -1
- package/dist/mcp/memory-tools.js +7 -10
- package/dist/mcp/protocol.d.ts +15 -29
- package/dist/mcp/protocol.js +26 -16
- package/dist/mcp/recall-tools.js +14 -11
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +12 -27
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +5 -16
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +5 -11
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +68 -16
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +47 -22
- package/dist/objects/customer-notes.d.ts +9 -44
- package/dist/objects/customer-notes.js +7 -48
- package/dist/objects/decisions.d.ts +14 -52
- package/dist/objects/decisions.js +15 -53
- package/dist/objects/descriptor.d.ts +1 -1
- package/dist/objects/incidents.d.ts +9 -40
- package/dist/objects/incidents.js +7 -41
- package/dist/objects/lifecycle.d.ts +1 -1
- package/dist/objects/lifecycle.js +2 -1
- package/dist/objects/policies.d.ts +13 -91
- package/dist/objects/policies.js +13 -99
- package/dist/objects/processes.d.ts +9 -54
- package/dist/objects/processes.js +7 -61
- package/dist/objects/project-briefs.d.ts +13 -57
- package/dist/objects/project-briefs.js +16 -78
- package/dist/objects/skills.d.ts +9 -44
- package/dist/objects/skills.js +8 -54
- package/dist/postinstall.js +7 -20
- package/dist/predictions/planning-fallacy.d.ts +11 -34
- package/dist/rerankers/clef.js +6 -37
- package/dist/rerankers/cross-encoder.d.ts +31 -2
- package/dist/rerankers/cross-encoder.js +65 -101
- package/dist/rerankers/index.js +5 -4
- package/dist/rerankers/jev.js +11 -10
- package/dist/rerankers/llm.d.ts +2 -11
- package/dist/rerankers/llm.js +14 -14
- package/dist/rerankers/outage-warning.d.ts +5 -2
- package/dist/rerankers/outage-warning.js +7 -4
- package/dist/rerankers/remote.d.ts +1 -0
- package/dist/rerankers/remote.js +2 -0
- package/dist/rerankers/types.d.ts +2 -14
- package/dist/search/bm25-search.js +1 -1
- package/dist/search/boosts.d.ts +0 -2
- package/dist/search/boosts.js +3 -3
- package/dist/search/embed-memories.d.ts +9 -0
- package/dist/search/embed-memories.js +377 -0
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +93 -0
- package/dist/search/hybrid.d.ts +11 -2
- package/dist/search/hybrid.js +9 -4
- package/dist/search/multihop.js +2 -3
- package/dist/search/path-context.d.ts +5 -18
- package/dist/search/path-context.js +5 -18
- package/dist/search/physics-search.d.ts +6 -3
- package/dist/search/physics-search.js +29 -19
- package/dist/search/rerank.js +1 -1
- package/dist/search/rrf.d.ts +7 -35
- package/dist/search/rrf.js +5 -30
- package/dist/search/vector.d.ts +13 -4
- package/dist/search/vector.js +40 -13
- package/dist/server/auth.d.ts +11 -28
- package/dist/server/auth.js +49 -32
- package/dist/server/boot.d.ts +2 -21
- package/dist/server/boot.js +69 -161
- package/dist/server/client-ip.d.ts +3 -21
- package/dist/server/client-ip.js +8 -30
- package/dist/server/deadline.d.ts +0 -2
- package/dist/server/deadline.js +1 -7
- package/dist/server/defaults.d.ts +4 -0
- package/dist/server/defaults.js +5 -0
- package/dist/server/key-check-bounds.d.ts +2 -1
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +19 -4
- package/dist/server/mcp-http.js +24 -53
- package/dist/server/rate-limit.d.ts +5 -18
- package/dist/server/rate-limit.js +4 -13
- package/dist/server/request.d.ts +4 -8
- package/dist/server/request.js +16 -19
- package/dist/server/route-checks.d.ts +7 -0
- package/dist/server/route-checks.js +42 -0
- package/dist/server/route-table.d.ts +9 -8
- package/dist/server/route-table.js +127 -139
- package/dist/server/routes/admin.d.ts +8 -8
- package/dist/server/routes/admin.js +35 -49
- package/dist/server/routes/customer-notes.d.ts +6 -6
- package/dist/server/routes/customer-notes.js +8 -14
- package/dist/server/routes/decisions.d.ts +6 -6
- package/dist/server/routes/decisions.js +12 -21
- package/dist/server/routes/incidents.d.ts +6 -6
- package/dist/server/routes/incidents.js +14 -25
- package/dist/server/routes/memories.d.ts +9 -9
- package/dist/server/routes/memories.js +20 -63
- package/dist/server/routes/object-routes.d.ts +6 -11
- package/dist/server/routes/object-routes.js +11 -22
- package/dist/server/routes/policies.d.ts +7 -7
- package/dist/server/routes/policies.js +12 -22
- package/dist/server/routes/predictions.d.ts +6 -6
- package/dist/server/routes/predictions.js +22 -38
- package/dist/server/routes/processes.d.ts +6 -6
- package/dist/server/routes/processes.js +17 -28
- package/dist/server/routes/project-briefs.d.ts +7 -7
- package/dist/server/routes/project-briefs.js +11 -20
- package/dist/server/routes/recall.d.ts +5 -5
- package/dist/server/routes/recall.js +16 -45
- package/dist/server/routes/skills.d.ts +7 -7
- package/dist/server/routes/skills.js +10 -22
- package/dist/server/server-detect.d.ts +15 -53
- package/dist/server/server-detect.js +55 -96
- package/dist/server/sleep-child.js +26 -7
- package/dist/server/sleep-offload.d.ts +11 -5
- package/dist/server/sleep-offload.js +21 -12
- package/dist/server/types.d.ts +32 -18
- package/dist/server/validation.d.ts +3 -2
- package/dist/server/validation.js +15 -33
- package/dist/server.d.ts +7 -6
- package/dist/server.js +8 -6
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +73 -0
- package/dist/sharing/project-merge.d.ts +11 -19
- package/dist/sharing/project-merge.js +63 -125
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +40 -0
- package/dist/sharing/share.js +229 -0
- package/dist/store/ambient.js +9 -15
- package/dist/store/audit-event.d.ts +5 -13
- package/dist/store/audit-event.js +4 -12
- package/dist/store/audit.d.ts +2 -21
- package/dist/store/audit.js +8 -67
- package/dist/store/auth.d.ts +10 -8
- package/dist/store/auth.js +17 -12
- package/dist/store/candidates.d.ts +23 -5
- package/dist/store/candidates.js +119 -71
- package/dist/store/capture-write.d.ts +17 -0
- package/dist/store/capture-write.js +35 -0
- package/dist/store/card-detail.d.ts +2 -1
- package/dist/store/card-detail.js +2 -1
- package/dist/store/cards.d.ts +14 -9
- package/dist/store/cards.js +72 -126
- package/dist/store/compaction-caller.d.ts +18 -0
- package/dist/store/compaction-caller.js +29 -0
- package/dist/store/compactions-record.d.ts +115 -0
- package/dist/store/compactions-record.js +417 -0
- package/dist/store/compactions.js +6 -4
- package/dist/store/conflicts.d.ts +4 -21
- package/dist/store/conflicts.js +76 -152
- package/dist/store/connectors/dlq.d.ts +10 -0
- package/dist/store/connectors/dlq.js +32 -0
- package/dist/store/connectors/github.d.ts +14 -16
- package/dist/store/connectors/github.js +34 -57
- package/dist/store/connectors/slack.d.ts +2 -11
- package/dist/store/connectors/slack.js +18 -47
- package/dist/store/dashboard-reads.js +11 -14
- package/dist/store/delete-and-batch.d.ts +17 -31
- package/dist/store/delete-and-batch.js +84 -67
- package/dist/store/delivery-recorder.d.ts +15 -4
- package/dist/store/delivery-recorder.js +34 -17
- package/dist/store/descendant-page.js +6 -3
- package/dist/store/diagnostics.js +6 -13
- package/dist/store/dormant.d.ts +8 -30
- package/dist/store/dormant.js +18 -57
- package/dist/store/embeddings/index.d.ts +11 -90
- package/dist/store/embeddings/index.js +18 -523
- package/dist/store/entry-reads.d.ts +34 -61
- package/dist/store/entry-reads.js +111 -136
- package/dist/store/entry-row.d.ts +6 -35
- package/dist/store/entry-row.js +9 -37
- package/dist/store/entry-writes.d.ts +12 -18
- package/dist/store/entry-writes.js +46 -44
- package/dist/store/failure-log-at.d.ts +8 -0
- package/dist/store/failure-log-at.js +16 -0
- package/dist/store/failure-log.d.ts +2 -2
- package/dist/store/failure-log.js +5 -3
- package/dist/{trust → store}/gated-write.d.ts +3 -1
- package/dist/{trust → store}/gated-write.js +7 -5
- package/dist/store/goals.d.ts +3 -40
- package/dist/store/goals.js +41 -178
- package/dist/store/graph-queue.d.ts +6 -22
- package/dist/store/graph-queue.js +14 -45
- package/dist/store/graph-reads.d.ts +11 -35
- package/dist/store/graph-reads.js +24 -60
- package/dist/store/graph-rows.d.ts +3 -6
- package/dist/store/graph-rows.js +6 -9
- package/dist/store/graph-view-rows.d.ts +2 -1
- package/dist/store/graph-view-rows.js +2 -1
- package/dist/store/graph-writes.d.ts +10 -35
- package/dist/store/graph-writes.js +59 -106
- package/dist/store/half-life.d.ts +2 -1
- package/dist/store/half-life.js +14 -16
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +22 -40
- package/dist/store/index-and-stats.d.ts +6 -19
- package/dist/store/index-and-stats.js +36 -84
- package/dist/store/key-writes.js +1 -1
- package/dist/store/ledger-turn.d.ts +9 -0
- package/dist/store/ledger-turn.js +38 -0
- package/dist/store/mirrors.d.ts +2 -6
- package/dist/store/mirrors.js +24 -29
- package/dist/store/open.d.ts +0 -4
- package/dist/store/open.js +42 -62
- package/dist/store/pilot-arm.d.ts +12 -0
- package/dist/store/pilot-arm.js +42 -0
- package/dist/store/planning-fallacy-evidence.d.ts +2 -30
- package/dist/store/planning-fallacy-evidence.js +8 -37
- package/dist/store/port.d.ts +91 -82
- package/dist/store/port.js +8 -0
- package/dist/store/predictions.d.ts +12 -53
- package/dist/store/predictions.js +41 -125
- package/dist/store/project-tags.d.ts +62 -0
- package/dist/store/project-tags.js +67 -0
- package/dist/{cli → store}/quality-repair.js +15 -31
- package/dist/store/quarantine.js +2 -1
- package/dist/store/raw-archive.d.ts +4 -16
- package/dist/store/raw-archive.js +14 -29
- package/dist/store/recall-trace.d.ts +12 -77
- package/dist/store/recall-trace.js +37 -97
- package/dist/store/rejected-values.js +9 -20
- package/dist/store/rejection-probe.d.ts +4 -0
- package/dist/store/rejection-probe.js +19 -0
- package/dist/store/rejection.d.ts +10 -73
- package/dist/store/rejection.js +12 -84
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +9 -19
- package/dist/store/rows.js +36 -34
- package/dist/store/rule-sql.d.ts +14 -0
- package/dist/store/rule-sql.js +56 -0
- package/dist/store/search-rows.d.ts +7 -38
- package/dist/store/search-rows.js +23 -54
- package/dist/store/sessions.d.ts +10 -47
- package/dist/store/sessions.js +21 -75
- package/dist/store/set-aside.d.ts +14 -0
- package/dist/store/set-aside.js +23 -0
- package/dist/store/sqlite/busy.d.ts +3 -0
- package/dist/store/sqlite/busy.js +8 -0
- package/dist/store/sqlite/connector-events-group.js +5 -8
- package/dist/store/sqlite/connector-writes-group.js +3 -3
- package/dist/store/sqlite/entry-writes-group.js +4 -4
- package/dist/store/sqlite/error-codec.js +8 -5
- package/dist/store/sqlite/executor.d.ts +2 -1
- package/dist/store/sqlite/executor.js +12 -5
- package/dist/store/sqlite/graph-reads-group.js +1 -1
- package/dist/store/sqlite/held-connection.d.ts +9 -0
- package/dist/store/sqlite/held-connection.js +41 -0
- package/dist/store/sqlite/local.d.ts +3 -3
- package/dist/store/sqlite/local.js +1 -0
- package/dist/store/sqlite/object-rows.d.ts +1 -1
- package/dist/store/sqlite/object-rows.js +6 -3
- package/dist/store/sqlite/objects-group.d.ts +1 -1
- package/dist/store/sqlite/objects-group.js +5 -3
- package/dist/store/sqlite/quarantine-group.js +2 -2
- package/dist/store/sqlite/store.d.ts +1 -4
- package/dist/store/sqlite/store.js +16 -15
- package/dist/store/sqlite/vector-reads-group.js +2 -2
- package/dist/store/sqlite/worker-jobs.js +1 -1
- package/dist/store/sqlite/worker-ops.d.ts +13 -2
- package/dist/store/sqlite/worker-ops.js +13 -2
- package/dist/store/sqlite/worker-store.js +5 -2
- package/dist/store/summaries.d.ts +11 -63
- package/dist/store/summaries.js +37 -148
- package/dist/store/summary-dirty.js +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +2 -16
- package/dist/store/tenant.js +4 -19
- package/dist/store/token-ledger.d.ts +13 -50
- package/dist/store/token-ledger.js +19 -85
- package/dist/store/usage-reports.js +5 -13
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +171 -0
- package/dist/store/working-memory.d.ts +6 -25
- package/dist/store/working-memory.js +18 -52
- package/dist/support-bundle.js +9 -8
- package/dist/trust/reject-flow.js +3 -5
- package/dist/util/agent-homes.d.ts +15 -0
- package/dist/util/agent-homes.js +34 -0
- package/dist/util/anthropic-messages.d.ts +3 -0
- package/dist/util/anthropic-messages.js +35 -6
- package/dist/util/atomic-write.d.ts +2 -1
- package/dist/util/atomic-write.js +35 -4
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/chunked.d.ts +3 -0
- package/dist/util/chunked.js +10 -0
- package/dist/util/crash-handlers.d.ts +8 -1
- package/dist/util/crash-handlers.js +52 -10
- package/dist/util/ellipsize.d.ts +3 -0
- package/dist/util/ellipsize.js +5 -0
- package/dist/util/env.d.ts +14 -6
- package/dist/util/env.js +15 -7
- package/dist/util/format.d.ts +3 -0
- package/dist/util/format.js +6 -0
- package/dist/util/home-path.d.ts +2 -1
- package/dist/util/home-path.js +4 -2
- package/dist/util/hook-payload.d.ts +8 -0
- package/dist/util/hook-payload.js +37 -0
- package/dist/util/http-retry.d.ts +9 -1
- package/dist/util/http-retry.js +67 -8
- package/dist/util/http-util.d.ts +0 -8
- package/dist/util/http-util.js +10 -21
- package/dist/util/limits.d.ts +7 -0
- package/dist/util/limits.js +14 -0
- package/dist/util/log.d.ts +7 -2
- package/dist/util/log.js +34 -9
- package/dist/util/request-scope.d.ts +5 -2
- package/dist/util/request-scope.js +13 -7
- package/dist/util/secret-detect.d.ts +5 -30
- package/dist/util/secret-detect.js +19 -40
- package/dist/util/sqlite-blocked.d.ts +2 -0
- package/dist/util/sqlite-blocked.js +5 -0
- package/dist/util/stored-json.d.ts +1 -1
- package/dist/util/stored-json.js +1 -1
- package/dist/util/stream-tee.d.ts +3 -0
- package/dist/util/stream-tee.js +35 -0
- package/dist/util/time.d.ts +4 -0
- package/dist/util/time.js +4 -0
- package/dist/util/token-text.d.ts +1 -4
- package/dist/util/token-text.js +1 -4
- package/dist/util/transcript-tail.d.ts +2 -0
- package/dist/util/transcript-tail.js +24 -23
- package/dist/util/version.d.ts +5 -20
- package/dist/util/version.js +5 -20
- package/dist/{store → util}/yaml.d.ts +1 -5
- package/dist/{store → util}/yaml.js +2 -6
- package/extensions/openclaw-plugin/index.ts +1 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/dist/cli/provenance-coverage.d.ts +0 -18
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/sharing/scope.d.ts +0 -14
- package/dist/sharing/shared.d.ts +0 -187
- package/dist/sharing/shared.js +0 -563
- package/dist/store/embeddings/local.d.ts +0 -15
- package/dist/store/embeddings/local.js +0 -192
- package/dist/store/embeddings/provider.d.ts +0 -77
- package/dist/store/markdown.d.ts +0 -10
- package/dist/store/recall-scope.d.ts +0 -138
- package/dist/store/recall-scope.js +0 -216
- package/dist/store/vector-writes.d.ts +0 -13
- package/dist/store/vector-writes.js +0 -89
- /package/dist/{store → core}/object-types.d.ts +0 -0
- /package/dist/{store → core}/object-types.js +0 -0
- /package/dist/{cli → store}/quality-repair.d.ts +0 -0
- /package/dist/{capture → util}/compaction-items.d.ts +0 -0
- /package/dist/{capture → util}/compaction-items.js +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** What the server calls around its responses to keep its store connection. */
|
|
2
|
+
export interface StoreHolder {
|
|
3
|
+
hold: () => void;
|
|
4
|
+
afterResponse: () => void;
|
|
5
|
+
release: () => Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
/** Holds a connection to the hippo.db under `hippoRoot` once it exists, so serving never creates one. */
|
|
8
|
+
export declare function holdSqliteConnection(hippoRoot: string): StoreHolder;
|
|
9
|
+
//# sourceMappingURL=held-connection.d.ts.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// A served hippo.db keeps one connection open for the life of the server, beside the worker that checkpoints its WAL.
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { closeHippoDb, getHippoDbPath, openHippoDb, outsideRequestStores, outsideSqliteOffLoop, SERVER_DB_WAIT_MS, } from '../../db/index.js';
|
|
4
|
+
import { startWalCheckpointer } from '../../db/wal-checkpointer.js';
|
|
5
|
+
import { errorMessage, log } from '../../util/log.js';
|
|
6
|
+
/** Holds a connection to the hippo.db under `hippoRoot` once it exists, so serving never creates one. */
|
|
7
|
+
export function holdSqliteConnection(hippoRoot) {
|
|
8
|
+
// Handlers open and close their own connections; while this one is held, none of those closes is SQLite's last,
|
|
9
|
+
// which checkpoints and deletes the WAL.
|
|
10
|
+
let heldDb;
|
|
11
|
+
let checkpointer;
|
|
12
|
+
let stopHolding = false;
|
|
13
|
+
const hold = () => {
|
|
14
|
+
if (heldDb || stopHolding || !existsSync(getHippoDbPath(hippoRoot)))
|
|
15
|
+
return;
|
|
16
|
+
try {
|
|
17
|
+
// The 'finish' listener can fire inside a request scope (closing this connection with the request) and inside a `loop: 'off'` block (refusing the open).
|
|
18
|
+
// The server's lock wait: this open runs on the event loop, where SQLite's 5 s default and the 30 s journal-mode retry would stall every request.
|
|
19
|
+
heldDb = outsideSqliteOffLoop(() => outsideRequestStores(() => openHippoDb(hippoRoot, { busyWaitMs: SERVER_DB_WAIT_MS })));
|
|
20
|
+
checkpointer = startWalCheckpointer(getHippoDbPath(hippoRoot));
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
stopHolding = true;
|
|
24
|
+
log.warn(`serve: could not hold a store connection; requests still work, only slower: ${errorMessage(err)}`);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const afterResponse = () => {
|
|
28
|
+
hold();
|
|
29
|
+
checkpointer?.noteResponse();
|
|
30
|
+
};
|
|
31
|
+
const release = async () => {
|
|
32
|
+
stopHolding = true;
|
|
33
|
+
// The worker's connection closes first, so the held one is SQLite's last and its close checkpoints and deletes the WAL.
|
|
34
|
+
await checkpointer?.stop();
|
|
35
|
+
if (heldDb)
|
|
36
|
+
closeHippoDb(heldDb);
|
|
37
|
+
heldDb = undefined;
|
|
38
|
+
};
|
|
39
|
+
return { hold, afterResponse, release };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=held-connection.js.map
|
|
@@ -8,9 +8,9 @@ export interface SqliteLocal {
|
|
|
8
8
|
applyOutcome(outcome: OutcomeWrite, traceId: number): string[];
|
|
9
9
|
/** applyOutcome on the ids of the last recall, which hippo.db's meta table holds with that recall's trace; answers the ids applied. */
|
|
10
10
|
applyOutcomeToLastRecall(target: EntryTarget, good: boolean): string[];
|
|
11
|
-
/** finishRecall, then the ids this root lacks strengthened under `globalRoot`, then the ids and their trace saved as the last recall
|
|
12
|
-
* A store of another kind keeps no last recall, so its stand-in is its own finishRecall,
|
|
13
|
-
finishLastRecall(writes: LastRecallWrites, globalRoot: string | undefined):
|
|
11
|
+
/** finishRecall, then the ids this root lacks strengthened under `globalRoot`, then the ids and their trace saved as the last recall;
|
|
12
|
+
* answers the trace id. A store of another kind keeps no last recall, so its stand-in is its own finishRecall, answering null. */
|
|
13
|
+
finishLastRecall(writes: LastRecallWrites, globalRoot: string | undefined): number | null | Promise<number | null>;
|
|
14
14
|
}
|
|
15
15
|
export declare function sqliteLocal(hippoRoot: string): SqliteLocal;
|
|
16
16
|
/** What a served store answers for each write that needs hippo.db's own handle: a refusal. */
|
|
@@ -22,6 +22,7 @@ export function sqliteLocal(hippoRoot) {
|
|
|
22
22
|
strengthenRetrieved(globalRoot, ids.filter((id) => !strengthened.has(id)), opts);
|
|
23
23
|
// One write for both keys, so an outcome never pairs these ids with an older trace; a lost trace saves null.
|
|
24
24
|
saveIndex(hippoRoot, { last_retrieval_ids: [...ids], last_trace_id: traceId === null ? null : String(traceId) });
|
|
25
|
+
return traceId;
|
|
25
26
|
},
|
|
26
27
|
};
|
|
27
28
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AuditOp } from '../audit.js';
|
|
2
2
|
import type { JsonObject } from '../working-memory.js';
|
|
3
3
|
import type { SourceObjectType } from '../graph-rows.js';
|
|
4
|
-
import type { BriefStatus, DecisionStatus, IncidentStatus, NoteStatus, ObjectByKind, ObjectFields, ObjectKind, PolicyStatus, ProcessStatus, SavableKind, SkillStatus } from '
|
|
4
|
+
import type { BriefStatus, DecisionStatus, IncidentStatus, NoteStatus, ObjectByKind, ObjectFields, ObjectKind, PolicyStatus, ProcessStatus, SavableKind, SkillStatus } from '../../core/object-types.js';
|
|
5
5
|
interface HeadRow {
|
|
6
6
|
id: number;
|
|
7
7
|
memory_id: string | null;
|
|
@@ -52,21 +52,24 @@ function rowToIncident(row) {
|
|
|
52
52
|
createdAt: row.created_at,
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
/** A malformed stored steps value reads back as no steps. */
|
|
56
|
-
function parseSteps(raw) {
|
|
55
|
+
/** A malformed stored steps value warns and reads back as no steps. */
|
|
56
|
+
function parseSteps(raw, id) {
|
|
57
|
+
const site = { table: 'processes', id, column: 'steps' };
|
|
57
58
|
try {
|
|
58
59
|
const parsed = JSON.parse(raw);
|
|
59
60
|
if (Array.isArray(parsed) && parsed.every(isJsonString)) {
|
|
60
61
|
return parsed;
|
|
61
62
|
}
|
|
63
|
+
warnDamagedColumn(site, 'wrong shape');
|
|
62
64
|
return [];
|
|
63
65
|
}
|
|
64
66
|
catch {
|
|
65
67
|
// Unreadable steps read back as none instead of failing the process read.
|
|
68
|
+
warnDamagedColumn(site, 'not valid JSON');
|
|
66
69
|
return [];
|
|
67
70
|
}
|
|
68
71
|
}
|
|
69
|
-
const rowToProcess = (row) => ({ ...head(row), processName: row.process_name, description: row.description, steps: parseSteps(row.steps), ...versionedTail(row) });
|
|
72
|
+
const rowToProcess = (row) => ({ ...head(row), processName: row.process_name, description: row.description, steps: parseSteps(row.steps, row.id), ...versionedTail(row) });
|
|
70
73
|
const rowToPolicy = (row) => ({ ...head(row), policyName: row.policy_name, policyText: row.policy_text, validFrom: row.valid_from, validTo: row.valid_to, ...versionedTail(row) });
|
|
71
74
|
const rowToSkill = (row) => ({ ...head(row), skillName: row.skill_name, instructions: row.instructions, trigger: row.trigger_text, ...versionedTail(row) });
|
|
72
75
|
const rowToProjectBrief = (row) => ({ ...head(row), repo: row.repo, summary: row.summary, ...versionedTail(row) });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BriefReceipt, Incident, ObjectByKind, ObjectKind, Policy, SavableKind, Skill } from '
|
|
1
|
+
import type { BriefReceipt, Incident, ObjectByKind, ObjectKind, Policy, SavableKind, Skill } from '../../core/object-types.js';
|
|
2
2
|
import { type IncidentOpen, type IncidentOpenRefusal, type IncidentResolve, type ObjectClose, type ObjectListQuery, type ObjectRefusal, type Objects, type ObjectSave, type PoliciesInForceQuery } from '../port.js';
|
|
3
3
|
/** The group with each answer as its value; spelled out because `Sync<Objects>` would widen each method's kind to every kind. */
|
|
4
4
|
export interface SyncObjects {
|
|
@@ -4,7 +4,7 @@ import { getMeta, withWriteScopeOr } from '../../db/index.js';
|
|
|
4
4
|
import { escapeLike } from '../../util/escape.js';
|
|
5
5
|
import { keysetAfter } from '../../util/keyset.js';
|
|
6
6
|
import { calculateStrength, deriveHalfLife } from '../../core/memory.js';
|
|
7
|
-
import { scopeAdmitSql } from '../
|
|
7
|
+
import { scopeAdmitSql } from '../rule-sql.js';
|
|
8
8
|
import { stampOriginProject, upsertEntryRow } from '../entry-row.js';
|
|
9
9
|
import { auditEntryWrite, writeEntryMirrors } from '../entry-writes.js';
|
|
10
10
|
import { markGraphDirty } from '../graph-queue.js';
|
|
@@ -100,7 +100,8 @@ function closeAt(hippoRoot, tenantId, kind, id, close) {
|
|
|
100
100
|
const closed = closeRow(db, tenantId, kind, id, close);
|
|
101
101
|
if (isObjectRefusal(closed) || !graphType)
|
|
102
102
|
return closed;
|
|
103
|
-
// Each graph write takes its own write lock, so both wait for the commit. The rows
|
|
103
|
+
// Each graph write takes its own write lock, so both wait for the commit. The rows
|
|
104
|
+
// go at once because the rebuild queue is keyed by a mirror memory that may be gone.
|
|
104
105
|
removeGraphEntitiesForObject(hippoRoot, tenantId, graphType, closed.id);
|
|
105
106
|
markGraphDirty(hippoRoot, tenantId, closed.memoryId);
|
|
106
107
|
return closed;
|
|
@@ -177,7 +178,8 @@ function writeObjectRow(db, tenantId, kind, memoryId, save) {
|
|
|
177
178
|
function refusalOf(written) {
|
|
178
179
|
return 'refused' in written;
|
|
179
180
|
}
|
|
180
|
-
/** Until the typed migration has run, a mirror goes in on the flat half-life that migration
|
|
181
|
+
/** Until the typed migration has run, a mirror goes in on the flat half-life that migration
|
|
182
|
+
* moves; the flag is read under the save's write lock, so the two cannot interleave. */
|
|
181
183
|
function onStoreHalfLife(db, mirror) {
|
|
182
184
|
if (getMeta(db, TYPED_HALF_LIFE_META_KEY, '') !== '')
|
|
183
185
|
return mirror;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// hippo.db's half of the Quarantine store group: each method is one call on its own handle.
|
|
2
|
-
import { errorMessage, log } from '../../util/log.js';
|
|
2
|
+
import { errorFields, errorMessage, log } from '../../util/log.js';
|
|
3
3
|
import { readEntry } from '../entry-reads.js';
|
|
4
4
|
import { writeEntryMirrors } from '../entry-writes.js';
|
|
5
5
|
import { onHandle } from '../open.js';
|
|
@@ -12,7 +12,7 @@ function rewriteMirror(hippoRoot, tenantId, id) {
|
|
|
12
12
|
writeEntryMirrors(hippoRoot, restored);
|
|
13
13
|
}
|
|
14
14
|
catch (err) {
|
|
15
|
-
log.error(`quarantine: mirror rewrite failed for ${id}: ${errorMessage(err)}
|
|
15
|
+
log.error(`quarantine: mirror rewrite failed for ${id}: ${errorMessage(err)}`, errorFields(err));
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
export function sqliteQuarantine(hippoRoot) {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { type ContinuityKey } from '../sessions.js';
|
|
1
|
+
import type { HippoStore, RecallWrites, StoreGroups, Sync } from '../port.js';
|
|
3
2
|
/** The store a request runs on: the served one, else hippo.db under its root, as the CLI and SDK callers have it. */
|
|
4
3
|
export declare function storeFor(ctx: {
|
|
5
4
|
readonly hippoRoot: string;
|
|
@@ -13,8 +12,6 @@ export type SqliteSyncStore = Sync<Omit<HippoStore, AsyncOnly>>;
|
|
|
13
12
|
export declare function sqliteSyncStore(hippoRoot: string): SqliteSyncStore & Sync<Omit<StoreGroups, AsyncOnly>>;
|
|
14
13
|
/** `sqliteSyncStore` as a served store: each method runs at once and answers through a Promise, so a throw rejects as another store's would. */
|
|
15
14
|
export declare function sqliteStore(hippoRoot: string): HippoStore & StoreGroups;
|
|
16
|
-
/** sqliteStore's continuity read, for the synchronous recall that cannot await the port. */
|
|
17
|
-
export declare function continuityAt(hippoRoot: string, tenantId: string, eventLimit: number, key: ContinuityKey | null): ContinuityBlock;
|
|
18
15
|
/** What a finished recall wrote after its audit rows: the trace's id, null when none was asked or its write failed, and the ids strengthened. */
|
|
19
16
|
interface RecallFinish {
|
|
20
17
|
readonly traceId: number | null;
|
|
@@ -4,7 +4,6 @@ import { listApiKeyRows, readApiKeyRecord } from '../auth.js';
|
|
|
4
4
|
import { existsSync } from 'node:fs';
|
|
5
5
|
import { appendAuditEvent, listAuditEventsAfter, queryAuditEvents } from '../audit.js';
|
|
6
6
|
import { getHippoDbPath, withWriteScope } from '../../db/index.js';
|
|
7
|
-
import { loadStoredVectorViews } from '../embeddings/index.js';
|
|
8
7
|
import { activeGoalsWithPolicies, localGoalRecallRows, writeGoalRecallLog } from '../goals.js';
|
|
9
8
|
import { planningFallacyEvidenceAt } from '../planning-fallacy-evidence.js';
|
|
10
9
|
import { writeRecallTrace } from '../recall-trace.js';
|
|
@@ -28,7 +27,7 @@ import { createKeyAt, createSelfKeyAt } from '../key-writes.js';
|
|
|
28
27
|
import { onHandle } from '../open.js';
|
|
29
28
|
import { loadRecallSearchEntries } from '../search-rows.js';
|
|
30
29
|
import { listSessionEvents, loadActiveTaskSnapshot } from '../sessions.js';
|
|
31
|
-
import { entriesWithoutVectorAt, writeVectorsAt } from '../vector-
|
|
30
|
+
import { entriesWithoutVectorAt, loadStoredVectorViews, writeVectorsAt } from '../vector-index.js';
|
|
32
31
|
/** The store a request runs on: the served one, else hippo.db under its root, as the CLI and SDK callers have it. */
|
|
33
32
|
export function storeFor(ctx) {
|
|
34
33
|
return ctx.store ?? sqliteStore(ctx.hippoRoot);
|
|
@@ -266,7 +265,7 @@ function sqliteKeyAudit(hippoRoot) {
|
|
|
266
265
|
};
|
|
267
266
|
}
|
|
268
267
|
/** sqliteStore's continuity read, for the synchronous recall that cannot await the port. */
|
|
269
|
-
|
|
268
|
+
function continuityAt(hippoRoot, tenantId, eventLimit, key) {
|
|
270
269
|
const activeSnapshot = loadActiveTaskSnapshot(hippoRoot, tenantId, key ?? undefined);
|
|
271
270
|
const sessionId = activeSnapshot?.session_id ?? undefined;
|
|
272
271
|
return {
|
|
@@ -278,18 +277,20 @@ export function continuityAt(hippoRoot, tenantId, eventLimit, key) {
|
|
|
278
277
|
/** sqliteStore's finishRecall, for the synchronous recall that cannot await the port. */
|
|
279
278
|
export function finishRecallAt(hippoRoot, writes) {
|
|
280
279
|
return onHandle(hippoRoot, (db) => {
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
280
|
+
const traceAndStrengthen = () => ({
|
|
281
|
+
traceId: writes.trace ? writeRecallTrace(db, writes.trace) : null,
|
|
282
|
+
strengthened: writes.strengthen ? strengthenRetrievedInOwnTx(db, writes.strengthen.ids, writes.strengthen.opts) : new Set(),
|
|
283
|
+
});
|
|
284
|
+
// Alone, the fail-soft trace and strengthen keep their own scopes so a busy lock loses them, never the read.
|
|
285
|
+
if (writes.goalLog.length === 0 && writes.audit.length === 0)
|
|
286
|
+
return traceAndStrengthen();
|
|
287
|
+
// Inside this scope both run as savepoints, so one recall commits once and a failed trace or strengthen still unwinds alone.
|
|
288
|
+
return withWriteScope(db, 'finish_recall', () => {
|
|
289
|
+
writeGoalRecallLog(db, localGoalRecallRows(db, writes.goalLog));
|
|
290
|
+
for (const event of writes.audit)
|
|
291
|
+
appendAuditEvent(db, event);
|
|
292
|
+
return traceAndStrengthen();
|
|
293
|
+
});
|
|
293
294
|
});
|
|
294
295
|
}
|
|
295
296
|
//# sourceMappingURL=store.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// hippo.db's vector reads. Async only: the nearest-row scan yields between chunks, so a store worker awaits these where it runs every other method to its end.
|
|
2
2
|
import { loadPhysicsState } from '../../db/physics-state.js';
|
|
3
|
-
import { embeddingIndexStateAt, loadStoredVectors } from '../embeddings/index.js';
|
|
4
3
|
import { onHandle } from '../open.js';
|
|
5
4
|
import { loadVectorCandidateEntries } from '../search-rows.js';
|
|
5
|
+
import { loadStoredVectors, storedIndexState } from '../vector-index.js';
|
|
6
6
|
export function sqliteVectorReads(hippoRoot) {
|
|
7
7
|
return {
|
|
8
8
|
async embeddingIndexState() {
|
|
9
|
-
return
|
|
9
|
+
return storedIndexState(hippoRoot);
|
|
10
10
|
},
|
|
11
11
|
async storedVectors(ids) {
|
|
12
12
|
return loadStoredVectors(hippoRoot, ids);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { auditWriteFailureCount } from '../audit.js';
|
|
2
2
|
import { RequestStores } from '../../db/index.js';
|
|
3
|
-
import { loadStoredVectorViews } from '../
|
|
3
|
+
import { loadStoredVectorViews } from '../vector-index.js';
|
|
4
4
|
import { requestScopes } from '../../util/request-scope.js';
|
|
5
5
|
import { initStore } from '../open.js';
|
|
6
6
|
import { watchCommits } from './commit-watch.js';
|
|
@@ -7,8 +7,8 @@ export type OpPlace = OpMode | 'server';
|
|
|
7
7
|
export type OpPlaces<G> = {
|
|
8
8
|
readonly [M in keyof G]: OpPlace;
|
|
9
9
|
};
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
10
|
+
/** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit row) and bumpRecallStats
|
|
11
|
+
* (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs that open's setup before any reader serves. */
|
|
12
12
|
export declare const WORKER_OPS: {
|
|
13
13
|
readonly base: {
|
|
14
14
|
readonly findApiKey: "read";
|
|
@@ -82,6 +82,17 @@ export declare const WORKER_OPS: {
|
|
|
82
82
|
readonly graphReads: {
|
|
83
83
|
readonly graphRows: "read";
|
|
84
84
|
};
|
|
85
|
+
readonly objects: {
|
|
86
|
+
readonly listObjects: "read";
|
|
87
|
+
readonly objectById: "read";
|
|
88
|
+
readonly closeObject: "write";
|
|
89
|
+
readonly saveObject: "write";
|
|
90
|
+
readonly openIncident: "write";
|
|
91
|
+
readonly resolveIncident: "write";
|
|
92
|
+
readonly policiesInForce: "read";
|
|
93
|
+
readonly activeSkillsByName: "read";
|
|
94
|
+
readonly briefReceipts: "read";
|
|
95
|
+
};
|
|
85
96
|
readonly readiness: {
|
|
86
97
|
readonly ping: "read";
|
|
87
98
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit row) and bumpRecallStats
|
|
2
|
+
* (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs that open's setup before any reader serves. */
|
|
3
3
|
export const WORKER_OPS = {
|
|
4
4
|
base: {
|
|
5
5
|
findApiKey: 'read',
|
|
@@ -73,6 +73,17 @@ export const WORKER_OPS = {
|
|
|
73
73
|
graphReads: {
|
|
74
74
|
graphRows: 'read',
|
|
75
75
|
},
|
|
76
|
+
objects: {
|
|
77
|
+
listObjects: 'read',
|
|
78
|
+
objectById: 'read',
|
|
79
|
+
closeObject: 'write',
|
|
80
|
+
saveObject: 'write',
|
|
81
|
+
openIncident: 'write',
|
|
82
|
+
resolveIncident: 'write',
|
|
83
|
+
policiesInForce: 'read',
|
|
84
|
+
activeSkillsByName: 'read',
|
|
85
|
+
briefReceipts: 'read',
|
|
86
|
+
},
|
|
76
87
|
readiness: {
|
|
77
88
|
ping: 'read',
|
|
78
89
|
},
|
|
@@ -35,7 +35,9 @@ function vectorGroups(executor, inProcess) {
|
|
|
35
35
|
storedVectors: async (ids) => (ids.length === 0 ? new Map() : vectorCopiesOf(await pack('vectors.storedVectors', ids, vectors.storedVectors))),
|
|
36
36
|
},
|
|
37
37
|
vectorViews: {
|
|
38
|
-
storedVectorViews: async (ids) => (ids.length === 0
|
|
38
|
+
storedVectorViews: async (ids) => (ids.length === 0
|
|
39
|
+
? new Map()
|
|
40
|
+
: vectorViewsOf(await pack('vectorViews.storedVectorViews', ids, vectorViews.storedVectorViews))),
|
|
39
41
|
},
|
|
40
42
|
};
|
|
41
43
|
}
|
|
@@ -52,7 +54,7 @@ function probing(hippoRoot, served) {
|
|
|
52
54
|
* `executor` defaults to threads of the store's own, with the server's lock wait. */
|
|
53
55
|
export function workerSqliteStore(hippoRoot, executor = createSqliteExecutor(hippoRoot)) {
|
|
54
56
|
const inProcess = sqliteStore(hippoRoot);
|
|
55
|
-
const { keyAudit, keyWrites, vectorWrites, entryWrites, contextReads, predictions, dagReads, auditLog, quarantine, graphReads } = WORKER_OPS;
|
|
57
|
+
const { keyAudit, keyWrites, vectorWrites, entryWrites, contextReads, predictions, dagReads, auditLog, quarantine, graphReads, objects } = WORKER_OPS;
|
|
56
58
|
const store = {
|
|
57
59
|
...inProcess,
|
|
58
60
|
...onWorkers(executor, 'base', WORKER_OPS.base, inProcess),
|
|
@@ -67,6 +69,7 @@ export function workerSqliteStore(hippoRoot, executor = createSqliteExecutor(hip
|
|
|
67
69
|
auditLog: onWorkers(executor, 'auditLog', auditLog, inProcess.auditLog),
|
|
68
70
|
quarantine: onWorkers(executor, 'quarantine', quarantine, inProcess.quarantine),
|
|
69
71
|
graphReads: onWorkers(executor, 'graphReads', graphReads, inProcess.graphReads),
|
|
72
|
+
objects: onWorkers(executor, 'objects', objects, inProcess.objects),
|
|
70
73
|
readiness: probing(hippoRoot, onWorkers(executor, 'readiness', WORKER_OPS.readiness, inProcess.readiness)),
|
|
71
74
|
close: () => executor.close(),
|
|
72
75
|
};
|
|
@@ -1,50 +1,13 @@
|
|
|
1
1
|
import type { MemoryEntry } from '../core/memory.js';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* second audit row). Tenant-scoped to prevent cross-tenant writes via
|
|
5
|
-
* parent-lookup. Called from invalidation.ts / writeEntry /
|
|
6
|
-
* forgetMemory / archiveRawMemory whenever a child is invalidated,
|
|
7
|
-
* superseded, forgotten, or archived.
|
|
8
|
-
*
|
|
9
|
-
* Quietly no-ops if the target row doesn't exist or isn't a level-2/3
|
|
10
|
-
* summary. Emits a 'summary_marked_dirty' audit row on actual
|
|
11
|
-
* state transitions (0 -> 1) via the audit() helper, which try/catches
|
|
12
|
-
* for missing audit_log (the v27 self-heal scenario).
|
|
13
|
-
*/
|
|
14
|
-
export declare function markSummaryDirty(hippoRoot: string, summaryId: string, tenantId: string, actor?: string): void;
|
|
15
|
-
/**
|
|
16
|
-
* Host-wide loader for L2 topic summaries without an L3 parent.
|
|
17
|
-
* Used by consolidate phase 1.9 (buildEntityProfiles) to cluster L2s into
|
|
18
|
-
* L3 entity profiles. Mirrors loadAllDirtySummaries: SQL-level
|
|
19
|
-
* filter is cheaper than reusing in-memory `survivors` (which doesn't
|
|
20
|
-
* contain L2s freshly created by phase 1.7 buildDag).
|
|
21
|
-
*
|
|
22
|
-
* Returns entries with tenantId attached so per-cluster writes stay
|
|
23
|
-
* tenant-scoped via summary.tenantId.
|
|
24
|
-
*/
|
|
2
|
+
/** Host-wide loader for L2 topic summaries without an L3 parent, for consolidate phase 1.9 (buildEntityProfiles); SQL-level filter, since in-memory
|
|
3
|
+
* `survivors` lacks L2s created by phase 1.7. Entries carry tenantId so per-cluster writes stay tenant-scoped. */
|
|
25
4
|
export declare function loadAllL2Summaries(hippoRoot: string): MemoryEntry[];
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
* rowToEntry), so per-summary children + rebuild UPDATE stay tenant-scoped.
|
|
31
|
-
*
|
|
32
|
-
* Sort: latest_at DESC NULLS LAST, id ASC — same as per-tenant variant so
|
|
33
|
-
* HIPPO_DAG_REBUILD_CAP takes most-recently-changed summaries first.
|
|
34
|
-
*/
|
|
35
|
-
export declare function loadAllDirtySummaries(hippoRoot: string): MemoryEntry[];
|
|
36
|
-
/**
|
|
37
|
-
* Load live children of a DAG summary. Used by
|
|
38
|
-
* rebuildDirtySummaries to regenerate content from the CURRENT child set
|
|
39
|
-
* (not the children at create-time). Skips archived. Tenant-scoped
|
|
40
|
-
* (defence in depth — dag_parent_id is unique-ish but tenant guard is
|
|
41
|
-
* cheap). created column is TEXT NOT NULL since db.ts schema v1.
|
|
42
|
-
*/
|
|
5
|
+
/** Dirty summaries across all tenants, newest change first (latest_at DESC NULLS LAST, id ASC), at most `limit` (all when omitted)
|
|
6
|
+
* so HIPPO_DAG_REBUILD_CAP reads only the most recently changed. Each entry carries its tenantId so later writes stay tenant-scoped. */
|
|
7
|
+
export declare function loadAllDirtySummaries(hippoRoot: string, limit?: number): MemoryEntry[];
|
|
8
|
+
/** Live (non-archived) children of a DAG summary, so a rebuild regenerates from the CURRENT child set; tenant-scoped as defence in depth. */
|
|
43
9
|
export declare function loadChildrenOfSummary(hippoRoot: string, summaryId: string, tenantId: string): MemoryEntry[];
|
|
44
|
-
/**
|
|
45
|
-
* Patch applied by applyRebuildResult. Two-branch shape
|
|
46
|
-
* (bumpRebuildCount false for zero-child case, true for normal rebuild).
|
|
47
|
-
*/
|
|
10
|
+
/** Patch applied by applyRebuildResult; `bumpRebuildCount` is false for the zero-child case, true for a normal rebuild. */
|
|
48
11
|
export interface RebuildPatch {
|
|
49
12
|
content: string;
|
|
50
13
|
descendant_count: number;
|
|
@@ -54,28 +17,13 @@ export interface RebuildPatch {
|
|
|
54
17
|
zeroChildren: boolean;
|
|
55
18
|
actor: string;
|
|
56
19
|
}
|
|
57
|
-
/**
|
|
58
|
-
*
|
|
59
|
-
* prepared UPDATE statement plus syncFtsRow inside one write scope.
|
|
60
|
-
* WHERE includes `AND summary_dirty = 1` so concurrent sleep's race-loser
|
|
61
|
-
* becomes a no-op (no rebuild_count bump, no audit row).
|
|
62
|
-
*
|
|
63
|
-
* Returns `{ changed, refused }`. `changed` is true when this call's UPDATE
|
|
64
|
-
* (content or metadata-only) affected a row; false on race-loss / unknown id
|
|
65
|
-
* / archived / wrong dag_level. `refused` is true only when a tombstone hit
|
|
66
|
-
* suppressed the content write AND the metadata UPDATE still landed — see
|
|
67
|
-
* the return-semantics comment below for the full contract.
|
|
68
|
-
*/
|
|
20
|
+
/** Apply a rebuild result to a dirty summary in one write scope (UPDATE plus syncFtsRow); `AND summary_dirty = 1` makes a concurrent race-loser a no-op.
|
|
21
|
+
* Returns `{ changed, refused }`: `refused` only when a tombstone hit suppressed the content write while the metadata UPDATE still landed. */
|
|
69
22
|
export declare function applyRebuildResult(hippoRoot: string, summary: MemoryEntry, patch: RebuildPatch): {
|
|
70
23
|
changed: boolean;
|
|
71
24
|
refused: boolean;
|
|
72
25
|
};
|
|
73
|
-
/**
|
|
74
|
-
*
|
|
75
|
-
* each member's writeEntry marks the new parent dirty, so the same cycle's rebuild would redo every new summary.
|
|
76
|
-
*
|
|
77
|
-
* Idempotent: no-op + no audit if summary isn't dirty. Audit
|
|
78
|
-
* source='buildDag-clean' distinguishes it from the rebuild's source.
|
|
79
|
-
*/
|
|
26
|
+
/** Clear summary_dirty on a new summary after buildDag's child-link loop (each member's writeEntry marks the parent dirty, so the same cycle would rebuild it).
|
|
27
|
+
* Idempotent (no-op, no audit if not dirty); audit source='buildDag-clean' distinguishes it from the rebuild's. */
|
|
80
28
|
export declare function clearSummaryDirtyAfterBuild(hippoRoot: string, summaryId: string, tenantId: string, actor?: string, source?: string): void;
|
|
81
29
|
//# sourceMappingURL=summaries.d.ts.map
|