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,19 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* of intuition.
|
|
10
|
-
*/
|
|
11
|
-
import { hybridSearch } from './search/hybrid.js';
|
|
12
|
-
import { searchBothHybrid } from './shared.js';
|
|
13
|
-
import { isInitialized } from './store/open.js';
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
// Metrics — pure functions. K is inclusive of position K.
|
|
16
|
-
// ---------------------------------------------------------------------------
|
|
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 { hybridSearch } from '../search/hybrid.js';
|
|
4
|
+
import { searchBothHybrid } from '../sharing/search-both.js';
|
|
5
|
+
import { isInitialized } from '../store/open.js';
|
|
6
|
+
// Generous so metrics are not truncated.
|
|
7
|
+
const DEFAULT_EVAL_BUDGET = 100_000;
|
|
8
|
+
const QUERY_WORDS = 8;
|
|
17
9
|
/** Mean Reciprocal Rank for a single ranking given expected ids. */
|
|
18
10
|
export function mrr(returned, expected) {
|
|
19
11
|
if (expected.length === 0)
|
|
@@ -38,10 +30,8 @@ export function recallAtK(returned, expected, k) {
|
|
|
38
30
|
}
|
|
39
31
|
return hits / expected.length;
|
|
40
32
|
}
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
43
|
-
* gain_i = 1 if returned[i] ∈ expected else 0. discount = log2(i + 2).
|
|
44
|
-
*/
|
|
33
|
+
/** Normalized Discounted Cumulative Gain at K with binary relevance.
|
|
34
|
+
* gain_i = 1 if returned[i] ∈ expected else 0. discount = log2(i + 2). */
|
|
45
35
|
export function ndcgAtK(returned, expected, k) {
|
|
46
36
|
if (expected.length === 0)
|
|
47
37
|
return 0;
|
|
@@ -60,32 +50,12 @@ export function ndcgAtK(returned, expected, k) {
|
|
|
60
50
|
}
|
|
61
51
|
return idcg === 0 ? 0 : dcg / idcg;
|
|
62
52
|
}
|
|
63
|
-
// ---------------------------------------------------------------------------
|
|
64
|
-
// Runner
|
|
65
|
-
// ---------------------------------------------------------------------------
|
|
66
53
|
export async function runEval(cases, entries, options = {}) {
|
|
67
|
-
const budget = options.budget ?? 100_000; // generous so metrics aren't truncated
|
|
68
54
|
const start = Date.now();
|
|
69
55
|
const results = [];
|
|
70
56
|
const useBothStores = Boolean(options.globalRoot && options.hippoRoot && isInitialized(options.globalRoot));
|
|
71
57
|
for (const c of cases) {
|
|
72
|
-
const ranked = useBothStores
|
|
73
|
-
? await searchBothHybrid(c.query, options.hippoRoot, options.globalRoot, {
|
|
74
|
-
budget,
|
|
75
|
-
now: options.now,
|
|
76
|
-
embeddingWeight: options.embeddingWeight,
|
|
77
|
-
mmr: options.mmr,
|
|
78
|
-
mmrLambda: options.mmrLambda,
|
|
79
|
-
localBump: options.localBump,
|
|
80
|
-
})
|
|
81
|
-
: await hybridSearch(c.query, entries, {
|
|
82
|
-
budget,
|
|
83
|
-
now: options.now,
|
|
84
|
-
hippoRoot: options.hippoRoot,
|
|
85
|
-
embeddingWeight: options.embeddingWeight,
|
|
86
|
-
mmr: options.mmr,
|
|
87
|
-
mmrLambda: options.mmrLambda,
|
|
88
|
-
});
|
|
58
|
+
const ranked = await rankForCase(c.query, entries, options, useBothStores);
|
|
89
59
|
const returnedIds = ranked.map((r) => r.entry.id);
|
|
90
60
|
results.push({
|
|
91
61
|
case: c,
|
|
@@ -110,11 +80,28 @@ export async function runEval(cases, entries, options = {}) {
|
|
|
110
80
|
durationMs: Date.now() - start,
|
|
111
81
|
};
|
|
112
82
|
}
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
83
|
+
/** One case's ranking: across the local and global stores when `useBothStores`, else over `entries` alone. */
|
|
84
|
+
function rankForCase(query, entries, options, useBothStores) {
|
|
85
|
+
const budget = options.budget ?? DEFAULT_EVAL_BUDGET;
|
|
86
|
+
return useBothStores
|
|
87
|
+
? searchBothHybrid(query, options.hippoRoot, options.globalRoot, {
|
|
88
|
+
budget,
|
|
89
|
+
now: options.now,
|
|
90
|
+
embeddingWeight: options.embeddingWeight,
|
|
91
|
+
mmr: options.mmr,
|
|
92
|
+
mmrLambda: options.mmrLambda,
|
|
93
|
+
localBump: options.localBump,
|
|
94
|
+
})
|
|
95
|
+
: hybridSearch(query, entries, {
|
|
96
|
+
budget,
|
|
97
|
+
now: options.now,
|
|
98
|
+
hippoRoot: options.hippoRoot,
|
|
99
|
+
embeddingWeight: options.embeddingWeight,
|
|
100
|
+
mmr: options.mmr,
|
|
101
|
+
mmrLambda: options.mmrLambda,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/** Compute pairwise deltas between a baseline and a current eval summary, matching cases by EvalCase.id; mismatches land in the onlyIn arrays. */
|
|
118
105
|
export function compareSummaries(baseline, current) {
|
|
119
106
|
const aggregate = {
|
|
120
107
|
mrr: current.meanMrr - baseline.meanMrr,
|
|
@@ -158,14 +145,7 @@ export function compareSummaries(baseline, current) {
|
|
|
158
145
|
onlyInCurrent: [...curById.keys()].filter((id) => !baseById.has(id)),
|
|
159
146
|
};
|
|
160
147
|
}
|
|
161
|
-
|
|
162
|
-
// Bootstrap — generate a synthetic corpus from current memories
|
|
163
|
-
// ---------------------------------------------------------------------------
|
|
164
|
-
/**
|
|
165
|
-
* For each memory, take its first 8 content words as a trivial query and
|
|
166
|
-
* expect that memory back. Useful as a smoke test: if recall can't find a
|
|
167
|
-
* memory by its own opening words, something is broken.
|
|
168
|
-
*/
|
|
148
|
+
/** For each memory, use its first 8 content words as a trivial query and expect that memory back: a smoke test for recall. */
|
|
169
149
|
export function bootstrapCorpus(entries, maxCases = 50) {
|
|
170
150
|
const cases = [];
|
|
171
151
|
for (const e of entries) {
|
|
@@ -174,7 +154,7 @@ export function bootstrapCorpus(entries, maxCases = 50) {
|
|
|
174
154
|
const words = e.content.trim().split(/\s+/).filter((w) => w.length > 2);
|
|
175
155
|
if (words.length < 3)
|
|
176
156
|
continue;
|
|
177
|
-
const query = words.slice(0,
|
|
157
|
+
const query = words.slice(0, QUERY_WORDS).join(' ');
|
|
178
158
|
cases.push({
|
|
179
159
|
id: `bootstrap_${e.id}`,
|
|
180
160
|
query,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Typed judgment over capture candidates via TypeSafe's Jev (System One).
|
|
2
2
|
* Regex picks WHAT is a candidate; it cannot say what is worth keeping, so
|
|
3
3
|
* every captured memory currently lands on a flat schema_fit of 0.5. */
|
|
4
|
-
import { ConfidenceLevel, EmotionalValence } from '
|
|
4
|
+
import { ConfidenceLevel, EmotionalValence } from '../core/memory.js';
|
|
5
5
|
export type JudgedKind = 'error' | 'decision' | 'convention' | 'preference' | 'trivia';
|
|
6
6
|
export interface Judgment {
|
|
7
7
|
/** Jev noul, 0..1. Maps to `schema_fit` on the written entry. */
|
|
@@ -20,11 +20,6 @@ export interface JudgeOptions {
|
|
|
20
20
|
/** Bounded parallelism for `judgeAll`. */
|
|
21
21
|
concurrency?: number;
|
|
22
22
|
}
|
|
23
|
-
/** Absent key means hippo keeps its pre-Jev behaviour and makes no HTTP call. */
|
|
24
|
-
export declare function judgmentApiKey(): string | undefined;
|
|
25
|
-
/** `null` on any failure, so a Jev outage degrades capture to today's
|
|
26
|
-
* behaviour instead of blocking the write. */
|
|
27
|
-
export declare function judge(content: string, opts: JudgeOptions): Promise<Judgment | null>;
|
|
28
23
|
/** Judge many candidates under a bounded concurrency pool, order preserved. */
|
|
29
24
|
export declare function judgeAll(contents: readonly string[], opts: JudgeOptions): Promise<(Judgment | null)[]>;
|
|
30
25
|
//# sourceMappingURL=judgment.d.ts.map
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
/** Typed judgment over capture candidates via TypeSafe's Jev (System One).
|
|
2
2
|
* Regex picks WHAT is a candidate; it cannot say what is worth keeping, so
|
|
3
3
|
* every captured memory currently lands on a flat schema_fit of 0.5. */
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { fetchWithRetry } from '../util/http-retry.js';
|
|
5
|
+
import { errorMessage, log } from '../util/log.js';
|
|
6
|
+
import { readCappedJson } from '../util/capped-json.js';
|
|
7
|
+
import { isJsonNumber, isJsonObject, isJsonString } from '../util/json.js';
|
|
7
8
|
const ENDPOINT = 'https://api.typesafe.ai/v1/systemone';
|
|
8
9
|
const DEFAULT_MODEL = 'jev-1.13.0';
|
|
9
10
|
const MAX_CONCURRENCY = 8;
|
|
11
|
+
// An honest reply is three short answers, a few hundred bytes; 1 MiB leaves room for a verbose envelope.
|
|
12
|
+
const JUDGE_MAX_REPLY_BYTES = 1024 * 1024;
|
|
13
|
+
/** One named answer of a Jev reply `{ answers: { <name>: Answer } }`; an empty object when the reply has none of that shape. */
|
|
14
|
+
function answerNamed(reply, name) {
|
|
15
|
+
const answers = isJsonObject(reply) ? reply.answers : undefined;
|
|
16
|
+
const answer = isJsonObject(answers) ? answers[name] : undefined;
|
|
17
|
+
return isJsonObject(answer) ? answer : {};
|
|
18
|
+
}
|
|
10
19
|
const QUESTIONS = {
|
|
11
20
|
durable: {
|
|
12
21
|
type: 'noul',
|
|
@@ -36,12 +45,8 @@ const QUESTIONS = {
|
|
|
36
45
|
};
|
|
37
46
|
const KINDS = ['error', 'decision', 'convention', 'preference', 'trivia'];
|
|
38
47
|
const VALENCES = ['critical', 'negative', 'positive', 'neutral'];
|
|
39
|
-
/** Absent key means hippo keeps its pre-Jev behaviour and makes no HTTP call. */
|
|
40
|
-
export function judgmentApiKey() {
|
|
41
|
-
return envTypesafeApiKey();
|
|
42
|
-
}
|
|
43
48
|
function oneOf(value, allowed) {
|
|
44
|
-
return allowed.find((option) => option === value) ?? null;
|
|
49
|
+
return isJsonString(value) ? allowed.find((option) => option === value) ?? null : null;
|
|
45
50
|
}
|
|
46
51
|
/** `verified` is unreachable: that tier means a human or a test confirmed it. */
|
|
47
52
|
function toConfidenceTier(kindConfidence) {
|
|
@@ -68,14 +73,14 @@ async function post(content, opts) {
|
|
|
68
73
|
}, { timeoutMs: JUDGE_TIMEOUT_MS, fetchFn: opts.fetcher });
|
|
69
74
|
}
|
|
70
75
|
catch (err) {
|
|
71
|
-
log.debug(`judge: request failed: ${
|
|
76
|
+
log.debug(`judge: request failed: ${errorMessage(err)}`);
|
|
72
77
|
return null;
|
|
73
78
|
}
|
|
74
79
|
return res.ok ? res : null;
|
|
75
80
|
}
|
|
76
81
|
/** `null` on any failure, so a Jev outage degrades capture to today's
|
|
77
82
|
* behaviour instead of blocking the write. */
|
|
78
|
-
|
|
83
|
+
async function judge(content, opts) {
|
|
79
84
|
const trimmed = content.trim();
|
|
80
85
|
if (trimmed.length < 3)
|
|
81
86
|
return null;
|
|
@@ -84,21 +89,19 @@ export async function judge(content, opts) {
|
|
|
84
89
|
return null;
|
|
85
90
|
let data;
|
|
86
91
|
try {
|
|
87
|
-
|
|
88
|
-
// keyed by the question names posted above; every field read below is
|
|
89
|
-
// optional-chained and range-checked before use, so a lie here returns null.
|
|
90
|
-
data = await res.json();
|
|
92
|
+
data = await readCappedJson(res, JUDGE_MAX_REPLY_BYTES);
|
|
91
93
|
}
|
|
92
94
|
catch (err) {
|
|
93
|
-
log.debug(`judge: unreadable response: ${
|
|
95
|
+
log.debug(`judge: unreadable response: ${errorMessage(err)}`);
|
|
94
96
|
return null;
|
|
95
97
|
}
|
|
96
|
-
const durable = data.
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
|
|
98
|
+
const durable = answerNamed(data, 'durable').noul;
|
|
99
|
+
const kindAnswer = answerNamed(data, 'kind');
|
|
100
|
+
const kind = oneOf(kindAnswer.choice, KINDS);
|
|
101
|
+
const valence = oneOf(answerNamed(data, 'valence').choice, VALENCES);
|
|
102
|
+
if (!isJsonNumber(durable) || durable < 0 || durable > 1 || !kind || !valence)
|
|
100
103
|
return null;
|
|
101
|
-
const kindConfidence =
|
|
104
|
+
const kindConfidence = isJsonNumber(kindAnswer.confidence) ? kindAnswer.confidence : 0;
|
|
102
105
|
return { durable, kind, valence, confidence: toConfidenceTier(kindConfidence), kindConfidence };
|
|
103
106
|
}
|
|
104
107
|
/** Judge many candidates under a bounded concurrency pool, order preserved. */
|
|
@@ -226,9 +226,8 @@ export default function register(api) {
|
|
|
226
226
|
async execute(_id, params) {
|
|
227
227
|
const cfg = getConfig(api);
|
|
228
228
|
const budget = params.budget ?? cfg.budget ?? 1500;
|
|
229
|
-
const framing = cfg.framing ?? 'observe';
|
|
230
229
|
const hippoCwd = resolveHippoCwdFromContext(api, ctx, cfg.root);
|
|
231
|
-
const result = runHippo(['recall', params.query, '--budget', String(budget)
|
|
230
|
+
const result = runHippo(['recall', params.query, '--budget', String(budget)], hippoCwd);
|
|
232
231
|
return { content: [{ type: 'text', text: result || 'No relevant memories found.' }] };
|
|
233
232
|
},
|
|
234
233
|
}));
|
|
@@ -281,7 +280,7 @@ export default function register(api) {
|
|
|
281
280
|
// --- Tool: hippo_outcome ---
|
|
282
281
|
api.registerTool((ctx) => ({
|
|
283
282
|
name: 'hippo_outcome',
|
|
284
|
-
description:
|
|
283
|
+
description: "Report whether recalled memories were useful. Good outcomes slow a memory's decay and bad ones speed it up, in proportion to its record. Call after completing work.",
|
|
285
284
|
parameters: {
|
|
286
285
|
type: 'object',
|
|
287
286
|
properties: {
|
package/dist/graph/delta.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DatabaseSyncLike } from '../db/index.js';
|
|
2
|
+
import type { EntityType, RelationType, SourceObjectRef } from '../store/graph-rows.js';
|
|
2
3
|
/** What names an object-derived entity across rebuilds; v38 has no UNIQUE on it, so the diff keeps one row per key. */
|
|
3
4
|
export interface NaturalKey {
|
|
4
5
|
readonly entityType: EntityType;
|
|
@@ -38,7 +39,7 @@ export type GraphOp = {
|
|
|
38
39
|
};
|
|
39
40
|
export declare function entityKey(k: NaturalKey): string;
|
|
40
41
|
/** Ops that turn the stored graph into `desired`, in apply order; reads only, and keeps the lowest id per natural key. */
|
|
41
|
-
export declare function graphDelta(db:
|
|
42
|
+
export declare function graphDelta(db: DatabaseSyncLike, tenantId: string, desired: DesiredGraph): GraphOp[];
|
|
42
43
|
/** graphDelta on its own connection and outside any write lock; the apply re-checks each op against what changed since. */
|
|
43
44
|
export declare function readGraphDelta(hippoRoot: string, tenantId: string, desired: DesiredGraph): GraphOp[];
|
|
44
45
|
//# sourceMappingURL=delta.d.ts.map
|
package/dist/graph/delta.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { openHippoDb, closeHippoDb } from '../db.js';
|
|
1
|
+
import { loadStoredGraph, storedGraphOn } from '../store/graph-reads.js';
|
|
3
2
|
const keyText = (entityType, objectType, objectId) => `${entityType}|${objectType}:${objectId}`;
|
|
4
3
|
export function entityKey(k) {
|
|
5
4
|
return keyText(k.entityType, k.sourceObject.type, k.sourceObject.id);
|
|
@@ -15,17 +14,12 @@ function provenanceOf(memoryId, kinds) {
|
|
|
15
14
|
const kind = memoryId === null ? undefined : kinds.get(memoryId);
|
|
16
15
|
return kind === undefined ? '|distilled' : `${memoryId}|${kind}`;
|
|
17
16
|
}
|
|
18
|
-
function
|
|
17
|
+
function memoryIdsOf(desired) {
|
|
19
18
|
const ids = new Set();
|
|
20
19
|
for (const row of [...desired.entities, ...desired.relations])
|
|
21
20
|
if (row.memoryId !== null)
|
|
22
21
|
ids.add(row.memoryId);
|
|
23
|
-
|
|
24
|
-
return new Map();
|
|
25
|
-
// SAFETY: the SELECT names exactly the two columns of the row type.
|
|
26
|
-
const rows = db.prepare(`SELECT id, kind FROM memories WHERE id IN (SELECT value FROM json_each(?))`)
|
|
27
|
-
.all(JSON.stringify([...ids]));
|
|
28
|
-
return new Map(rows.map((r) => [r.id, r.kind]));
|
|
22
|
+
return [...ids];
|
|
29
23
|
}
|
|
30
24
|
function firstByKey(rows, keyOf) {
|
|
31
25
|
const out = new Map();
|
|
@@ -86,24 +80,16 @@ function diffRelations(stored, desired, keptKeyById, kinds) {
|
|
|
86
80
|
inserts.push({ op: 'insertRelation', relation });
|
|
87
81
|
return [...deletes, ...inserts];
|
|
88
82
|
}
|
|
83
|
+
function deltaOf(stored, desired) {
|
|
84
|
+
const entityDelta = diffEntities(stored.entities, desired.entities, stored.kinds);
|
|
85
|
+
return [...entityDelta.ops, ...diffRelations(stored.relations, desired.relations, entityDelta.keptKeyById, stored.kinds)];
|
|
86
|
+
}
|
|
89
87
|
/** Ops that turn the stored graph into `desired`, in apply order; reads only, and keeps the lowest id per natural key. */
|
|
90
88
|
export function graphDelta(db, tenantId, desired) {
|
|
91
|
-
|
|
92
|
-
// SAFETY: the SELECT names exactly the columns of StoredEntity.
|
|
93
|
-
const entities = db.prepare(`SELECT id, entity_type, name, memory_id, source_kind, source_object_type, source_object_id FROM entities WHERE tenant_id = ? ORDER BY id`).all(tenantId);
|
|
94
|
-
// SAFETY: the SELECT names exactly the columns of StoredRelation.
|
|
95
|
-
const relations = db.prepare(`SELECT id, from_entity_id, to_entity_id, rel_type, memory_id, source_kind, source_object_type, source_object_id FROM relations WHERE tenant_id = ? ORDER BY id`).all(tenantId);
|
|
96
|
-
const entityDelta = diffEntities(entities, desired.entities, kinds);
|
|
97
|
-
return [...entityDelta.ops, ...diffRelations(relations, desired.relations, entityDelta.keptKeyById, kinds)];
|
|
89
|
+
return deltaOf(storedGraphOn(db, tenantId, memoryIdsOf(desired)), desired);
|
|
98
90
|
}
|
|
99
91
|
/** graphDelta on its own connection and outside any write lock; the apply re-checks each op against what changed since. */
|
|
100
92
|
export function readGraphDelta(hippoRoot, tenantId, desired) {
|
|
101
|
-
|
|
102
|
-
try {
|
|
103
|
-
return graphDelta(db, tenantId, desired);
|
|
104
|
-
}
|
|
105
|
-
finally {
|
|
106
|
-
closeHippoDb(db);
|
|
107
|
-
}
|
|
93
|
+
return deltaOf(loadStoredGraph(hippoRoot, tenantId, memoryIdsOf(desired)), desired);
|
|
108
94
|
}
|
|
109
95
|
//# sourceMappingURL=delta.js.map
|
|
@@ -1,34 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* entities + `supersedes` relations from decisions /
|
|
8
|
-
* policies / customer_notes / project_briefs (the four object types whose kind maps to the
|
|
9
|
-
* `entity_type` enum), then write only their difference from the stored rows. All writes go
|
|
10
|
-
* through the src/graph/write.ts consolidated-source guard; this module issues no raw SQL.
|
|
11
|
-
*
|
|
12
|
-
* Pass 3 adds the
|
|
13
|
-
* first CROSS-OBJECT relations: a deterministic NAME-MATCH heuristic that emits a
|
|
14
|
-
* `references` edge when one consolidated object's text contains another entity's name.
|
|
15
|
-
* It is conservative (word-boundary, length-bounded, ambiguity-guarded, per-source
|
|
16
|
-
* capped); its precision is measured + reported, not assumed.
|
|
17
|
-
*
|
|
18
|
-
* Deferred (follow-ups): NLP prose-extraction (semantic depends-on / blocked-by / owns);
|
|
19
|
-
* skill/incident/process entities (not in the entity_type enum - needs a migration); the
|
|
20
|
-
* `hippo sleep` enqueue-hook.
|
|
21
|
-
*/
|
|
22
|
-
import { type EntityType } from './graph/types.js';
|
|
23
|
-
import { type DesiredGraph } from './graph/delta.js';
|
|
24
|
-
import { type WriteBudget } from './write-budget.js';
|
|
25
|
-
/** Per-type load cap (the loaders default to 100). A type whose active or superseded
|
|
26
|
-
* set exceeds this is truncated; `ExtractResult.truncated` records it so the
|
|
27
|
-
* incompleteness is observable rather than silent. */
|
|
1
|
+
/** Deterministic entity extraction: the graph is a pure function of the consolidated object tables (decisions, policies, customer_notes, project_briefs).
|
|
2
|
+
* Writes go through the src/store/graph-writes.ts consolidated-source guard. Pass 3 adds `references` edges by a conservative name-match heuristic. */
|
|
3
|
+
import { type EntityType } from '../store/graph-rows.js';
|
|
4
|
+
import { type DesiredGraph } from './delta.js';
|
|
5
|
+
import { type WriteBudget } from '../util/write-budget.js';
|
|
6
|
+
/** Per-type load cap (the loaders default to 100); a type over it is truncated and `ExtractResult.truncated` records that. */
|
|
28
7
|
export declare const MAX_EXTRACT_PER_TYPE = 10000;
|
|
29
|
-
/** A target entity name must be in [MIN, MAX] chars to be matched: MIN skips short
|
|
30
|
-
*
|
|
31
|
-
* source). */
|
|
8
|
+
/** A target entity name must be in [MIN, MAX] chars to be matched: MIN skips short, generic words; MAX skips prose
|
|
9
|
+
* (a decision's prose name is never a target, only a source). */
|
|
32
10
|
export declare const MIN_REF_NAME_LEN = 4;
|
|
33
11
|
export declare const MAX_REF_NAME_LEN = 80;
|
|
34
12
|
/** Per-source cap so one object cannot explode the graph with references edges. */
|
|
@@ -62,7 +40,7 @@ export interface ExtractRow {
|
|
|
62
40
|
/** The successor's object id (Y) when this row (X) is superseded; null otherwise. */
|
|
63
41
|
supersededBy: number | null;
|
|
64
42
|
}
|
|
65
|
-
/** One object type's loaded
|
|
43
|
+
/** One object type's rows, loaded and normalised. */
|
|
66
44
|
export interface LoadedType {
|
|
67
45
|
entityType: EntityType;
|
|
68
46
|
rows: ExtractRow[];
|
|
@@ -85,4 +63,4 @@ export declare function extractGraph(hippoRoot: string, tenantId: string): Extra
|
|
|
85
63
|
/** extractGraph for sleep: diffs outside the lock, then applies in transactions of about `budget.holdMs` with a pause
|
|
86
64
|
* between them. A run stopped between chunks leaves a mixed graph that the next run's diff finishes. */
|
|
87
65
|
export declare function extractGraphChunked(hippoRoot: string, tenantId: string, budget?: WriteBudget): Promise<ExtractResult>;
|
|
88
|
-
//# sourceMappingURL=
|
|
66
|
+
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -1,43 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* capped); its precision is measured + reported, not assumed.
|
|
17
|
-
*
|
|
18
|
-
* Deferred (follow-ups): NLP prose-extraction (semantic depends-on / blocked-by / owns);
|
|
19
|
-
* skill/incident/process entities (not in the entity_type enum - needs a migration); the
|
|
20
|
-
* `hippo sleep` enqueue-hook.
|
|
21
|
-
*/
|
|
22
|
-
import { applyGraphOps, runGraphRebuildTransaction } from './graph/write.js';
|
|
23
|
-
import { MAX_ENTITY_NAME_LEN } from './graph/types.js';
|
|
24
|
-
import { graphDelta, readGraphDelta } from './graph/delta.js';
|
|
25
|
-
import { WRITE_BUDGET } from './write-budget.js';
|
|
26
|
-
import { SLEEP_DB_WAIT_MS } from './db.js';
|
|
27
|
-
import { loadDecisions } from './decisions.js';
|
|
28
|
-
import { loadPolicies } from './policies.js';
|
|
29
|
-
import { loadCustomerNotes } from './customer-notes.js';
|
|
30
|
-
import { loadProjectBriefs } from './project-briefs.js';
|
|
31
|
-
import { assertTenantId } from './tenant.js';
|
|
32
|
-
import { escapeRegex } from './escape.js';
|
|
33
|
-
/** Per-type load cap (the loaders default to 100). A type whose active or superseded
|
|
34
|
-
* set exceeds this is truncated; `ExtractResult.truncated` records it so the
|
|
35
|
-
* incompleteness is observable rather than silent. */
|
|
1
|
+
/** Deterministic entity extraction: the graph is a pure function of the consolidated object tables (decisions, policies, customer_notes, project_briefs).
|
|
2
|
+
* Writes go through the src/store/graph-writes.ts consolidated-source guard. Pass 3 adds `references` edges by a conservative name-match heuristic. */
|
|
3
|
+
import { applyGraphOps } from './write.js';
|
|
4
|
+
import { runGraphRebuildTransaction } from '../store/graph-writes.js';
|
|
5
|
+
import { MAX_ENTITY_NAME_LEN } from '../store/graph-rows.js';
|
|
6
|
+
import { graphDelta, readGraphDelta } from './delta.js';
|
|
7
|
+
import { WRITE_BUDGET } from '../util/write-budget.js';
|
|
8
|
+
import { SLEEP_DB_WAIT_MS } from '../db/index.js';
|
|
9
|
+
import { loadDecisions } from '../objects/decisions.js';
|
|
10
|
+
import { loadPolicies } from '../objects/policies.js';
|
|
11
|
+
import { loadCustomerNotes } from '../objects/customer-notes.js';
|
|
12
|
+
import { loadProjectBriefs } from '../objects/project-briefs.js';
|
|
13
|
+
import { assertTenantId } from '../store/tenant.js';
|
|
14
|
+
import { escapeRegex } from '../util/escape.js';
|
|
15
|
+
/** Per-type load cap (the loaders default to 100); a type over it is truncated and `ExtractResult.truncated` records that. */
|
|
36
16
|
export const MAX_EXTRACT_PER_TYPE = 10000;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
* generic words; MAX skips prose (a decision's prose name is never a target, only a
|
|
40
|
-
* source). */
|
|
17
|
+
/** A target entity name must be in [MIN, MAX] chars to be matched: MIN skips short, generic words; MAX skips prose
|
|
18
|
+
* (a decision's prose name is never a target, only a source). */
|
|
41
19
|
export const MIN_REF_NAME_LEN = 4;
|
|
42
20
|
export const MAX_REF_NAME_LEN = 80;
|
|
43
21
|
/** Per-source cap so one object cannot explode the graph with references edges. */
|
|
@@ -71,52 +49,33 @@ function sourceObjectOf(entityType, e2Id) {
|
|
|
71
49
|
function pairKey(a, b) {
|
|
72
50
|
return a < b ? `${a}:${b}` : `${b}:${a}`;
|
|
73
51
|
}
|
|
74
|
-
/**
|
|
75
|
-
*
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
textOf)
|
|
86
|
-
|
|
87
|
-
let hitCap = false;
|
|
88
|
-
for (const status of ['active', 'superseded']) {
|
|
89
|
-
const loaded = loadFn(hippoRoot, tenantId, { status, limit: MAX_EXTRACT_PER_TYPE });
|
|
90
|
-
if (loaded.length === MAX_EXTRACT_PER_TYPE)
|
|
91
|
-
hitCap = true;
|
|
92
|
-
for (const r of loaded) {
|
|
93
|
-
// SAFETY: loadFn is always one of loadDecisions/loadPolicies/loadCustomerNotes/
|
|
94
|
-
// loadProjectBriefs (wired in GRAPH_SOURCES); every one of their row
|
|
95
|
-
// types declares id: number, memoryId: string | null, supersededBy: number | null.
|
|
96
|
-
// `any` here is the deliberate type-erasure boundary (see eslint-disable above)
|
|
97
|
-
// that lets one loop handle all four object row shapes.
|
|
98
|
-
rows.push({
|
|
99
|
-
entityType,
|
|
100
|
-
e2Id: r.id,
|
|
101
|
-
name: nameOf(r),
|
|
102
|
-
searchText: textOf(r),
|
|
103
|
-
memoryId: (r.memoryId ?? null),
|
|
104
|
-
supersededBy: (r.supersededBy ?? null),
|
|
105
|
-
});
|
|
52
|
+
/** Close over one loader's row type so the table below holds uniform functions. Loads ACTIVE and SUPERSEDED rows (not `closed`),
|
|
53
|
+
* one call per status, so MAX_EXTRACT_PER_TYPE is a per-status budget; `hitCap` is set when either load is full. */
|
|
54
|
+
function source(entityType, load, nameOf, textOf) {
|
|
55
|
+
return (hippoRoot, tenantId) => {
|
|
56
|
+
const rows = [];
|
|
57
|
+
let hitCap = false;
|
|
58
|
+
for (const status of ['active', 'superseded']) {
|
|
59
|
+
const loaded = load(hippoRoot, tenantId, { status, limit: MAX_EXTRACT_PER_TYPE });
|
|
60
|
+
if (loaded.length === MAX_EXTRACT_PER_TYPE)
|
|
61
|
+
hitCap = true;
|
|
62
|
+
for (const r of loaded) {
|
|
63
|
+
rows.push({ entityType, e2Id: r.id, name: nameOf(r), searchText: textOf(r), memoryId: r.memoryId, supersededBy: r.supersededBy });
|
|
64
|
+
}
|
|
106
65
|
}
|
|
107
|
-
|
|
108
|
-
|
|
66
|
+
return { entityType, rows, hitCap };
|
|
67
|
+
};
|
|
109
68
|
}
|
|
110
69
|
const GRAPH_SOURCES = [
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
70
|
+
source('decision', loadDecisions, (r) => r.decisionText, (r) => [r.decisionText, r.context].filter(Boolean).join(' ')),
|
|
71
|
+
source('policy', loadPolicies, (r) => r.policyName, (r) => [r.policyName, r.policyText].filter(Boolean).join(' ')),
|
|
72
|
+
source('customer', loadCustomerNotes, (r) => r.customer, (r) => [r.customer, r.note].filter(Boolean).join(' ')),
|
|
73
|
+
source('project', loadProjectBriefs, (r) => r.repo, (r) => [r.repo, r.summary].filter(Boolean).join(' ')),
|
|
115
74
|
];
|
|
116
75
|
/** Every source type's rows, each read on its own connection; callers load before any write lock is taken. */
|
|
117
76
|
export function loadGraphSources(hippoRoot, tenantId) {
|
|
118
77
|
assertTenantId('loadGraphSources', tenantId);
|
|
119
|
-
return GRAPH_SOURCES.map((
|
|
78
|
+
return GRAPH_SOURCES.map((load) => load(hippoRoot, tenantId));
|
|
120
79
|
}
|
|
121
80
|
/** The tenant's graph as a pure function of its loaded objects; the write side diffs it against what is stored. */
|
|
122
81
|
export function deriveGraph(loaded) {
|
|
@@ -261,7 +220,7 @@ export function extractGraph(hippoRoot, tenantId) {
|
|
|
261
220
|
// Loaded first: opening a second connection under the rebuild's BEGIN IMMEDIATE dead-locks ('database is locked').
|
|
262
221
|
const derived = deriveGraph(loadGraphSources(hippoRoot, tenantId));
|
|
263
222
|
// Diffed and applied under one lock, so two concurrent rebuilds serialize instead of both inserting a missing row.
|
|
264
|
-
const skipped = runGraphRebuildTransaction(hippoRoot, tenantId, (txDb) => applyGraphOps(txDb, hippoRoot, tenantId, graphDelta(txDb, tenantId, derived), 0,
|
|
223
|
+
const skipped = runGraphRebuildTransaction(hippoRoot, tenantId, (txDb) => applyGraphOps(txDb, hippoRoot, tenantId, graphDelta(txDb, tenantId, derived), { from: 0, holdMs: Infinity }).skipped);
|
|
265
224
|
return resultOf(derived, skipped);
|
|
266
225
|
}
|
|
267
226
|
/** extractGraph for sleep: diffs outside the lock, then applies in transactions of about `budget.holdMs` with a pause
|
|
@@ -278,11 +237,11 @@ export async function extractGraphChunked(hippoRoot, tenantId, budget = WRITE_BU
|
|
|
278
237
|
await budget.pause(committedAt);
|
|
279
238
|
const from = next;
|
|
280
239
|
// Sleep's wait, not a server request's 250 ms: each chunk is a fresh BEGIN IMMEDIATE a hook's write could otherwise fail.
|
|
281
|
-
const chunk = runGraphRebuildTransaction(hippoRoot, tenantId, (txDb) => applyGraphOps(txDb, hippoRoot, tenantId, ops, from,
|
|
240
|
+
const chunk = runGraphRebuildTransaction(hippoRoot, tenantId, (txDb) => applyGraphOps(txDb, hippoRoot, tenantId, ops, { from, holdMs: budget.holdMs, clock: budget.clock }), { busyWaitMs: SLEEP_DB_WAIT_MS });
|
|
282
241
|
committedAt = budget.clock();
|
|
283
242
|
next = chunk.next;
|
|
284
243
|
skipped += chunk.skipped;
|
|
285
244
|
}
|
|
286
245
|
return resultOf(derived, skipped);
|
|
287
246
|
}
|
|
288
|
-
//# sourceMappingURL=
|
|
247
|
+
//# sourceMappingURL=extract.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ResultCost, type SearchResult } from '
|
|
1
|
+
import { type ResultCost, type SearchResult } from '../core/search-types.js';
|
|
2
2
|
/** Hard cap on `--hops` (a higher value just walks more of a finite graph; this bounds
|
|
3
3
|
* worst-case work and keeps the flag honest). */
|
|
4
4
|
export declare const MAX_HOPS = 3;
|
|
@@ -17,9 +17,8 @@ export interface GraphExpandOpts {
|
|
|
17
17
|
tenantId: string;
|
|
18
18
|
/** Mirror the recall handler's hard filters when re-loading graph-reached rows. */
|
|
19
19
|
includeSuperseded?: boolean;
|
|
20
|
-
/** ISO date; bi-temporal as-of filter applied to graph-reached rows
|
|
21
|
-
*
|
|
22
|
-
* was not yet valid at asOf). */
|
|
20
|
+
/** ISO date; bi-temporal as-of filter applied to graph-reached rows, matching cmdRecall:
|
|
21
|
+
* visible if valid_from <= asOf and, when superseded, its successor was not yet valid at asOf. */
|
|
23
22
|
asOf?: string;
|
|
24
23
|
/** Token budget for the augmented set (defaults to DEFAULT_RECALL_BUDGET, matching recall). */
|
|
25
24
|
budget?: number;
|
|
@@ -28,28 +27,16 @@ export interface GraphExpandOpts {
|
|
|
28
27
|
/** The recall --min-results floor: this many top base rows are kept regardless of
|
|
29
28
|
* budget, so graph expansion never violates the floor. Defaults to 1. */
|
|
30
29
|
minResults?: number;
|
|
31
|
-
/** Recall-side
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* bare/SDK callers. { requested, additive: true } = CLI --scope unlock semantics
|
|
35
|
-
* (passesCliRecallScopeFilter); additive false/absent with requested set = api
|
|
36
|
-
* exact-narrowing semantics (passesScopeFilterForRecall). Base results are the
|
|
37
|
-
* caller's responsibility (they passed through the caller's own scope filter). */
|
|
30
|
+
/** Recall-side scope rule applied to graph-REACHED memories only (base results already passed the caller), mirroring HybridSearchOptions.recallScope.
|
|
31
|
+
* Omitted = default-deny (private and quarantine excluded, NULL passes), the fail-closed default for SDK callers.
|
|
32
|
+
* { requested, additive: true } is CLI --scope unlock (passesCliRecallScopeFilter); otherwise exact narrowing (passesScopeFilterForRecall). */
|
|
38
33
|
recallScope?: {
|
|
39
34
|
requested?: string;
|
|
40
35
|
additive?: boolean;
|
|
41
36
|
ownScope?: string;
|
|
42
37
|
};
|
|
43
38
|
}
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
* the seed results' entities (across the local AND global stores). Each graph hit is
|
|
47
|
-
* inserted directly after the base result it descends from, scored just below that seed;
|
|
48
|
-
* the base list's own order is preserved. Token-budget-bounded; deduped against the base
|
|
49
|
-
* set and across stores.
|
|
50
|
-
*
|
|
51
|
-
* No-op (returns `baseResults` unchanged) when `hops <= 0`, there are no base results, the
|
|
52
|
-
* graph is empty, no seed maps to an entity, or nothing new survives the filters/budget.
|
|
53
|
-
*/
|
|
39
|
+
/** Augment `baseResults` with memories reached by walking `hops` graph edges from the seeds across local AND global stores, each placed after its seed.
|
|
40
|
+
* Returns `baseResults` unchanged when `hops <= 0`, there are no base results, or nothing new survives the filters and the token budget. */
|
|
54
41
|
export declare function graphExpandRecall(baseResults: SearchResult[], opts: GraphExpandOpts): SearchResult[];
|
|
55
|
-
//# sourceMappingURL=
|
|
42
|
+
//# sourceMappingURL=recall.d.ts.map
|