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
|
@@ -75,21 +75,8 @@ const TRG_POLICIES_SUPERSEDE_TENANT_MATCH_UPDATE = `
|
|
|
75
75
|
export const v33 = {
|
|
76
76
|
version: 33,
|
|
77
77
|
up: (db) => {
|
|
78
|
-
// Policy first-class object.
|
|
79
|
-
//
|
|
80
|
-
// force over an EFFECTIVE-TIME range (valid_from required, valid_to nullable
|
|
81
|
-
// = open-ended) and evolves via the v32 processes supersede machinery
|
|
82
|
-
// (superseded_by self-FK + supersede tenant-match trigger + version +
|
|
83
|
-
// change_summary). This table = the v32 processes table MINUS `steps`
|
|
84
|
-
// (a policy has policy_text, not an ordered step list) PLUS the first-class
|
|
85
|
-
// effective-time columns valid_from/valid_to. Valid-time is the queryable
|
|
86
|
-
// axis (the as-of query loadPoliciesAsOf); transaction-time is present via
|
|
87
|
-
// created_at + the supersede chain's superseded_at (time-travel deferred).
|
|
88
|
-
//
|
|
89
|
-
// All date inputs are normalized to standard ISO-8601 datetime
|
|
90
|
-
// (toISOString) at the store boundary before persist/compare, so the
|
|
91
|
-
// fixed-width values sort lexically and the half-open [valid_from, valid_to)
|
|
92
|
-
// as-of comparison is correct.
|
|
78
|
+
// Policy first-class object: a rule in force over an effective-time range (valid_to nullable = open-ended); supersedes like v32 processes.
|
|
79
|
+
// Dates are ISO-8601 (toISOString) at the store boundary so values sort lexically and the half-open [valid_from, valid_to) as-of comparison is correct.
|
|
93
80
|
if (!tableExists(db, 'policies')) {
|
|
94
81
|
db.exec(POLICIES_TABLE);
|
|
95
82
|
db.exec(IDX_POLICIES_TENANT_STATUS);
|
|
@@ -69,17 +69,8 @@ const TRG_SKILLS_SUPERSEDE_TENANT_MATCH_UPDATE = `
|
|
|
69
69
|
export const v34 = {
|
|
70
70
|
version: 34,
|
|
71
71
|
up: (db) => {
|
|
72
|
-
// Skill first-class object.
|
|
73
|
-
//
|
|
74
|
-
// + an optional `trigger_text` (when to apply), evolving via the v32
|
|
75
|
-
// processes supersede machinery (superseded_by self-FK + supersede
|
|
76
|
-
// tenant-match trigger + version + change_summary). This table = the v32
|
|
77
|
-
// processes table MINUS `steps` (a skill's content is a single instructions
|
|
78
|
-
// body) PLUS `instructions` (NOT NULL) and `trigger_text`. "Executable" is
|
|
79
|
-
// scoped to an agent-followable instruction that EXPORTS into the agent's
|
|
80
|
-
// in-force rules (AGENTS.md / CLAUDE.md) via exportSkills; literal code
|
|
81
|
-
// execution is deferred. NOTE: the column is `trigger_text`, NOT `trigger`,
|
|
82
|
-
// because TRIGGER is a SQLite reserved keyword.
|
|
72
|
+
// Skill first-class object: `instructions` plus optional `trigger_text`, superseding like v32 processes; exportSkills writes it to AGENTS.md / CLAUDE.md.
|
|
73
|
+
// The column is `trigger_text`, not `trigger`, because TRIGGER is a SQLite reserved keyword.
|
|
83
74
|
if (!tableExists(db, 'skills')) {
|
|
84
75
|
db.exec(SKILLS_TABLE);
|
|
85
76
|
db.exec(IDX_SKILLS_TENANT_STATUS);
|
|
@@ -72,17 +72,8 @@ const TRG_PROJECT_BRIEFS_SUPERSEDE_TENANT_MATCH_UPDATE = `
|
|
|
72
72
|
export const v35 = {
|
|
73
73
|
version: 35,
|
|
74
74
|
up: (db) => {
|
|
75
|
-
// project_brief first-class object.
|
|
76
|
-
//
|
|
77
|
-
// scoped to a `repo`, evolving via the v34 skills supersede machinery
|
|
78
|
-
// (superseded_by self-FK + supersede tenant-match trigger + version +
|
|
79
|
-
// change_summary). This table = the v34 skills table with
|
|
80
|
-
// skill_name/trigger_text replaced by `repo` (the repo-scoping dimension)
|
|
81
|
-
// PLUS `summary` (the brief body). The distinguishing op (refreshBrief, in
|
|
82
|
-
// src/project-briefs.ts) auto-assembles the summary from the repo's receipts
|
|
83
|
-
// (memory rows tagged path:<repo>); it needs no schema support beyond `repo`.
|
|
84
|
-
// All column names were checked against SQLite reserved words:
|
|
85
|
-
// repo/summary/version/status/etc. are non-reserved.
|
|
75
|
+
// project_brief first-class object: repo-scoped `summary` superseding like v34 skills; refreshBrief (objects/project-briefs.ts) builds it from receipts.
|
|
76
|
+
// The schema needs only `repo`; column names were checked against SQLite reserved words.
|
|
86
77
|
if (!tableExists(db, 'project_briefs')) {
|
|
87
78
|
db.exec(PROJECT_BRIEFS_TABLE);
|
|
88
79
|
db.exec(IDX_PROJECT_BRIEFS_TENANT_STATUS);
|
|
@@ -72,17 +72,8 @@ const TRG_CUSTOMER_NOTES_SUPERSEDE_TENANT_MATCH_UPDATE = `
|
|
|
72
72
|
export const v36 = {
|
|
73
73
|
version: 36,
|
|
74
74
|
up: (db) => {
|
|
75
|
-
// customer_note first-class object
|
|
76
|
-
//
|
|
77
|
-
// v35 project_briefs supersede machinery (superseded_by self-FK + supersede
|
|
78
|
-
// tenant-match trigger + version + change_summary). This table = the v35
|
|
79
|
-
// project_briefs table with repo/summary replaced by `customer` (the
|
|
80
|
-
// entity-scoping dimension; a free-form account/customer id - the entities
|
|
81
|
-
// table is unbuilt, so a FK is deferred) PLUS `note` (the note body).
|
|
82
|
-
// MANY notes per customer (each its own supersede chain), unlike the
|
|
83
|
-
// one-summary-per-repo project_brief. All column names checked against SQLite
|
|
84
|
-
// reserved words: customer/note/
|
|
85
|
-
// version/status/etc. are non-reserved.
|
|
75
|
+
// customer_note first-class object: a note on a customer, superseding like v35 project_briefs; `customer` is a free-form id (no FK: no entities table).
|
|
76
|
+
// Many notes per customer, each its own supersede chain. Column names were checked against SQLite reserved words.
|
|
86
77
|
if (!tableExists(db, 'customer_notes')) {
|
|
87
78
|
db.exec(CUSTOMER_NOTES_TABLE);
|
|
88
79
|
db.exec(IDX_CUSTOMER_NOTES_TENANT_STATUS);
|
|
@@ -41,9 +41,8 @@ const GRAPH_EXTRACTION_QUEUE_TABLE = `
|
|
|
41
41
|
FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE CASCADE
|
|
42
42
|
)
|
|
43
43
|
`;
|
|
44
|
-
// entities guard: source_kind must equal the FK'd memory's actual kind (
|
|
45
|
-
//
|
|
46
|
-
// INSERT and UPDATE (UPDATE fires when memory_id/source_kind/tenant_id change).
|
|
44
|
+
// entities guard: source_kind must equal the FK'd memory's actual kind (raw or a lying source_kind ABORTs) and tenant must match,
|
|
45
|
+
// on INSERT and on UPDATE (when memory_id/source_kind/tenant_id change).
|
|
47
46
|
const TRG_ENTITIES_CONSOLIDATED_ONLY_INSERT = `
|
|
48
47
|
CREATE TRIGGER IF NOT EXISTS trg_entities_consolidated_only_insert
|
|
49
48
|
BEFORE INSERT ON entities
|
|
@@ -139,16 +138,8 @@ const TRG_GRAPH_QUEUE_CONSOLIDATED_ONLY_UPDATE = `
|
|
|
139
138
|
END;
|
|
140
139
|
END
|
|
141
140
|
`;
|
|
142
|
-
// Reverse guard:
|
|
143
|
-
//
|
|
144
|
-
// already-indexed memory is later mutated. So 'UPDATE memories SET kind=raw'
|
|
145
|
-
// (or a tenant change) on a memory the graph references would silently leave
|
|
146
|
-
// entity/relation/queue rows pointing at a raw / cross-tenant memory while
|
|
147
|
-
// their source_kind stays 'distilled' - bypassing the central 'graph never
|
|
148
|
-
// indexes raw' invariant after insertion. This trigger closes that direction:
|
|
149
|
-
// a memory cannot be reclassified to raw, nor moved cross-tenant, WHILE the
|
|
150
|
-
// graph references it (rebuild/remove the graph rows first). Cheap: the EXISTS
|
|
151
|
-
// checks are only evaluated when kind actually becomes raw or tenant changes.
|
|
141
|
+
// Reverse guard: graph triggers fire only on graph-table writes, so reclassifying an indexed memory to raw (or tenant) would break the no-raw invariant.
|
|
142
|
+
// Block both while the graph references the memory; the EXISTS checks run only when kind becomes raw or tenant changes.
|
|
152
143
|
const TRG_MEMORIES_GRAPH_REFERENCED_GUARD = `
|
|
153
144
|
CREATE TRIGGER IF NOT EXISTS trg_memories_graph_referenced_guard
|
|
154
145
|
BEFORE UPDATE ON memories
|
|
@@ -162,13 +153,8 @@ const TRG_MEMORIES_GRAPH_REFERENCED_GUARD = `
|
|
|
162
153
|
SELECT RAISE(ABORT, 'cannot change the kind or tenant of a memory while the graph references it (E3.3 graph-on-consolidated guard); a graph-referenced memory is immutable in kind/tenant - rebuild/remove the graph rows first, or rebuild them after supersession');
|
|
163
154
|
END
|
|
164
155
|
`;
|
|
165
|
-
// Second reverse guard:
|
|
166
|
-
// a
|
|
167
|
-
// validates the entity against its source memory, but an existing relation
|
|
168
|
-
// pointing at the entity is NOT re-validated, so a raw 'UPDATE entities SET
|
|
169
|
-
// tenant_id=?, memory_id=?' to another tenant would leave a tenant-A relation
|
|
170
|
-
// pointing at a tenant-B entity. Block the tenant move while the entity is
|
|
171
|
-
// referenced by any relation (rebuild the relations first).
|
|
156
|
+
// Second reverse guard: the entity UPDATE trigger does not re-validate existing relations, so a cross-tenant entity move would leave a tenant-A relation
|
|
157
|
+
// pointing at a tenant-B entity. Block the tenant move while any relation references the entity.
|
|
172
158
|
const TRG_ENTITIES_NO_TENANT_MOVE_WHEN_REFERENCED = `
|
|
173
159
|
CREATE TRIGGER IF NOT EXISTS trg_entities_no_tenant_move_when_referenced
|
|
174
160
|
BEFORE UPDATE ON entities
|
|
@@ -181,19 +167,8 @@ const TRG_ENTITIES_NO_TENANT_MOVE_WHEN_REFERENCED = `
|
|
|
181
167
|
export const v37 = {
|
|
182
168
|
version: 37,
|
|
183
169
|
up: (db) => {
|
|
184
|
-
// Graph-on-consolidated guard.
|
|
185
|
-
// The
|
|
186
|
-
// must NEVER index the raw layer. The substrate: entities + relations +
|
|
187
|
-
// graph_extraction_queue, each FK-ing to memories and guarded so they can only
|
|
188
|
-
// reference CONSOLIDATED memories (kind IN ('distilled','superseded')), never
|
|
189
|
-
// kind='raw'. New tables -> real CHECK constraints (unlike the ALTER'd memories,
|
|
190
|
-
// whose kind CHECK lives in triggers). The kind/source MATCH (source_kind ==
|
|
191
|
-
// the FK'd memory's actual kind) cannot be a CHECK (CHECK can't subquery), so it
|
|
192
|
-
// is a BEFORE INSERT *and* BEFORE UPDATE trigger (the subquery-capable pattern
|
|
193
|
-
// from the v30 decisions / predictions tenant-match triggers). Both INSERT and
|
|
194
|
-
// UPDATE are guarded: an INSERT-only guard is bypassable via a raw SQL UPDATE
|
|
195
|
-
// that moves a row onto a raw memory. All column
|
|
196
|
-
// names checked vs SQL reserved words: rel_type avoids REFERENCES.
|
|
170
|
+
// Graph-on-consolidated guard: entities, relations and graph_extraction_queue may reference only consolidated memories (distilled|superseded), never raw.
|
|
171
|
+
// The kind match needs a subquery, so it is a BEFORE INSERT and UPDATE trigger (INSERT-only is bypassable). rel_type avoids the reserved word REFERENCES.
|
|
197
172
|
if (!tableExists(db, 'entities')) {
|
|
198
173
|
db.exec(ENTITIES_TABLE);
|
|
199
174
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_entities_tenant ON entities(tenant_id)`);
|
|
@@ -33,12 +33,8 @@ const RELATIONS_TABLE = `
|
|
|
33
33
|
FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE SET NULL
|
|
34
34
|
)
|
|
35
35
|
`;
|
|
36
|
-
// entities guard (dual-provenance): at least one valid provenance, no raw.
|
|
37
|
-
//
|
|
38
|
-
// - memory path (memory_id NOT NULL): source_kind == the FK'd memory's kind
|
|
39
|
-
// (raw / lying source_kind ABORT) AND tenant-match.
|
|
40
|
-
// - object path (memory_id NULL): the (type,id) points at an EXISTING same-tenant
|
|
41
|
-
// object row whose status is active|superseded (explicit 4-way CASE per table).
|
|
36
|
+
// entities guard (dual-provenance): at least one valid provenance, no raw. Memory path: source_kind must equal the FK'd memory's kind, plus tenant-match.
|
|
37
|
+
// Object path (memory_id NULL): (type,id) must point at an existing same-tenant object with status active|superseded (4-way CASE per table); all-null aborts.
|
|
42
38
|
const TRG_ENTITIES_CONSOLIDATED_ONLY_INSERT = `
|
|
43
39
|
CREATE TRIGGER IF NOT EXISTS trg_entities_consolidated_only_insert
|
|
44
40
|
BEFORE INSERT ON entities
|
|
@@ -201,10 +197,7 @@ const TRG_RELATIONS_CONSOLIDATED_ONLY_UPDATE = `
|
|
|
201
197
|
END;
|
|
202
198
|
END
|
|
203
199
|
`;
|
|
204
|
-
// Recreated
|
|
205
|
-
// endpoint cannot be moved cross-tenant while referenced. trg_memories_graph_referenced_guard
|
|
206
|
-
// (on memories) and trg_graph_queue_* (on graph_extraction_queue) are NOT recreated
|
|
207
|
-
// here: those tables are not dropped by v38, so the triggers survive.
|
|
200
|
+
// Recreated verbatim from v37 (relation endpoints cannot move cross-tenant). The memories and graph queue triggers survive: those tables are not dropped.
|
|
208
201
|
const TRG_ENTITIES_NO_TENANT_MOVE_WHEN_REFERENCED = `
|
|
209
202
|
CREATE TRIGGER IF NOT EXISTS trg_entities_no_tenant_move_when_referenced
|
|
210
203
|
BEFORE UPDATE ON entities
|
|
@@ -217,34 +210,8 @@ const TRG_ENTITIES_NO_TENANT_MOVE_WHEN_REFERENCED = `
|
|
|
217
210
|
export const v38 = {
|
|
218
211
|
version: 38,
|
|
219
212
|
up: (db) => {
|
|
220
|
-
//
|
|
221
|
-
//
|
|
222
|
-
// decaying memory mirror. An in-force object must STAY in the graph after its mirror memory is forgotten or
|
|
223
|
-
// consolidation-pruned. The graph is a PURE DERIVED CACHE (clearGraph + rebuild on
|
|
224
|
-
// every `graph extract` / `sleep`), so v38 DROPs+recreates entities/relations (no
|
|
225
|
-
// data copy) and the next extract repopulates. graph_extraction_queue is untouched.
|
|
226
|
-
//
|
|
227
|
-
// Two provenance paths, "at least one, no raw":
|
|
228
|
-
// - memory path (memory_id NOT NULL): source_kind must equal the FK'd memory's live
|
|
229
|
-
// kind and that kind is distilled|superseded (raw still ABORTs) + tenant-match.
|
|
230
|
-
// - object path (memory_id NULL): source_object_type/id must reference an EXISTING
|
|
231
|
-
// same-tenant object row whose status is active|superseded (not closed). Such objects
|
|
232
|
-
// are consolidated BY CONSTRUCTION, so the no-raw invariant still holds.
|
|
233
|
-
// - all-null is rejected.
|
|
234
|
-
//
|
|
235
|
-
// memory_id is now NULLABLE with ON DELETE SET NULL (was NOT NULL / CASCADE), so a
|
|
236
|
-
// mirror forget/consolidate nulls the recall pointer without dropping the row. NOTE
|
|
237
|
-
// (empirically verified, contradicts the SQLite docs): node:sqlite DOES fire the
|
|
238
|
-
// BEFORE UPDATE guard from the FK SET NULL action even with recursive_triggers OFF.
|
|
239
|
-
// So the *_consolidated_only_UPDATE triggers deliberately OMIT the all-null ABORT
|
|
240
|
-
// (kept on INSERT) - otherwise a mirror delete of a memory-only row would be blocked.
|
|
241
|
-
// See the per-trigger comments below. A SET NULL leaves source_kind at its old value
|
|
242
|
-
// by design (the object path is distilled-by-construction; source_kind is only
|
|
243
|
-
// re-checked when memory_id NOT NULL).
|
|
244
|
-
// source_object_id is a SOFT (type,id) pointer (no hard FK) the rebuild re-validates,
|
|
245
|
-
// so a legitimate object hard-delete is never blocked; a `closed` object row drops at next
|
|
246
|
-
// extract. SQLite cannot parametrize a table name in a trigger, so the object-path
|
|
247
|
-
// validation is an explicit 4-way CASE (one arm per object table).
|
|
213
|
+
// Anchor graph provenance to the authoritative object, not the decaying mirror memory; the graph is a derived cache, so entities/relations are recreated.
|
|
214
|
+
// memory_id is NULLABLE ON DELETE SET NULL; node:sqlite fires the BEFORE UPDATE guard on that SET NULL, so the UPDATE triggers omit the all-null ABORT.
|
|
248
215
|
recreateGraphTables(db);
|
|
249
216
|
createGraphGuards(db);
|
|
250
217
|
},
|
|
@@ -1,30 +1,22 @@
|
|
|
1
1
|
import * as os from 'os';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { deriveOriginProject, originFromSource, isGlobalStoreRoot } from '../../project-identity.js';
|
|
3
|
+
import { deriveOriginProject, originFromSource, isGlobalStoreRoot } from '../../core/project-identity.js';
|
|
4
4
|
import { raiseMinBinary } from '../meta.js';
|
|
5
5
|
import { tableHasColumn } from '../tables.js';
|
|
6
6
|
export const v39 = {
|
|
7
7
|
version: 39,
|
|
8
8
|
up: (db, ctx) => {
|
|
9
|
-
// Memory scope isolation.
|
|
10
|
-
// origin_project: '<name>' = owned by that project, '' = user-global,
|
|
9
|
+
// Memory scope isolation. origin_project: '<name>' = owned by that project, '' = user-global,
|
|
11
10
|
// NULL = legacy/unknown (ambient context treats NULL as deny).
|
|
12
11
|
if (!tableHasColumn(db, 'memories', 'origin_project')) {
|
|
13
12
|
db.exec(`ALTER TABLE memories ADD COLUMN origin_project TEXT`);
|
|
14
13
|
}
|
|
15
|
-
// Backfill
|
|
16
|
-
//
|
|
17
|
-
// take <project>; a share whose <project> is the home dir basename
|
|
18
|
-
// maps to '' (user-global).
|
|
19
|
-
// 2. Every other row was written into THIS store, so it takes the
|
|
20
|
-
// store's own origin: `<project>/.hippo` -> '<project>', the
|
|
21
|
-
// home/global store -> '' (user-global).
|
|
22
|
-
// Rows stay NULL only when no hippoRoot was provided.
|
|
14
|
+
// Backfill from store location only (no path-tag guessing): 'shared:<project>:<ts>' rows take <project> (home-dir basename maps to '' user-global);
|
|
15
|
+
// every other row takes this store's origin (`<project>/.hippo` -> '<project>', global store -> ''). Rows stay NULL only when no hippoRoot was provided.
|
|
23
16
|
const hippoRoot = ctx?.hippoRoot;
|
|
24
17
|
if (hippoRoot) {
|
|
25
|
-
// Provenance-source evidence first (shared:<project>: / promoted:<localRoot>,
|
|
26
|
-
//
|
|
27
|
-
// store's own location for everything else.
|
|
18
|
+
// Provenance-source evidence first (shared:<project>: / promoted:<localRoot>, parsed by the markdown-import stamp's helper),
|
|
19
|
+
// then the store's own location for everything else.
|
|
28
20
|
const homeName = path.basename(os.homedir()).toLowerCase();
|
|
29
21
|
// SAFETY: sourcedRows' shape matches the two columns (id, source)
|
|
30
22
|
// named in the SELECT above.
|
|
@@ -36,18 +28,15 @@ export const v39 = {
|
|
|
36
28
|
continue;
|
|
37
29
|
setOrigin.run(origin, row.id);
|
|
38
30
|
}
|
|
39
|
-
// The global root itself is
|
|
40
|
-
//
|
|
41
|
-
// repo must not stamp the whole corpus with that repo's name.
|
|
31
|
+
// The global root itself is always user-global (''), whatever surrounds it on disk: a HIPPO_HOME inside a dotfiles git repo
|
|
32
|
+
// must not stamp the whole corpus with that repo's name.
|
|
42
33
|
const storeOrigin = isGlobalStoreRoot(hippoRoot)
|
|
43
34
|
? ''
|
|
44
35
|
: deriveOriginProject(path.dirname(hippoRoot));
|
|
45
36
|
db.prepare(`UPDATE memories SET origin_project = ? WHERE origin_project IS NULL`).run(storeOrigin);
|
|
46
37
|
}
|
|
47
|
-
// Rollback-safety guard
|
|
48
|
-
//
|
|
49
|
-
// injecting cross-project rows. 1.24.0 is the first version with the
|
|
50
|
-
// isolation behavior. Forward-only - never lower an existing minimum.
|
|
38
|
+
// Rollback-safety guard: a pre-isolation binary would ignore origin_project and the secret veto and resume injecting cross-project rows.
|
|
39
|
+
// 1.24.0 is the first version with isolation; forward-only, never lower an existing minimum.
|
|
51
40
|
raiseMinBinary(db, '1.24.0');
|
|
52
41
|
},
|
|
53
42
|
};
|
|
@@ -1,16 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
version: 40,
|
|
3
|
-
up: (db) => {
|
|
4
|
-
// Retrieval-trace persistence.
|
|
5
|
-
// Follows the v18 goal_recall_log style: one parent trace row per
|
|
6
|
-
// recall, a WITHOUT ROWID child table for the ranked results, and a
|
|
7
|
-
// separate append-only outcomes table so audit_log pruning can never
|
|
8
|
-
// erase training data.
|
|
9
|
-
//
|
|
10
|
-
// No min_compatible_binary bump, on purpose: an old binary ignores these tables and
|
|
11
|
-
// recordTraceOutcome re-validates trace ids, so its stale writes are skipped; a bump
|
|
12
|
-
// would lock old binaries out of the whole store for an observability feature.
|
|
13
|
-
db.exec(`
|
|
1
|
+
const RECALL_TRACES_SCHEMA_SQL = `
|
|
14
2
|
CREATE TABLE IF NOT EXISTS recall_traces (
|
|
15
3
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
16
4
|
ts TEXT NOT NULL,
|
|
@@ -56,7 +44,13 @@ export const v40 = {
|
|
|
56
44
|
memory_ids_json TEXT NOT NULL -- ids actually credited by this outcome event
|
|
57
45
|
);
|
|
58
46
|
CREATE INDEX IF NOT EXISTS idx_recall_trace_outcomes_trace ON recall_trace_outcomes(trace_id);
|
|
59
|
-
|
|
47
|
+
`;
|
|
48
|
+
export const v40 = {
|
|
49
|
+
version: 40,
|
|
50
|
+
up: (db) => {
|
|
51
|
+
// Retrieval-trace persistence: one trace row per recall, a WITHOUT ROWID results table, append-only outcomes (audit_log pruning must not erase them).
|
|
52
|
+
// No min_compatible_binary bump on purpose: old binaries ignore these tables and recordTraceOutcome re-validates trace ids; a bump would lock them out.
|
|
53
|
+
db.exec(RECALL_TRACES_SCHEMA_SQL);
|
|
60
54
|
},
|
|
61
55
|
};
|
|
62
56
|
//# sourceMappingURL=v40.js.map
|
|
@@ -1,30 +1,8 @@
|
|
|
1
1
|
export const v41 = {
|
|
2
2
|
version: 41,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Rejected-value tombstone.
|
|
5
|
-
//
|
|
6
|
-
// a durable say: the write-path guard in upsertEntryRow refuses any
|
|
7
|
-
// write that would re-introduce a value whose normalized digest
|
|
8
|
-
// matches a row here.
|
|
9
|
-
//
|
|
10
|
-
// No raw content and no preview stored. Follows the raw_archive
|
|
11
|
-
// redaction precedent (raw-archive.ts payload is {redacted:true, ...}):
|
|
12
|
-
// a rejected value may itself be a secret or PII ("never store my key
|
|
13
|
-
// again") — persisting it in the tombstone would defeat the point. The
|
|
14
|
-
// human sees the content at reject time (CLI echoes it); afterwards
|
|
15
|
-
// `reason` is the human-readable identity.
|
|
16
|
-
//
|
|
17
|
-
// No FK on source_memory_id (v40 precedent above: tombstone outlives
|
|
18
|
-
// the row it was sourced from) — provenance only.
|
|
19
|
-
//
|
|
20
|
-
// Reserved-word check on column names:
|
|
21
|
-
// tenant/digest/reason/rejected/source/normalized/chars are non-reserved.
|
|
22
|
-
//
|
|
23
|
-
// No min_compatible_binary bump, a deliberate tradeoff: an old binary sharing a synced store
|
|
24
|
-
// writes WITHOUT the guard until upgraded; documented in
|
|
25
|
-
// MEMORY_ENVELOPE.md rather than hard-locking every old binary out of
|
|
26
|
-
// the store, which is disproportionate for the dominant single-user
|
|
27
|
-
// single-binary deployment.
|
|
4
|
+
// Rejected-value tombstone: upsertEntryRow refuses writes matching a row's digest. No raw content stored (may be secret); no FK: it outlives its row.
|
|
5
|
+
// No min_compatible_binary bump, a deliberate tradeoff: an old binary writes without the guard until upgraded (see MEMORY_ENVELOPE.md).
|
|
28
6
|
db.exec(`
|
|
29
7
|
CREATE TABLE IF NOT EXISTS rejected_values (
|
|
30
8
|
tenant_id TEXT NOT NULL,
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
version: 43,
|
|
3
|
-
up: (db) => {
|
|
4
|
-
// W2a work-queue cards (trajectories/01M2D5VSYJFK4YXQ0RG2NGCPYJ/plan.md). Additive only, v41 precedent.
|
|
5
|
-
db.exec(`
|
|
1
|
+
const CARDS_SCHEMA_SQL = `
|
|
6
2
|
CREATE TABLE IF NOT EXISTS cards (
|
|
7
3
|
id TEXT PRIMARY KEY,
|
|
8
4
|
title TEXT NOT NULL,
|
|
@@ -61,7 +57,12 @@ export const v43 = {
|
|
|
61
57
|
|
|
62
58
|
CREATE INDEX IF NOT EXISTS idx_session_handoffs_tenant_card
|
|
63
59
|
ON session_handoffs(tenant_id, card_id, created_at DESC);
|
|
64
|
-
|
|
60
|
+
`;
|
|
61
|
+
export const v43 = {
|
|
62
|
+
version: 43,
|
|
63
|
+
up: (db) => {
|
|
64
|
+
// W2a work-queue cards. Additive only, v41 precedent.
|
|
65
|
+
db.exec(CARDS_SCHEMA_SQL);
|
|
65
66
|
},
|
|
66
67
|
};
|
|
67
68
|
//# sourceMappingURL=v43.js.map
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
export const v44 = {
|
|
2
2
|
version: 44,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Dormant memories (src/dormant.ts): with `dormant.enabled`,
|
|
5
|
-
//
|
|
6
|
-
// leaves `memories` in the same transaction, so recall, context and
|
|
7
|
-
// every sleep pass stop seeing it; entry_json is the full MemoryEntry
|
|
8
|
-
// snapshot `hippo dormant restore` writes back. No FK to memories (the
|
|
9
|
-
// memories row is gone by design). Additive only, v41 precedent: no
|
|
10
|
-
// min_compatible_binary bump. An older binary ignores the table and
|
|
11
|
-
// keeps deleting faded memories as it always did.
|
|
4
|
+
// Dormant memories (src/store/dormant.ts): with `dormant.enabled`, sleep moves a faded memory here; `hippo dormant restore` writes entry_json back.
|
|
5
|
+
// No FK to memories (the row is gone by design). Additive only: no min_compatible_binary bump, an older binary ignores the table and keeps deleting.
|
|
12
6
|
db.exec(`
|
|
13
7
|
CREATE TABLE IF NOT EXISTS dormant_memories (
|
|
14
8
|
tenant_id TEXT NOT NULL DEFAULT 'default',
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
export const v45 = {
|
|
2
2
|
version: 45,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Token ledger (src/token-ledger.ts): one row per block of
|
|
5
|
-
//
|
|
6
|
-
// (sent), 'skip' (unchanged since the session's last inject, not sent), 'reset'
|
|
7
|
-
// (compaction dropped earlier injections, so the next one must be sent) or
|
|
8
|
-
// 'reread' (re-read by later calls, booked at session end per call day). block_hash
|
|
9
|
-
// lets the per-prompt hook skip an unchanged block. Rows older than the retention
|
|
10
|
-
// window are pruned on write. Additive only: no min_compatible_binary bump.
|
|
4
|
+
// Token ledger (src/store/token-ledger.ts): one row per block of memory text handed to an agent; `event` is inject, skip, reset (compaction) or reread.
|
|
5
|
+
// block_hash lets the per-prompt hook skip an unchanged block; rows past retention are pruned on write. Additive: no min_compatible_binary bump.
|
|
11
6
|
db.exec(`
|
|
12
7
|
CREATE TABLE IF NOT EXISTS token_ledger (
|
|
13
8
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const v46 = {
|
|
2
2
|
version: 46,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Failure log (src/failure-log.ts): hashes only, since failure text can carry paths and secrets.
|
|
4
|
+
// Failure log (src/store/failure-log.ts): hashes only, since failure text can carry paths and secrets.
|
|
5
5
|
// Additive only: no min_compatible_binary bump.
|
|
6
6
|
db.exec(`
|
|
7
7
|
CREATE TABLE IF NOT EXISTS failure_log (
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
export const v47 = {
|
|
2
2
|
version: 47,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Scope grants (src/auth.ts): a member key reads a
|
|
5
|
-
//
|
|
6
|
-
// min_compatible_binary bump.
|
|
4
|
+
// Scope grants (src/store/auth.ts): a member key reads a restricted scope only by an explicit row here.
|
|
5
|
+
// Additive only: no min_compatible_binary bump.
|
|
7
6
|
db.exec(`
|
|
8
7
|
CREATE TABLE IF NOT EXISTS api_key_scope_grants (
|
|
9
8
|
key_id TEXT NOT NULL,
|
|
@@ -2,7 +2,7 @@ import { MEMORY_QUARANTINE_DDL } from '../continuity.js';
|
|
|
2
2
|
export const v48 = {
|
|
3
3
|
version: 48,
|
|
4
4
|
up: (db) => {
|
|
5
|
-
// Quarantine (src/quarantine.ts): a poisoned or suspect memory sits here pending
|
|
5
|
+
// Quarantine (src/trust/quarantine.ts): a poisoned or suspect memory sits here pending
|
|
6
6
|
// admin review instead of being hidden with no record. Additive only: no min_compatible_binary bump.
|
|
7
7
|
db.exec(MEMORY_QUARANTINE_DDL);
|
|
8
8
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const v49 = {
|
|
2
2
|
version: 49,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Compaction record (src/compaction-record.ts): one row per Claude Code compaction, written before it (started)
|
|
4
|
+
// Compaction record (src/capture/compaction-record.ts): one row per Claude Code compaction, written before it (started)
|
|
5
5
|
// and after it (summarised, done). Not a memory row. Additive only: no min_compatible_binary bump.
|
|
6
6
|
db.exec(`
|
|
7
7
|
CREATE TABLE IF NOT EXISTS compactions (
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
version: 50,
|
|
3
|
-
up: (db) => {
|
|
4
|
-
// Per-turn delivery events (src/recall-trace.ts). Additive only: no min_compatible_binary bump; rollback drops both tables
|
|
5
|
-
// and sets schema_version back to 49. No CHECK on enum columns since SQLite cannot alter one; delivery-recorder.ts unions are the allowlist.
|
|
6
|
-
db.exec(`
|
|
1
|
+
const DELIVERY_EVENTS_SCHEMA_SQL = `
|
|
7
2
|
CREATE TABLE IF NOT EXISTS delivery_events (
|
|
8
3
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
9
4
|
ts TEXT NOT NULL,
|
|
@@ -61,7 +56,13 @@ export const v50 = {
|
|
|
61
56
|
tokens INTEGER,
|
|
62
57
|
PRIMARY KEY (event_id, memory_id)
|
|
63
58
|
) WITHOUT ROWID;
|
|
64
|
-
|
|
59
|
+
`;
|
|
60
|
+
export const v50 = {
|
|
61
|
+
version: 50,
|
|
62
|
+
up: (db) => {
|
|
63
|
+
// Per-turn delivery events (src/store/recall-trace.ts). Additive only: no min_compatible_binary bump; rollback drops both tables
|
|
64
|
+
// and sets schema_version back to 49. No CHECK on enum columns since SQLite cannot alter one; delivery-recorder.ts unions are the allowlist.
|
|
65
|
+
db.exec(DELIVERY_EVENTS_SCHEMA_SQL);
|
|
65
66
|
},
|
|
66
67
|
};
|
|
67
68
|
//# sourceMappingURL=v50.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const v51 = {
|
|
2
2
|
version: 51,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Both indexes serve loadAmbientCandidates (src/store.ts); their WHERE text must match its SQL for the planner to pick them.
|
|
4
|
+
// Both indexes serve loadAmbientCandidates (src/store/candidates.ts); their WHERE text must match its SQL for the planner to pick them.
|
|
5
5
|
// The drift index stays empty on a healthy store, so the drift probe is one index seek instead of a tenant scan. Additive only.
|
|
6
6
|
db.exec(`
|
|
7
7
|
CREATE INDEX IF NOT EXISTS idx_memories_pinned
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MEMORY_VECTORS_DDL } from '
|
|
1
|
+
import { MEMORY_VECTORS_DDL } from '../vector-store.js';
|
|
2
2
|
export const v52 = {
|
|
3
3
|
version: 52,
|
|
4
4
|
// Vectors move out of embeddings.json so hybrid search reads only the rows it ranks. Additive only; the JSON import runs after COMMIT.
|
package/dist/db/open.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DatabaseSyncLike } from './sqlite.js';
|
|
2
|
-
import { getHippoDbPath } from './connect.js';
|
|
2
|
+
import { getHippoDbPath, type OpenedDb } from './connect.js';
|
|
3
3
|
export { getHippoDbPath };
|
|
4
4
|
/** Lock wait for hook commands: under the 5 s prompt-hook budget even after a few skipped writes, and far above a normal write's hold. */
|
|
5
5
|
export declare const HOOK_DB_WAIT_MS = 1000;
|
|
@@ -20,6 +20,10 @@ export declare function scopedBusyWait(): number | undefined;
|
|
|
20
20
|
export declare function withSqliteBlocked<T>(storeKind: string, fn: () => T): T;
|
|
21
21
|
/** Runs `fn` with hippo.db opens allowed again, for a store whose own methods are backed by hippo.db, or a copy that reads the old hippo.db. */
|
|
22
22
|
export declare function withSqliteAllowed<T>(fn: () => T): T;
|
|
23
|
+
/** Runs `fn` so that a hippo.db open on this thread throws, across awaits; a block of another store, when one is open, already refuses and stays as it is. */
|
|
24
|
+
export declare function withSqliteOffLoop<T>(fn: () => T): T;
|
|
25
|
+
/** Leaves withSqliteOffLoop's block and nothing else: another store's block and the folder marker still refuse, which withSqliteAllowed would waive. */
|
|
26
|
+
export declare function outsideSqliteOffLoop<T>(fn: () => T): T;
|
|
23
27
|
/** First line of a best-effort catch around a hippo.db open: an unported path must fail closed, not fall back silently. */
|
|
24
28
|
export declare function rethrowIfSqliteBlocked<E>(err: E): void;
|
|
25
29
|
/** store init --db, store copy --db and serve --db write this file in the hippo root; its text is the store kind. */
|
|
@@ -30,7 +34,13 @@ export declare function assertSqliteAllowed(hippoRoot: string): void;
|
|
|
30
34
|
export declare function openHippoDb(hippoRoot: string, opts?: {
|
|
31
35
|
busyWaitMs?: number;
|
|
32
36
|
}): DatabaseSyncLike;
|
|
37
|
+
/** openHippoDb, with what the open's probe read when this call made the connection. */
|
|
38
|
+
export declare function openHippoDbWithFacts(hippoRoot: string, opts?: {
|
|
39
|
+
busyWaitMs?: number;
|
|
40
|
+
}): OpenedDb;
|
|
33
41
|
/** Open an existing store without changing it: no mkdir, WAL switch, migration or mirror cleanup. Throws when hippo.db is missing. */
|
|
34
42
|
export declare function openHippoDbReadOnly(hippoRoot: string): DatabaseSyncLike;
|
|
43
|
+
/** Runs `fn` on an existing hippo.db opened without migrations, for a repair of a store whose schema is behind; closes it after. */
|
|
44
|
+
export declare function withUnmigratedDb<T>(hippoRoot: string, readOnly: boolean, fn: (db: DatabaseSyncLike) => T): T;
|
|
35
45
|
export declare function closeHippoDb(db: DatabaseSyncLike): void;
|
|
36
46
|
//# sourceMappingURL=open.d.ts.map
|
package/dist/db/open.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { errorMessage, log } from '../log.js';
|
|
4
|
+
import { errorMessage, log } from '../util/log.js';
|
|
5
5
|
import { DatabaseSync } from './sqlite.js';
|
|
6
6
|
import { tableExists } from './tables.js';
|
|
7
7
|
import { assertBinaryCompatible } from './migrate.js';
|
|
8
|
-
import {
|
|
8
|
+
import { connectWithFacts, DEFAULT_BUSY_WAIT_MS, getHippoDbPath } from './connect.js';
|
|
9
9
|
import { currentRequestStores, isScopedHandle, runWithRequestStores } from './request-stores.js';
|
|
10
|
-
import { OtherStoreFolderError, SqliteBlockedError } from '
|
|
10
|
+
import { OtherStoreFolderError, SqliteBlockedError } from '../util/sqlite-blocked.js';
|
|
11
11
|
export { getHippoDbPath };
|
|
12
12
|
/** Lock wait for hook commands: under the 5 s prompt-hook budget even after a few skipped writes, and far above a normal write's hold. */
|
|
13
13
|
export const HOOK_DB_WAIT_MS = 1000;
|
|
@@ -38,6 +38,17 @@ export function withSqliteBlocked(storeKind, fn) {
|
|
|
38
38
|
export function withSqliteAllowed(fn) {
|
|
39
39
|
return sqliteBlockedBy.exit(() => markerWaived.run(true, fn));
|
|
40
40
|
}
|
|
41
|
+
// Not a store kind: the block of a route whose SQLite work belongs on a worker thread, under the hippo.db store itself.
|
|
42
|
+
const OFF_LOOP = 'sqlite (off the event loop)';
|
|
43
|
+
const OFF_LOOP_MESSAGE = 'hippo.db was opened on the server thread by a route whose SQLite work runs on a worker thread';
|
|
44
|
+
/** Runs `fn` so that a hippo.db open on this thread throws, across awaits; a block of another store, when one is open, already refuses and stays as it is. */
|
|
45
|
+
export function withSqliteOffLoop(fn) {
|
|
46
|
+
return sqliteBlockedBy.getStore() === undefined ? sqliteBlockedBy.run(OFF_LOOP, fn) : fn();
|
|
47
|
+
}
|
|
48
|
+
/** Leaves withSqliteOffLoop's block and nothing else: another store's block and the folder marker still refuse, which withSqliteAllowed would waive. */
|
|
49
|
+
export function outsideSqliteOffLoop(fn) {
|
|
50
|
+
return sqliteBlockedBy.getStore() === OFF_LOOP ? sqliteBlockedBy.exit(fn) : fn();
|
|
51
|
+
}
|
|
41
52
|
/** First line of a best-effort catch around a hippo.db open: an unported path must fail closed, not fall back silently. */
|
|
42
53
|
export function rethrowIfSqliteBlocked(err) {
|
|
43
54
|
if (err instanceof SqliteBlockedError)
|
|
@@ -59,6 +70,8 @@ function markerKind(marker) {
|
|
|
59
70
|
/** Throws where hippo.db must not open; checked on every open, not cached, since the marker can appear while a process runs. */
|
|
60
71
|
export function assertSqliteAllowed(hippoRoot) {
|
|
61
72
|
const storeKind = sqliteBlockedBy.getStore();
|
|
73
|
+
if (storeKind === OFF_LOOP)
|
|
74
|
+
throw new SqliteBlockedError('sqlite', OFF_LOOP_MESSAGE);
|
|
62
75
|
if (storeKind !== undefined)
|
|
63
76
|
throw new SqliteBlockedError(storeKind);
|
|
64
77
|
if (markerWaived.getStore())
|
|
@@ -69,9 +82,13 @@ export function assertSqliteAllowed(hippoRoot) {
|
|
|
69
82
|
}
|
|
70
83
|
/** `busyWaitMs` shortens every lock wait of this open, for a hook that must finish inside its own timeout. */
|
|
71
84
|
export function openHippoDb(hippoRoot, opts) {
|
|
85
|
+
return openHippoDbWithFacts(hippoRoot, opts).db;
|
|
86
|
+
}
|
|
87
|
+
/** openHippoDb, with what the open's probe read when this call made the connection. */
|
|
88
|
+
export function openHippoDbWithFacts(hippoRoot, opts) {
|
|
72
89
|
assertSqliteAllowed(hippoRoot);
|
|
73
90
|
const stores = currentRequestStores();
|
|
74
|
-
return stores ? stores.
|
|
91
|
+
return stores ? stores.getWithFacts(hippoRoot, opts) : connectWithFacts(hippoRoot, opts?.busyWaitMs);
|
|
75
92
|
}
|
|
76
93
|
/** Open an existing store without changing it: no mkdir, WAL switch, migration or mirror cleanup. Throws when hippo.db is missing. */
|
|
77
94
|
export function openHippoDbReadOnly(hippoRoot) {
|
|
@@ -93,6 +110,22 @@ export function openHippoDbReadOnly(hippoRoot) {
|
|
|
93
110
|
throw error;
|
|
94
111
|
}
|
|
95
112
|
}
|
|
113
|
+
/** Runs `fn` on an existing hippo.db opened without migrations, for a repair of a store whose schema is behind; closes it after. */
|
|
114
|
+
export function withUnmigratedDb(hippoRoot, readOnly, fn) {
|
|
115
|
+
// Skips openHippoDb, so it takes the same refusal itself.
|
|
116
|
+
assertSqliteAllowed(hippoRoot);
|
|
117
|
+
const file = getHippoDbPath(hippoRoot);
|
|
118
|
+
if (!existsSync(file))
|
|
119
|
+
throw new Error(`No existing Hippo database at ${file}`);
|
|
120
|
+
const db = new DatabaseSync(file, { readOnly });
|
|
121
|
+
try {
|
|
122
|
+
db.exec(`PRAGMA busy_timeout = ${DEFAULT_BUSY_WAIT_MS}`);
|
|
123
|
+
return fn(db);
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
db.close();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
96
129
|
export function closeHippoDb(db) {
|
|
97
130
|
if (isScopedHandle(db))
|
|
98
131
|
return;
|