hippo-memory 2.0.0 → 2.1.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/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +32 -19
- package/dist/api/prompt-hook.js +65 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +28 -7
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +33 -14
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +45 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +23 -23
- package/dist/cli/auth.js +19 -27
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +4 -4
- package/dist/cli/object-verbs.js +10 -13
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +14 -6
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -5
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -6
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -6
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -6
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -5
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -6
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +24 -14
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +21 -16
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +84 -27
- package/dist/core/memory.js +73 -29
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -3
- package/dist/db/connect.js +8 -3
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +26 -13
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -4
- package/dist/db/physics-state.js +13 -20
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +19 -5
- package/dist/db/request-stores.js +14 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +19 -6
- package/dist/entry/store-kit.js +6 -4
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +16 -6
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +69 -34
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +8 -7
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +16 -9
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -7
- package/dist/learn/invalidation.js +56 -27
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +18 -14
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +57 -74
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +52 -21
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +9 -6
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +547 -93
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -19
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +75 -36
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +93 -60
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +8 -10
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +3 -1
- package/dist/store/index.js +1 -0
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +215 -229
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +9 -4
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.js +2 -1
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +84 -33
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -11
- package/dist/store/sqlite/store.js +84 -11
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +19 -12
- package/dist/store/summaries.js +36 -21
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +6 -3
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +24 -10
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +16 -4
- package/dist/util/env.js +78 -25
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +11 -3
- package/dist/util/request-scope.js +13 -4
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +3 -1
- package/dist/util/spawn-argv.js +13 -4
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- 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 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -11
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -4
- package/dist/store/sqlite/local.js +0 -8
|
@@ -1,79 +1,91 @@
|
|
|
1
|
-
import type { ContinuityBlock } from '
|
|
2
|
-
import type { MemoryEntry } from '
|
|
3
|
-
import type { RerankStep, SearchResult } from '
|
|
4
|
-
import type { PlanningFallacyHint, PlanningFallacyOutput, PlanningFallacyWatching } from '
|
|
5
|
-
import type { AnchoringHint, RecallHistorySnapshot } from './
|
|
6
|
-
import type { AvailabilityHint } from '
|
|
7
|
-
import type { AppendAuditOpts } from '
|
|
8
|
-
import type { HippoStore } from '
|
|
9
|
-
import type { CallerProject } from '
|
|
10
|
-
import type { RankRecallOpts, RankRecallResult } from './
|
|
11
|
-
import type { RecallRecording } from './
|
|
1
|
+
import type { ContinuityBlock } from '../../store/port.js';
|
|
2
|
+
import type { MemoryEntry } from '../../core/memory.js';
|
|
3
|
+
import type { RerankStep, SearchResult } from '../../core/search-types.js';
|
|
4
|
+
import type { PlanningFallacyHint, PlanningFallacyOutput, PlanningFallacyWatching } from '../../predictions/planning-fallacy.js';
|
|
5
|
+
import type { AnchoringHint, RecallHistorySnapshot } from './finish.js';
|
|
6
|
+
import type { AvailabilityHint } from '../availability.js';
|
|
7
|
+
import type { AppendAuditOpts } from '../../store/audit.js';
|
|
8
|
+
import type { HippoStore } from '../../store/port.js';
|
|
9
|
+
import type { CallerProject } from '../prompt-hook.js';
|
|
10
|
+
import type { RankRecallOpts, RankRecallResult } from './pipeline.js';
|
|
11
|
+
import type { RecallRecording } from './finish.js';
|
|
12
12
|
export interface RecallOpts {
|
|
13
13
|
query: string;
|
|
14
14
|
limit?: number;
|
|
15
|
-
/** Candidates the scorer loads (default: the store's 200-row window), decoupled from `limit`; NOT a hard cap, as
|
|
16
|
-
*
|
|
15
|
+
/** Candidates the scorer loads (default: the store's 200-row window), decoupled from `limit`; NOT a hard cap, as
|
|
16
|
+
* fresh-tail and summaries can exceed `limit`. Must be a positive finite integer (else `RecallContractError`,
|
|
17
|
+
* `invalid_scorer_window`). Library-only: HTTP, MCP and `client.ts` do not serialize it. */
|
|
17
18
|
scorerWindow?: number;
|
|
18
19
|
/** Candidate order. `recall` always keeps the BM25 order; `retrieve` honours this. */
|
|
19
20
|
mode?: 'bm25' | 'hybrid' | 'physics';
|
|
20
|
-
/** Exact-match scope filter; when undefined or empty, default-deny drops `slack:private:*` memories so an unscoped
|
|
21
|
+
/** Exact-match scope filter; when undefined or empty, default-deny drops `slack:private:*` memories so an unscoped
|
|
22
|
+
* caller cannot surface private channels. */
|
|
21
23
|
scope?: string;
|
|
22
|
-
/** DAG-aware recall (default true): entries overflowing `limit` that share a level-2 parent get that summary appended
|
|
23
|
-
* extra rows. */
|
|
24
|
+
/** DAG-aware recall (default true): entries overflowing `limit` that share a level-2 parent get that summary appended
|
|
25
|
+
* instead, capped at ceil(limit 0.3) extra rows. */
|
|
24
26
|
summarizeOverflow?: boolean;
|
|
25
|
-
/** Fresh tail (default 0 = off, capped at 200): prepend the last N kind='raw' rows (tenant + scope filtered, deduped
|
|
26
|
-
* query terms miss. */
|
|
27
|
+
/** Fresh tail (default 0 = off, capped at 200): prepend the last N kind='raw' rows (tenant + scope filtered, deduped
|
|
28
|
+
* against BM25 hits) even when the query terms miss. */
|
|
27
29
|
freshTailCount?: number;
|
|
28
|
-
/** Restricts the fresh-tail window to one session; without it the
|
|
30
|
+
/** Restricts the fresh-tail window to one session; without it the
|
|
31
|
+
* tail is tenant-wide and surfaces newest rows across ALL sessions. */
|
|
29
32
|
freshTailSessionId?: string;
|
|
30
|
-
/** Include a continuity block (active task snapshot, latest matching handoff, recent session events); default false
|
|
31
|
-
*
|
|
33
|
+
/** Include a continuity block (active task snapshot, latest matching handoff, recent session events); default false
|
|
34
|
+
* to keep the hot path cheap. With no active snapshot, sessionHandoff is null and recentSessionEvents is [], so a
|
|
35
|
+
* stale handoff is not resurrected (use `hippo session resume`). */
|
|
32
36
|
includeContinuity?: boolean;
|
|
33
37
|
project?: CallerProject;
|
|
34
|
-
/** With an active goal stack for `(ctx.tenantId, sessionId)` and `goalTag` unset, `api.recall` applies the goal-stack
|
|
35
|
-
*
|
|
38
|
+
/** With an active goal stack for `(ctx.tenantId, sessionId)` and `goalTag` unset, `api.recall` applies the goal-stack
|
|
39
|
+
* boost; undefined means no boost. Lives on RecallOpts, not Context, because Context is shared by
|
|
40
|
+
* remember/recall/assemble/outcome and the boost is recall-only. */
|
|
36
41
|
sessionId?: string;
|
|
37
|
-
/** Explicit goal-tag override: when set, the goal-stack boost is SUPPRESSED (mirrors the CLI's `goalTag === ''`
|
|
42
|
+
/** Explicit goal-tag override: when set, the goal-stack boost is SUPPRESSED (mirrors the CLI's `goalTag === ''`
|
|
43
|
+
* gate), pinning ranking to one goal. */
|
|
38
44
|
goalTag?: string;
|
|
39
|
-
/** Caller-supplied snapshot of the per-(tenant, session) recall ring; when present, api.recall computes
|
|
40
|
-
*
|
|
45
|
+
/** Caller-supplied snapshot of the per-(tenant, session) recall ring; when present, api.recall computes
|
|
46
|
+
* `anchoringHint` from it, else no anchoring runs here. Pure read: api.recall never mutates it; the caller appends to
|
|
47
|
+
* its own ring afterwards, passing the hint's memoryId as `anchoredOn` for the cooldown. */
|
|
41
48
|
recallHistory?: RecallHistorySnapshot;
|
|
42
|
-
/** Skip computing and emitting availabilityHint, for callers that run their OWN availability detection over a
|
|
43
|
-
*
|
|
49
|
+
/** Skip computing and emitting availabilityHint, for callers that run their OWN availability detection over a
|
|
50
|
+
* different result set (e.g. the MCP handler), to avoid a double audit emission and a hint about a set the caller
|
|
51
|
+
* never surfaces. HTTP and direct SDK callers leave it unset. */
|
|
44
52
|
suppressAvailabilityHint?: boolean;
|
|
45
|
-
/** Capture the lifecycle re-ranking trace (api applies only goal-boost) as `rerankTrace` plus `rerankPipeline:'api'`
|
|
46
|
-
* when unset. The richer CLI stages are not traced here. */
|
|
53
|
+
/** Capture the lifecycle re-ranking trace (api applies only goal-boost) as `rerankTrace` plus `rerankPipeline:'api'`
|
|
54
|
+
* on each item; both fields are absent when unset. The richer CLI stages are not traced here. */
|
|
47
55
|
explain?: boolean;
|
|
48
|
-
/** Skip the recall_traces row, for callers that trace their OWN different result set, so the training corpus gets no
|
|
56
|
+
/** Skip the recall_traces row, for callers that trace their OWN different result set, so the training corpus gets no
|
|
57
|
+
* trace mislabeled 'api'.
|
|
49
58
|
* Under `showRanked` it also drops the 'mcp' trace of the shown list. HTTP and direct SDK callers leave it unset. */
|
|
50
59
|
suppressRecallTrace?: boolean;
|
|
51
|
-
/** Set only by the MCP recall tool, which ranks with its own scorer and drops copies from its own final list: this
|
|
52
|
-
*
|
|
60
|
+
/** Set only by the MCP recall tool, which ranks with its own scorer and drops copies from its own final list: this
|
|
61
|
+
* call then keeps a memory that a merged row in the same result holds word for word. Other callers leave it unset. */
|
|
53
62
|
keepHeldCopies?: boolean;
|
|
54
63
|
leadingAudit?: readonly AppendAuditOpts[];
|
|
55
64
|
recordAs?: RecallRecording;
|
|
56
65
|
/** MCP recall only: `retrieve` ranks the whole scoped store and strengthens and traces
|
|
57
66
|
* (pipeline 'mcp') just the ids this returns; `results` stays the window band. */
|
|
58
67
|
showRanked?: (ranking: StoreRanking, result: RecallResult) => ShownRanking;
|
|
59
|
-
/** Named ranker: `retrieve` ranks with the CLI ranking core. Unset, it ranks the SQL BM25 band, or the wide hybrid
|
|
68
|
+
/** Named ranker: `retrieve` ranks with the CLI ranking core. Unset, it ranks the SQL BM25 band, or the wide hybrid
|
|
69
|
+
* list under `showRanked`. */
|
|
60
70
|
cliCore?: CliCoreRanker;
|
|
61
71
|
}
|
|
62
72
|
interface CliCoreRanking {
|
|
63
73
|
rank: Omit<RankRecallOpts, 'query' | 'sessionId' | 'goalTag'>;
|
|
64
|
-
/** A second store searched beside `ctx.hippoRoot
|
|
74
|
+
/** A second store searched beside `ctx.hippoRoot`: ranking reads
|
|
75
|
+
* hippo.db under `globalRoot`, and its recall rows go to `globalStore`. */
|
|
65
76
|
sources?: {
|
|
66
|
-
globalRoot
|
|
67
|
-
globalStore
|
|
77
|
+
readonly globalRoot: string;
|
|
78
|
+
readonly globalStore: HippoStore;
|
|
68
79
|
};
|
|
69
80
|
/** Receives each operator note when ranking reaches it. */
|
|
70
81
|
note?: (line: string) => void;
|
|
71
82
|
}
|
|
72
|
-
/** A recall the caller prints. `show` runs once ranking ends,
|
|
83
|
+
/** A recall the caller prints. `show` runs once ranking ends,
|
|
84
|
+
* unless it halted; `retrieve` then records the list it returns. */
|
|
73
85
|
export interface CliCoreRecall extends CliCoreRanking {
|
|
74
86
|
/** The host agent's session: it stamps the token ledger row, and the trace when the recall names no session. */
|
|
75
87
|
hostSessionId?: string;
|
|
76
|
-
show: (ranking: RankRecallResult, planning: PlanningFallacyOutput) => ShownCliCore
|
|
88
|
+
show: (ranking: RankRecallResult, planning: PlanningFallacyOutput) => ShownCliCore | Promise<ShownCliCore>;
|
|
77
89
|
}
|
|
78
90
|
/** A read-only look at the ranking (`hippo explain`): no hint is evaluated and nothing is written. */
|
|
79
91
|
export interface CliCoreInspection extends CliCoreRanking {
|
|
@@ -90,18 +102,20 @@ export interface ShownCliCore {
|
|
|
90
102
|
tokens: number;
|
|
91
103
|
anchoredOn?: string;
|
|
92
104
|
}
|
|
93
|
-
/** `ids`: what the caller showed; `audit`: its own rows, written after the recall's and in the same transaction, so all
|
|
105
|
+
/** `ids`: what the caller showed; `audit`: its own rows, written after the recall's and in the same transaction, so all
|
|
106
|
+
* land or none. */
|
|
94
107
|
export interface ShownRanking {
|
|
95
108
|
ids: readonly string[];
|
|
96
109
|
audit: readonly AppendAuditOpts[];
|
|
97
110
|
}
|
|
98
|
-
/** `ranked`: every scored row, best first, goal boost applied,
|
|
111
|
+
/** `ranked`: every scored row, best first, goal boost applied,
|
|
112
|
+
* entries as loaded; `pool`: the store after the scope filter. */
|
|
99
113
|
export interface StoreRanking {
|
|
100
114
|
ranked: SearchResult[];
|
|
101
115
|
pool: MemoryEntry[];
|
|
102
116
|
droppedByScope: number;
|
|
103
117
|
}
|
|
104
|
-
export type { ContinuityBlock } from '
|
|
118
|
+
export type { ContinuityBlock } from '../../store/port.js';
|
|
105
119
|
export interface RecallResultItem {
|
|
106
120
|
id: string;
|
|
107
121
|
content: string;
|
|
@@ -114,12 +128,14 @@ export interface RecallResultItem {
|
|
|
114
128
|
substitutedFor?: string[];
|
|
115
129
|
/** Cached descendant count from schema v25; non-zero for level-2+ rows. */
|
|
116
130
|
descendantCount?: number;
|
|
117
|
-
/** True for rows from the most-recent-N kind='raw' window rather
|
|
131
|
+
/** True for rows from the most-recent-N kind='raw' window rather
|
|
132
|
+
* than the BM25 match; render them in a separate "recent" band. */
|
|
118
133
|
isFreshTail?: boolean;
|
|
119
|
-
/** Ordered lifecycle re-ranking steps that mutated this row's `score` after candidate generation (on the api
|
|
120
|
-
*
|
|
134
|
+
/** Ordered lifecycle re-ranking steps that mutated this row's `score` after candidate generation (on the api
|
|
135
|
+
* pipeline, only goal-boost). Populated ONLY when `RecallOpts.explain` is set; absent otherwise. */
|
|
121
136
|
rerankTrace?: RerankStep[];
|
|
122
|
-
/** Pipeline that produced `rerankTrace`: 'api' when api.recall set `explain`; the CLI carries its trace on
|
|
137
|
+
/** Pipeline that produced `rerankTrace`: 'api' when api.recall set `explain`; the CLI carries its trace on
|
|
138
|
+
* `SearchResult` and leaves this absent. */
|
|
123
139
|
rerankPipeline?: 'cli' | 'api';
|
|
124
140
|
}
|
|
125
141
|
export interface RecallResult {
|
|
@@ -127,48 +143,57 @@ export interface RecallResult {
|
|
|
127
143
|
total: number;
|
|
128
144
|
tokens: number;
|
|
129
145
|
continuity?: ContinuityBlock;
|
|
130
|
-
/** Tokens consumed by the continuity block (snapshot, handoff and the last 5 events' full content), each via
|
|
146
|
+
/** Tokens consumed by the continuity block (snapshot, handoff and the last 5 events' full content), each via
|
|
147
|
+
* Math.ceil(len/4) like `tokens`; undefined
|
|
131
148
|
* when not requested. Callers needing a tighter budget should truncate event.content themselves. */
|
|
132
149
|
continuityTokens?: number;
|
|
133
|
-
/** Scorer window used for this recall: `opts.scorerWindow`, else the store default (200). Optional in the type so
|
|
134
|
-
* compile; always present on values returned by `api.recall`. */
|
|
150
|
+
/** Scorer window used for this recall: `opts.scorerWindow`, else the store default (200). Optional in the type so
|
|
151
|
+
* test fakes built before the field still compile; always present on values returned by `api.recall`. */
|
|
135
152
|
windowSize?: number;
|
|
136
|
-
/** WYSIATI cutoff transparency: what was excluded from `results[]` and why, always populated by `api.recall`,
|
|
137
|
-
*
|
|
153
|
+
/** WYSIATI cutoff transparency: what was excluded from `results[]` and why, always populated by `api.recall`,
|
|
154
|
+
* `cmdRecall` and the MCP `hippo_recall` handler. Counters are per-pipeline reports of that pipeline's own filter
|
|
155
|
+
* sites, not normalised across pipelines. Optional for test fakes. */
|
|
138
156
|
suppressionSummary?: RecallSuppressionSummary;
|
|
139
|
-
/** Planning-fallacy hint: base-rate stats when the query carries a forward-prediction phrase and the closest
|
|
140
|
-
*
|
|
157
|
+
/** Planning-fallacy hint: base-rate stats when the query carries a forward-prediction phrase and the closest
|
|
158
|
+
* prediction class has closed data. Pipeline-invariant (depends only on queryText, tenantId, predictions state), so
|
|
159
|
+
* MCP and CLI read it from here. Disabled by `HIPPO_AUTODEBIAS=off`. */
|
|
141
160
|
planningFallacyHint?: PlanningFallacyHint;
|
|
142
|
-
/** "Watching" variant emitted when the forward-claim regex matched but no baserate could be produced (no class
|
|
161
|
+
/** "Watching" variant emitted when the forward-claim regex matched but no baserate could be produced (no class
|
|
162
|
+
* overlap, or a tie at the best score).
|
|
143
163
|
* Mutually exclusive with `planningFallacyHint`; pipeline-invariant. Disabled by `HIPPO_AUTODEBIAS=off`. */
|
|
144
164
|
planningFallacyWatching?: PlanningFallacyWatching;
|
|
145
|
-
/** Anchoring hint from api.recall's own compute against `opts.recallHistory` (query_repeat or memory_dominance); each
|
|
146
|
-
*
|
|
165
|
+
/** Anchoring hint from api.recall's own compute against `opts.recallHistory` (query_repeat or memory_dominance); each
|
|
166
|
+
* pipeline computes its OWN hint. Null on CLI-routed calls, since cmdRecall does not thread its ring through
|
|
167
|
+
* `opts.recallHistory`. Disabled by `HIPPO_ANCHORING=off`. */
|
|
147
168
|
anchoringHint?: AnchoringHint;
|
|
148
|
-
/** Availability/recency-bias hint: per-pipeline, soft warning only (never filters or reorders); fires when the
|
|
169
|
+
/** Availability/recency-bias hint: per-pipeline, soft warning only (never filters or reorders); fires when the
|
|
170
|
+
* returned slice is recency-dominated
|
|
149
171
|
* while older relevant matches in the pool were passed over. Disabled by `HIPPO_AVAILABILITY=off`. */
|
|
150
172
|
availabilityHint?: AvailabilityHint;
|
|
151
173
|
}
|
|
152
|
-
/** WYSIATI cutoff transparency: what the pipeline excluded from `results[]`, so the agent does not treat the cutoff as
|
|
153
|
-
*
|
|
174
|
+
/** WYSIATI cutoff transparency: what the pipeline excluded from `results[]`, so the agent does not treat the cutoff as
|
|
175
|
+
* the full picture. Counters are honest per-path reports of the pipeline that produced this RecallResult, not
|
|
176
|
+
* normalised across pipelines. */
|
|
154
177
|
export interface RecallSuppressionSummary {
|
|
155
178
|
/** Candidates loaded from the store before any post-load filter or limit cut;
|
|
156
179
|
* each pipeline counts at its own load (api.recall: after `loadRecallSearchEntries`). */
|
|
157
180
|
totalCandidates: number;
|
|
158
|
-
/** Candidates dropped by any non-budget filter site, pre- or post-rank; the final limit slice is counted in
|
|
159
|
-
*
|
|
181
|
+
/** Candidates dropped by any non-budget filter site, pre- or post-rank; the final limit slice is counted in
|
|
182
|
+
* droppedByBudget instead. Each pipeline counts its own filters (cmdRecall: --as-of, superseded, --filter-conflicts,
|
|
183
|
+
* --outcome, --layer; MCP: scope filter before search). */
|
|
160
184
|
droppedPreRank: number;
|
|
161
|
-
/** Candidates loaded but cut by the final `limit` slice after scoring (api.recall: `entries.length -
|
|
162
|
-
* post-slice). */
|
|
185
|
+
/** Candidates loaded but cut by the final `limit` slice after scoring (api.recall: `entries.length -
|
|
186
|
+
* baseSlice.length`; other pipelines count pre- minus post-slice). */
|
|
163
187
|
droppedByBudget: number;
|
|
164
|
-
/** DAG-L2 summaries substituted back in to mitigate overflow (api.recall: after the `summarizeOverflow` block;
|
|
165
|
-
* apiResult.tailOrSummary). */
|
|
188
|
+
/** DAG-L2 summaries substituted back in to mitigate overflow (api.recall: after the `summarizeOverflow` block;
|
|
189
|
+
* cmdRecall: 0; MCP: rows from apiResult.tailOrSummary). */
|
|
166
190
|
summarySubstitutionsAdded: number;
|
|
167
|
-
/** Fresh-tail `kind='raw'` rows prepended (api.recall: `freshRanked.length` when `freshTailCount > 0`; cmdRecall: 0;
|
|
168
|
-
* apiResult.tailOrSummary). */
|
|
191
|
+
/** Fresh-tail `kind='raw'` rows prepended (api.recall: `freshRanked.length` when `freshTailCount > 0`; cmdRecall: 0;
|
|
192
|
+
* MCP: rows from apiResult.tailOrSummary). */
|
|
169
193
|
freshTailAdded: number;
|
|
170
|
-
/** Memories suppressed by interference: incremented by 1 PER PIPELINE when its own memory_dominance verdict fires
|
|
171
|
-
* src/api/recall
|
|
194
|
+
/** Memories suppressed by interference: incremented by 1 PER PIPELINE when its own memory_dominance verdict fires
|
|
195
|
+
* (see `detectAnchoring()` in src/api/recall/finish.ts). Each pipeline bumps its OWN summary from its own detector
|
|
196
|
+
* and ring buffer, so this is not a cross-pipeline aggregate. */
|
|
172
197
|
suppressedByInterference: number;
|
|
173
198
|
}
|
|
174
|
-
//# sourceMappingURL=
|
|
199
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { HandoffEvidence } from '../core/handoff.js';
|
|
2
2
|
import type { TaskSnapshot } from '../store/rows.js';
|
|
3
|
-
import type { Context } from './types.js';
|
|
3
|
+
import type { Context, ContextWith } from './types.js';
|
|
4
4
|
/** What closing one ended session needs from the host; the two readers run only when the handoff is written. */
|
|
5
5
|
export interface SessionClose {
|
|
6
6
|
sessionId: string | null;
|
|
7
|
-
/** A reply's end, not the session's: the handoff is updated in place and the snapshot stays for the next
|
|
7
|
+
/** A reply's end, not the session's: the handoff is updated in place and the snapshot stays for the next
|
|
8
|
+
* compaction. */
|
|
8
9
|
turn: boolean;
|
|
9
10
|
/** The transcript's working state, or null with no readable transcript. */
|
|
10
11
|
workingState: () => Pick<TaskSnapshot, 'task' | 'summary' | 'next_step'> | null;
|
|
@@ -12,14 +13,17 @@ export interface SessionClose {
|
|
|
12
13
|
/** One line to the session-end log. */
|
|
13
14
|
log: (line: string) => void;
|
|
14
15
|
}
|
|
15
|
-
/** Writes the session's handoff, then closes its snapshot unless `turn`; each step logs its own failure and never
|
|
16
|
-
*
|
|
17
|
-
export declare function closeEndedSession(ctx:
|
|
18
|
-
/** Books the ending session's re-reads in each store its ledger rows can land in (`ctx.hippoRoot` and global); returns
|
|
16
|
+
/** Writes the session's handoff, then closes its snapshot unless `turn`; each step logs its own failure and never
|
|
17
|
+
* throws. The handoff goes first, while the snapshot writeSessionEndHandoff reads is still active. */
|
|
18
|
+
export declare function closeEndedSession(ctx: ContextWith<'sessions'>, close: SessionClose): Promise<void>;
|
|
19
|
+
/** Books the ending session's re-reads in each store its ledger rows can land in (`ctx.hippoRoot` and global); returns
|
|
20
|
+
* the log lines. */
|
|
19
21
|
export declare function bookSessionRereads(ctx: Context, transcriptPath: string | undefined, sessionId: string | null): Promise<string[]>;
|
|
20
|
-
/** The block a compaction lost: the fresh task snapshot and its session trail, or null with none or another session's
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
/** The block a compaction lost: the fresh task snapshot and its session trail, or null with none or another session's
|
|
23
|
+
* snapshot. */
|
|
24
|
+
export declare function compactResumeBlock(ctx: ContextWith<'sessions'>, payloadSessionId: string | null): Promise<string | null>;
|
|
25
|
+
/** What one session-end run needs from its host; the host owns sleep, transcript reading and capture, this module owns
|
|
26
|
+
* the order. */
|
|
23
27
|
export interface SessionEndWork<Scan> {
|
|
24
28
|
mode: 'turn' | 'full';
|
|
25
29
|
hippoRoot: string;
|
|
@@ -27,9 +31,9 @@ export interface SessionEndWork<Scan> {
|
|
|
27
31
|
sessionId: string | null;
|
|
28
32
|
transcriptPath: string | undefined;
|
|
29
33
|
/** Builds the call context for one store root. */
|
|
30
|
-
contextFor: (root: string) =>
|
|
31
|
-
/** The store the run captures into: the project store, else global. */
|
|
32
|
-
storeRoot: () => string;
|
|
34
|
+
contextFor: (root: string) => ContextWith<'sessions'>;
|
|
35
|
+
/** The store the run captures into: the project store, else global; null when neither exists. */
|
|
36
|
+
storeRoot: () => string | null;
|
|
33
37
|
/** One line to the session-end log; `startFresh` restarts the file. */
|
|
34
38
|
log: (line: string, opts?: {
|
|
35
39
|
startFresh?: boolean;
|
package/dist/api/session-end.js
CHANGED
|
@@ -1,35 +1,38 @@
|
|
|
1
1
|
// The store writes a session's end makes after sleep and capture (handoff, snapshot close, re-read count), and the
|
|
2
2
|
// compact-resume read; the hook verbs keep stdin, spawning and the log file.
|
|
3
3
|
import * as path from 'path';
|
|
4
|
-
import { isInitialized } from '../core/project-identity.js';
|
|
5
|
-
import { closeTaskSnapshotsForSession, listSessionEvents, loadActiveTaskSnapshot, loadFreshActiveTaskSnapshot } from '../store/sessions.js';
|
|
6
|
-
import { writeSessionEndHandoff } from '../store/handoffs.js';
|
|
7
4
|
import { readApiCalls, recordRereads } from '../store/token-ledger.js';
|
|
8
|
-
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
9
5
|
import { truncateCodePointSafe } from '../util/transcript-tail.js';
|
|
10
|
-
import { errorMessage, log } from '../util/log.js';
|
|
6
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
11
7
|
import { COMPACT_RESUME_EVENT_CONTENT_CAP, COMPACT_RESUME_MAX_AGE_MS, compactResumeText } from './context-render.js';
|
|
12
|
-
/** Writes the session's handoff, then closes its snapshot unless `turn`; each step logs its own failure and never
|
|
13
|
-
*
|
|
14
|
-
export function closeEndedSession(ctx, close) {
|
|
8
|
+
/** Writes the session's handoff, then closes its snapshot unless `turn`; each step logs its own failure and never
|
|
9
|
+
* throws. The handoff goes first, while the snapshot writeSessionEndHandoff reads is still active. */
|
|
10
|
+
export async function closeEndedSession(ctx, close) {
|
|
15
11
|
if (close.sessionId)
|
|
16
|
-
writeEndHandoff(ctx, close.sessionId, close);
|
|
12
|
+
await writeEndHandoff(ctx, close.sessionId, close);
|
|
17
13
|
if (close.turn) {
|
|
18
14
|
close.log('skip snapshot close: turn mode');
|
|
19
15
|
return;
|
|
20
16
|
}
|
|
21
|
-
closeSnapshot(ctx, close.sessionId, close.log);
|
|
17
|
+
await closeSnapshot(ctx, close.sessionId, close.log);
|
|
22
18
|
}
|
|
23
|
-
function writeEndHandoff(ctx, sessionId, close) {
|
|
19
|
+
async function writeEndHandoff(ctx, sessionId, close) {
|
|
20
|
+
const { sessions } = ctx.store;
|
|
24
21
|
try {
|
|
25
|
-
const ownSnapshot =
|
|
26
|
-
// A never-compacted session has no snapshot; read even when it has one, as another session's PreCompact can take
|
|
22
|
+
const ownSnapshot = (await sessions.loadSnapshot(ctx.tenantId, null))?.session_id === sessionId;
|
|
23
|
+
// A never-compacted session has no snapshot; read even when it has one, as another session's PreCompact can take
|
|
24
|
+
// the slot before the write.
|
|
27
25
|
const derived = close.workingState();
|
|
28
26
|
if (!ownSnapshot && !derived) {
|
|
29
27
|
close.log('skip: no snapshot or transcript for session');
|
|
30
28
|
return;
|
|
31
29
|
}
|
|
32
|
-
const handoff = writeSessionEndHandoff(ctx.
|
|
30
|
+
const handoff = await sessions.writeSessionEndHandoff(ctx.tenantId, {
|
|
31
|
+
sessionId,
|
|
32
|
+
evidence: close.evidence(),
|
|
33
|
+
derived,
|
|
34
|
+
inPlace: close.turn,
|
|
35
|
+
});
|
|
33
36
|
close.log(handoff ? `wrote handoff for session ${sessionId}` : `skip: kept the existing handoff for session ${sessionId}`);
|
|
34
37
|
}
|
|
35
38
|
catch (err) {
|
|
@@ -37,10 +40,10 @@ function writeEndHandoff(ctx, sessionId, close) {
|
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
// If session-end never fires (crash, kill -9), the freshness bound in loadFreshActiveTaskSnapshot is the backstop.
|
|
40
|
-
function closeSnapshot(ctx, sessionId, line) {
|
|
43
|
+
async function closeSnapshot(ctx, sessionId, line) {
|
|
41
44
|
try {
|
|
42
45
|
if (sessionId) {
|
|
43
|
-
const closed =
|
|
46
|
+
const closed = await ctx.store.sessions.closeSessionSnapshots(ctx.tenantId, sessionId, 'session-ended', null);
|
|
44
47
|
line(`closed ${closed} active snapshot(s) for session ${sessionId}`);
|
|
45
48
|
}
|
|
46
49
|
else {
|
|
@@ -51,7 +54,8 @@ function closeSnapshot(ctx, sessionId, line) {
|
|
|
51
54
|
line(`snapshot close failed: ${errorMessage(err)}`);
|
|
52
55
|
}
|
|
53
56
|
}
|
|
54
|
-
/** Books the ending session's re-reads in each store its ledger rows can land in (`ctx.hippoRoot` and global); returns
|
|
57
|
+
/** Books the ending session's re-reads in each store its ledger rows can land in (`ctx.hippoRoot` and global); returns
|
|
58
|
+
* the log lines. */
|
|
55
59
|
export async function bookSessionRereads(ctx, transcriptPath, sessionId) {
|
|
56
60
|
if (!transcriptPath || !sessionId)
|
|
57
61
|
return [];
|
|
@@ -62,7 +66,8 @@ export async function bookSessionRereads(ctx, transcriptPath, sessionId) {
|
|
|
62
66
|
catch (err) {
|
|
63
67
|
return [`skip re-read count: cannot read the transcript: ${errorMessage(err)}`];
|
|
64
68
|
}
|
|
65
|
-
const roots = new Set([ctx.
|
|
69
|
+
const roots = new Set([(ctx.reach?.hasLocal ?? true) ? ctx.hippoRoot : null, ctx.reach?.global?.root]
|
|
70
|
+
.flatMap((root) => (root ? [path.resolve(root)] : [])));
|
|
66
71
|
const lines = [];
|
|
67
72
|
let tokens = 0;
|
|
68
73
|
for (const root of roots) {
|
|
@@ -77,24 +82,30 @@ export async function bookSessionRereads(ctx, transcriptPath, sessionId) {
|
|
|
77
82
|
lines.push(`re-read ${tokens} tokens over ${read.calls.length} model calls for session ${sessionId}${skipped}`);
|
|
78
83
|
return lines;
|
|
79
84
|
}
|
|
80
|
-
/** The block a compaction lost: the fresh task snapshot and its session trail, or null with none or another session's
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
/** The block a compaction lost: the fresh task snapshot and its session trail, or null with none or another session's
|
|
86
|
+
* snapshot. */
|
|
87
|
+
export async function compactResumeBlock(ctx, payloadSessionId) {
|
|
88
|
+
const { sessions } = ctx.store;
|
|
89
|
+
const snapshot = await sessions.loadFreshSnapshot(ctx.tenantId, { maxAgeMs: COMPACT_RESUME_MAX_AGE_MS }, null);
|
|
90
|
+
// Concurrent sessions must not cross-restore: only when both ids are present and differ, so a manual run with no
|
|
91
|
+
// payload id still prints.
|
|
92
|
+
if (!snapshot)
|
|
85
93
|
return null;
|
|
94
|
+
if (payloadSessionId !== null && snapshot.session_id !== null && payloadSessionId !== snapshot.session_id) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
86
97
|
// A bad trail row costs the trail, not the snapshot; stderr stays out of the model's context.
|
|
87
98
|
let events = [];
|
|
88
99
|
try {
|
|
89
100
|
if (snapshot.session_id) {
|
|
90
|
-
events =
|
|
101
|
+
events = (await sessions.listEvents(ctx.tenantId, { sessionId: snapshot.session_id })).map((e) => ({
|
|
91
102
|
...e,
|
|
92
103
|
content: truncateCodePointSafe(e.content, COMPACT_RESUME_EVENT_CONTENT_CAP),
|
|
93
104
|
}));
|
|
94
105
|
}
|
|
95
106
|
}
|
|
96
107
|
catch (err) {
|
|
97
|
-
log.warn(`hippo compact-resume: trail skipped: ${errorMessage(err)}
|
|
108
|
+
log.warn(`hippo compact-resume: trail skipped: ${errorMessage(err)}`, errorFields(err));
|
|
98
109
|
}
|
|
99
110
|
return compactResumeText(snapshot, events);
|
|
100
111
|
}
|
|
@@ -102,13 +113,18 @@ export function compactResumeBlock(ctx, payloadSessionId) {
|
|
|
102
113
|
export async function sessionEndWork(w) {
|
|
103
114
|
const rereadLog = await bookSessionRereads(w.contextFor(w.hippoRoot), w.transcriptPath, w.sessionId)
|
|
104
115
|
.catch((err) => [`re-read count failed: ${errorMessage(err)}`]);
|
|
105
|
-
// Sleep starts the log file afresh, so the lines go in after it; on exit too, in case sleep exits the process.
|
|
106
|
-
|
|
107
|
-
|
|
116
|
+
// Sleep starts the log file afresh, so the lines go in after it; on exit too, in case sleep exits the process. A
|
|
117
|
+
// flushed log drops its exit listener, so a long-lived host does not gain one per session; it stays only while lines
|
|
118
|
+
// wait.
|
|
119
|
+
const flushRereadLog = () => {
|
|
120
|
+
process.off('exit', flushRereadLog);
|
|
121
|
+
for (const line of rereadLog.splice(0))
|
|
122
|
+
w.log(line);
|
|
123
|
+
};
|
|
108
124
|
process.once('exit', flushRereadLog);
|
|
109
125
|
// A folder with neither a project nor a global store must not get one made.
|
|
110
126
|
const store = w.storeRoot();
|
|
111
|
-
if (
|
|
127
|
+
if (store === null) {
|
|
112
128
|
w.log('skip: no hippo store for this folder or globally', { startFresh: true });
|
|
113
129
|
flushRereadLog();
|
|
114
130
|
return;
|
|
@@ -120,7 +136,7 @@ export async function sessionEndWork(w) {
|
|
|
120
136
|
w.digest(scan, (line) => w.log(line));
|
|
121
137
|
// Only this session's snapshot, and only after sleep and capture.
|
|
122
138
|
const closeLog = (line) => w.log(line);
|
|
123
|
-
closeEndedSession(w.contextFor(store), {
|
|
139
|
+
await closeEndedSession(w.contextFor(store), {
|
|
124
140
|
sessionId: w.sessionId,
|
|
125
141
|
turn: w.mode === 'turn',
|
|
126
142
|
workingState: () => (w.transcriptPath ? w.workingState(closeLog) : null),
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { HippoConfig } from '
|
|
1
|
+
import type { HippoConfig } from '../../core/config.js';
|
|
2
2
|
export declare const autoSleepInFlight: Set<string>;
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Runs one auto-sleep consolidation of `hippoRoot`: the HTTP server passes one that runs it off its event loop, in a
|
|
5
|
+
* child process; stdio passes one that runs it in its own.
|
|
6
|
+
*/
|
|
4
7
|
export type AutoSleepRunner = (hippoRoot: string) => Promise<void>;
|
|
5
8
|
export interface AutoSleepDue {
|
|
6
9
|
enabled: boolean;
|
|
@@ -10,7 +13,8 @@ export interface AutoSleepDue {
|
|
|
10
13
|
}
|
|
11
14
|
/** Counts only when enabled: the count opens the store. */
|
|
12
15
|
export declare function autoSleepDue(hippoRoot: string, tenantId: string, config: HippoConfig['autoSleep']): AutoSleepDue;
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
+
/**
|
|
17
|
+
* One run per store at a time; `allowed` is the caller's own gate. Consolidation is host-wide, so only the host tenant
|
|
18
|
+
* may start it. */
|
|
19
|
+
export declare function startAutoSleepIfDue(hippoRoot: string, tenantId: string, config: HippoConfig['autoSleep'], allowed: boolean, run: AutoSleepRunner): void;
|
|
16
20
|
//# sourceMappingURL=auto-sleep.d.ts.map
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
// When a write starts a background sleep; the MCP remember tool and the session-close hook share it.
|
|
2
|
-
import { errorFields, errorMessage, log } from '
|
|
3
|
-
import { countCreatedSinceLastSleep } from '
|
|
4
|
-
import {
|
|
5
|
-
import { outsideRequestStores, runWithRequestStores, scopedBusyWait } from '../db/index.js';
|
|
6
|
-
import { resolveTenantId } from '../store/tenant.js';
|
|
2
|
+
import { errorFields, errorMessage, log } from '../../util/log.js';
|
|
3
|
+
import { countCreatedSinceLastSleep } from '../../store/index-and-stats.js';
|
|
4
|
+
import { resolveTenantId } from '../../store/tenant.js';
|
|
7
5
|
export const autoSleepInFlight = new Set();
|
|
8
6
|
/** Counts only when enabled: the count opens the store. */
|
|
9
7
|
export function autoSleepDue(hippoRoot, tenantId, config) {
|
|
@@ -11,8 +9,9 @@ export function autoSleepDue(hippoRoot, tenantId, config) {
|
|
|
11
9
|
const count = enabled ? countCreatedSinceLastSleep(hippoRoot, tenantId) : 0;
|
|
12
10
|
return { enabled, count, threshold, due: enabled && count >= threshold };
|
|
13
11
|
}
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
12
|
+
/**
|
|
13
|
+
* One run per store at a time; `allowed` is the caller's own gate. Consolidation is host-wide, so only the host tenant
|
|
14
|
+
* may start it. */
|
|
16
15
|
export function startAutoSleepIfDue(hippoRoot, tenantId, config, allowed, run) {
|
|
17
16
|
if (!allowed ||
|
|
18
17
|
!config.enabled ||
|
|
@@ -22,11 +21,7 @@ export function startAutoSleepIfDue(hippoRoot, tenantId, config, allowed, run) {
|
|
|
22
21
|
return;
|
|
23
22
|
autoSleepInFlight.add(hippoRoot);
|
|
24
23
|
// Fire-and-forget (never block the response); an unhandled rejection would kill the server, so log it.
|
|
25
|
-
|
|
26
|
-
const busyWaitMs = scopedBusyWait();
|
|
27
|
-
const started = run
|
|
28
|
-
? run(hippoRoot)
|
|
29
|
-
: outsideRequestStores(() => runWithRequestStores(() => consolidate(hippoRoot), { busyWaitMs }));
|
|
24
|
+
const started = run(hippoRoot);
|
|
30
25
|
started
|
|
31
26
|
.catch((err) => {
|
|
32
27
|
log.error(`auto-sleep consolidate failed (tenant ${tenantId}): ${errorMessage(err)}`, errorFields(err));
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DormantMemory, ListDormantOpts } from '../../store/dormant.js';
|
|
2
|
+
import { type MemoryEntry } from '../../core/memory.js';
|
|
3
|
+
import type { ContextWith } from '../types.js';
|
|
4
|
+
type DormantContext = ContextWith<'dormant'>;
|
|
5
|
+
/**
|
|
6
|
+
* A tenant's dormant memories (src/store/dormant.ts): what sleep moved out of active memory when `dormant.enabled` is
|
|
7
|
+
* on. Newest first;
|
|
8
|
+
* `opts.query` keeps rows containing every term (case-insensitive). */
|
|
9
|
+
export declare function listDormant(ctx: DormantContext, opts?: ListDormantOpts): Promise<DormantMemory[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Restores a dormant memory as if just recalled, with a full half-life; a row set aside by audit repair returns
|
|
12
|
+
* `verified`.
|
|
13
|
+
* Throws if the tenant has no such dormant id or a live memory holds it, and RejectedValueError if the value was since
|
|
14
|
+
* rejected (the dormant copy stays).
|
|
15
|
+
*/
|
|
16
|
+
export declare function restoreDormant(ctx: DormantContext, id: string): Promise<MemoryEntry>;
|
|
17
|
+
/**
|
|
18
|
+
* Permanently deletes a dormant memory, the explicit "forget it for good"; throws when the tenant has no dormant memory
|
|
19
|
+
* with that id.
|
|
20
|
+
*/
|
|
21
|
+
export declare function forgetDormant(ctx: DormantContext, id: string): Promise<void>;
|
|
22
|
+
/** Whether the tenant holds a dormant memory with this id that the caller may touch (for "not found" hints). */
|
|
23
|
+
export declare function isDormant(ctx: DormantContext, id: string): Promise<boolean>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=dormant.d.ts.map
|