hippo-memory 1.69.0 → 1.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +38 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +27 -12
- package/dist/api/remember.js +42 -46
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +5 -13
- package/dist/capture/command.js +57 -60
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +8 -16
- package/dist/capture/compact.js +56 -47
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -3
- package/dist/search/boosts.js +36 -15
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +61 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +29 -0
- package/dist/store/sqlite/executor.js +287 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +23 -0
- package/dist/store/sqlite/store.js +294 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +11 -0
- package/dist/store/tenant.js +28 -0
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/dist/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type DatabaseSyncLike } from '../db/index.js';
|
|
2
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
3
|
+
import type { PhysicsParticle } from '../core/physics.js';
|
|
4
|
+
import type { VectorBackfillQuery, VectorWrite, VectorWriteResult } from './port.js';
|
|
5
|
+
/** What a store's vector index was built by: the stored identity, and whether any vector exists. */
|
|
6
|
+
export interface EmbeddingIndexState {
|
|
7
|
+
readonly storedModel: string | null;
|
|
8
|
+
readonly hasVectors: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** The model the index was built by: the stored identity, else the default model when vectors exist. */
|
|
11
|
+
export declare function indexedModel(state: EmbeddingIndexState): string | null;
|
|
12
|
+
/** Whether a vector write under the index identity `model` first drops the stored index, which another model built. */
|
|
13
|
+
export declare function replacesIndex(state: EmbeddingIndexState, model: string): boolean;
|
|
14
|
+
/** hippo.db's index state, the meta row and the EXISTS on one handle. */
|
|
15
|
+
export declare function storedIndexState(hippoRoot: string): EmbeddingIndexState;
|
|
16
|
+
/** Records `identity` as what built the index under `hippoRoot`. */
|
|
17
|
+
export declare function saveIndexIdentity(hippoRoot: string, identity: string): void;
|
|
18
|
+
/** Every stored vector keyed by memory id; `{}` when none. Search reads only the rows it ranks via `loadStoredVectors`. */
|
|
19
|
+
export declare function loadEmbeddingIndex(hippoRoot: string): Record<string, number[]>;
|
|
20
|
+
export interface StoredVectorSummary {
|
|
21
|
+
readonly ids: Set<string>;
|
|
22
|
+
readonly dims: number | undefined;
|
|
23
|
+
}
|
|
24
|
+
/** Every stored vector id and the float count of the first row, with no vector decoded. */
|
|
25
|
+
export declare function storedVectorSummary(hippoRoot: string): StoredVectorSummary;
|
|
26
|
+
/** Stored vectors for `ids` only. */
|
|
27
|
+
export declare function loadStoredVectors(hippoRoot: string, ids: readonly string[]): Map<string, number[]>;
|
|
28
|
+
/** `loadStoredVectors` as Float32 views, for a caller that only scores them. */
|
|
29
|
+
export declare function loadStoredVectorViews(hippoRoot: string, ids: readonly string[]): Map<string, Float32Array>;
|
|
30
|
+
/** Replace every stored vector with `index`; `model` defaults to the stored index identity. */
|
|
31
|
+
export declare function saveEmbeddingIndex(hippoRoot: string, index: Record<string, number[]>, model?: string): void;
|
|
32
|
+
/** Inserts or replaces `rows` under `model`, each row its own commit so a failure keeps the rows before it; returns how many it wrote. */
|
|
33
|
+
export declare function saveStoredVectors(hippoRoot: string, rows: Iterable<readonly [string, readonly number[]]>, model: string): number;
|
|
34
|
+
/** Drops the vectors of deleted memories under `hippoRoot`, then returns the ids that still have one. */
|
|
35
|
+
export declare function pruneStoredVectors(hippoRoot: string): Set<string>;
|
|
36
|
+
export declare function entriesWithoutVectorAt(db: DatabaseSyncLike, query: VectorBackfillQuery): MemoryEntry[];
|
|
37
|
+
export declare function writeVectorsAt(db: DatabaseSyncLike, write: VectorWrite): VectorWriteResult;
|
|
38
|
+
/** Every particle stored under `hippoRoot`. */
|
|
39
|
+
export declare function loadStoredParticles(hippoRoot: string): PhysicsParticle[];
|
|
40
|
+
/** Writes `particles` over their stored state under `hippoRoot`, as one batch. */
|
|
41
|
+
export declare function saveStoredParticles(hippoRoot: string, particles: PhysicsParticle[]): void;
|
|
42
|
+
/** Replaces every particle under `hippoRoot` with a fresh one per memory in `ids` that has an embedding; returns how many. Rows are read a page at a time. */
|
|
43
|
+
export declare function resetStoredParticles(hippoRoot: string, ids: readonly string[], embeddingIndex: Record<string, number[]>): number;
|
|
44
|
+
/** Stores a first particle for `entry`, placed at `vector`; a memory that has one keeps it. */
|
|
45
|
+
export declare function seedStoredParticle(hippoRoot: string, entry: MemoryEntry, vector: number[]): void;
|
|
46
|
+
//# sourceMappingURL=vector-index.d.ts.map
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
// Owns hippo.db's stored vectors, the identity of the model that built them, and the particle rows: every read and write of the three.
|
|
2
|
+
import { getMeta, setMeta, withWriteScope } from '../db/index.js';
|
|
3
|
+
import { onHandle } from './open.js';
|
|
4
|
+
import { DEFAULT_EMBEDDING_MODEL } from './embeddings/local.js';
|
|
5
|
+
import { float32ToBuffer, initializeParticle, loadPhysicsState, resetAllPhysicsState, savePhysicsState } from '../db/physics-state.js';
|
|
6
|
+
import { EMBEDDING_MODEL_META_KEY, deleteOrphanVectors, hasStoredVectors, loadVectors, loadVectorViews, replaceAllVectors, storedVectorDims, storedVectorIds, upsertVectors, } from '../db/vector-store.js';
|
|
7
|
+
import { chunked, selectEntriesByIds } from './entry-reads.js';
|
|
8
|
+
import { MEMORY_SELECT_COLUMNS, rowToEntry } from './rows.js';
|
|
9
|
+
const MAX_BACKFILL_PAGE = 500;
|
|
10
|
+
/** The model the index was built by: the stored identity, else the default model when vectors exist. */
|
|
11
|
+
export function indexedModel(state) {
|
|
12
|
+
return state.storedModel ?? (state.hasVectors ? DEFAULT_EMBEDDING_MODEL : null);
|
|
13
|
+
}
|
|
14
|
+
/** Whether a vector write under the index identity `model` first drops the stored index, which another model built. */
|
|
15
|
+
export function replacesIndex(state, model) {
|
|
16
|
+
const indexed = indexedModel(state);
|
|
17
|
+
return indexed !== null && indexed !== model;
|
|
18
|
+
}
|
|
19
|
+
function embeddingIndexStateOn(db) {
|
|
20
|
+
return {
|
|
21
|
+
storedModel: getMeta(db, EMBEDDING_MODEL_META_KEY, '').trim() || null,
|
|
22
|
+
hasVectors: hasStoredVectors(db),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** hippo.db's index state, the meta row and the EXISTS on one handle. */
|
|
26
|
+
export function storedIndexState(hippoRoot) {
|
|
27
|
+
return onHandle(hippoRoot, (db) => {
|
|
28
|
+
return embeddingIndexStateOn(db);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/** Records `identity` as what built the index under `hippoRoot`. */
|
|
32
|
+
export function saveIndexIdentity(hippoRoot, identity) {
|
|
33
|
+
onHandle(hippoRoot, (db) => {
|
|
34
|
+
setMeta(db, EMBEDDING_MODEL_META_KEY, identity);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/** Every stored vector keyed by memory id; `{}` when none. Search reads only the rows it ranks via `loadStoredVectors`. */
|
|
38
|
+
export function loadEmbeddingIndex(hippoRoot) {
|
|
39
|
+
return onHandle(hippoRoot, (db) => {
|
|
40
|
+
return Object.fromEntries(loadVectors(db));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/** Every stored vector id and the float count of the first row, with no vector decoded. */
|
|
44
|
+
export function storedVectorSummary(hippoRoot) {
|
|
45
|
+
return onHandle(hippoRoot, (db) => {
|
|
46
|
+
return { ids: storedVectorIds(db), dims: storedVectorDims(db) };
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/** Stored vectors for `ids` only. */
|
|
50
|
+
export function loadStoredVectors(hippoRoot, ids) {
|
|
51
|
+
if (ids.length === 0)
|
|
52
|
+
return new Map();
|
|
53
|
+
return onHandle(hippoRoot, (db) => {
|
|
54
|
+
return loadVectors(db, ids);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/** `loadStoredVectors` as Float32 views, for a caller that only scores them. */
|
|
58
|
+
export function loadStoredVectorViews(hippoRoot, ids) {
|
|
59
|
+
if (ids.length === 0)
|
|
60
|
+
return new Map();
|
|
61
|
+
return onHandle(hippoRoot, (db) => {
|
|
62
|
+
return loadVectorViews(db, ids);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/** Replace every stored vector with `index`; `model` defaults to the stored index identity. */
|
|
66
|
+
export function saveEmbeddingIndex(hippoRoot, index, model) {
|
|
67
|
+
onHandle(hippoRoot, (db) => {
|
|
68
|
+
replaceAllVectors(db, index, model ?? getMeta(db, EMBEDDING_MODEL_META_KEY, ''));
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/** Inserts or replaces `rows` under `model`, each row its own commit so a failure keeps the rows before it; returns how many it wrote. */
|
|
72
|
+
export function saveStoredVectors(hippoRoot, rows, model) {
|
|
73
|
+
return onHandle(hippoRoot, (db) => {
|
|
74
|
+
return upsertVectors(db, rows, model);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/** Drops the vectors of deleted memories under `hippoRoot`, then returns the ids that still have one. */
|
|
78
|
+
export function pruneStoredVectors(hippoRoot) {
|
|
79
|
+
return onHandle(hippoRoot, (db) => {
|
|
80
|
+
deleteOrphanVectors(db);
|
|
81
|
+
return storedVectorIds(db);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
export function entriesWithoutVectorAt(db, query) {
|
|
85
|
+
if (!Number.isInteger(query.limit))
|
|
86
|
+
throw new RangeError('limit must be an integer');
|
|
87
|
+
const limit = Math.max(1, Math.min(query.limit, MAX_BACKFILL_PAGE));
|
|
88
|
+
const tenantClause = query.tenantId === undefined ? '' : ' AND tenant_id = ?';
|
|
89
|
+
const tenantArgs = query.tenantId === undefined ? [] : [query.tenantId];
|
|
90
|
+
// SAFETY: selects exactly MEMORY_SELECT_COLUMNS, matching MemoryRow's field set.
|
|
91
|
+
const rows = db.prepare(`SELECT ${MEMORY_SELECT_COLUMNS} FROM memories WHERE id > ?${tenantClause}
|
|
92
|
+
AND NOT EXISTS (SELECT 1 FROM memory_vectors v WHERE v.memory_id = memories.id AND v.model = ?)
|
|
93
|
+
ORDER BY id LIMIT ?`).all(query.afterId ?? '', ...tenantArgs, query.model, limit);
|
|
94
|
+
return rows.map(rowToEntry);
|
|
95
|
+
}
|
|
96
|
+
function ownedIds(db, ids, tenantId) {
|
|
97
|
+
const owned = new Set();
|
|
98
|
+
for (const chunk of chunked([...new Set(ids)])) {
|
|
99
|
+
// SAFETY: the SELECT names one column, id.
|
|
100
|
+
const rows = db.prepare(`SELECT id FROM memories WHERE +tenant_id = ? AND id IN (${chunk.map(() => '?').join(', ')})`).all(tenantId, ...chunk);
|
|
101
|
+
for (const row of rows)
|
|
102
|
+
owned.add(row.id);
|
|
103
|
+
}
|
|
104
|
+
return owned;
|
|
105
|
+
}
|
|
106
|
+
// savePhysicsState opens its own transaction and overwrites, so the first particle for a memory is inserted here instead.
|
|
107
|
+
function insertNewParticles(db, rows) {
|
|
108
|
+
const stmt = db.prepare(`
|
|
109
|
+
INSERT INTO memory_physics (memory_id, position_blob, velocity_blob, mass, charge, temperature, last_simulation)
|
|
110
|
+
VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT(memory_id) DO NOTHING
|
|
111
|
+
`);
|
|
112
|
+
for (const { memoryId, particle: p } of rows) {
|
|
113
|
+
if (p)
|
|
114
|
+
stmt.run(memoryId, float32ToBuffer(p.position), float32ToBuffer(p.velocity), p.mass, p.charge, p.temperature, p.lastSimulation);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export function writeVectorsAt(db, write) {
|
|
118
|
+
return withWriteScope(db, 'write_vectors', () => {
|
|
119
|
+
const replaces = replacesIndex(embeddingIndexStateOn(db), write.model);
|
|
120
|
+
if (replaces && !write.replaceIndex)
|
|
121
|
+
return { written: 0, modelMismatch: true };
|
|
122
|
+
const owned = ownedIds(db, write.rows.map((r) => r.memoryId), write.tenantId);
|
|
123
|
+
const rows = write.rows.filter((r) => owned.has(r.memoryId) && r.vector.length > 0 && r.vector.every(Number.isFinite));
|
|
124
|
+
if (rows.length === 0)
|
|
125
|
+
return { written: 0, modelMismatch: false };
|
|
126
|
+
if (replaces)
|
|
127
|
+
db.exec('DELETE FROM memory_vectors; DELETE FROM memory_physics;');
|
|
128
|
+
const written = upsertVectors(db, rows.map((r) => [r.memoryId, r.vector]), write.model);
|
|
129
|
+
insertNewParticles(db, rows);
|
|
130
|
+
setMeta(db, EMBEDDING_MODEL_META_KEY, write.model);
|
|
131
|
+
return { written, modelMismatch: false };
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/** Every particle stored under `hippoRoot`. */
|
|
135
|
+
export function loadStoredParticles(hippoRoot) {
|
|
136
|
+
return onHandle(hippoRoot, (db) => {
|
|
137
|
+
return Array.from(loadPhysicsState(db).values());
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/** Writes `particles` over their stored state under `hippoRoot`, as one batch. */
|
|
141
|
+
export function saveStoredParticles(hippoRoot, particles) {
|
|
142
|
+
onHandle(hippoRoot, (db) => {
|
|
143
|
+
savePhysicsState(db, particles);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
const PARTICLE_PAGE = 64;
|
|
147
|
+
function* entriesInPages(db, ids) {
|
|
148
|
+
for (const page of chunked(ids, PARTICLE_PAGE)) {
|
|
149
|
+
const rows = selectEntriesByIds(db, page);
|
|
150
|
+
for (const id of page) {
|
|
151
|
+
const entry = rows.get(id);
|
|
152
|
+
if (entry)
|
|
153
|
+
yield entry;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/** Replaces every particle under `hippoRoot` with a fresh one per memory in `ids` that has an embedding; returns how many. Rows are read a page at a time. */
|
|
158
|
+
export function resetStoredParticles(hippoRoot, ids, embeddingIndex) {
|
|
159
|
+
return onHandle(hippoRoot, (db) => {
|
|
160
|
+
return resetAllPhysicsState(db, entriesInPages(db, ids), embeddingIndex);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/** Stores a first particle for `entry`, placed at `vector`; a memory that has one keeps it. */
|
|
164
|
+
export function seedStoredParticle(hippoRoot, entry, vector) {
|
|
165
|
+
onHandle(hippoRoot, (db) => {
|
|
166
|
+
if (!loadPhysicsState(db, [entry.id]).has(entry.id))
|
|
167
|
+
savePhysicsState(db, [initializeParticle(entry, vector)]);
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=vector-index.js.map
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Separate from long-term semantic memory. Entries are scoped,
|
|
5
|
-
* importance-ranked, and automatically evicted when the buffer
|
|
6
|
-
* exceeds WM_MAX_ENTRIES per scope.
|
|
7
|
-
*/
|
|
8
|
-
import type { JsonValue } from './json.js';
|
|
1
|
+
/** Working Memory: bounded buffer for current-state notes, separate from long-term memory; scoped, importance-ranked, evicted past WM_MAX_ENTRIES per scope. */
|
|
2
|
+
import type { JsonValue } from '../util/json.js';
|
|
9
3
|
export declare const WM_MAX_ENTRIES = 20;
|
|
10
4
|
export type JsonObject = {
|
|
11
5
|
[key: string]: JsonValue;
|
|
@@ -21,12 +15,8 @@ export interface WorkingMemoryItem {
|
|
|
21
15
|
createdAt: string;
|
|
22
16
|
updatedAt: string;
|
|
23
17
|
}
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
* If the scope exceeds WM_MAX_ENTRIES, the lowest-importance entry
|
|
27
|
-
* is evicted (ties broken by oldest created_at).
|
|
28
|
-
* Returns the new row ID.
|
|
29
|
-
*/
|
|
18
|
+
/** Push a new entry into working memory; past WM_MAX_ENTRIES the scope's lowest-importance entry is evicted (ties: oldest created_at). Returns the new
|
|
19
|
+
* row ID. */
|
|
30
20
|
export declare function wmPush(hippoRoot: string, opts: {
|
|
31
21
|
scope: string;
|
|
32
22
|
content: string;
|
|
@@ -34,30 +24,25 @@ export declare function wmPush(hippoRoot: string, opts: {
|
|
|
34
24
|
sessionId?: string;
|
|
35
25
|
taskId?: string;
|
|
36
26
|
metadata?: JsonObject;
|
|
27
|
+
tenantId?: string;
|
|
37
28
|
}): number;
|
|
38
|
-
/**
|
|
39
|
-
* Read working memory entries, sorted by importance DESC.
|
|
40
|
-
*/
|
|
29
|
+
/** Read working memory entries, sorted by importance DESC. */
|
|
41
30
|
export declare function wmRead(hippoRoot: string, opts?: {
|
|
42
31
|
scope?: string;
|
|
43
32
|
sessionId?: string;
|
|
44
33
|
limit?: number;
|
|
34
|
+
tenantId?: string;
|
|
45
35
|
}): WorkingMemoryItem[];
|
|
46
|
-
/**
|
|
47
|
-
* Clear (delete) working memory entries. Returns the count deleted.
|
|
48
|
-
*/
|
|
36
|
+
/** Clear (delete) working memory entries. Returns the count deleted. */
|
|
49
37
|
export declare function wmClear(hippoRoot: string, opts?: {
|
|
50
38
|
scope?: string;
|
|
51
39
|
sessionId?: string;
|
|
40
|
+
tenantId?: string;
|
|
52
41
|
}): number;
|
|
53
|
-
/**
|
|
54
|
-
* Flush working memory — delete entries after session end.
|
|
55
|
-
* Functionally identical to wmClear but semantically distinct:
|
|
56
|
-
* used at session boundaries to discard ephemeral state.
|
|
57
|
-
* Returns the count flushed.
|
|
58
|
-
*/
|
|
42
|
+
/** Flush working memory after session end: same as wmClear, but marks the session-boundary discard of ephemeral state. Returns the count flushed. */
|
|
59
43
|
export declare function wmFlush(hippoRoot: string, opts?: {
|
|
60
44
|
scope?: string;
|
|
61
45
|
sessionId?: string;
|
|
46
|
+
tenantId?: string;
|
|
62
47
|
}): number;
|
|
63
48
|
//# sourceMappingURL=working-memory.d.ts.map
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/** Working Memory: bounded buffer for current-state notes, separate from long-term memory; scoped, importance-ranked, evicted past WM_MAX_ENTRIES per scope. */
|
|
2
|
+
import { withWriteScope } from '../db/index.js';
|
|
3
|
+
import { onHandle, openStore } from './open.js';
|
|
4
|
+
import { warnDamagedColumn } from '../util/stored-json.js';
|
|
5
|
+
import { resolveTenantId } from './tenant.js';
|
|
6
|
+
export const WM_MAX_ENTRIES = 20;
|
|
7
|
+
function rowToItem(row) {
|
|
8
|
+
let metadata = {};
|
|
9
|
+
try {
|
|
10
|
+
// SAFETY: metadata_json is always written by wmPush via JSON.stringify(opts.metadata ?? {}), so a successful parse yields a plain JSON object;
|
|
11
|
+
// malformed content falls through to the catch below.
|
|
12
|
+
metadata = JSON.parse(row.metadata_json);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// The item still lists with its content; only its metadata reads as empty.
|
|
16
|
+
warnDamagedColumn({ table: 'working_memory', id: row.id, column: 'metadata_json' }, 'not valid JSON');
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
id: row.id,
|
|
20
|
+
scope: row.scope,
|
|
21
|
+
sessionId: row.session_id,
|
|
22
|
+
taskId: row.task_id,
|
|
23
|
+
importance: Number(row.importance),
|
|
24
|
+
content: row.content,
|
|
25
|
+
metadata,
|
|
26
|
+
createdAt: row.created_at,
|
|
27
|
+
updatedAt: row.updated_at,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/** Push a new entry into working memory; past WM_MAX_ENTRIES the scope's lowest-importance entry is evicted (ties: oldest created_at). Returns the new
|
|
31
|
+
* row ID. */
|
|
32
|
+
export function wmPush(hippoRoot, opts) {
|
|
33
|
+
return onHandle(hippoRoot, (db) => {
|
|
34
|
+
const now = new Date().toISOString();
|
|
35
|
+
const importance = opts.importance ?? 0;
|
|
36
|
+
const tenantId = opts.tenantId ?? resolveTenantId({});
|
|
37
|
+
return withWriteScope(db, 'wm_push', () => {
|
|
38
|
+
const result = db.prepare(`
|
|
39
|
+
INSERT INTO working_memory(scope, session_id, task_id, importance, content, metadata_json, created_at, updated_at, tenant_id)
|
|
40
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
41
|
+
`).run(opts.scope, opts.sessionId ?? null, opts.taskId ?? null, importance, opts.content, JSON.stringify(opts.metadata ?? {}), now, now, tenantId);
|
|
42
|
+
const id = Number(result.lastInsertRowid ?? 0);
|
|
43
|
+
evictOverCapacity(db, opts.scope, tenantId);
|
|
44
|
+
return id;
|
|
45
|
+
});
|
|
46
|
+
}, openStore);
|
|
47
|
+
}
|
|
48
|
+
function evictOverCapacity(db, scope, tenantId) {
|
|
49
|
+
// Evict if over capacity for this scope.
|
|
50
|
+
// SAFETY: `COUNT(*) AS cnt` always returns exactly one row { cnt }, so `.get()` never yields undefined.
|
|
51
|
+
const countRow = db.prepare(`
|
|
52
|
+
SELECT COUNT(*) AS cnt FROM working_memory WHERE scope = ? AND tenant_id = ?
|
|
53
|
+
`).get(scope, tenantId);
|
|
54
|
+
const count = Number(countRow?.cnt ?? 0);
|
|
55
|
+
if (count > WM_MAX_ENTRIES) {
|
|
56
|
+
const excess = count - WM_MAX_ENTRIES;
|
|
57
|
+
db.prepare(`
|
|
58
|
+
DELETE FROM working_memory
|
|
59
|
+
WHERE id IN (
|
|
60
|
+
SELECT id FROM working_memory
|
|
61
|
+
WHERE scope = ? AND tenant_id = ?
|
|
62
|
+
ORDER BY importance ASC, created_at ASC
|
|
63
|
+
LIMIT ?
|
|
64
|
+
)
|
|
65
|
+
`).run(scope, tenantId, excess);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** Read working memory entries, sorted by importance DESC. */
|
|
69
|
+
export function wmRead(hippoRoot, opts) {
|
|
70
|
+
return onHandle(hippoRoot, (db) => {
|
|
71
|
+
const clauses = ['tenant_id = ?'];
|
|
72
|
+
const params = [opts?.tenantId ?? resolveTenantId({})];
|
|
73
|
+
if (opts?.scope) {
|
|
74
|
+
clauses.push('scope = ?');
|
|
75
|
+
params.push(opts.scope);
|
|
76
|
+
}
|
|
77
|
+
if (opts?.sessionId) {
|
|
78
|
+
clauses.push('session_id = ?');
|
|
79
|
+
params.push(opts.sessionId);
|
|
80
|
+
}
|
|
81
|
+
const limit = Math.max(1, Math.trunc(opts?.limit ?? WM_MAX_ENTRIES));
|
|
82
|
+
params.push(limit);
|
|
83
|
+
const where = clauses.length > 0 ? `WHERE ${clauses.join(' AND ')}` : '';
|
|
84
|
+
// SAFETY: query selects exactly the columns of WorkingMemoryRow, in the
|
|
85
|
+
// same names, from the working_memory table this module owns.
|
|
86
|
+
const rows = db.prepare(`
|
|
87
|
+
SELECT id, scope, session_id, task_id, importance, content, metadata_json, created_at, updated_at
|
|
88
|
+
FROM working_memory
|
|
89
|
+
${where}
|
|
90
|
+
ORDER BY importance DESC, created_at DESC
|
|
91
|
+
LIMIT ?
|
|
92
|
+
`).all(...params);
|
|
93
|
+
return rows.map(rowToItem);
|
|
94
|
+
}, openStore);
|
|
95
|
+
}
|
|
96
|
+
/** Clear (delete) working memory entries. Returns the count deleted. */
|
|
97
|
+
export function wmClear(hippoRoot, opts) {
|
|
98
|
+
return onHandle(hippoRoot, (db) => {
|
|
99
|
+
const clauses = ['tenant_id = ?'];
|
|
100
|
+
const params = [opts?.tenantId ?? resolveTenantId({})];
|
|
101
|
+
if (opts?.scope) {
|
|
102
|
+
clauses.push('scope = ?');
|
|
103
|
+
params.push(opts.scope);
|
|
104
|
+
}
|
|
105
|
+
if (opts?.sessionId) {
|
|
106
|
+
clauses.push('session_id = ?');
|
|
107
|
+
params.push(opts.sessionId);
|
|
108
|
+
}
|
|
109
|
+
const where = clauses.length > 0 ? `WHERE ${clauses.join(' AND ')}` : '';
|
|
110
|
+
const result = db.prepare(`DELETE FROM working_memory ${where}`).run(...params);
|
|
111
|
+
return Number(result.changes ?? 0);
|
|
112
|
+
}, openStore);
|
|
113
|
+
}
|
|
114
|
+
/** Flush working memory after session end: same as wmClear, but marks the session-boundary discard of ephemeral state. Returns the count flushed. */
|
|
115
|
+
export function wmFlush(hippoRoot, opts) {
|
|
116
|
+
return wmClear(hippoRoot, opts);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=working-memory.js.map
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal YAML frontmatter serializer/deserializer.
|
|
3
|
-
* No external deps. Handles simple key-value + arrays (inline only).
|
|
4
|
-
* Sufficient for the MemoryEntry frontmatter schema.
|
|
5
|
-
*/
|
|
1
|
+
/** Minimal YAML frontmatter serializer/deserializer with no external deps: simple key-value pairs and inline arrays, enough for the MemoryEntry schema. */
|
|
6
2
|
type YamlValue = string | number | boolean | null | string[] | number[];
|
|
7
3
|
export declare function dumpFrontmatter(obj: Record<string, YamlValue>): string;
|
|
8
4
|
export interface ParsedFrontmatter {
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal YAML frontmatter serializer/deserializer.
|
|
3
|
-
* No external deps. Handles simple key-value + arrays (inline only).
|
|
4
|
-
* Sufficient for the MemoryEntry frontmatter schema.
|
|
5
|
-
*/
|
|
1
|
+
/** Minimal YAML frontmatter serializer/deserializer with no external deps: simple key-value pairs and inline arrays, enough for the MemoryEntry schema. */
|
|
6
2
|
const SCALAR_LOOKALIKE = /^(null|true|false|-?\d+(\.\d+)?)$/;
|
|
7
3
|
const UNESCAPES = new Map([['\\', '\\'], ['"', '"'], ['n', '\n'], ['r', '\r']]);
|
|
8
4
|
function escapeString(s) {
|
|
9
5
|
// A string that reads as null, a boolean or a number is quoted so it comes back a string.
|
|
10
|
-
if (/[
|
|
6
|
+
if (/[:#[\]{},\n\r"']/.test(s) || s.trim() !== s || s === '' || SCALAR_LOOKALIKE.test(s)) {
|
|
11
7
|
const escaped = s.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r');
|
|
12
8
|
return `"${escaped}"`;
|
|
13
9
|
}
|
package/dist/support-bundle.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DoctorOpts } from './doctor.js';
|
|
2
|
-
import type { JsonObject } from './working-memory.js';
|
|
2
|
+
import type { JsonObject } from './store/working-memory.js';
|
|
3
3
|
export interface SupportBundleOpts extends DoctorOpts {
|
|
4
4
|
readonly cwd: string;
|
|
5
5
|
readonly home: string;
|
package/dist/support-bundle.js
CHANGED
|
@@ -1,24 +1,27 @@
|
|
|
1
|
-
/** `hippo support-bundle`: one redacted JSON snapshot for a support ticket. Read-only
|
|
2
|
-
|
|
1
|
+
/** `hippo support-bundle`: one redacted JSON snapshot for a support ticket. Read-only
|
|
2
|
+
* (SQLite may leave empty -wal and -shm files); never touches memory content. */
|
|
3
|
+
import { envByName, processEnv } from './util/env.js';
|
|
3
4
|
import * as fs from 'fs';
|
|
4
5
|
import * as os from 'os';
|
|
5
6
|
import * as path from 'path';
|
|
6
7
|
import { pathToFileURL } from 'url';
|
|
7
|
-
import { findHippoStoreDir, isGlobalStoreRoot
|
|
8
|
-
import {
|
|
8
|
+
import { findHippoStoreDir, isGlobalStoreRoot } from './core/project-identity.js';
|
|
9
|
+
import { realpathOrResolve } from './util/real-path.js';
|
|
10
|
+
import { getGlobalRoot } from './sharing/global-store.js';
|
|
9
11
|
import { isInitialized } from './store/open.js';
|
|
10
|
-
import {
|
|
12
|
+
import { readStoreInventory } from './store/diagnostics.js';
|
|
11
13
|
import { runDoctor } from './doctor.js';
|
|
12
|
-
import { loadConfig } from './config.js';
|
|
13
|
-
import { redactSecretsStrict } from './secret-detect.js';
|
|
14
|
-
import { isJsonString } from './json.js';
|
|
15
|
-
import { escapeRegex } from './escape.js';
|
|
14
|
+
import { loadConfig } from './core/config.js';
|
|
15
|
+
import { redactSecretsStrict } from './util/secret-detect.js';
|
|
16
|
+
import { isJsonString, isJsonObject } from './util/json.js';
|
|
17
|
+
import { escapeRegex } from './util/escape.js';
|
|
18
|
+
import { errorMessage } from './util/log.js';
|
|
16
19
|
const TAIL_MAX_BYTES = 256 * 1024;
|
|
17
20
|
export const TAIL_MAX_LINES = 200;
|
|
18
21
|
const TAIL_MAX_LINE_CHARS = 2000;
|
|
19
22
|
// Greedy on purpose: complete key blocks are redacted first, so any END left is an orphan and what precedes it may be key body.
|
|
20
23
|
const ORPHAN_KEY_END_RE = /^[\s\S]*-----END [A-Z ]*PRIVATE KEY-----/;
|
|
21
|
-
// The other env vars hippo reads outside the HIPPO_ prefix (src/
|
|
24
|
+
// The other env vars hippo reads outside the HIPPO_ prefix (src/store/embeddings/provider.ts, connectors/*).
|
|
22
25
|
const OTHER_ENV_NAMES = [
|
|
23
26
|
'ANTHROPIC_API_KEY', 'OPENAI_API_KEY', 'VOYAGE_API_KEY', 'COHERE_API_KEY', 'TYPESAFE_API_KEY',
|
|
24
27
|
'GITHUB_TOKEN', 'GITHUB_WEBHOOK_SECRET', 'GITHUB_WEBHOOK_SECRET_PREVIOUS',
|
|
@@ -27,9 +30,6 @@ const OTHER_ENV_NAMES = [
|
|
|
27
30
|
'XDG_DATA_HOME', 'MCP_SSE_HEARTBEAT_MS', 'MCP_SSE_MAX_AGE_SEC',
|
|
28
31
|
];
|
|
29
32
|
const CONFIG_SECRET_KEY_RE = /key|token|secret|passw|credential|auth|cookie|bearer|signature|private/i;
|
|
30
|
-
function isJsonObject(v) {
|
|
31
|
-
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
32
|
-
}
|
|
33
33
|
function buildRuntime() {
|
|
34
34
|
return {
|
|
35
35
|
node: process.versions.node,
|
|
@@ -39,17 +39,6 @@ function buildRuntime() {
|
|
|
39
39
|
osRelease: os.release(),
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
|
-
function listTableNames(db) {
|
|
43
|
-
// SAFETY: each row's shape matches the single `name` column named in the SELECT above.
|
|
44
|
-
const rows = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' AND sql NOT LIKE 'CREATE VIRTUAL TABLE%' ORDER BY name`).all();
|
|
45
|
-
return rows.map((r) => r.name);
|
|
46
|
-
}
|
|
47
|
-
function countTables(db) {
|
|
48
|
-
const tables = {};
|
|
49
|
-
for (const name of listTableNames(db))
|
|
50
|
-
tables[name] = countTableRows(db, name);
|
|
51
|
-
return tables;
|
|
52
|
-
}
|
|
53
42
|
function redactConfigValue(value) {
|
|
54
43
|
if (Array.isArray(value))
|
|
55
44
|
return value.map(redactConfigValue);
|
|
@@ -88,21 +77,13 @@ function buildStoreEntry(kind, storeDir) {
|
|
|
88
77
|
const walPath = `${dbPath}-wal`;
|
|
89
78
|
if (fs.existsSync(walPath))
|
|
90
79
|
files['hippo.db-wal'] = fs.statSync(walPath).size;
|
|
91
|
-
let db = null;
|
|
92
80
|
try {
|
|
93
|
-
|
|
94
|
-
const schemaVersion = getSchemaVersion(db);
|
|
95
|
-
const minCompatibleBinary = getMeta(db, 'min_compatible_binary', '') || null;
|
|
96
|
-
const tables = countTables(db);
|
|
81
|
+
const { schemaVersion, minCompatibleBinary, tables } = readStoreInventory(storeDir);
|
|
97
82
|
const { configFile, config } = readStoreConfig(storeDir);
|
|
98
83
|
return { kind, path: storeDir, schemaVersion, minCompatibleBinary, files, tables, configFile, config };
|
|
99
84
|
}
|
|
100
85
|
catch (err) {
|
|
101
|
-
return { kind, path: storeDir, error:
|
|
102
|
-
}
|
|
103
|
-
finally {
|
|
104
|
-
if (db !== null)
|
|
105
|
-
closeHippoDb(db);
|
|
86
|
+
return { kind, path: storeDir, error: errorMessage(err) };
|
|
106
87
|
}
|
|
107
88
|
}
|
|
108
89
|
function buildStores(opts) {
|
|
@@ -137,12 +118,13 @@ function listLogFileNames(dir) {
|
|
|
137
118
|
.sort();
|
|
138
119
|
}
|
|
139
120
|
function tailLogFile(file) {
|
|
140
|
-
const size = fs.statSync(file).size;
|
|
141
|
-
const readSize = Math.min(size, TAIL_MAX_BYTES);
|
|
142
|
-
const startedMidFile = size > TAIL_MAX_BYTES;
|
|
143
121
|
const fd = fs.openSync(file, 'r');
|
|
144
122
|
let text;
|
|
123
|
+
let startedMidFile;
|
|
145
124
|
try {
|
|
125
|
+
const size = fs.fstatSync(fd).size;
|
|
126
|
+
const readSize = Math.min(size, TAIL_MAX_BYTES);
|
|
127
|
+
startedMidFile = size > TAIL_MAX_BYTES;
|
|
146
128
|
const buf = Buffer.alloc(readSize);
|
|
147
129
|
fs.readSync(fd, buf, 0, readSize, size - readSize);
|
|
148
130
|
text = buf.toString('utf8');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { DatabaseSyncLike } from '
|
|
2
|
-
import type { MemoryEntry } from '
|
|
1
|
+
import type { DatabaseSyncLike } from '../db/index.js';
|
|
2
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
3
3
|
export type GatedWriteResult = 'written' | 'skipped:not-worth-storing' | 'skipped:secret' | 'skipped:rejected';
|
|
4
4
|
/** Runs on the caller's handle so it nests in the caller's transaction (writeEntry would open a second handle and wait on that lock); the caller mirrors after commit with an entry it stamped itself. The rejection audit lands inside that transaction, which is safe because a batch that rolls back stays `summarised` and replay writes the audit again. */
|
|
5
5
|
export declare function gatedWrite(db: DatabaseSyncLike, hippoRoot: string, entry: MemoryEntry, opts?: {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// The one write path for text no person typed into hippo: capture, compaction items and imported agent memories.
|
|
2
|
-
import { isContentWorthStoring } from '
|
|
3
|
-
import { RejectedValueError } from '
|
|
4
|
-
import { detectSecret } from '
|
|
5
|
-
import { auditRejectionRefusal } from '
|
|
6
|
-
import { stampOriginProject } from '
|
|
7
|
-
import { writeEntryDbOnly } from '
|
|
2
|
+
import { isContentWorthStoring } from '../core/memory-quality.js';
|
|
3
|
+
import { RejectedValueError } from '../store/rejection.js';
|
|
4
|
+
import { detectSecret } from '../util/secret-detect.js';
|
|
5
|
+
import { auditRejectionRefusal } from '../store/audit-event.js';
|
|
6
|
+
import { stampOriginProject } from '../store/entry-row.js';
|
|
7
|
+
import { writeEntryDbOnly } from '../store/entry-writes.js';
|
|
8
8
|
/** Runs on the caller's handle so it nests in the caller's transaction (writeEntry would open a second handle and wait on that lock); the caller mirrors after commit with an entry it stamped itself. The rejection audit lands inside that transaction, which is safe because a batch that rolls back stays `summarised` and replay writes the audit again. */
|
|
9
9
|
export function gatedWrite(db, hippoRoot, entry, opts) {
|
|
10
10
|
// Off for imported agent memories: a person wrote those notes, and a one-line preference fails the check.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Quarantine tier (CD5, AT3): pending/approved/rejected record for a memory `remember` flagged as untrusted. */
|
|
2
|
+
export { quarantineScopeFor } from '../store/quarantine.js';
|
|
3
|
+
export declare function isQuarantineScope(scope: string | null | undefined): boolean;
|
|
4
|
+
//# sourceMappingURL=quarantine.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Quarantine tier (CD5, AT3): pending/approved/rejected record for a memory `remember` flagged as untrusted. */
|
|
2
|
+
import { QUARANTINE_SCOPE_PREFIX } from '../store/quarantine.js';
|
|
3
|
+
// The scope a held memory is stored under is the table's own rule, so the store module owns it.
|
|
4
|
+
export { quarantineScopeFor } from '../store/quarantine.js';
|
|
5
|
+
export function isQuarantineScope(scope) {
|
|
6
|
+
return scope != null && scope.startsWith(QUARANTINE_SCOPE_PREFIX);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=quarantine.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type RejectedValueRow } from '../store/rejection.js';
|
|
2
|
+
import { type AppliedRejection, type LiftedRejection } from '../store/rejected-values.js';
|
|
3
|
+
export interface RejectFlowOpts {
|
|
4
|
+
hippoRoot: string;
|
|
5
|
+
tenantId: string;
|
|
6
|
+
actor: string;
|
|
7
|
+
reason: string;
|
|
8
|
+
/** By-id form: reject the CURRENT content of an existing memory. */
|
|
9
|
+
memoryId?: string;
|
|
10
|
+
/** Pre-emptive form: reject a value not currently stored (or already gone). */
|
|
11
|
+
value?: string;
|
|
12
|
+
/** The caller's own personal scope: the only personal rows the sweep may remove. Unset (the CLI) skips every personal row. */
|
|
13
|
+
ownScope?: string;
|
|
14
|
+
}
|
|
15
|
+
export type RejectFlowResult = AppliedRejection;
|
|
16
|
+
/** `hippo reject` and `api.reject`: refuses a bad request, then tombstones the value and removes every row in reach that holds it. */
|
|
17
|
+
export declare function rejectValue(opts: RejectFlowOpts): RejectFlowResult;
|
|
18
|
+
export type UnrejectOutcome = LiftedRejection;
|
|
19
|
+
/** `hippo unreject` and `api.unreject`: lifts the one tombstone a digest or prefix names. The only way to allow a rejected value again. */
|
|
20
|
+
export declare function unrejectValue(hippoRoot: string, tenantId: string, digestOrPrefix: string, actor: string): UnrejectOutcome;
|
|
21
|
+
/** `hippo rejections` / `api.listRejections` — list tombstones for a tenant. */
|
|
22
|
+
export declare function listRejectionsForTenant(hippoRoot: string, tenantId: string): RejectedValueRow[];
|
|
23
|
+
//# sourceMappingURL=reject-flow.d.ts.map
|