hippo-memory 1.70.0 → 1.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/agent-memories/apply.d.ts +0 -11
- package/dist/agent-memories/apply.js +6 -21
- package/dist/agent-memories/claude-code.d.ts +4 -2
- package/dist/agent-memories/claude-code.js +15 -6
- package/dist/agent-memories/codex.js +1 -1
- package/dist/agent-memories/copilot.d.ts +1 -3
- package/dist/agent-memories/copilot.js +1 -17
- package/dist/agent-memories/files.js +23 -12
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/project-folds.d.ts +10 -0
- package/dist/agent-memories/project-folds.js +34 -0
- package/dist/agent-memories/report.js +2 -1
- package/dist/agent-memories/sync.d.ts +4 -2
- package/dist/agent-memories/sync.js +18 -11
- package/dist/api/assemble.d.ts +7 -44
- package/dist/api/assemble.js +3 -23
- package/dist/api/audit.d.ts +33 -1
- package/dist/api/audit.js +48 -1
- package/dist/api/auth.d.ts +20 -26
- package/dist/api/auth.js +43 -29
- package/dist/api/auto-sleep.d.ts +5 -2
- package/dist/api/auto-sleep.js +9 -5
- package/dist/api/availability.d.ts +2 -15
- package/dist/api/availability.js +4 -18
- package/dist/api/cards.d.ts +42 -0
- package/dist/api/cards.js +52 -0
- package/dist/api/conflicts.d.ts +28 -0
- package/dist/api/conflicts.js +61 -0
- package/dist/api/context-render.js +4 -3
- package/dist/api/context-select.js +12 -15
- package/dist/api/context-types.d.ts +10 -35
- package/dist/api/context.d.ts +5 -22
- package/dist/api/context.js +38 -46
- package/dist/api/continuity.d.ts +47 -0
- package/dist/api/continuity.js +66 -0
- package/dist/{cli → api}/correction-latency.d.ts +2 -14
- package/dist/{cli → api}/correction-latency.js +2 -14
- package/dist/api/dormant.d.ts +5 -21
- package/dist/api/dormant.js +11 -28
- package/dist/api/drill-down.d.ts +7 -46
- package/dist/api/drill-down.js +6 -27
- package/dist/api/embeddings.d.ts +17 -0
- package/dist/api/embeddings.js +28 -0
- package/dist/api/error-reply.d.ts +8 -0
- package/dist/api/error-reply.js +21 -0
- package/dist/api/forget.d.ts +11 -26
- package/dist/api/forget.js +23 -35
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +5 -9
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +6 -2
- package/dist/api/index.js +6 -2
- package/dist/api/instruction-detect.js +21 -6
- package/dist/api/learn.d.ts +4 -0
- package/dist/api/learn.js +53 -27
- package/dist/api/ledger-db.d.ts +2 -5
- package/dist/api/ledger-db.js +5 -35
- package/dist/api/memories.d.ts +23 -0
- package/dist/api/memories.js +46 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.js +5 -3
- package/dist/api/outcome.js +1 -1
- package/dist/api/pilot-arm.d.ts +1 -11
- package/dist/api/pilot-arm.js +5 -45
- package/dist/api/predictions.d.ts +11 -0
- package/dist/api/predictions.js +24 -0
- package/dist/api/projects.d.ts +21 -0
- package/dist/api/projects.js +24 -0
- package/dist/api/promote.d.ts +13 -17
- package/dist/api/promote.js +12 -20
- package/dist/api/prompt-hook.d.ts +19 -6
- package/dist/api/prompt-hook.js +54 -13
- package/dist/api/provenance-coverage.d.ts +14 -0
- package/dist/{cli → api}/provenance-coverage.js +2 -6
- package/dist/api/recall-cli.d.ts +58 -0
- package/dist/api/recall-cli.js +103 -0
- package/dist/api/recall-core.js +17 -9
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +17 -84
- package/dist/api/recall-history.js +15 -88
- package/dist/api/recall-pipeline.d.ts +2 -3
- package/dist/api/recall-pipeline.js +21 -15
- package/dist/api/recall-request.js +1 -1
- package/dist/api/recall-types.d.ts +64 -304
- package/dist/api/recall.d.ts +3 -34
- package/dist/api/recall.js +63 -89
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +20 -2
- package/dist/api/remember.js +16 -3
- package/dist/api/session-end.d.ts +22 -0
- package/dist/api/session-end.js +101 -0
- package/dist/api/sleep-run.d.ts +2 -4
- package/dist/api/sleep-run.js +28 -28
- package/dist/api/sleep.d.ts +9 -28
- package/dist/api/status.d.ts +24 -0
- package/dist/api/status.js +40 -0
- package/dist/api/store-init.d.ts +4 -0
- package/dist/api/store-init.js +9 -0
- package/dist/api/tokens.d.ts +3 -10
- package/dist/api/tokens.js +4 -11
- package/dist/api/types.d.ts +8 -29
- package/dist/api/types.js +10 -23
- package/dist/capture/caller-session.d.ts +0 -3
- package/dist/capture/caller-session.js +1 -12
- package/dist/capture/capture-error.d.ts +2 -2
- package/dist/capture/capture-error.js +23 -18
- package/dist/capture/codex-patch.js +3 -1
- package/dist/capture/command.d.ts +4 -12
- package/dist/capture/command.js +39 -114
- package/dist/capture/compact.d.ts +4 -15
- package/dist/capture/compact.js +26 -30
- package/dist/capture/compaction-items-caller.js +11 -20
- package/dist/capture/compaction-record.d.ts +7 -93
- package/dist/capture/compaction-record.js +34 -399
- package/dist/capture/compaction-spool.d.ts +5 -3
- package/dist/capture/compaction-spool.js +21 -7
- package/dist/capture/copilot-transcript.d.ts +2 -1
- package/dist/capture/copilot-transcript.js +2 -1
- package/dist/capture/extract.d.ts +5 -2
- package/dist/capture/extract.js +4 -3
- package/dist/capture/failure-caller.d.ts +1 -1
- package/dist/capture/failure-caller.js +21 -16
- package/dist/capture/failure-reading.d.ts +2 -1
- package/dist/capture/failure-reading.js +7 -9
- package/dist/capture/pre-compact-caller.js +5 -4
- package/dist/capture/session-digest.d.ts +1 -1
- package/dist/capture/session-digest.js +17 -10
- package/dist/capture/session-end-caller.js +2 -1
- package/dist/capture/session-worker.js +3 -4
- package/dist/capture/transcript.d.ts +4 -11
- package/dist/capture/transcript.js +10 -21
- package/dist/capture/working-state.d.ts +4 -2
- package/dist/capture/working-state.js +4 -2
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +1 -59
- package/dist/cli/audit-prune.js +2 -61
- package/dist/cli/audit.d.ts +1 -1
- package/dist/cli/audit.js +42 -43
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +61 -44
- package/dist/cli/briefs.d.ts +1 -4
- package/dist/cli/briefs.js +42 -301
- package/dist/cli/card.d.ts +2 -2
- package/dist/cli/card.js +63 -56
- package/dist/cli/client.d.ts +12 -27
- package/dist/cli/client.js +41 -44
- package/dist/cli/compact-resume-payload.js +4 -3
- package/dist/cli/context.d.ts +2 -3
- package/dist/cli/context.js +22 -18
- package/dist/cli/continuity.d.ts +6 -6
- package/dist/cli/continuity.js +81 -86
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +88 -116
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +55 -34
- package/dist/cli/decisions.d.ts +2 -4
- package/dist/cli/decisions.js +18 -309
- package/dist/cli/eval.d.ts +1 -1
- package/dist/cli/eval.js +27 -26
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +2 -3
- package/dist/cli/explain.js +25 -27
- package/dist/cli/flag-values.d.ts +6 -1
- package/dist/cli/flag-values.js +42 -15
- package/dist/cli/flags.d.ts +0 -288
- package/dist/cli/flags.js +3 -138
- package/dist/cli/github.d.ts +14 -0
- package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
- package/dist/cli/goals.d.ts +2 -2
- package/dist/cli/goals.js +46 -50
- package/dist/cli/graph.d.ts +3 -0
- package/dist/cli/graph.js +83 -0
- package/dist/cli/hook-runtime.d.ts +12 -32
- package/dist/cli/hook-runtime.js +21 -64
- package/dist/cli/incidents.d.ts +3 -0
- package/dist/cli/incidents.js +112 -0
- package/dist/cli/init.d.ts +2 -2
- package/dist/cli/init.js +33 -30
- package/dist/cli/install-steps.d.ts +2 -1
- package/dist/cli/install-steps.js +13 -14
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +4 -1
- package/dist/cli/lenient-id.d.ts +2 -0
- package/dist/cli/lenient-id.js +13 -0
- package/dist/cli/maintenance.d.ts +5 -5
- package/dist/cli/maintenance.js +37 -43
- package/dist/cli/notes.d.ts +2 -0
- package/dist/cli/notes.js +41 -0
- package/dist/cli/object-verbs.js +4 -3
- package/dist/cli/open-browser.d.ts +14 -0
- package/dist/cli/open-browser.js +26 -0
- package/dist/cli/owner-validation.d.ts +5 -28
- package/dist/cli/owner-validation.js +5 -28
- package/dist/cli/playbooks.d.ts +3 -4
- package/dist/cli/playbooks.js +131 -300
- package/dist/cli/predictions.d.ts +3 -0
- package/dist/cli/predictions.js +175 -0
- package/dist/cli/print.d.ts +2 -5
- package/dist/cli/print.js +3 -5
- package/dist/cli/projects.d.ts +2 -2
- package/dist/cli/projects.js +31 -25
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +67 -137
- package/dist/cli/refine-llm.d.ts +5 -31
- package/dist/cli/refine-llm.js +23 -50
- package/dist/cli/remember.d.ts +3 -3
- package/dist/cli/remember.js +134 -192
- package/dist/cli/scheduler.d.ts +2 -17
- package/dist/cli/scheduler.js +14 -19
- package/dist/cli/serve.js +23 -14
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +143 -214
- package/dist/cli/setup.d.ts +4 -4
- package/dist/cli/setup.js +35 -30
- package/dist/cli/shared.d.ts +7 -25
- package/dist/cli/shared.js +17 -60
- package/dist/cli/slack.d.ts +2 -2
- package/dist/cli/slack.js +19 -23
- package/dist/cli/sleep-render.js +6 -3
- package/dist/cli/sleep.d.ts +3 -2
- package/dist/cli/sleep.js +17 -49
- package/dist/cli/status.d.ts +11 -14
- package/dist/cli/status.js +74 -120
- package/dist/cli/stdin.d.ts +4 -6
- package/dist/cli/stdin.js +2 -3
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +87 -108
- package/dist/cli/usage.d.ts +0 -79
- package/dist/cli/usage.js +1 -689
- package/dist/cli/verb-row.d.ts +32 -0
- package/dist/cli/verb-row.js +6 -0
- package/dist/cli/verbs/health.d.ts +27 -0
- package/dist/cli/verbs/health.js +232 -0
- package/dist/cli/verbs/memory.d.ts +16 -0
- package/dist/cli/verbs/memory.js +244 -0
- package/dist/cli/verbs/objects.d.ts +20 -0
- package/dist/cli/verbs/objects.js +254 -0
- package/dist/cli/verbs/sessions.d.ts +31 -0
- package/dist/cli/verbs/sessions.js +312 -0
- package/dist/cli/verbs.d.ts +81 -0
- package/dist/cli/verbs.js +7 -0
- package/dist/cli/versioned-verbs.d.ts +51 -0
- package/dist/cli/versioned-verbs.js +79 -0
- package/dist/cli.d.ts +1 -654
- package/dist/cli.js +44 -510
- package/dist/connectors/dlq.d.ts +39 -3
- package/dist/connectors/dlq.js +37 -3
- package/dist/connectors/github/backfill.d.ts +5 -25
- package/dist/connectors/github/backfill.js +26 -52
- package/dist/connectors/github/deletion.d.ts +4 -18
- package/dist/connectors/github/deletion.js +2 -15
- package/dist/connectors/github/dlq.d.ts +8 -33
- package/dist/connectors/github/dlq.js +34 -93
- package/dist/connectors/github/ingest.d.ts +4 -12
- package/dist/connectors/github/ingest.js +5 -36
- package/dist/connectors/github/octokit-client.d.ts +4 -16
- package/dist/connectors/github/octokit-client.js +27 -24
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +2 -24
- package/dist/connectors/github/tenant-routing.js +4 -26
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +3 -15
- package/dist/connectors/github/types.js +2 -9
- package/dist/connectors/github/webhook.d.ts +3 -16
- package/dist/connectors/github/webhook.js +38 -23
- package/dist/connectors/ingest.d.ts +10 -0
- package/dist/connectors/ingest.js +28 -0
- package/dist/connectors/slack/backfill.d.ts +4 -17
- package/dist/connectors/slack/backfill.js +4 -13
- package/dist/connectors/slack/dlq.d.ts +2 -19
- package/dist/connectors/slack/dlq.js +51 -90
- package/dist/connectors/slack/ingest.d.ts +4 -9
- package/dist/connectors/slack/ingest.js +4 -30
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/tenant-routing.d.ts +2 -19
- package/dist/connectors/slack/tenant-routing.js +2 -21
- package/dist/connectors/slack/transform.d.ts +2 -18
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +3 -9
- package/dist/connectors/slack/types.js +2 -4
- package/dist/connectors/slack/web-client.js +33 -27
- package/dist/connectors/slack/webhook.d.ts +3 -19
- package/dist/connectors/slack/webhook.js +6 -26
- package/dist/connectors/slack/workspaces.d.ts +4 -24
- package/dist/connectors/slack/workspaces.js +4 -24
- package/dist/consolidate/conflicts.js +7 -15
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/consolidate/dag.d.ts +5 -28
- package/dist/consolidate/dag.js +29 -84
- package/dist/consolidate/decay.js +7 -19
- package/dist/consolidate/dedupe.d.ts +13 -52
- package/dist/consolidate/dedupe.js +18 -74
- package/dist/consolidate/flush-units.d.ts +3 -4
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +3 -26
- package/dist/consolidate/half-life-migration.js +11 -28
- package/dist/consolidate/llm-passes.js +49 -40
- package/dist/consolidate/memory-value-weights.d.ts +2 -13
- package/dist/consolidate/memory-value-weights.js +2 -13
- package/dist/consolidate/memory-value.d.ts +11 -84
- package/dist/consolidate/memory-value.js +18 -105
- package/dist/consolidate/merge.js +12 -33
- package/dist/consolidate/physics-pass.d.ts +6 -1
- package/dist/consolidate/physics-pass.js +27 -9
- package/dist/consolidate/replay.d.ts +6 -38
- package/dist/consolidate/replay.js +25 -56
- package/dist/consolidate/run.js +1 -1
- package/dist/consolidate/sleep.d.ts +1 -8
- package/dist/consolidate/sleep.js +13 -22
- package/dist/consolidate/trace.d.ts +3 -18
- package/dist/consolidate/trace.js +3 -18
- package/dist/consolidate/traces.js +9 -25
- package/dist/core/ablation.d.ts +14 -91
- package/dist/core/ablation.js +16 -91
- package/dist/core/active-scope.d.ts +7 -0
- package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
- package/dist/core/ambient.d.ts +5 -8
- package/dist/core/ambient.js +40 -26
- package/dist/core/api-errors.d.ts +16 -0
- package/dist/core/api-errors.js +20 -0
- package/dist/core/capture-contract.d.ts +4 -2
- package/dist/core/capture-contract.js +4 -2
- package/dist/core/card.d.ts +4 -1
- package/dist/core/card.js +11 -1
- package/dist/core/compaction-timing.d.ts +7 -0
- package/dist/core/compaction-timing.js +9 -0
- package/dist/core/compare.d.ts +11 -67
- package/dist/core/compare.js +9 -63
- package/dist/core/config.d.ts +10 -24
- package/dist/core/config.js +20 -16
- package/dist/core/cosine.d.ts +3 -0
- package/dist/core/cosine.js +19 -0
- package/dist/core/handoff.d.ts +1 -7
- package/dist/core/handoff.js +1 -7
- package/dist/core/markdown.d.ts +6 -0
- package/dist/{store → core}/markdown.js +23 -22
- package/dist/core/memory-audit.d.ts +17 -0
- package/dist/core/memory-audit.js +54 -0
- package/dist/core/memory-quality.js +1 -1
- package/dist/core/memory.d.ts +51 -168
- package/dist/core/memory.js +76 -239
- package/dist/{consolidate → core}/merged-row.d.ts +1 -1
- package/dist/{consolidate → core}/merged-row.js +3 -2
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/core/physics-config.d.ts +1 -4
- package/dist/core/physics-config.js +3 -8
- package/dist/core/physics.d.ts +15 -61
- package/dist/core/physics.js +65 -138
- package/dist/core/prediction.d.ts +3 -0
- package/dist/core/prediction.js +6 -0
- package/dist/core/project-identity.d.ts +20 -58
- package/dist/core/project-identity.js +27 -39
- package/dist/core/project-remote.js +13 -2
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/core/recall-scope.d.ts +69 -0
- package/dist/core/recall-scope.js +138 -0
- package/dist/core/salience.d.ts +1 -7
- package/dist/core/salience.js +1 -7
- package/dist/dashboard/dashboard-actions.js +2 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
- package/dist/dashboard/dashboard-snapshot.js +11 -2
- package/dist/dashboard/dashboard-types.d.ts +2 -1
- package/dist/dashboard/dashboard.d.ts +1 -0
- package/dist/dashboard/dashboard.js +50 -4
- package/dist/db/busy.d.ts +3 -8
- package/dist/db/busy.js +37 -33
- package/dist/db/connect.js +7 -8
- package/dist/db/index.d.ts +3 -3
- package/dist/db/index.js +3 -3
- package/dist/db/migrate.js +3 -3
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v14.js +2 -3
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +2 -3
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +2 -7
- package/dist/db/migrations/v22.js +4 -17
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +2 -4
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +4 -18
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +2 -15
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +9 -20
- package/dist/db/migrations/v40.js +2 -9
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +1 -1
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v55.d.ts +3 -0
- package/dist/db/migrations/v55.js +17 -0
- package/dist/db/open.d.ts +2 -2
- package/dist/db/open.js +21 -9
- package/dist/db/physics-state.d.ts +6 -22
- package/dist/db/physics-state.js +28 -39
- package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
- package/dist/db/raw-archive-mirror-cleanup.js +2 -17
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -2
- package/dist/db/vector-store.d.ts +2 -0
- package/dist/db/vector-store.js +25 -5
- package/dist/db/wal-checkpointer.js +2 -1
- package/dist/doctor.js +85 -27
- package/dist/embeddings/local.d.ts +62 -0
- package/dist/embeddings/local.js +146 -0
- package/dist/embeddings/provider.d.ts +43 -0
- package/dist/{store/embeddings → embeddings}/provider.js +58 -83
- package/dist/embeddings/transformers.d.ts +26 -0
- package/dist/embeddings/transformers.js +89 -0
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +3 -2
- package/dist/eval/eval-stats.d.ts +15 -53
- package/dist/eval/eval-stats.js +12 -42
- package/dist/eval/eval-suite.d.ts +2 -13
- package/dist/eval/eval-suite.js +91 -45
- package/dist/eval/eval.d.ts +6 -24
- package/dist/eval/eval.js +8 -35
- package/dist/eval/judgment.d.ts +0 -3
- package/dist/eval/judgment.js +30 -15
- package/dist/extensions/openclaw-plugin/index.js +1 -1
- package/dist/graph/extract.d.ts +5 -27
- package/dist/graph/extract.js +10 -36
- package/dist/graph/recall.d.ts +7 -20
- package/dist/graph/recall.js +15 -77
- package/dist/graph/stream.d.ts +7 -39
- package/dist/graph/stream.js +11 -34
- package/dist/graph/view.d.ts +9 -35
- package/dist/graph/view.js +24 -44
- package/dist/graph/write.d.ts +1 -1
- package/dist/graph/write.js +9 -9
- package/dist/hooks/codex-session.js +3 -2
- package/dist/hooks/codex-wrapper.js +4 -3
- package/dist/hooks/copilot.js +2 -1
- package/dist/hooks/hook-blocks.d.ts +6 -2
- package/dist/hooks/hook-blocks.js +37 -124
- package/dist/hooks/json-hooks.d.ts +4 -36
- package/dist/hooks/json-hooks.js +22 -59
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +17 -81
- package/dist/hooks/shared.d.ts +6 -21
- package/dist/hooks/shared.js +31 -33
- package/dist/importers/core.d.ts +12 -37
- package/dist/importers/core.js +10 -28
- package/dist/importers/markdown-parse.d.ts +8 -22
- package/dist/importers/markdown-parse.js +8 -25
- package/dist/importers/markdown.js +3 -12
- package/dist/importers/sources.js +12 -39
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +31 -85
- package/dist/index.d.ts +8 -3
- package/dist/index.js +8 -3
- package/dist/learn/autolearn.d.ts +23 -42
- package/dist/learn/autolearn.js +45 -52
- package/dist/learn/churn-git.js +13 -4
- package/dist/learn/extract.d.ts +3 -2
- package/dist/learn/extract.js +8 -8
- package/dist/learn/forward-claim-detector.d.ts +6 -30
- package/dist/learn/forward-claim-detector.js +18 -68
- package/dist/learn/invalidation.d.ts +6 -18
- package/dist/learn/invalidation.js +18 -31
- package/dist/mcp/admin-tools.d.ts +2 -2
- package/dist/mcp/admin-tools.js +30 -53
- package/dist/mcp/format.js +3 -2
- package/dist/mcp/framing.d.ts +1 -0
- package/dist/mcp/framing.js +1 -1
- package/dist/mcp/memory-tools.js +7 -10
- package/dist/mcp/protocol.d.ts +15 -29
- package/dist/mcp/protocol.js +26 -16
- package/dist/mcp/recall-tools.js +14 -11
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +12 -27
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +5 -16
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +5 -11
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +68 -16
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +47 -22
- package/dist/objects/customer-notes.d.ts +9 -44
- package/dist/objects/customer-notes.js +7 -48
- package/dist/objects/decisions.d.ts +14 -52
- package/dist/objects/decisions.js +15 -53
- package/dist/objects/descriptor.d.ts +1 -1
- package/dist/objects/incidents.d.ts +9 -40
- package/dist/objects/incidents.js +7 -41
- package/dist/objects/lifecycle.d.ts +1 -1
- package/dist/objects/lifecycle.js +2 -1
- package/dist/objects/policies.d.ts +13 -91
- package/dist/objects/policies.js +13 -99
- package/dist/objects/processes.d.ts +9 -54
- package/dist/objects/processes.js +7 -61
- package/dist/objects/project-briefs.d.ts +13 -57
- package/dist/objects/project-briefs.js +16 -78
- package/dist/objects/skills.d.ts +9 -44
- package/dist/objects/skills.js +8 -54
- package/dist/postinstall.js +7 -20
- package/dist/predictions/planning-fallacy.d.ts +11 -34
- package/dist/rerankers/clef.js +6 -37
- package/dist/rerankers/cross-encoder.d.ts +31 -2
- package/dist/rerankers/cross-encoder.js +65 -101
- package/dist/rerankers/index.js +5 -4
- package/dist/rerankers/jev.js +11 -10
- package/dist/rerankers/llm.d.ts +2 -11
- package/dist/rerankers/llm.js +14 -14
- package/dist/rerankers/outage-warning.d.ts +5 -2
- package/dist/rerankers/outage-warning.js +7 -4
- package/dist/rerankers/remote.d.ts +1 -0
- package/dist/rerankers/remote.js +2 -0
- package/dist/rerankers/types.d.ts +2 -14
- package/dist/search/bm25-search.js +1 -1
- package/dist/search/boosts.d.ts +0 -2
- package/dist/search/boosts.js +3 -3
- package/dist/search/embed-memories.d.ts +9 -0
- package/dist/search/embed-memories.js +377 -0
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +93 -0
- package/dist/search/hybrid.d.ts +11 -2
- package/dist/search/hybrid.js +9 -4
- package/dist/search/multihop.js +2 -3
- package/dist/search/path-context.d.ts +5 -18
- package/dist/search/path-context.js +5 -18
- package/dist/search/physics-search.d.ts +6 -3
- package/dist/search/physics-search.js +29 -19
- package/dist/search/rerank.js +1 -1
- package/dist/search/rrf.d.ts +7 -35
- package/dist/search/rrf.js +5 -30
- package/dist/search/vector.d.ts +13 -4
- package/dist/search/vector.js +40 -13
- package/dist/server/auth.d.ts +11 -28
- package/dist/server/auth.js +49 -32
- package/dist/server/boot.d.ts +2 -21
- package/dist/server/boot.js +69 -161
- package/dist/server/client-ip.d.ts +3 -21
- package/dist/server/client-ip.js +8 -30
- package/dist/server/deadline.d.ts +0 -2
- package/dist/server/deadline.js +1 -7
- package/dist/server/defaults.d.ts +4 -0
- package/dist/server/defaults.js +5 -0
- package/dist/server/key-check-bounds.d.ts +2 -1
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +19 -4
- package/dist/server/mcp-http.js +24 -53
- package/dist/server/rate-limit.d.ts +5 -18
- package/dist/server/rate-limit.js +4 -13
- package/dist/server/request.d.ts +4 -8
- package/dist/server/request.js +16 -19
- package/dist/server/route-checks.d.ts +7 -0
- package/dist/server/route-checks.js +42 -0
- package/dist/server/route-table.d.ts +9 -8
- package/dist/server/route-table.js +127 -139
- package/dist/server/routes/admin.d.ts +8 -8
- package/dist/server/routes/admin.js +35 -49
- package/dist/server/routes/customer-notes.d.ts +6 -6
- package/dist/server/routes/customer-notes.js +8 -14
- package/dist/server/routes/decisions.d.ts +6 -6
- package/dist/server/routes/decisions.js +12 -21
- package/dist/server/routes/incidents.d.ts +6 -6
- package/dist/server/routes/incidents.js +14 -25
- package/dist/server/routes/memories.d.ts +9 -9
- package/dist/server/routes/memories.js +20 -63
- package/dist/server/routes/object-routes.d.ts +6 -11
- package/dist/server/routes/object-routes.js +11 -22
- package/dist/server/routes/policies.d.ts +7 -7
- package/dist/server/routes/policies.js +12 -22
- package/dist/server/routes/predictions.d.ts +6 -6
- package/dist/server/routes/predictions.js +22 -38
- package/dist/server/routes/processes.d.ts +6 -6
- package/dist/server/routes/processes.js +17 -28
- package/dist/server/routes/project-briefs.d.ts +7 -7
- package/dist/server/routes/project-briefs.js +11 -20
- package/dist/server/routes/recall.d.ts +5 -5
- package/dist/server/routes/recall.js +16 -45
- package/dist/server/routes/skills.d.ts +7 -7
- package/dist/server/routes/skills.js +10 -22
- package/dist/server/server-detect.d.ts +15 -53
- package/dist/server/server-detect.js +55 -96
- package/dist/server/sleep-child.js +26 -7
- package/dist/server/sleep-offload.d.ts +11 -5
- package/dist/server/sleep-offload.js +21 -12
- package/dist/server/types.d.ts +32 -18
- package/dist/server/validation.d.ts +3 -2
- package/dist/server/validation.js +15 -33
- package/dist/server.d.ts +7 -6
- package/dist/server.js +8 -6
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +73 -0
- package/dist/sharing/project-merge.d.ts +11 -19
- package/dist/sharing/project-merge.js +63 -125
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +40 -0
- package/dist/sharing/share.js +229 -0
- package/dist/store/ambient.js +9 -15
- package/dist/store/audit-event.d.ts +5 -13
- package/dist/store/audit-event.js +4 -12
- package/dist/store/audit.d.ts +2 -21
- package/dist/store/audit.js +8 -67
- package/dist/store/auth.d.ts +10 -8
- package/dist/store/auth.js +17 -12
- package/dist/store/candidates.d.ts +23 -5
- package/dist/store/candidates.js +119 -71
- package/dist/store/capture-write.d.ts +17 -0
- package/dist/store/capture-write.js +35 -0
- package/dist/store/card-detail.d.ts +2 -1
- package/dist/store/card-detail.js +2 -1
- package/dist/store/cards.d.ts +14 -9
- package/dist/store/cards.js +72 -126
- package/dist/store/compaction-caller.d.ts +18 -0
- package/dist/store/compaction-caller.js +29 -0
- package/dist/store/compactions-record.d.ts +115 -0
- package/dist/store/compactions-record.js +417 -0
- package/dist/store/compactions.js +6 -4
- package/dist/store/conflicts.d.ts +4 -21
- package/dist/store/conflicts.js +76 -152
- package/dist/store/connectors/dlq.d.ts +10 -0
- package/dist/store/connectors/dlq.js +32 -0
- package/dist/store/connectors/github.d.ts +14 -16
- package/dist/store/connectors/github.js +34 -57
- package/dist/store/connectors/slack.d.ts +2 -11
- package/dist/store/connectors/slack.js +18 -47
- package/dist/store/dashboard-reads.js +11 -14
- package/dist/store/delete-and-batch.d.ts +17 -31
- package/dist/store/delete-and-batch.js +84 -67
- package/dist/store/delivery-recorder.d.ts +15 -4
- package/dist/store/delivery-recorder.js +34 -17
- package/dist/store/descendant-page.js +6 -3
- package/dist/store/diagnostics.js +6 -13
- package/dist/store/dormant.d.ts +8 -30
- package/dist/store/dormant.js +18 -57
- package/dist/store/embeddings/index.d.ts +11 -90
- package/dist/store/embeddings/index.js +18 -523
- package/dist/store/entry-reads.d.ts +34 -61
- package/dist/store/entry-reads.js +111 -136
- package/dist/store/entry-row.d.ts +6 -35
- package/dist/store/entry-row.js +9 -37
- package/dist/store/entry-writes.d.ts +12 -18
- package/dist/store/entry-writes.js +46 -44
- package/dist/store/failure-log-at.d.ts +8 -0
- package/dist/store/failure-log-at.js +16 -0
- package/dist/store/failure-log.d.ts +2 -2
- package/dist/store/failure-log.js +5 -3
- package/dist/{trust → store}/gated-write.d.ts +3 -1
- package/dist/{trust → store}/gated-write.js +7 -5
- package/dist/store/goals.d.ts +3 -40
- package/dist/store/goals.js +41 -178
- package/dist/store/graph-queue.d.ts +6 -22
- package/dist/store/graph-queue.js +14 -45
- package/dist/store/graph-reads.d.ts +11 -35
- package/dist/store/graph-reads.js +24 -60
- package/dist/store/graph-rows.d.ts +3 -6
- package/dist/store/graph-rows.js +6 -9
- package/dist/store/graph-view-rows.d.ts +2 -1
- package/dist/store/graph-view-rows.js +2 -1
- package/dist/store/graph-writes.d.ts +10 -35
- package/dist/store/graph-writes.js +59 -106
- package/dist/store/half-life.d.ts +2 -1
- package/dist/store/half-life.js +14 -16
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +22 -40
- package/dist/store/index-and-stats.d.ts +6 -19
- package/dist/store/index-and-stats.js +36 -84
- package/dist/store/key-writes.js +1 -1
- package/dist/store/ledger-turn.d.ts +9 -0
- package/dist/store/ledger-turn.js +38 -0
- package/dist/store/mirrors.d.ts +2 -6
- package/dist/store/mirrors.js +24 -29
- package/dist/store/open.d.ts +0 -4
- package/dist/store/open.js +42 -62
- package/dist/store/pilot-arm.d.ts +12 -0
- package/dist/store/pilot-arm.js +42 -0
- package/dist/store/planning-fallacy-evidence.d.ts +2 -30
- package/dist/store/planning-fallacy-evidence.js +8 -37
- package/dist/store/port.d.ts +91 -82
- package/dist/store/port.js +8 -0
- package/dist/store/predictions.d.ts +12 -53
- package/dist/store/predictions.js +41 -125
- package/dist/store/project-tags.d.ts +62 -0
- package/dist/store/project-tags.js +67 -0
- package/dist/{cli → store}/quality-repair.js +15 -31
- package/dist/store/quarantine.js +2 -1
- package/dist/store/raw-archive.d.ts +4 -16
- package/dist/store/raw-archive.js +14 -29
- package/dist/store/recall-trace.d.ts +12 -77
- package/dist/store/recall-trace.js +37 -97
- package/dist/store/rejected-values.js +9 -20
- package/dist/store/rejection-probe.d.ts +4 -0
- package/dist/store/rejection-probe.js +19 -0
- package/dist/store/rejection.d.ts +10 -73
- package/dist/store/rejection.js +12 -84
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +9 -19
- package/dist/store/rows.js +36 -34
- package/dist/store/rule-sql.d.ts +14 -0
- package/dist/store/rule-sql.js +56 -0
- package/dist/store/search-rows.d.ts +7 -38
- package/dist/store/search-rows.js +23 -54
- package/dist/store/sessions.d.ts +10 -47
- package/dist/store/sessions.js +21 -75
- package/dist/store/set-aside.d.ts +14 -0
- package/dist/store/set-aside.js +23 -0
- package/dist/store/sqlite/busy.d.ts +3 -0
- package/dist/store/sqlite/busy.js +8 -0
- package/dist/store/sqlite/connector-events-group.js +5 -8
- package/dist/store/sqlite/connector-writes-group.js +3 -3
- package/dist/store/sqlite/entry-writes-group.js +4 -4
- package/dist/store/sqlite/error-codec.js +8 -5
- package/dist/store/sqlite/executor.d.ts +2 -1
- package/dist/store/sqlite/executor.js +12 -5
- package/dist/store/sqlite/graph-reads-group.js +1 -1
- package/dist/store/sqlite/held-connection.d.ts +9 -0
- package/dist/store/sqlite/held-connection.js +41 -0
- package/dist/store/sqlite/local.d.ts +3 -3
- package/dist/store/sqlite/local.js +1 -0
- package/dist/store/sqlite/object-rows.d.ts +1 -1
- package/dist/store/sqlite/object-rows.js +6 -3
- package/dist/store/sqlite/objects-group.d.ts +1 -1
- package/dist/store/sqlite/objects-group.js +5 -3
- package/dist/store/sqlite/quarantine-group.js +2 -2
- package/dist/store/sqlite/store.d.ts +1 -4
- package/dist/store/sqlite/store.js +16 -15
- package/dist/store/sqlite/vector-reads-group.js +2 -2
- package/dist/store/sqlite/worker-jobs.js +1 -1
- package/dist/store/sqlite/worker-ops.d.ts +13 -2
- package/dist/store/sqlite/worker-ops.js +13 -2
- package/dist/store/sqlite/worker-store.js +5 -2
- package/dist/store/summaries.d.ts +11 -63
- package/dist/store/summaries.js +37 -148
- package/dist/store/summary-dirty.js +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +2 -16
- package/dist/store/tenant.js +4 -19
- package/dist/store/token-ledger.d.ts +13 -50
- package/dist/store/token-ledger.js +19 -85
- package/dist/store/usage-reports.js +5 -13
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +171 -0
- package/dist/store/working-memory.d.ts +6 -25
- package/dist/store/working-memory.js +18 -52
- package/dist/support-bundle.js +9 -8
- package/dist/trust/reject-flow.js +3 -5
- package/dist/util/agent-homes.d.ts +15 -0
- package/dist/util/agent-homes.js +34 -0
- package/dist/util/anthropic-messages.d.ts +3 -0
- package/dist/util/anthropic-messages.js +35 -6
- package/dist/util/atomic-write.d.ts +2 -1
- package/dist/util/atomic-write.js +35 -4
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/chunked.d.ts +3 -0
- package/dist/util/chunked.js +10 -0
- package/dist/util/crash-handlers.d.ts +8 -1
- package/dist/util/crash-handlers.js +52 -10
- package/dist/util/ellipsize.d.ts +3 -0
- package/dist/util/ellipsize.js +5 -0
- package/dist/util/env.d.ts +14 -6
- package/dist/util/env.js +15 -7
- package/dist/util/format.d.ts +3 -0
- package/dist/util/format.js +6 -0
- package/dist/util/home-path.d.ts +2 -1
- package/dist/util/home-path.js +4 -2
- package/dist/util/hook-payload.d.ts +8 -0
- package/dist/util/hook-payload.js +37 -0
- package/dist/util/http-retry.d.ts +9 -1
- package/dist/util/http-retry.js +67 -8
- package/dist/util/http-util.d.ts +0 -8
- package/dist/util/http-util.js +10 -21
- package/dist/util/limits.d.ts +7 -0
- package/dist/util/limits.js +14 -0
- package/dist/util/log.d.ts +7 -2
- package/dist/util/log.js +34 -9
- package/dist/util/request-scope.d.ts +5 -2
- package/dist/util/request-scope.js +13 -7
- package/dist/util/secret-detect.d.ts +5 -30
- package/dist/util/secret-detect.js +19 -40
- package/dist/util/sqlite-blocked.d.ts +2 -0
- package/dist/util/sqlite-blocked.js +5 -0
- package/dist/util/stored-json.d.ts +1 -1
- package/dist/util/stored-json.js +1 -1
- package/dist/util/stream-tee.d.ts +3 -0
- package/dist/util/stream-tee.js +35 -0
- package/dist/util/time.d.ts +4 -0
- package/dist/util/time.js +4 -0
- package/dist/util/token-text.d.ts +1 -4
- package/dist/util/token-text.js +1 -4
- package/dist/util/transcript-tail.d.ts +2 -0
- package/dist/util/transcript-tail.js +24 -23
- package/dist/util/version.d.ts +5 -20
- package/dist/util/version.js +5 -20
- package/dist/{store → util}/yaml.d.ts +1 -5
- package/dist/{store → util}/yaml.js +2 -6
- package/extensions/openclaw-plugin/index.ts +1 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/dist/cli/provenance-coverage.d.ts +0 -18
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/sharing/scope.d.ts +0 -14
- package/dist/sharing/shared.d.ts +0 -187
- package/dist/sharing/shared.js +0 -563
- package/dist/store/embeddings/local.d.ts +0 -15
- package/dist/store/embeddings/local.js +0 -192
- package/dist/store/embeddings/provider.d.ts +0 -77
- package/dist/store/markdown.d.ts +0 -10
- package/dist/store/recall-scope.d.ts +0 -138
- package/dist/store/recall-scope.js +0 -216
- package/dist/store/vector-writes.d.ts +0 -13
- package/dist/store/vector-writes.js +0 -89
- /package/dist/{store → core}/object-types.d.ts +0 -0
- /package/dist/{store → core}/object-types.js +0 -0
- /package/dist/{cli → store}/quality-repair.d.ts +0 -0
- /package/dist/{capture → util}/compaction-items.d.ts +0 -0
- /package/dist/{capture → util}/compaction-items.js +0 -0
package/dist/store/goals.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// src/store/goals.ts
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { withWriteScope } from '../db/index.js';
|
|
4
|
+
import { onHandle } from './open.js';
|
|
5
5
|
const MAX_ACTIVE_GOAL_DEPTH = 3;
|
|
6
|
-
const MAX_FINAL_MULTIPLIER = 3.0;
|
|
7
6
|
export function rowToGoal(row) {
|
|
8
7
|
return {
|
|
9
8
|
id: row.id,
|
|
@@ -21,26 +20,12 @@ export function rowToGoal(row) {
|
|
|
21
20
|
};
|
|
22
21
|
}
|
|
23
22
|
export function pushGoal(hippoRoot, opts) {
|
|
24
|
-
|
|
25
|
-
try {
|
|
23
|
+
return onHandle(hippoRoot, (db) => {
|
|
26
24
|
return pushGoalWithDb(db, opts);
|
|
27
|
-
}
|
|
28
|
-
finally {
|
|
29
|
-
closeHippoDb(db);
|
|
30
|
-
}
|
|
25
|
+
});
|
|
31
26
|
}
|
|
32
|
-
/**
|
|
33
|
-
*
|
|
34
|
-
* If the (tenant, session) has >= MAX_ACTIVE_GOAL_DEPTH active goals,
|
|
35
|
-
* suspend the oldest `overflow` ones.
|
|
36
|
-
*
|
|
37
|
-
* **Precondition: caller MUST already be inside a `BEGIN IMMEDIATE`
|
|
38
|
-
* transaction.** Helper does not open or commit -- name reflects this so it
|
|
39
|
-
* is impossible to misread the contract at a call site. Both existing call
|
|
40
|
-
* sites (pushGoalWithDb, resumeGoal) wrap in `BEGIN IMMEDIATE` already.
|
|
41
|
-
*
|
|
42
|
-
* @internal Internal goal-stack invariant. Subject to change.
|
|
43
|
-
*/
|
|
27
|
+
/** Depth-cap enforcer for pushGoalWithDb and resumeGoal: suspends the oldest `overflow` goals; **caller MUST be inside a `BEGIN IMMEDIATE` transaction**.
|
|
28
|
+
* @internal Internal goal-stack invariant. Subject to change. */
|
|
44
29
|
function enforceDepthCapWithinTx(db, tenantId, sessionId) {
|
|
45
30
|
// SAFETY: the row comes from the SELECT above, which projects exactly one
|
|
46
31
|
// column, `c`, as a COUNT(*).
|
|
@@ -121,29 +106,20 @@ function insertRetrievalPolicy(db, goalId, policy) {
|
|
|
121
106
|
return policyId;
|
|
122
107
|
}
|
|
123
108
|
export function getActiveGoals(hippoRoot, opts) {
|
|
124
|
-
|
|
125
|
-
try {
|
|
109
|
+
return onHandle(hippoRoot, (db) => {
|
|
126
110
|
return getActiveGoalsWithDb(db, opts);
|
|
127
|
-
}
|
|
128
|
-
finally {
|
|
129
|
-
closeHippoDb(db);
|
|
130
|
-
}
|
|
111
|
+
});
|
|
131
112
|
}
|
|
132
113
|
/** The active goals and their policies on one handle, so a goal and its policy never disagree. */
|
|
133
114
|
export function activeGoalsWithPolicies(hippoRoot, opts) {
|
|
134
|
-
|
|
135
|
-
try {
|
|
115
|
+
return onHandle(hippoRoot, (db) => {
|
|
136
116
|
const goals = getActiveGoalsWithDb(db, opts);
|
|
137
117
|
return { goals, policies: loadGoalPolicies(db, goals) };
|
|
138
|
-
}
|
|
139
|
-
finally {
|
|
140
|
-
closeHippoDb(db);
|
|
141
|
-
}
|
|
118
|
+
});
|
|
142
119
|
}
|
|
143
120
|
/** Every goal of a (tenant, session), whatever its status, oldest first. */
|
|
144
121
|
export function getSessionGoals(hippoRoot, opts) {
|
|
145
|
-
|
|
146
|
-
try {
|
|
122
|
+
return onHandle(hippoRoot, (db) => {
|
|
147
123
|
// SAFETY: rows come from the SELECT below, which projects exactly GoalRow's columns.
|
|
148
124
|
const rows = db.prepare(`
|
|
149
125
|
SELECT id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
|
|
@@ -153,10 +129,7 @@ export function getSessionGoals(hippoRoot, opts) {
|
|
|
153
129
|
ORDER BY created_at ASC
|
|
154
130
|
`).all(opts.tenantId, opts.sessionId);
|
|
155
131
|
return rows.map(rowToGoal);
|
|
156
|
-
}
|
|
157
|
-
finally {
|
|
158
|
-
closeHippoDb(db);
|
|
159
|
-
}
|
|
132
|
+
});
|
|
160
133
|
}
|
|
161
134
|
function getActiveGoalsWithDb(db, opts) {
|
|
162
135
|
// SAFETY: rows come from the SELECT above, which projects exactly
|
|
@@ -170,84 +143,34 @@ function getActiveGoalsWithDb(db, opts) {
|
|
|
170
143
|
`).all(opts.tenantId, opts.sessionId);
|
|
171
144
|
return rows.map(rowToGoal);
|
|
172
145
|
}
|
|
173
|
-
//
|
|
174
|
-
// can compose onto the base goal-tag boost. Composed result is hard-capped
|
|
175
|
-
// at MAX_FINAL_MULTIPLIER (3.0x) BEFORE applying to score -- even an
|
|
176
|
-
// `errorPriority: 9.0` policy cannot exceed 3.0x.
|
|
146
|
+
// Per-goal retrieval_policy multipliers compose onto the base goal-tag boost and are hard-capped at MAX_FINAL_MULTIPLIER (3.0x) before scoring.
|
|
177
147
|
function loadGoalPolicies(db, active) {
|
|
178
148
|
const policiesByGoalId = new Map();
|
|
149
|
+
const policyIds = [...new Set(active.flatMap((g) => (g.retrievalPolicyId ? [g.retrievalPolicyId] : [])))];
|
|
150
|
+
if (policyIds.length === 0)
|
|
151
|
+
return policiesByGoalId;
|
|
152
|
+
// SAFETY: the SELECT projects exactly these seven retrieval_policy columns; MAX_ACTIVE_GOAL_DEPTH bounds the IN list.
|
|
153
|
+
const rows = db.prepare(`
|
|
154
|
+
SELECT id, goal_id, policy_type, weight_schema_fit, weight_recency, weight_outcome, error_priority
|
|
155
|
+
FROM retrieval_policy WHERE id IN (${policyIds.map(() => '?').join(',')})
|
|
156
|
+
`).all(...policyIds);
|
|
157
|
+
const byId = new Map(rows.map((row) => [row.id, row]));
|
|
179
158
|
for (const g of active) {
|
|
180
|
-
|
|
159
|
+
const row = g.retrievalPolicyId ? byId.get(g.retrievalPolicyId) : undefined;
|
|
160
|
+
if (!row)
|
|
181
161
|
continue;
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
goalId: row.goal_id,
|
|
192
|
-
policyType: row.policy_type,
|
|
193
|
-
weightSchemaFit: row.weight_schema_fit,
|
|
194
|
-
weightRecency: row.weight_recency,
|
|
195
|
-
weightOutcome: row.weight_outcome,
|
|
196
|
-
errorPriority: row.error_priority,
|
|
197
|
-
});
|
|
198
|
-
}
|
|
162
|
+
policiesByGoalId.set(g.id, {
|
|
163
|
+
id: row.id,
|
|
164
|
+
goalId: row.goal_id,
|
|
165
|
+
policyType: row.policy_type,
|
|
166
|
+
weightSchemaFit: row.weight_schema_fit,
|
|
167
|
+
weightRecency: row.weight_recency,
|
|
168
|
+
weightOutcome: row.weight_outcome,
|
|
169
|
+
errorPriority: row.error_priority,
|
|
170
|
+
});
|
|
199
171
|
}
|
|
200
172
|
return policiesByGoalId;
|
|
201
173
|
}
|
|
202
|
-
/** The capped boost for one row whose tags match `matches` active goals. */
|
|
203
|
-
function goalBoostMultiplier(entry, tags, matches, goalsByTag, policiesByGoalId) {
|
|
204
|
-
// Base 2.0x for first match, +0.5x per additional, capped at 3.0x.
|
|
205
|
-
let multiplier = Math.min(2.0 + 0.5 * (matches.length - 1), MAX_FINAL_MULTIPLIER);
|
|
206
|
-
// Compose per-policy multipliers per matched tag.
|
|
207
|
-
for (const tag of matches) {
|
|
208
|
-
const goal = goalsByTag.get(tag);
|
|
209
|
-
const policy = policiesByGoalId.get(goal.id);
|
|
210
|
-
if (!policy)
|
|
211
|
-
continue;
|
|
212
|
-
if (policy.policyType === 'error-prioritized' && tags.includes('error')) {
|
|
213
|
-
multiplier *= policy.errorPriority;
|
|
214
|
-
}
|
|
215
|
-
else if (policy.policyType === 'schema-fit-biased') {
|
|
216
|
-
// Linearly weight schema_fit in [0,1] up to (weightSchemaFit)x.
|
|
217
|
-
// Default 1.0 is a no-op.
|
|
218
|
-
multiplier *=
|
|
219
|
-
1.0 +
|
|
220
|
-
Math.max(0, policy.weightSchemaFit - 1.0) *
|
|
221
|
-
(entry.schema_fit ?? 0.5);
|
|
222
|
-
}
|
|
223
|
-
else if (policy.policyType === 'recency-first') {
|
|
224
|
-
multiplier *= policy.weightRecency;
|
|
225
|
-
}
|
|
226
|
-
else if (policy.policyType === 'hybrid') {
|
|
227
|
-
multiplier *= policy.weightOutcome;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
// Hard cap AFTER all composition.
|
|
231
|
-
return Math.min(multiplier, MAX_FINAL_MULTIPLIER);
|
|
232
|
-
}
|
|
233
|
-
/** Log rows for the top `limit` boosted rows, one per matched goal. */
|
|
234
|
-
function buildGoalRecallLog(boosted, matchesByEntryId, goalsByTag, opts) {
|
|
235
|
-
const { sessionId, tenantId, limit } = opts;
|
|
236
|
-
const recalledAt = new Date().toISOString();
|
|
237
|
-
const log = [];
|
|
238
|
-
for (const r of boosted.slice(0, limit)) {
|
|
239
|
-
const matches = matchesByEntryId.get(r.entry.id);
|
|
240
|
-
if (!matches || matches.length === 0)
|
|
241
|
-
continue;
|
|
242
|
-
for (const tag of matches) {
|
|
243
|
-
const goal = goalsByTag.get(tag);
|
|
244
|
-
if (!goal)
|
|
245
|
-
continue;
|
|
246
|
-
log.push({ goalId: goal.id, memoryId: r.entry.id, tenantId, sessionId, recalledAt, score: r.score });
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
return log;
|
|
250
|
-
}
|
|
251
174
|
/** The rows whose memory lives in this store: goal_recall_log.memory_id references memories, so a global row would fail
|
|
252
175
|
* the insert. A global result keeps its boost; it only earns no log row, so no outcome propagation. */
|
|
253
176
|
export function localGoalRecallRows(db, rows) {
|
|
@@ -259,53 +182,7 @@ export function localGoalRecallRows(db, rows) {
|
|
|
259
182
|
const localIds = new Set(local.map((r) => r.id));
|
|
260
183
|
return rows.filter((r) => localIds.has(r.memoryId));
|
|
261
184
|
}
|
|
262
|
-
/**
|
|
263
|
-
* `limit` rows and keeps those whose memory is global, since only the store can tell them apart; {@link localGoalRecallRows} drops those before the write. */
|
|
264
|
-
export function boostByGoals(results, active, opts) {
|
|
265
|
-
const { trace } = opts;
|
|
266
|
-
if (active.goals.length === 0)
|
|
267
|
-
return { results, log: [] };
|
|
268
|
-
const goalsByTag = new Map(active.goals.map((g) => [g.goalName, g]));
|
|
269
|
-
const policiesByGoalId = active.policies;
|
|
270
|
-
// Goal-tag matches per boosted row, keyed by entry id. Kept as a side table
|
|
271
|
-
// (rather than a spread-on `_goalMatches` marker property) so `boosted`
|
|
272
|
-
// stays exactly R[] end to end, with no cast-tag-then-strip round trip.
|
|
273
|
-
const matchesByEntryId = new Map();
|
|
274
|
-
const boosted = results
|
|
275
|
-
.map((r) => {
|
|
276
|
-
const tags = r.entry.tags ?? [];
|
|
277
|
-
const matches = tags.filter((t) => goalsByTag.has(t));
|
|
278
|
-
if (matches.length === 0)
|
|
279
|
-
return r;
|
|
280
|
-
const multiplier = goalBoostMultiplier(r.entry, tags, matches, goalsByTag, policiesByGoalId);
|
|
281
|
-
// Recall-trace side-channel: record the goal-boost step BEFORE the
|
|
282
|
-
// score is mutated, keyed by entry id; a pure read of r.score.
|
|
283
|
-
if (trace) {
|
|
284
|
-
trace.set(r.entry.id, {
|
|
285
|
-
stage: 'goal-boost',
|
|
286
|
-
multiplier,
|
|
287
|
-
scoreBefore: r.score,
|
|
288
|
-
scoreAfter: r.score * multiplier,
|
|
289
|
-
note: matches.join(', '),
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
matchesByEntryId.set(r.entry.id, matches);
|
|
293
|
-
// SAFETY: spreading a generic-constrained `r: R` widens the result to
|
|
294
|
-
// the spread's plain object type; only `score` changes, so the value
|
|
295
|
-
// still satisfies R's shape exactly.
|
|
296
|
-
return { ...r, score: r.score * multiplier };
|
|
297
|
-
})
|
|
298
|
-
// Deliberately a PLAIN stable score sort, no compareEntryIdentity
|
|
299
|
-
// tail -- a re-sort of an already deterministically-ordered ranking
|
|
300
|
-
// inherits its determinism via sort stability, and ties preserve the
|
|
301
|
-
// prior (meaningful) rank instead of reordering by content.
|
|
302
|
-
.sort((a, b) => compareScoresDesc(a.score, b.score));
|
|
303
|
-
return { results: boosted, log: buildGoalRecallLog(boosted, matchesByEntryId, goalsByTag, opts) };
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
* Writes goal-boost log rows. INSERT OR IGNORE because UNIQUE(memory_id, goal_id)
|
|
307
|
-
* makes a re-recall during the same goal life a no-op for outcome attribution.
|
|
308
|
-
*/
|
|
185
|
+
/** INSERT OR IGNORE: UNIQUE(memory_id, goal_id) makes a re-recall during the same goal life a no-op for outcome attribution. */
|
|
309
186
|
export function writeGoalRecallLog(db, rows) {
|
|
310
187
|
if (rows.length === 0)
|
|
311
188
|
return;
|
|
@@ -323,8 +200,7 @@ const NEGATIVE_OUTCOME_THRESHOLD = 0.3;
|
|
|
323
200
|
const STRENGTH_BOOST = 1.10;
|
|
324
201
|
const STRENGTH_DECAY = 0.85;
|
|
325
202
|
export function completeGoal(hippoRoot, goalId, opts) {
|
|
326
|
-
|
|
327
|
-
try {
|
|
203
|
+
return onHandle(hippoRoot, (db) => {
|
|
328
204
|
const completedAt = new Date().toISOString();
|
|
329
205
|
const score = opts.outcomeScore ?? null;
|
|
330
206
|
withWriteScope(db, 'complete_goal', () => {
|
|
@@ -349,9 +225,7 @@ export function completeGoal(hippoRoot, goalId, opts) {
|
|
|
349
225
|
else if (score < NEGATIVE_OUTCOME_THRESHOLD)
|
|
350
226
|
multiplier = STRENGTH_DECAY;
|
|
351
227
|
if (multiplier !== 1) {
|
|
352
|
-
// Lifespan window: only
|
|
353
|
-
// goal's active life. UNIQUE(memory_id, goal_id) guarantees one
|
|
354
|
-
// adjustment per (memory, goal) pair.
|
|
228
|
+
// Lifespan window: only recalls during this goal's active life; UNIQUE(memory_id, goal_id) gives one adjustment per pair.
|
|
355
229
|
db.prepare(`
|
|
356
230
|
UPDATE memories
|
|
357
231
|
SET strength = MIN(1.0, MAX(0.0, strength * ?))
|
|
@@ -365,23 +239,15 @@ export function completeGoal(hippoRoot, goalId, opts) {
|
|
|
365
239
|
}
|
|
366
240
|
}
|
|
367
241
|
});
|
|
368
|
-
}
|
|
369
|
-
finally {
|
|
370
|
-
closeHippoDb(db);
|
|
371
|
-
}
|
|
242
|
+
});
|
|
372
243
|
}
|
|
373
244
|
export function suspendGoal(hippoRoot, goalId) {
|
|
374
|
-
|
|
375
|
-
try {
|
|
245
|
+
onHandle(hippoRoot, (db) => {
|
|
376
246
|
db.prepare(`UPDATE goal_stack SET status = 'suspended' WHERE id = ? AND status = 'active'`).run(goalId);
|
|
377
|
-
}
|
|
378
|
-
finally {
|
|
379
|
-
closeHippoDb(db);
|
|
380
|
-
}
|
|
247
|
+
});
|
|
381
248
|
}
|
|
382
249
|
export function resumeGoal(hippoRoot, goalId) {
|
|
383
|
-
|
|
384
|
-
try {
|
|
250
|
+
return onHandle(hippoRoot, (db) => {
|
|
385
251
|
withWriteScope(db, 'resume_goal', () => {
|
|
386
252
|
// SAFETY: the row comes from the SELECT above, which projects exactly
|
|
387
253
|
// the session_id, tenant_id, and status columns of goal_stack.
|
|
@@ -391,9 +257,6 @@ export function resumeGoal(hippoRoot, goalId) {
|
|
|
391
257
|
enforceDepthCapWithinTx(db, row.tenant_id, row.session_id);
|
|
392
258
|
db.prepare(`UPDATE goal_stack SET status = 'active' WHERE id = ?`).run(goalId);
|
|
393
259
|
});
|
|
394
|
-
}
|
|
395
|
-
finally {
|
|
396
|
-
closeHippoDb(db);
|
|
397
|
-
}
|
|
260
|
+
});
|
|
398
261
|
}
|
|
399
262
|
//# sourceMappingURL=goals.js.map
|
|
@@ -1,27 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* enqueuing its consolidated mirror memory. NEVER throws into the caller — a
|
|
4
|
-
* graph-dirty signal failing must not abort a core object write. Graph staleness is
|
|
5
|
-
* recoverable (next sleep / manual `graph extract`); a broken `hippo decide` is
|
|
6
|
-
* not. Called POST-COMMIT from the graph-source save/close mutations of
|
|
7
|
-
* decision, policy, customer_note and project_brief. A null memoryId (a
|
|
8
|
-
* forgotten mirror) is a no-op.
|
|
9
|
-
*/
|
|
1
|
+
/** Fail-soft producer hook: mark a tenant dirty for graph re-extraction by enqueuing its consolidated mirror memory. NEVER throws: a failed dirty signal
|
|
2
|
+
* must not abort an object write. Call POST-COMMIT from the graph-source save/close mutations; a null memoryId (forgotten mirror) is a no-op. */
|
|
10
3
|
export declare function markGraphDirty(hippoRoot: string, tenantId: string, memoryId: string | null): void;
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* one UPDATE. Status/processed_at only, so the consolidated-source guard trigger
|
|
14
|
-
* is not involved. Returns the count marked.
|
|
15
|
-
* The `<= maxId` watermark excludes items enqueued after the drain snapshot.
|
|
16
|
-
*/
|
|
4
|
+
/** Mark every pending item for a tenant with `id <= maxId` processed in one UPDATE (status/processed_at only, so the source guard trigger is not involved).
|
|
5
|
+
* The watermark excludes items enqueued after the drain snapshot. Returns the count marked. */
|
|
17
6
|
export declare function markPendingProcessedUpTo(hippoRoot: string, tenantId: string, maxId: number): number;
|
|
18
|
-
/**
|
|
19
|
-
* The
|
|
20
|
-
* queue id at read time (a watermark). The sleep drain rebuilds each tenant's
|
|
21
|
-
* graph, then marks only items at or below the watermark processed, so items
|
|
22
|
-
* enqueued DURING the rebuild stay pending for the next sleep (no lost-update
|
|
23
|
-
* race). Host-wide read (the queue is per-tenant but sleep is cross-tenant).
|
|
24
|
-
*/
|
|
7
|
+
/** Dirty tenants awaiting graph re-extraction, each with the MAX pending queue id at read time (a watermark); host-wide, as sleep is cross-tenant.
|
|
8
|
+
* The drain marks only items at or below it processed, so items enqueued DURING the rebuild stay pending (no lost update). */
|
|
25
9
|
export declare function loadPendingExtractionTenants(hippoRoot: string): {
|
|
26
10
|
tenantId: string;
|
|
27
11
|
maxPendingId: number;
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
// The graph extraction queue: the consolidated memories that wait for a graph rebuild, and the watermark the sleep drain marks them by.
|
|
2
|
-
import {
|
|
2
|
+
import { onHandle } from './open.js';
|
|
3
3
|
import { assertTenantId } from './tenant.js';
|
|
4
4
|
import { errorMessage, log } from '../util/log.js';
|
|
5
5
|
import { rowToQueueItem, QUEUE_COLS } from './graph-rows.js';
|
|
6
6
|
import { resolveConsolidatedSource } from './graph-writes.js';
|
|
7
|
-
/**
|
|
8
|
-
* Enqueue a consolidated memory for later graph extraction. Rejects a raw / missing /
|
|
9
|
-
* cross-tenant memory (the DB trigger is the backstop).
|
|
10
|
-
*/
|
|
7
|
+
/** Enqueue a consolidated memory for later graph extraction; rejects a raw / missing / cross-tenant memory (the DB trigger is the backstop). */
|
|
11
8
|
function enqueueExtraction(hippoRoot, tenantId, memoryId) {
|
|
12
9
|
assertTenantId('enqueueExtraction', tenantId);
|
|
13
10
|
const now = new Date().toISOString();
|
|
14
|
-
|
|
15
|
-
try {
|
|
11
|
+
return onHandle(hippoRoot, (db) => {
|
|
16
12
|
// enqueue is memory-keyed (no source object), so a missing memory still throws (correct -
|
|
17
13
|
// you cannot enqueue a forgotten mirror); memoryId is non-null here by construction.
|
|
18
14
|
const { sourceKind } = resolveConsolidatedSource(db, tenantId, memoryId, null, 'enqueueExtraction');
|
|
@@ -26,20 +22,10 @@ function enqueueExtraction(hippoRoot, tenantId, memoryId) {
|
|
|
26
22
|
if (!row)
|
|
27
23
|
throw new Error('enqueueExtraction: failed to reload queue item');
|
|
28
24
|
return rowToQueueItem(row);
|
|
29
|
-
}
|
|
30
|
-
finally {
|
|
31
|
-
closeHippoDb(db);
|
|
32
|
-
}
|
|
25
|
+
});
|
|
33
26
|
}
|
|
34
|
-
/**
|
|
35
|
-
*
|
|
36
|
-
* enqueuing its consolidated mirror memory. NEVER throws into the caller — a
|
|
37
|
-
* graph-dirty signal failing must not abort a core object write. Graph staleness is
|
|
38
|
-
* recoverable (next sleep / manual `graph extract`); a broken `hippo decide` is
|
|
39
|
-
* not. Called POST-COMMIT from the graph-source save/close mutations of
|
|
40
|
-
* decision, policy, customer_note and project_brief. A null memoryId (a
|
|
41
|
-
* forgotten mirror) is a no-op.
|
|
42
|
-
*/
|
|
27
|
+
/** Fail-soft producer hook: mark a tenant dirty for graph re-extraction by enqueuing its consolidated mirror memory. NEVER throws: a failed dirty signal
|
|
28
|
+
* must not abort an object write. Call POST-COMMIT from the graph-source save/close mutations; a null memoryId (forgotten mirror) is a no-op. */
|
|
43
29
|
export function markGraphDirty(hippoRoot, tenantId, memoryId) {
|
|
44
30
|
if (!memoryId)
|
|
45
31
|
return;
|
|
@@ -52,38 +38,24 @@ export function markGraphDirty(hippoRoot, tenantId, memoryId) {
|
|
|
52
38
|
log.warn(`markGraphDirty: enqueue failed for tenant=${tenantId} memory=${memoryId}: ${errorMessage(err)}`);
|
|
53
39
|
}
|
|
54
40
|
}
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
* one UPDATE. Status/processed_at only, so the consolidated-source guard trigger
|
|
58
|
-
* is not involved. Returns the count marked.
|
|
59
|
-
* The `<= maxId` watermark excludes items enqueued after the drain snapshot.
|
|
60
|
-
*/
|
|
41
|
+
/** Mark every pending item for a tenant with `id <= maxId` processed in one UPDATE (status/processed_at only, so the source guard trigger is not involved).
|
|
42
|
+
* The watermark excludes items enqueued after the drain snapshot. Returns the count marked. */
|
|
61
43
|
export function markPendingProcessedUpTo(hippoRoot, tenantId, maxId) {
|
|
62
44
|
assertTenantId('markPendingProcessedUpTo', tenantId);
|
|
63
45
|
const now = new Date().toISOString();
|
|
64
|
-
|
|
65
|
-
try {
|
|
46
|
+
return onHandle(hippoRoot, (db) => {
|
|
66
47
|
const res = db.prepare(`
|
|
67
48
|
UPDATE graph_extraction_queue
|
|
68
49
|
SET status = 'processed', processed_at = ?
|
|
69
50
|
WHERE tenant_id = ? AND status = 'pending' AND id <= ?
|
|
70
51
|
`).run(now, tenantId, maxId);
|
|
71
52
|
return Number(res.changes ?? 0);
|
|
72
|
-
}
|
|
73
|
-
finally {
|
|
74
|
-
closeHippoDb(db);
|
|
75
|
-
}
|
|
53
|
+
});
|
|
76
54
|
}
|
|
77
|
-
/**
|
|
78
|
-
* The
|
|
79
|
-
* queue id at read time (a watermark). The sleep drain rebuilds each tenant's
|
|
80
|
-
* graph, then marks only items at or below the watermark processed, so items
|
|
81
|
-
* enqueued DURING the rebuild stay pending for the next sleep (no lost-update
|
|
82
|
-
* race). Host-wide read (the queue is per-tenant but sleep is cross-tenant).
|
|
83
|
-
*/
|
|
55
|
+
/** Dirty tenants awaiting graph re-extraction, each with the MAX pending queue id at read time (a watermark); host-wide, as sleep is cross-tenant.
|
|
56
|
+
* The drain marks only items at or below it processed, so items enqueued DURING the rebuild stay pending (no lost update). */
|
|
84
57
|
export function loadPendingExtractionTenants(hippoRoot) {
|
|
85
|
-
|
|
86
|
-
try {
|
|
58
|
+
return onHandle(hippoRoot, (db) => {
|
|
87
59
|
// SAFETY: rows' shape matches the two aliased columns (tenant_id, max_id)
|
|
88
60
|
// named in the SELECT above.
|
|
89
61
|
const rows = db.prepare(`
|
|
@@ -93,9 +65,6 @@ export function loadPendingExtractionTenants(hippoRoot) {
|
|
|
93
65
|
GROUP BY tenant_id
|
|
94
66
|
`).all();
|
|
95
67
|
return rows.map((r) => ({ tenantId: r.tenant_id, maxPendingId: Number(r.max_id) }));
|
|
96
|
-
}
|
|
97
|
-
finally {
|
|
98
|
-
closeHippoDb(db);
|
|
99
|
-
}
|
|
68
|
+
});
|
|
100
69
|
}
|
|
101
70
|
//# sourceMappingURL=graph-queue.js.map
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { type DatabaseSyncLike } from '../db/index.js';
|
|
2
2
|
import { type EntityType, type Entity, type Relation, type StoredGraph } from './graph-rows.js';
|
|
3
|
-
/** Entities with an exact `name
|
|
4
|
-
*
|
|
5
|
-
* entity DIRECTLY (not from a globally-capped list) WITHOUT materializing every
|
|
6
|
-
* same-name row when a name maps to many entities. */
|
|
3
|
+
/** Entities with an exact `name`, bounded by `limit` in SQL with a deterministic order, so graph-view focus finds `--entity NAME` directly
|
|
4
|
+
* without materializing every same-name row. */
|
|
7
5
|
export declare function loadEntitiesByName(hippoRoot: string, tenantId: string, name: string, opts?: {
|
|
8
6
|
limit?: number;
|
|
9
7
|
}, txDb?: DatabaseSyncLike): Entity[];
|
|
@@ -18,48 +16,26 @@ export declare function loadRelations(hippoRoot: string, tenantId: string, opts?
|
|
|
18
16
|
/** Chunk size for IN-list queries: well under SQLite's 999-bound-variable default
|
|
19
17
|
* (leaves headroom for the tenant_id param + the doubled list in neighbour lookups). */
|
|
20
18
|
export declare const IN_LIST_CHUNK = 400;
|
|
21
|
-
/**
|
|
22
|
-
* Load entities by their primary ids. Resolves the entity rows reached during the BFS
|
|
23
|
-
* (whose `memory_id` maps back to a recall result). Tenant-scoped, read-only.
|
|
24
|
-
*/
|
|
19
|
+
/** Load entities by primary id (the BFS-reached rows whose `memory_id` maps back to a recall result). Tenant-scoped, read-only. */
|
|
25
20
|
export declare function loadEntitiesByIds(hippoRoot: string, tenantId: string, ids: number[], txDb?: DatabaseSyncLike): Entity[];
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
* per-hop neighbour query for multi-hop traversal. ONE query for the whole frontier
|
|
29
|
-
* (not one per node): this is the bidirectional read `loadRelations` (from-only) lacks,
|
|
30
|
-
* and avoids an N+1 across BFS frontier nodes. `limit` caps rows for the frontier and
|
|
31
|
-
* must be a non-negative integer (the raw `LIMIT ?` rejects a fractional value).
|
|
32
|
-
*/
|
|
21
|
+
/** All relations touching ANY of `entityIds` in EITHER direction: the per-hop neighbour query for multi-hop traversal, one query for the whole frontier
|
|
22
|
+
* (no N+1). `limit` caps rows and must be a non-negative integer (raw `LIMIT ?` rejects a fraction). */
|
|
33
23
|
export declare function loadNeighborRelations(hippoRoot: string, tenantId: string, entityIds: number[], opts?: {
|
|
34
24
|
limit?: number;
|
|
35
25
|
}, txDb?: DatabaseSyncLike): Relation[];
|
|
36
|
-
/**
|
|
37
|
-
*
|
|
38
|
-
* touching it). Read. Used by the graph-view focus subgraph so the displayed
|
|
39
|
-
* edges are exactly the intra-union edges: the `LIMIT` only caps genuinely-many
|
|
40
|
-
* intra-union edges: no out-of-union row can evict a valid in-set edge. The
|
|
41
|
-
* caller bounds `entityIds` (<= the view limit), so a single query is safe.
|
|
42
|
-
*/
|
|
26
|
+
/** Relations with BOTH endpoints in `entityIds` (edges AMONG the set), for the graph-view focus subgraph; `LIMIT` caps only intra-union edges,
|
|
27
|
+
* so no out-of-union row evicts a valid one. The caller bounds `entityIds` (<= view limit), so a single query is safe. */
|
|
43
28
|
export declare function loadRelationsAmong(hippoRoot: string, tenantId: string, entityIds: number[], opts?: {
|
|
44
29
|
limit?: number;
|
|
45
30
|
}, txDb?: DatabaseSyncLike): Relation[];
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
* multi-hop recall (recall result memory ids -> entities to traverse from). Tenant-
|
|
49
|
-
* scoped, read-only; chunks the IN-list under the SQLite variable cap.
|
|
50
|
-
*/
|
|
31
|
+
/** Map consolidated source memory ids to their graph entities: the SEED step of multi-hop recall. Tenant-scoped, read-only; chunks the IN-list under the
|
|
32
|
+
* SQLite variable cap. */
|
|
51
33
|
export declare function loadEntitiesByMemoryId(hippoRoot: string, tenantId: string, memoryIds: string[]): Entity[];
|
|
52
34
|
/** The stored rows a rebuild diffs against, read on the caller's handle so the diff and the apply can share one write lock. */
|
|
53
35
|
export declare function storedGraphOn(db: DatabaseSyncLike, tenantId: string, memoryIds: readonly string[]): StoredGraph;
|
|
54
36
|
/** storedGraphOn on its own connection, outside any write lock. */
|
|
55
37
|
export declare function loadStoredGraph(hippoRoot: string, tenantId: string, memoryIds: readonly string[]): StoredGraph;
|
|
56
|
-
/**
|
|
57
|
-
*
|
|
58
|
-
* it performs (pass the supplied `txDb` to the `load*` functions) sees a consistent
|
|
59
|
-
* view, even if a `graph extract` / sleep-drain rebuild commits concurrently between
|
|
60
|
-
* reads (the rebuild clears + reinserts entities, so separate reads could otherwise
|
|
61
|
-
* mix old entity ids with new relation ids). Reads only; the connection is opened
|
|
62
|
-
* once and closed after.
|
|
63
|
-
*/
|
|
38
|
+
/** Run `fn` in ONE read transaction (a single WAL snapshot) so every `load*` read via `txDb` sees a consistent view
|
|
39
|
+
* even if a rebuild commits concurrently (it clears and reinserts entities, so separate reads could mix old entity ids with new relation ids). */
|
|
64
40
|
export declare function withGraphReadSnapshot<T>(hippoRoot: string, fn: (txDb: DatabaseSyncLike) => T): T;
|
|
65
41
|
//# sourceMappingURL=graph-reads.d.ts.map
|