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,27 +1,29 @@
|
|
|
1
1
|
// The per-prompt hook's block and ledger rows, rendered here for `hippo context` and for promptHookContext (a remote hook route's call).
|
|
2
|
-
// promptHookContext keeps the server-side copy of the CLI's getContext flags (cli/context.ts);
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
// promptHookContext keeps the server-side copy of the CLI's getContext flags (cli/context.ts);
|
|
3
|
+
// the CLI parity case in tests/prompt-hook-context.test.ts is all that ties the two.
|
|
4
|
+
import { getContext } from './index.js';
|
|
5
|
+
import { BadRequestError } from '../core/api-errors.js';
|
|
6
|
+
import { isSharedStore, loadConfig } from '../core/config.js';
|
|
6
7
|
import { contextBlockLines, contextCost, crossProjectLines, handoffText, sessionTrailText, settleTokens, snapshotText } from './context-render.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { withLedgerDb } from './ledger-db.js';
|
|
8
|
+
import { MAX_ID_LEN } from '../util/http-util.js';
|
|
9
|
+
import { isJsonString } from '../util/json.js';
|
|
10
|
+
import { bookLedgerTurn, ledgerLastSent, noteLedgerRowSkipped } from './ledger-db.js';
|
|
11
11
|
import { sessionPilotArm } from './pilot-arm.js';
|
|
12
|
-
import { assertCallerProject, MAX_PROJECT_ALIASES } from '
|
|
13
|
-
import { writeDeliveryEventAtRoot
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
import { assertCallerProject, MAX_PROJECT_ALIASES } from '../core/project-identity.js';
|
|
13
|
+
import { writeDeliveryEventAtRoot } from '../store/recall-trace.js';
|
|
14
|
+
import { hookPayloadString, isSubagentPayload, shouldSkipUnchanged, } from '../store/token-ledger.js';
|
|
15
|
+
import { blockHash, estimateTokens } from '../util/token-text.js';
|
|
16
|
+
import { errorMessage, log } from '../util/log.js';
|
|
17
|
+
import { DEFAULT_CONTEXT_BUDGET } from './context.js';
|
|
18
|
+
/** With `write`, stores on the token ledger's connection (same store); without it, opens its own. A second flush is a no-op. */
|
|
19
|
+
export function flushDeliveryRecorder(rec, write) {
|
|
17
20
|
if (rec === null)
|
|
18
21
|
return;
|
|
19
22
|
try {
|
|
20
|
-
rec.flush(
|
|
23
|
+
rec.flush(write ?? ((input) => writeDeliveryEventAtRoot(rec.root, input)));
|
|
21
24
|
}
|
|
22
25
|
catch (error) {
|
|
23
|
-
|
|
24
|
-
console.error(`[hippo] delivery ledger write failed:${error instanceof Error ? error.message : String(error)}`);
|
|
26
|
+
log.error(`delivery ledger write failed: ${errorMessage(error)}`);
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
/** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which only the Copilot harness sends. */
|
|
@@ -113,56 +115,36 @@ function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCoun
|
|
|
113
115
|
// Before the ledger read, so a caller that did not print this block books no skip row.
|
|
114
116
|
if (view.printedHash !== undefined && view.printedHash !== staticHash)
|
|
115
117
|
return false;
|
|
116
|
-
const last =
|
|
118
|
+
const last = ledgerLastSent(hippoRoot, view.tenantId, payloadSessionId, surface, ledgerOpts);
|
|
117
119
|
if (!shouldSkipUnchanged(last ?? null, staticHash, refreshTurns))
|
|
118
120
|
return false;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
121
|
+
bookLedgerTurn(hippoRoot, {
|
|
122
|
+
uses: [{
|
|
123
|
+
tenantId: view.tenantId, sessionId: payloadSessionId, surface, event: 'skip',
|
|
124
|
+
items: staticCount, tokens: estimateTokens(staticBlock), hash: staticHash,
|
|
125
|
+
}],
|
|
126
|
+
delivery: recallBlock.trim() ? undefined : (write) => {
|
|
127
|
+
rec?.delivered({ state: 'reused', staticHash, staticReused: true });
|
|
128
|
+
flushDeliveryRecorder(rec, write);
|
|
129
|
+
},
|
|
128
130
|
}, ledgerOpts);
|
|
129
131
|
return true;
|
|
130
132
|
}
|
|
131
|
-
/** One connection for both rows;
|
|
133
|
+
/** One connection for both rows; a failed row is logged and the other still lands, because a ledger failure must not break the hook. */
|
|
132
134
|
function recordAdditionalContextRows(view, surface, staticPart, recallPart) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
catch (error) {
|
|
143
|
-
if (isSqliteBusy(error))
|
|
144
|
-
noteStoreBusy('token ledger row skipped');
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
if (recallPart.text) {
|
|
148
|
-
try {
|
|
149
|
-
recordTokenUse(db, {
|
|
150
|
-
tenantId: view.tenantId, sessionId: view.ledgerSessionId, surface: 'hook_recall', event: 'inject',
|
|
151
|
-
items: recallPart.items, tokens: estimateTokens(recallPart.text), hash: blockHash(recallPart.text),
|
|
152
|
-
});
|
|
153
|
-
// Same best-effort rule as the inject row above.
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
if (isSqliteBusy(error))
|
|
157
|
-
noteStoreBusy('token ledger row skipped');
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
flushDeliveryRecorder(view.rec, db);
|
|
135
|
+
const row = (part, on) => ({
|
|
136
|
+
tenantId: view.tenantId, sessionId: view.ledgerSessionId, surface: on, event: 'inject',
|
|
137
|
+
items: part.items, tokens: estimateTokens(part.text), hash: blockHash(part.text),
|
|
138
|
+
});
|
|
139
|
+
bookLedgerTurn(view.hippoRoot, {
|
|
140
|
+
uses: [...(staticPart.text ? [row(staticPart, surface)] : []), ...(recallPart.text ? [row(recallPart, 'hook_recall')] : [])],
|
|
141
|
+
onRowError: noteLedgerRowSkipped,
|
|
142
|
+
delivery: (write) => flushDeliveryRecorder(view.rec, write),
|
|
161
143
|
}, { sharedStore: view.sharedStore });
|
|
162
144
|
}
|
|
163
145
|
// The flags HIPPO_PINNED_INJECT_COMMAND gives the local hook; the CLI parity test fails if the two drift.
|
|
164
146
|
const HOOK_INCLUDE_RECENT = 5;
|
|
165
|
-
const HOOK_BUDGET =
|
|
147
|
+
const HOOK_BUDGET = DEFAULT_CONTEXT_BUDGET;
|
|
166
148
|
const HOOK_FRAMING = 'observe';
|
|
167
149
|
// blockHash's shape (token-ledger.ts).
|
|
168
150
|
const BLOCK_HASH_RE = /^[0-9a-f]{16}$/;
|
|
@@ -181,10 +163,10 @@ function assertPromptHookRequest(req) {
|
|
|
181
163
|
throw new BadRequestError('printed hash: 16 lowercase hex characters');
|
|
182
164
|
}
|
|
183
165
|
}
|
|
184
|
-
/** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read on `ctx`'s store for
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
166
|
+
/** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read on `ctx`'s store for its project.
|
|
167
|
+
* Omits an unchanged static block only when `printedHash` matches; `arm` is the ledger arm (`hippo` or `holdout`, null at rate 0); a holdout gets empty stdout.
|
|
168
|
+
* `staticHash` is the hash to echo back (null with no static block, a sub-agent or a holdout). Scope detection and delivery-ledger events are CLI-only.
|
|
169
|
+
* Throws BadRequestError past the input caps, and on a shared store for a project assertCallerProject refuses, before any arm is booked. */
|
|
188
170
|
export async function promptHookContext(ctx, req, opts = {}) {
|
|
189
171
|
assertPromptHookRequest(req);
|
|
190
172
|
const { sessionId, payload } = req;
|
package/dist/api/quarantine.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { KeysetPosition } from '../keyset.js';
|
|
1
|
+
import type { QuarantineStatus } from '../store/quarantine.js';
|
|
2
|
+
import type { KeysetPosition } from '../util/keyset.js';
|
|
3
3
|
import type { Context } from './types.js';
|
|
4
4
|
export interface QuarantineListItem {
|
|
5
5
|
id: string;
|
|
@@ -16,9 +16,9 @@ export declare function quarantineList(ctx: Context, opts?: {
|
|
|
16
16
|
status?: QuarantineStatus | 'all';
|
|
17
17
|
limit?: number;
|
|
18
18
|
after?: KeysetPosition;
|
|
19
|
-
}): QuarantineListItem[]
|
|
19
|
+
}): Promise<QuarantineListItem[]>;
|
|
20
20
|
/** Release a quarantined memory to its original scope. Admin only; the scope guard refuses a row moved since (mirrors restoreDormant). */
|
|
21
|
-
export declare function quarantineApprove(ctx: Context, id: string): void
|
|
21
|
+
export declare function quarantineApprove(ctx: Context, id: string): Promise<void>;
|
|
22
22
|
/** Keep a quarantined memory hidden for good. Admin only; the raw row is untouched (append-only). */
|
|
23
|
-
export declare function quarantineReject(ctx: Context, id: string): void
|
|
23
|
+
export declare function quarantineReject(ctx: Context, id: string): Promise<void>;
|
|
24
24
|
//# sourceMappingURL=quarantine.d.ts.map
|
package/dist/api/quarantine.js
CHANGED
|
@@ -1,122 +1,46 @@
|
|
|
1
1
|
// Quarantine review: list, approve and reject held memories.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { writeEntryMirrors } from '../store/entry-writes.js';
|
|
5
|
-
import { readEntry, selectEntriesByIds } from '../store/entry-reads.js';
|
|
6
|
-
import { quarantineScopeFor, getQuarantineRow, listQuarantineRows, approveQuarantineRow, rejectQuarantineRow, } from '../quarantine.js';
|
|
7
|
-
import { log } from '../log.js';
|
|
8
|
-
import { appendAuditEvent } from '../audit.js';
|
|
2
|
+
import { ConflictError, ForbiddenError, NotFoundError } from '../core/api-errors.js';
|
|
3
|
+
import { requireGroup, storeFor } from '../store/index.js';
|
|
9
4
|
const QUARANTINE_PREVIEW_CHARS = 200;
|
|
10
5
|
/** A tenant's quarantined memories, newest first. Default `status` is 'pending' (the review queue). */
|
|
11
|
-
export function quarantineList(ctx, opts = {}) {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
decidedAt: row.decidedAt,
|
|
25
|
-
decidedBy: row.decidedBy,
|
|
26
|
-
contentPreview: entry ? entry.content.slice(0, QUARANTINE_PREVIEW_CHARS) : '',
|
|
27
|
-
};
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
finally {
|
|
31
|
-
closeHippoDb(db);
|
|
32
|
-
}
|
|
6
|
+
export async function quarantineList(ctx, opts = {}) {
|
|
7
|
+
const rows = await requireGroup(storeFor(ctx), 'quarantine')
|
|
8
|
+
.listQuarantined(ctx.tenantId, { status: opts.status ?? 'pending', limit: opts.limit, after: opts.after });
|
|
9
|
+
return rows.map((row) => ({
|
|
10
|
+
id: row.memoryId,
|
|
11
|
+
originalScope: row.originalScope,
|
|
12
|
+
reason: row.reason,
|
|
13
|
+
status: row.status,
|
|
14
|
+
quarantinedAt: row.quarantinedAt,
|
|
15
|
+
decidedAt: row.decidedAt,
|
|
16
|
+
decidedBy: row.decidedBy,
|
|
17
|
+
contentPreview: (row.content ?? '').slice(0, QUARANTINE_PREVIEW_CHARS),
|
|
18
|
+
}));
|
|
33
19
|
}
|
|
34
|
-
function
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (row.status !== 'pending')
|
|
39
|
-
throw new ConflictError(`${id} is already ${row.status}`);
|
|
40
|
-
return row;
|
|
20
|
+
function refusalError(id, refusal) {
|
|
21
|
+
if (refusal.outcome === 'not_quarantined')
|
|
22
|
+
return new NotFoundError(`not quarantined: ${id}`);
|
|
23
|
+
return new ConflictError(`${id} is already ${refusal.status}`);
|
|
41
24
|
}
|
|
42
25
|
/** Release a quarantined memory to its original scope. Admin only; the scope guard refuses a row moved since (mirrors restoreDormant). */
|
|
43
|
-
export function quarantineApprove(ctx, id) {
|
|
26
|
+
export async function quarantineApprove(ctx, id) {
|
|
44
27
|
if (ctx.actor.role !== 'admin') {
|
|
45
28
|
throw new ForbiddenError('Only an admin key can approve a quarantined memory');
|
|
46
29
|
}
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const updated = db
|
|
54
|
-
.prepare(`UPDATE memories SET scope = ? WHERE id = ? AND tenant_id = ? AND scope = ?`)
|
|
55
|
-
.run(row.originalScope, id, ctx.tenantId, quarantineScope);
|
|
56
|
-
if (Number(updated.changes ?? 0) !== 1) {
|
|
57
|
-
throw new ConflictError(`memory ${id} scope changed since quarantine; refusing to approve`);
|
|
58
|
-
}
|
|
59
|
-
approveQuarantineRow(db, ctx.tenantId, id, ctx.actor.subject);
|
|
60
|
-
appendAuditEvent(db, {
|
|
61
|
-
tenantId: ctx.tenantId,
|
|
62
|
-
actor: ctx.actor.subject,
|
|
63
|
-
op: 'quarantine_approve',
|
|
64
|
-
targetId: id,
|
|
65
|
-
metadata: { originalScope: row.originalScope },
|
|
66
|
-
});
|
|
67
|
-
db.exec('COMMIT');
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
try {
|
|
71
|
-
db.exec('ROLLBACK');
|
|
72
|
-
}
|
|
73
|
-
catch { /* already rolled back */ }
|
|
74
|
-
throw err;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
finally {
|
|
78
|
-
closeHippoDb(db);
|
|
79
|
-
}
|
|
80
|
-
// Post-commit, best-effort: a failed rewrite leaves the mirror showing the quarantine scope (fail-closed).
|
|
81
|
-
try {
|
|
82
|
-
const restored = readEntry(ctx.hippoRoot, id, ctx.tenantId);
|
|
83
|
-
if (restored)
|
|
84
|
-
writeEntryMirrors(ctx.hippoRoot, restored);
|
|
85
|
-
}
|
|
86
|
-
catch (err) {
|
|
87
|
-
log.error(`quarantine: mirror rewrite failed for ${id}: ${err instanceof Error ? err.message : String(err)}`);
|
|
88
|
-
}
|
|
30
|
+
const result = await requireGroup(storeFor(ctx), 'quarantine').approveQuarantined(ctx.tenantId, id, ctx.actor.subject);
|
|
31
|
+
if (result.outcome === 'approved')
|
|
32
|
+
return;
|
|
33
|
+
if (result.outcome === 'scope_moved')
|
|
34
|
+
throw new ConflictError(`memory ${id} scope changed since quarantine; refusing to approve`);
|
|
35
|
+
throw refusalError(id, result);
|
|
89
36
|
}
|
|
90
37
|
/** Keep a quarantined memory hidden for good. Admin only; the raw row is untouched (append-only). */
|
|
91
|
-
export function quarantineReject(ctx, id) {
|
|
38
|
+
export async function quarantineReject(ctx, id) {
|
|
92
39
|
if (ctx.actor.role !== 'admin') {
|
|
93
40
|
throw new ForbiddenError('Only an admin key can reject a quarantined memory');
|
|
94
41
|
}
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
try {
|
|
99
|
-
loadPendingQuarantineRow(db, ctx.tenantId, id);
|
|
100
|
-
rejectQuarantineRow(db, ctx.tenantId, id, ctx.actor.subject);
|
|
101
|
-
appendAuditEvent(db, {
|
|
102
|
-
tenantId: ctx.tenantId,
|
|
103
|
-
actor: ctx.actor.subject,
|
|
104
|
-
op: 'quarantine_reject',
|
|
105
|
-
targetId: id,
|
|
106
|
-
metadata: {},
|
|
107
|
-
});
|
|
108
|
-
db.exec('COMMIT');
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
try {
|
|
112
|
-
db.exec('ROLLBACK');
|
|
113
|
-
}
|
|
114
|
-
catch { /* already rolled back */ }
|
|
115
|
-
throw err;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
finally {
|
|
119
|
-
closeHippoDb(db);
|
|
120
|
-
}
|
|
42
|
+
const result = await requireGroup(storeFor(ctx), 'quarantine').rejectQuarantined(ctx.tenantId, id, ctx.actor.subject);
|
|
43
|
+
if (result.outcome !== 'rejected')
|
|
44
|
+
throw refusalError(id, result);
|
|
121
45
|
}
|
|
122
46
|
//# sourceMappingURL=quarantine.js.map
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { confidenceFacets } from '../core/memory.js';
|
|
2
|
+
import type { ResultCost, SearchResult } from '../core/search-types.js';
|
|
3
|
+
import type { RerankerFn } from '../rerankers/types.js';
|
|
4
|
+
import { explainMatch } from '../search/explain.js';
|
|
5
|
+
import type { ContinuityBlock } from '../store/port.js';
|
|
6
|
+
import type { Context } from './types.js';
|
|
7
|
+
export { DEFAULT_MAX_NEIGHBORS, MAX_HOPS } from '../graph/recall.js';
|
|
8
|
+
/** The global store beside this one, whether this one is it, and the scope that boosts rows. */
|
|
9
|
+
export interface CliRecallSetting {
|
|
10
|
+
readonly globalRoot: string;
|
|
11
|
+
readonly primaryIsGlobal: boolean;
|
|
12
|
+
readonly activeScope: string | null;
|
|
13
|
+
}
|
|
14
|
+
/** The active scope merges `--scope` with the detected one, which only boosts. */
|
|
15
|
+
export declare function cliRecallSetting(ctx: Context, explicitScope: string | null): CliRecallSetting;
|
|
16
|
+
export interface CliRecallOrigin {
|
|
17
|
+
readonly globalOn: boolean;
|
|
18
|
+
/** True when a ranked row came from the global store: this store is it, or the global store is on and this one lacks the id. */
|
|
19
|
+
readonly isGlobal: (id: string) => boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function cliRecallOrigin(ctx: Context, setting: CliRecallSetting): CliRecallOrigin;
|
|
22
|
+
/** The active snapshot, its session's latest handoff and last five events, each kept only when its scope passes. */
|
|
23
|
+
export declare function loadCliRecallContinuity(ctx: Context, setting: CliRecallSetting, wanted: boolean): ContinuityBlock;
|
|
24
|
+
export interface CliRecallRerankerPick {
|
|
25
|
+
readonly fn: RerankerFn;
|
|
26
|
+
readonly defaultTopK: number;
|
|
27
|
+
}
|
|
28
|
+
/** The reranker a `--reranker` name picks and the top-k it takes by default; an unknown name throws, a blank one picks none. */
|
|
29
|
+
export declare function cliRecallReranker(name: string): CliRecallRerankerPick | null;
|
|
30
|
+
/** The ranked rows a print budget holds, best first; the first `floor` stay whatever they cost. */
|
|
31
|
+
export declare function fitRecallRows(ranked: SearchResult[], budget: number, floor: number, cost: ResultCost): SearchResult[];
|
|
32
|
+
/** One result row; the optional keys are set in the order the JSON prints them. */
|
|
33
|
+
export interface RecallJsonRow {
|
|
34
|
+
id: string;
|
|
35
|
+
score: number;
|
|
36
|
+
strength: SearchResult['entry']['strength'];
|
|
37
|
+
tokens: number;
|
|
38
|
+
tags: SearchResult['entry']['tags'];
|
|
39
|
+
content: string;
|
|
40
|
+
layer: SearchResult['entry']['layer'];
|
|
41
|
+
trace_outcome?: SearchResult['entry']['trace_outcome'];
|
|
42
|
+
superseded?: boolean;
|
|
43
|
+
superseded_by?: SearchResult['entry']['superseded_by'];
|
|
44
|
+
graphVia?: SearchResult['graphVia'];
|
|
45
|
+
confidence?: ReturnType<typeof confidenceFacets>['tier'];
|
|
46
|
+
aged_out?: ReturnType<typeof confidenceFacets>['agedOut'];
|
|
47
|
+
source?: 'global' | 'local';
|
|
48
|
+
reason?: ReturnType<typeof explainMatch>['reason'];
|
|
49
|
+
bm25?: SearchResult['bm25'];
|
|
50
|
+
cosine?: SearchResult['cosine'];
|
|
51
|
+
envelope?: ReturnType<typeof explainMatch>['envelope'];
|
|
52
|
+
rerankTrace?: SearchResult['rerankTrace'];
|
|
53
|
+
}
|
|
54
|
+
export declare function recallJsonRow(r: SearchResult, query: string, showWhy: boolean, isGlobal: boolean): RecallJsonRow;
|
|
55
|
+
//# sourceMappingURL=recall-cli.d.ts.map
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// What the `hippo recall` verb reads beside its ranking core: the stores it searches, the resume packet and the JSON rows.
|
|
2
|
+
import { confidenceFacets, Layer } from '../core/memory.js';
|
|
3
|
+
import { isGlobalStoreRoot } from '../core/project-identity.js';
|
|
4
|
+
import { getReranker } from '../rerankers/index.js';
|
|
5
|
+
import { isClefModel } from '../rerankers/clef.js';
|
|
6
|
+
import { JEV_DEFAULT_TOP_K } from '../rerankers/jev.js';
|
|
7
|
+
import { explainMatch } from '../search/explain.js';
|
|
8
|
+
import { fitBudget } from '../search/finalize.js';
|
|
9
|
+
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
10
|
+
import { detectScope } from '../sharing/scope.js';
|
|
11
|
+
import { loadLatestHandoff } from '../store/handoffs.js';
|
|
12
|
+
import { loadIndex } from '../store/index-and-stats.js';
|
|
13
|
+
import { isInitialized } from '../store/open.js';
|
|
14
|
+
import { passesScopeFilterForRecall } from '../store/recall-scope.js';
|
|
15
|
+
import { listSessionEvents, loadActiveTaskSnapshot } from '../store/sessions.js';
|
|
16
|
+
export { DEFAULT_MAX_NEIGHBORS, MAX_HOPS } from '../graph/recall.js';
|
|
17
|
+
/** The active scope merges `--scope` with the detected one, which only boosts. */
|
|
18
|
+
export function cliRecallSetting(ctx, explicitScope) {
|
|
19
|
+
return { globalRoot: getGlobalRoot(), primaryIsGlobal: isGlobalStoreRoot(ctx.hippoRoot), activeScope: explicitScope || detectScope() };
|
|
20
|
+
}
|
|
21
|
+
export function cliRecallOrigin(ctx, setting) {
|
|
22
|
+
const localIndex = loadIndex(ctx.hippoRoot);
|
|
23
|
+
const globalOn = isInitialized(setting.globalRoot);
|
|
24
|
+
return { globalOn, isGlobal: (id) => setting.primaryIsGlobal || (globalOn && !localIndex.entries[id]) };
|
|
25
|
+
}
|
|
26
|
+
/** The active snapshot, its session's latest handoff and last five events, each kept only when its scope passes. */
|
|
27
|
+
export function loadCliRecallContinuity(ctx, setting, wanted) {
|
|
28
|
+
if (!wanted || setting.primaryIsGlobal)
|
|
29
|
+
return { activeSnapshot: null, sessionHandoff: null, recentSessionEvents: [] };
|
|
30
|
+
const { hippoRoot, tenantId } = ctx;
|
|
31
|
+
const rawSnapshot = loadActiveTaskSnapshot(hippoRoot, tenantId);
|
|
32
|
+
const sessionId = rawSnapshot?.session_id ?? undefined;
|
|
33
|
+
const rawHandoff = sessionId ? loadLatestHandoff(hippoRoot, tenantId, sessionId) : null;
|
|
34
|
+
const rawEvents = sessionId ? listSessionEvents(hippoRoot, tenantId, { session_id: sessionId, limit: 5 }) : [];
|
|
35
|
+
// The same shared scope rule as api.recall; the active scope merges --scope and detectScope().
|
|
36
|
+
const effectiveScope = setting.activeScope || undefined;
|
|
37
|
+
const passes = (r) => passesScopeFilterForRecall(r.scope ?? null, effectiveScope);
|
|
38
|
+
return {
|
|
39
|
+
activeSnapshot: rawSnapshot && passes(rawSnapshot) ? rawSnapshot : null,
|
|
40
|
+
sessionHandoff: rawHandoff && passes(rawHandoff) ? rawHandoff : null,
|
|
41
|
+
recentSessionEvents: rawEvents.filter(passes),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** The reranker a `--reranker` name picks and the top-k it takes by default; an unknown name throws, a blank one picks none. */
|
|
45
|
+
export function cliRecallReranker(name) {
|
|
46
|
+
const fn = getReranker(name);
|
|
47
|
+
if (!fn)
|
|
48
|
+
return null;
|
|
49
|
+
return { fn, defaultTopK: name === 'jev' || isClefModel(name) ? JEV_DEFAULT_TOP_K : 50 };
|
|
50
|
+
}
|
|
51
|
+
/** The ranked rows a print budget holds, best first; the first `floor` stay whatever they cost. */
|
|
52
|
+
export function fitRecallRows(ranked, budget, floor, cost) {
|
|
53
|
+
return fitBudget(ranked, budget, floor, cost);
|
|
54
|
+
}
|
|
55
|
+
export function recallJsonRow(r, query, showWhy, isGlobal) {
|
|
56
|
+
const base = {
|
|
57
|
+
id: r.entry.id,
|
|
58
|
+
score: r.score,
|
|
59
|
+
strength: r.entry.strength,
|
|
60
|
+
tokens: r.tokens,
|
|
61
|
+
tags: r.entry.tags,
|
|
62
|
+
content: r.entry.content,
|
|
63
|
+
layer: r.entry.layer,
|
|
64
|
+
};
|
|
65
|
+
if (r.entry.layer === Layer.Trace) {
|
|
66
|
+
base.trace_outcome = r.entry.trace_outcome;
|
|
67
|
+
}
|
|
68
|
+
if (r.entry.superseded_by) {
|
|
69
|
+
base.superseded = true;
|
|
70
|
+
base.superseded_by = r.entry.superseded_by;
|
|
71
|
+
}
|
|
72
|
+
if (r.graphVia) {
|
|
73
|
+
base.graphVia = r.graphVia;
|
|
74
|
+
}
|
|
75
|
+
if (showWhy) {
|
|
76
|
+
const explanation = explainMatch(query, r);
|
|
77
|
+
const facets = confidenceFacets(r.entry);
|
|
78
|
+
base.confidence = facets.tier;
|
|
79
|
+
base.aged_out = facets.agedOut;
|
|
80
|
+
base.source = isGlobal ? 'global' : 'local';
|
|
81
|
+
base.reason = explanation.reason;
|
|
82
|
+
base.bm25 = r.bm25;
|
|
83
|
+
base.cosine = r.cosine;
|
|
84
|
+
if (explanation.envelope) {
|
|
85
|
+
base.envelope = explanation.envelope;
|
|
86
|
+
}
|
|
87
|
+
// The ordered lifecycle re-ranking steps, so a caller can see why a row moved.
|
|
88
|
+
if (r.rerankTrace && r.rerankTrace.length > 0) {
|
|
89
|
+
base.rerankTrace = r.rerankTrace;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return base;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=recall-cli.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CliCoreRanker, RecallOpts, RecallResult } from './recall-types.js';
|
|
2
|
+
import type { Context } from './types.js';
|
|
3
|
+
export declare function retrieveWithCliCore(ctx: Context, opts: RecallOpts, core: CliCoreRanker): Promise<RecallResult>;
|
|
4
|
+
//# sourceMappingURL=recall-core.d.ts.map
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// The CLI ranking core as a ranker of retrieve(): rank, let the caller pick the list it shows, then record that list once.
|
|
2
|
+
import { ForbiddenError } from '../core/api-errors.js';
|
|
3
|
+
import { reportAuditWriteFailure } from '../store/audit.js';
|
|
4
|
+
import { decidePlanningFallacy, detectPlanningClaim } from '../predictions/planning-fallacy.js';
|
|
5
|
+
import { rankRecall } from './recall-pipeline.js';
|
|
6
|
+
import { writeRecallTraceAtRoot } from '../store/recall-trace.js';
|
|
7
|
+
import { saveIndex } from '../store/index-and-stats.js';
|
|
8
|
+
import { sqliteStore } from '../store/index.js';
|
|
9
|
+
import { estimateTokens } from '../util/token-text.js';
|
|
10
|
+
import { callerOf, recallAuditMetadata, recallAuditRow, strengthenOf } from './recall-record.js';
|
|
11
|
+
import { RECALL_RECORDING, recordShownRecall } from './recall-finish.js';
|
|
12
|
+
// entriesByIds reads at most this many ids a call.
|
|
13
|
+
const ID_READ_CHUNK = 500;
|
|
14
|
+
export async function retrieveWithCliCore(ctx, opts, core) {
|
|
15
|
+
// This ranker applies the operator's scope rule and may search a second store, so no bearer client may reach it.
|
|
16
|
+
if (!ctx.actor.hostAdmin)
|
|
17
|
+
throw new ForbiddenError('The CLI ranking core serves the host admin only');
|
|
18
|
+
const globalRoot = core.sources?.globalRoot;
|
|
19
|
+
// The ranking core reads hippo.db itself, so its writes go to the same file whatever store the context names.
|
|
20
|
+
const store = sqliteStore(ctx.hippoRoot);
|
|
21
|
+
const ranking = await rankRecall({ hippoRoot: ctx.hippoRoot, globalRoot, tenantId: ctx.tenantId, note: core.note }, { ...core.rank, query: opts.query, sessionId: opts.sessionId, goalTag: opts.goalTag });
|
|
22
|
+
if (ranking.halted) {
|
|
23
|
+
// The stages that ran earned these rows, so the caller's flag error does not drop them.
|
|
24
|
+
if (ranking.goalRecallLog.length > 0)
|
|
25
|
+
await store.finishRecall({ goalLog: ranking.goalRecallLog, audit: [] });
|
|
26
|
+
return resultOf(ranking, []);
|
|
27
|
+
}
|
|
28
|
+
if ('inspect' in core) {
|
|
29
|
+
core.inspect(ranking);
|
|
30
|
+
return resultOf(ranking, ranking.results);
|
|
31
|
+
}
|
|
32
|
+
const planning = await planningFor(ctx, store, opts.query);
|
|
33
|
+
const shown = core.show(ranking, planning?.output ?? {});
|
|
34
|
+
await recordShown(ctx, store, opts, core, { ranking, shown, planningAudit: planning?.audit });
|
|
35
|
+
const result = resultOf(ranking, shown.results);
|
|
36
|
+
if (planning?.output.hint)
|
|
37
|
+
result.planningFallacyHint = planning.output.hint;
|
|
38
|
+
if (planning?.output.watching)
|
|
39
|
+
result.planningFallacyWatching = planning.output.watching;
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
async function planningFor(ctx, store, query) {
|
|
43
|
+
const claim = detectPlanningClaim(query);
|
|
44
|
+
if (!claim)
|
|
45
|
+
return null;
|
|
46
|
+
return decidePlanningFallacy(claim, await store.planningFallacyEvidence(ctx.tenantId, claim.classQueryTokens), ctx.tenantId, ctx.actor.subject);
|
|
47
|
+
}
|
|
48
|
+
function resultOf(ranking, shown) {
|
|
49
|
+
const results = shown.map((r) => ({ id: r.entry.id, content: r.entry.content, score: r.score, layer: r.entry.layer, strength: r.entry.strength }));
|
|
50
|
+
return {
|
|
51
|
+
results,
|
|
52
|
+
total: ranking.totalCandidates + ranking.graphAdded,
|
|
53
|
+
tokens: results.reduce((sum, r) => sum + estimateTokens(r.content), 0),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** Audit rows first: a recall they cannot be written for leaves no strengthen, trace, marker or count, as under the other rankers. */
|
|
57
|
+
async function recordShown(ctx, store, opts, core, done) {
|
|
58
|
+
const { ranking, shown, planningAudit } = done;
|
|
59
|
+
const ids = shown.results.map((r) => r.entry.id);
|
|
60
|
+
const recallRow = recallAuditRow(callerOf(ctx), 'recall', undefined, recallAuditMetadata(opts.query, ids.length));
|
|
61
|
+
const second = core.sources?.globalRoot !== undefined && core.sources.globalRoot !== ctx.hippoRoot ? core.sources.globalRoot : undefined;
|
|
62
|
+
const heldElsewhere = second !== undefined ? await idsNotHeld(store, ids, ctx.tenantId) : [];
|
|
63
|
+
const audited = await finishOrReport(store, {
|
|
64
|
+
goalLog: ranking.goalRecallLog,
|
|
65
|
+
audit: [...(planningAudit ? [planningAudit] : []), ...shown.audit, recallRow],
|
|
66
|
+
strengthen: strengthenOf(ctx, ids),
|
|
67
|
+
});
|
|
68
|
+
if (audited) {
|
|
69
|
+
// The second store logs that it was searched, and strengthens only the rows the first does not hold.
|
|
70
|
+
if (second !== undefined)
|
|
71
|
+
await finishOrReport(sqliteStore(second), { goalLog: [], audit: [recallRow], strengthen: strengthenOf(ctx, heldElsewhere) });
|
|
72
|
+
traceAndMark(ctx, opts, core, shown.results);
|
|
73
|
+
}
|
|
74
|
+
// The caller prints whether or not the record was written, so the ring and the ledger still take this list; `written` holds back the count.
|
|
75
|
+
await recordShownRecall(ctx, store, RECALL_RECORDING.cli, {
|
|
76
|
+
query: opts.query,
|
|
77
|
+
sessionId: opts.sessionId,
|
|
78
|
+
topId: ids[0] ?? null,
|
|
79
|
+
anchoredOn: shown.anchoredOn,
|
|
80
|
+
items: ids.length,
|
|
81
|
+
tokens: shown.tokens,
|
|
82
|
+
ledgerSessionId: core.hostSessionId ?? null,
|
|
83
|
+
written: audited,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
// The caller has ranked and is about to print, so a failed audit write is logged and counted, never thrown.
|
|
87
|
+
async function finishOrReport(store, writes) {
|
|
88
|
+
try {
|
|
89
|
+
await store.finishRecall(writes);
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
reportAuditWriteFailure('recall', String(err));
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async function idsNotHeld(store, ids, tenantId) {
|
|
98
|
+
const held = new Set();
|
|
99
|
+
for (let i = 0; i < ids.length; i += ID_READ_CHUNK) {
|
|
100
|
+
for (const entry of await store.entriesByIds(ids.slice(i, i + ID_READ_CHUNK), tenantId))
|
|
101
|
+
held.add(entry.id);
|
|
102
|
+
}
|
|
103
|
+
return ids.filter((id) => !held.has(id));
|
|
104
|
+
}
|
|
105
|
+
function traceAndMark(ctx, opts, core, shown) {
|
|
106
|
+
// An empty list is traced too, so a coverage gap still reaches the training corpus.
|
|
107
|
+
const traceId = writeRecallTraceAtRoot(ctx.hippoRoot, {
|
|
108
|
+
tenantId: ctx.tenantId,
|
|
109
|
+
sessionId: opts.sessionId || core.hostSessionId || null,
|
|
110
|
+
pipeline: 'cli',
|
|
111
|
+
query: opts.query,
|
|
112
|
+
explainMode: core.rank.why === true,
|
|
113
|
+
results: shown.map((r) => ({ memoryId: r.entry.id, score: r.score, rerankSteps: r.rerankTrace })),
|
|
114
|
+
});
|
|
115
|
+
if (shown.length === 0)
|
|
116
|
+
return;
|
|
117
|
+
// One write for both markers, so `hippo outcome` never pairs these ids with an older trace.
|
|
118
|
+
saveIndex(ctx.hippoRoot, { last_retrieval_ids: shown.map((r) => r.entry.id), last_trace_id: traceId !== null ? String(traceId) : null });
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=recall-core.js.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { AppendAuditOpts } from '../store/audit.js';
|
|
2
|
+
import type { HippoStore } from '../store/index.js';
|
|
3
|
+
import type { TokenSurface } from '../store/token-ledger.js';
|
|
4
|
+
import { type RecallHistorySnapshot } from './recall-history.js';
|
|
5
|
+
import { type RecallSurface } from './recall-record.js';
|
|
6
|
+
import type { Context } from './types.js';
|
|
7
|
+
/** How one surface's recall is recorded. The surfaces differ in these three values and in the list they hand over, nowhere else. */
|
|
8
|
+
export interface RecallRecording {
|
|
9
|
+
/** Whose session rings the recall reads and feeds. */
|
|
10
|
+
readonly ring: RecallSurface;
|
|
11
|
+
/** The label of its token ledger row. */
|
|
12
|
+
readonly ledger: TokenSurface;
|
|
13
|
+
/** 'every': an empty list still reaches the stats write, which then only rewrites stats.json; 'shown': an empty list skips it. */
|
|
14
|
+
readonly stats: 'every' | 'shown';
|
|
15
|
+
}
|
|
16
|
+
/** The surfaces `retrieve` records in full. MCP is pending: src/mcp still feeds its own ring and books its own ledger row, and counts no stats. */
|
|
17
|
+
export declare const RECALL_RECORDING: {
|
|
18
|
+
readonly http: {
|
|
19
|
+
readonly ring: "http";
|
|
20
|
+
readonly ledger: "http_recall";
|
|
21
|
+
readonly stats: "every";
|
|
22
|
+
};
|
|
23
|
+
readonly cli: {
|
|
24
|
+
readonly ring: "cli";
|
|
25
|
+
readonly ledger: "recall";
|
|
26
|
+
readonly stats: "shown";
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/** What a recorded recall takes into ranking. */
|
|
30
|
+
export interface RecallLead {
|
|
31
|
+
readonly recallHistory: RecallHistorySnapshot | undefined;
|
|
32
|
+
readonly leadingAudit: readonly AppendAuditOpts[];
|
|
33
|
+
}
|
|
34
|
+
/** For a surface whose hint `retrieve` judges: the session's history, or the row saying the recall named no session. */
|
|
35
|
+
export declare function recallLead(ctx: Context, how: RecallRecording, query: string, sessionId: string | undefined): RecallLead;
|
|
36
|
+
/** The list a recall showed, as its ranker counted and priced it. */
|
|
37
|
+
export interface ShownList {
|
|
38
|
+
readonly query: string;
|
|
39
|
+
/** The recall's session, which keys the ring. */
|
|
40
|
+
readonly sessionId: string | undefined;
|
|
41
|
+
readonly topId: string | null;
|
|
42
|
+
/** The memory this recall's anchoring hint named; the next recall's cooldown reads it. */
|
|
43
|
+
readonly anchoredOn: string | undefined;
|
|
44
|
+
readonly items: number;
|
|
45
|
+
readonly tokens: number;
|
|
46
|
+
/** The session the ledger row names: the recall's own on HTTP, the host agent's on the CLI. */
|
|
47
|
+
readonly ledgerSessionId: string | null;
|
|
48
|
+
/** False when the audit rows could not be written and the caller answers anyway. */
|
|
49
|
+
readonly written: boolean;
|
|
50
|
+
}
|
|
51
|
+
/** Runs after the recall's own write, in this order: the ring, then the counter, then the ledger. */
|
|
52
|
+
export declare function recordShownRecall(ctx: Context, store: HippoStore, how: RecallRecording, shown: ShownList): Promise<void>;
|
|
53
|
+
//# sourceMappingURL=recall-finish.d.ts.map
|