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,12 +1,14 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
2
|
import { pathToFileURL } from 'node:url';
|
|
3
|
-
import {
|
|
3
|
+
import { createOutageWarning } from './outage-warning.js';
|
|
4
|
+
import { compareScoresDesc } from '../core/compare.js';
|
|
5
|
+
import { errorMessage, log } from '../util/log.js';
|
|
6
|
+
const DEFAULT_CROSS_ENCODER_TOP_K = 50;
|
|
4
7
|
const MODEL_NAME = 'Xenova/ms-marco-MiniLM-L-6-v2';
|
|
5
8
|
const _require = createRequire(import.meta.url);
|
|
6
9
|
const TRANSFORMERS_PACKAGES = ['@huggingface/transformers', '@xenova/transformers'];
|
|
7
|
-
// Returns the ESM entry URL, the same build src/embeddings.ts imports
|
|
8
|
-
//
|
|
9
|
-
// the library, with its own ONNX sessions, in the process.
|
|
10
|
+
// Returns the ESM entry URL, the same build src/store/embeddings/index.ts imports; a require-style resolve picks the CommonJS build and
|
|
11
|
+
// puts a second copy of the library, with its own ONNX sessions, in the process.
|
|
10
12
|
function resolveTransformersPackage() {
|
|
11
13
|
for (const name of TRANSFORMERS_PACKAGES) {
|
|
12
14
|
try {
|
|
@@ -38,24 +40,14 @@ async function loadTransformersModule() {
|
|
|
38
40
|
return tok && seq ? { AutoTokenizer: tok, AutoModelForSequenceClassification: seq } : null;
|
|
39
41
|
}
|
|
40
42
|
catch (err) {
|
|
41
|
-
log.debug(`cross-encoder: transformers import failed: ${
|
|
43
|
+
log.debug(`cross-encoder: transformers import failed: ${errorMessage(err)}`);
|
|
42
44
|
return null;
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
let pipelineLoading = null;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
* that the model is downloadable from Hugging Face CDN — in sandboxed
|
|
50
|
-
* environments the package may import but the model fetch may be blocked.
|
|
51
|
-
* The reranker silently falls back to identity ordering in that case.
|
|
52
|
-
*/
|
|
53
|
-
export async function isCrossEncoderAvailable() {
|
|
54
|
-
return (await loadTransformersModule()) !== null;
|
|
55
|
-
}
|
|
56
|
-
// NOT the text-classification pipeline: this model is a num_labels=1
|
|
57
|
-
// regression head, and that pipeline softmaxes a length-1 logit vector, which
|
|
58
|
-
// is identically 1.0 for every input. Read the logit, then squash it.
|
|
48
|
+
const outage = createOutageWarning('cross-encoder', 'falling back to identity ordering');
|
|
49
|
+
// NOT the text-classification pipeline: this is a num_labels=1 regression head and that pipeline softmaxes a length-1 logit vector (always 1.0).
|
|
50
|
+
// Read the logit, then squash it.
|
|
59
51
|
async function buildPipeline() {
|
|
60
52
|
try {
|
|
61
53
|
const mod = await loadTransformersModule();
|
|
@@ -81,7 +73,7 @@ async function buildPipeline() {
|
|
|
81
73
|
};
|
|
82
74
|
}
|
|
83
75
|
catch (err) {
|
|
84
|
-
log.debug(`cross-encoder: model load failed: ${
|
|
76
|
+
log.debug(`cross-encoder: model load failed: ${errorMessage(err)}`);
|
|
85
77
|
return null;
|
|
86
78
|
}
|
|
87
79
|
}
|
|
@@ -97,16 +89,12 @@ function loadPipeline() {
|
|
|
97
89
|
}
|
|
98
90
|
/** Track 2 reranker: MS-MARCO MiniLM cross-encoder, identity fallback if the model will not load. */
|
|
99
91
|
export const crossEncoderReranker = async (query, results, options) => {
|
|
100
|
-
const topK = options?.topK ??
|
|
92
|
+
const topK = options?.topK ?? DEFAULT_CROSS_ENCODER_TOP_K;
|
|
101
93
|
const head = results.slice(0, topK);
|
|
102
94
|
const pipe = await loadPipeline();
|
|
103
95
|
if (!pipe) {
|
|
104
|
-
//
|
|
105
|
-
|
|
106
|
-
if (!warnedOnFallback) {
|
|
107
|
-
warnedOnFallback = true;
|
|
108
|
-
log.warn('cross-encoder reranker unavailable (no Transformers.js backend, or model fetch blocked); falling back to identity ordering. Subsequent calls will not repeat this warning.');
|
|
109
|
-
}
|
|
96
|
+
// A silent identity fallback otherwise reads as a working reranker.
|
|
97
|
+
outage.failed('no Transformers.js backend, or model fetch blocked');
|
|
110
98
|
return head.map((r, i) => ({
|
|
111
99
|
...r,
|
|
112
100
|
rerankScore: r.score,
|
|
@@ -114,13 +102,15 @@ export const crossEncoderReranker = async (query, results, options) => {
|
|
|
114
102
|
postRerankRank: i + 1,
|
|
115
103
|
}));
|
|
116
104
|
}
|
|
105
|
+
outage.answered();
|
|
117
106
|
const scored = await Promise.all(head.map(async (r, i) => {
|
|
118
107
|
let ceScore;
|
|
119
108
|
try {
|
|
120
109
|
ceScore = await pipe(query, r.entry.content);
|
|
121
110
|
}
|
|
122
|
-
catch {
|
|
111
|
+
catch (err) {
|
|
123
112
|
// One bad inference must not sink the whole pass.
|
|
113
|
+
log.debug(`cross-encoder inference failed, keeping the base score: ${errorMessage(err)}`);
|
|
124
114
|
ceScore = r.score;
|
|
125
115
|
}
|
|
126
116
|
return {
|
|
@@ -132,7 +122,7 @@ export const crossEncoderReranker = async (query, results, options) => {
|
|
|
132
122
|
}));
|
|
133
123
|
// Plain stable sort on purpose: tied scores MUST fall back to the prior
|
|
134
124
|
// relevance order, never an arbitrary content order.
|
|
135
|
-
scored.sort((a, b) =>
|
|
125
|
+
scored.sort((a, b) => compareScoresDesc(a.rerankScore, b.rerankScore));
|
|
136
126
|
scored.forEach((r, i) => (r.postRerankRank = i + 1));
|
|
137
127
|
return scored;
|
|
138
128
|
};
|
package/dist/rerankers/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createClefReranker } from './clef.js';
|
|
2
2
|
import { crossEncoderReranker } from './cross-encoder.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { createJevReranker } from './jev.js';
|
|
4
|
+
import { createLlmReranker } from './llm.js';
|
|
5
|
+
// Each hosted reranker is built once here, so its outage warning lasts the process.
|
|
5
6
|
const REGISTRY = {
|
|
6
|
-
clef:
|
|
7
|
-
'clef-flash':
|
|
7
|
+
clef: createClefReranker('clef'),
|
|
8
|
+
'clef-flash': createClefReranker('clef-flash'),
|
|
8
9
|
'cross-encoder': crossEncoderReranker,
|
|
9
|
-
jev:
|
|
10
|
-
llm:
|
|
10
|
+
jev: createJevReranker(crossEncoderReranker),
|
|
11
|
+
llm: createLlmReranker(),
|
|
11
12
|
};
|
|
12
13
|
function isRegisteredRerankerName(name) {
|
|
13
14
|
return Object.hasOwn(REGISTRY, name);
|
package/dist/rerankers/jev.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RerankerFn, RerankResult } from './types.js';
|
|
2
|
-
import type { SearchResult } from '../search
|
|
2
|
+
import type { SearchResult } from '../core/search-types.js';
|
|
3
3
|
export declare const JEV_DEFAULT_TOP_K = 40;
|
|
4
4
|
/** The System One `state` and one `noul` question per candidate (`c1`..`cN`). */
|
|
5
5
|
export interface RelevanceRequest {
|
|
@@ -15,7 +15,4 @@ export declare function buildRelevanceRequest(query: string, head: readonly Sear
|
|
|
15
15
|
export declare function createJevReranker(localFallback: RerankerFn): RerankerFn;
|
|
16
16
|
/** Orders `head` by `scores[i]`, keeping any upstream pre-rerank rank. Shared with CLEF. */
|
|
17
17
|
export declare function rankByScores(head: readonly SearchResult[], scores: readonly number[]): RerankResult[];
|
|
18
|
-
/** Track 4 reranker: hosted TypeSafe Jev, opt-in and paid (TYPESAFE_API_KEY), one batched call per recall.
|
|
19
|
-
* Any failure warns once and delegates to the local cross-encoder. Scores are not bit-stable run to run. */
|
|
20
|
-
export declare const jevReranker: RerankerFn;
|
|
21
18
|
//# sourceMappingURL=jev.d.ts.map
|
package/dist/rerankers/jev.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { envJevModel, envJevTimeoutMs, envTypesafeApiKey } from '../env.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { envJevModel, envJevTimeoutMs, envTypesafeApiKey } from '../util/env.js';
|
|
2
|
+
import { redactSecretsStrict } from '../util/secret-detect.js';
|
|
3
|
+
import { createOutageWarning } from './outage-warning.js';
|
|
4
|
+
import { rerankerPost, RERANKER_MAX_REPLY_BYTES } from './remote.js';
|
|
5
|
+
import { readCappedJson } from '../util/capped-json.js';
|
|
6
|
+
import { isJsonNumber, isJsonObject } from '../util/json.js';
|
|
7
|
+
import { compareScoresDesc } from '../core/compare.js';
|
|
8
|
+
import { errorMessage } from '../util/log.js';
|
|
9
|
+
const REQUEST_ID_MAX_CHARS = 64;
|
|
5
10
|
const ENDPOINT = 'https://api.typesafe.ai/v1/systemone';
|
|
6
11
|
const DEFAULT_TIMEOUT_MS = 5_000;
|
|
7
12
|
const TRUNCATE_CHARS = 1200;
|
|
@@ -16,14 +21,16 @@ function truncate(s, n) {
|
|
|
16
21
|
// Number.isFinite rejects a string or null without coercing it, which the
|
|
17
22
|
// declared type cannot promise about a third-party payload.
|
|
18
23
|
function isProbability(v) {
|
|
19
|
-
return v
|
|
24
|
+
return isJsonNumber(v) && Number.isFinite(v) && v >= 0 && v <= 1;
|
|
20
25
|
}
|
|
21
26
|
// A half-scored list ranks worse than the order it would replace, so one bad
|
|
22
27
|
// answer voids the whole response.
|
|
23
|
-
function parseScores(
|
|
28
|
+
function parseScores(body, n) {
|
|
29
|
+
const answers = isJsonObject(body) ? body.answers : undefined;
|
|
24
30
|
const out = [];
|
|
25
31
|
for (let i = 1; i <= n; i++) {
|
|
26
|
-
const
|
|
32
|
+
const answer = isJsonObject(answers) ? answers[`c${i}`] : undefined;
|
|
33
|
+
const v = isJsonObject(answer) ? answer.noul : undefined;
|
|
27
34
|
if (!isProbability(v))
|
|
28
35
|
return null;
|
|
29
36
|
out.push(v);
|
|
@@ -50,45 +57,28 @@ async function requestScores(query, head) {
|
|
|
50
57
|
if (!key)
|
|
51
58
|
throw new Error('TYPESAFE_API_KEY not set');
|
|
52
59
|
const { state, questions } = buildRelevanceRequest(query, head);
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
});
|
|
67
|
-
if (!resp.ok) {
|
|
68
|
-
// A third-party header ends up on stderr, so keep printable ASCII only.
|
|
69
|
-
const requestId = resp.headers.get('x-request-id')?.replace(/[^\x20-\x7e]/g, '').slice(0, 64);
|
|
70
|
-
await resp.body?.cancel();
|
|
71
|
-
throw new Error(`HTTP ${resp.status}${requestId ? `, request ${requestId}` : ''}`);
|
|
72
|
-
}
|
|
73
|
-
const body = await resp.json();
|
|
74
|
-
const scores = parseScores(body.answers, head.length);
|
|
75
|
-
if (!scores)
|
|
76
|
-
throw new Error('incomplete or out-of-range answers');
|
|
77
|
-
return scores;
|
|
78
|
-
}
|
|
79
|
-
catch (err) {
|
|
80
|
-
if (err instanceof Error && err.name === 'AbortError') {
|
|
81
|
-
throw new Error(`no answer within ${timeoutMs} ms`);
|
|
82
|
-
}
|
|
83
|
-
throw err;
|
|
84
|
-
}
|
|
85
|
-
finally {
|
|
86
|
-
clearTimeout(timer);
|
|
60
|
+
const resp = await rerankerPost(ENDPOINT, {
|
|
61
|
+
headers: { 'content-type': 'application/json', authorization: `Bearer ${key}` },
|
|
62
|
+
body: JSON.stringify({
|
|
63
|
+
state,
|
|
64
|
+
model: envJevModel() ?? DEFAULT_MODEL,
|
|
65
|
+
questions,
|
|
66
|
+
}),
|
|
67
|
+
}, envJevTimeoutMs() ?? DEFAULT_TIMEOUT_MS);
|
|
68
|
+
if (!resp.ok) {
|
|
69
|
+
// A third-party header ends up on stderr, so keep printable ASCII only.
|
|
70
|
+
const requestId = resp.headers.get('x-request-id')?.replace(/[^\x20-\x7e]/g, '').slice(0, REQUEST_ID_MAX_CHARS);
|
|
71
|
+
await resp.body?.cancel();
|
|
72
|
+
throw new Error(`HTTP ${resp.status}${requestId ? `, request ${requestId}` : ''}`);
|
|
87
73
|
}
|
|
74
|
+
const scores = parseScores(await readCappedJson(resp, RERANKER_MAX_REPLY_BYTES), head.length);
|
|
75
|
+
if (!scores)
|
|
76
|
+
throw new Error('incomplete or out-of-range answers');
|
|
77
|
+
return scores;
|
|
88
78
|
}
|
|
89
79
|
/** Builds a Jev reranker around the reranker it degrades to. Exported so a test can pass a stand-in. */
|
|
90
80
|
export function createJevReranker(localFallback) {
|
|
91
|
-
|
|
81
|
+
const outage = createOutageWarning('jev', 'falling back to the local cross-encoder');
|
|
92
82
|
return async (query, results, options) => {
|
|
93
83
|
const head = results.slice(0, options?.topK ?? JEV_DEFAULT_TOP_K);
|
|
94
84
|
if (head.length === 0)
|
|
@@ -96,15 +86,12 @@ export function createJevReranker(localFallback) {
|
|
|
96
86
|
let scores;
|
|
97
87
|
try {
|
|
98
88
|
scores = await requestScores(query, head);
|
|
89
|
+
outage.answered();
|
|
99
90
|
}
|
|
100
91
|
catch (err) {
|
|
101
92
|
// A read path never throws, and never hands back the unranked order
|
|
102
|
-
// without saying so: warn
|
|
103
|
-
|
|
104
|
-
warned = true;
|
|
105
|
-
const reason = err instanceof Error ? err.message : 'unknown error';
|
|
106
|
-
log.warn(`jev reranker unavailable (${reason}); falling back to the local cross-encoder. Subsequent calls will not repeat this warning.`);
|
|
107
|
-
}
|
|
93
|
+
// without saying so: warn, then use the free local reranker.
|
|
94
|
+
outage.failed(errorMessage(err));
|
|
108
95
|
return localFallback(query, head, options);
|
|
109
96
|
}
|
|
110
97
|
return rankByScores(head, scores);
|
|
@@ -119,11 +106,8 @@ export function rankByScores(head, scores) {
|
|
|
119
106
|
postRerankRank: 0,
|
|
120
107
|
}));
|
|
121
108
|
// Stable sort: ties fall back to the prior relevance order.
|
|
122
|
-
scored.sort((a, b) =>
|
|
109
|
+
scored.sort((a, b) => compareScoresDesc(a.rerankScore, b.rerankScore));
|
|
123
110
|
scored.forEach((r, i) => (r.postRerankRank = i + 1));
|
|
124
111
|
return scored;
|
|
125
112
|
}
|
|
126
|
-
/** Track 4 reranker: hosted TypeSafe Jev, opt-in and paid (TYPESAFE_API_KEY), one batched call per recall.
|
|
127
|
-
* Any failure warns once and delegates to the local cross-encoder. Scores are not bit-stable run to run. */
|
|
128
|
-
export const jevReranker = createJevReranker(crossEncoderReranker);
|
|
129
113
|
//# sourceMappingURL=jev.js.map
|
package/dist/rerankers/llm.d.ts
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
import type { RerankerFn } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* OpenAI-compatible endpoint. Gated on HIPPO_LLM_RERANKER_URL to prevent
|
|
5
|
-
* accidental cost.
|
|
6
|
-
*
|
|
7
|
-
* Skeleton only; full characterisation is deferred.
|
|
8
|
-
*
|
|
9
|
-
* Timeout: defaults to 30s; overridable via HIPPO_LLM_RERANKER_TIMEOUT_MS.
|
|
10
|
-
* On timeout or any fetch failure, the reranker warns once per process and
|
|
11
|
-
* falls back to identity ordering; recall must not hang on a wedged endpoint.
|
|
12
|
-
*/
|
|
2
|
+
/** Track 3 reranker (skeleton): listwise LLM rerank on a customer-supplied OpenAI-compatible endpoint, gated on HIPPO_LLM_RERANKER_URL against accidental cost.
|
|
3
|
+
* Timeout is 30s for the whole call, retries included (HIPPO_LLM_RERANKER_TIMEOUT_MS); any failure falls back to identity ordering, so recall never hangs. */
|
|
13
4
|
export declare function createLlmReranker(): RerankerFn;
|
|
14
|
-
/** The instance the reranker registry serves; its warn-once flag lasts the process. */
|
|
15
|
-
export declare const llmReranker: RerankerFn;
|
|
16
5
|
//# sourceMappingURL=llm.d.ts.map
|
package/dist/rerankers/llm.js
CHANGED
|
@@ -1,37 +1,30 @@
|
|
|
1
|
-
import { envLlmRerankerKey, envLlmRerankerModel, envLlmRerankerTimeoutMs, envLlmRerankerUrl } from '../env.js';
|
|
2
|
-
import { redactSecretsStrict } from '../secret-detect.js';
|
|
3
|
-
import {
|
|
1
|
+
import { envLlmRerankerKey, envLlmRerankerModel, envLlmRerankerTimeoutMs, envLlmRerankerUrl } from '../util/env.js';
|
|
2
|
+
import { redactSecretsStrict } from '../util/secret-detect.js';
|
|
3
|
+
import { createOutageWarning } from './outage-warning.js';
|
|
4
|
+
import { rerankerPost, RERANKER_MAX_REPLY_BYTES } from './remote.js';
|
|
5
|
+
import { readCappedJson } from '../util/capped-json.js';
|
|
6
|
+
import { isJsonObject, isJsonString } from '../util/json.js';
|
|
7
|
+
import { errorMessage } from '../util/log.js';
|
|
8
|
+
const DEFAULT_LLM_RERANK_TOP_K = 20;
|
|
4
9
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
* OpenAI-compatible endpoint. Gated on HIPPO_LLM_RERANKER_URL to prevent
|
|
8
|
-
* accidental cost.
|
|
9
|
-
*
|
|
10
|
-
* Skeleton only; full characterisation is deferred.
|
|
11
|
-
*
|
|
12
|
-
* Timeout: defaults to 30s; overridable via HIPPO_LLM_RERANKER_TIMEOUT_MS.
|
|
13
|
-
* On timeout or any fetch failure, the reranker warns once per process and
|
|
14
|
-
* falls back to identity ordering; recall must not hang on a wedged endpoint.
|
|
15
|
-
*/
|
|
10
|
+
/** Track 3 reranker (skeleton): listwise LLM rerank on a customer-supplied OpenAI-compatible endpoint, gated on HIPPO_LLM_RERANKER_URL against accidental cost.
|
|
11
|
+
* Timeout is 30s for the whole call, retries included (HIPPO_LLM_RERANKER_TIMEOUT_MS); any failure falls back to identity ordering, so recall never hangs. */
|
|
16
12
|
export function createLlmReranker() {
|
|
17
|
-
|
|
13
|
+
const outage = createOutageWarning('llm', 'keeping the input order');
|
|
18
14
|
return async (query, results, options) => {
|
|
19
15
|
const url = envLlmRerankerUrl();
|
|
20
16
|
if (!url) {
|
|
21
17
|
throw new Error('HIPPO_LLM_RERANKER_URL not set; refusing to run LLM reranker.');
|
|
22
18
|
}
|
|
23
|
-
const head = results.slice(0, options?.topK ??
|
|
19
|
+
const head = results.slice(0, options?.topK ?? DEFAULT_LLM_RERANK_TOP_K);
|
|
24
20
|
let permutation = null;
|
|
25
21
|
try {
|
|
26
22
|
permutation = await requestPermutation(url, query, head);
|
|
23
|
+
outage.answered();
|
|
27
24
|
}
|
|
28
25
|
catch (err) {
|
|
29
26
|
// A read path never throws, and never hands back the unranked order without saying so.
|
|
30
|
-
|
|
31
|
-
warned = true;
|
|
32
|
-
const reason = err instanceof Error ? err.message : 'unknown error';
|
|
33
|
-
log.warn(`llm reranker unavailable (${reason}); keeping the input order. Subsequent calls will not repeat this warning.`);
|
|
34
|
-
}
|
|
27
|
+
outage.failed(errorMessage(err));
|
|
35
28
|
}
|
|
36
29
|
const ordered = permutation ? permutation.map((idx) => head[idx]) : head;
|
|
37
30
|
return ordered.map((r, i) => ({
|
|
@@ -42,8 +35,14 @@ export function createLlmReranker() {
|
|
|
42
35
|
}));
|
|
43
36
|
};
|
|
44
37
|
}
|
|
45
|
-
/** The
|
|
46
|
-
|
|
38
|
+
/** The first choice's message text, or '' when the reply has none. */
|
|
39
|
+
function replyText(body) {
|
|
40
|
+
const choices = isJsonObject(body) ? body.choices : undefined;
|
|
41
|
+
const choice = Array.isArray(choices) ? choices[0] : undefined;
|
|
42
|
+
const message = isJsonObject(choice) ? choice.message : undefined;
|
|
43
|
+
const content = isJsonObject(message) ? message.content : undefined;
|
|
44
|
+
return isJsonString(content) ? content : '';
|
|
45
|
+
}
|
|
47
46
|
/** One chat-completions call; rejects with the reason when the reply holds no usable permutation. */
|
|
48
47
|
async function requestPermutation(url, query, head) {
|
|
49
48
|
const key = envLlmRerankerKey();
|
|
@@ -53,48 +52,32 @@ async function requestPermutation(url, query, head) {
|
|
|
53
52
|
...head.map((r, i) => `[${i}] ${redactSecretsStrict(r.entry.content)}`),
|
|
54
53
|
`Output format: [<int>, <int>, ...] with all ${head.length} indices.`,
|
|
55
54
|
].join('\n');
|
|
56
|
-
const timeoutMs = envLlmRerankerTimeoutMs() ?? DEFAULT_TIMEOUT_MS;
|
|
57
|
-
const controller = new AbortController();
|
|
58
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
59
55
|
const headers = {
|
|
60
56
|
'content-type': 'application/json',
|
|
61
57
|
};
|
|
62
58
|
if (key) {
|
|
63
59
|
headers.authorization = `Bearer ${key}`;
|
|
64
60
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
});
|
|
76
|
-
if (!resp.ok) {
|
|
77
|
-
await resp.body?.cancel();
|
|
78
|
-
throw new Error(`HTTP ${resp.status}`);
|
|
79
|
-
}
|
|
80
|
-
const j = await resp.json();
|
|
81
|
-
const txt = j.choices?.[0]?.message?.content ?? '';
|
|
82
|
-
const m = txt.match(/\[\s*(\d+(?:\s*,\s*\d+)*)\s*\]/);
|
|
83
|
-
const parsed = m ? m[1].split(',').map((s) => parseInt(s.trim(), 10)) : [];
|
|
84
|
-
const isPermutation = parsed.length === head.length &&
|
|
85
|
-
parsed.every((n) => Number.isInteger(n) && n >= 0 && n < head.length) &&
|
|
86
|
-
new Set(parsed).size === head.length;
|
|
87
|
-
if (!isPermutation)
|
|
88
|
-
throw new Error('reply is not a permutation of the candidates');
|
|
89
|
-
return parsed;
|
|
90
|
-
}
|
|
91
|
-
catch (err) {
|
|
92
|
-
if (err instanceof Error && err.name === 'AbortError')
|
|
93
|
-
throw new Error(`no answer within ${timeoutMs} ms`);
|
|
94
|
-
throw err;
|
|
95
|
-
}
|
|
96
|
-
finally {
|
|
97
|
-
clearTimeout(timer);
|
|
61
|
+
const resp = await rerankerPost(`${url.replace(/\/$/, '')}/chat/completions`, {
|
|
62
|
+
headers: { ...headers },
|
|
63
|
+
body: JSON.stringify({
|
|
64
|
+
model: envLlmRerankerModel() ?? 'gpt-4o-mini',
|
|
65
|
+
messages: [{ role: 'user', content: prompt }],
|
|
66
|
+
temperature: 0,
|
|
67
|
+
}),
|
|
68
|
+
}, envLlmRerankerTimeoutMs() ?? DEFAULT_TIMEOUT_MS);
|
|
69
|
+
if (!resp.ok) {
|
|
70
|
+
await resp.body?.cancel();
|
|
71
|
+
throw new Error(`HTTP ${resp.status}`);
|
|
98
72
|
}
|
|
73
|
+
const txt = replyText(await readCappedJson(resp, RERANKER_MAX_REPLY_BYTES));
|
|
74
|
+
const m = txt.match(/\[\s*(\d+(?:\s*,\s*\d+)*)\s*\]/);
|
|
75
|
+
const parsed = m ? m[1].split(',').map((s) => parseInt(s.trim(), 10)) : [];
|
|
76
|
+
const isPermutation = parsed.length === head.length &&
|
|
77
|
+
parsed.every((n) => Number.isInteger(n) && n >= 0 && n < head.length) &&
|
|
78
|
+
new Set(parsed).size === head.length;
|
|
79
|
+
if (!isPermutation)
|
|
80
|
+
throw new Error('reply is not a permutation of the candidates');
|
|
81
|
+
return parsed;
|
|
99
82
|
}
|
|
100
83
|
//# sourceMappingURL=llm.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface OutageWarning {
|
|
2
|
+
failed(reason: string): void;
|
|
3
|
+
answered(): void;
|
|
4
|
+
}
|
|
5
|
+
/** Warns when `name` starts failing, at most every five minutes while it keeps failing,
|
|
6
|
+
* and once when it answers again. `fallback` says what recall does meanwhile. */
|
|
7
|
+
export declare function createOutageWarning(name: string, fallback: string): OutageWarning;
|
|
8
|
+
//# sourceMappingURL=outage-warning.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// One way for a reranker to report that it stopped working, without a line per recall.
|
|
2
|
+
import { log } from '../util/log.js';
|
|
3
|
+
const REPEAT_MS = 5 * 60_000;
|
|
4
|
+
/** Warns when `name` starts failing, at most every five minutes while it keeps failing,
|
|
5
|
+
* and once when it answers again. `fallback` says what recall does meanwhile. */
|
|
6
|
+
export function createOutageWarning(name, fallback) {
|
|
7
|
+
let failures = 0;
|
|
8
|
+
let unreported = 0;
|
|
9
|
+
let warnedAt = 0;
|
|
10
|
+
return {
|
|
11
|
+
failed(reason) {
|
|
12
|
+
failures++;
|
|
13
|
+
if (failures > 1 && Date.now() - warnedAt < REPEAT_MS) {
|
|
14
|
+
unreported++;
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const skipped = unreported > 0 ? ` ${unreported} more calls failed since the last warning.` : '';
|
|
18
|
+
log.warn(`${name} reranker unavailable (${reason}); ${fallback}.${skipped} While it fails this repeats at most every ${REPEAT_MS / 60_000} minutes.`);
|
|
19
|
+
warnedAt = Date.now();
|
|
20
|
+
unreported = 0;
|
|
21
|
+
},
|
|
22
|
+
answered() {
|
|
23
|
+
if (failures === 0)
|
|
24
|
+
return;
|
|
25
|
+
// At warn so it shows at the default level, next to the outage line it closes.
|
|
26
|
+
log.warn(`${name} reranker is answering again after ${failures} failed ${failures === 1 ? 'call' : 'calls'}.`);
|
|
27
|
+
failures = 0;
|
|
28
|
+
unreported = 0;
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=outage-warning.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const RERANKER_MAX_REPLY_BYTES: number;
|
|
2
|
+
/** POST a scoring request. A dropped connection, 429 or 5xx is retried, since scoring changes nothing on the far side. */
|
|
3
|
+
export declare function rerankerPost(url: string, init: RequestInit, budgetMs: number): Promise<Response>;
|
|
4
|
+
//# sourceMappingURL=remote.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// The one bounded, retried POST every remote reranker sends.
|
|
2
|
+
import { fetchWithRetry } from '../util/http-retry.js';
|
|
3
|
+
// A Retry-After longer than this would outlast most budgets, so the answer is handed back and the reranker falls back.
|
|
4
|
+
const RETRY_WAIT_CAP_MS = 2_000;
|
|
5
|
+
// Every reranker reads its reply through this cap; the largest honest reply is a few KB, and 1 MiB leaves room for a verbose envelope.
|
|
6
|
+
export const RERANKER_MAX_REPLY_BYTES = 1024 * 1024;
|
|
7
|
+
/** POST a scoring request. A dropped connection, 429 or 5xx is retried, since scoring changes nothing on the far side. */
|
|
8
|
+
export async function rerankerPost(url, init, budgetMs) {
|
|
9
|
+
// The budget bounds the whole call, retries included, so recall never waits past the configured timeout.
|
|
10
|
+
const budget = AbortSignal.timeout(budgetMs);
|
|
11
|
+
try {
|
|
12
|
+
return await fetchWithRetry(url, { ...init, method: 'POST', signal: budget }, {
|
|
13
|
+
timeoutMs: budgetMs,
|
|
14
|
+
retryTransport: true,
|
|
15
|
+
maxDelayMs: RETRY_WAIT_CAP_MS,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
if (err instanceof Error && (err.name === 'TimeoutError' || err.name === 'AbortError')) {
|
|
20
|
+
throw new Error(`no answer within ${budgetMs} ms`, { cause: err });
|
|
21
|
+
}
|
|
22
|
+
throw err;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=remote.js.map
|
|
@@ -1,18 +1,6 @@
|
|
|
1
|
-
import type { SearchResult } from '../search
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* by hybridSearch's BM25 + cosine + MMR pipeline. Rerankers run AFTER MMR
|
|
5
|
-
* de-duplication and BEFORE token-budget filtering, so the reranker sees
|
|
6
|
-
* the full diversity-balanced candidate pool but does not see candidates
|
|
7
|
-
* already filtered out by score-zero or supersession.
|
|
8
|
-
*
|
|
9
|
-
* Rerankers MUST be deterministic for a given (query, results) input
|
|
10
|
-
* unless explicitly documented as stochastic (the LLM track, and the
|
|
11
|
-
* hosted jev reranker, whose scores move slightly run to run).
|
|
12
|
-
* Determinism is required for paired A/B and for the workload-validity gate.
|
|
13
|
-
*
|
|
14
|
-
* @returns Reordered (and optionally rescaled) results.
|
|
15
|
-
*/
|
|
1
|
+
import type { SearchResult } from '../core/search-types.js';
|
|
2
|
+
/** Reorders hybridSearch's candidates AFTER MMR de-duplication and BEFORE token-budget filtering, so it sees the full diverse pool.
|
|
3
|
+
* MUST be deterministic for a given (query, results) unless documented stochastic (LLM track, hosted jev): paired A/B and the validity gate need it. */
|
|
16
4
|
export type RerankerFn = (query: string, results: SearchResult[], options?: RerankerOptions) => Promise<RerankResult[]>;
|
|
17
5
|
/** JSON-serializable value. Per-track reranker config is opaque to the seam
|
|
18
6
|
* but must still be a concrete, serializable shape rather than `unknown`. */
|
package/dist/search/as-of.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { MemoryEntry } from '../memory.js';
|
|
2
|
-
import { type ResultCost, type SearchResult } from '
|
|
1
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
2
|
+
import { type ResultCost, type SearchResult } from '../core/search-types.js';
|
|
3
3
|
export interface SearchOptions {
|
|
4
4
|
budget?: number;
|
|
5
5
|
now?: Date;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { estimateTokens } from '../token-
|
|
2
|
-
import { tokenize } from '../tokenize.js';
|
|
3
|
-
import { evalNow } from '../ablation.js';
|
|
4
|
-
import { extractPathTags } from '
|
|
5
|
-
import { detectScope } from '../scope.js';
|
|
6
|
-
import { compareScoredResults } from '../compare.js';
|
|
1
|
+
import { estimateTokens } from '../util/token-text.js';
|
|
2
|
+
import { tokenize } from '../util/tokenize.js';
|
|
3
|
+
import { evalNow } from '../core/ablation.js';
|
|
4
|
+
import { extractPathTags } from './path-context.js';
|
|
5
|
+
import { detectScope } from '../sharing/scope.js';
|
|
6
|
+
import { compareScoredResults } from '../core/compare.js';
|
|
7
7
|
import { bm25Score, buildCorpus, entryText } from './bm25.js';
|
|
8
8
|
import { currentEntries } from './as-of.js';
|
|
9
9
|
import { applyRankBoosts, strengthRecencyMultipliers, NO_SUMMARY_SCORING } from './boosts.js';
|
|
10
10
|
import { temporalContext } from './temporal.js';
|
|
11
11
|
import { dedupeExtracted, fitBudget, withDagChildren } from './finalize.js';
|
|
12
|
-
import { DEFAULT_RECALL_BUDGET } from '
|
|
12
|
+
import { DEFAULT_RECALL_BUDGET } from '../core/search-types.js';
|
|
13
13
|
/** Synchronous BM25 search: relevance * strength * recency and the rank boosts, without embeddings or the outcome nudge. */
|
|
14
14
|
export function search(query, entries, options = {}) {
|
|
15
15
|
const now = options.now ?? evalNow(); // honors HIPPO_FAKE_NOW (eval-only; see ablation.ts)
|
package/dist/search/bm25.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MemoryEntry } from '../memory.js';
|
|
1
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
2
2
|
/** Tokenized BM25 corpus; build it once with `buildCorpus` and reuse it across queries on the same entry set. */
|
|
3
3
|
export interface BM25Corpus {
|
|
4
4
|
docs: string[][];
|
package/dist/search/bm25.js
CHANGED
package/dist/search/boosts.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type MemoryEntry } from '../memory.js';
|
|
1
|
+
import { type MemoryEntry } from '../core/memory.js';
|
|
2
2
|
import { type TemporalDirection, type TemporalRange } from './temporal.js';
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const STRENGTH_RANK_FLOOR = 0.5;
|
|
4
|
+
export declare const STRENGTH_RANK_SPAN = 0.5;
|
|
4
5
|
export declare function churnStaleFactor(entry: MemoryEntry): number;
|
|
5
|
-
export declare function recencyBoost(entry: MemoryEntry, now: Date): number;
|
|
6
6
|
/** Retrieval-time outcome nudge in [0.85, 1.15]; the bm25-outcome eval baseline ranks with it too. */
|
|
7
7
|
export declare function outcomeMultiplier(entry: MemoryEntry): number;
|
|
8
8
|
/** A DAG summary is a topic summary (level 2) or an entity profile (level 3); both take the same deboost. */
|
|
@@ -27,6 +27,8 @@ export declare function strengthRecencyMultipliers(entry: MemoryEntry, now: Date
|
|
|
27
27
|
strength: number;
|
|
28
28
|
recency: number;
|
|
29
29
|
};
|
|
30
|
+
/** The rank multiplier for a scopeMatch signal: match, mismatch or neutral. */
|
|
31
|
+
export declare function scopeBoostFor(signal: -1 | 0 | 1): number;
|
|
30
32
|
export interface BoostContext {
|
|
31
33
|
now: Date;
|
|
32
34
|
pathTags: string[];
|