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,16 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* - Cost: price provider usage over four buckets (uncached input, cache
|
|
5
|
-
* write, cache read, output). Raw token counts overstate savings when most
|
|
6
|
-
* input is already cache reads, so every dollar claim goes through here.
|
|
7
|
-
* - Uncertainty: paired bootstrap over tasks, cluster bootstrap (tasks that
|
|
8
|
-
* share a repository are not independent), and a paired ratio bootstrap for
|
|
9
|
-
* dollars per resolved task.
|
|
10
|
-
*
|
|
11
|
-
* Deterministic: every resampling function takes a seed, so a published
|
|
12
|
-
* result can be reproduced exactly.
|
|
13
|
-
*/
|
|
1
|
+
/** Statistics and cost accounting for the token-efficiency evals: cost is priced over four buckets (uncached input, cache write, cache read, output).
|
|
2
|
+
* Uncertainty uses paired, cluster (same-repository tasks are not independent) and paired-ratio bootstraps; every resampler takes a seed. */
|
|
14
3
|
/** Token usage for one model call or one whole task, split by how it is billed. */
|
|
15
4
|
export interface Usage {
|
|
16
5
|
/** Input tokens billed at the base input price (not read from or written to a cache). */
|
|
@@ -22,11 +11,7 @@ export interface Usage {
|
|
|
22
11
|
/** Output tokens, including any reasoning tokens the provider bills as output. */
|
|
23
12
|
outputTokens: number;
|
|
24
13
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Prices in dollars per million tokens. Take them from the provider's
|
|
27
|
-
* current price page for the exact model; this module has no built-in
|
|
28
|
-
* prices because they change.
|
|
29
|
-
*/
|
|
14
|
+
/** Prices in dollars per million tokens, taken from the provider's current price page for the exact model; this module has no built-in prices. */
|
|
30
15
|
export interface Prices {
|
|
31
16
|
inputPerMTok: number;
|
|
32
17
|
cacheWritePerMTok: number;
|
|
@@ -37,12 +22,8 @@ export interface Prices {
|
|
|
37
22
|
export declare function addUsage(...usages: Usage[]): Usage;
|
|
38
23
|
/** Dollar cost of `usage` at `prices`. */
|
|
39
24
|
export declare function priceUsage(usage: Usage, prices: Prices): number;
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
* cost in "uncached-equivalent tokens" when no dollar prices are given.
|
|
43
|
-
* Defaults follow Anthropic's published ratios (5-minute cache write 1.25x,
|
|
44
|
-
* cache read 0.1x); pass the ratios for another provider when needed.
|
|
45
|
-
*/
|
|
25
|
+
/** Relative cache-bucket prices against the base input price, for cost in "uncached-equivalent tokens" when no dollar prices are given.
|
|
26
|
+
* Defaults follow Anthropic's ratios (5-minute cache write 1.25x, cache read 0.1x); pass another provider's ratios when needed. */
|
|
46
27
|
export interface CacheRatios {
|
|
47
28
|
write: number;
|
|
48
29
|
read: number;
|
|
@@ -51,10 +32,8 @@ export interface CacheRatios {
|
|
|
51
32
|
export declare const DEFAULT_CACHE_RATIOS: Readonly<CacheRatios>;
|
|
52
33
|
/** Input cost of `usage` in uncached-equivalent tokens (output excluded). */
|
|
53
34
|
export declare function uncachedEquivalentInput(usage: Usage, ratios?: CacheRatios): number;
|
|
54
|
-
/**
|
|
55
|
-
*
|
|
56
|
-
* same stream, on every platform.
|
|
57
|
-
*/
|
|
35
|
+
/** Mulberry32: a small seeded PRNG returning floats in [0, 1). Same seed,
|
|
36
|
+
* same stream, on every platform. */
|
|
58
37
|
export declare function seededRandom(seed: number): () => number;
|
|
59
38
|
/** A point estimate with a percentile bootstrap confidence interval. */
|
|
60
39
|
export interface Estimate {
|
|
@@ -73,17 +52,9 @@ export interface BootstrapOpts {
|
|
|
73
52
|
/** PRNG seed. Default 1. */
|
|
74
53
|
seed?: number;
|
|
75
54
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Paired bootstrap for the mean of per-task differences (treatment minus
|
|
78
|
-
* control on the same task). An interval that excludes zero is the bar for
|
|
79
|
-
* calling a difference real.
|
|
80
|
-
*/
|
|
55
|
+
/** Paired bootstrap for the mean of per-task differences (treatment minus control, same task); an interval excluding zero is the bar for a real difference. */
|
|
81
56
|
export declare function pairedBootstrap(diffs: number[], opts?: BootstrapOpts): Estimate;
|
|
82
|
-
/**
|
|
83
|
-
* Cluster bootstrap for the mean of per-task differences: resamples whole
|
|
84
|
-
* clusters (for example all tasks from one repository), because tasks in a
|
|
85
|
-
* cluster share causes and are not independent draws.
|
|
86
|
-
*/
|
|
57
|
+
/** Cluster bootstrap for the mean of per-task differences: resamples whole clusters (e.g. one repository), because tasks in a cluster are not independent. */
|
|
87
58
|
export declare function clusteredPairedBootstrap(diffsByCluster: ReadonlyMap<string, number[]>, opts?: BootstrapOpts): Estimate;
|
|
88
59
|
/** One task's outcome in one arm, for {@link costPerResolvedDelta}. */
|
|
89
60
|
export interface ArmOutcome {
|
|
@@ -101,23 +72,14 @@ export interface CostPerResolvedDelta {
|
|
|
101
72
|
/** (treatment minus control) / control, with its interval. Negative is a saving. */
|
|
102
73
|
relative: Estimate;
|
|
103
74
|
}
|
|
104
|
-
/**
|
|
105
|
-
*
|
|
106
|
-
* bootstrap over tasks (a task is resampled with both of its arm outcomes).
|
|
107
|
-
* `control[i]` and `treatment[i]` must be the same task. Resamples in which
|
|
108
|
-
* an arm resolves nothing are dropped; `iterations` reports how many were
|
|
109
|
-
* kept.
|
|
110
|
-
*/
|
|
75
|
+
/** Cost per resolved task in two arms on the same tasks, with a paired bootstrap (`control[i]` and `treatment[i]` must be the same task).
|
|
76
|
+
* Resamples in which an arm resolves nothing are dropped; `iterations` reports how many were kept. */
|
|
111
77
|
export declare function costPerResolvedDelta(control: ArmOutcome[], treatment: ArmOutcome[], opts?: BootstrapOpts): CostPerResolvedDelta;
|
|
112
|
-
/**
|
|
113
|
-
*
|
|
114
|
-
* NaN when no task has k runs (not measured, which is not the same as 0).
|
|
115
|
-
*/
|
|
78
|
+
/** pass@k: share of tasks with at least one success in their first k runs.
|
|
79
|
+
* NaN when no task has k runs (not measured, which is not the same as 0). */
|
|
116
80
|
export declare function passAtK(runsByTask: boolean[][], k: number): number;
|
|
117
|
-
/**
|
|
118
|
-
*
|
|
119
|
-
* NaN when no task has k runs.
|
|
120
|
-
*/
|
|
81
|
+
/** pass^k: share of tasks whose first k runs all succeed (consistency).
|
|
82
|
+
* NaN when no task has k runs. */
|
|
121
83
|
export declare function passHatK(runsByTask: boolean[][], k: number): number;
|
|
122
84
|
/** All units of one family (tasks by seeds), resampled as one block so seeds stay together. */
|
|
123
85
|
export type Family<T> = readonly T[];
|
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* input is already cache reads, so every dollar claim goes through here.
|
|
7
|
-
* - Uncertainty: paired bootstrap over tasks, cluster bootstrap (tasks that
|
|
8
|
-
* share a repository are not independent), and a paired ratio bootstrap for
|
|
9
|
-
* dollars per resolved task.
|
|
10
|
-
*
|
|
11
|
-
* Deterministic: every resampling function takes a seed, so a published
|
|
12
|
-
* result can be reproduced exactly.
|
|
13
|
-
*/
|
|
1
|
+
/** Statistics and cost accounting for the token-efficiency evals: cost is priced over four buckets (uncached input, cache write, cache read, output).
|
|
2
|
+
* Uncertainty uses paired, cluster (same-repository tasks are not independent) and paired-ratio bootstraps; every resampler takes a seed. */
|
|
3
|
+
const DEFAULT_ITERATIONS = 5000;
|
|
4
|
+
const DEFAULT_TWO_LEVEL_ITERATIONS = 10_000;
|
|
5
|
+
const DEFAULT_ALPHA = 0.05;
|
|
14
6
|
/** Sum several usages bucket by bucket. */
|
|
15
7
|
export function addUsage(...usages) {
|
|
16
8
|
const total = { inputTokens: 0, cacheWriteTokens: 0, cacheReadTokens: 0, outputTokens: 0 };
|
|
@@ -35,10 +27,8 @@ export const DEFAULT_CACHE_RATIOS = { write: 1.25, read: 0.1 };
|
|
|
35
27
|
export function uncachedEquivalentInput(usage, ratios = DEFAULT_CACHE_RATIOS) {
|
|
36
28
|
return usage.inputTokens + usage.cacheWriteTokens * ratios.write + usage.cacheReadTokens * ratios.read;
|
|
37
29
|
}
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
40
|
-
* same stream, on every platform.
|
|
41
|
-
*/
|
|
30
|
+
/** Mulberry32: a small seeded PRNG returning floats in [0, 1). Same seed,
|
|
31
|
+
* same stream, on every platform. */
|
|
42
32
|
export function seededRandom(seed) {
|
|
43
33
|
let a = seed >>> 0;
|
|
44
34
|
return () => {
|
|
@@ -58,14 +48,10 @@ function percentileInterval(samples, alpha) {
|
|
|
58
48
|
function mean(xs) {
|
|
59
49
|
return xs.length === 0 ? 0 : xs.reduce((s, x) => s + x, 0) / xs.length;
|
|
60
50
|
}
|
|
61
|
-
/**
|
|
62
|
-
* Paired bootstrap for the mean of per-task differences (treatment minus
|
|
63
|
-
* control on the same task). An interval that excludes zero is the bar for
|
|
64
|
-
* calling a difference real.
|
|
65
|
-
*/
|
|
51
|
+
/** Paired bootstrap for the mean of per-task differences (treatment minus control, same task); an interval excluding zero is the bar for a real difference. */
|
|
66
52
|
export function pairedBootstrap(diffs, opts = {}) {
|
|
67
|
-
const iterations = opts.iterations ??
|
|
68
|
-
const alpha = opts.alpha ??
|
|
53
|
+
const iterations = opts.iterations ?? DEFAULT_ITERATIONS;
|
|
54
|
+
const alpha = opts.alpha ?? DEFAULT_ALPHA;
|
|
69
55
|
if (diffs.length === 0)
|
|
70
56
|
return { estimate: 0, low: 0, high: 0, iterations: 0 };
|
|
71
57
|
const rand = seededRandom(opts.seed ?? 1);
|
|
@@ -79,14 +65,10 @@ export function pairedBootstrap(diffs, opts = {}) {
|
|
|
79
65
|
}
|
|
80
66
|
return { estimate: mean(diffs), ...percentileInterval(samples, alpha), iterations };
|
|
81
67
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Cluster bootstrap for the mean of per-task differences: resamples whole
|
|
84
|
-
* clusters (for example all tasks from one repository), because tasks in a
|
|
85
|
-
* cluster share causes and are not independent draws.
|
|
86
|
-
*/
|
|
68
|
+
/** Cluster bootstrap for the mean of per-task differences: resamples whole clusters (e.g. one repository), because tasks in a cluster are not independent. */
|
|
87
69
|
export function clusteredPairedBootstrap(diffsByCluster, opts = {}) {
|
|
88
|
-
const iterations = opts.iterations ??
|
|
89
|
-
const alpha = opts.alpha ??
|
|
70
|
+
const iterations = opts.iterations ?? DEFAULT_ITERATIONS;
|
|
71
|
+
const alpha = opts.alpha ?? DEFAULT_ALPHA;
|
|
90
72
|
const clusters = [...diffsByCluster.values()].filter((c) => c.length > 0);
|
|
91
73
|
const all = clusters.flat();
|
|
92
74
|
if (all.length === 0)
|
|
@@ -112,19 +94,14 @@ function costPerResolved(outcomes) {
|
|
|
112
94
|
const cost = outcomes.reduce((s, o) => s + o.cost, 0);
|
|
113
95
|
return resolved === 0 ? Number.POSITIVE_INFINITY : cost / resolved;
|
|
114
96
|
}
|
|
115
|
-
/**
|
|
116
|
-
*
|
|
117
|
-
* bootstrap over tasks (a task is resampled with both of its arm outcomes).
|
|
118
|
-
* `control[i]` and `treatment[i]` must be the same task. Resamples in which
|
|
119
|
-
* an arm resolves nothing are dropped; `iterations` reports how many were
|
|
120
|
-
* kept.
|
|
121
|
-
*/
|
|
97
|
+
/** Cost per resolved task in two arms on the same tasks, with a paired bootstrap (`control[i]` and `treatment[i]` must be the same task).
|
|
98
|
+
* Resamples in which an arm resolves nothing are dropped; `iterations` reports how many were kept. */
|
|
122
99
|
export function costPerResolvedDelta(control, treatment, opts = {}) {
|
|
123
100
|
if (control.length !== treatment.length) {
|
|
124
101
|
throw new Error('control and treatment must list the same tasks in the same order');
|
|
125
102
|
}
|
|
126
|
-
const iterations = opts.iterations ??
|
|
127
|
-
const alpha = opts.alpha ??
|
|
103
|
+
const iterations = opts.iterations ?? DEFAULT_ITERATIONS;
|
|
104
|
+
const alpha = opts.alpha ?? DEFAULT_ALPHA;
|
|
128
105
|
const c = costPerResolved(control);
|
|
129
106
|
const t = costPerResolved(treatment);
|
|
130
107
|
const rand = seededRandom(opts.seed ?? 1);
|
|
@@ -163,20 +140,16 @@ export function costPerResolvedDelta(control, treatment, opts = {}) {
|
|
|
163
140
|
},
|
|
164
141
|
};
|
|
165
142
|
}
|
|
166
|
-
/**
|
|
167
|
-
*
|
|
168
|
-
* NaN when no task has k runs (not measured, which is not the same as 0).
|
|
169
|
-
*/
|
|
143
|
+
/** pass@k: share of tasks with at least one success in their first k runs.
|
|
144
|
+
* NaN when no task has k runs (not measured, which is not the same as 0). */
|
|
170
145
|
export function passAtK(runsByTask, k) {
|
|
171
146
|
const eligible = runsByTask.filter((r) => r.length >= k);
|
|
172
147
|
if (eligible.length === 0)
|
|
173
148
|
return Number.NaN;
|
|
174
149
|
return eligible.filter((r) => r.slice(0, k).some(Boolean)).length / eligible.length;
|
|
175
150
|
}
|
|
176
|
-
/**
|
|
177
|
-
*
|
|
178
|
-
* NaN when no task has k runs.
|
|
179
|
-
*/
|
|
151
|
+
/** pass^k: share of tasks whose first k runs all succeed (consistency).
|
|
152
|
+
* NaN when no task has k runs. */
|
|
180
153
|
export function passHatK(runsByTask, k) {
|
|
181
154
|
const eligible = runsByTask.filter((r) => r.length >= k);
|
|
182
155
|
if (eligible.length === 0)
|
|
@@ -213,7 +186,7 @@ function twoSidedP(samples, nullValue) {
|
|
|
213
186
|
/** Resamples repositories, then families inside each; only the repository draw carries a shared-store fault.
|
|
214
187
|
* The statistic never uses the PRNG, so a second call on one seed draws the same resamples. */
|
|
215
188
|
export function twoLevelBootstrap(repos, statistic, opts = {}) {
|
|
216
|
-
const requested = opts.iterations ??
|
|
189
|
+
const requested = opts.iterations ?? DEFAULT_TWO_LEVEL_ITERATIONS;
|
|
217
190
|
if (!Number.isInteger(requested) || requested <= 0) {
|
|
218
191
|
throw new RangeError(`iterations must be a positive integer, got ${requested}`);
|
|
219
192
|
}
|
|
@@ -233,7 +206,7 @@ export function twoLevelBootstrap(repos, statistic, opts = {}) {
|
|
|
233
206
|
return notANumber(nullValue, dropped);
|
|
234
207
|
const estimate = statistic(kept.flatMap((r) => r.flat()));
|
|
235
208
|
const p = kept.length < 2 ? Number.NaN : twoSidedP(samples, nullValue);
|
|
236
|
-
const interval = percentileInterval(samples, opts.alpha ??
|
|
209
|
+
const interval = percentileInterval(samples, opts.alpha ?? DEFAULT_ALPHA);
|
|
237
210
|
return { estimate, ...interval, p, iterations: samples.length, dropped, nullValue };
|
|
238
211
|
}
|
|
239
212
|
/** Holm step-down in input order; the family size is `ps.length`, as preregistered.
|
|
@@ -263,7 +236,7 @@ export function verdict(e, adjustedP, spec) {
|
|
|
263
236
|
return inconclusive;
|
|
264
237
|
const nullValue = e.nullValue;
|
|
265
238
|
const lowerIsHelpful = spec.helpful === 'lower';
|
|
266
|
-
if (adjustedP < (spec.alpha ??
|
|
239
|
+
if (adjustedP < (spec.alpha ?? DEFAULT_ALPHA)) {
|
|
267
240
|
const helpfulSide = lowerIsHelpful ? e.estimate < nullValue : e.estimate > nullValue;
|
|
268
241
|
const harmfulSide = lowerIsHelpful ? e.estimate > nullValue : e.estimate < nullValue;
|
|
269
242
|
if (harmfulSide)
|
|
@@ -1,17 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
* Creates a synthetic memory corpus with known ground truth, runs searches
|
|
5
|
-
* per feature category, and reports per-feature metrics with regression
|
|
6
|
-
* detection against a saved baseline.
|
|
7
|
-
*
|
|
8
|
-
* Design goals:
|
|
9
|
-
* - Zero API calls (no LLM judge, no embeddings)
|
|
10
|
-
* - Deterministic (fixed timestamps, content, IDs)
|
|
11
|
-
* - Fast (<60s for full suite)
|
|
12
|
-
* - Per-feature breakdown so you see exactly what a change helped/hurt
|
|
13
|
-
*/
|
|
14
|
-
import { type MemoryEntry } from './memory.js';
|
|
1
|
+
/** Self-contained feature eval suite: a synthetic corpus with known ground truth, per-feature metrics and regression detection against a saved baseline.
|
|
2
|
+
* Zero API calls (no LLM judge, no embeddings), deterministic (fixed timestamps, content, IDs) and fast. */
|
|
3
|
+
import { type MemoryEntry } from '../core/memory.js';
|
|
15
4
|
export type FeatureCategory = 'direct-recall' | 'extraction-preference' | 'dag-drilldown' | 'temporal' | 'noise-resistance' | 'multi-hop';
|
|
16
5
|
export interface FeatureTestCase {
|
|
17
6
|
id: string;
|
|
@@ -1,26 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* detection against a saved baseline.
|
|
7
|
-
*
|
|
8
|
-
* Design goals:
|
|
9
|
-
* - Zero API calls (no LLM judge, no embeddings)
|
|
10
|
-
* - Deterministic (fixed timestamps, content, IDs)
|
|
11
|
-
* - Fast (<60s for full suite)
|
|
12
|
-
* - Per-feature breakdown so you see exactly what a change helped/hurt
|
|
13
|
-
*/
|
|
14
|
-
import { createMemory, Layer } from './memory.js';
|
|
15
|
-
import { search } from './search/bm25-search.js';
|
|
16
|
-
import { multihopSearch } from './multihop.js';
|
|
1
|
+
/** Self-contained feature eval suite: a synthetic corpus with known ground truth, per-feature metrics and regression detection against a saved baseline.
|
|
2
|
+
* Zero API calls (no LLM judge, no embeddings), deterministic (fixed timestamps, content, IDs) and fast. */
|
|
3
|
+
import { createMemory, Layer } from '../core/memory.js';
|
|
4
|
+
import { search } from '../search/bm25-search.js';
|
|
5
|
+
import { multihopSearch } from '../search/multihop.js';
|
|
17
6
|
import { mrr, recallAtK, ndcgAtK } from './eval.js';
|
|
18
|
-
|
|
19
|
-
// Synthetic corpus — deterministic, no API calls
|
|
20
|
-
// ---------------------------------------------------------------------------
|
|
7
|
+
import { DAY_MS } from '../util/time.js';
|
|
21
8
|
const BASE_DATE = new Date('2026-01-15T10:00:00Z');
|
|
22
9
|
function dateOffset(days) {
|
|
23
|
-
const d = new Date(BASE_DATE.getTime() + days *
|
|
10
|
+
const d = new Date(BASE_DATE.getTime() + days * DAY_MS);
|
|
24
11
|
return d.toISOString();
|
|
25
12
|
}
|
|
26
13
|
function mem(id, content, opts = {}) {
|
|
@@ -39,8 +26,28 @@ function mem(id, content, opts = {}) {
|
|
|
39
26
|
}
|
|
40
27
|
/** Direct recall: basic keyword matching. */
|
|
41
28
|
function addDirectRecall(entries, cases) {
|
|
42
|
-
entries.push(mem('dr-1', 'The PostgreSQL database migration failed because the users table had a NOT NULL constraint on the email column', {
|
|
43
|
-
|
|
29
|
+
entries.push(mem('dr-1', 'The PostgreSQL database migration failed because the users table had a NOT NULL constraint on the email column', {
|
|
30
|
+
created: dateOffset(1), tags: ['topic:database']
|
|
31
|
+
}), mem('dr-2', 'React component rendering performance improved by 40% after memoizing the expensive computation in useMemo', {
|
|
32
|
+
created: dateOffset(2), tags: ['topic:frontend']
|
|
33
|
+
}), mem('dr-3', 'The API rate limiter should use a sliding window algorithm instead of fixed window to prevent burst traffic', {
|
|
34
|
+
created: dateOffset(3), tags: ['topic:api']
|
|
35
|
+
}), mem('dr-4', 'Docker container memory limits need to be set to 512MB for the worker service to prevent OOM kills', {
|
|
36
|
+
created: dateOffset(4), tags: ['topic:devops']
|
|
37
|
+
}), mem('dr-5', 'The JWT token expiration was set to 24 hours but should be reduced to 1 hour for security compliance', {
|
|
38
|
+
created: dateOffset(5), tags: ['topic:security']
|
|
39
|
+
}), mem('dr-6', 'Webpack bundle size grew to 2.3MB because lodash was imported as a whole instead of cherry-picking', {
|
|
40
|
+
created: dateOffset(6), tags: ['topic:frontend']
|
|
41
|
+
}), mem('dr-7', 'The Redis cache TTL for user sessions should match the JWT expiration to prevent stale sessions', {
|
|
42
|
+
created: dateOffset(7), tags: ['topic:caching']
|
|
43
|
+
}), mem('dr-8', 'GraphQL resolver for nested comments has N+1 query problem solved by DataLoader batching', { created: dateOffset(8), tags: ['topic:api'] }));
|
|
44
|
+
cases.push({
|
|
45
|
+
id: 'dr-q1', category: 'direct-recall', query: 'PostgreSQL migration NOT NULL constraint', expectedIds: ['dr-1'],
|
|
46
|
+
description: 'exact keyword match on DB migration'
|
|
47
|
+
}, {
|
|
48
|
+
id: 'dr-q2', category: 'direct-recall', query: 'React useMemo performance memoizing', expectedIds: ['dr-2'],
|
|
49
|
+
description: 'React performance optimization'
|
|
50
|
+
}, { id: 'dr-q3', category: 'direct-recall', query: 'sliding window rate limiter API', expectedIds: ['dr-3'], description: 'API rate limiting approach' }, { id: 'dr-q4', category: 'direct-recall', query: 'Docker OOM memory limits worker', expectedIds: ['dr-4'], description: 'Docker memory config' }, { id: 'dr-q5', category: 'direct-recall', query: 'JWT token expiration security', expectedIds: ['dr-5'], description: 'JWT security setting' }, { id: 'dr-q6', category: 'direct-recall', query: 'webpack bundle size lodash', expectedIds: ['dr-6'], description: 'bundle size issue' }, { id: 'dr-q7', category: 'direct-recall', query: 'Redis cache TTL session expiration', expectedIds: ['dr-7'], description: 'cache TTL config' }, { id: 'dr-q8', category: 'direct-recall', query: 'GraphQL N+1 DataLoader batching', expectedIds: ['dr-8'], description: 'GraphQL N+1 fix' });
|
|
44
51
|
}
|
|
45
52
|
/** Extraction preference: extracted facts should rank above raw source. */
|
|
46
53
|
function addExtractionPreference(entries, cases) {
|
|
@@ -60,7 +67,16 @@ function addExtractionPreference(entries, cases) {
|
|
|
60
67
|
created: dateOffset(12), layer: Layer.Semantic, tags: ['speaker:Carol', 'topic:auth', 'extracted'],
|
|
61
68
|
extracted_from: 'ep-src-3',
|
|
62
69
|
}));
|
|
63
|
-
cases.push({
|
|
70
|
+
cases.push({
|
|
71
|
+
id: 'ep-q1', category: 'extraction-preference', query: 'Kubernetes upgrade staging environment', expectedIds: ['ep-ext-1'],
|
|
72
|
+
description: 'extracted fact about K8s upgrade should rank above raw utterance'
|
|
73
|
+
}, {
|
|
74
|
+
id: 'ep-q2', category: 'extraction-preference', query: 'Datadog Grafana alerting migration', expectedIds: ['ep-ext-2'],
|
|
75
|
+
description: 'extracted fact about monitoring switch'
|
|
76
|
+
}, {
|
|
77
|
+
id: 'ep-q3', category: 'extraction-preference', query: 'OAuth2 PKCE login page redesign', expectedIds: ['ep-ext-3'],
|
|
78
|
+
description: 'extracted fact about auth work'
|
|
79
|
+
});
|
|
64
80
|
}
|
|
65
81
|
/** Dag drill-down: summary nodes should surface children. */
|
|
66
82
|
function addDagDrilldown(entries, cases) {
|
|
@@ -81,12 +97,30 @@ function addDagDrilldown(entries, cases) {
|
|
|
81
97
|
for (const child of [entries.find(e => e.id === 'dag-child-1'), entries.find(e => e.id === 'dag-child-2'), entries.find(e => e.id === 'dag-child-3')]) {
|
|
82
98
|
child.dag_parent_id = 'dag-summary-1';
|
|
83
99
|
}
|
|
84
|
-
cases.push({
|
|
100
|
+
cases.push({
|
|
101
|
+
id: 'dag-q1', category: 'dag-drilldown', query: 'API performance problems latency',
|
|
102
|
+
expectedIds: ['dag-child-1', 'dag-child-2', 'dag-child-3', 'dag-summary-1'], description: 'summary should drill down to all children'
|
|
103
|
+
}, {
|
|
104
|
+
id: 'dag-q2', category: 'dag-drilldown', query: 'endpoint response time degradation',
|
|
105
|
+
expectedIds: ['dag-child-1', 'dag-child-2', 'dag-summary-1'], description: 'query matching summary should surface relevant children'
|
|
106
|
+
});
|
|
85
107
|
}
|
|
86
108
|
/** Temporal: recency/oldest cues should affect ranking. */
|
|
87
109
|
function addTemporal(entries, cases) {
|
|
88
110
|
entries.push(mem('tmp-1', 'The team decided to use TypeScript for the new service', { created: dateOffset(-30), tags: ['topic:architecture'] }), mem('tmp-2', 'The team evaluated Rust as an alternative language for the service', { created: dateOffset(-20), tags: ['topic:architecture'] }), mem('tmp-3', 'The team added Go as a candidate language for the service rewrite', { created: dateOffset(-10), tags: ['topic:architecture'] }), mem('tmp-4', 'The team finalized the language choice as Go for the service rewrite', { created: dateOffset(-1), tags: ['topic:architecture'] }));
|
|
89
|
-
cases.push({
|
|
111
|
+
cases.push({
|
|
112
|
+
id: 'tmp-q1', category: 'temporal', query: 'what did the team recently decide about the service language', expectedIds: ['tmp-4'],
|
|
113
|
+
description: 'recent cue should boost newest entry'
|
|
114
|
+
}, {
|
|
115
|
+
id: 'tmp-q2', category: 'temporal', query: 'what was the first language choice for the service', expectedIds: ['tmp-1'],
|
|
116
|
+
description: 'oldest cue should boost earliest entry'
|
|
117
|
+
}, {
|
|
118
|
+
id: 'tmp-q3', category: 'temporal', query: 'latest update on the service rewrite language', expectedIds: ['tmp-4'],
|
|
119
|
+
description: 'latest should boost most recent'
|
|
120
|
+
}, {
|
|
121
|
+
id: 'tmp-q4', category: 'temporal', query: 'original architecture decision for the service', expectedIds: ['tmp-1'],
|
|
122
|
+
description: 'original should boost earliest'
|
|
123
|
+
});
|
|
90
124
|
}
|
|
91
125
|
/** Noise resistance: relevant memories found despite noise. */
|
|
92
126
|
function addNoiseResistance(entries, cases) {
|
|
@@ -116,7 +150,18 @@ function addNoiseResistance(entries, cases) {
|
|
|
116
150
|
}), mem('nr-2', 'The S3 bucket policy was misconfigured allowing public read access to customer data uploads', {
|
|
117
151
|
created: dateOffset(21), tags: ['topic:security', 'topic:s3'],
|
|
118
152
|
}));
|
|
119
|
-
cases.push({
|
|
153
|
+
cases.push({
|
|
154
|
+
id: 'nr-q1', category: 'noise-resistance', query: 'database connection pool exhausted max connections', expectedIds: ['nr-1'],
|
|
155
|
+
description: 'find DB issue despite 30 noise entries'
|
|
156
|
+
}, {
|
|
157
|
+
id: 'nr-q2', category: 'noise-resistance', query: 'S3 bucket public access security misconfiguration', expectedIds: ['nr-2'],
|
|
158
|
+
description: 'find S3 issue despite noise'
|
|
159
|
+
}, {
|
|
160
|
+
id: 'nr-q3', category: 'noise-resistance', query: 'PostgreSQL migration constraint', expectedIds: ['dr-1'],
|
|
161
|
+
description: 'find earlier DB entry despite noise'
|
|
162
|
+
}, {
|
|
163
|
+
id: 'nr-q4', category: 'noise-resistance', query: 'JWT token security expiration', expectedIds: ['dr-5'], description: 'find security entry despite noise'
|
|
164
|
+
});
|
|
120
165
|
}
|
|
121
166
|
/** Multi-hop: entity chaining across sessions. */
|
|
122
167
|
function addMultiHop(entries, cases) {
|
|
@@ -129,7 +174,13 @@ function addMultiHop(entries, cases) {
|
|
|
129
174
|
}), mem('mh-4', 'speaker:Carol reported that the billing dashboard shows incorrect revenue numbers because it reads from the payments_raw table instead of payments_reconciled.', {
|
|
130
175
|
created: dateOffset(28), tags: ['speaker:Carol', 'topic:billing'],
|
|
131
176
|
}));
|
|
132
|
-
cases.push({
|
|
177
|
+
cases.push({
|
|
178
|
+
id: 'mh-q1', category: 'multi-hop', query: 'Who fixed the Stripe webhook bug and what was the root cause?',
|
|
179
|
+
expectedIds: ['mh-1', 'mh-2', 'mh-3'], description: 'chain Alice -> Stripe -> Bob -> fix'
|
|
180
|
+
}, {
|
|
181
|
+
id: 'mh-q2', category: 'multi-hop', query: 'What are all the payment-related issues the team discussed?',
|
|
182
|
+
expectedIds: ['mh-1', 'mh-2', 'mh-3', 'mh-4'], description: 'find all payment topics across speakers'
|
|
183
|
+
});
|
|
133
184
|
}
|
|
134
185
|
export function buildSyntheticCorpus() {
|
|
135
186
|
const entries = [];
|
|
@@ -142,9 +193,25 @@ export function buildSyntheticCorpus() {
|
|
|
142
193
|
addMultiHop(entries, cases);
|
|
143
194
|
return { entries, cases };
|
|
144
195
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
196
|
+
/** Each category's mean scores, in the order the corpus first names the category. */
|
|
197
|
+
function featureAverages(cases, caseResults) {
|
|
198
|
+
const categories = [...new Set(cases.map(c => c.category))];
|
|
199
|
+
return categories.map(cat => {
|
|
200
|
+
const catCases = caseResults.filter(r => r.case.category === cat);
|
|
201
|
+
const n = catCases.length;
|
|
202
|
+
const avgMrr = catCases.reduce((s, r) => s + r.mrrVal, 0) / n;
|
|
203
|
+
const avgR5 = catCases.reduce((s, r) => s + r.r5, 0) / n;
|
|
204
|
+
const avgNdcg5 = catCases.reduce((s, r) => s + r.ndcg5, 0) / n;
|
|
205
|
+
return {
|
|
206
|
+
category: cat,
|
|
207
|
+
cases: n,
|
|
208
|
+
mrr: avgMrr,
|
|
209
|
+
recallAt5: avgR5,
|
|
210
|
+
ndcgAt5: avgNdcg5,
|
|
211
|
+
passed: true,
|
|
212
|
+
};
|
|
213
|
+
});
|
|
214
|
+
}
|
|
148
215
|
export async function runFeatureEval(version) {
|
|
149
216
|
const start = Date.now();
|
|
150
217
|
const { entries, cases } = buildSyntheticCorpus();
|
|
@@ -166,22 +233,7 @@ export async function runFeatureEval(version) {
|
|
|
166
233
|
ndcg5: ndcgAtK(returnedIds, c.expectedIds, 5),
|
|
167
234
|
});
|
|
168
235
|
}
|
|
169
|
-
const
|
|
170
|
-
const features = categories.map(cat => {
|
|
171
|
-
const catCases = caseResults.filter(r => r.case.category === cat);
|
|
172
|
-
const n = catCases.length;
|
|
173
|
-
const avgMrr = catCases.reduce((s, r) => s + r.mrrVal, 0) / n;
|
|
174
|
-
const avgR5 = catCases.reduce((s, r) => s + r.r5, 0) / n;
|
|
175
|
-
const avgNdcg5 = catCases.reduce((s, r) => s + r.ndcg5, 0) / n;
|
|
176
|
-
return {
|
|
177
|
-
category: cat,
|
|
178
|
-
cases: n,
|
|
179
|
-
mrr: avgMrr,
|
|
180
|
-
recallAt5: avgR5,
|
|
181
|
-
ndcgAt5: avgNdcg5,
|
|
182
|
-
passed: true,
|
|
183
|
-
};
|
|
184
|
-
});
|
|
236
|
+
const features = featureAverages(cases, caseResults);
|
|
185
237
|
const totalCases = caseResults.length;
|
|
186
238
|
const overallMrr = caseResults.reduce((s, r) => s + r.mrrVal, 0) / totalCases;
|
|
187
239
|
const overallR5 = caseResults.reduce((s, r) => s + r.r5, 0) / totalCases;
|
|
@@ -195,9 +247,6 @@ export async function runFeatureEval(version) {
|
|
|
195
247
|
durationMs: Date.now() - start,
|
|
196
248
|
};
|
|
197
249
|
}
|
|
198
|
-
// ---------------------------------------------------------------------------
|
|
199
|
-
// Regression detection
|
|
200
|
-
// ---------------------------------------------------------------------------
|
|
201
250
|
const REGRESSION_THRESHOLD = 0.05;
|
|
202
251
|
export function detectRegressions(baseline, current) {
|
|
203
252
|
const regressions = [];
|
|
@@ -225,11 +274,7 @@ export function detectRegressions(baseline, current) {
|
|
|
225
274
|
};
|
|
226
275
|
}
|
|
227
276
|
export function resultToBaseline(result) {
|
|
228
|
-
// SAFETY: every FeatureCategory key
|
|
229
|
-
// below (one iteration per entry in result.features), before this object
|
|
230
|
-
// is read anywhere; result.features is built from every category in
|
|
231
|
-
// buildSyntheticCorpus's cases (runFeatureEval derives `categories` the
|
|
232
|
-
// same way), so no FeatureCategory key is left unset.
|
|
277
|
+
// SAFETY: the loop below sets every FeatureCategory key from result.features, which holds every category in buildSyntheticCorpus's cases.
|
|
233
278
|
const features = {};
|
|
234
279
|
for (const f of result.features) {
|
|
235
280
|
features[f.category] = { mrr: f.mrr, recallAt5: f.recallAt5, ndcgAt5: f.ndcgAt5 };
|
|
@@ -241,9 +286,6 @@ export function resultToBaseline(result) {
|
|
|
241
286
|
overall: result.overall,
|
|
242
287
|
};
|
|
243
288
|
}
|
|
244
|
-
// ---------------------------------------------------------------------------
|
|
245
|
-
// Formatters
|
|
246
|
-
// ---------------------------------------------------------------------------
|
|
247
289
|
function pct(n) {
|
|
248
290
|
return (n * 100).toFixed(1) + '%';
|
|
249
291
|
}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
* Given a corpus of (query, expected_memory_ids) cases, run recall against
|
|
5
|
-
* the store and report ranking-quality metrics: MRR, Recall@K, NDCG@K.
|
|
6
|
-
*
|
|
7
|
-
* The goal is to make recall quality measurable so MMR lambda, embedding
|
|
8
|
-
* weights, and future scoring tweaks can be tuned against evidence instead
|
|
9
|
-
* of intuition.
|
|
10
|
-
*/
|
|
11
|
-
import type { MemoryEntry } from './memory.js';
|
|
1
|
+
/** Recall eval harness: runs recall over (query, expected_memory_ids) cases and reports MRR, Recall@K and NDCG@K.
|
|
2
|
+
* It exists so MMR lambda, embedding weights and scoring tweaks are tuned against evidence instead of intuition. */
|
|
3
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
12
4
|
export interface EvalCase {
|
|
13
5
|
/** Free-form ID for humans to reference the case. */
|
|
14
6
|
id: string;
|
|
@@ -58,10 +50,8 @@ export interface RunEvalOptions {
|
|
|
58
50
|
export declare function mrr(returned: string[], expected: string[]): number;
|
|
59
51
|
/** Recall@K — fraction of expected items found in the top-K. */
|
|
60
52
|
export declare function recallAtK(returned: string[], expected: string[], k: number): number;
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
63
|
-
* gain_i = 1 if returned[i] ∈ expected else 0. discount = log2(i + 2).
|
|
64
|
-
*/
|
|
53
|
+
/** Normalized Discounted Cumulative Gain at K with binary relevance.
|
|
54
|
+
* gain_i = 1 if returned[i] ∈ expected else 0. discount = log2(i + 2). */
|
|
65
55
|
export declare function ndcgAtK(returned: string[], expected: string[], k: number): number;
|
|
66
56
|
export declare function runEval(cases: EvalCase[], entries: MemoryEntry[], options?: RunEvalOptions): Promise<EvalSummary>;
|
|
67
57
|
export interface EvalDelta {
|
|
@@ -88,16 +78,8 @@ export interface EvalComparison {
|
|
|
88
78
|
onlyInBaseline: string[];
|
|
89
79
|
onlyInCurrent: string[];
|
|
90
80
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Compute pairwise deltas between a baseline and a current eval summary.
|
|
93
|
-
* Cases are matched by EvalCase.id; any mismatch is surfaced in the onlyIn
|
|
94
|
-
* arrays so the caller knows the corpora diverged.
|
|
95
|
-
*/
|
|
81
|
+
/** Compute pairwise deltas between a baseline and a current eval summary, matching cases by EvalCase.id; mismatches land in the onlyIn arrays. */
|
|
96
82
|
export declare function compareSummaries(baseline: EvalSummary, current: EvalSummary): EvalComparison;
|
|
97
|
-
/**
|
|
98
|
-
* For each memory, take its first 8 content words as a trivial query and
|
|
99
|
-
* expect that memory back. Useful as a smoke test: if recall can't find a
|
|
100
|
-
* memory by its own opening words, something is broken.
|
|
101
|
-
*/
|
|
83
|
+
/** For each memory, use its first 8 content words as a trivial query and expect that memory back: a smoke test for recall. */
|
|
102
84
|
export declare function bootstrapCorpus(entries: MemoryEntry[], maxCases?: number): EvalCase[];
|
|
103
85
|
//# sourceMappingURL=eval.d.ts.map
|