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,15 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Store-level dedup: same text apart from spacing, keeping the stronger copy; split out so `api.sleep` can dedupe
|
|
3
|
+
* without cli -> api imports.
|
|
4
|
+
* Survivor order is total and tenant-scoped: strength bucket, retrieval_count, then compareEntryIdentity; raw and
|
|
5
|
+
* superseded rows are not candidates.
|
|
6
|
+
*/
|
|
3
7
|
import { textOverlap } from '../util/tokenize.js';
|
|
4
|
-
import { loadCurrentDistilledEntries } from '../store/entry-reads.js';
|
|
5
|
-
import { deleteEntriesOneByOne, memoriesBackingObjects } from '../store/delete-and-batch.js';
|
|
6
8
|
import { compareEntryIdentity } from '../core/compare.js';
|
|
7
9
|
import { canAutoDelete } from '../core/memory.js';
|
|
8
10
|
import { derivationPartitionKey } from '../core/recall-scope.js';
|
|
9
11
|
import { duplicateKey } from '../util/same-text.js';
|
|
10
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Quantization step for strength-tie comparisons: the 0.01 epsilon applied by rounding instead of an abs-diff
|
|
14
|
+
* threshold, so the tiebreak is transitive.
|
|
15
|
+
*/
|
|
11
16
|
const STRENGTH_TIE_EPSILON = 0.01;
|
|
12
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Quantize strength to an integer bucket so ties are a true equivalence relation (equal iff same multiple of
|
|
19
|
+
* `STRENGTH_TIE_EPSILON`).
|
|
13
20
|
* Non-finite input maps to 0: a NaN bucket would make the comparator return NaN and break the total order. */
|
|
14
21
|
export function strengthBucket(strength) {
|
|
15
22
|
const s = strength ?? 0;
|
|
@@ -28,7 +35,8 @@ function survivorOrder(a, b) {
|
|
|
28
35
|
return retrievalDiff;
|
|
29
36
|
return compareEntryIdentity(a, b);
|
|
30
37
|
}
|
|
31
|
-
// Tenant partition: group by tenantId before sorting so a duplicate pair never forms across tenants; Map keeps
|
|
38
|
+
// Tenant partition: group by tenantId before sorting so a duplicate pair never forms across tenants; Map keeps
|
|
39
|
+
// insertion order,
|
|
32
40
|
// so a single-tenant store gets one group and the same result as a global pass.
|
|
33
41
|
function entriesByPartition(entries) {
|
|
34
42
|
const entriesByTenant = new Map();
|
|
@@ -73,33 +81,36 @@ function partitionPairs(tenantEntries, removed, backing) {
|
|
|
73
81
|
}
|
|
74
82
|
return [...groups.values()].flatMap((group) => group.pairs);
|
|
75
83
|
}
|
|
76
|
-
/** The rows
|
|
84
|
+
/** The rows currentDistilledEntries selects, picked from a whole-store read. */
|
|
77
85
|
const isCurrentDistilled = (e) => (e.kind ?? 'distilled') === 'distilled' && !e.superseded_by;
|
|
78
|
-
/**
|
|
86
|
+
/**
|
|
87
|
+
* Remove the weaker copy of same-text (apart from spacing) memories within one tenant; cross-tenant pairs are never
|
|
88
|
+
* duplicates (isolation boundary).
|
|
79
89
|
* Higher strength wins, then more retrievals; `threshold` is accepted for old callers and ignored. */
|
|
80
|
-
export function deduplicateStore(
|
|
90
|
+
export function deduplicateStore(store, options = {}) {
|
|
81
91
|
const dryRun = options.dryRun ?? false;
|
|
82
92
|
// Only current distilled rows compete: raw rows are append-only (the delete
|
|
83
93
|
// trigger would abort sleep mid-loop) and superseded rows are history.
|
|
84
|
-
const entries = options.loaded?.entries.filter(isCurrentDistilled) ??
|
|
94
|
+
const entries = options.loaded?.entries.filter(isCurrentDistilled) ?? store.currentDistilledEntries();
|
|
85
95
|
const entriesByTenant = entriesByPartition(entries);
|
|
86
|
-
// Shared across tenant groups: ids are globally unique UUIDs, so `removed` cannot collide across tenants and
|
|
96
|
+
// Shared across tenant groups: ids are globally unique UUIDs, so `removed` cannot collide across tenants and
|
|
97
|
+
// deleteEntry deletes by primary key alone.
|
|
87
98
|
const removed = new Set();
|
|
88
99
|
const pairs = [];
|
|
89
|
-
const backing = options.loaded?.backing ??
|
|
100
|
+
const backing = options.loaded?.backing ?? store.objectBackedIds();
|
|
90
101
|
for (const tenantEntries of entriesByTenant.values()) {
|
|
91
102
|
// The survivor total order (see the file-level docstring), scoped per
|
|
92
103
|
// tenant group: the total order holds within a tenant only, matching the partition above.
|
|
93
104
|
tenantEntries.sort(survivorOrder);
|
|
94
105
|
pairs.push(...partitionPairs(tenantEntries, removed, backing));
|
|
95
106
|
}
|
|
96
|
-
const done = dryRun ? pairs : deletePairs(
|
|
107
|
+
const done = dryRun ? pairs : deletePairs(store, pairs, options.actor);
|
|
97
108
|
return { removed: done.length, pairs: done };
|
|
98
109
|
}
|
|
99
110
|
/** The pairs whose loser was deleted; one store handle, one transaction per delete. */
|
|
100
|
-
function deletePairs(
|
|
111
|
+
function deletePairs(store, pairs, actor) {
|
|
101
112
|
const targets = pairs.map((p) => ({ id: p.removed, reason: `dedup: duplicate of ${p.kept}` }));
|
|
102
|
-
const gone =
|
|
113
|
+
const gone = store.deleteOneByOne(targets, { actor, automatic: true });
|
|
103
114
|
return pairs.filter((_, i) => gone[i]);
|
|
104
115
|
}
|
|
105
116
|
//# sourceMappingURL=dedupe.js.map
|
|
@@ -3,6 +3,9 @@ import type { DormantMove } from '../store/dormant.js';
|
|
|
3
3
|
import type { FlushComponent, LoadedRows } from '../store/delete-and-batch.js';
|
|
4
4
|
/** Components that share no id, ordered by each one's first op across writes, then deletes, then dormant moves. */
|
|
5
5
|
export declare function groupFlush(writes: readonly MemoryEntry[], deletes: readonly string[], dormant: readonly DormantMove[], units: readonly (readonly string[])[]): FlushComponent[];
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* [child, parent] per queued op on a child whose DAG parent the run removes: the parent-dirty mark otherwise lands
|
|
8
|
+
* after the parent is gone.
|
|
9
|
+
*/
|
|
7
10
|
export declare function familyUnits(writes: readonly MemoryEntry[], deletes: readonly string[], dormant: readonly DormantMove[], snapshot: LoadedRows): string[][];
|
|
8
11
|
//# sourceMappingURL=flush-units.d.ts.map
|
|
@@ -42,7 +42,10 @@ function unionFind(units) {
|
|
|
42
42
|
}
|
|
43
43
|
return find;
|
|
44
44
|
}
|
|
45
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* [child, parent] per queued op on a child whose DAG parent the run removes: the parent-dirty mark otherwise lands
|
|
47
|
+
* after the parent is gone.
|
|
48
|
+
*/
|
|
46
49
|
// SHORTCUT: a removed parent and all its changed children commit as one component, so
|
|
47
50
|
// one hold can pass holdMs by a family's size; split by child if a family grows large.
|
|
48
51
|
export function familyUnits(writes, deletes, dormant, snapshot) {
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Moves a store's memories to a new default half-life: only memories still on the old base are rescaled
|
|
3
|
+
* (`deriveHalfLife(from, entry)` plus recall bonus).
|
|
4
|
+
* Memories hippo shortened since, or with their own fixed half-life, keep theirs; rescales are audit-logged and `meta`
|
|
5
|
+
* records the base, so it runs once.
|
|
6
|
+
*/
|
|
3
7
|
import { type MemoryEntry } from '../core/memory.js';
|
|
4
|
-
import {
|
|
5
|
-
export { HALF_LIFE_BASE_META_KEY, LEGACY_TYPED_HALF_LIFE };
|
|
8
|
+
import type { Consolidation } from '../store/port.js';
|
|
6
9
|
/** What {@link migrateDefaultHalfLife} did, or would do under `dryRun`. */
|
|
7
10
|
export interface HalfLifeMigrationResult {
|
|
8
11
|
from: number;
|
|
@@ -22,13 +25,20 @@ type HalfLifeFields = Pick<MemoryEntry, 'half_life_days' | 'tags' | 'schema_fit'
|
|
|
22
25
|
export declare function halfLifeRecallBonus(entry: HalfLifeFields, written: number): number | null;
|
|
23
26
|
/** The entries to rescale from `from` to `to`, as copies that keep their recall bonus. Pure. */
|
|
24
27
|
export declare function planHalfLifeMigration(entries: readonly MemoryEntry[], from: number, to: number): MemoryEntry[];
|
|
25
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Memories of decisions, incidents and other objects still on the flat 90 days, as copies on `to` that keep their
|
|
30
|
+
* recall bonus. Pure.
|
|
31
|
+
*/
|
|
26
32
|
export declare function planTypedHalfLifeMigration(entries: readonly MemoryEntry[], to: number): MemoryEntry[];
|
|
27
33
|
/** The base this store's memories are on. */
|
|
28
|
-
export declare function storeHalfLifeBase(
|
|
29
|
-
/**
|
|
30
|
-
|
|
34
|
+
export declare function storeHalfLifeBase(store: Consolidation): number;
|
|
35
|
+
/**
|
|
36
|
+
* Move the store's memories, and those of objects on the old flat 90 days, from their recorded base to `to`, once;
|
|
37
|
+
* `dryRun` writes nothing.
|
|
38
|
+
*/
|
|
39
|
+
export declare function migrateDefaultHalfLife(store: Consolidation, to: number, opts?: {
|
|
31
40
|
dryRun?: boolean;
|
|
32
41
|
actor?: string;
|
|
33
42
|
}): HalfLifeMigrationResult;
|
|
43
|
+
export {};
|
|
34
44
|
//# sourceMappingURL=half-life-migration.d.ts.map
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Moves a store's memories to a new default half-life: only memories still on the old base are rescaled
|
|
3
|
+
* (`deriveHalfLife(from, entry)` plus recall bonus).
|
|
4
|
+
* Memories hippo shortened since, or with their own fixed half-life, keep theirs; rescales are audit-logged and `meta`
|
|
5
|
+
* records the base, so it runs once.
|
|
6
|
+
*/
|
|
7
|
+
import { deriveHalfLife, LEGACY_TYPED_HALF_LIFE } from '../core/memory.js';
|
|
8
|
+
const TYPED_SOURCES = new Set([
|
|
9
|
+
'decision',
|
|
10
|
+
'incident',
|
|
11
|
+
'process',
|
|
12
|
+
'policy',
|
|
13
|
+
'skill',
|
|
14
|
+
'project_brief',
|
|
15
|
+
'customer_note',
|
|
16
|
+
]);
|
|
8
17
|
/** Recall bonus over `written`, the half-life `entry` got at write, or null when off it; each recall added 2 days. */
|
|
9
18
|
export function halfLifeRecallBonus(entry, written) {
|
|
10
19
|
if (entry.superseded_by || entry.tags.includes('invalidated') || entry.tags.includes('superseded'))
|
|
@@ -22,7 +31,10 @@ export function planHalfLifeMigration(entries, from, to) {
|
|
|
22
31
|
return bonus === null ? [] : [{ ...e, half_life_days: deriveHalfLife(to, e) + bonus }];
|
|
23
32
|
});
|
|
24
33
|
}
|
|
25
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Memories of decisions, incidents and other objects still on the flat 90 days, as copies on `to` that keep their
|
|
36
|
+
* recall bonus. Pure.
|
|
37
|
+
*/
|
|
26
38
|
export function planTypedHalfLifeMigration(entries, to) {
|
|
27
39
|
return entries.flatMap((e) => {
|
|
28
40
|
const bonus = TYPED_SOURCES.has(e.source) ? halfLifeRecallBonus(e, LEGACY_TYPED_HALF_LIFE) : null;
|
|
@@ -31,13 +43,16 @@ export function planTypedHalfLifeMigration(entries, to) {
|
|
|
31
43
|
});
|
|
32
44
|
}
|
|
33
45
|
/** The base this store's memories are on. */
|
|
34
|
-
export function storeHalfLifeBase(
|
|
35
|
-
return
|
|
46
|
+
export function storeHalfLifeBase(store) {
|
|
47
|
+
return store.halfLifeBase();
|
|
36
48
|
}
|
|
37
|
-
/**
|
|
38
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Move the store's memories, and those of objects on the old flat 90 days, from their recorded base to `to`, once;
|
|
51
|
+
* `dryRun` writes nothing.
|
|
52
|
+
*/
|
|
53
|
+
export function migrateDefaultHalfLife(store, to, opts = {}) {
|
|
39
54
|
const dryRun = opts.dryRun ?? false;
|
|
40
|
-
const { from, outcome } = moveHalfLives(
|
|
55
|
+
const { from, outcome } = store.moveHalfLives(to, { dryRun, actor: opts.actor ?? 'system' }, (rows) => {
|
|
41
56
|
const { basePlan, typedPlan } = planMoves(rows, to);
|
|
42
57
|
const plan = [...basePlan, ...typedPlan];
|
|
43
58
|
return {
|
|
@@ -51,7 +66,15 @@ export function migrateDefaultHalfLife(hippoRoot, to, opts = {}) {
|
|
|
51
66
|
};
|
|
52
67
|
});
|
|
53
68
|
const moved = outcome ?? { rescaled: 0, typed: 0, kept: 0, halfLives: new Map() };
|
|
54
|
-
return {
|
|
69
|
+
return {
|
|
70
|
+
from,
|
|
71
|
+
to,
|
|
72
|
+
rescaled: moved.rescaled,
|
|
73
|
+
typed: moved.typed,
|
|
74
|
+
kept: moved.kept,
|
|
75
|
+
dryRun,
|
|
76
|
+
halfLives: moved.halfLives,
|
|
77
|
+
};
|
|
55
78
|
}
|
|
56
79
|
/** The base move and the move of object memories, planned from one read of the store. Pure. */
|
|
57
80
|
function planMoves(rows, to) {
|
|
@@ -59,13 +82,20 @@ function planMoves(rows, to) {
|
|
|
59
82
|
const objects = objectMemoryIds(rows.objectRows);
|
|
60
83
|
const losers = conflictLosers(rows.conflictAudits, rows.resolvedConflicts);
|
|
61
84
|
const copies = new Set(all.flatMap((e) => (e.superseded_by ? [e.superseded_by] : [])));
|
|
62
|
-
// Provenance before shape: an object's memory came from its writer, a supersede copy from the base (it keeps the
|
|
63
|
-
|
|
64
|
-
const
|
|
85
|
+
// Provenance before shape: an object's memory came from its writer, a supersede copy from the base (it keeps the
|
|
86
|
+
// source). Shape decides the rest.
|
|
87
|
+
const objectWritten = (e) => objects.all.has(e.id) ||
|
|
88
|
+
(!copies.has(e.id) && TYPED_SOURCES.has(e.source) && halfLifeRecallBonus(e, LEGACY_TYPED_HALF_LIFE) !== null);
|
|
89
|
+
const typedPlan = typedPending
|
|
90
|
+
? planTypedHalfLifeMigration(all.filter((e) => objectWritten(e) && !objects.retired.has(e.id) && !losers.has(e.id)), to)
|
|
91
|
+
: [];
|
|
65
92
|
const basePlan = planHalfLifeMigration(typedPending ? all.filter((e) => !objectWritten(e)) : all, rows.from, to);
|
|
66
93
|
return { basePlan, typedPlan };
|
|
67
94
|
}
|
|
68
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Memories behind every object, and those behind a superseded or closed one. Retiring an object leaves its memory
|
|
97
|
+
* untouched, so only its table knows.
|
|
98
|
+
*/
|
|
69
99
|
function objectMemoryIds(objectRows) {
|
|
70
100
|
const all = new Set();
|
|
71
101
|
const retired = new Set();
|
|
@@ -23,6 +23,7 @@ function sleepLlm(run, fetcher) {
|
|
|
23
23
|
const llmOpts = { apiKey, model: config.extraction.model, fetcher };
|
|
24
24
|
return { apiKey, llmError, llmOpts };
|
|
25
25
|
}
|
|
26
|
+
const dagStore = (run) => ({ hippoRoot: run.hippoRoot, consolidation: run.store });
|
|
26
27
|
export async function llmPasses(run, fetcher) {
|
|
27
28
|
// 1.6. Batch extraction — extract facts from episodic memories missing them
|
|
28
29
|
const extractedFromIds = new Set(run.survivors.filter((e) => e.extracted_from).map((e) => e.extracted_from));
|
|
@@ -42,7 +43,10 @@ export async function llmPasses(run, fetcher) {
|
|
|
42
43
|
await entityProfilePass(run, llm);
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Extracts facts from each candidate; true when it stopped on a failure every later call would repeat (bad key, no
|
|
48
|
+
* credit, unknown model).
|
|
49
|
+
*/
|
|
46
50
|
async function extractionPass(run, llm, batch) {
|
|
47
51
|
const { extractFacts, storeExtractedFacts } = await import('../learn/extract.js');
|
|
48
52
|
const report = llm.llmError('extraction');
|
|
@@ -66,7 +70,8 @@ async function extractionPass(run, llm, batch) {
|
|
|
66
70
|
}
|
|
67
71
|
if (stopped) {
|
|
68
72
|
const skipped = batch.length - index - 1;
|
|
69
|
-
report(`stopped after a failure that will not clear on retry; ${skipped} of ${batch.length} candidates skipped, and
|
|
73
|
+
report(`stopped after a failure that will not clear on retry; ${skipped} of ${batch.length} candidates skipped, and ` +
|
|
74
|
+
`the DAG passes with them`);
|
|
70
75
|
break;
|
|
71
76
|
}
|
|
72
77
|
}
|
|
@@ -80,7 +85,7 @@ async function dagBuildPass(run, { apiKey, llmError, llmOpts }) {
|
|
|
80
85
|
return;
|
|
81
86
|
try {
|
|
82
87
|
const { buildDag } = await import('./dag.js');
|
|
83
|
-
const dagResult = await buildDag(run
|
|
88
|
+
const dagResult = await buildDag(dagStore(run), extractedFacts, { ...llmOpts, onError: llmError('dag') });
|
|
84
89
|
run.result.dagCandidateClusters = dagResult.candidateClusters;
|
|
85
90
|
run.result.dagSummariesCreated = dagResult.summariesCreated;
|
|
86
91
|
if (dagResult.summariesCreated > 0) {
|
|
@@ -92,7 +97,8 @@ async function dagBuildPass(run, { apiKey, llmError, llmOpts }) {
|
|
|
92
97
|
log.warn('consolidate dag threw', errorFields(err));
|
|
93
98
|
}
|
|
94
99
|
}
|
|
95
|
-
// 1.8. DAG summary rebuild: drain the summary_dirty queue set by child-write hooks; same apiKey/dryRun gate as
|
|
100
|
+
// 1.8. DAG summary rebuild: drain the summary_dirty queue set by child-write hooks; same apiKey/dryRun gate as
|
|
101
|
+
// buildDag.
|
|
96
102
|
// Cap HIPPO_DAG_REBUILD_CAP (default 20, hard ceiling 1000) prevents runaway LLM cost.
|
|
97
103
|
async function dagRebuildPass(run, { llmError, llmOpts }) {
|
|
98
104
|
const { result } = run;
|
|
@@ -101,13 +107,20 @@ async function dagRebuildPass(run, { llmError, llmOpts }) {
|
|
|
101
107
|
const rawCap = envDagRebuildCap();
|
|
102
108
|
// Hard ceiling so a misconfigured env can't burn unbounded LLM cost.
|
|
103
109
|
const cap = rawCap !== undefined ? Math.min(rawCap, 1000) : 20;
|
|
104
|
-
const rebuildResult = await rebuildDirtySummaries(run.
|
|
110
|
+
const rebuildResult = await rebuildDirtySummaries(run.store, {
|
|
111
|
+
...llmOpts,
|
|
112
|
+
onError: llmError('dag rebuild'),
|
|
113
|
+
cap,
|
|
114
|
+
});
|
|
105
115
|
result.summariesRebuilt = rebuildResult.rebuilt;
|
|
106
116
|
result.summariesRebuildFailed = rebuildResult.failed;
|
|
107
117
|
result.summariesZeroChildSkipped = rebuildResult.zeroChildSkipped;
|
|
108
118
|
result.summariesRebuildRefused = rebuildResult.refused;
|
|
109
119
|
result.summariesRebuildCapped = rebuildResult.capped;
|
|
110
|
-
if (rebuildResult.rebuilt > 0 ||
|
|
120
|
+
if (rebuildResult.rebuilt > 0 ||
|
|
121
|
+
rebuildResult.zeroChildSkipped > 0 ||
|
|
122
|
+
rebuildResult.failed > 0 ||
|
|
123
|
+
rebuildResult.refused > 0) {
|
|
111
124
|
const parts = [];
|
|
112
125
|
if (rebuildResult.rebuilt > 0)
|
|
113
126
|
parts.push(`${rebuildResult.rebuilt} rebuilt`);
|
|
@@ -127,15 +140,18 @@ async function dagRebuildPass(run, { llmError, llmOpts }) {
|
|
|
127
140
|
log.warn('consolidate dag rebuild threw', errorFields(err));
|
|
128
141
|
}
|
|
129
142
|
}
|
|
130
|
-
// 1.9. DAG entity profiles: cluster L2 summaries into per-entity L3 profiles; runs even when 1.7 was skipped
|
|
131
|
-
//
|
|
143
|
+
// 1.9. DAG entity profiles: cluster L2 summaries into per-entity L3 profiles; runs even when 1.7 was skipped
|
|
144
|
+
// (re-clusters existing L2s every sleep).
|
|
145
|
+
// Reads the stored L2s, not `survivors`: phase 1.7 wrote new L2s via writeEntry without pushing them into survivors.
|
|
132
146
|
async function entityProfilePass(run, { llmError, llmOpts }) {
|
|
133
147
|
try {
|
|
134
148
|
const { buildEntityProfiles } = await import('./dag.js');
|
|
135
|
-
const
|
|
136
|
-
const l2Summaries = loadAllL2Summaries(run.hippoRoot);
|
|
149
|
+
const l2Summaries = run.store.unprofiledTopicSummaries();
|
|
137
150
|
if (l2Summaries.length >= 2) {
|
|
138
|
-
const profileResult = await buildEntityProfiles(run
|
|
151
|
+
const profileResult = await buildEntityProfiles(dagStore(run), l2Summaries, {
|
|
152
|
+
...llmOpts,
|
|
153
|
+
onError: llmError('dag profiles'),
|
|
154
|
+
});
|
|
139
155
|
run.result.entityProfilesCreated = profileResult.profilesCreated;
|
|
140
156
|
if (profileResult.profilesCreated > 0) {
|
|
141
157
|
run.result.details.push(` 🌲 DAG L3: ${profileResult.profilesCreated} entity profiles, ${profileResult.l2sLinked} L2s linked`);
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Frozen learned memory-value weight vector, GENERATED from benchmarks/memory-value/weights-learned.json; never edit by
|
|
3
|
+
* hand (a sync test fails CI on drift).
|
|
4
|
+
* CAVEAT: usage-feature signs come from an anti-oracle simulation, not real usage value; never read this as production
|
|
5
|
+
* ranking advice.
|
|
6
|
+
*/
|
|
3
7
|
/** The 8 live feature dims the fitter optimized over (FIT_DIMS). */
|
|
4
8
|
export declare const MEMORY_VALUE_WEIGHTS: Readonly<Record<string, number>>;
|
|
5
9
|
/** sha256 of benchmarks/memory-value/weights-learned.json at freeze time
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Frozen learned memory-value weight vector, GENERATED from benchmarks/memory-value/weights-learned.json; never edit by
|
|
3
|
+
* hand (a sync test fails CI on drift).
|
|
4
|
+
* CAVEAT: usage-feature signs come from an anti-oracle simulation, not real usage value; never read this as production
|
|
5
|
+
* ranking advice.
|
|
6
|
+
*/
|
|
3
7
|
/** The 8 live feature dims the fitter optimized over (FIT_DIMS). */
|
|
4
8
|
export const MEMORY_VALUE_WEIGHTS = Object.freeze({
|
|
5
9
|
age_days: -0.3245577821391783,
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Learned memory-value scorer, a rescue-only veto in the sleep decay pass (it can only shrink the condemned set);
|
|
3
|
+
* mirrors benchmarks/memory-value/*.mjs.
|
|
4
|
+
* rescueSet rescues a condemned entry iff it ranks in the top 30% (RESCUE_BUDGET) of its tenant's non-pinned set;
|
|
5
|
+
* memory-value-wiring.test.ts guards parity.
|
|
6
|
+
*/
|
|
3
7
|
import { type MemoryEntry } from '../core/memory.js';
|
|
4
8
|
/** The 8 live feature dims (FIT_DIMS) — canonical order for iteration. */
|
|
5
9
|
export declare const MV_FEATURE_NAMES: ReadonlyArray<keyof MvFeatureVector>;
|
|
@@ -13,14 +17,25 @@ export interface MvFeatureVector {
|
|
|
13
17
|
outcome_ratio: number;
|
|
14
18
|
content_length: number;
|
|
15
19
|
}
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
20
|
+
/**
|
|
21
|
+
* Blind v1 feature dict for one entry, restricted to the 8 dims the frozen weights carry. `strength` is CLOCK-BASIS
|
|
22
|
+
* `calculateStrength(entry, now)` with no
|
|
23
|
+
* DecayOptions, as in the weights' training; passing the production decay basis would silently break parity with the
|
|
24
|
+
* frozen weights.
|
|
25
|
+
*/
|
|
18
26
|
export declare function computeMvFeatures(entry: MemoryEntry, now: Date): MvFeatureVector;
|
|
19
27
|
export declare function validateWeights(weights?: Readonly<Record<string, number>>, digest?: string): void;
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
28
|
+
/**
|
|
29
|
+
* Min-max normalize the 8 features over the given entries (constant -> 0), then score = dot(weights, normalized);
|
|
30
|
+
* callers set the scope.
|
|
31
|
+
* An entry with any non-finite feature (NaN from a malformed `created`) is excluded from normalization and scores
|
|
32
|
+
* -Infinity, so it can never be rescued.
|
|
33
|
+
*/
|
|
22
34
|
export declare function scoreEntries(entries: MemoryEntry[], now: Date, weights?: Readonly<Record<string, number>>): Map<string, number>;
|
|
23
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Per-entry rank context within its tenant's non-pinned candidate set: the basis both rescueSet and the consolidate
|
|
37
|
+
* audit-row metadata read.
|
|
38
|
+
*/
|
|
24
39
|
export interface MvRankInfo {
|
|
25
40
|
tenantId: string;
|
|
26
41
|
score: number;
|
|
@@ -31,7 +46,9 @@ export interface MvRankInfo {
|
|
|
31
46
|
/** ceil(RESCUE_BUDGET * totalNonPinned) — the rescue cutoff; rank <= keepN rescues. */
|
|
32
47
|
keepN: number;
|
|
33
48
|
}
|
|
34
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Group non-pinned entries by tenantId, score and rank each group independently, and return rank context for every
|
|
51
|
+
* non-pinned entry;
|
|
35
52
|
* rescueSet and the consolidate audit rows share it so they never compute the ranking differently. */
|
|
36
53
|
export declare function rankNonPinnedByTenant(entries: MemoryEntry[], now: Date, weights?: Readonly<Record<string, number>>, digest?: string): Map<string, MvRankInfo>;
|
|
37
54
|
export interface RescueSetOptions {
|
|
@@ -39,7 +56,10 @@ export interface RescueSetOptions {
|
|
|
39
56
|
readonly digest?: string;
|
|
40
57
|
readonly precomputedRanks?: Map<string, MvRankInfo>;
|
|
41
58
|
}
|
|
42
|
-
/**
|
|
43
|
-
*
|
|
59
|
+
/**
|
|
60
|
+
* Rescue decision: the subset of condemnedIds ranking in the top 30% of their tenant's non-pinned set by learned score.
|
|
61
|
+
* Pass `precomputedRanks` to skip the internal ranking so the whole-store pass runs once per sleep; `weights`/`digest`
|
|
62
|
+
* overrides exist for tests only.
|
|
63
|
+
*/
|
|
44
64
|
export declare function rescueSet(entries: MemoryEntry[], condemnedIds: Set<string>, now: Date, options?: RescueSetOptions): Set<string>;
|
|
45
65
|
//# sourceMappingURL=memory-value.d.ts.map
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Learned memory-value scorer, a rescue-only veto in the sleep decay pass (it can only shrink the condemned set);
|
|
3
|
+
* mirrors benchmarks/memory-value/*.mjs.
|
|
4
|
+
* rescueSet rescues a condemned entry iff it ranks in the top 30% (RESCUE_BUDGET) of its tenant's non-pinned set;
|
|
5
|
+
* memory-value-wiring.test.ts guards parity.
|
|
6
|
+
*/
|
|
3
7
|
import { DEFAULT_TENANT_ID } from '../util/env.js';
|
|
4
8
|
import { strengthAblation } from '../core/ablation.js';
|
|
5
9
|
import { calculateStrength } from '../core/memory.js';
|
|
@@ -20,11 +24,17 @@ export const MV_FEATURE_NAMES = [
|
|
|
20
24
|
/** The keep-budget operating point (the only point with measured
|
|
21
25
|
* evidence): a code constant tied to that evidence, not user-tunable. */
|
|
22
26
|
const RESCUE_BUDGET = 0.3;
|
|
23
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Per-tenant floor on the non-pinned candidate set: below it ranks are noise, and keepN=ceil(0.3*N) would rescue a
|
|
29
|
+
* 1-entry tenant's entry every sleep forever.
|
|
24
30
|
* A code constant tied to that reasoning, not user-tunable (like RESCUE_BUDGET). */
|
|
25
31
|
const MIN_RESCUE_GROUP = 10;
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
32
|
+
/**
|
|
33
|
+
* Blind v1 feature dict for one entry, restricted to the 8 dims the frozen weights carry. `strength` is CLOCK-BASIS
|
|
34
|
+
* `calculateStrength(entry, now)` with no
|
|
35
|
+
* DecayOptions, as in the weights' training; passing the production decay basis would silently break parity with the
|
|
36
|
+
* frozen weights.
|
|
37
|
+
*/
|
|
28
38
|
export function computeMvFeatures(entry, now) {
|
|
29
39
|
const ageDays = (now.getTime() - Date.parse(entry.created)) / DAY_MS;
|
|
30
40
|
const pos = entry.outcome_positive ?? 0;
|
|
@@ -32,7 +42,8 @@ export function computeMvFeatures(entry, now) {
|
|
|
32
42
|
return {
|
|
33
43
|
age_days: ageDays,
|
|
34
44
|
half_life_days: entry.half_life_days,
|
|
35
|
-
|
|
45
|
+
// clock-basis, never the production decay basis — see doc comment above
|
|
46
|
+
strength: calculateStrength(entry, now, { ablation: strengthAblation() }),
|
|
36
47
|
retrieval_count: entry.retrieval_count,
|
|
37
48
|
outcome_positive: pos,
|
|
38
49
|
outcome_negative: neg,
|
|
@@ -40,7 +51,9 @@ export function computeMvFeatures(entry, now) {
|
|
|
40
51
|
content_length: entry.content.length,
|
|
41
52
|
};
|
|
42
53
|
}
|
|
43
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Throws on a malformed weight constant (wrong dims, non-finite weight, missing digest): flag-on with a broken constant
|
|
56
|
+
* must throw, never act as flag-off.
|
|
44
57
|
* Parameterized (default: the frozen singleton) so the throw paths are unit-testable. */
|
|
45
58
|
function isFiniteWeightValue(value) {
|
|
46
59
|
return typeof value === 'number' && Number.isFinite(value);
|
|
@@ -57,11 +70,16 @@ export function validateWeights(weights = MEMORY_VALUE_WEIGHTS, digest = SOURCE_
|
|
|
57
70
|
}
|
|
58
71
|
}
|
|
59
72
|
if (!isNonEmptyDigestString(digest)) {
|
|
60
|
-
throw new Error('memory-value: weights constant is malformed — SOURCE_ARTIFACT_SHA256 digest missing
|
|
73
|
+
throw new Error('memory-value: weights constant is malformed — SOURCE_ARTIFACT_SHA256 digest missing ' +
|
|
74
|
+
'(src/consolidate/memory-value-weights.ts)');
|
|
61
75
|
}
|
|
62
76
|
}
|
|
63
|
-
/**
|
|
64
|
-
*
|
|
77
|
+
/**
|
|
78
|
+
* Min-max normalize the 8 features over the given entries (constant -> 0), then score = dot(weights, normalized);
|
|
79
|
+
* callers set the scope.
|
|
80
|
+
* An entry with any non-finite feature (NaN from a malformed `created`) is excluded from normalization and scores
|
|
81
|
+
* -Infinity, so it can never be rescued.
|
|
82
|
+
*/
|
|
65
83
|
export function scoreEntries(entries, now, weights = MEMORY_VALUE_WEIGHTS) {
|
|
66
84
|
const raw = new Map();
|
|
67
85
|
for (const e of entries)
|
|
@@ -104,7 +122,9 @@ export function scoreEntries(entries, now, weights = MEMORY_VALUE_WEIGHTS) {
|
|
|
104
122
|
}
|
|
105
123
|
return scores;
|
|
106
124
|
}
|
|
107
|
-
/**
|
|
125
|
+
/**
|
|
126
|
+
* Group non-pinned entries by tenantId, score and rank each group independently, and return rank context for every
|
|
127
|
+
* non-pinned entry;
|
|
108
128
|
* rescueSet and the consolidate audit rows share it so they never compute the ranking differently. */
|
|
109
129
|
export function rankNonPinnedByTenant(entries, now, weights = MEMORY_VALUE_WEIGHTS, digest = SOURCE_ARTIFACT_SHA256) {
|
|
110
130
|
validateWeights(weights, digest);
|
|
@@ -146,8 +166,11 @@ export function rankNonPinnedByTenant(entries, now, weights = MEMORY_VALUE_WEIGH
|
|
|
146
166
|
}
|
|
147
167
|
return result;
|
|
148
168
|
}
|
|
149
|
-
/**
|
|
150
|
-
*
|
|
169
|
+
/**
|
|
170
|
+
* Rescue decision: the subset of condemnedIds ranking in the top 30% of their tenant's non-pinned set by learned score.
|
|
171
|
+
* Pass `precomputedRanks` to skip the internal ranking so the whole-store pass runs once per sleep; `weights`/`digest`
|
|
172
|
+
* overrides exist for tests only.
|
|
173
|
+
*/
|
|
151
174
|
export function rescueSet(entries, condemnedIds, now, options = {}) {
|
|
152
175
|
const { weights = MEMORY_VALUE_WEIGHTS, digest = SOURCE_ARTIFACT_SHA256, precomputedRanks } = options;
|
|
153
176
|
validateWeights(weights, digest); // fail loud before any rescue computation
|
|
@@ -2,6 +2,9 @@ import { type SleepRun } from './run.js';
|
|
|
2
2
|
export declare function retireHeldTexts(run: SleepRun): void;
|
|
3
3
|
/** Returns how many clusters were skipped because their merged text matches a rejected value. */
|
|
4
4
|
export declare function mergePass(run: SleepRun): number;
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Maps i to each j > i, ascending, whose text overlap with i reaches the merge threshold; every text needs at least one
|
|
7
|
+
* token.
|
|
8
|
+
*/
|
|
6
9
|
export declare function mergePartners(contents: readonly string[]): (i: number) => number[];
|
|
7
10
|
//# sourceMappingURL=merge.d.ts.map
|