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,10 +1,10 @@
|
|
|
1
|
-
// The local Transformers.js embedder, a leaf so
|
|
2
|
-
import { envModelCache } from '
|
|
1
|
+
// The local Transformers.js embedder, a leaf so provider.ts can wrap it without importing index.ts.
|
|
2
|
+
import { envModelCache } from '../../util/env.js';
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import * as path from 'path';
|
|
5
5
|
import { createRequire } from 'module';
|
|
6
|
-
import { loadConfig } from '
|
|
7
|
-
import { log } from '
|
|
6
|
+
import { loadConfig } from '../../core/config.js';
|
|
7
|
+
import { errorMessage, log } from '../../util/log.js';
|
|
8
8
|
const _require = createRequire(import.meta.url);
|
|
9
9
|
let _embeddingAvailable = null;
|
|
10
10
|
// A pipeline is expensive to load, so one instance per model is kept for the process.
|
|
@@ -25,11 +25,6 @@ export function prefixFor(model, role) {
|
|
|
25
25
|
}
|
|
26
26
|
return '';
|
|
27
27
|
}
|
|
28
|
-
// Use Function constructor to bypass TypeScript static module resolution
|
|
29
|
-
// for optional peer dependencies that may not be installed.
|
|
30
|
-
// SAFETY: `import(s)` always resolves to a module namespace object (or rejects);
|
|
31
|
-
// Promise<object> names that honestly without claiming a specific module shape.
|
|
32
|
-
const _dynImport = new Function('s', 'return import(s)');
|
|
33
28
|
/** Check (synchronously) if @xenova/transformers or @huggingface/transformers is installed. */
|
|
34
29
|
export function isEmbeddingAvailable() {
|
|
35
30
|
if (_embeddingAvailable !== null)
|
|
@@ -71,68 +66,73 @@ function resolveTransformersPackage() {
|
|
|
71
66
|
return null; // neither optional package is installed; callers fall back to no local embeddings
|
|
72
67
|
}
|
|
73
68
|
}
|
|
74
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
75
69
|
async function loadPipeline(model) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if (!pkg) {
|
|
84
|
-
_pipelineErrors.set(model, 'no transformers package is installed');
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
let pipelineFn = null;
|
|
88
|
-
try {
|
|
89
|
-
// SAFETY: the resolved module's shape is untyped by design (optional peer
|
|
90
|
-
// dependency); pipelineFn/mod.env are read defensively below and any
|
|
91
|
-
// failure to find a usable pipeline falls through to `return null`.
|
|
92
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
93
|
-
const mod = await _dynImport(pkg);
|
|
94
|
-
if (envModelCache()) {
|
|
95
|
-
if (mod.env) {
|
|
96
|
-
mod.env.cacheDir = envModelCache();
|
|
97
|
-
mod.env.localModelPath = envModelCache();
|
|
98
|
-
mod.env.allowRemoteModels = false;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
pipelineFn = mod.pipeline ?? mod.default?.pipeline;
|
|
102
|
-
}
|
|
103
|
-
catch (err) {
|
|
104
|
-
// String(err) keeps a Node error's [ERR_...] code, which callers match on.
|
|
105
|
-
const reason = `transformers import failed (${pkg}): ${String(err)}`;
|
|
106
|
-
log.debug(reason);
|
|
107
|
-
_pipelineErrors.set(model, reason);
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
if (!pipelineFn) {
|
|
111
|
-
_pipelineErrors.set(model, `${pkg} exports no pipeline function`);
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
// The offline bundle used in egress-blocked sandboxes ships only the FP32 model, so use whichever file is on disk.
|
|
115
|
-
const cacheRoot = envModelCache();
|
|
116
|
-
const quantized = !cacheRoot
|
|
117
|
-
|| fs.existsSync(path.join(cacheRoot, model, 'onnx', 'model_quantized.onnx'));
|
|
118
|
-
try {
|
|
119
|
-
const instance = await pipelineFn('feature-extraction', model, { quantized });
|
|
120
|
-
_pipelineInstances.set(model, instance);
|
|
121
|
-
return instance;
|
|
122
|
-
}
|
|
123
|
-
catch (err) {
|
|
124
|
-
const reason = `embedding pipeline load failed (${model}): ${String(err)}`;
|
|
125
|
-
log.debug(reason);
|
|
126
|
-
_pipelineErrors.set(model, reason);
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
finally {
|
|
130
|
-
_pipelineLoading.delete(model);
|
|
131
|
-
}
|
|
132
|
-
})();
|
|
70
|
+
const loaded = _pipelineInstances.get(model);
|
|
71
|
+
if (loaded)
|
|
72
|
+
return loaded;
|
|
73
|
+
const inFlight = _pipelineLoading.get(model);
|
|
74
|
+
if (inFlight)
|
|
75
|
+
return inFlight;
|
|
76
|
+
const loading = createPipeline(model);
|
|
133
77
|
_pipelineLoading.set(model, loading);
|
|
134
78
|
return loading;
|
|
135
79
|
}
|
|
80
|
+
/** The model's pipeline, or null with the reason recorded in `_pipelineErrors`. */
|
|
81
|
+
async function createPipeline(model) {
|
|
82
|
+
const pkg = resolveTransformersPackage();
|
|
83
|
+
if (!pkg) {
|
|
84
|
+
_pipelineErrors.set(model, 'no transformers package is installed');
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const pipelineFn = await importPipelineFactory(pkg, model);
|
|
88
|
+
if (!pipelineFn)
|
|
89
|
+
return null;
|
|
90
|
+
// The offline bundle used in egress-blocked sandboxes ships only the FP32 model, so use whichever file is on disk.
|
|
91
|
+
const cacheRoot = envModelCache();
|
|
92
|
+
const quantized = !cacheRoot
|
|
93
|
+
|| fs.existsSync(path.join(cacheRoot, model, 'onnx', 'model_quantized.onnx'));
|
|
94
|
+
try {
|
|
95
|
+
const instance = await pipelineFn('feature-extraction', model, { quantized });
|
|
96
|
+
_pipelineInstances.set(model, instance);
|
|
97
|
+
return instance;
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
const reason = `embedding pipeline load failed (${model}): ${String(err)}`;
|
|
101
|
+
log.debug(reason);
|
|
102
|
+
_pipelineErrors.set(model, reason);
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
_pipelineLoading.delete(model);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/** The package's `pipeline` function, or null with the reason recorded in `_pipelineErrors`. */
|
|
110
|
+
async function importPipelineFactory(pkg, model) {
|
|
111
|
+
let pipelineFn = null;
|
|
112
|
+
try {
|
|
113
|
+
// The package is an optional peer, so the dynamic import is typed by what this file reads; a missing export falls to the null below.
|
|
114
|
+
const mod = await import(/* @vite-ignore */ pkg);
|
|
115
|
+
const cache = envModelCache();
|
|
116
|
+
if (cache && mod.env) {
|
|
117
|
+
mod.env.cacheDir = cache;
|
|
118
|
+
mod.env.localModelPath = cache;
|
|
119
|
+
mod.env.allowRemoteModels = false;
|
|
120
|
+
}
|
|
121
|
+
pipelineFn = mod.pipeline ?? mod.default?.pipeline ?? null;
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
// String(err) keeps a Node error's [ERR_...] code, which callers match on.
|
|
125
|
+
const reason = `transformers import failed (${pkg}): ${String(err)}`;
|
|
126
|
+
log.debug(reason);
|
|
127
|
+
_pipelineErrors.set(model, reason);
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
if (!pipelineFn) {
|
|
131
|
+
_pipelineErrors.set(model, `${pkg} exports no pipeline function`);
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
return pipelineFn;
|
|
135
|
+
}
|
|
136
136
|
/** Throws, with the reason, when the model's pipeline cannot load: a provider-level failure, not a per-item skip. */
|
|
137
137
|
export async function requireLocalPipeline(model) {
|
|
138
138
|
if (await loadPipeline(model))
|
|
@@ -163,19 +163,13 @@ export async function getEmbedding(text, model = DEFAULT_EMBEDDING_MODEL, role)
|
|
|
163
163
|
return [];
|
|
164
164
|
const prefix = prefixFor(model, role);
|
|
165
165
|
const input = prefix ? `${prefix}${text}` : text;
|
|
166
|
-
// SAFETY: pipe() is a Transformers.js feature-extraction pipeline call;
|
|
167
|
-
// its untyped output is read defensively below (only `.data`, cast on
|
|
168
|
-
// the return line to the documented Float32Array tensor shape).
|
|
169
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
170
166
|
const output = await pipe(input, { pooling: poolingFor(model), normalize: true });
|
|
171
|
-
// SAFETY: output.data is a Float32Array per the feature-extraction
|
|
172
|
-
// pipeline's documented tensor output shape.
|
|
173
167
|
return Array.from(output.data);
|
|
174
168
|
}
|
|
175
169
|
catch (err) {
|
|
176
170
|
// The caller sees `[]` and names the memory; the reason only shows at debug.
|
|
177
|
-
log.debug(`local embedding failed: ${
|
|
171
|
+
log.debug(`local embedding failed: ${errorMessage(err)}`);
|
|
178
172
|
return [];
|
|
179
173
|
}
|
|
180
174
|
}
|
|
181
|
-
//# sourceMappingURL=local
|
|
175
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** Pluggable embedding providers; local `@huggingface/transformers` is the zero-dependency default, OpenAI / Voyage / Cohere are opt-in via native `fetch`.
|
|
2
|
+
* Local `id` is the bare model string, API `id` is `${kind}:${model}`; the stored identity adds `#t<N>` (`embeddingIndexIdentity`), so changes reindex.
|
|
3
|
+
* `embed()` MAY throw on hard transport/auth failure so a reindex aborts atomically; hot paths wrap it and fall back to BM25. */
|
|
4
|
+
import { type EmbeddingRole } from './local.js';
|
|
5
|
+
export type EmbeddingProviderKind = 'local' | 'openai' | 'voyage' | 'cohere';
|
|
6
|
+
export declare const API_PROVIDER_KINDS: readonly EmbeddingProviderKind[];
|
|
7
|
+
export interface EmbedCallOptions {
|
|
8
|
+
/** Ends the whole call when it aborts, every batch and retry included. The local provider runs in process and ignores it. */
|
|
9
|
+
signal?: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
export interface EmbeddingProvider {
|
|
12
|
+
readonly kind: EmbeddingProviderKind;
|
|
13
|
+
readonly model: string;
|
|
14
|
+
/** Identity recorded in DB meta to drive reindex-on-change: bare model string for local, `${kind}:${model}` for api. */
|
|
15
|
+
readonly id: string;
|
|
16
|
+
/** Known fixed output dimension, if any (undefined for local / unknown). */
|
|
17
|
+
readonly dimensions?: number;
|
|
18
|
+
/** Env var holding this provider's API key (undefined for the local provider). */
|
|
19
|
+
readonly keyEnv?: string;
|
|
20
|
+
/** local -> dependency installed; api -> key present. NEVER throws. */
|
|
21
|
+
isAvailable(): boolean;
|
|
22
|
+
/** Batch-embed: one row per input in order, `[]` when that item could not be embedded.
|
|
23
|
+
* MAY throw on a hard transport/auth failure so a reindex aborts before saving a partial index. */
|
|
24
|
+
embed(texts: string[], role?: EmbeddingRole, call?: EmbedCallOptions): Promise<number[][]>;
|
|
25
|
+
}
|
|
26
|
+
export interface ResolveProviderOptions {
|
|
27
|
+
/** Explicit model override (mirrors resolveEmbeddingModel's explicitModel). */
|
|
28
|
+
model?: string;
|
|
29
|
+
/** Explicit provider override (mainly for tests). */
|
|
30
|
+
provider?: EmbeddingProviderKind;
|
|
31
|
+
}
|
|
32
|
+
/** Build the active embedding provider from config (or an explicit override). A missing key never throws here (it surfaces via `isAvailable()`);
|
|
33
|
+
* only an invalid config (e.g. insecure apiBaseUrl) throws, deliberately loud, so hot-path callers wrap it. */
|
|
34
|
+
export declare function resolveEmbeddingProvider(hippoRoot: string, opts?: ResolveProviderOptions): EmbeddingProvider;
|
|
35
|
+
/** The reindex identity for the active provider; use it, NOT resolveEmbeddingModel, wherever `embeddingModelRequiresReindex` / stored-model comparisons
|
|
36
|
+
* happen. */
|
|
37
|
+
export declare function resolveEmbeddingIdentity(hippoRoot: string, opts?: ResolveProviderOptions): string;
|
|
38
|
+
/** Provider-aware availability for a store (local: dependency installed; api: key present); use where the decision to embed is made. */
|
|
39
|
+
export declare function isEmbeddingConfigured(hippoRoot: string): boolean;
|
|
40
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1,36 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* reindex-on-change path.
|
|
18
|
-
* - `resolveEmbeddingProvider` throws on an invalid config (unknown provider,
|
|
19
|
-
* bad apiBaseUrl); `embedMemory` turns that into a warning. `isAvailable()` is provider-aware
|
|
20
|
-
* (local -> dependency installed; api -> key present). `embed()` MAY throw on
|
|
21
|
-
* a hard transport/auth failure so a reindex can abort atomically; hot paths
|
|
22
|
-
* wrap it and fall back to BM25.
|
|
23
|
-
*
|
|
24
|
-
* The exact request/response shapes for the API providers are documented from each
|
|
25
|
-
* vendor's public embeddings API; they are unit-tested here against a mocked
|
|
26
|
-
* `fetch` and are integration-verified in Workstream C (real API calls are
|
|
27
|
-
* egress-blocked in the build sandbox).
|
|
28
|
-
*/
|
|
29
|
-
import { envByName } from './env.js';
|
|
30
|
-
import { getEmbedding, isEmbeddingAvailable, requireLocalPipeline, resolveEmbeddingModel, DEFAULT_EMBEDDING_MODEL, } from './local-embedding.js';
|
|
31
|
-
import { loadConfig } from './config.js';
|
|
32
|
-
import { redactSecretsStrict } from './secret-detect.js';
|
|
33
|
-
import { fetchWithRetry } from './http-retry.js';
|
|
1
|
+
/** Pluggable embedding providers; local `@huggingface/transformers` is the zero-dependency default, OpenAI / Voyage / Cohere are opt-in via native `fetch`.
|
|
2
|
+
* Local `id` is the bare model string, API `id` is `${kind}:${model}`; the stored identity adds `#t<N>` (`embeddingIndexIdentity`), so changes reindex.
|
|
3
|
+
* `embed()` MAY throw on hard transport/auth failure so a reindex aborts atomically; hot paths wrap it and fall back to BM25. */
|
|
4
|
+
import { envByName } from '../../util/env.js';
|
|
5
|
+
import { getEmbedding, isEmbeddingAvailable, requireLocalPipeline, resolveEmbeddingModel, DEFAULT_EMBEDDING_MODEL, } from './local.js';
|
|
6
|
+
import { loadConfig } from '../../core/config.js';
|
|
7
|
+
import { errorMessage, log } from '../../util/log.js';
|
|
8
|
+
import { redactSecretsStrict } from '../../util/secret-detect.js';
|
|
9
|
+
import { fetchWithRetry } from '../../util/http-retry.js';
|
|
10
|
+
import { readCappedJson, readCappedText } from '../../util/capped-json.js';
|
|
11
|
+
const ERROR_DETAIL_CHARS = 300;
|
|
12
|
+
// An error body is read for its first lines only; 4x leaves room for multi-byte text.
|
|
13
|
+
const ERROR_BODY_MAX_BYTES = ERROR_DETAIL_CHARS * 4;
|
|
14
|
+
// 16,384 dimensions at 32 bytes a number: four times a 4,096-dimension model.
|
|
15
|
+
const EMBED_REPLY_BYTES_PER_INPUT = 512 * 1024;
|
|
16
|
+
const EMBED_REPLY_BASE_BYTES = 64 * 1024;
|
|
34
17
|
export const API_PROVIDER_KINDS = ['openai', 'voyage', 'cohere'];
|
|
35
18
|
function isApiProviderKind(x) {
|
|
36
19
|
return x === 'openai' || x === 'voyage' || x === 'cohere';
|
|
@@ -39,9 +22,8 @@ const DEFAULT_API_BATCH_SIZE = 64;
|
|
|
39
22
|
/** Per-request timeout for API embedding calls. A provider/proxy that accepts
|
|
40
23
|
* the connection but never responds must not hang embed/recall indefinitely. */
|
|
41
24
|
const REQUEST_TIMEOUT_MS = 30_000;
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
// ---------------------------------------------------------------------------
|
|
25
|
+
// Under a caller's deadline a longer Retry-After hands the reply back at once; the remote rerankers use the same cap.
|
|
26
|
+
const DEADLINE_RETRY_WAIT_CAP_MS = 2_000;
|
|
45
27
|
class LocalEmbeddingProvider {
|
|
46
28
|
model;
|
|
47
29
|
enabled;
|
|
@@ -76,8 +58,7 @@ const API_PROVIDER_SPECS = {
|
|
|
76
58
|
// OpenAI has no asymmetric query/passage input type for embeddings.
|
|
77
59
|
buildBody: (model, texts) => ({ model, input: texts }),
|
|
78
60
|
extractVectors: (json) => {
|
|
79
|
-
// SAFETY: OpenAI's documented embeddings
|
|
80
|
-
// validates vector count/non-emptiness against the request afterward,
|
|
61
|
+
// SAFETY: OpenAI's documented embeddings envelope; embedChunk validates vector count and non-emptiness afterward,
|
|
81
62
|
// so a malformed response degrades to [] here and throws there.
|
|
82
63
|
const data = json.data ?? [];
|
|
83
64
|
return data.map((d) => d.embedding ?? []);
|
|
@@ -95,8 +76,7 @@ const API_PROVIDER_SPECS = {
|
|
|
95
76
|
return body;
|
|
96
77
|
},
|
|
97
78
|
extractVectors: (json) => {
|
|
98
|
-
// SAFETY: Voyage's documented embeddings
|
|
99
|
-
// validates vector count/non-emptiness against the request afterward,
|
|
79
|
+
// SAFETY: Voyage's documented embeddings envelope; embedChunk validates vector count and non-emptiness afterward,
|
|
100
80
|
// so a malformed response degrades to [] here and throws there.
|
|
101
81
|
const data = json.data ?? [];
|
|
102
82
|
return data.map((d) => d.embedding ?? []);
|
|
@@ -114,10 +94,8 @@ const API_PROVIDER_SPECS = {
|
|
|
114
94
|
embedding_types: ['float'],
|
|
115
95
|
}),
|
|
116
96
|
extractVectors: (json) => {
|
|
117
|
-
// Cohere v2: { embeddings: { float: number[][] } }
|
|
118
|
-
// SAFETY:
|
|
119
|
-
// validates vector count/non-emptiness against the request afterward,
|
|
120
|
-
// so a malformed response degrades to [] here and throws there.
|
|
97
|
+
// Cohere v2 shape: { embeddings: { float: number[][] } }
|
|
98
|
+
// SAFETY: documented v2 envelope; embedChunk validates the vectors afterward, so a malformed response degrades to [] here and throws there.
|
|
121
99
|
const emb = json.embeddings;
|
|
122
100
|
return emb?.float ?? [];
|
|
123
101
|
},
|
|
@@ -129,6 +107,13 @@ function redact(text, secret) {
|
|
|
129
107
|
return text;
|
|
130
108
|
return text.split(secret).join('***');
|
|
131
109
|
}
|
|
110
|
+
/** A cause with the key cut out: the caught error's own text or cause chain can echo the Authorization header. */
|
|
111
|
+
function redactedCause(err, key) {
|
|
112
|
+
const copy = new Error(redact(errorMessage(err), key));
|
|
113
|
+
if (err instanceof Error)
|
|
114
|
+
copy.name = err.name;
|
|
115
|
+
return copy;
|
|
116
|
+
}
|
|
132
117
|
function l2normalize(v) {
|
|
133
118
|
let norm = 0;
|
|
134
119
|
for (const x of v)
|
|
@@ -160,7 +145,7 @@ class ApiEmbeddingProvider {
|
|
|
160
145
|
isAvailable() {
|
|
161
146
|
return this.enabled && !!envByName(this.keyEnv)?.trim();
|
|
162
147
|
}
|
|
163
|
-
async embed(texts, role) {
|
|
148
|
+
async embed(texts, role, call = {}) {
|
|
164
149
|
if (texts.length === 0)
|
|
165
150
|
return [];
|
|
166
151
|
const key = envByName(this.keyEnv)?.trim();
|
|
@@ -172,62 +157,74 @@ class ApiEmbeddingProvider {
|
|
|
172
157
|
const out = [];
|
|
173
158
|
for (let i = 0; i < texts.length; i += this.batchSize) {
|
|
174
159
|
const chunk = texts.slice(i, i + this.batchSize);
|
|
175
|
-
const vecs = await this.embedChunk(chunk, key, role);
|
|
160
|
+
const vecs = await this.embedChunk(chunk, key, role, call.signal);
|
|
176
161
|
for (const v of vecs)
|
|
177
162
|
out.push(v.length > 0 ? l2normalize(v) : v);
|
|
178
163
|
}
|
|
179
164
|
return out;
|
|
180
165
|
}
|
|
181
|
-
async embedChunk(chunk, key, role) {
|
|
166
|
+
async embedChunk(chunk, key, role, signal) {
|
|
167
|
+
const spec = API_PROVIDER_SPECS[this.kind];
|
|
168
|
+
const resp = await this.postChunk(chunk, key, role, signal);
|
|
169
|
+
const json = await this.responseJson(resp, key, chunk.length);
|
|
170
|
+
const vectors = spec.extractVectors(json);
|
|
171
|
+
// A 200 with the wrong vector count (or any empty/malformed vector) is a provider contract violation, not a per-item miss:
|
|
172
|
+
// throw so a reindex aborts atomically and the explicit backfill surfaces it, instead of saving []-padded rows.
|
|
173
|
+
if (vectors.length !== chunk.length) {
|
|
174
|
+
throw new Error(redact(`${this.kind} embeddings returned ${vectors.length} vectors for ${chunk.length} inputs`, key));
|
|
175
|
+
}
|
|
176
|
+
for (let i = 0; i < vectors.length; i++) {
|
|
177
|
+
if (!vectors[i] || vectors[i].length === 0) {
|
|
178
|
+
throw new Error(redact(`${this.kind} embeddings returned an empty vector at index ${i}`, key));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return vectors;
|
|
182
|
+
}
|
|
183
|
+
async postChunk(chunk, key, role, signal) {
|
|
182
184
|
const spec = API_PROVIDER_SPECS[this.kind];
|
|
183
185
|
const url = `${this.baseUrl.replace(/\/$/, '')}/${spec.path}`;
|
|
184
|
-
let resp;
|
|
185
186
|
try {
|
|
186
|
-
|
|
187
|
+
return await fetchWithRetry(url, {
|
|
187
188
|
method: 'POST',
|
|
188
189
|
headers: {
|
|
189
190
|
'content-type': 'application/json',
|
|
190
191
|
authorization: `Bearer ${key}`,
|
|
191
192
|
},
|
|
192
193
|
body: JSON.stringify(spec.buildBody(this.model, chunk.map(redactSecretsStrict), role)),
|
|
193
|
-
|
|
194
|
+
signal,
|
|
195
|
+
}, {
|
|
196
|
+
timeoutMs: REQUEST_TIMEOUT_MS,
|
|
197
|
+
// Embedding the same text twice changes nothing on the far side, so a dropped connection or a stalled attempt is replayed.
|
|
198
|
+
retryTransport: true,
|
|
199
|
+
maxDelayMs: signal ? DEADLINE_RETRY_WAIT_CAP_MS : undefined,
|
|
200
|
+
});
|
|
194
201
|
}
|
|
195
202
|
catch (err) {
|
|
196
|
-
const msg =
|
|
197
|
-
throw new Error(redact(`embedding request to ${this.kind} failed: ${msg}`, key));
|
|
203
|
+
const msg = errorMessage(err);
|
|
204
|
+
throw new Error(redact(`embedding request to ${this.kind} failed: ${msg}`, key), { cause: redactedCause(err, key) });
|
|
198
205
|
}
|
|
206
|
+
}
|
|
207
|
+
/** The body of an OK reply; any other status, or a body that is not JSON, throws with the key cut out. */
|
|
208
|
+
async responseJson(resp, key, inputs) {
|
|
199
209
|
if (!resp.ok) {
|
|
200
210
|
let detail = '';
|
|
201
211
|
try {
|
|
202
|
-
detail = await resp
|
|
212
|
+
detail = await readCappedText(resp, ERROR_BODY_MAX_BYTES);
|
|
203
213
|
}
|
|
204
214
|
catch {
|
|
205
215
|
/* ignore body read error */
|
|
206
216
|
}
|
|
207
|
-
throw new Error(redact(`${this.kind} embeddings HTTP ${resp.status}: ${detail.slice(0,
|
|
217
|
+
throw new Error(redact(`${this.kind} embeddings HTTP ${resp.status}: ${detail.slice(0, ERROR_DETAIL_CHARS)}`, key));
|
|
208
218
|
}
|
|
209
|
-
let json;
|
|
210
219
|
try {
|
|
211
|
-
|
|
220
|
+
return await readCappedJson(resp, EMBED_REPLY_BASE_BYTES + inputs * EMBED_REPLY_BYTES_PER_INPUT);
|
|
212
221
|
}
|
|
213
222
|
catch (err) {
|
|
214
|
-
const msg =
|
|
215
|
-
throw new Error(redact(`${this.kind} embeddings returned invalid JSON: ${msg}`, key)
|
|
223
|
+
const msg = errorMessage(err);
|
|
224
|
+
throw new Error(redact(`${this.kind} embeddings returned invalid JSON: ${msg}`, key), {
|
|
225
|
+
cause: redactedCause(err instanceof Error && err.cause ? err.cause : err, key)
|
|
226
|
+
});
|
|
216
227
|
}
|
|
217
|
-
const vectors = spec.extractVectors(json);
|
|
218
|
-
// A 200 response with the wrong number of vectors (or any empty/malformed
|
|
219
|
-
// vector) is a provider/proxy contract violation, NOT a per-item miss. Throw
|
|
220
|
-
// so a reindex aborts atomically (preserving the prior usable index) and the
|
|
221
|
-
// explicit backfill surfaces it, instead of silently saving []-padded rows.
|
|
222
|
-
if (vectors.length !== chunk.length) {
|
|
223
|
-
throw new Error(redact(`${this.kind} embeddings returned ${vectors.length} vectors for ${chunk.length} inputs`, key));
|
|
224
|
-
}
|
|
225
|
-
for (let i = 0; i < vectors.length; i++) {
|
|
226
|
-
if (!vectors[i] || vectors[i].length === 0) {
|
|
227
|
-
throw new Error(redact(`${this.kind} embeddings returned an empty vector at index ${i}`, key));
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
return vectors;
|
|
231
228
|
}
|
|
232
229
|
}
|
|
233
230
|
function readEmbeddingsConfig(hippoRoot) {
|
|
@@ -258,13 +255,8 @@ function validateBaseUrl(url, fallback) {
|
|
|
258
255
|
}
|
|
259
256
|
return candidate;
|
|
260
257
|
}
|
|
261
|
-
/**
|
|
262
|
-
*
|
|
263
|
-
* Never throws for a missing key — that surfaces via `isAvailable()` on the hot
|
|
264
|
-
* paths and as a hard error only from the explicit `hippo embed` command. The
|
|
265
|
-
* only hard throw is an invalid config (e.g. an insecure apiBaseUrl), a
|
|
266
|
-
* deliberate loud failure; hot-path callers (search) wrap this in try/catch.
|
|
267
|
-
*/
|
|
258
|
+
/** Build the active embedding provider from config (or an explicit override). A missing key never throws here (it surfaces via `isAvailable()`);
|
|
259
|
+
* only an invalid config (e.g. insecure apiBaseUrl) throws, deliberately loud, so hot-path callers wrap it. */
|
|
268
260
|
export function resolveEmbeddingProvider(hippoRoot, opts = {}) {
|
|
269
261
|
const cfg = readEmbeddingsConfig(hippoRoot);
|
|
270
262
|
const requested = opts.provider ?? cfg.provider ?? 'local';
|
|
@@ -291,25 +283,20 @@ export function resolveEmbeddingProvider(hippoRoot, opts = {}) {
|
|
|
291
283
|
: DEFAULT_API_BATCH_SIZE;
|
|
292
284
|
return new ApiEmbeddingProvider(kind, model, baseUrl, batchSize, enabled);
|
|
293
285
|
}
|
|
294
|
-
/**
|
|
295
|
-
*
|
|
296
|
-
* everywhere `embeddingModelRequiresReindex` / stored-model comparisons happen.
|
|
297
|
-
*/
|
|
286
|
+
/** The reindex identity for the active provider; use it, NOT resolveEmbeddingModel, wherever `embeddingModelRequiresReindex` / stored-model comparisons
|
|
287
|
+
* happen. */
|
|
298
288
|
export function resolveEmbeddingIdentity(hippoRoot, opts = {}) {
|
|
299
289
|
return resolveEmbeddingProvider(hippoRoot, opts).id;
|
|
300
290
|
}
|
|
301
|
-
/**
|
|
302
|
-
* Provider-aware availability for a store: local -> dependency installed;
|
|
303
|
-
* api -> key present. Use at the call sites that decide whether to embed.
|
|
304
|
-
*/
|
|
291
|
+
/** Provider-aware availability for a store (local: dependency installed; api: key present); use where the decision to embed is made. */
|
|
305
292
|
export function isEmbeddingConfigured(hippoRoot) {
|
|
306
293
|
try {
|
|
307
294
|
return resolveEmbeddingProvider(hippoRoot).isAvailable();
|
|
308
295
|
}
|
|
309
|
-
catch {
|
|
310
|
-
//
|
|
311
|
-
|
|
296
|
+
catch (err) {
|
|
297
|
+
// An invalid embedding config must not crash the best-effort ingestion guard, so it reads as not configured.
|
|
298
|
+
log.debug(`embedding config unusable: ${errorMessage(err)}`);
|
|
312
299
|
return false;
|
|
313
300
|
}
|
|
314
301
|
}
|
|
315
|
-
//# sourceMappingURL=
|
|
302
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -1,83 +1,86 @@
|
|
|
1
|
-
import type { MemoryEntry } from '../memory.js';
|
|
2
|
-
import { type DatabaseSyncLike } from '../db.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* When `tenantId` is provided, the read is scoped to that tenant (cross-tenant
|
|
7
|
-
* lookups return null). When omitted, no tenant filter is applied — preserves
|
|
8
|
-
* legacy single-tenant callers and the writeEntry/readEntry round-trip.
|
|
9
|
-
*/
|
|
1
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
2
|
+
import { type DatabaseSyncLike } from '../db/index.js';
|
|
3
|
+
export declare const TENANT_IS = "+tenant_id = ?";
|
|
4
|
+
/** Read a memory entry by ID. With `tenantId` the read is tenant-scoped (cross-tenant returns null); omitted, no tenant filter is applied. */
|
|
10
5
|
export declare function readEntry(hippoRoot: string, id: string, tenantId?: string): MemoryEntry | null;
|
|
11
6
|
/** Ids per `IN (...)` list: far under SQLite's bound-parameter limit, with room for the tenant filter. */
|
|
12
7
|
export declare const ID_CHUNK = 500;
|
|
13
8
|
/** `items` in consecutive slices of at most `size`. */
|
|
14
9
|
export declare function chunked<T>(items: readonly T[], size?: number): T[][];
|
|
10
|
+
/** Answers whether a tenant's rows in this store hold an id: `ids` are looked up now, one query per chunk, and any other id on its first ask. */
|
|
11
|
+
export declare function heldIdLookup(hippoRoot: string, tenantId: string, ids: readonly string[]): (id: string) => boolean;
|
|
15
12
|
/** Rows by id on the caller's handle, one query per chunk; an id missing or in another tenant is absent from the map. */
|
|
16
13
|
export declare function selectEntriesByIds(db: DatabaseSyncLike, ids: readonly string[], tenantId?: string): Map<string, MemoryEntry>;
|
|
17
14
|
/** Direct children of each parent, one query per chunk; each list is in `created ASC, id ASC` order. */
|
|
18
15
|
export declare function selectChildrenByParent(db: DatabaseSyncLike, parentIds: readonly string[], tenantId?: string): Map<string, MemoryEntry[]>;
|
|
19
|
-
/**
|
|
20
|
-
* Batched lookup. Caps at 500 ids per call to keep the IN(?,?,...) clause
|
|
21
|
-
* within SQLite limits. Tenant filter is enforced when `tenantId` is passed.
|
|
22
|
-
* Used by DAG-aware recall to fetch parent summaries for a set of overflowed leaves.
|
|
23
|
-
*/
|
|
16
|
+
/** Batched lookup, capped at 500 ids per call to keep IN(?,?,...) within SQLite limits; tenant filter enforced when `tenantId` is passed. */
|
|
24
17
|
export declare function loadEntriesByIds(hippoRoot: string, ids: readonly string[], tenantId?: string): MemoryEntry[];
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* oldest-first. Used by `api.assemble` to walk a session's chronological
|
|
28
|
-
* context. Excludes superseded rows.
|
|
29
|
-
*
|
|
30
|
-
* Cap semantics: when `cap` is provided, the NEWEST `cap` rows are loaded (DESC LIMIT server-side,
|
|
31
|
-
* reversed client-side); ASC + LIMIT would drop the newest rows and break fresh-tail in assemble.
|
|
32
|
-
*
|
|
33
|
-
* Returns `[]` for an empty sessionId. Final order: `created ASC, id ASC`.
|
|
34
|
-
*/
|
|
18
|
+
/** All `kind='raw'` rows for a session, tenant-scoped, oldest-first, excluding superseded; `[]` for an empty sessionId.
|
|
19
|
+
* With `cap`, the NEWEST rows are loaded (DESC LIMIT, reversed client-side); ASC + LIMIT would drop the newest and break fresh-tail in assemble. */
|
|
35
20
|
export declare function loadSessionRawMemories(hippoRoot: string, sessionId: string, tenantId?: string, cap?: number, origins?: readonly string[]): MemoryEntry[];
|
|
36
|
-
/**
|
|
37
|
-
*
|
|
38
|
-
* the full session size even when `rowCap` truncates the loaded window,
|
|
39
|
-
* WITHOUT leaking rows the caller wouldn't have been allowed to load.
|
|
40
|
-
*
|
|
41
|
-
* An unscoped COUNT would let a no-scope caller infer private rows by comparing `totalRaw`
|
|
42
|
-
* against `items.length`, so this SQL-encodes the default-deny rule `passesScopeFilterForRecall` applies in TS:
|
|
43
|
-
* - explicit scope passed: exact-match
|
|
44
|
-
* - no scope: `scopeAdmitSql`'s default deny, which admits `ownScope`, the caller's personal scope.
|
|
45
|
-
*
|
|
46
|
-
* `tenantId` is optional for back-compat. Pass `undefined` only when
|
|
47
|
-
* intentionally counting cross-tenant; `assemble()` passes `ctx.tenantId`.
|
|
48
|
-
*/
|
|
21
|
+
/** Pre-cap, scope-aware row count for a session, so `assemble` reports the full size without leaking rows the caller could not load. Mirrors
|
|
22
|
+
* `passesScopeFilterForRecall`'s default-deny: explicit scope matches exactly, none admits only `ownScope`. `tenantId` undefined counts cross-tenant. */
|
|
49
23
|
export declare function countSessionRawMemories(hippoRoot: string, sessionId: string, tenantId?: string, scope?: string, ownScope?: string, origins?: readonly string[]): number;
|
|
50
|
-
/**
|
|
51
|
-
*
|
|
52
|
-
* `sessionId` is supplied, also constrains to a specific session — that
|
|
53
|
-
* is the correct shape for "what did I just see in THIS session."
|
|
54
|
-
*
|
|
55
|
-
* Without `sessionId`, concurrent sessions in a tenant surface each other's rows as fresh tail;
|
|
56
|
-
* pass undefined only for "anything new across the whole tenant".
|
|
57
|
-
*
|
|
58
|
-
* Bounded count cap at 200 — beyond that the caller should filter via
|
|
59
|
-
* tags/scope rather than time-windowed recall.
|
|
60
|
-
*
|
|
61
|
-
* The tenant-wide shape is the back-compat default but discouraged; `api.recall` throws
|
|
62
|
-
* `RecallContractError` for it when `HIPPO_REQUIRE_SESSION_SCOPED_FRESH_TAIL=1` is set.
|
|
63
|
-
*/
|
|
24
|
+
/** Last N kind='raw' memories by `created` desc, tenant-scoped, max 200; pass `sessionId` or concurrent sessions show up in each other's fresh tail.
|
|
25
|
+
* The tenant-wide shape is discouraged: `api.recall` throws `RecallContractError` for it when `HIPPO_REQUIRE_SESSION_SCOPED_FRESH_TAIL=1`. */
|
|
64
26
|
export declare function loadFreshRawMemories(hippoRoot: string, count: number, tenantId?: string, sessionId?: string, origins?: readonly string[]): MemoryEntry[];
|
|
65
|
-
/**
|
|
66
|
-
* Direct DAG children of a parent summary. Tenant scoped. Returns only rows
|
|
67
|
-
* whose `dag_parent_id` matches `parentId`; does NOT walk recursively.
|
|
68
|
-
*/
|
|
69
|
-
export declare function loadChildrenOf(hippoRoot: string, parentId: string, tenantId?: string): MemoryEntry[];
|
|
70
|
-
/**
|
|
71
|
-
* Load all entries from SQLite.
|
|
72
|
-
*
|
|
73
|
-
* When `tenantId` is provided, results are scoped to that tenant. Omitting it
|
|
74
|
-
* yields all rows (legacy behavior used by consolidate/autolearn etc.). Recall
|
|
75
|
-
* paths that surface results to a user MUST pass a resolved tenant.
|
|
76
|
-
*/
|
|
27
|
+
/** Load all entries from SQLite; omitting `tenantId` yields all rows (legacy). Recall paths that surface results to a user MUST pass a resolved tenant. */
|
|
77
28
|
export declare function loadAllEntries(hippoRoot: string, tenantId?: string): MemoryEntry[];
|
|
29
|
+
/** Every tenant's memory ids in loadAllEntries' order, for a caller that reads the rows a page at a time instead of holding them all. */
|
|
30
|
+
export declare function loadAllEntryIds(hippoRoot: string): string[];
|
|
31
|
+
export interface EntriesWithBase {
|
|
32
|
+
entries: MemoryEntry[];
|
|
33
|
+
base: {
|
|
34
|
+
get(id: string): MemoryEntry | undefined;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/** Every entry plus a by-id lookup of each as loaded, rebuilt from its row on first use, so no deep copy of the store is kept. */
|
|
38
|
+
export declare function loadAllEntriesWithBase(hippoRoot: string): EntriesWithBase;
|
|
78
39
|
/** Every memory row on an open connection, so a caller can read inside its own transaction. */
|
|
79
40
|
export declare function selectAllEntries(db: DatabaseSyncLike, tenantId?: string): MemoryEntry[];
|
|
80
41
|
/** Live rows whose source starts with `prefix`, on the caller's handle; LIKE folds case, so the prefix is checked again exactly. */
|
|
81
42
|
export declare function selectLiveEntriesBySourcePrefix(db: DatabaseSyncLike, tenantId: string, prefix: string): MemoryEntry[];
|
|
82
43
|
export declare function loadContentsWithTag(hippoRoot: string, tenantId: string, tag: string, origins?: readonly string[]): string[];
|
|
44
|
+
export interface VaultRawRow {
|
|
45
|
+
id: string;
|
|
46
|
+
artifact_ref: string;
|
|
47
|
+
tags_json: string;
|
|
48
|
+
scope: string | null;
|
|
49
|
+
}
|
|
50
|
+
/** Live raw rows whose artifact_ref matches a LIKE pattern, for one tenant; the store is set up first when it is new. */
|
|
51
|
+
export declare function loadVaultRawRows(hippoRoot: string, likeParam: string, tenantId: string): VaultRawRow[];
|
|
52
|
+
export interface PreviewRow {
|
|
53
|
+
id: string;
|
|
54
|
+
content: string;
|
|
55
|
+
source: string | null;
|
|
56
|
+
confidence: MemoryEntry['confidence'] | null;
|
|
57
|
+
extracted_from: string | null;
|
|
58
|
+
dag_level: number | null;
|
|
59
|
+
tags_json: string | null;
|
|
60
|
+
}
|
|
61
|
+
/** Reads memories from a store whose schema may predate some columns; `columns` is the table's real column set. */
|
|
62
|
+
export declare function selectPreviewRows(db: DatabaseSyncLike, columns: ReadonlySet<string>, tenantId: string): PreviewRow[];
|
|
63
|
+
/** True when a memory row, of any tenant, already holds `id`. */
|
|
64
|
+
export declare function entryIdTakenAt(db: DatabaseSyncLike, id: string): boolean;
|
|
65
|
+
/** The text, tenant and scope of memory `id`, or undefined when no row holds it. */
|
|
66
|
+
export declare function entryRejectRowAt(db: DatabaseSyncLike, id: string): {
|
|
67
|
+
content: string;
|
|
68
|
+
tenant_id: string;
|
|
69
|
+
scope: string | null;
|
|
70
|
+
} | undefined;
|
|
71
|
+
export declare function objectMemoryRowsAt(db: DatabaseSyncLike): Array<{
|
|
72
|
+
memory_id: string;
|
|
73
|
+
status: string;
|
|
74
|
+
}>;
|
|
75
|
+
/** Live rows of a tenant whose source does not start with `sourcePrefix`; `origins` (global store only) limits them to user-global rows and those projects. */
|
|
76
|
+
export declare function selectRowsOutsideSourcePrefixAt(db: DatabaseSyncLike, tenantId: string, sourcePrefix: string, origins: readonly string[] | null): Array<{
|
|
77
|
+
id: string;
|
|
78
|
+
content: string;
|
|
79
|
+
source: string;
|
|
80
|
+
}>;
|
|
81
|
+
/** Content of a tenant's live rows written by `source` and tagged `tag` that no extraction produced,
|
|
82
|
+
* in loadAllEntries' order and in every scope; `exceptSessionId` drops one session's own rows. */
|
|
83
|
+
export declare function loadLiveContentsBySourceAndTag(hippoRoot: string, tenantId: string, source: string, tag: string, exceptSessionId: string): string[];
|
|
84
|
+
/** Every tenant's distilled rows nothing has superseded, in loadAllEntries' order: the rows that can be each other's duplicate. */
|
|
85
|
+
export declare function loadCurrentDistilledEntries(hippoRoot: string): MemoryEntry[];
|
|
83
86
|
//# sourceMappingURL=entry-reads.d.ts.map
|