hippo-memory 1.69.0 → 1.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +38 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +27 -12
- package/dist/api/remember.js +42 -46
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +5 -13
- package/dist/capture/command.js +57 -60
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +8 -16
- package/dist/capture/compact.js +56 -47
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -3
- package/dist/search/boosts.js +36 -15
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +61 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +29 -0
- package/dist/store/sqlite/executor.js +287 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +23 -0
- package/dist/store/sqlite/store.js +294 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +11 -0
- package/dist/store/tenant.js +28 -0
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/dist/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
|
@@ -1,59 +1,41 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { RejectedValueError } from '
|
|
3
|
-
import { log } from '../log.js';
|
|
1
|
+
import { withWriteScope, setMeta, isSqliteBusy, pruneConsolidationRuns, getMeta } from '../db/index.js';
|
|
2
|
+
import { RejectedValueError } from './rejection.js';
|
|
3
|
+
import { log } from '../util/log.js';
|
|
4
4
|
import { audit } from './audit-event.js';
|
|
5
5
|
import { stampOriginProjectForImport, upsertEntryRow } from './entry-row.js';
|
|
6
|
-
import { buildIndexFromDb, syncMirrorFiles, writeIndexMirror, writeStatsMirror, buildStatsFromDb } from './mirrors.js';
|
|
7
|
-
import { openStore, loadLegacyEntriesFromMarkdown } from './open.js';
|
|
6
|
+
import { buildIndexFromDb, readLastRecall, syncMirrorFiles, writeIndexMirror, writeStatsMirror, buildStatsFromDb } from './mirrors.js';
|
|
7
|
+
import { onHandle, openStore, loadLegacyEntriesFromMarkdown } from './open.js';
|
|
8
|
+
import { DAY_MS } from '../util/time.js';
|
|
8
9
|
/** Load the derived index from SQLite. Read-only: index.json is only ever written by `rebuildIndex`. */
|
|
9
10
|
export function loadIndex(hippoRoot) {
|
|
10
|
-
|
|
11
|
-
try {
|
|
11
|
+
return onHandle(hippoRoot, (db) => {
|
|
12
12
|
return buildIndexFromDb(db);
|
|
13
|
-
}
|
|
14
|
-
finally {
|
|
15
|
-
closeHippoDb(db);
|
|
16
|
-
}
|
|
13
|
+
}, openStore);
|
|
17
14
|
}
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
/** The last recall's ids and its trace alone, for a caller that needs no index entry. */
|
|
16
|
+
export function loadLastRecall(hippoRoot) {
|
|
17
|
+
return onHandle(hippoRoot, (db) => {
|
|
18
|
+
return readLastRecall(db);
|
|
19
|
+
}, openStore);
|
|
20
|
+
}
|
|
21
|
+
/** Persist mutable index metadata (entry rows are derived from SQLite); `last_retrieval_ids` and `last_trace_id` commit in one transaction, as callers
|
|
22
|
+
* rely on both moving together. index.json is left to `rebuildIndex`. */
|
|
24
23
|
export function saveIndex(hippoRoot, index) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
db.exec('BEGIN IMMEDIATE');
|
|
28
|
-
try {
|
|
24
|
+
onHandle(hippoRoot, (db) => {
|
|
25
|
+
withWriteScope(db, 'save_index', () => {
|
|
29
26
|
setMeta(db, 'last_retrieval_ids', JSON.stringify(index.last_retrieval_ids ?? []));
|
|
30
27
|
setMeta(db, 'last_trace_id', index.last_trace_id ?? '');
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
catch (error) {
|
|
34
|
-
try {
|
|
35
|
-
db.exec('ROLLBACK');
|
|
36
|
-
}
|
|
37
|
-
catch { /* already rolled back; keep the original error */ }
|
|
38
|
-
throw error;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
finally {
|
|
42
|
-
closeHippoDb(db);
|
|
43
|
-
}
|
|
28
|
+
});
|
|
29
|
+
}, openStore);
|
|
44
30
|
}
|
|
45
|
-
/**
|
|
46
|
-
* Rebuild mirrors from SQLite, importing any legacy markdown files not already present.
|
|
47
|
-
*/
|
|
31
|
+
/** Rebuild mirrors from SQLite, importing any legacy markdown files not already present. */
|
|
48
32
|
export function rebuildIndex(hippoRoot) {
|
|
49
|
-
|
|
50
|
-
try {
|
|
33
|
+
return onHandle(hippoRoot, (db) => {
|
|
51
34
|
// SAFETY: rows' shape matches the single `id` column selected above.
|
|
52
35
|
const existingIds = new Set(db.prepare(`SELECT id FROM memories`).all().map((row) => row.id));
|
|
53
36
|
const legacyEntries = loadLegacyEntriesFromMarkdown(hippoRoot).filter((entry) => !existingIds.has(entry.id));
|
|
54
37
|
if (legacyEntries.length > 0) {
|
|
55
|
-
db
|
|
56
|
-
try {
|
|
38
|
+
withWriteScope(db, 'rebuild_index', () => {
|
|
57
39
|
// Guard with per-row skip, like bootstrapLegacyStore: a stale markdown mirror could resurrect a
|
|
58
40
|
// rejected value here. Refusal audit is written inline because nothing rolls back on a skip.
|
|
59
41
|
let rejectedCount = 0;
|
|
@@ -66,7 +48,12 @@ export function rebuildIndex(hippoRoot) {
|
|
|
66
48
|
catch (err) {
|
|
67
49
|
if (err instanceof RejectedValueError) {
|
|
68
50
|
rejectedCount++;
|
|
69
|
-
audit(db, 'reject_refusal',
|
|
51
|
+
audit(db, 'reject_refusal', {
|
|
52
|
+
targetId: err.entryId,
|
|
53
|
+
metadata: { digest: err.digest, reason: err.reason },
|
|
54
|
+
actor: 'cli',
|
|
55
|
+
tenantId: err.tenantId
|
|
56
|
+
});
|
|
70
57
|
continue;
|
|
71
58
|
}
|
|
72
59
|
throw err;
|
|
@@ -75,51 +62,38 @@ export function rebuildIndex(hippoRoot) {
|
|
|
75
62
|
if (rejectedCount > 0) {
|
|
76
63
|
log.warn(`rebuildIndex: skipped ${rejectedCount} rejected value(s) found in legacy mirrors`);
|
|
77
64
|
}
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
-
try {
|
|
82
|
-
db.exec('ROLLBACK');
|
|
83
|
-
}
|
|
84
|
-
catch { /* ignore if no active txn */ }
|
|
85
|
-
throw err;
|
|
86
|
-
}
|
|
65
|
+
});
|
|
87
66
|
}
|
|
88
67
|
syncMirrorFiles(hippoRoot, db);
|
|
89
68
|
const index = buildIndexFromDb(db);
|
|
90
69
|
writeIndexMirror(hippoRoot, index);
|
|
91
70
|
return index;
|
|
92
|
-
}
|
|
93
|
-
finally {
|
|
94
|
-
closeHippoDb(db);
|
|
95
|
-
}
|
|
71
|
+
}, openStore);
|
|
96
72
|
}
|
|
97
73
|
export function updateStats(hippoRoot, delta) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
]
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
closeHippoDb(db);
|
|
122
|
-
}
|
|
74
|
+
onHandle(hippoRoot, (db) => {
|
|
75
|
+
updateStatsOn(db, hippoRoot, delta);
|
|
76
|
+
}, openStore);
|
|
77
|
+
}
|
|
78
|
+
/** updateStats on the caller's open store, so a loop of writes opens the store once. */
|
|
79
|
+
export function updateStatsOn(db, hippoRoot, delta) {
|
|
80
|
+
// One atomic statement per named counter: a read-modify-write loses concurrent increments and stamps stale values over the untouched two.
|
|
81
|
+
const increments = [
|
|
82
|
+
['total_remembered', delta.remembered ?? 0],
|
|
83
|
+
['total_recalled', delta.recalled ?? 0],
|
|
84
|
+
['total_forgotten', delta.forgotten ?? 0],
|
|
85
|
+
];
|
|
86
|
+
for (const [key, amount] of increments) {
|
|
87
|
+
if (amount === 0)
|
|
88
|
+
continue;
|
|
89
|
+
// Both binds are the same string: node:sqlite binds a JS number as REAL,
|
|
90
|
+
// which would store "1.0" into this TEXT column instead of "1".
|
|
91
|
+
db.prepare(`
|
|
92
|
+
INSERT INTO meta(key, value) VALUES(?, ?)
|
|
93
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(meta.value AS INTEGER) + CAST(? AS INTEGER)
|
|
94
|
+
`).run(key, String(amount), String(amount));
|
|
95
|
+
}
|
|
96
|
+
writeStatsMirror(hippoRoot, buildStatsFromDb(db));
|
|
123
97
|
}
|
|
124
98
|
export function updateStatsUnlessBusy(hippoRoot, delta, committed) {
|
|
125
99
|
try {
|
|
@@ -132,45 +106,35 @@ export function updateStatsUnlessBusy(hippoRoot, delta, committed) {
|
|
|
132
106
|
}
|
|
133
107
|
}
|
|
134
108
|
export function loadStats(hippoRoot) {
|
|
135
|
-
|
|
136
|
-
try {
|
|
109
|
+
return onHandle(hippoRoot, (db) => {
|
|
137
110
|
return buildStatsFromDb(db);
|
|
138
|
-
}
|
|
139
|
-
finally {
|
|
140
|
-
closeHippoDb(db);
|
|
141
|
-
}
|
|
111
|
+
}, openStore);
|
|
142
112
|
}
|
|
143
113
|
export function appendConsolidationRun(hippoRoot, run) {
|
|
144
|
-
|
|
145
|
-
try {
|
|
114
|
+
onHandle(hippoRoot, (db) => {
|
|
146
115
|
db.prepare(`INSERT INTO consolidation_runs(timestamp, decayed, merged, removed) VALUES (?, ?, ?, ?)`).run(run.timestamp, run.decayed, run.merged, run.removed);
|
|
147
116
|
pruneConsolidationRuns(db, 50);
|
|
148
117
|
writeStatsMirror(hippoRoot, buildStatsFromDb(db));
|
|
149
|
-
}
|
|
150
|
-
finally {
|
|
151
|
-
closeHippoDb(db);
|
|
152
|
-
}
|
|
118
|
+
}, openStore);
|
|
153
119
|
}
|
|
154
120
|
/** Rows a tenant created since the last sleep (runs are host-wide), looking back at most 24 hours. */
|
|
155
121
|
export function countCreatedSinceLastSleep(hippoRoot, tenantId, now = new Date()) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const dayAgo = new Date(now.getTime() - 86_400_000).toISOString();
|
|
122
|
+
return onHandle(hippoRoot, (db) => {
|
|
123
|
+
const dayAgo = new Date(now.getTime() - DAY_MS).toISOString();
|
|
159
124
|
const row = db.prepare(`SELECT COUNT(*) AS n FROM memories WHERE tenant_id = ?
|
|
160
125
|
AND created > MAX(?, COALESCE((SELECT MAX(timestamp) FROM consolidation_runs), ''))`).get(tenantId, dayAgo);
|
|
161
126
|
return row.n;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
127
|
+
}, openStore);
|
|
128
|
+
}
|
|
129
|
+
/** Timestamp of the latest consolidation run, or undefined when there is none. */
|
|
130
|
+
export function lastConsolidationAt(db) {
|
|
131
|
+
// SAFETY: row's shape matches the single `timestamp` column named in the SELECT.
|
|
132
|
+
const row = db.prepare(`SELECT timestamp FROM consolidation_runs ORDER BY timestamp DESC, id DESC LIMIT 1`).get();
|
|
133
|
+
return row?.timestamp;
|
|
166
134
|
}
|
|
167
|
-
/**
|
|
168
|
-
* Load the session decay context from the store.
|
|
169
|
-
* Uses consolidation_runs timestamps to compute session intervals.
|
|
170
|
-
*/
|
|
135
|
+
/** Load the session decay context; session intervals come from consolidation_runs timestamps. */
|
|
171
136
|
export function loadSessionDecayContext(hippoRoot) {
|
|
172
|
-
|
|
173
|
-
try {
|
|
137
|
+
return onHandle(hippoRoot, (db) => {
|
|
174
138
|
// Get recent consolidation timestamps (last 20)
|
|
175
139
|
// SAFETY: rows' shape matches the single `timestamp` column above.
|
|
176
140
|
const rows = db.prepare(`SELECT timestamp FROM consolidation_runs ORDER BY timestamp DESC, id DESC LIMIT 20`).all();
|
|
@@ -185,24 +149,15 @@ export function loadSessionDecayContext(hippoRoot) {
|
|
|
185
149
|
totalInterval += timestamps[i] - timestamps[i - 1];
|
|
186
150
|
}
|
|
187
151
|
const avgMs = totalInterval / (timestamps.length - 1);
|
|
188
|
-
const avgDays = avgMs /
|
|
152
|
+
const avgDays = avgMs / DAY_MS;
|
|
189
153
|
return { sleepCount, avgSessionIntervalDays: Math.max(0, avgDays) };
|
|
190
|
-
}
|
|
191
|
-
finally {
|
|
192
|
-
closeHippoDb(db);
|
|
193
|
-
}
|
|
154
|
+
}, openStore);
|
|
194
155
|
}
|
|
195
|
-
/**
|
|
196
|
-
* Increment the sleep counter. Called after each consolidation run.
|
|
197
|
-
*/
|
|
156
|
+
/** Increment the sleep counter after each consolidation run. */
|
|
198
157
|
export function incrementSleepCount(hippoRoot) {
|
|
199
|
-
|
|
200
|
-
try {
|
|
158
|
+
onHandle(hippoRoot, (db) => {
|
|
201
159
|
const current = Number(getMeta(db, 'sleep_count', '0')) || 0;
|
|
202
160
|
setMeta(db, 'sleep_count', String(current + 1));
|
|
203
|
-
}
|
|
204
|
-
finally {
|
|
205
|
-
closeHippoDb(db);
|
|
206
|
-
}
|
|
161
|
+
}, openStore);
|
|
207
162
|
}
|
|
208
163
|
//# sourceMappingURL=index-and-stats.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { AmbientCandidateRequest, ContextReads, EntryRemoval, EntryTarget, EntryWrite, EntryWrites, HippoStore, KeyAudit, KeyListQuery, KeyMint, KeyRevoke, KeyWrites, OutcomeWrite, RawArchive, RecallSearchArgs, RecallWrites, SelfKeyMint, StoreGroup, StoreGroups, SupersedeWrite, VectorBackfillQuery, VectorReads, VectorRowWrite, VectorWrite, VectorWriteResult, VectorWrites, } from './port.js';
|
|
2
|
+
export { hasGroup, requireGroup } from './port.js';
|
|
3
|
+
export * from './sqlite/store.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type DatabaseSyncLike } from '../db.js';
|
|
2
|
-
import type { KeyRevoke } from '
|
|
1
|
+
import { type DatabaseSyncLike } from '../db/index.js';
|
|
2
|
+
import type { KeyRevoke } from './port.js';
|
|
3
3
|
/** The revoke and its audit row commit together, so a failed audit write leaves the key live and the caller sees the error. */
|
|
4
4
|
export declare function revokeKeyAt(db: DatabaseSyncLike, revoke: KeyRevoke): string;
|
|
5
5
|
export declare function auditHighIdAt(db: DatabaseSyncLike): number;
|
package/dist/store/key-audit.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// hippo.db's half of the KeyAudit store group.
|
|
2
|
-
import { NotFoundError } from '../api-errors.js';
|
|
3
|
-
import { appendAuditEvent } from '
|
|
4
|
-
import { revokeApiKey } from '
|
|
5
|
-
import { withWriteScope } from '../db.js';
|
|
2
|
+
import { NotFoundError } from '../core/api-errors.js';
|
|
3
|
+
import { appendAuditEvent } from './audit.js';
|
|
4
|
+
import { revokeApiKey } from './auth.js';
|
|
5
|
+
import { withWriteScope } from '../db/index.js';
|
|
6
6
|
import { selectApiKeyOwner } from './tenant-lookup.js';
|
|
7
7
|
/** The revoke and its audit row commit together, so a failed audit write leaves the key live and the caller sees the error. */
|
|
8
8
|
export function revokeKeyAt(db, revoke) {
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import {
|
|
3
|
-
import type { KeyMint, SelfKeyMint } from '../store-port.js';
|
|
4
|
-
/** The auth_create row a mint writes; the plaintext never reaches it. */
|
|
5
|
-
export declare function createAuditOf({ key, actor, metadata }: KeyMint): AppendAuditOpts;
|
|
1
|
+
import { type DatabaseSyncLike } from '../db/index.js';
|
|
2
|
+
import type { KeyMint, SelfKeyMint } from './port.js';
|
|
6
3
|
export declare function createKeyAt(db: DatabaseSyncLike, mint: KeyMint): void;
|
|
7
4
|
/** IMMEDIATE takes the write lock before the count, so two mints for one owner cannot both see room under the cap. */
|
|
8
5
|
export declare function createSelfKeyAt(db: DatabaseSyncLike, mint: SelfKeyMint): string[];
|
|
6
|
+
/** One grant or ungrant of a restricted scope on a key of `tenantId`, and the actor of its audit row. */
|
|
7
|
+
export interface ScopeGrantChange {
|
|
8
|
+
readonly tenantId: string;
|
|
9
|
+
readonly keyId: string;
|
|
10
|
+
readonly scope: string;
|
|
11
|
+
readonly op: 'auth_grant' | 'auth_ungrant';
|
|
12
|
+
readonly actor: string;
|
|
13
|
+
}
|
|
14
|
+
/** The key is checked under the write lock, and the change and its audit row commit together, so a failed audit write leaves the grants as they were. */
|
|
15
|
+
export declare function changeScopeGrantAt(db: DatabaseSyncLike, { tenantId, keyId, scope, op, actor }: ScopeGrantChange): void;
|
|
9
16
|
//# sourceMappingURL=key-writes.d.ts.map
|
package/dist/store/key-writes.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
// hippo.db's half of the KeyWrites store group.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { BadRequestError, ConflictError, NotFoundError } from '../core/api-errors.js';
|
|
3
|
+
import { appendAuditEvent } from './audit.js';
|
|
4
|
+
import { grantScope, insertApiKey, listLiveOwnedKeyIds, revokeApiKey, ungrantScope } from './auth.js';
|
|
5
|
+
import { withWriteScope } from '../db/index.js';
|
|
6
|
+
import { isRestrictedScope } from './recall-scope.js';
|
|
7
|
+
import { selectApiKeyOwner } from './tenant-lookup.js';
|
|
5
8
|
/** The auth_create row a mint writes; the plaintext never reaches it. */
|
|
6
|
-
|
|
9
|
+
function createAuditOf({ key, actor, metadata }) {
|
|
7
10
|
return { tenantId: key.tenantId, actor, op: 'auth_create', targetId: key.keyId, metadata };
|
|
8
11
|
}
|
|
9
12
|
export function createKeyAt(db, mint) {
|
|
@@ -27,4 +30,27 @@ export function createSelfKeyAt(db, mint) {
|
|
|
27
30
|
return replaced;
|
|
28
31
|
});
|
|
29
32
|
}
|
|
33
|
+
/** The key is checked under the write lock, and the change and its audit row commit together, so a failed audit write leaves the grants as they were. */
|
|
34
|
+
export function changeScopeGrantAt(db, { tenantId, keyId, scope, op, actor }) {
|
|
35
|
+
withWriteScope(db, 'change_scope_grant', () => {
|
|
36
|
+
const row = selectApiKeyOwner(db, keyId);
|
|
37
|
+
if (!row || row.tenantId !== tenantId) {
|
|
38
|
+
throw new NotFoundError(`Unknown key_id: ${keyId}`);
|
|
39
|
+
}
|
|
40
|
+
if (op === 'auth_grant' && row.revokedAt) {
|
|
41
|
+
throw new ConflictError(`${keyId} is revoked; a grant on it would never apply`);
|
|
42
|
+
}
|
|
43
|
+
if (op === 'auth_grant' && /^personal:/i.test(scope)) {
|
|
44
|
+
throw new BadRequestError(`${scope} is a personal scope: only its owner reads it, and no grant can change that`);
|
|
45
|
+
}
|
|
46
|
+
if (!isRestrictedScope(scope)) {
|
|
47
|
+
throw new BadRequestError(`${scope} is not a restricted scope; it is already readable by default`);
|
|
48
|
+
}
|
|
49
|
+
if (op === 'auth_grant')
|
|
50
|
+
grantScope(db, keyId, scope);
|
|
51
|
+
else
|
|
52
|
+
ungrantScope(db, keyId, scope);
|
|
53
|
+
appendAuditEvent(db, { tenantId, actor, op, targetId: keyId, metadata: { scope } });
|
|
54
|
+
});
|
|
55
|
+
}
|
|
30
56
|
//# sourceMappingURL=key-writes.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DeliveryEventInput } from './delivery-recorder.js';
|
|
2
|
+
import { type LastSent, type TokenSurface, type TokenUse } from './token-ledger.js';
|
|
3
|
+
/** Stores one delivery event and returns its id, or null when the write failed. */
|
|
4
|
+
export type DeliveryWrite = (input: DeliveryEventInput) => number | null;
|
|
5
|
+
/** The token rows of one turn and the delivery event that follows them. */
|
|
6
|
+
export interface LedgerTurn {
|
|
7
|
+
readonly uses: readonly TokenUse[];
|
|
8
|
+
/** Makes each row its own attempt: a failed one is reported here and the rest still run. Without it the first failure throws. */
|
|
9
|
+
readonly onRowError?: <E>(error: E) => void;
|
|
10
|
+
/** Runs after the rows with a writer on their connection, so the delivery event costs no second open. */
|
|
11
|
+
readonly delivery?: (write: DeliveryWrite) => void;
|
|
12
|
+
}
|
|
13
|
+
/** Books a turn's token rows, then its delivery event, on one connection. */
|
|
14
|
+
export declare function recordLedgerTurn(hippoRoot: string, turn: LedgerTurn): void;
|
|
15
|
+
/** What the session last sent on `surface`, or null, as lastSentState reads it. */
|
|
16
|
+
export declare function lastSentOnSurface(hippoRoot: string, tenantId: string, sessionId: string | null | undefined, surface: TokenSurface): LastSent | null;
|
|
17
|
+
//# sourceMappingURL=ledger-turn.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { lastSentState, recordTokenUse } from './token-ledger.js';
|
|
2
|
+
import { onHandle } from './open.js';
|
|
3
|
+
import { writeDeliveryEventOnHandle } from './recall-trace.js';
|
|
4
|
+
/** Books a turn's token rows, then its delivery event, on one connection. */
|
|
5
|
+
export function recordLedgerTurn(hippoRoot, turn) {
|
|
6
|
+
const { onRowError } = turn;
|
|
7
|
+
onHandle(hippoRoot, (db) => {
|
|
8
|
+
for (const use of turn.uses) {
|
|
9
|
+
if (onRowError === undefined) {
|
|
10
|
+
recordTokenUse(db, use);
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
recordTokenUse(db, use);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
onRowError(error);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
turn.delivery?.((input) => writeDeliveryEventOnHandle(db, input));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/** What the session last sent on `surface`, or null, as lastSentState reads it. */
|
|
24
|
+
export function lastSentOnSurface(hippoRoot, tenantId, sessionId, surface) {
|
|
25
|
+
return onHandle(hippoRoot, (db) => lastSentState(db, tenantId, sessionId, surface));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ledger-turn.js.map
|
package/dist/store/markdown.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { type MemoryEntry } from '../memory.js';
|
|
2
|
-
/**
|
|
3
|
-
* Serialize a MemoryEntry to markdown with YAML frontmatter.
|
|
4
|
-
*/
|
|
1
|
+
import { type MemoryEntry } from '../core/memory.js';
|
|
2
|
+
/** Serialize a MemoryEntry to markdown with YAML frontmatter. */
|
|
5
3
|
export declare function serializeEntry(entry: MemoryEntry): string;
|
|
6
|
-
/**
|
|
7
|
-
* Deserialize a markdown file to a MemoryEntry.
|
|
8
|
-
*/
|
|
4
|
+
/** Deserialize a markdown file to a MemoryEntry. */
|
|
9
5
|
export declare function deserializeEntry(raw: string): MemoryEntry | null;
|
|
10
6
|
//# sourceMappingURL=markdown.d.ts.map
|
package/dist/store/markdown.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { DEFAULT_TENANT_ID } from '../util/env.js';
|
|
2
|
+
import { FALLBACK_HALF_LIFE_DAYS, DEFAULT_SCHEMA_FIT } from '../core/memory.js';
|
|
3
|
+
import { dumpFrontmatter, parseFrontmatter } from './yaml.js';
|
|
4
|
+
/** The fields every mirror file carries; serializeEntry adds the optional ones. */
|
|
5
|
+
function entryFrontmatter(entry) {
|
|
6
|
+
return {
|
|
7
7
|
id: entry.id,
|
|
8
8
|
created: entry.created,
|
|
9
9
|
last_retrieved: entry.last_retrieved,
|
|
@@ -29,11 +29,21 @@ export function serializeEntry(entry) {
|
|
|
29
29
|
scope: entry.scope ?? null,
|
|
30
30
|
owner: entry.owner ?? null,
|
|
31
31
|
artifact_ref: entry.artifact_ref ?? null,
|
|
32
|
+
// A rebuild from these files must keep supersession and the DAG; deserializeEntry reads all five.
|
|
33
|
+
valid_from: entry.valid_from,
|
|
34
|
+
superseded_by: entry.superseded_by,
|
|
35
|
+
extracted_from: entry.extracted_from,
|
|
36
|
+
dag_level: entry.dag_level,
|
|
37
|
+
dag_parent_id: entry.dag_parent_id,
|
|
32
38
|
};
|
|
39
|
+
}
|
|
40
|
+
/** Serialize a MemoryEntry to markdown with YAML frontmatter. */
|
|
41
|
+
export function serializeEntry(entry) {
|
|
42
|
+
const frontmatter = entryFrontmatter(entry);
|
|
33
43
|
// Emit tenant_id only when not 'default' to keep diffs clean for the dominant
|
|
34
44
|
// single-tenant case (mirrors the plan's task 7 guidance).
|
|
35
|
-
const tenantId = entry.tenantId ??
|
|
36
|
-
if (tenantId !==
|
|
45
|
+
const tenantId = entry.tenantId ?? DEFAULT_TENANT_ID;
|
|
46
|
+
if (tenantId !== DEFAULT_TENANT_ID) {
|
|
37
47
|
frontmatter['tenant_id'] = tenantId;
|
|
38
48
|
}
|
|
39
49
|
// v39: '' (user-global) and null (unknown, hidden by default) must both round-trip;
|
|
@@ -41,36 +51,28 @@ export function serializeEntry(entry) {
|
|
|
41
51
|
if (entry.origin_project !== undefined) {
|
|
42
52
|
frontmatter['origin_project'] = entry.origin_project;
|
|
43
53
|
}
|
|
44
|
-
// Spread into a fresh
|
|
45
|
-
// YamlValue> parameter needs an index signature, which a named interface
|
|
46
|
-
// reference (EntryFrontmatterFields) doesn't structurally provide even
|
|
47
|
-
// though every property's value type already matches.
|
|
54
|
+
// Spread into a fresh literal: dumpFrontmatter's Record<string, YamlValue> needs an index signature, which the named interface does not structurally provide.
|
|
48
55
|
const fm = dumpFrontmatter({ ...frontmatter });
|
|
49
56
|
return `${fm}\n\n${entry.content}\n`;
|
|
50
57
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Deserialize a markdown file to a MemoryEntry.
|
|
53
|
-
*/
|
|
58
|
+
/** Deserialize a markdown file to a MemoryEntry. */
|
|
54
59
|
export function deserializeEntry(raw) {
|
|
55
60
|
const { data, content } = parseFrontmatter(raw);
|
|
56
61
|
if (!data['id'] || !data['layer'])
|
|
57
62
|
return null;
|
|
58
|
-
// SAFETY:
|
|
59
|
-
//
|
|
60
|
-
// serializeEntry (whose own fields are typed), so out-of-range values here
|
|
61
|
-
// would indicate hand-edited files, which this parser is not required to
|
|
62
|
-
// reject — matches the pre-existing permissive-parse behavior.
|
|
63
|
+
// SAFETY: each `as X` narrows a raw YAML field to a MemoryEntry union member; frontmatter is only written by serializeEntry,
|
|
64
|
+
// so out-of-range values mean hand-edited files, which this parser may accept (permissive parse).
|
|
63
65
|
return {
|
|
64
66
|
id: String(data['id']),
|
|
65
67
|
created: String(data['created'] ?? new Date().toISOString()),
|
|
66
68
|
last_retrieved: String(data['last_retrieved'] ?? new Date().toISOString()),
|
|
67
69
|
retrieval_count: Number(data['retrieval_count'] ?? 0),
|
|
68
70
|
strength: Number(data['strength'] ?? 1.0),
|
|
69
|
-
half_life_days: Number(data['half_life_days'] ??
|
|
71
|
+
half_life_days: Number(data['half_life_days'] ?? FALLBACK_HALF_LIFE_DAYS),
|
|
70
72
|
layer: data['layer'],
|
|
71
73
|
tags: normalizeStringArray(data['tags']),
|
|
72
74
|
emotional_valence: data['emotional_valence'] ?? 'neutral',
|
|
73
|
-
schema_fit: Number(data['schema_fit'] ??
|
|
75
|
+
schema_fit: Number(data['schema_fit'] ?? DEFAULT_SCHEMA_FIT),
|
|
74
76
|
source: String(data['source'] ?? 'cli'),
|
|
75
77
|
outcome_score: data['outcome_score'] === null || data['outcome_score'] === undefined ? null : Number(data['outcome_score']),
|
|
76
78
|
outcome_positive: Number(data['outcome_positive'] ?? 0),
|
|
@@ -96,7 +98,7 @@ export function deserializeEntry(raw) {
|
|
|
96
98
|
scope: data['scope'] === null || data['scope'] === undefined ? null : String(data['scope']),
|
|
97
99
|
owner: data['owner'] === null || data['owner'] === undefined ? null : String(data['owner']),
|
|
98
100
|
artifact_ref: data['artifact_ref'] === null || data['artifact_ref'] === undefined ? null : String(data['artifact_ref']),
|
|
99
|
-
tenantId: data['tenant_id'] === null || data['tenant_id'] === undefined ?
|
|
101
|
+
tenantId: data['tenant_id'] === null || data['tenant_id'] === undefined ? DEFAULT_TENANT_ID : String(data['tenant_id']),
|
|
100
102
|
origin_project: !('origin_project' in data) ? undefined : data['origin_project'] === null ? null : String(data['origin_project']),
|
|
101
103
|
};
|
|
102
104
|
}
|
package/dist/store/mirrors.d.ts
CHANGED
|
@@ -1,28 +1,22 @@
|
|
|
1
|
-
import { Layer, type MemoryEntry } from '../memory.js';
|
|
2
|
-
import { openHippoDb } from '../db.js';
|
|
1
|
+
import { Layer, type MemoryEntry } from '../core/memory.js';
|
|
2
|
+
import { openHippoDb } from '../db/index.js';
|
|
3
3
|
import { type TaskSnapshot, type SessionEvent, type HippoIndex, type LegacyStats } from './rows.js';
|
|
4
4
|
export declare function layerDir(root: string, layer: Layer): string;
|
|
5
|
+
/** Makes the mirror folders on a store's first open in this process; a writer makes its own folder if one goes missing later. */
|
|
5
6
|
export declare function ensureMirrorDirectories(hippoRoot: string): void;
|
|
6
7
|
export declare function writeActiveTaskMirror(hippoRoot: string, tenantId: string, snapshot: TaskSnapshot): void;
|
|
7
8
|
export declare function removeActiveTaskMirror(hippoRoot: string, tenantId: string): void;
|
|
8
9
|
export declare function writeRecentSessionMirror(hippoRoot: string, tenantId: string, events: SessionEvent[]): void;
|
|
9
10
|
export declare function writeMarkdownMirror(hippoRoot: string, entry: MemoryEntry): void;
|
|
10
11
|
export declare function removeEntryMirrors(hippoRoot: string, id: string): void;
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* with no reaper to retry it can name the stuck file.
|
|
14
|
-
*/
|
|
15
|
-
export declare function getExistingEntryMirrorPaths(hippoRoot: string, id: string): string[];
|
|
16
|
-
/**
|
|
17
|
-
* Best-effort mirror purge. Retries the unlink once (most failures are transient locks); the reaper only
|
|
18
|
-
* scans `raw_archive`, so a non-raw id's second failure logs the leftover path(s) to delete by hand.
|
|
19
|
-
*
|
|
20
|
-
* Returns true if the mirror ended up purged (first or second attempt).
|
|
21
|
-
*/
|
|
12
|
+
/** Best-effort mirror purge: retries the unlink once (most failures are transient locks); the reaper only scans `raw_archive`,
|
|
13
|
+
* so a non-raw id's second failure logs the leftover path(s) to delete by hand. Returns true if the mirror ended up purged. */
|
|
22
14
|
export declare function purgeMirrorBestEffort(hippoRoot: string, id: string, isRaw: boolean, logPrefix: string): boolean;
|
|
23
15
|
/** Derive the current `HippoIndex` from SQLite. Exported for `rebuildIndex`
|
|
24
16
|
* (the only index.json writer) and the longmemeval benchmark. */
|
|
25
17
|
export declare function buildIndexFromDb(db: ReturnType<typeof openHippoDb>): HippoIndex;
|
|
18
|
+
/** The last recall's ids and its trace, the two meta keys saveIndex writes together. */
|
|
19
|
+
export declare function readLastRecall(db: ReturnType<typeof openHippoDb>): Pick<HippoIndex, 'last_retrieval_ids' | 'last_trace_id'>;
|
|
26
20
|
export declare function buildStatsFromDb(db: ReturnType<typeof openHippoDb>): LegacyStats;
|
|
27
21
|
/** Write the `index.json` mirror file for an already-derived index. Exported for
|
|
28
22
|
* `rebuildIndex` (the only index.json writer) and the longmemeval benchmark. */
|