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,8 +1,8 @@
|
|
|
1
1
|
// Sleep and the daily runner clean a store's old automatic memories once, so an upgrade needs no command.
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { errorMessage, log } from '../util/log.js';
|
|
3
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
4
4
|
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
5
|
-
import { repairMemoryQualityOnce } from '../api/audit.js';
|
|
5
|
+
import { repairMemoryQualityOnce } from '../api/auth/audit.js';
|
|
6
6
|
import { cliApiContext } from './api-context.js';
|
|
7
7
|
/** Fault-isolated like the project tag repair: a failure warns, leaves the store unmarked and runs again next time. */
|
|
8
8
|
export async function repairQualityOnceAt(root, tenantId) {
|
|
@@ -25,13 +25,14 @@ export async function repairQualityOnceAt(root, tenantId) {
|
|
|
25
25
|
const review = result.issues.filter((issue) => issue.disposition === 'review').length;
|
|
26
26
|
if (review > 0) {
|
|
27
27
|
const lead = moved > 0 ? ` ${review} more` : `Checked old automatic memories once after the upgrade: ${review}`;
|
|
28
|
-
console.log(`${lead} ${review === 1 ? 'looks' : 'look'} doubtful and ${review === 1 ? 'was' : 'were'} kept; hippo audit
|
|
28
|
+
console.log(`${lead} ${review === 1 ? 'looks' : 'look'} doubtful and ${review === 1 ? 'was' : 'were'} kept; hippo audit ` +
|
|
29
|
+
`repair${scope} lists them.`);
|
|
29
30
|
}
|
|
30
31
|
for (const warning of result.warnings)
|
|
31
32
|
log.warn(warning);
|
|
32
33
|
}
|
|
33
34
|
catch (err) {
|
|
34
|
-
log.warn(`memory quality repair skipped, tried again next time: ${errorMessage(err)}
|
|
35
|
+
log.warn(`memory quality repair skipped, tried again next time: ${errorMessage(err)}`, errorFields(err));
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
//# sourceMappingURL=quality-repair-once.js.map
|
package/dist/cli/recall.js
CHANGED
|
@@ -6,22 +6,20 @@ import { loadConfig } from '../core/config.js';
|
|
|
6
6
|
import { estimateTokens } from '../util/token-text.js';
|
|
7
7
|
import { dropHeldCopies } from '../util/same-text.js';
|
|
8
8
|
import * as api from '../api/index.js';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { detectAvailabilityBias } from '../api/availability.js';
|
|
12
|
-
import { cliRecallOrigin, cliRecallReranker, cliRecallSetting, DEFAULT_MAX_NEIGHBORS, fitRecallRows, loadCliRecallContinuity, MAX_HOPS, recallJsonRow, } from '../api/recall-cli.js';
|
|
9
|
+
import { availabilityPool, cutoffClauses, detectRecallHints, handoffText, hashQueryText, printedTokens, sessionRing, sessionTrailText, settleTokens, shownRecallRows, shrinkToFit, snapshotText, suppressionSummary, tokenPurse, } from '../api/cli-surface.js';
|
|
10
|
+
import { cliRecallOrigin, cliRecallReranker, cliRecallSetting, DEFAULT_MAX_NEIGHBORS, fitRecallRows, loadCliRecallContinuity, MAX_HOPS, recallJsonRow, } from '../api/recall/rows.js';
|
|
13
11
|
import { cliApiContext } from './api-context.js';
|
|
14
|
-
import { handoffText, printedTokens, sessionTrailText, settleTokens, snapshotText } from '../api/context-render.js';
|
|
15
12
|
import { printError } from './output.js';
|
|
16
|
-
import { parseLimitFlag, parseBudgetFlag, parseAsOfFlag, engineFlags, boolFlag, flagIsTrue, isBooleanFlag, numberFlag, } from './flag-values.js';
|
|
13
|
+
import { parseLimitFlag, parseBudgetFlag, parseAsOfFlag, engineFlags, boolFlag, flagIsTrue, isBooleanFlag, isStringFlag, numberFlag, stringFlag, stringFlagOrExit, } from './flag-values.js';
|
|
17
14
|
import { requireInit } from './shared.js';
|
|
18
|
-
import { recallEntryText, recallHeading, printActiveTaskSnapshot, printSessionEvents, printHandoff, captureConsole } from './print.js';
|
|
15
|
+
import { recallEntryText, recallHeading, printActiveTaskSnapshot, printSessionEvents, printHandoff, captureConsole, } from './print.js';
|
|
19
16
|
import { hostSessionId, hookStoreRoot } from './hook-runtime.js';
|
|
20
|
-
import {
|
|
17
|
+
import { fail } from './exit.js';
|
|
21
18
|
// JSON.stringify keeps quotes or parens in the matched phrase from blurring the line.
|
|
22
19
|
function planningLine(p) {
|
|
23
|
-
if (p.hint)
|
|
20
|
+
if (p.hint) {
|
|
24
21
|
return `Planning fallacy hint (class: ${p.hint.classTag}): ${p.hint.baserateSummary} [detected: ${JSON.stringify(p.hint.detectedPhrase)}]`;
|
|
22
|
+
}
|
|
25
23
|
if (p.watching) {
|
|
26
24
|
return `Planning fallacy: watching this query (reason: ${p.watching.reason}). ${p.watching.suggestion} ` +
|
|
27
25
|
`[detected: ${JSON.stringify(p.watching.detectedPhrase)}]`;
|
|
@@ -29,45 +27,38 @@ function planningLine(p) {
|
|
|
29
27
|
return null;
|
|
30
28
|
}
|
|
31
29
|
function cutoffLine(shown, s) {
|
|
32
|
-
const clauses =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (s.droppedPreRank > 0)
|
|
37
|
-
clauses.push(`${s.droppedPreRank} filtered pre-rank`);
|
|
38
|
-
if (s.summarySubstitutionsAdded > 0)
|
|
39
|
-
clauses.push(`${s.summarySubstitutionsAdded} summary substitutions added`);
|
|
40
|
-
if (s.freshTailAdded > 0)
|
|
41
|
-
clauses.push(`${s.freshTailAdded} fresh-tail added`);
|
|
42
|
-
if (s.suppressedByInterference > 0)
|
|
43
|
-
clauses.push(`${s.suppressedByInterference} suppressed by interference`);
|
|
44
|
-
return clauses.length > 0 ? `Cutoff: showing ${shown} of ${s.totalCandidates} candidates; ${clauses.join('; ')}.` : null;
|
|
30
|
+
const clauses = cutoffClauses(s);
|
|
31
|
+
return clauses.length > 0
|
|
32
|
+
? `Cutoff: showing ${shown} of ${s.totalCandidates} candidates; ${clauses.join('; ')}.`
|
|
33
|
+
: null;
|
|
45
34
|
}
|
|
46
35
|
function failWith(message) {
|
|
47
36
|
return () => {
|
|
48
|
-
|
|
49
|
-
throw new CliExit(1);
|
|
37
|
+
fail(message);
|
|
50
38
|
};
|
|
51
39
|
}
|
|
52
40
|
/** `--graph-stream` implies rrf fusion as well as the graph stream; the CLI fuses the local store only. */
|
|
53
41
|
function parseGraphStreamFlags(flags) {
|
|
54
42
|
let hops;
|
|
55
43
|
if (flags['graph-hops'] !== undefined) {
|
|
56
|
-
if (isBooleanFlag(flags['graph-hops']))
|
|
44
|
+
if (isBooleanFlag(flags['graph-hops'])) {
|
|
57
45
|
failWith(`--graph-hops requires an integer value 1..${MAX_HOPS} (e.g. --graph-hops 2).`)();
|
|
46
|
+
}
|
|
58
47
|
const h = Number(flags['graph-hops']);
|
|
59
48
|
if (!Number.isInteger(h) || h < 1 || h > MAX_HOPS) {
|
|
60
|
-
failWith(`Invalid --graph-hops: "${
|
|
49
|
+
failWith(`Invalid --graph-hops: "${stringFlag(flags, 'graph-hops')}". Must be an integer 1..${MAX_HOPS}.`)();
|
|
61
50
|
}
|
|
62
51
|
hops = h;
|
|
63
52
|
}
|
|
64
53
|
let seeds;
|
|
65
54
|
if (flags['graph-seeds'] !== undefined) {
|
|
66
|
-
if (isBooleanFlag(flags['graph-seeds']))
|
|
55
|
+
if (isBooleanFlag(flags['graph-seeds'])) {
|
|
67
56
|
failWith('--graph-seeds requires a positive integer value (e.g. --graph-seeds 10).')();
|
|
57
|
+
}
|
|
68
58
|
const s = Number(flags['graph-seeds']);
|
|
69
|
-
if (!Number.isInteger(s) || s < 1)
|
|
70
|
-
failWith(`Invalid --graph-seeds: "${
|
|
59
|
+
if (!Number.isInteger(s) || s < 1) {
|
|
60
|
+
failWith(`Invalid --graph-seeds: "${stringFlag(flags, 'graph-seeds')}". Must be a positive integer.`)();
|
|
61
|
+
}
|
|
71
62
|
seeds = s;
|
|
72
63
|
}
|
|
73
64
|
return { hops, seeds };
|
|
@@ -76,11 +67,12 @@ function parseHopsFlags(flags) {
|
|
|
76
67
|
if (flags['hops'] === undefined)
|
|
77
68
|
return {};
|
|
78
69
|
// A value-less `--hops` parses as true, and Number(true) === 1 would silently run a 1-hop expansion.
|
|
79
|
-
if (isBooleanFlag(flags['hops']))
|
|
70
|
+
if (isBooleanFlag(flags['hops'])) {
|
|
80
71
|
return { fail: failWith(`--hops requires an integer value 0..${MAX_HOPS} (e.g. --hops 1).`) };
|
|
72
|
+
}
|
|
81
73
|
const hops = Number(flags['hops']);
|
|
82
74
|
if (!Number.isInteger(hops) || hops < 0 || hops > MAX_HOPS) {
|
|
83
|
-
return { fail: failWith(`Invalid --hops: "${
|
|
75
|
+
return { fail: failWith(`Invalid --hops: "${stringFlag(flags, 'hops')}". Must be an integer 0..${MAX_HOPS}.`) };
|
|
84
76
|
}
|
|
85
77
|
const raw = flags['max-neighbors'];
|
|
86
78
|
if (raw === undefined)
|
|
@@ -94,7 +86,10 @@ function parseHopsFlags(flags) {
|
|
|
94
86
|
return { value: { hops, maxNeighbors } };
|
|
95
87
|
}
|
|
96
88
|
function parseRerankerFlag(flags) {
|
|
97
|
-
const
|
|
89
|
+
const nameRaw = flags['reranker'];
|
|
90
|
+
if (nameRaw !== undefined && !isStringFlag(nameRaw))
|
|
91
|
+
return { fail: failWith('--reranker requires a value.') };
|
|
92
|
+
const name = nameRaw?.trim() ?? '';
|
|
98
93
|
let picked;
|
|
99
94
|
try {
|
|
100
95
|
picked = cliRecallReranker(name);
|
|
@@ -125,11 +120,16 @@ function parseSalienceFlag(flags) {
|
|
|
125
120
|
return { value: threshold };
|
|
126
121
|
}
|
|
127
122
|
function parseChoiceFlag(flags, name, valid) {
|
|
128
|
-
const
|
|
123
|
+
const raw = flags[name];
|
|
124
|
+
if (raw !== undefined && !isStringFlag(raw)) {
|
|
125
|
+
return { fail: failWith(`--${name} requires a value. Must be one of: ${valid.join(', ')}.`) };
|
|
126
|
+
}
|
|
127
|
+
const value = raw?.trim() ?? '';
|
|
129
128
|
if (!value)
|
|
130
129
|
return {};
|
|
131
|
-
if (!valid.includes(value))
|
|
130
|
+
if (!valid.includes(value)) {
|
|
132
131
|
return { fail: failWith(`Invalid --${name}: "${value}". Must be one of: ${valid.join(', ')}.`) };
|
|
132
|
+
}
|
|
133
133
|
return { value };
|
|
134
134
|
}
|
|
135
135
|
/** Parses every flag a ranking stage reads; the first invalid one in pipeline order becomes `error`. */
|
|
@@ -140,7 +140,11 @@ function parseRecallLateFlags(flags) {
|
|
|
140
140
|
const outcome = parseChoiceFlag(flags, 'outcome', ['success', 'failure', 'partial']);
|
|
141
141
|
const layer = parseChoiceFlag(flags, 'layer', Object.values(Layer));
|
|
142
142
|
const staged = [
|
|
143
|
-
['expand', graphHops.fail],
|
|
143
|
+
['expand', graphHops.fail],
|
|
144
|
+
['rerank', reranker.fail],
|
|
145
|
+
['salience', salience.fail],
|
|
146
|
+
['outcome', outcome.fail],
|
|
147
|
+
['layer', layer.fail],
|
|
144
148
|
];
|
|
145
149
|
let error;
|
|
146
150
|
for (const [stage, fail] of staged) {
|
|
@@ -158,7 +162,8 @@ function parseRecallLateFlags(flags) {
|
|
|
158
162
|
error,
|
|
159
163
|
};
|
|
160
164
|
}
|
|
161
|
-
/** Runs `hippo recall`: the flags name the ranking core and this verb's presenter, `retrieve` ranks and records,
|
|
165
|
+
/** Runs `hippo recall`: the flags name the ranking core and this verb's presenter, `retrieve` ranks and records,
|
|
166
|
+
* then the block prints. */
|
|
162
167
|
async function cmdRecall(hippoRoot, tenantId, query, flags) {
|
|
163
168
|
requireInit(hippoRoot);
|
|
164
169
|
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
@@ -173,11 +178,13 @@ async function cmdRecall(hippoRoot, tenantId, query, flags) {
|
|
|
173
178
|
cliCore: {
|
|
174
179
|
rank: rankOptions(query, flags, o, priced),
|
|
175
180
|
// The global store is a second source for this surface alone, and never when it is the store being searched.
|
|
176
|
-
sources:
|
|
181
|
+
sources: globalRoot !== hippoRoot && priced.globalOn
|
|
182
|
+
? { globalRoot, globalStore: cliApiContext(globalRoot, tenantId).store }
|
|
183
|
+
: undefined,
|
|
177
184
|
note: (line) => printError(line),
|
|
178
185
|
hostSessionId: hostSessionId(),
|
|
179
|
-
show: (rank, planning) => {
|
|
180
|
-
slot.presented = presentRecall(ctx, query, o, { rank, ...priced }, planning);
|
|
186
|
+
show: async (rank, planning) => {
|
|
187
|
+
slot.presented = await presentRecall(ctx, query, o, { rank, ...priced }, planning);
|
|
181
188
|
return slot.presented.shown;
|
|
182
189
|
},
|
|
183
190
|
},
|
|
@@ -197,16 +204,14 @@ function parseRecallOptions(ctx, flags) {
|
|
|
197
204
|
const includeSuperseded = boolFlag(flags, 'include-superseded');
|
|
198
205
|
const asOf = parseAsOfFlag(flags);
|
|
199
206
|
// The explicit --scope is the filter input; the detected scope only boosts, so auto-detection never filters.
|
|
200
|
-
const explicitScope = flags
|
|
207
|
+
const explicitScope = stringFlagOrExit(flags, 'scope') ?? null;
|
|
201
208
|
const setting = cliRecallSetting(ctx, explicitScope);
|
|
202
209
|
const config = loadConfig(ctx.hippoRoot);
|
|
203
210
|
const minResults = numberFlag(flags, 'min-results');
|
|
204
211
|
const graphStream = flagIsTrue(flags, 'graph-stream') ? parseGraphStreamFlags(flags) : undefined;
|
|
205
212
|
const late = parseRecallLateFlags(flags);
|
|
206
|
-
const goalTag = flags
|
|
207
|
-
const sessionId = (flags
|
|
208
|
-
? String(flags['session-id'])
|
|
209
|
-
: envHippoSessionId() ?? '').trim();
|
|
213
|
+
const goalTag = stringFlagOrExit(flags, 'goal') ?? '';
|
|
214
|
+
const sessionId = (stringFlagOrExit(flags, 'session-id') ?? envHippoSessionId() ?? '').trim();
|
|
210
215
|
return {
|
|
211
216
|
budget, limit, asJson, showWhy, includeSuperseded, asOf, setting, tenantId: ctx.tenantId,
|
|
212
217
|
explicitScope, config, minResults, graphStream, late, goalTag, sessionId,
|
|
@@ -226,8 +231,14 @@ function rankOptions(query, flags, o, priced) {
|
|
|
226
231
|
// Engines spend the budget on the text each result prints as, less the header, so selection and print agree.
|
|
227
232
|
const entryBudget = Math.max(0, o.budget - printedTokens(recallHeading(o.budget, o.budget, query)));
|
|
228
233
|
return {
|
|
229
|
-
budget: entryBudget,
|
|
230
|
-
|
|
234
|
+
budget: entryBudget,
|
|
235
|
+
cost: priced.printCost,
|
|
236
|
+
limit: o.limit,
|
|
237
|
+
why: o.showWhy,
|
|
238
|
+
includeSuperseded: o.includeSuperseded,
|
|
239
|
+
asOf: o.asOf,
|
|
240
|
+
explicitScope: o.explicitScope,
|
|
241
|
+
activeScope: o.setting.activeScope,
|
|
231
242
|
search: {
|
|
232
243
|
...engineFlags(flags, o.config),
|
|
233
244
|
multihop: flagIsTrue(flags, 'multihop') || o.config.multihop.enabled,
|
|
@@ -253,23 +264,17 @@ function recallHinter(query, o, rank) {
|
|
|
253
264
|
// HIPPO_ANCHORING=off and HIPPO_AVAILABILITY=off skip the work entirely.
|
|
254
265
|
const anchorRing = sessionRing('cli', tenantId, sessionId);
|
|
255
266
|
const queryHash = hashQueryText(query);
|
|
256
|
-
const
|
|
257
|
-
? [...rank.localEntries, ...rank.globalEntries].map((e) => ({ id: e.id, created: e.created }))
|
|
258
|
-
: null;
|
|
267
|
+
const pool = availabilityPool(() => [...rank.localEntries, ...rank.globalEntries]);
|
|
259
268
|
const hintsFor = (list, held) => {
|
|
260
|
-
const anchoring
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
: null;
|
|
264
|
-
const summary = {
|
|
265
|
-
// The published total includes graph-surfaced rows, so total == preRank + byBudget + returned holds for callers.
|
|
269
|
+
const { anchoring, availability } = detectRecallHints({ list, pool, anchorRing, queryHash });
|
|
270
|
+
const summary = suppressionSummary({
|
|
271
|
+
// The total includes graph-surfaced rows, so total == preRank + byBudget + returned holds for callers.
|
|
266
272
|
totalCandidates: rank.totalCandidates + rank.graphAdded,
|
|
267
273
|
droppedPreRank: rank.droppedPreRank + held,
|
|
268
274
|
droppedByBudget: Math.max(0, rank.totalCandidates + rank.graphAdded - rank.droppedPreRank - held - list.length),
|
|
269
275
|
summarySubstitutionsAdded: 0,
|
|
270
276
|
freshTailAdded: 0,
|
|
271
|
-
|
|
272
|
-
};
|
|
277
|
+
}, anchoring);
|
|
273
278
|
return { anchoring, availability, summary };
|
|
274
279
|
};
|
|
275
280
|
return { anchorRing, hintsFor };
|
|
@@ -325,59 +330,89 @@ function renderRecallBlock(list, h, v) {
|
|
|
325
330
|
console.log(entryText(r));
|
|
326
331
|
}));
|
|
327
332
|
}
|
|
328
|
-
/** Pays the continuity sections
|
|
329
|
-
function
|
|
330
|
-
const { budget } = o;
|
|
333
|
+
/** Pays the continuity sections in print order after the header; one that does not fit is dropped. */
|
|
334
|
+
function payContinuity(loaded, sectionBudget) {
|
|
331
335
|
let { activeSnapshot, sessionHandoff, recentSessionEvents } = loaded;
|
|
332
|
-
|
|
333
|
-
const sectionBudget = budget - printedTokens(recallHeading(budget, budget, query));
|
|
334
|
-
let left = sectionBudget;
|
|
335
|
-
const pays = (tokens) => { if (tokens > left)
|
|
336
|
-
return false; left -= tokens; return true; };
|
|
336
|
+
const { pays, left } = tokenPurse(sectionBudget);
|
|
337
337
|
if (activeSnapshot && !pays(printedTokens(snapshotText(activeSnapshot))))
|
|
338
338
|
activeSnapshot = null;
|
|
339
339
|
if (sessionHandoff && !pays(printedTokens(handoffText(sessionHandoff))))
|
|
340
340
|
sessionHandoff = null;
|
|
341
|
-
if (recentSessionEvents.length > 0 && !pays(printedTokens(sessionTrailText(recentSessionEvents))))
|
|
341
|
+
if (recentSessionEvents.length > 0 && !pays(printedTokens(sessionTrailText(recentSessionEvents)))) {
|
|
342
342
|
recentSessionEvents = [];
|
|
343
|
-
|
|
343
|
+
}
|
|
344
344
|
const continuity = { activeSnapshot, sessionHandoff, recentSessionEvents };
|
|
345
|
+
return { continuity, continuityTokens: sectionBudget - left() };
|
|
346
|
+
}
|
|
347
|
+
/** Drops the lowest-ranked entry until the whole block, hints and header included, fits the budget. */
|
|
348
|
+
function renderWithinBudget(fitted, hintsFor, view, floor, budget) {
|
|
349
|
+
// Copies go after every cut, so a merged row the budget drops never hides its sources.
|
|
350
|
+
const render = (kept) => {
|
|
351
|
+
const results = dropHeldCopies(fitted.slice(0, kept), (r) => r.entry);
|
|
352
|
+
const hints = hintsFor(results, kept - results.length);
|
|
353
|
+
return { results, hints, recallText: renderRecallBlock(results, hints, view) };
|
|
354
|
+
};
|
|
355
|
+
return shrinkToFit(fitted.length, floor, budget, render, (r) => r.recallText);
|
|
356
|
+
}
|
|
357
|
+
/** Pays the continuity sections and the plan hint first, then fits the memories into what is left. */
|
|
358
|
+
function fitRecallBlock(query, o, ranked, loaded, planning) {
|
|
359
|
+
const { budget } = o;
|
|
360
|
+
// Sections print ahead of the memories, so they are paid first, after the header; one that does not fit is dropped.
|
|
361
|
+
const sectionBudget = budget - printedTokens(recallHeading(budget, budget, query));
|
|
362
|
+
const { continuity, continuityTokens } = payContinuity(loaded, sectionBudget);
|
|
363
|
+
let left = sectionBudget - continuityTokens;
|
|
364
|
+
const { activeSnapshot, sessionHandoff, recentSessionEvents } = continuity;
|
|
345
365
|
const hasContinuity = activeSnapshot !== null || sessionHandoff !== null || recentSessionEvents.length > 0;
|
|
346
366
|
// The baserate hint depends on the query alone, so `retrieve` evaluates it and this only prices the line.
|
|
347
367
|
const planText = planningLine(planning);
|
|
348
|
-
const
|
|
349
|
-
const
|
|
350
|
-
|
|
368
|
+
const planTokens = planText === null ? 0 : printedTokens(`${planText}\n`);
|
|
369
|
+
const showPlan = planText !== null && planTokens <= left;
|
|
370
|
+
if (showPlan)
|
|
371
|
+
left -= planTokens;
|
|
372
|
+
const cmdPlanningFallacyHint = showPlan ? (planning.hint ?? null) : null;
|
|
373
|
+
const cmdPlanningFallacyWatching = showPlan ? (planning.watching ?? null) : null;
|
|
351
374
|
// The first --min-results are kept whatever they cost (the documented exception); the rest skip and continue.
|
|
352
375
|
const floor = o.minResults ?? 1;
|
|
353
376
|
const fitted = fitRecallRows(ranked.rank.results, left, floor, ranked.printCost);
|
|
354
|
-
// Copies go after every cut, so a merged row the budget drops never hides its sources.
|
|
355
|
-
const shown = (n) => dropHeldCopies(fitted.slice(0, n), (r) => r.entry);
|
|
356
|
-
let kept = fitted.length;
|
|
357
|
-
let results = shown(kept);
|
|
358
377
|
const { anchorRing, hintsFor } = recallHinter(query, o, ranked.rank);
|
|
359
|
-
const view = {
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
}
|
|
369
|
-
return {
|
|
378
|
+
const view = {
|
|
379
|
+
query,
|
|
380
|
+
showWhy: o.showWhy,
|
|
381
|
+
showPlan,
|
|
382
|
+
planText,
|
|
383
|
+
hasContinuity,
|
|
384
|
+
continuity,
|
|
385
|
+
entryText: ranked.entryText,
|
|
386
|
+
};
|
|
387
|
+
const { results, hints, recallText } = renderWithinBudget(fitted, hintsFor, view, floor, budget);
|
|
388
|
+
return {
|
|
389
|
+
results,
|
|
390
|
+
hints,
|
|
391
|
+
recallText,
|
|
392
|
+
continuity,
|
|
393
|
+
continuityTokens,
|
|
394
|
+
cmdPlanningFallacyHint,
|
|
395
|
+
cmdPlanningFallacyWatching,
|
|
396
|
+
anchorRing,
|
|
397
|
+
};
|
|
370
398
|
}
|
|
371
|
-
/** The presenter `retrieve` calls once ranking ends: fits and
|
|
372
|
-
|
|
399
|
+
/** The presenter `retrieve` calls once ranking ends: fits and
|
|
400
|
+
* renders the block, and names the rows and hint rows to record. */
|
|
401
|
+
async function presentRecall(ctx, query, o, ranked, planning) {
|
|
373
402
|
// Loaded before the zero-result branch, so a no-match query with live continuity still returns a resume packet.
|
|
374
|
-
const
|
|
403
|
+
const loaded = await loadCliRecallContinuity(ctx, o.setting, o.includeContinuity);
|
|
404
|
+
const fit = fitRecallBlock(query, o, ranked, loaded, planning);
|
|
375
405
|
const { results, hints } = fit;
|
|
376
406
|
const text = recallOutput(query, o, fit, ranked.isGlobal);
|
|
377
407
|
const audit = shownRecallRows({ tenantId: o.tenantId, actor: 'cli' }, {
|
|
378
|
-
query,
|
|
408
|
+
query,
|
|
409
|
+
ring: fit.anchorRing,
|
|
410
|
+
topId: results[0]?.entry.id ?? null,
|
|
411
|
+
anchoring: hints.anchoring,
|
|
412
|
+
availability: hints.availability,
|
|
379
413
|
});
|
|
380
|
-
// The token ledger books the text this recall prints, on whichever
|
|
414
|
+
// The token ledger books the text this recall prints, on whichever
|
|
415
|
+
// exit it takes; the ring keeps the hint the final detect made.
|
|
381
416
|
return { text, shown: { results, audit, tokens: estimateTokens(text), anchoredOn: hints.anchoring?.memoryId } };
|
|
382
417
|
}
|
|
383
418
|
/** What this recall prints: the JSON object, or the fitted block. */
|
|
@@ -386,7 +421,9 @@ function recallOutput(query, o, fit, isGlobal) {
|
|
|
386
421
|
const { results, recallText } = fit;
|
|
387
422
|
if (results.length === 0) {
|
|
388
423
|
// HTTP and MCP surface the hint whatever matched, so the zero-result JSON keeps it for parity.
|
|
389
|
-
return asJson
|
|
424
|
+
return asJson
|
|
425
|
+
? JSON.stringify({ query, results: [], total: 0, ...recallJsonTail(fit, includeContinuity) })
|
|
426
|
+
: recallText;
|
|
390
427
|
}
|
|
391
428
|
if (!asJson)
|
|
392
429
|
return recallText;
|
|
@@ -426,8 +463,7 @@ function recallJsonTail(fit, includeContinuity) {
|
|
|
426
463
|
export async function handleRecall({ hippoRoot, tenantId, args, flags }) {
|
|
427
464
|
const query = args.join(' ').trim();
|
|
428
465
|
if (!query) {
|
|
429
|
-
|
|
430
|
-
throw new CliExit(1);
|
|
466
|
+
fail('Please provide a search query.');
|
|
431
467
|
}
|
|
432
468
|
await cmdRecall(hookStoreRoot(hippoRoot), tenantId, query, flags);
|
|
433
469
|
}
|
package/dist/cli/refine-llm.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* LLM refinement of consolidated semantic memories (`hippo refine`): a separate command so API-key users opt in;
|
|
3
|
+
* idempotent via the `llm-refined` tag.
|
|
2
4
|
* Uses fetch directly (no SDK dependency); on any failure the original memory is untouched. */
|
|
3
5
|
import { MemoryEntry } from '../core/memory.js';
|
|
4
6
|
export interface RefineOptions {
|
|
@@ -10,7 +12,10 @@ export interface RefineOptions {
|
|
|
10
12
|
all?: boolean;
|
|
11
13
|
/** Injected for testing — defaults to the real fetch. */
|
|
12
14
|
fetcher?: typeof fetch;
|
|
13
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Tenant scope: only that tenant's consolidated entries are scanned; cross-tenant parents return null and are
|
|
17
|
+
* skipped.
|
|
18
|
+
*/
|
|
14
19
|
tenantId?: string;
|
|
15
20
|
}
|
|
16
21
|
export interface RefineResult {
|
|
@@ -24,12 +29,18 @@ export interface RefineResult {
|
|
|
24
29
|
reason?: string;
|
|
25
30
|
}>;
|
|
26
31
|
}
|
|
27
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Ask Claude to synthesize a clean semantic memory from the merged content and its sources; returns null when the API
|
|
34
|
+
* call failed.
|
|
35
|
+
*/
|
|
28
36
|
export declare function refineSemanticMemory(merged: string, sources: MemoryEntry[], opts: {
|
|
29
37
|
apiKey: string;
|
|
30
38
|
model?: string;
|
|
31
39
|
fetcher?: typeof fetch;
|
|
32
40
|
}): Promise<string | null>;
|
|
33
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Refine each consolidated semantic memory with the LLM and write it back, tagging `llm-refined` so reruns skip it
|
|
43
|
+
* (unless `all`).
|
|
44
|
+
*/
|
|
34
45
|
export declare function refineStore(hippoRoot: string, opts: RefineOptions): Promise<RefineResult>;
|
|
35
46
|
//# sourceMappingURL=refine-llm.d.ts.map
|
package/dist/cli/refine-llm.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* LLM refinement of consolidated semantic memories (`hippo refine`): a separate command so API-key users opt in;
|
|
3
|
+
* idempotent via the `llm-refined` tag.
|
|
2
4
|
* Uses fetch directly (no SDK dependency); on any failure the original memory is untouched. */
|
|
3
5
|
import { Layer } from '../core/memory.js';
|
|
4
6
|
import { REFINED_TAG, storeRefinement } from '../api/index.js';
|
|
5
|
-
import { listMemories, listMemoriesByIds } from '../api/memories.js';
|
|
7
|
+
import { listMemories, listMemoriesByIds } from '../api/memories/memories.js';
|
|
6
8
|
import { cliApiContext } from './api-context.js';
|
|
7
9
|
import { chunked } from '../util/chunked.js';
|
|
8
10
|
import { redactSecretsStrict } from '../util/secret-detect.js';
|
|
@@ -17,7 +19,10 @@ const CONSOLIDATED_MARKERS = [
|
|
|
17
19
|
'[Consolidated from',
|
|
18
20
|
'[Consolidated pattern from',
|
|
19
21
|
];
|
|
20
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Ask Claude to synthesize a clean semantic memory from the merged content and its sources; returns null when the API
|
|
24
|
+
* call failed.
|
|
25
|
+
*/
|
|
21
26
|
export async function refineSemanticMemory(merged, sources, opts) {
|
|
22
27
|
const sourceBlock = sources
|
|
23
28
|
.slice(0, MAX_REFINE_SOURCES)
|
|
@@ -69,7 +74,10 @@ function isConsolidated(entry) {
|
|
|
69
74
|
return false;
|
|
70
75
|
return CONSOLIDATED_MARKERS.some((m) => entry.content.startsWith(m));
|
|
71
76
|
}
|
|
72
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* Refine each consolidated semantic memory with the LLM and write it back, tagging `llm-refined` so reruns skip it
|
|
79
|
+
* (unless `all`).
|
|
80
|
+
*/
|
|
73
81
|
export async function refineStore(hippoRoot, opts) {
|
|
74
82
|
const result = {
|
|
75
83
|
scanned: 0,
|
|
@@ -81,7 +89,7 @@ export async function refineStore(hippoRoot, opts) {
|
|
|
81
89
|
// No tenant means every tenant, so the ctx's own tenant is never read.
|
|
82
90
|
const ctx = cliApiContext(hippoRoot, opts.tenantId ?? '');
|
|
83
91
|
const reach = { everyTenant: opts.tenantId === undefined };
|
|
84
|
-
const entries = listMemories(ctx, reach);
|
|
92
|
+
const entries = await listMemories(ctx, reach);
|
|
85
93
|
let processed = 0;
|
|
86
94
|
for (const entry of entries) {
|
|
87
95
|
if (!isConsolidated(entry))
|
|
@@ -105,7 +113,8 @@ async function refineOneEntry(ctx, reach, entry, opts, result) {
|
|
|
105
113
|
const parentIds = Array.isArray(entry.parents) ? entry.parents : [];
|
|
106
114
|
// Parent lookup is tenant-scoped; cross-tenant parents are absent and skipped,
|
|
107
115
|
// so refine still works from the merged content alone.
|
|
108
|
-
const
|
|
116
|
+
const chunks = await Promise.all(chunked(parentIds).map((chunk) => listMemoriesByIds(ctx, chunk, reach)));
|
|
117
|
+
const found = new Map(chunks.flat().map((p) => [p.id, p]));
|
|
109
118
|
const sources = parentIds.flatMap((pid) => found.get(pid) ?? []);
|
|
110
119
|
const refined = await refineSemanticMemory(entry.content, sources, {
|
|
111
120
|
apiKey: opts.apiKey,
|
|
@@ -122,7 +131,7 @@ async function refineOneEntry(ctx, reach, entry, opts, result) {
|
|
|
122
131
|
result.details.push({ id: entry.id, status: 'refined', reason: 'dry-run (no write)' });
|
|
123
132
|
return;
|
|
124
133
|
}
|
|
125
|
-
storeRefinement(cliApiContext(ctx.hippoRoot, entry.tenant_id), entry, refined);
|
|
134
|
+
await storeRefinement(cliApiContext(ctx.hippoRoot, entry.tenant_id), entry, refined);
|
|
126
135
|
result.refined++;
|
|
127
136
|
result.details.push({ id: entry.id, status: 'refined' });
|
|
128
137
|
}
|