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
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit row) and bumpRecallStats
|
|
2
|
+
* (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs that open's setup before any reader serves. */
|
|
3
|
+
export const WORKER_OPS = {
|
|
4
|
+
base: {
|
|
5
|
+
findApiKey: 'read',
|
|
6
|
+
searchRecallEntries: 'read',
|
|
7
|
+
entriesByIds: 'read',
|
|
8
|
+
activeGoals: 'read',
|
|
9
|
+
freshRawEntries: 'read',
|
|
10
|
+
continuity: 'read',
|
|
11
|
+
planningFallacyEvidence: 'read',
|
|
12
|
+
appendAuditEvents: 'write',
|
|
13
|
+
finishRecall: 'write',
|
|
14
|
+
bumpRecallStats: 'write',
|
|
15
|
+
recordTokens: 'write',
|
|
16
|
+
},
|
|
17
|
+
vectors: {
|
|
18
|
+
embeddingIndexState: 'read',
|
|
19
|
+
storedVectors: 'read',
|
|
20
|
+
nearestEntries: 'read',
|
|
21
|
+
physicsParticles: 'read',
|
|
22
|
+
},
|
|
23
|
+
vectorViews: {
|
|
24
|
+
storedVectorViews: 'read',
|
|
25
|
+
},
|
|
26
|
+
keyAudit: {
|
|
27
|
+
revokeApiKey: 'write',
|
|
28
|
+
auditEventsAfter: 'read',
|
|
29
|
+
auditHighId: 'read',
|
|
30
|
+
},
|
|
31
|
+
keyWrites: {
|
|
32
|
+
createApiKey: 'write',
|
|
33
|
+
createSelfApiKey: 'write',
|
|
34
|
+
listApiKeys: 'read',
|
|
35
|
+
},
|
|
36
|
+
vectorWrites: {
|
|
37
|
+
entriesWithoutVector: 'read',
|
|
38
|
+
writeVectors: 'write',
|
|
39
|
+
},
|
|
40
|
+
entryWrites: {
|
|
41
|
+
writeEntry: 'write',
|
|
42
|
+
applyOutcome: 'write',
|
|
43
|
+
supersede: 'write',
|
|
44
|
+
archiveRaw: 'write',
|
|
45
|
+
forget: 'write',
|
|
46
|
+
},
|
|
47
|
+
contextReads: {
|
|
48
|
+
unfinishedHandoff: 'read',
|
|
49
|
+
ambientCandidates: 'server',
|
|
50
|
+
contextCandidates: 'read',
|
|
51
|
+
ambientTallies: 'read',
|
|
52
|
+
},
|
|
53
|
+
predictions: {
|
|
54
|
+
savePrediction: 'write',
|
|
55
|
+
closePrediction: 'write',
|
|
56
|
+
predictionById: 'read',
|
|
57
|
+
listPredictions: 'read',
|
|
58
|
+
predictionBaserate: 'write',
|
|
59
|
+
},
|
|
60
|
+
dagReads: {
|
|
61
|
+
sessionRawEntries: 'read',
|
|
62
|
+
sessionRawCount: 'read',
|
|
63
|
+
summaryWithDescendants: 'server',
|
|
64
|
+
},
|
|
65
|
+
auditLog: {
|
|
66
|
+
listAuditEvents: 'read',
|
|
67
|
+
},
|
|
68
|
+
quarantine: {
|
|
69
|
+
listQuarantined: 'read',
|
|
70
|
+
approveQuarantined: 'write',
|
|
71
|
+
rejectQuarantined: 'write',
|
|
72
|
+
},
|
|
73
|
+
graphReads: {
|
|
74
|
+
graphRows: 'read',
|
|
75
|
+
},
|
|
76
|
+
objects: {
|
|
77
|
+
listObjects: 'read',
|
|
78
|
+
objectById: 'read',
|
|
79
|
+
closeObject: 'write',
|
|
80
|
+
saveObject: 'write',
|
|
81
|
+
openIncident: 'write',
|
|
82
|
+
resolveIncident: 'write',
|
|
83
|
+
policiesInForce: 'read',
|
|
84
|
+
activeSkillsByName: 'read',
|
|
85
|
+
briefReceipts: 'read',
|
|
86
|
+
},
|
|
87
|
+
readiness: {
|
|
88
|
+
ping: 'read',
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
/** Sent by the executor itself and by no store method: the writer runs the store's open-time setup once, before any reader is sent a job. */
|
|
92
|
+
export const STORE_SETUP_OP = 'setup';
|
|
93
|
+
//# sourceMappingURL=worker-ops.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HippoStore, StoreGroups } from '../port.js';
|
|
2
|
+
import { type SqliteExecutor } from './executor.js';
|
|
3
|
+
/** Whether `store` answers its `loop: 'off'` routes from worker threads, so a hippo.db open on the server thread inside one is a defect. */
|
|
4
|
+
export declare function runsOffLoop(store: HippoStore): boolean;
|
|
5
|
+
/** `sqliteStore` with the worker-backed methods in place of its in-process ones; close() closes `executor` and resolves once its threads have exited.
|
|
6
|
+
* `executor` defaults to threads of the store's own, with the server's lock wait. */
|
|
7
|
+
export declare function workerSqliteStore(hippoRoot: string, executor?: SqliteExecutor): HippoStore & StoreGroups;
|
|
8
|
+
//# sourceMappingURL=worker-store.d.ts.map
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// hippo.db as serve() runs it by default: the methods in the op table answer from worker threads, the rest still run on the calling thread.
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { getHippoDbPath } from '../../db/index.js';
|
|
4
|
+
import { currentDeadline, currentRequestId } from '../../util/request-scope.js';
|
|
5
|
+
import { createSqliteExecutor } from './executor.js';
|
|
6
|
+
import { sqliteStore } from './store.js';
|
|
7
|
+
import { vectorCopiesOf, vectorViewsOf } from './vector-pack.js';
|
|
8
|
+
import { WORKER_OPS } from './worker-ops.js';
|
|
9
|
+
const offLoopStores = new WeakSet();
|
|
10
|
+
/** Whether `store` answers its `loop: 'off'` routes from worker threads, so a hippo.db open on the server thread inside one is a defect. */
|
|
11
|
+
export function runsOffLoop(store) {
|
|
12
|
+
return offLoopStores.has(store);
|
|
13
|
+
}
|
|
14
|
+
function send(executor, op, args, mode) {
|
|
15
|
+
const deadline = currentDeadline();
|
|
16
|
+
const call = executor.call(op, args, { mode, requestId: currentRequestId(), deadlineAt: deadline?.at });
|
|
17
|
+
// The request's own timer then waits for this call's answer, which names what became of a write.
|
|
18
|
+
return deadline ? deadline.track(call) : call;
|
|
19
|
+
}
|
|
20
|
+
/** `inProcess` with each method the op table places on a worker answered from one, so a new method of a group needs its tag and no body here. */
|
|
21
|
+
function onWorkers(executor, group, places, inProcess) {
|
|
22
|
+
const moved = Object.entries(places).flatMap(([method, place]) => (place === 'server' ? [] : [[
|
|
23
|
+
method,
|
|
24
|
+
(...args) => send(executor, `${group}.${method}`, args, place),
|
|
25
|
+
]]));
|
|
26
|
+
return { ...inProcess, ...Object.fromEntries(moved) };
|
|
27
|
+
}
|
|
28
|
+
// The two reads that return vectors: the worker answers with one moved buffer, and the port's Map is rebuilt here. No ids reads nothing, as in process.
|
|
29
|
+
function vectorGroups(executor, inProcess) {
|
|
30
|
+
const { vectors, vectorViews } = WORKER_OPS;
|
|
31
|
+
const pack = (op, ids, mode) => send(executor, op, [ids], mode);
|
|
32
|
+
return {
|
|
33
|
+
vectors: {
|
|
34
|
+
...onWorkers(executor, 'vectors', vectors, inProcess),
|
|
35
|
+
storedVectors: async (ids) => (ids.length === 0 ? new Map() : vectorCopiesOf(await pack('vectors.storedVectors', ids, vectors.storedVectors))),
|
|
36
|
+
},
|
|
37
|
+
vectorViews: {
|
|
38
|
+
storedVectorViews: async (ids) => (ids.length === 0
|
|
39
|
+
? new Map()
|
|
40
|
+
: vectorViewsOf(await pack('vectorViews.storedVectorViews', ids, vectorViews.storedVectorViews))),
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// A probe must not create the store, and a worker's first job sets it up, so a root with no hippo.db is ready before any thread starts.
|
|
45
|
+
function probing(hippoRoot, served) {
|
|
46
|
+
return {
|
|
47
|
+
ping: async () => {
|
|
48
|
+
if (existsSync(getHippoDbPath(hippoRoot)))
|
|
49
|
+
await served.ping();
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** `sqliteStore` with the worker-backed methods in place of its in-process ones; close() closes `executor` and resolves once its threads have exited.
|
|
54
|
+
* `executor` defaults to threads of the store's own, with the server's lock wait. */
|
|
55
|
+
export function workerSqliteStore(hippoRoot, executor = createSqliteExecutor(hippoRoot)) {
|
|
56
|
+
const inProcess = sqliteStore(hippoRoot);
|
|
57
|
+
const { keyAudit, keyWrites, vectorWrites, entryWrites, contextReads, predictions, dagReads, auditLog, quarantine, graphReads, objects } = WORKER_OPS;
|
|
58
|
+
const store = {
|
|
59
|
+
...inProcess,
|
|
60
|
+
...onWorkers(executor, 'base', WORKER_OPS.base, inProcess),
|
|
61
|
+
...vectorGroups(executor, inProcess.vectors),
|
|
62
|
+
keyAudit: onWorkers(executor, 'keyAudit', keyAudit, inProcess.keyAudit),
|
|
63
|
+
keyWrites: onWorkers(executor, 'keyWrites', keyWrites, inProcess.keyWrites),
|
|
64
|
+
vectorWrites: onWorkers(executor, 'vectorWrites', vectorWrites, inProcess.vectorWrites),
|
|
65
|
+
entryWrites: onWorkers(executor, 'entryWrites', entryWrites, inProcess.entryWrites),
|
|
66
|
+
contextReads: onWorkers(executor, 'contextReads', contextReads, inProcess.contextReads),
|
|
67
|
+
predictions: onWorkers(executor, 'predictions', predictions, inProcess.predictions),
|
|
68
|
+
dagReads: onWorkers(executor, 'dagReads', dagReads, inProcess.dagReads),
|
|
69
|
+
auditLog: onWorkers(executor, 'auditLog', auditLog, inProcess.auditLog),
|
|
70
|
+
quarantine: onWorkers(executor, 'quarantine', quarantine, inProcess.quarantine),
|
|
71
|
+
graphReads: onWorkers(executor, 'graphReads', graphReads, inProcess.graphReads),
|
|
72
|
+
objects: onWorkers(executor, 'objects', objects, inProcess.objects),
|
|
73
|
+
readiness: probing(hippoRoot, onWorkers(executor, 'readiness', WORKER_OPS.readiness, inProcess.readiness)),
|
|
74
|
+
close: () => executor.close(),
|
|
75
|
+
};
|
|
76
|
+
offLoopStores.add(store);
|
|
77
|
+
return store;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=worker-store.js.map
|
|
@@ -1,59 +1,13 @@
|
|
|
1
|
-
import type { MemoryEntry } from '../memory.js';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* DESC (NULLS LAST) so the rebuild cap (HIPPO_DAG_REBUILD_CAP, default 20)
|
|
5
|
-
* takes the most-recently-changed summaries first.
|
|
6
|
-
*
|
|
7
|
-
* Returns full MemoryEntry shape via MEMORY_SELECT_COLUMNS + rowToEntry
|
|
8
|
-
* (v28 fields are part of the standard read path).
|
|
9
|
-
*/
|
|
10
|
-
export declare function loadDirtySummaries(hippoRoot: string, tenantId: string): MemoryEntry[];
|
|
11
|
-
/**
|
|
12
|
-
* Mark a summary as dirty. Idempotent (re-marking dirty is a no-op + no
|
|
13
|
-
* second audit row). Tenant-scoped to prevent cross-tenant writes via
|
|
14
|
-
* parent-lookup. Called from invalidation.ts / writeEntry /
|
|
15
|
-
* forgetMemory / archiveRawMemory whenever a child is invalidated,
|
|
16
|
-
* superseded, forgotten, or archived.
|
|
17
|
-
*
|
|
18
|
-
* Quietly no-ops if the target row doesn't exist or isn't a level-2/3
|
|
19
|
-
* summary. Emits a 'summary_marked_dirty' audit row on actual
|
|
20
|
-
* state transitions (0 -> 1) via the audit() helper, which try/catches
|
|
21
|
-
* for missing audit_log (the v27 self-heal scenario).
|
|
22
|
-
*/
|
|
23
|
-
export declare function markSummaryDirty(hippoRoot: string, summaryId: string, tenantId: string, actor?: string): void;
|
|
24
|
-
/**
|
|
25
|
-
* Host-wide loader for L2 topic summaries without an L3 parent.
|
|
26
|
-
* Used by consolidate phase 1.9 (buildEntityProfiles) to cluster L2s into
|
|
27
|
-
* L3 entity profiles. Mirrors loadAllDirtySummaries: SQL-level
|
|
28
|
-
* filter is cheaper than reusing in-memory `survivors` (which doesn't
|
|
29
|
-
* contain L2s freshly created by phase 1.7 buildDag).
|
|
30
|
-
*
|
|
31
|
-
* Returns entries with tenantId attached so per-cluster writes stay
|
|
32
|
-
* tenant-scoped via summary.tenantId.
|
|
33
|
-
*/
|
|
1
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
2
|
+
/** Host-wide loader for L2 topic summaries without an L3 parent, for consolidate phase 1.9 (buildEntityProfiles); SQL-level filter, since in-memory
|
|
3
|
+
* `survivors` lacks L2s created by phase 1.7. Entries carry tenantId so per-cluster writes stay tenant-scoped. */
|
|
34
4
|
export declare function loadAllL2Summaries(hippoRoot: string): MemoryEntry[];
|
|
35
|
-
/**
|
|
36
|
-
*
|
|
37
|
-
* in one query so consolidate.ts (host-wide per L106-109) does not need a
|
|
38
|
-
* per-tenant loop. Each returned MemoryEntry carries its own tenantId (via
|
|
39
|
-
* rowToEntry), so per-summary children + rebuild UPDATE stay tenant-scoped.
|
|
40
|
-
*
|
|
41
|
-
* Sort: latest_at DESC NULLS LAST, id ASC — same as per-tenant variant so
|
|
42
|
-
* HIPPO_DAG_REBUILD_CAP takes most-recently-changed summaries first.
|
|
43
|
-
*/
|
|
5
|
+
/** Dirty summaries across all tenants in one query, newest change first (latest_at DESC NULLS LAST, id ASC) so HIPPO_DAG_REBUILD_CAP takes the most
|
|
6
|
+
* recently changed. Each entry carries its own tenantId so the children read and rebuild UPDATE stay tenant-scoped. */
|
|
44
7
|
export declare function loadAllDirtySummaries(hippoRoot: string): MemoryEntry[];
|
|
45
|
-
/**
|
|
46
|
-
* Load live children of a DAG summary. Used by
|
|
47
|
-
* rebuildDirtySummaries to regenerate content from the CURRENT child set
|
|
48
|
-
* (not the children at create-time). Skips archived. Tenant-scoped
|
|
49
|
-
* (defence in depth — dag_parent_id is unique-ish but tenant guard is
|
|
50
|
-
* cheap). created column is TEXT NOT NULL since db.ts schema v1.
|
|
51
|
-
*/
|
|
8
|
+
/** Live (non-archived) children of a DAG summary, so a rebuild regenerates from the CURRENT child set; tenant-scoped as defence in depth. */
|
|
52
9
|
export declare function loadChildrenOfSummary(hippoRoot: string, summaryId: string, tenantId: string): MemoryEntry[];
|
|
53
|
-
/**
|
|
54
|
-
* Patch applied by applyRebuildResult. Two-branch shape
|
|
55
|
-
* (bumpRebuildCount false for zero-child case, true for normal rebuild).
|
|
56
|
-
*/
|
|
10
|
+
/** Patch applied by applyRebuildResult; `bumpRebuildCount` is false for the zero-child case, true for a normal rebuild. */
|
|
57
11
|
export interface RebuildPatch {
|
|
58
12
|
content: string;
|
|
59
13
|
descendant_count: number;
|
|
@@ -63,28 +17,13 @@ export interface RebuildPatch {
|
|
|
63
17
|
zeroChildren: boolean;
|
|
64
18
|
actor: string;
|
|
65
19
|
}
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
68
|
-
* prepared UPDATE statement plus syncFtsRow inside one write scope.
|
|
69
|
-
* WHERE includes `AND summary_dirty = 1` so concurrent sleep's race-loser
|
|
70
|
-
* becomes a no-op (no rebuild_count bump, no audit row).
|
|
71
|
-
*
|
|
72
|
-
* Returns `{ changed, refused }`. `changed` is true when this call's UPDATE
|
|
73
|
-
* (content or metadata-only) affected a row; false on race-loss / unknown id
|
|
74
|
-
* / archived / wrong dag_level. `refused` is true only when a tombstone hit
|
|
75
|
-
* suppressed the content write AND the metadata UPDATE still landed — see
|
|
76
|
-
* the return-semantics comment below for the full contract.
|
|
77
|
-
*/
|
|
20
|
+
/** Apply a rebuild result to a dirty summary in one write scope (UPDATE plus syncFtsRow); `AND summary_dirty = 1` makes a concurrent race-loser a no-op.
|
|
21
|
+
* Returns `{ changed, refused }`: `refused` only when a tombstone hit suppressed the content write while the metadata UPDATE still landed. */
|
|
78
22
|
export declare function applyRebuildResult(hippoRoot: string, summary: MemoryEntry, patch: RebuildPatch): {
|
|
79
23
|
changed: boolean;
|
|
80
24
|
refused: boolean;
|
|
81
25
|
};
|
|
82
|
-
/**
|
|
83
|
-
*
|
|
84
|
-
* each member's writeEntry marks the new parent dirty, so the same cycle's rebuild would redo every new summary.
|
|
85
|
-
*
|
|
86
|
-
* Idempotent: no-op + no audit if summary isn't dirty. Audit
|
|
87
|
-
* source='buildDag-clean' distinguishes it from the rebuild's source.
|
|
88
|
-
*/
|
|
26
|
+
/** Clear summary_dirty on a new summary after buildDag's child-link loop (each member's writeEntry marks the parent dirty, so the same cycle would rebuild it).
|
|
27
|
+
* Idempotent (no-op, no audit if not dirty); audit source='buildDag-clean' distinguishes it from the rebuild's. */
|
|
89
28
|
export declare function clearSummaryDirtyAfterBuild(hippoRoot: string, summaryId: string, tenantId: string, actor?: string, source?: string): void;
|
|
90
29
|
//# sourceMappingURL=summaries.d.ts.map
|
package/dist/store/summaries.js
CHANGED
|
@@ -1,104 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { assertTenantId } from '
|
|
3
|
-
import { findRejectedValue, rejectionDigest } from '
|
|
4
|
-
import { log } from '../log.js';
|
|
1
|
+
import { withWriteScope } from '../db/index.js';
|
|
2
|
+
import { assertTenantId } from './tenant.js';
|
|
3
|
+
import { findRejectedValue, rejectionDigest } from './rejection.js';
|
|
4
|
+
import { log } from '../util/log.js';
|
|
5
5
|
import { MEMORY_SELECT_COLUMNS, rowToEntry } from './rows.js';
|
|
6
6
|
import { audit } from './audit-event.js';
|
|
7
7
|
import { syncFtsRow } from './entry-row.js';
|
|
8
|
-
import { openStore } from './open.js';
|
|
9
|
-
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* Load summaries flagged dirty for the given tenant. Sorted by latest_at
|
|
15
|
-
* DESC (NULLS LAST) so the rebuild cap (HIPPO_DAG_REBUILD_CAP, default 20)
|
|
16
|
-
* takes the most-recently-changed summaries first.
|
|
17
|
-
*
|
|
18
|
-
* Returns full MemoryEntry shape via MEMORY_SELECT_COLUMNS + rowToEntry
|
|
19
|
-
* (v28 fields are part of the standard read path).
|
|
20
|
-
*/
|
|
21
|
-
export function loadDirtySummaries(hippoRoot, tenantId) {
|
|
22
|
-
assertTenantId('loadDirtySummaries', tenantId);
|
|
23
|
-
const db = openStore(hippoRoot);
|
|
24
|
-
try {
|
|
25
|
-
// SAFETY: this query selects exactly MEMORY_SELECT_COLUMNS, matching
|
|
26
|
-
// MemoryRow's field set.
|
|
27
|
-
const rows = db.prepare(`
|
|
28
|
-
SELECT ${MEMORY_SELECT_COLUMNS}
|
|
29
|
-
FROM memories
|
|
30
|
-
WHERE summary_dirty = 1
|
|
31
|
-
AND tenant_id = ?
|
|
32
|
-
AND kind != 'archived'
|
|
33
|
-
ORDER BY latest_at DESC NULLS LAST, id ASC
|
|
34
|
-
`).all(tenantId);
|
|
35
|
-
return rows.map(rowToEntry);
|
|
36
|
-
}
|
|
37
|
-
finally {
|
|
38
|
-
closeHippoDb(db);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Mark a summary as dirty. Idempotent (re-marking dirty is a no-op + no
|
|
43
|
-
* second audit row). Tenant-scoped to prevent cross-tenant writes via
|
|
44
|
-
* parent-lookup. Called from invalidation.ts / writeEntry /
|
|
45
|
-
* forgetMemory / archiveRawMemory whenever a child is invalidated,
|
|
46
|
-
* superseded, forgotten, or archived.
|
|
47
|
-
*
|
|
48
|
-
* Quietly no-ops if the target row doesn't exist or isn't a level-2/3
|
|
49
|
-
* summary. Emits a 'summary_marked_dirty' audit row on actual
|
|
50
|
-
* state transitions (0 -> 1) via the audit() helper, which try/catches
|
|
51
|
-
* for missing audit_log (the v27 self-heal scenario).
|
|
52
|
-
*/
|
|
53
|
-
export function markSummaryDirty(hippoRoot, summaryId, tenantId, actor = 'cli') {
|
|
54
|
-
assertTenantId('markSummaryDirty', tenantId);
|
|
55
|
-
const db = openStore(hippoRoot);
|
|
56
|
-
try {
|
|
57
|
-
// RETURNING dag_level reads the actual level in the same round trip.
|
|
58
|
-
// SAFETY: result's shape matches the single `dag_level` column returned
|
|
59
|
-
// above.
|
|
60
|
-
const result = db.prepare(`
|
|
61
|
-
UPDATE memories
|
|
62
|
-
SET summary_dirty = 1
|
|
63
|
-
WHERE id = ?
|
|
64
|
-
AND tenant_id = ?
|
|
65
|
-
AND dag_level IN (2, 3)
|
|
66
|
-
AND summary_dirty = 0
|
|
67
|
-
AND kind != 'archived'
|
|
68
|
-
RETURNING dag_level
|
|
69
|
-
`).get(summaryId, tenantId);
|
|
70
|
-
if (result) {
|
|
71
|
-
// audit() wraps appendAuditEvent in try/catch (v27 heal scenario).
|
|
72
|
-
// metadata.source tells this dirty-mark apart from the other wiring layers' marks.
|
|
73
|
-
audit(db, 'summary_marked_dirty', summaryId, { dag_level: result.dag_level, source: 'E1' }, actor, tenantId);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
finally {
|
|
77
|
-
closeHippoDb(db);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// ---------------------------------------------------------------------------
|
|
81
|
-
// Sleep-cycle rebuild surface.
|
|
82
|
-
//
|
|
83
|
-
// loadAllDirtySummaries / loadChildrenOfSummary / applyRebuildResult /
|
|
84
|
-
// clearSummaryDirtyAfterBuild live HERE (not in dag.ts) because they need
|
|
85
|
-
// module-private MEMORY_SELECT_COLUMNS, MemoryRow, rowToEntry, audit,
|
|
86
|
-
// syncFtsRow, assertTenantId. dag.ts owns only the thin orchestrator
|
|
87
|
-
// rebuildDirtySummaries() that calls into these.
|
|
88
|
-
// ---------------------------------------------------------------------------
|
|
89
|
-
/**
|
|
90
|
-
* Host-wide loader for L2 topic summaries without an L3 parent.
|
|
91
|
-
* Used by consolidate phase 1.9 (buildEntityProfiles) to cluster L2s into
|
|
92
|
-
* L3 entity profiles. Mirrors loadAllDirtySummaries: SQL-level
|
|
93
|
-
* filter is cheaper than reusing in-memory `survivors` (which doesn't
|
|
94
|
-
* contain L2s freshly created by phase 1.7 buildDag).
|
|
95
|
-
*
|
|
96
|
-
* Returns entries with tenantId attached so per-cluster writes stay
|
|
97
|
-
* tenant-scoped via summary.tenantId.
|
|
98
|
-
*/
|
|
8
|
+
import { onHandle, openStore } from './open.js';
|
|
9
|
+
import { DIGEST_DISPLAY_CHARS } from '../util/token-text.js';
|
|
10
|
+
// Sleep-cycle rebuild surface: lives here, not in src/consolidate/dag.ts, because it needs module-private MEMORY_SELECT_COLUMNS, MemoryRow, rowToEntry,
|
|
11
|
+
// audit, syncFtsRow and assertTenantId. dag.ts keeps only the thin orchestrator rebuildDirtySummaries().
|
|
12
|
+
/** Host-wide loader for L2 topic summaries without an L3 parent, for consolidate phase 1.9 (buildEntityProfiles); SQL-level filter, since in-memory
|
|
13
|
+
* `survivors` lacks L2s created by phase 1.7. Entries carry tenantId so per-cluster writes stay tenant-scoped. */
|
|
99
14
|
export function loadAllL2Summaries(hippoRoot) {
|
|
100
|
-
|
|
101
|
-
try {
|
|
15
|
+
return onHandle(hippoRoot, (db) => {
|
|
102
16
|
// SAFETY: this query selects exactly MEMORY_SELECT_COLUMNS, matching
|
|
103
17
|
// MemoryRow's field set.
|
|
104
18
|
const rows = db.prepare(`
|
|
@@ -111,23 +25,12 @@ export function loadAllL2Summaries(hippoRoot) {
|
|
|
111
25
|
ORDER BY created ASC, id ASC
|
|
112
26
|
`).all();
|
|
113
27
|
return rows.map(rowToEntry);
|
|
114
|
-
}
|
|
115
|
-
finally {
|
|
116
|
-
closeHippoDb(db);
|
|
117
|
-
}
|
|
28
|
+
}, openStore);
|
|
118
29
|
}
|
|
119
|
-
/**
|
|
120
|
-
*
|
|
121
|
-
* in one query so consolidate.ts (host-wide per L106-109) does not need a
|
|
122
|
-
* per-tenant loop. Each returned MemoryEntry carries its own tenantId (via
|
|
123
|
-
* rowToEntry), so per-summary children + rebuild UPDATE stay tenant-scoped.
|
|
124
|
-
*
|
|
125
|
-
* Sort: latest_at DESC NULLS LAST, id ASC — same as per-tenant variant so
|
|
126
|
-
* HIPPO_DAG_REBUILD_CAP takes most-recently-changed summaries first.
|
|
127
|
-
*/
|
|
30
|
+
/** Dirty summaries across all tenants in one query, newest change first (latest_at DESC NULLS LAST, id ASC) so HIPPO_DAG_REBUILD_CAP takes the most
|
|
31
|
+
* recently changed. Each entry carries its own tenantId so the children read and rebuild UPDATE stay tenant-scoped. */
|
|
128
32
|
export function loadAllDirtySummaries(hippoRoot) {
|
|
129
|
-
|
|
130
|
-
try {
|
|
33
|
+
return onHandle(hippoRoot, (db) => {
|
|
131
34
|
// SAFETY: this query selects exactly MEMORY_SELECT_COLUMNS, matching
|
|
132
35
|
// MemoryRow's field set.
|
|
133
36
|
const rows = db.prepare(`
|
|
@@ -138,22 +41,12 @@ export function loadAllDirtySummaries(hippoRoot) {
|
|
|
138
41
|
ORDER BY latest_at DESC NULLS LAST, id ASC
|
|
139
42
|
`).all();
|
|
140
43
|
return rows.map(rowToEntry);
|
|
141
|
-
}
|
|
142
|
-
finally {
|
|
143
|
-
closeHippoDb(db);
|
|
144
|
-
}
|
|
44
|
+
}, openStore);
|
|
145
45
|
}
|
|
146
|
-
/**
|
|
147
|
-
* Load live children of a DAG summary. Used by
|
|
148
|
-
* rebuildDirtySummaries to regenerate content from the CURRENT child set
|
|
149
|
-
* (not the children at create-time). Skips archived. Tenant-scoped
|
|
150
|
-
* (defence in depth — dag_parent_id is unique-ish but tenant guard is
|
|
151
|
-
* cheap). created column is TEXT NOT NULL since db.ts schema v1.
|
|
152
|
-
*/
|
|
46
|
+
/** Live (non-archived) children of a DAG summary, so a rebuild regenerates from the CURRENT child set; tenant-scoped as defence in depth. */
|
|
153
47
|
export function loadChildrenOfSummary(hippoRoot, summaryId, tenantId) {
|
|
154
48
|
assertTenantId('loadChildrenOfSummary', tenantId);
|
|
155
|
-
|
|
156
|
-
try {
|
|
49
|
+
return onHandle(hippoRoot, (db) => {
|
|
157
50
|
// SAFETY: this query selects exactly MEMORY_SELECT_COLUMNS, matching
|
|
158
51
|
// MemoryRow's field set.
|
|
159
52
|
const rows = db.prepare(`
|
|
@@ -166,32 +59,15 @@ export function loadChildrenOfSummary(hippoRoot, summaryId, tenantId) {
|
|
|
166
59
|
ORDER BY created ASC
|
|
167
60
|
`).all(summaryId, tenantId);
|
|
168
61
|
return rows.map(rowToEntry);
|
|
169
|
-
}
|
|
170
|
-
finally {
|
|
171
|
-
closeHippoDb(db);
|
|
172
|
-
}
|
|
62
|
+
}, openStore);
|
|
173
63
|
}
|
|
174
|
-
/**
|
|
175
|
-
*
|
|
176
|
-
* prepared UPDATE statement plus syncFtsRow inside one write scope.
|
|
177
|
-
* WHERE includes `AND summary_dirty = 1` so concurrent sleep's race-loser
|
|
178
|
-
* becomes a no-op (no rebuild_count bump, no audit row).
|
|
179
|
-
*
|
|
180
|
-
* Returns `{ changed, refused }`. `changed` is true when this call's UPDATE
|
|
181
|
-
* (content or metadata-only) affected a row; false on race-loss / unknown id
|
|
182
|
-
* / archived / wrong dag_level. `refused` is true only when a tombstone hit
|
|
183
|
-
* suppressed the content write AND the metadata UPDATE still landed — see
|
|
184
|
-
* the return-semantics comment below for the full contract.
|
|
185
|
-
*/
|
|
64
|
+
/** Apply a rebuild result to a dirty summary in one write scope (UPDATE plus syncFtsRow); `AND summary_dirty = 1` makes a concurrent race-loser a no-op.
|
|
65
|
+
* Returns `{ changed, refused }`: `refused` only when a tombstone hit suppressed the content write while the metadata UPDATE still landed. */
|
|
186
66
|
export function applyRebuildResult(hippoRoot, summary, patch) {
|
|
187
67
|
assertTenantId('applyRebuildResult', summary.tenantId);
|
|
188
|
-
|
|
189
|
-
try {
|
|
68
|
+
return onHandle(hippoRoot, (db) => {
|
|
190
69
|
return withWriteScope(db, 'rebuild_summary', () => applyRebuildInSavepoint(db, summary, patch));
|
|
191
|
-
}
|
|
192
|
-
finally {
|
|
193
|
-
closeHippoDb(db);
|
|
194
|
-
}
|
|
70
|
+
}, openStore);
|
|
195
71
|
}
|
|
196
72
|
// ONE prepared UPDATE per branch. Test #8 inspects the SQL string.
|
|
197
73
|
const REBUILD_CONTENT_SQL = `UPDATE memories
|
|
@@ -224,13 +100,8 @@ function applyRebuildInSavepoint(db, summary, patch) {
|
|
|
224
100
|
const tombstone = patch.bumpRebuildCount
|
|
225
101
|
? findRejectedValue(db, summary.tenantId, rejectionDigest(patch.content))
|
|
226
102
|
: null;
|
|
227
|
-
// On a hit
|
|
228
|
-
//
|
|
229
|
-
// descendant_count/earliest_at/latest_at update + summary_dirty
|
|
230
|
-
// cleared, no content write, no rebuild_count bump. Clearing dirty
|
|
231
|
-
// (rather than leaving it set) is deliberate: leaving it dirty would
|
|
232
|
-
// make every following sleep cycle re-attempt and re-refuse the
|
|
233
|
-
// identical rebuild forever (the DAG-loop this fix closes).
|
|
103
|
+
// On a tombstone hit, write no content: take the zero-child metadata-only path (descendant_count/earliest_at/latest_at, summary_dirty cleared, no
|
|
104
|
+
// rebuild_count bump). Clearing dirty is deliberate: leaving it set would make every later sleep re-attempt and re-refuse the same rebuild forever.
|
|
234
105
|
const applyContentWrite = patch.bumpRebuildCount && !tombstone;
|
|
235
106
|
const result = applyContentWrite
|
|
236
107
|
? db.prepare(REBUILD_CONTENT_SQL).run(patch.content, patch.descendant_count, patch.earliest_at, patch.latest_at, nowIso, summary.id, summary.tenantId)
|
|
@@ -247,16 +118,16 @@ function applyRebuildInSavepoint(db, summary, patch) {
|
|
|
247
118
|
}
|
|
248
119
|
/** Audit and log a rebuild whose content matched a rejected value; metadata still landed. */
|
|
249
120
|
function auditRefusedRebuild(db, summary, patch, tombstone) {
|
|
250
|
-
// refused === true here (
|
|
251
|
-
//
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
121
|
+
// refused === true here (narrowed for the tombstone.* access). Best-effort refusal audit written INLINE in this still-open SAVEPOINT (the metadata
|
|
122
|
+
// UPDATE already committed to it), so a direct audit() call is correct, not the post-rollback auditRejectionRefusal.
|
|
123
|
+
audit(db, 'reject_refusal', {
|
|
124
|
+
targetId: summary.id,
|
|
125
|
+
metadata: { digest: tombstone.digest, reason: tombstone.reason },
|
|
126
|
+
actor: patch.actor,
|
|
127
|
+
tenantId: summary.tenantId
|
|
128
|
+
});
|
|
258
129
|
log.warn(`applyRebuildResult: refused rebuild content for ${summary.id} — matches a rejected value ` +
|
|
259
|
-
`(digest ${tombstone.digest.slice(0,
|
|
130
|
+
`(digest ${tombstone.digest.slice(0, DIGEST_DISPLAY_CHARS)}...); metadata updated, content unchanged`);
|
|
260
131
|
}
|
|
261
132
|
function syncRebuiltSummary(db, summary, patch, applyContentWrite, nowIso) {
|
|
262
133
|
// A bare UPDATE on memories does NOT update memories_fts, so resync from the patched entry;
|
|
@@ -274,28 +145,21 @@ function syncRebuiltSummary(db, summary, patch, applyContentWrite, nowIso) {
|
|
|
274
145
|
: summary.rebuild_count,
|
|
275
146
|
};
|
|
276
147
|
syncFtsRow(db, patchedEntry);
|
|
277
|
-
audit(db, 'summary_rebuilt', summary.id, {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
148
|
+
audit(db, 'summary_rebuilt', { targetId: summary.id, metadata: {
|
|
149
|
+
// Actual level from the summary in scope, never hardcoded: L2 -> 2, L3 -> 3.
|
|
150
|
+
dag_level: summary.dag_level,
|
|
151
|
+
source: 'E3-rebuild',
|
|
152
|
+
zero_children: patch.zeroChildren,
|
|
153
|
+
descendant_count: patch.descendant_count,
|
|
154
|
+
}, actor: patch.actor, tenantId: summary.tenantId });
|
|
284
155
|
}
|
|
285
|
-
/**
|
|
286
|
-
*
|
|
287
|
-
* each member's writeEntry marks the new parent dirty, so the same cycle's rebuild would redo every new summary.
|
|
288
|
-
*
|
|
289
|
-
* Idempotent: no-op + no audit if summary isn't dirty. Audit
|
|
290
|
-
* source='buildDag-clean' distinguishes it from the rebuild's source.
|
|
291
|
-
*/
|
|
156
|
+
/** Clear summary_dirty on a new summary after buildDag's child-link loop (each member's writeEntry marks the parent dirty, so the same cycle would rebuild it).
|
|
157
|
+
* Idempotent (no-op, no audit if not dirty); audit source='buildDag-clean' distinguishes it from the rebuild's. */
|
|
292
158
|
export function clearSummaryDirtyAfterBuild(hippoRoot, summaryId, tenantId, actor = 'cli', source = 'buildDag-clean') {
|
|
293
159
|
assertTenantId('clearSummaryDirtyAfterBuild', tenantId);
|
|
294
|
-
|
|
295
|
-
try {
|
|
160
|
+
onHandle(hippoRoot, (db) => {
|
|
296
161
|
// RETURNING dag_level reads the actual level so audit metadata stays accurate without an extra SELECT.
|
|
297
|
-
// SAFETY: result's shape matches the single `dag_level` column returned
|
|
298
|
-
// below.
|
|
162
|
+
// SAFETY: result's shape matches the single `dag_level` column returned below.
|
|
299
163
|
const result = db.prepare(`
|
|
300
164
|
UPDATE memories
|
|
301
165
|
SET summary_dirty = 0
|
|
@@ -308,11 +172,8 @@ export function clearSummaryDirtyAfterBuild(hippoRoot, summaryId, tenantId, acto
|
|
|
308
172
|
`).get(summaryId, tenantId);
|
|
309
173
|
if (result) {
|
|
310
174
|
// source tells buildDag-clean (L2) from buildEntityProfiles-clean (L3) and any future build path.
|
|
311
|
-
audit(db, 'summary_marked_clean', summaryId, { dag_level: result.dag_level, source }, actor, tenantId);
|
|
175
|
+
audit(db, 'summary_marked_clean', { targetId: summaryId, metadata: { dag_level: result.dag_level, source }, actor, tenantId });
|
|
312
176
|
}
|
|
313
|
-
}
|
|
314
|
-
finally {
|
|
315
|
-
closeHippoDb(db);
|
|
316
|
-
}
|
|
177
|
+
}, openStore);
|
|
317
178
|
}
|
|
318
179
|
//# sourceMappingURL=summaries.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DatabaseSyncLike } from '
|
|
1
|
+
import type { DatabaseSyncLike } from '../db/index.js';
|
|
2
2
|
/** Runs in the caller's transaction so the mark commits or rolls back with the child change; only a 0 to 1 flip is audited. */
|
|
3
3
|
export declare function markSummaryDirtyInTx(db: DatabaseSyncLike, summaryId: string, tenantId: string, actor: string): void;
|
|
4
4
|
//# sourceMappingURL=summary-dirty.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Leaf module so
|
|
1
|
+
// Leaf module so entry-writes.ts and raw-archive.ts can both mark a parent summary dirty without importing each other.
|
|
2
2
|
import { appendAuditEvent, reportAuditWriteFailure } from './audit.js';
|
|
3
3
|
/** Runs in the caller's transaction so the mark commits or rolls back with the child change; only a 0 to 1 flip is audited. */
|
|
4
4
|
export function markSummaryDirtyInTx(db, summaryId, tenantId, actor) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DatabaseSyncLike } from '../db/index.js';
|
|
2
2
|
/** The api_keys fields a tenant, revocation, rank or self-service ownership check reads. */
|
|
3
3
|
export interface ApiKeyOwner {
|
|
4
4
|
tenantId: string;
|
|
@@ -13,4 +13,9 @@ export declare function selectMemoryReach(db: DatabaseSyncLike, id: string): {
|
|
|
13
13
|
tenantId: string;
|
|
14
14
|
scope: string | null;
|
|
15
15
|
} | undefined;
|
|
16
|
+
/** `selectMemoryReach` for the store under `hippoRoot`, with no mirror setup and no full row read. */
|
|
17
|
+
export declare function memoryReach(hippoRoot: string, id: string): {
|
|
18
|
+
tenantId: string;
|
|
19
|
+
scope: string | null;
|
|
20
|
+
} | undefined;
|
|
16
21
|
//# sourceMappingURL=tenant-lookup.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// Owner lookups by id: the tenant and scope checks in src/api and the CLI's key-tenant lookup share these queries.
|
|
2
|
+
import { onHandle } from './open.js';
|
|
2
3
|
/** The owner row of `keyId`, or undefined when no such key exists. */
|
|
3
4
|
export function selectApiKeyOwner(db, keyId) {
|
|
4
5
|
// SAFETY: row's shape matches the four columns named in the SELECT.
|
|
@@ -13,4 +14,10 @@ export function selectMemoryReach(db, id) {
|
|
|
13
14
|
const row = db.prepare(`SELECT tenant_id, scope FROM memories WHERE id = ?`).get(id);
|
|
14
15
|
return row && { tenantId: row.tenant_id, scope: row.scope };
|
|
15
16
|
}
|
|
17
|
+
/** `selectMemoryReach` for the store under `hippoRoot`, with no mirror setup and no full row read. */
|
|
18
|
+
export function memoryReach(hippoRoot, id) {
|
|
19
|
+
return onHandle(hippoRoot, (db) => {
|
|
20
|
+
return selectMemoryReach(db, id);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
16
23
|
//# sourceMappingURL=tenant-lookup.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DatabaseSyncLike } from '../db/index.js';
|
|
2
|
+
import type { JsonValue } from '../util/json.js';
|
|
3
|
+
export interface ResolveOpts {
|
|
4
|
+
db?: DatabaseSyncLike;
|
|
5
|
+
apiKey?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function resolveTenantId(opts: ResolveOpts): string;
|
|
8
|
+
/** Runtime guard for tenant id args: an older JS caller can pass a `sessionId` as the tenant (`loadLatestHandoff(root, 'sess-abc')`) and silently get null.
|
|
9
|
+
* Rejects values starting `sess-` / `sess_`; a tenant literally named `sess-...` is refused, an accepted tradeoff. */
|
|
10
|
+
export declare function assertTenantId(fnName: string, value: JsonValue): asserts value is string;
|
|
11
|
+
//# sourceMappingURL=tenant.d.ts.map
|