hippo-memory 1.69.0 → 1.71.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 +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +38 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- 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 +27 -12
- package/dist/api/remember.js +42 -46
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +5 -13
- package/dist/capture/command.js +57 -60
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +8 -16
- package/dist/capture/compact.js +56 -47
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- 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 +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- 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/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- 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 +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- 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 +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -3
- package/dist/search/boosts.js +36 -15
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- 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 +80 -0
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +61 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +29 -0
- package/dist/store/sqlite/executor.js +287 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +23 -0
- package/dist/store/sqlite/store.js +294 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → 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 +11 -0
- package/dist/store/tenant.js +28 -0
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- 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/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
|
@@ -1,27 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const row = db.prepare(`SELECT ${ENTITY_COLS} FROM entities WHERE id = ? AND tenant_id = ?`)
|
|
11
|
-
.get(id, tenantId);
|
|
12
|
-
return row ? rowToEntity(row) : null;
|
|
13
|
-
}
|
|
14
|
-
finally {
|
|
15
|
-
closeHippoDb(db);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
/** Entities with an exact `name` (read), bounded by `limit` in SQL with a
|
|
19
|
-
* deterministic order. Lets the graph-view focus query find the `--entity NAME`
|
|
20
|
-
* entity DIRECTLY (not from a globally-capped list) WITHOUT materializing every
|
|
21
|
-
* same-name row when a name maps to many entities. */
|
|
1
|
+
// The graph reads a view and a traversal share. Each opens hippo.db itself unless the caller hands it the handle its snapshot runs on.
|
|
2
|
+
import { openHippoDb, closeHippoDb, withReadSnapshot } from '../db/index.js';
|
|
3
|
+
import { onHandle } from './open.js';
|
|
4
|
+
import { assertTenantId } from './tenant.js';
|
|
5
|
+
import { GRAPH_ENTITY_TYPES, rowToEntity, rowToRelation, ENTITY_COLS, RELATION_COLS } from './graph-rows.js';
|
|
6
|
+
const DEFAULT_GRAPH_PAGE_SIZE = 100;
|
|
7
|
+
const DEFAULT_GRAPH_SCAN_LIMIT = 1000;
|
|
8
|
+
/** Entities with an exact `name`, bounded by `limit` in SQL with a deterministic order, so graph-view focus finds `--entity NAME` directly
|
|
9
|
+
* without materializing every same-name row. */
|
|
22
10
|
export function loadEntitiesByName(hippoRoot, tenantId, name, opts = {}, txDb) {
|
|
23
11
|
assertTenantId('loadEntitiesByName', tenantId);
|
|
24
|
-
const limit = opts.limit ??
|
|
12
|
+
const limit = opts.limit ?? DEFAULT_GRAPH_PAGE_SIZE;
|
|
25
13
|
if (!Number.isInteger(limit) || limit < 0) {
|
|
26
14
|
throw new Error(`loadEntitiesByName: limit must be a non-negative integer; got ${limit}`);
|
|
27
15
|
}
|
|
@@ -42,7 +30,7 @@ export function loadEntitiesByName(hippoRoot, tenantId, name, opts = {}, txDb) {
|
|
|
42
30
|
}
|
|
43
31
|
export function loadEntities(hippoRoot, tenantId, opts = {}, txDb) {
|
|
44
32
|
assertTenantId('loadEntities', tenantId);
|
|
45
|
-
const limit = opts.limit ??
|
|
33
|
+
const limit = opts.limit ?? DEFAULT_GRAPH_PAGE_SIZE;
|
|
46
34
|
if (opts.entityType && !GRAPH_ENTITY_TYPES.has(opts.entityType)) {
|
|
47
35
|
throw new Error(`loadEntities: entityType must be one of ${Array.from(GRAPH_ENTITY_TYPES).join('|')}; got ${opts.entityType}`);
|
|
48
36
|
}
|
|
@@ -72,7 +60,7 @@ export function loadEntities(hippoRoot, tenantId, opts = {}, txDb) {
|
|
|
72
60
|
}
|
|
73
61
|
export function loadRelations(hippoRoot, tenantId, opts = {}, txDb) {
|
|
74
62
|
assertTenantId('loadRelations', tenantId);
|
|
75
|
-
const limit = opts.limit ??
|
|
63
|
+
const limit = opts.limit ?? DEFAULT_GRAPH_PAGE_SIZE;
|
|
76
64
|
const ownDb = txDb ? null : openHippoDb(hippoRoot);
|
|
77
65
|
const db = txDb ?? ownDb;
|
|
78
66
|
try {
|
|
@@ -97,47 +85,10 @@ export function loadRelations(hippoRoot, tenantId, opts = {}, txDb) {
|
|
|
97
85
|
closeHippoDb(ownDb);
|
|
98
86
|
}
|
|
99
87
|
}
|
|
100
|
-
// ---------------------------------------------------------------------------
|
|
101
|
-
// Multi-hop recall read helpers (SELECT-only; the check-graph-writes lint
|
|
102
|
-
// permits these here and in the read-only consumer src/graph-recall.ts).
|
|
103
|
-
// ---------------------------------------------------------------------------
|
|
104
88
|
/** Chunk size for IN-list queries: well under SQLite's 999-bound-variable default
|
|
105
89
|
* (leaves headroom for the tenant_id param + the doubled list in neighbour lookups). */
|
|
106
|
-
const IN_LIST_CHUNK = 400;
|
|
107
|
-
/**
|
|
108
|
-
* Map consolidated source memory ids -> their graph entities. The SEED step of
|
|
109
|
-
* multi-hop recall (recall result memory ids -> entities to traverse from). Tenant-
|
|
110
|
-
* scoped, read-only; chunks the IN-list under the SQLite variable cap.
|
|
111
|
-
*/
|
|
112
|
-
export function loadEntitiesByMemoryId(hippoRoot, tenantId, memoryIds) {
|
|
113
|
-
assertTenantId('loadEntitiesByMemoryId', tenantId);
|
|
114
|
-
if (memoryIds.length === 0)
|
|
115
|
-
return [];
|
|
116
|
-
const db = openHippoDb(hippoRoot);
|
|
117
|
-
try {
|
|
118
|
-
const out = [];
|
|
119
|
-
for (let i = 0; i < memoryIds.length; i += IN_LIST_CHUNK) {
|
|
120
|
-
const slice = memoryIds.slice(i, i + IN_LIST_CHUNK);
|
|
121
|
-
const ph = slice.map(() => '?').join(',');
|
|
122
|
-
// id ASC so chunk-local scan order never decides ties (id is an autoincrement PK).
|
|
123
|
-
// SAFETY: rows' shape matches the columns named in ENTITY_COLS above.
|
|
124
|
-
const rows = db.prepare(`
|
|
125
|
-
SELECT ${ENTITY_COLS} FROM entities
|
|
126
|
-
WHERE tenant_id = ? AND memory_id IN (${ph})
|
|
127
|
-
ORDER BY id ASC
|
|
128
|
-
`).all(tenantId, ...slice);
|
|
129
|
-
out.push(...rows.map(rowToEntity));
|
|
130
|
-
}
|
|
131
|
-
return out;
|
|
132
|
-
}
|
|
133
|
-
finally {
|
|
134
|
-
closeHippoDb(db);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Load entities by their primary ids. Resolves the entity rows reached during the BFS
|
|
139
|
-
* (whose `memory_id` maps back to a recall result). Tenant-scoped, read-only.
|
|
140
|
-
*/
|
|
90
|
+
export const IN_LIST_CHUNK = 400;
|
|
91
|
+
/** Load entities by primary id (the BFS-reached rows whose `memory_id` maps back to a recall result). Tenant-scoped, read-only. */
|
|
141
92
|
export function loadEntitiesByIds(hippoRoot, tenantId, ids, txDb) {
|
|
142
93
|
assertTenantId('loadEntitiesByIds', tenantId);
|
|
143
94
|
if (ids.length === 0)
|
|
@@ -163,29 +114,21 @@ export function loadEntitiesByIds(hippoRoot, tenantId, ids, txDb) {
|
|
|
163
114
|
closeHippoDb(ownDb);
|
|
164
115
|
}
|
|
165
116
|
}
|
|
166
|
-
/**
|
|
167
|
-
*
|
|
168
|
-
* per-hop neighbour query for multi-hop traversal. ONE query for the whole frontier
|
|
169
|
-
* (not one per node): this is the bidirectional read `loadRelations` (from-only) lacks,
|
|
170
|
-
* and avoids an N+1 across BFS frontier nodes. `limit` caps rows for the frontier and
|
|
171
|
-
* must be a non-negative integer (the raw `LIMIT ?` rejects a fractional value).
|
|
172
|
-
*/
|
|
117
|
+
/** All relations touching ANY of `entityIds` in EITHER direction: the per-hop neighbour query for multi-hop traversal, one query for the whole frontier
|
|
118
|
+
* (no N+1). `limit` caps rows and must be a non-negative integer (raw `LIMIT ?` rejects a fraction). */
|
|
173
119
|
export function loadNeighborRelations(hippoRoot, tenantId, entityIds, opts = {}, txDb) {
|
|
174
120
|
assertTenantId('loadNeighborRelations', tenantId);
|
|
175
121
|
if (entityIds.length === 0)
|
|
176
122
|
return [];
|
|
177
|
-
const limit = opts.limit ??
|
|
123
|
+
const limit = opts.limit ?? DEFAULT_GRAPH_SCAN_LIMIT;
|
|
178
124
|
if (!Number.isInteger(limit) || limit < 0) {
|
|
179
125
|
throw new Error(`loadNeighborRelations: limit must be a non-negative integer; got ${limit}`);
|
|
180
126
|
}
|
|
181
127
|
const ownDb = txDb ? null : openHippoDb(hippoRoot);
|
|
182
128
|
const db = txDb ?? ownDb;
|
|
183
129
|
try {
|
|
184
|
-
// `limit`
|
|
185
|
-
//
|
|
186
|
-
// frontier is bounded by maxNeighbors <= 200 << IN_LIST_CHUNK, so a single chunk,
|
|
187
|
-
// and the BFS re-enforces the per-hop fanout cap), but note the semantics if a
|
|
188
|
-
// tighter total cap is ever needed.
|
|
130
|
+
// `limit` applies PER CHUNK, so a frontier over IN_LIST_CHUNK ids could return limit*chunks rows before the dedup below;
|
|
131
|
+
// harmless today (frontier <= maxNeighbors 200, one chunk, BFS re-enforces the fanout cap).
|
|
189
132
|
const byId = new Map();
|
|
190
133
|
for (let i = 0; i < entityIds.length; i += IN_LIST_CHUNK) {
|
|
191
134
|
const slice = entityIds.slice(i, i + IN_LIST_CHUNK);
|
|
@@ -207,18 +150,13 @@ export function loadNeighborRelations(hippoRoot, tenantId, entityIds, opts = {},
|
|
|
207
150
|
closeHippoDb(ownDb);
|
|
208
151
|
}
|
|
209
152
|
}
|
|
210
|
-
/**
|
|
211
|
-
*
|
|
212
|
-
* touching it). Read. Used by the graph-view focus subgraph so the displayed
|
|
213
|
-
* edges are exactly the intra-union edges: the `LIMIT` only caps genuinely-many
|
|
214
|
-
* intra-union edges — no out-of-union row can evict a valid in-set edge. The
|
|
215
|
-
* caller bounds `entityIds` (<= the view limit), so a single query is safe.
|
|
216
|
-
*/
|
|
153
|
+
/** Relations with BOTH endpoints in `entityIds` (edges AMONG the set), for the graph-view focus subgraph; `LIMIT` caps only intra-union edges,
|
|
154
|
+
* so no out-of-union row evicts a valid one. The caller bounds `entityIds` (<= view limit), so a single query is safe. */
|
|
217
155
|
export function loadRelationsAmong(hippoRoot, tenantId, entityIds, opts = {}, txDb) {
|
|
218
156
|
assertTenantId('loadRelationsAmong', tenantId);
|
|
219
157
|
if (entityIds.length === 0)
|
|
220
158
|
return [];
|
|
221
|
-
const limit = opts.limit ??
|
|
159
|
+
const limit = opts.limit ?? DEFAULT_GRAPH_SCAN_LIMIT;
|
|
222
160
|
if (!Number.isInteger(limit) || limit < 0) {
|
|
223
161
|
throw new Error(`loadRelationsAmong: limit must be a non-negative integer; got ${limit}`);
|
|
224
162
|
}
|
|
@@ -240,85 +178,57 @@ export function loadRelationsAmong(hippoRoot, tenantId, entityIds, opts = {}, tx
|
|
|
240
178
|
closeHippoDb(ownDb);
|
|
241
179
|
}
|
|
242
180
|
}
|
|
243
|
-
/**
|
|
244
|
-
*
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
const
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
db.exec('ROLLBACK');
|
|
263
|
-
}
|
|
264
|
-
catch { /* ignore */ }
|
|
265
|
-
throw e;
|
|
181
|
+
/** 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
|
|
182
|
+
* SQLite variable cap. */
|
|
183
|
+
export function loadEntitiesByMemoryId(hippoRoot, tenantId, memoryIds) {
|
|
184
|
+
assertTenantId('loadEntitiesByMemoryId', tenantId);
|
|
185
|
+
if (memoryIds.length === 0)
|
|
186
|
+
return [];
|
|
187
|
+
return onHandle(hippoRoot, (db) => {
|
|
188
|
+
const out = [];
|
|
189
|
+
for (let i = 0; i < memoryIds.length; i += IN_LIST_CHUNK) {
|
|
190
|
+
const slice = memoryIds.slice(i, i + IN_LIST_CHUNK);
|
|
191
|
+
const ph = slice.map(() => '?').join(',');
|
|
192
|
+
// id ASC so chunk-local scan order never decides ties (id is an autoincrement PK).
|
|
193
|
+
// SAFETY: rows' shape matches the columns named in ENTITY_COLS above.
|
|
194
|
+
const rows = db.prepare(`
|
|
195
|
+
SELECT ${ENTITY_COLS} FROM entities
|
|
196
|
+
WHERE tenant_id = ? AND memory_id IN (${ph})
|
|
197
|
+
ORDER BY id ASC
|
|
198
|
+
`).all(tenantId, ...slice);
|
|
199
|
+
out.push(...rows.map(rowToEntity));
|
|
266
200
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
closeHippoDb(db);
|
|
270
|
-
}
|
|
201
|
+
return out;
|
|
202
|
+
});
|
|
271
203
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
const db =
|
|
279
|
-
|
|
280
|
-
const clauses = ['tenant_id = ?'];
|
|
281
|
-
const params = [tenantId];
|
|
282
|
-
if (opts.status) {
|
|
283
|
-
clauses.push('status = ?');
|
|
284
|
-
params.push(opts.status);
|
|
285
|
-
}
|
|
286
|
-
params.push(limit);
|
|
287
|
-
// SAFETY: rows' shape matches the columns named in QUEUE_COLS above.
|
|
288
|
-
const rows = db.prepare(`
|
|
289
|
-
SELECT ${QUEUE_COLS} FROM graph_extraction_queue
|
|
290
|
-
WHERE ${clauses.join(' AND ')}
|
|
291
|
-
ORDER BY enqueued_at ASC, id ASC
|
|
292
|
-
LIMIT ?
|
|
293
|
-
`).all(...params);
|
|
294
|
-
return rows.map(rowToQueueItem);
|
|
295
|
-
}
|
|
296
|
-
finally {
|
|
297
|
-
closeHippoDb(db);
|
|
298
|
-
}
|
|
204
|
+
/** The stored rows a rebuild diffs against, read on the caller's handle so the diff and the apply can share one write lock. */
|
|
205
|
+
export function storedGraphOn(db, tenantId, memoryIds) {
|
|
206
|
+
const kinds = memoryKindsOn(db, memoryIds);
|
|
207
|
+
// SAFETY: the SELECT names exactly the columns of StoredEntity.
|
|
208
|
+
const entities = db.prepare(`SELECT id, entity_type, name, memory_id, source_kind, source_object_type, source_object_id FROM entities WHERE tenant_id = ? ORDER BY id`).all(tenantId);
|
|
209
|
+
// SAFETY: the SELECT names exactly the columns of StoredRelation.
|
|
210
|
+
const relations = db.prepare(`SELECT id, from_entity_id, to_entity_id, rel_type, memory_id, source_kind, source_object_type, source_object_id FROM relations WHERE tenant_id = ? ORDER BY id`).all(tenantId);
|
|
211
|
+
return { kinds, entities, relations };
|
|
299
212
|
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
return
|
|
319
|
-
}
|
|
320
|
-
finally {
|
|
321
|
-
closeHippoDb(db);
|
|
322
|
-
}
|
|
213
|
+
function memoryKindsOn(db, memoryIds) {
|
|
214
|
+
if (memoryIds.length === 0)
|
|
215
|
+
return new Map();
|
|
216
|
+
// SAFETY: the SELECT names exactly the two columns of the row type.
|
|
217
|
+
const rows = db.prepare(`SELECT id, kind FROM memories WHERE id IN (SELECT value FROM json_each(?))`)
|
|
218
|
+
.all(JSON.stringify(memoryIds));
|
|
219
|
+
return new Map(rows.map((row) => [row.id, row.kind]));
|
|
220
|
+
}
|
|
221
|
+
/** storedGraphOn on its own connection, outside any write lock. */
|
|
222
|
+
export function loadStoredGraph(hippoRoot, tenantId, memoryIds) {
|
|
223
|
+
return onHandle(hippoRoot, (db) => {
|
|
224
|
+
return storedGraphOn(db, tenantId, memoryIds);
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
/** Run `fn` in ONE read transaction (a single WAL snapshot) so every `load*` read via `txDb` sees a consistent view
|
|
228
|
+
* even if a rebuild commits concurrently (it clears and reinserts entities, so separate reads could mix old entity ids with new relation ids). */
|
|
229
|
+
export function withGraphReadSnapshot(hippoRoot, fn) {
|
|
230
|
+
return onHandle(hippoRoot, (db) => {
|
|
231
|
+
return withReadSnapshot(db, () => fn(db));
|
|
232
|
+
});
|
|
323
233
|
}
|
|
324
|
-
//# sourceMappingURL=
|
|
234
|
+
//# sourceMappingURL=graph-reads.js.map
|
|
@@ -1,25 +1,19 @@
|
|
|
1
|
-
import { openHippoDb } from '../db.js';
|
|
2
|
-
/** The DB connection handle `openHippoDb` returns. Threaded (optionally) through
|
|
3
|
-
* the graph writers so `extractGraph` can run clear + all inserts in ONE
|
|
4
|
-
* transaction — see `runGraphRebuildTransaction`. */
|
|
5
|
-
export type GraphTxDb = ReturnType<typeof openHippoDb>;
|
|
6
1
|
export type EntityType = 'person' | 'project' | 'customer' | 'system' | 'policy' | 'decision';
|
|
7
2
|
export type RelationType = 'owns' | 'supersedes' | 'depends-on' | 'blocked-by' | 'references';
|
|
8
|
-
export type GraphQueueStatus = 'pending' | 'processed' | 'skipped';
|
|
9
3
|
/** The consolidated source kinds the graph is permitted to index (never 'raw'). */
|
|
10
4
|
export type SourceKind = 'distilled' | 'superseded';
|
|
11
5
|
/** The authoritative first-class object types a graph row may be anchored to (the object
|
|
12
6
|
* provenance path, alongside the memory path). Maps to source_object_type. */
|
|
13
7
|
export type SourceObjectType = 'decision' | 'policy' | 'customer' | 'project';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
8
|
+
export declare const GRAPH_ENTITY_TYPES: ReadonlySet<EntityType>;
|
|
9
|
+
/** A soft (type,id) pointer to the authoritative object row a graph row descends from; survives a mirror forget/prune
|
|
10
|
+
* (memory_id may go NULL) and is re-validated by the rebuild, not a hard FK. */
|
|
17
11
|
export interface SourceObjectRef {
|
|
18
12
|
type: SourceObjectType;
|
|
19
13
|
id: number;
|
|
20
14
|
}
|
|
21
|
-
export declare const GRAPH_ENTITY_TYPES: ReadonlySet<EntityType>;
|
|
22
15
|
export declare const GRAPH_RELATION_TYPES: ReadonlySet<RelationType>;
|
|
16
|
+
export type GraphQueueStatus = 'pending' | 'processed' | 'skipped';
|
|
23
17
|
export declare const VALID_QUEUE_STATES: ReadonlySet<GraphQueueStatus>;
|
|
24
18
|
export declare const MAX_ENTITY_NAME_LEN = 512;
|
|
25
19
|
export interface Entity {
|
|
@@ -27,9 +21,7 @@ export interface Entity {
|
|
|
27
21
|
tenantId: string;
|
|
28
22
|
entityType: EntityType;
|
|
29
23
|
name: string;
|
|
30
|
-
/** The consolidated source memory this entity
|
|
31
|
-
* mirror is forgotten/pruned (ON DELETE SET NULL) - the entity then survives via
|
|
32
|
-
* its source_object provenance. */
|
|
24
|
+
/** The consolidated source memory this entity came from; NULL once the mirror is forgotten/pruned (ON DELETE SET NULL), then provenance is source_object. */
|
|
33
25
|
memoryId: string | null;
|
|
34
26
|
sourceKind: SourceKind;
|
|
35
27
|
/** The authoritative object this entity is anchored to (object-provenance path).
|
|
@@ -51,6 +43,33 @@ export interface Relation {
|
|
|
51
43
|
sourceObjectId?: number;
|
|
52
44
|
createdAt: string;
|
|
53
45
|
}
|
|
46
|
+
export interface EntityRow {
|
|
47
|
+
id: number;
|
|
48
|
+
tenant_id: string;
|
|
49
|
+
entity_type: string;
|
|
50
|
+
name: string;
|
|
51
|
+
memory_id: string | null;
|
|
52
|
+
source_kind: string;
|
|
53
|
+
source_object_type: string | null;
|
|
54
|
+
source_object_id: number | null;
|
|
55
|
+
created_at: string;
|
|
56
|
+
}
|
|
57
|
+
export interface RelationRow {
|
|
58
|
+
id: number;
|
|
59
|
+
tenant_id: string;
|
|
60
|
+
from_entity_id: number;
|
|
61
|
+
to_entity_id: number;
|
|
62
|
+
rel_type: string;
|
|
63
|
+
memory_id: string | null;
|
|
64
|
+
source_kind: string;
|
|
65
|
+
source_object_type: string | null;
|
|
66
|
+
source_object_id: number | null;
|
|
67
|
+
created_at: string;
|
|
68
|
+
}
|
|
69
|
+
export declare function rowToEntity(row: EntityRow): Entity;
|
|
70
|
+
export declare function rowToRelation(row: RelationRow): Relation;
|
|
71
|
+
export declare const ENTITY_COLS = "id, tenant_id, entity_type, name, memory_id, source_kind, source_object_type, source_object_id, created_at";
|
|
72
|
+
export declare const RELATION_COLS = "id, tenant_id, from_entity_id, to_entity_id, rel_type, memory_id, source_kind, source_object_type, source_object_id, created_at";
|
|
54
73
|
export interface GraphQueueItem {
|
|
55
74
|
id: number;
|
|
56
75
|
tenantId: string;
|
|
@@ -60,6 +79,17 @@ export interface GraphQueueItem {
|
|
|
60
79
|
enqueuedAt: string;
|
|
61
80
|
processedAt: string | null;
|
|
62
81
|
}
|
|
82
|
+
export interface QueueRow {
|
|
83
|
+
id: number;
|
|
84
|
+
tenant_id: string;
|
|
85
|
+
memory_id: string;
|
|
86
|
+
kind: string;
|
|
87
|
+
status: string;
|
|
88
|
+
enqueued_at: string;
|
|
89
|
+
processed_at: string | null;
|
|
90
|
+
}
|
|
91
|
+
export declare function rowToQueueItem(row: QueueRow): GraphQueueItem;
|
|
92
|
+
export declare const QUEUE_COLS = "id, tenant_id, memory_id, kind, status, enqueued_at, processed_at";
|
|
63
93
|
export interface InsertEntityOpts {
|
|
64
94
|
entityType: EntityType;
|
|
65
95
|
name: string;
|
|
@@ -85,4 +115,31 @@ export interface InsertRelationOpts {
|
|
|
85
115
|
/** The authoritative object this relation descends from. */
|
|
86
116
|
sourceObject?: SourceObjectRef;
|
|
87
117
|
}
|
|
88
|
-
|
|
118
|
+
/** The entity columns a rebuild diffs against. */
|
|
119
|
+
export interface StoredEntity {
|
|
120
|
+
id: number;
|
|
121
|
+
entity_type: string;
|
|
122
|
+
name: string;
|
|
123
|
+
memory_id: string | null;
|
|
124
|
+
source_kind: string;
|
|
125
|
+
source_object_type: string | null;
|
|
126
|
+
source_object_id: number | null;
|
|
127
|
+
}
|
|
128
|
+
/** The relation columns a rebuild diffs against. */
|
|
129
|
+
export interface StoredRelation {
|
|
130
|
+
id: number;
|
|
131
|
+
from_entity_id: number;
|
|
132
|
+
to_entity_id: number;
|
|
133
|
+
rel_type: string;
|
|
134
|
+
memory_id: string | null;
|
|
135
|
+
source_kind: string;
|
|
136
|
+
source_object_type: string | null;
|
|
137
|
+
source_object_id: number | null;
|
|
138
|
+
}
|
|
139
|
+
/** One tenant's stored graph as a rebuild reads it, with the kind of each memory the desired rows name. */
|
|
140
|
+
export interface StoredGraph {
|
|
141
|
+
readonly kinds: ReadonlyMap<string, string>;
|
|
142
|
+
readonly entities: readonly StoredEntity[];
|
|
143
|
+
readonly relations: readonly StoredRelation[];
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=graph-rows.d.ts.map
|
|
@@ -1,7 +1,17 @@
|
|
|
1
|
+
// The graph's entity, relation and queue rows as hippo.db holds them, and the types every reader and writer of them shares.
|
|
2
|
+
export const GRAPH_ENTITY_TYPES = new Set([
|
|
3
|
+
'person', 'project', 'customer', 'system', 'policy', 'decision',
|
|
4
|
+
]);
|
|
5
|
+
export const GRAPH_RELATION_TYPES = new Set([
|
|
6
|
+
'owns', 'supersedes', 'depends-on', 'blocked-by', 'references',
|
|
7
|
+
]);
|
|
8
|
+
export const VALID_QUEUE_STATES = new Set([
|
|
9
|
+
'pending', 'processed', 'skipped',
|
|
10
|
+
]);
|
|
11
|
+
export const MAX_ENTITY_NAME_LEN = 512;
|
|
1
12
|
export function rowToEntity(row) {
|
|
2
|
-
// SAFETY: entity_type/source_kind/source_object_type are DB CHECK-constrained
|
|
3
|
-
//
|
|
4
|
-
// SourceObjectType enum values, so the row's column values match those types.
|
|
13
|
+
// SAFETY: entity_type/source_kind/source_object_type are DB CHECK-constrained to exactly the EntityType/SourceKind/SourceObjectType enum values,
|
|
14
|
+
// so the row's column values match those types.
|
|
5
15
|
return {
|
|
6
16
|
id: row.id,
|
|
7
17
|
tenantId: row.tenant_id,
|
|
@@ -15,9 +25,8 @@ export function rowToEntity(row) {
|
|
|
15
25
|
};
|
|
16
26
|
}
|
|
17
27
|
export function rowToRelation(row) {
|
|
18
|
-
// SAFETY: rel_type/source_kind/source_object_type are DB CHECK-constrained
|
|
19
|
-
//
|
|
20
|
-
// SourceObjectType enum values, so the row's column values match those types.
|
|
28
|
+
// SAFETY: rel_type/source_kind/source_object_type are DB CHECK-constrained to exactly the RelationType/SourceKind/SourceObjectType enum values,
|
|
29
|
+
// so the row's column values match those types.
|
|
21
30
|
return {
|
|
22
31
|
id: row.id,
|
|
23
32
|
tenantId: row.tenant_id,
|
|
@@ -31,10 +40,11 @@ export function rowToRelation(row) {
|
|
|
31
40
|
createdAt: row.created_at,
|
|
32
41
|
};
|
|
33
42
|
}
|
|
43
|
+
export const ENTITY_COLS = `id, tenant_id, entity_type, name, memory_id, source_kind, source_object_type, source_object_id, created_at`;
|
|
44
|
+
export const RELATION_COLS = `id, tenant_id, from_entity_id, to_entity_id, rel_type, memory_id, source_kind, source_object_type, source_object_id, created_at`;
|
|
34
45
|
export function rowToQueueItem(row) {
|
|
35
|
-
// SAFETY: kind/status are DB CHECK-constrained
|
|
36
|
-
//
|
|
37
|
-
// values, so the row's column values match those types.
|
|
46
|
+
// SAFETY: kind/status are DB CHECK-constrained to exactly the SourceKind/GraphQueueStatus enum values,
|
|
47
|
+
// so the row's column values match those types.
|
|
38
48
|
return {
|
|
39
49
|
id: row.id,
|
|
40
50
|
tenantId: row.tenant_id,
|
|
@@ -45,7 +55,5 @@ export function rowToQueueItem(row) {
|
|
|
45
55
|
processedAt: row.processed_at,
|
|
46
56
|
};
|
|
47
57
|
}
|
|
48
|
-
export const ENTITY_COLS = `id, tenant_id, entity_type, name, memory_id, source_kind, source_object_type, source_object_id, created_at`;
|
|
49
|
-
export const RELATION_COLS = `id, tenant_id, from_entity_id, to_entity_id, rel_type, memory_id, source_kind, source_object_type, source_object_id, created_at`;
|
|
50
58
|
export const QUEUE_COLS = `id, tenant_id, memory_id, kind, status, enqueued_at, processed_at`;
|
|
51
|
-
//# sourceMappingURL=rows.js.map
|
|
59
|
+
//# sourceMappingURL=graph-rows.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DatabaseSyncLike } from '../db/index.js';
|
|
2
|
+
import type { GraphRows } from './port.js';
|
|
3
|
+
type CanRead = (scope: string | null) => boolean;
|
|
4
|
+
export interface GraphViewSpec {
|
|
5
|
+
readonly entity?: string;
|
|
6
|
+
readonly limit: number;
|
|
7
|
+
readonly canRead?: CanRead;
|
|
8
|
+
}
|
|
9
|
+
/** What `GraphReads.graphRows` answers, read on `db`: the caller opens the one
|
|
10
|
+
* snapshot that keeps entity ids and relation ids from two different rebuilds apart. */
|
|
11
|
+
export declare function graphViewRows(hippoRoot: string, db: DatabaseSyncLike, tenantId: string, spec: GraphViewSpec): GraphRows;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=graph-view-rows.d.ts.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { IN_LIST_CHUNK, loadEntities, loadEntitiesByIds, loadEntitiesByName, loadNeighborRelations, loadRelations, loadRelationsAmong } from './graph-reads.js';
|
|
2
|
+
/** The items whose source memory `canRead` admits: a NULL memoryId has no scope to hide, and a missing memory fails closed. */
|
|
3
|
+
function readableOnly(db, tenantId, items, canRead) {
|
|
4
|
+
if (!canRead)
|
|
5
|
+
return items;
|
|
6
|
+
const ids = [...new Set(items.flatMap((i) => (i.memoryId === null ? [] : [i.memoryId])))];
|
|
7
|
+
const readable = new Set();
|
|
8
|
+
for (let i = 0; i < ids.length; i += IN_LIST_CHUNK) {
|
|
9
|
+
const slice = ids.slice(i, i + IN_LIST_CHUNK);
|
|
10
|
+
// SAFETY: rows' shape matches the id and scope columns named in the SELECT.
|
|
11
|
+
const rows = db.prepare(`SELECT id, scope FROM memories WHERE +tenant_id = ? AND id IN (${slice.map(() => '?').join(',')})`)
|
|
12
|
+
.all(tenantId, ...slice);
|
|
13
|
+
for (const r of rows)
|
|
14
|
+
if (canRead(r.scope))
|
|
15
|
+
readable.add(r.id);
|
|
16
|
+
}
|
|
17
|
+
return items.filter((i) => i.memoryId === null || readable.has(i.memoryId));
|
|
18
|
+
}
|
|
19
|
+
function wholeGraphRows({ hippoRoot, db, tenantId }, limit) {
|
|
20
|
+
const entities = loadEntities(hippoRoot, tenantId, { limit }, db);
|
|
21
|
+
const relations = loadRelations(hippoRoot, tenantId, { limit }, db);
|
|
22
|
+
return { entities, relations, truncated: entities.length >= limit || relations.length >= limit };
|
|
23
|
+
}
|
|
24
|
+
/** The named entities with their 1-hop neighbours and the edges among that union; null when the caller may read none of the named ones. */
|
|
25
|
+
function focusRows({ hippoRoot, db, tenantId }, name, limit, canRead) {
|
|
26
|
+
// The name is queried directly, so it is found on a graph larger than `limit`; one name can map to many entities, so the matches are capped.
|
|
27
|
+
const named = loadEntitiesByName(hippoRoot, tenantId, name, { limit }, db);
|
|
28
|
+
// A hidden focus must not answer through its neighbours that the name exists.
|
|
29
|
+
const focus = readableOnly(db, tenantId, named, canRead);
|
|
30
|
+
if (focus.length === 0)
|
|
31
|
+
return null;
|
|
32
|
+
const focusIds = focus.map((e) => e.id);
|
|
33
|
+
const hop = loadNeighborRelations(hippoRoot, tenantId, focusIds, { limit }, db);
|
|
34
|
+
const union = new Set(focusIds);
|
|
35
|
+
let neighboursCapped = false;
|
|
36
|
+
for (const r of hop) {
|
|
37
|
+
if (union.size >= limit) {
|
|
38
|
+
neighboursCapped = true; // node cap filled before all neighbours were added
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
union.add(r.fromEntityId);
|
|
42
|
+
union.add(r.toEntityId);
|
|
43
|
+
}
|
|
44
|
+
const unionIds = [...union].slice(0, limit);
|
|
45
|
+
const entities = loadEntitiesByIds(hippoRoot, tenantId, unionIds, db);
|
|
46
|
+
// Both endpoints in the set: neighbour-to-neighbour edges are included, and the LIMIT never drops one for an out-of-union row.
|
|
47
|
+
const relations = loadRelationsAmong(hippoRoot, tenantId, unionIds, { limit }, db);
|
|
48
|
+
const truncated = named.length >= limit ||
|
|
49
|
+
hop.length >= limit || // neighbour scan capped -> a 1-hop neighbour may be omitted
|
|
50
|
+
neighboursCapped || // node cap filled before all neighbours were consumed
|
|
51
|
+
union.size > unionIds.length ||
|
|
52
|
+
relations.length >= limit;
|
|
53
|
+
return { entities, relations, truncated };
|
|
54
|
+
}
|
|
55
|
+
/** What `GraphReads.graphRows` answers, read on `db`: the caller opens the one
|
|
56
|
+
* snapshot that keeps entity ids and relation ids from two different rebuilds apart. */
|
|
57
|
+
export function graphViewRows(hippoRoot, db, tenantId, spec) {
|
|
58
|
+
const source = { hippoRoot, db, tenantId };
|
|
59
|
+
const raw = spec.entity !== undefined ? focusRows(source, spec.entity, spec.limit, spec.canRead) : wholeGraphRows(source, spec.limit);
|
|
60
|
+
if (raw === null)
|
|
61
|
+
return { entities: [], relations: [], truncated: false };
|
|
62
|
+
return {
|
|
63
|
+
entities: readableOnly(db, tenantId, raw.entities, spec.canRead),
|
|
64
|
+
relations: readableOnly(db, tenantId, raw.relations, spec.canRead),
|
|
65
|
+
truncated: raw.truncated,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=graph-view-rows.js.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type DatabaseSyncLike } from '../db/index.js';
|
|
2
|
+
import { type EntityType, type RelationType, type SourceKind, type SourceObjectType, type SourceObjectRef, type Entity, type Relation, type InsertEntityOpts, type InsertRelationOpts, type UpdateEntityOpts } from './graph-rows.js';
|
|
3
|
+
/** Resolve `source_kind` for a graph row from AT LEAST ONE valid provenance path, mirroring the DB trigger guard; raw is rejected.
|
|
4
|
+
* MEMORY path: exists, same-tenant, consolidated. OBJECT path (`memoryId` null): same-tenant, active|superseded, yields 'distilled'. All-null is rejected. */
|
|
5
|
+
interface ResolvedGraphSource {
|
|
6
|
+
sourceKind: SourceKind;
|
|
7
|
+
memoryId: string | null;
|
|
8
|
+
}
|
|
9
|
+
export declare function resolveConsolidatedSource(db: DatabaseSyncLike, tenantId: string, memoryId: string | null, sourceObject: SourceObjectRef | null, label: string): ResolvedGraphSource;
|
|
10
|
+
/** Insert a graph entity extracted from a consolidated memory; throws if the source memory is missing / cross-tenant / raw (the DB trigger is the backstop). */
|
|
11
|
+
export declare function insertEntity(hippoRoot: string, tenantId: string, opts: InsertEntityOpts, txDb?: DatabaseSyncLike): Entity;
|
|
12
|
+
/** Renames an entity or moves its memory provenance in place, keeping id and created_at; null when the row is gone.
|
|
13
|
+
* A delete plus an insert would cascade away every relation that points at it. */
|
|
14
|
+
export declare function updateEntity(hippoRoot: string, tenantId: string, id: number, opts: UpdateEntityOpts, txDb?: DatabaseSyncLike): Entity | null;
|
|
15
|
+
/** Insert a graph relation between two same-tenant entities, sourced from a consolidated memory. */
|
|
16
|
+
export declare function insertRelation(hippoRoot: string, tenantId: string, opts: InsertRelationOpts, txDb?: DatabaseSyncLike): Relation;
|
|
17
|
+
/** The source object still holds the loader's rule (active or superseded); a closed or gone one gets no new graph row. */
|
|
18
|
+
export declare function objectInForce(db: DatabaseSyncLike, tenantId: string, ref: SourceObjectRef): boolean;
|
|
19
|
+
/** The lowest-id entity of this type anchored to the source object, which is the row a rebuild keeps. */
|
|
20
|
+
export declare function entityIdBySource(db: DatabaseSyncLike, tenantId: string, entityType: EntityType, sourceObject: SourceObjectRef): number | undefined;
|
|
21
|
+
export declare function relationPresent(db: DatabaseSyncLike, tenantId: string, fromEntityId: number, toEntityId: number, relType: RelationType): boolean;
|
|
22
|
+
export declare function deleteEntityRow(db: DatabaseSyncLike, tenantId: string, id: number): void;
|
|
23
|
+
export declare function deleteRelationRow(db: DatabaseSyncLike, tenantId: string, id: number): void;
|
|
24
|
+
/** Runs one tenant's graph writes in `fn` on `txDb` under one BEGIN IMMEDIATE, so two rebuilds serialize instead of
|
|
25
|
+
* interleaving and a throw rolls back the whole chunk. The sole sanctioned place to wrap graph writes in a transaction. */
|
|
26
|
+
export declare function runGraphRebuildTransaction<T>(hippoRoot: string, tenantId: string, fn: (txDb: DatabaseSyncLike) => T, opts?: {
|
|
27
|
+
busyWaitMs?: number;
|
|
28
|
+
}): T;
|
|
29
|
+
/** Remove graph rows sourced from one MIRRORLESS object by (type, id) on close: with no mirror memory `markGraphDirty` cannot enqueue a rebuild.
|
|
30
|
+
* Fail-soft like `markGraphDirty`; the explicit relations DELETE also covers a relation whose OWN provenance is this object. */
|
|
31
|
+
export declare function removeGraphEntitiesForObject(hippoRoot: string, tenantId: string, sourceObjectType: SourceObjectType, sourceObjectId: number): void;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=graph-writes.d.ts.map
|