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,17 +1,16 @@
|
|
|
1
1
|
import { isRecallBoostAblated, strengthAblation } from '../core/ablation.js';
|
|
2
2
|
import { Layer, createMemory, markRetrieved } from '../core/memory.js';
|
|
3
|
-
import {
|
|
4
|
-
import { rejectionDigest } from '../store/rejection.js';
|
|
3
|
+
import { rejectionDigest } from '../core/rejection-digest.js';
|
|
5
4
|
import { sampleForReplay } from './replay.js';
|
|
6
5
|
import { renderTraceContent } from './trace.js';
|
|
7
|
-
import {
|
|
8
|
-
import { reportAuditWriteFailure } from '../store/audit.js';
|
|
6
|
+
import { envTenant } from '../util/env.js';
|
|
9
7
|
import { commonDerivationScope } from '../core/recall-scope.js';
|
|
10
8
|
import { log } from '../util/log.js';
|
|
11
9
|
import { REPLAY_COUNT_DEFAULT } from './run.js';
|
|
12
10
|
import { isJsonString } from '../util/json.js';
|
|
13
11
|
import { DAY_MS } from '../util/time.js';
|
|
14
|
-
// 1.4. Auto-promote complete sessions to traces: each session in the window with a `session_complete` event and no
|
|
12
|
+
// 1.4. Auto-promote complete sessions to traces: each session in the window with a `session_complete` event and no
|
|
13
|
+
// trace (idempotent via source_session_id)
|
|
15
14
|
// is rendered as markdown and persisted as a Layer.Trace memory, which inherits decay, search, replay and physics.
|
|
16
15
|
export function promoteSessionTraces(run) {
|
|
17
16
|
const { result } = run;
|
|
@@ -22,8 +21,8 @@ export function promoteSessionTraces(run) {
|
|
|
22
21
|
const sinceMs = run.now.getTime() - windowDays * DAY_MS;
|
|
23
22
|
// Auto-trace runs single-tenant (the env-resolved tenant); consolidating
|
|
24
23
|
// every tenant needs a per-tenant loop layered on top of this.
|
|
25
|
-
const consolidationTenant =
|
|
26
|
-
const promotable =
|
|
24
|
+
const consolidationTenant = envTenant();
|
|
25
|
+
const promotable = run.store.promotableSessions(consolidationTenant, sinceMs);
|
|
27
26
|
for (const session of promotable) {
|
|
28
27
|
const built = sessionTrace(run, consolidationTenant, session.session_id);
|
|
29
28
|
if (!built)
|
|
@@ -39,7 +38,8 @@ export function promoteSessionTraces(run) {
|
|
|
39
38
|
result.details.push(` 🧬 promoted trace ${trace.id} from session ${session.session_id} (${outcome})`);
|
|
40
39
|
}
|
|
41
40
|
if (result.promotedTraces > 0) {
|
|
42
|
-
result.details.push(` 🧬 promoted ${result.promotedTraces} trace${result.promotedTraces === 1 ? '' : 's'} from completed
|
|
41
|
+
result.details.push(` 🧬 promoted ${result.promotedTraces} trace${result.promotedTraces === 1 ? '' : 's'} from completed ` +
|
|
42
|
+
`session${result.promotedTraces === 1 ? '' : 's'}`);
|
|
43
43
|
}
|
|
44
44
|
if (tracesSkippedRejected > 0) {
|
|
45
45
|
log.warn(`consolidate: skipped ${tracesSkippedRejected} auto-promoted trace(s) whose content matches a rejected value`);
|
|
@@ -48,9 +48,9 @@ export function promoteSessionTraces(run) {
|
|
|
48
48
|
/** The trace a completed session renders to, or null when it already has one or cannot be promoted. */
|
|
49
49
|
function sessionTrace(run, consolidationTenant, sessionId) {
|
|
50
50
|
// Idempotency: skip if a trace for this session already exists.
|
|
51
|
-
if (
|
|
51
|
+
if (run.store.traceExists(consolidationTenant, sessionId))
|
|
52
52
|
return null;
|
|
53
|
-
const events =
|
|
53
|
+
const events = run.store.sessionEvents(consolidationTenant, {
|
|
54
54
|
session_id: sessionId,
|
|
55
55
|
limit: 1000,
|
|
56
56
|
});
|
|
@@ -70,8 +70,8 @@ function sessionTrace(run, consolidationTenant, sessionId) {
|
|
|
70
70
|
.map((e) => ({ action: e.content, observation: '' }));
|
|
71
71
|
const trace = createMemory(renderTraceContent({ task: summary, steps, outcome }), {
|
|
72
72
|
layer: Layer.Trace,
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
traceOutcome: outcome,
|
|
74
|
+
sourceSessionId: sessionId,
|
|
75
75
|
tags: ['auto-promoted'],
|
|
76
76
|
source: 'auto-promote',
|
|
77
77
|
scope: sessionScope.scope,
|
|
@@ -106,29 +106,26 @@ function traceRejected(run, trace, sessionId) {
|
|
|
106
106
|
const tombstone = run.tombstones.find(trace.tenant_id, traceDigest);
|
|
107
107
|
if (!tombstone)
|
|
108
108
|
return false;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
reportAuditWriteFailure('reject_refusal', String(error));
|
|
123
|
-
}
|
|
109
|
+
run.tombstones.auditOrCount({
|
|
110
|
+
tenantId: trace.tenant_id,
|
|
111
|
+
actor: 'sleep',
|
|
112
|
+
op: 'reject_refusal',
|
|
113
|
+
metadata: {
|
|
114
|
+
digest: traceDigest,
|
|
115
|
+
reason: tombstone.reason,
|
|
116
|
+
sourceSessionId: sessionId,
|
|
117
|
+
},
|
|
118
|
+
});
|
|
124
119
|
return true;
|
|
125
120
|
}
|
|
126
|
-
// 1.5. Replay pass: rehearse high-value survivors by sampling N memories weighted by outcome, valence, under-rehearsal
|
|
121
|
+
// 1.5. Replay pass: rehearse high-value survivors by sampling N memories weighted by outcome, valence, under-rehearsal
|
|
122
|
+
// and idle time,
|
|
127
123
|
// then applying the `markRetrieved` strengthening, so important memories don't fade.
|
|
128
124
|
export function replayPass(run) {
|
|
129
125
|
const { survivors, now } = run;
|
|
130
126
|
const replayCount = run.config.replay?.count ?? REPLAY_COUNT_DEFAULT;
|
|
131
|
-
// EVAL-ONLY ablation (see ablation.ts): replay rehearsal is recall strengthening, so the strengthen-off arm silences
|
|
127
|
+
// EVAL-ONLY ablation (see ablation.ts): replay rehearsal is recall strengthening, so the strengthen-off arm silences
|
|
128
|
+
// the whole pass;
|
|
132
129
|
// persisting unmutated entries anyway would still refresh updated_at and mirrors.
|
|
133
130
|
if (!(replayCount > 0 && survivors.length > 0 && !isRecallBoostAblated()))
|
|
134
131
|
return;
|
package/dist/core/ablation.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* EVAL-ONLY ablation switches (HIPPO_ABLATE_*, HIPPO_EVAL_RECENCY_DAYS, HIPPO_FAKE_NOW): each cuts ONE mechanism
|
|
3
|
+
* (outcome also replayPriority bias).
|
|
4
|
+
* Not a production surface. Env is read once per process; tests that mutate these vars MUST call
|
|
5
|
+
* _resetAblationCacheForTests() in beforeEach AND afterEach. See
|
|
3
6
|
* docs/ARCHITECTURE.md#srccoreablationts. */
|
|
4
7
|
/** The three switches strength scoring honours, resolved by the entry layer and handed to core in DecayOptions. */
|
|
5
8
|
export interface StrengthAblation {
|
|
@@ -18,7 +21,10 @@ export declare function isOutcomeFastAblated(): boolean;
|
|
|
18
21
|
export declare function isRecencyAblated(): boolean;
|
|
19
22
|
/** HIPPO_EVAL_RECENCY_DAYS when it is a positive number, else null (callers keep their default). */
|
|
20
23
|
export declare function evalRecencyScaleDays(): number | null;
|
|
21
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* The default `now` for lifecycle computations: HIPPO_FAKE_NOW when set and parseable, else the real clock; an explicit
|
|
26
|
+
* `now` parameter always wins.
|
|
27
|
+
*/
|
|
22
28
|
export declare function evalNow(): Date;
|
|
23
29
|
/** Test-only. See module JSDoc: call in BOTH beforeEach AND afterEach. */
|
|
24
30
|
export declare function _resetAblationCacheForTests(): void;
|
package/dist/core/ablation.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* EVAL-ONLY ablation switches (HIPPO_ABLATE_*, HIPPO_EVAL_RECENCY_DAYS, HIPPO_FAKE_NOW): each cuts ONE mechanism
|
|
3
|
+
* (outcome also replayPriority bias).
|
|
4
|
+
* Not a production surface. Env is read once per process; tests that mutate these vars MUST call
|
|
5
|
+
* _resetAblationCacheForTests() in beforeEach AND afterEach. See
|
|
3
6
|
* docs/ARCHITECTURE.md#srccoreablationts. */
|
|
4
7
|
import { envAblateDecay, envAblateOutcome, envAblateOutcomeFast, envAblateOutcomeSlow, envAblateRecallBoost, envAblateRecency, envEvalRecencyDays, envFakeNowMs, } from '../util/env.js';
|
|
5
8
|
/** Production scoring: nothing ablated. Core falls back to this, so it never reads the environment. */
|
|
6
|
-
export const NO_STRENGTH_ABLATION = Object.freeze({
|
|
9
|
+
export const NO_STRENGTH_ABLATION = Object.freeze({
|
|
10
|
+
decay: false,
|
|
11
|
+
recallBoost: false,
|
|
12
|
+
outcomeSlow: false,
|
|
13
|
+
});
|
|
7
14
|
let _cache;
|
|
8
15
|
let _strengthCache;
|
|
9
16
|
function readFlags() {
|
|
@@ -48,7 +55,10 @@ export function isRecencyAblated() {
|
|
|
48
55
|
export function evalRecencyScaleDays() {
|
|
49
56
|
return readFlags().recencyDays;
|
|
50
57
|
}
|
|
51
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* The default `now` for lifecycle computations: HIPPO_FAKE_NOW when set and parseable, else the real clock; an explicit
|
|
60
|
+
* `now` parameter always wins.
|
|
61
|
+
*/
|
|
52
62
|
export function evalNow() {
|
|
53
63
|
const ms = readFlags().fakeNowMs;
|
|
54
64
|
return ms === null ? new Date() : new Date(ms);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Detect the current operational scope from env (HIPPO_SCOPE > GSTACK_SKILL > OPENCLAW_SKILL); returns the name without
|
|
3
|
+
* prefix, or null.
|
|
2
4
|
* Pure env reads, no I/O, so it is safe on hot paths such as the UserPromptSubmit hook. */
|
|
3
5
|
export declare function detectScope(): string | null;
|
|
4
6
|
/** Compute scope match between a memory's scope tags and the active scope.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { envGstackSkill, envOpenclawSkill, envScope } from '../util/env.js';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Detect the current operational scope from env (HIPPO_SCOPE > GSTACK_SKILL > OPENCLAW_SKILL); returns the name without
|
|
4
|
+
* prefix, or null.
|
|
3
5
|
* Pure env reads, no I/O, so it is safe on hot paths such as the UserPromptSubmit hook. */
|
|
4
6
|
export function detectScope() {
|
|
5
7
|
const explicit = envScope();
|
|
@@ -26,6 +26,8 @@ export declare const AGENT_MEMORY_TOOLS: readonly [{
|
|
|
26
26
|
export type AgentMemoryTool = (typeof AGENT_MEMORY_TOOLS)[number];
|
|
27
27
|
export type ToolId = AgentMemoryTool['id'];
|
|
28
28
|
export declare const AGENT_MEMORY_SOURCE_PREFIX = "agent-memory:";
|
|
29
|
+
/** The actor on every row and audit event the agent-memories import writes. */
|
|
30
|
+
export declare const SYNC_ACTOR = "agent-memories";
|
|
29
31
|
/** Every imported row of a tool has a source starting with this. */
|
|
30
32
|
export declare function toolSourcePrefix(id: ToolId): string;
|
|
31
33
|
export declare const AGENT_MEMORY_TAGS: readonly string[];
|
|
@@ -8,6 +8,8 @@ export const AGENT_MEMORY_TOOLS = [
|
|
|
8
8
|
{ id: 'qwen-code', tag: 'qwen-code-memory', label: 'Qwen Code' },
|
|
9
9
|
];
|
|
10
10
|
export const AGENT_MEMORY_SOURCE_PREFIX = 'agent-memory:';
|
|
11
|
+
/** The actor on every row and audit event the agent-memories import writes. */
|
|
12
|
+
export const SYNC_ACTOR = 'agent-memories';
|
|
11
13
|
/** Every imported row of a tool has a source starting with this. */
|
|
12
14
|
export function toolSourcePrefix(id) {
|
|
13
15
|
return `${AGENT_MEMORY_SOURCE_PREFIX}${id}:`;
|
package/dist/core/ambient.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Ambient state vector: a compact O(N) summary of the corpus telling the agent "where it is" in knowledge-space without
|
|
3
|
+
* retrieving specific memories.
|
|
4
|
+
*/
|
|
2
5
|
import type { MemoryEntry } from './memory.js';
|
|
3
6
|
export interface AmbientState {
|
|
4
7
|
tagEntropy: number;
|
|
@@ -15,8 +18,6 @@ export interface AmbientState {
|
|
|
15
18
|
}
|
|
16
19
|
/** A memory is fresh when created within this window. */
|
|
17
20
|
export declare const AMBIENT_FRESH_WINDOW_MS: number;
|
|
18
|
-
/** A memory counts as high schema fit strictly above this. */
|
|
19
|
-
export declare const HIGH_SCHEMA_FIT_ABOVE = 0.7;
|
|
20
21
|
/** Row counts and sums an AmbientState is derived from; two stores' tallies add with addAmbientTallies. */
|
|
21
22
|
export interface AmbientTallies {
|
|
22
23
|
total: number;
|
package/dist/core/ambient.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Ambient state vector: a compact O(N) summary of the corpus telling the agent "where it is" in knowledge-space without
|
|
3
|
+
* retrieving specific memories.
|
|
4
|
+
*/
|
|
2
5
|
import { evalNow, strengthAblation } from './ablation.js';
|
|
3
6
|
import { Layer } from './memory.js';
|
|
4
|
-
import { calculateStrength } from './memory.js';
|
|
7
|
+
import { calculateStrength, HIGH_SCHEMA_FIT } from './memory.js';
|
|
5
8
|
import { DAY_MS } from '../util/time.js';
|
|
6
9
|
const STATE_DECIMALS = 3;
|
|
7
10
|
// Cut points renderAmbientSummary uses to turn the state vector into words.
|
|
@@ -22,8 +25,6 @@ const SUMMARY_THRESHOLD = {
|
|
|
22
25
|
};
|
|
23
26
|
/** A memory is fresh when created within this window. */
|
|
24
27
|
export const AMBIENT_FRESH_WINDOW_MS = 7 * DAY_MS;
|
|
25
|
-
/** A memory counts as high schema fit strictly above this. */
|
|
26
|
-
export const HIGH_SCHEMA_FIT_ABOVE = 0.7;
|
|
27
28
|
/** The tallies of two disjoint row sets taken together. */
|
|
28
29
|
export function addAmbientTallies(a, b) {
|
|
29
30
|
const tagCounts = new Map(a.tagCounts);
|
|
@@ -68,7 +69,7 @@ export function tallyAmbientEntries(entries, now) {
|
|
|
68
69
|
t.negative++;
|
|
69
70
|
if (isErrorTagged(entry.tags))
|
|
70
71
|
t.errors++;
|
|
71
|
-
if (entry.schema_fit >
|
|
72
|
+
if (entry.schema_fit > HIGH_SCHEMA_FIT)
|
|
72
73
|
t.highSchemaFit++;
|
|
73
74
|
if (entry.layer === Layer.Semantic)
|
|
74
75
|
t.semantic++;
|
|
@@ -153,8 +154,9 @@ export function renderAmbientSummary(state) {
|
|
|
153
154
|
parts.push('mostly episodic');
|
|
154
155
|
if (state.extractionCoverage > T.extractionHigh)
|
|
155
156
|
parts.push('high extraction coverage');
|
|
156
|
-
if (state.conflictIntensity > T.conflictShown)
|
|
157
|
+
if (state.conflictIntensity > T.conflictShown) {
|
|
157
158
|
parts.push(`${(state.conflictIntensity * 100).toFixed(0)}% conflict rate`);
|
|
159
|
+
}
|
|
158
160
|
if (state.dagDepth >= T.dagDepthShown)
|
|
159
161
|
parts.push(`DAG depth ${state.dagDepth}`);
|
|
160
162
|
if (state.avgStrength < T.strengthLow)
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Errors whose HTTP status is part of the API contract; the server maps by class, so message text can change freely.
|
|
3
|
+
*/
|
|
2
4
|
export type ApiErrorStatus = 400 | 403 | 404 | 409;
|
|
3
5
|
/** Base class: an error the caller caused, carrying the status the HTTP layer answers with. */
|
|
4
6
|
export declare abstract class ApiError extends Error {
|
|
@@ -24,8 +26,12 @@ export declare class ConflictError extends ApiError {
|
|
|
24
26
|
readonly status = 409;
|
|
25
27
|
constructor(message: string);
|
|
26
28
|
}
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
29
|
+
/**
|
|
30
|
+
* Thrown by the write-path guard (checkRejectionGuard, via upsertEntryRow) when a write would introduce a tombstoned
|
|
31
|
+
* value; carries what the
|
|
32
|
+
* transaction-owner catch blocks (writeEntry, api.supersede) need to write the post-rollback `reject_refusal` audit row
|
|
33
|
+
* via `auditRejectionRefusal`.
|
|
34
|
+
*/
|
|
29
35
|
export declare class RejectedValueError extends BadRequestError {
|
|
30
36
|
readonly digest: string;
|
|
31
37
|
readonly tenantId: string;
|
package/dist/core/api-errors.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Errors whose HTTP status is part of the API contract; the server maps by class, so message text can change freely.
|
|
3
|
+
*/
|
|
2
4
|
import { DIGEST_DISPLAY_CHARS } from '../util/token-text.js';
|
|
3
5
|
/** Base class: an error the caller caused, carrying the status the HTTP layer answers with. */
|
|
4
6
|
export class ApiError extends Error {
|
|
@@ -35,8 +37,12 @@ export class ConflictError extends ApiError {
|
|
|
35
37
|
this.name = 'ConflictError';
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
40
|
+
/**
|
|
41
|
+
* Thrown by the write-path guard (checkRejectionGuard, via upsertEntryRow) when a write would introduce a tombstoned
|
|
42
|
+
* value; carries what the
|
|
43
|
+
* transaction-owner catch blocks (writeEntry, api.supersede) need to write the post-rollback `reject_refusal` audit row
|
|
44
|
+
* via `auditRejectionRefusal`.
|
|
45
|
+
*/
|
|
40
46
|
export class RejectedValueError extends BadRequestError {
|
|
41
47
|
digest;
|
|
42
48
|
tenantId;
|
|
@@ -54,7 +54,10 @@ export type HookRuntime = 'claude-code' | 'copilot';
|
|
|
54
54
|
/** Reads a Claude Code PreCompact payload, or a Copilot one after stdin.ts mapped
|
|
55
55
|
* it to the same snake_case keys; only an empty stdin counts as a manual run. */
|
|
56
56
|
export declare function readClaudeCodePreCompact(stdinText: string | undefined, timedOut: boolean, runtime?: HookRuntime): CaptureReceipt;
|
|
57
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Reads VS Code's per-reply Stop payload. Pass the raw stdin: stdin.ts would give a Copilot CLI agentStop the same
|
|
59
|
+
* snake_case keys.
|
|
60
|
+
*/
|
|
58
61
|
export declare function readVscodeStop(stdinText: string | undefined, timedOut: boolean): CaptureReceipt;
|
|
59
62
|
/** Reads a Claude Code PostCompact payload; it must name a session, but needs no transcript_path. */
|
|
60
63
|
export declare function readClaudeCodePostCompact(stdinText: string | undefined, timedOut: boolean): CaptureReceipt<PostCompactInput>;
|
|
@@ -17,7 +17,10 @@ export function readClaudeCodePreCompact(stdinText, timedOut, runtime = 'claude-
|
|
|
17
17
|
}
|
|
18
18
|
const base = { runtime, event: 'pre-compact' };
|
|
19
19
|
if (empty) {
|
|
20
|
-
return {
|
|
20
|
+
return {
|
|
21
|
+
status: 'received',
|
|
22
|
+
input: { ...base, manual: true, sessionId: null, cwd: null, transcriptPath: null, trigger: null },
|
|
23
|
+
};
|
|
21
24
|
}
|
|
22
25
|
let payload;
|
|
23
26
|
try {
|
|
@@ -31,7 +34,8 @@ export function readClaudeCodePreCompact(stdinText, timedOut, runtime = 'claude-
|
|
|
31
34
|
return { status: 'skipped', reason: 'malformed or incomplete PreCompact payload (missing string transcript_path)' };
|
|
32
35
|
}
|
|
33
36
|
const transcriptPath = payload.transcript_path;
|
|
34
|
-
// Path shape only: CLAUDE_CONFIG_DIR can move the transcript root, and a same-user process can already read every
|
|
37
|
+
// Path shape only: CLAUDE_CONFIG_DIR can move the transcript root, and a same-user process can already read every
|
|
38
|
+
// transcript.
|
|
35
39
|
if (!/\.jsonl$/i.test(transcriptPath)) {
|
|
36
40
|
return { status: 'skipped', reason: `payload transcript_path is not a .jsonl file: ${transcriptPath}` };
|
|
37
41
|
}
|
|
@@ -47,7 +51,10 @@ export function readClaudeCodePreCompact(stdinText, timedOut, runtime = 'claude-
|
|
|
47
51
|
},
|
|
48
52
|
};
|
|
49
53
|
}
|
|
50
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Reads VS Code's per-reply Stop payload. Pass the raw stdin: stdin.ts would give a Copilot CLI agentStop the same
|
|
56
|
+
* snake_case keys.
|
|
57
|
+
*/
|
|
51
58
|
export function readVscodeStop(stdinText, timedOut) {
|
|
52
59
|
if (!stdinText || stdinText.trim() === '') {
|
|
53
60
|
return timedOut
|
|
@@ -64,7 +71,9 @@ export function readVscodeStop(stdinText, timedOut) {
|
|
|
64
71
|
if (!isObjectLike(payload) || !('hook_event_name' in payload) || payload.hook_event_name !== 'Stop') {
|
|
65
72
|
return { status: 'skipped', reason: 'not a VS Code Stop payload (no snake_case hook_event_name "Stop")' };
|
|
66
73
|
}
|
|
67
|
-
if (!('transcript_path' in payload) ||
|
|
74
|
+
if (!('transcript_path' in payload) ||
|
|
75
|
+
!isStringValue(payload.transcript_path) ||
|
|
76
|
+
!/\.jsonl$/i.test(payload.transcript_path)) {
|
|
68
77
|
return { status: 'skipped', reason: 'Stop payload names no .jsonl transcript_path' };
|
|
69
78
|
}
|
|
70
79
|
if (!('session_id' in payload) || !isStringValue(payload.session_id) || payload.session_id === '') {
|
|
@@ -96,7 +105,10 @@ export function readClaudeCodePostCompact(stdinText, timedOut) {
|
|
|
96
105
|
catch {
|
|
97
106
|
// Non-JSON stdin leaves payload undefined, which the shape check rejects.
|
|
98
107
|
}
|
|
99
|
-
if (!isObjectLike(payload) ||
|
|
108
|
+
if (!isObjectLike(payload) ||
|
|
109
|
+
!('session_id' in payload) ||
|
|
110
|
+
!isStringValue(payload.session_id) ||
|
|
111
|
+
payload.session_id === '') {
|
|
100
112
|
return { status: 'skipped', reason: 'no PostCompact payload naming a session' };
|
|
101
113
|
}
|
|
102
114
|
return {
|
|
@@ -122,7 +134,10 @@ export function readSessionEnd(stdinText, timedOut, runtime = 'claude-code') {
|
|
|
122
134
|
}
|
|
123
135
|
const base = { runtime, event: 'session-end' };
|
|
124
136
|
if (empty) {
|
|
125
|
-
return {
|
|
137
|
+
return {
|
|
138
|
+
status: 'received',
|
|
139
|
+
input: { ...base, manual: true, sessionId: null, cwd: null, transcriptPath: null, trigger: null },
|
|
140
|
+
};
|
|
126
141
|
}
|
|
127
142
|
let payload;
|
|
128
143
|
try {
|
|
@@ -140,9 +155,13 @@ export function readSessionEnd(stdinText, timedOut, runtime = 'claude-code') {
|
|
|
140
155
|
input: {
|
|
141
156
|
...base,
|
|
142
157
|
manual: false,
|
|
143
|
-
sessionId: 'session_id' in payload && isStringValue(payload.session_id) && payload.session_id !== ''
|
|
158
|
+
sessionId: 'session_id' in payload && isStringValue(payload.session_id) && payload.session_id !== ''
|
|
159
|
+
? payload.session_id
|
|
160
|
+
: null,
|
|
144
161
|
cwd: 'cwd' in payload && isStringValue(payload.cwd) ? payload.cwd : null,
|
|
145
|
-
transcriptPath: 'transcript_path' in payload && isStringValue(payload.transcript_path) && payload.transcript_path !== ''
|
|
162
|
+
transcriptPath: 'transcript_path' in payload && isStringValue(payload.transcript_path) && payload.transcript_path !== ''
|
|
163
|
+
? payload.transcript_path
|
|
164
|
+
: null,
|
|
146
165
|
// Both hosts name a session end's trigger `reason`.
|
|
147
166
|
trigger: 'reason' in payload && isStringValue(payload.reason) ? payload.reason : null,
|
|
148
167
|
},
|
package/dist/core/compare.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic tie-break comparators for recall ranking. A true LEAF module: it imports from no sort-site module
|
|
3
|
+
* (search, physics, api, cli, goals,
|
|
4
|
+
* graph-recall, multihop, rerankers), taking structural param types instead, because even a type-only import back would
|
|
5
|
+
* recreate the search <-> physics ESM
|
|
3
6
|
* cycle this module exists to avoid. */
|
|
4
7
|
/** Minimal shape for a deterministic tie-break across fresh ingests into different stores;
|
|
5
8
|
* the metadata keys are optional so `{ content, id }` callers still fit. */
|
|
@@ -10,8 +13,12 @@ export interface EntryIdentity {
|
|
|
10
13
|
tags?: readonly string[];
|
|
11
14
|
source?: string;
|
|
12
15
|
}
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
16
|
+
/**
|
|
17
|
+
* Order: content, layer rank (semantic first, keeping the promotion), tag count desc, sorted tags, source, id; plain
|
|
18
|
+
* `<`/`>`, never `localeCompare`.
|
|
19
|
+
* `content` is the cross-ingest-stable key; `id` is random per instance, so it is only the terminal key. Metadata keys
|
|
20
|
+
* are computed only on a content tie.
|
|
21
|
+
*/
|
|
15
22
|
export declare function compareEntryIdentity(a: EntryIdentity, b: EntryIdentity): number;
|
|
16
23
|
/** Minimal shape for score-primary sort sites (SearchResult and friends
|
|
17
24
|
* that carry `{ score, entry: { content, id } }`). */
|
|
@@ -19,13 +26,22 @@ export interface ScoredEntryLike {
|
|
|
19
26
|
score: number;
|
|
20
27
|
entry: EntryIdentity;
|
|
21
28
|
}
|
|
22
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* score descending, then `compareEntryIdentity`: the shared ordering for every score-primary recall sort site, which
|
|
31
|
+
* delegate here (via an arrow when the
|
|
23
32
|
* score field is not named `score`) so the tiebreak cannot drift between call sites. */
|
|
24
33
|
export declare function compareScoredResults(a: ScoredEntryLike, b: ScoredEntryLike): number;
|
|
25
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Larger first, NaN after every number, 0 for equal scores. Not a subtraction: two infinities, or any NaN, subtract to
|
|
36
|
+
* NaN, which a sort reads as a tie.
|
|
37
|
+
*/
|
|
26
38
|
export declare function compareScoresDesc(a: number, b: number): number;
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
39
|
+
/**
|
|
40
|
+
* Score-desc then tie-key comparator for the physics layer (no `entry`/`content` in scope): the default memoryId key is
|
|
41
|
+
* per-instance determinism only.
|
|
42
|
+
* Cross-ingest stability needs `tieKeyOf` (content), since the baseScore tie order picks the cluster_top_k set. A
|
|
43
|
+
* factory, as two fields sort in turn.
|
|
44
|
+
*/
|
|
29
45
|
export declare function comparePhysicsResultsBy<T extends {
|
|
30
46
|
memoryId: string;
|
|
31
47
|
}>(scoreOf: (r: T) => number, tieKeyOf?: (r: T) => string): (a: T, b: T) => number;
|
package/dist/core/compare.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic tie-break comparators for recall ranking. A true LEAF module: it imports from no sort-site module
|
|
3
|
+
* (search, physics, api, cli, goals,
|
|
4
|
+
* graph-recall, multihop, rerankers), taking structural param types instead, because even a type-only import back would
|
|
5
|
+
* recreate the search <-> physics ESM
|
|
3
6
|
* cycle this module exists to avoid. */
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
7
|
+
/**
|
|
8
|
+
* Order: content, layer rank (semantic first, keeping the promotion), tag count desc, sorted tags, source, id; plain
|
|
9
|
+
* `<`/`>`, never `localeCompare`.
|
|
10
|
+
* `content` is the cross-ingest-stable key; `id` is random per instance, so it is only the terminal key. Metadata keys
|
|
11
|
+
* are computed only on a content tie.
|
|
12
|
+
*/
|
|
6
13
|
export function compareEntryIdentity(a, b) {
|
|
7
14
|
return (compareStrings(a.content, b.content) ||
|
|
8
15
|
layerRank(a.layer) - layerRank(b.layer) ||
|
|
@@ -36,12 +43,17 @@ function compareTags(a, b) {
|
|
|
36
43
|
}
|
|
37
44
|
return 0;
|
|
38
45
|
}
|
|
39
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* score descending, then `compareEntryIdentity`: the shared ordering for every score-primary recall sort site, which
|
|
48
|
+
* delegate here (via an arrow when the
|
|
40
49
|
* score field is not named `score`) so the tiebreak cannot drift between call sites. */
|
|
41
50
|
export function compareScoredResults(a, b) {
|
|
42
51
|
return compareScoresDesc(a.score, b.score) || compareEntryIdentity(a.entry, b.entry);
|
|
43
52
|
}
|
|
44
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Larger first, NaN after every number, 0 for equal scores. Not a subtraction: two infinities, or any NaN, subtract to
|
|
55
|
+
* NaN, which a sort reads as a tie.
|
|
56
|
+
*/
|
|
45
57
|
export function compareScoresDesc(a, b) {
|
|
46
58
|
if (a > b)
|
|
47
59
|
return -1;
|
|
@@ -49,8 +61,12 @@ export function compareScoresDesc(a, b) {
|
|
|
49
61
|
return 1;
|
|
50
62
|
return Number(Number.isNaN(a)) - Number(Number.isNaN(b));
|
|
51
63
|
}
|
|
52
|
-
/**
|
|
53
|
-
*
|
|
64
|
+
/**
|
|
65
|
+
* Score-desc then tie-key comparator for the physics layer (no `entry`/`content` in scope): the default memoryId key is
|
|
66
|
+
* per-instance determinism only.
|
|
67
|
+
* Cross-ingest stability needs `tieKeyOf` (content), since the baseScore tie order picks the cluster_top_k set. A
|
|
68
|
+
* factory, as two fields sort in turn.
|
|
69
|
+
*/
|
|
54
70
|
export function comparePhysicsResultsBy(scoreOf, tieKeyOf) {
|
|
55
71
|
return (a, b) => {
|
|
56
72
|
const d = compareScoresDesc(scoreOf(a), scoreOf(b));
|
package/dist/core/config.d.ts
CHANGED
|
@@ -19,7 +19,8 @@ export interface HippoConfig {
|
|
|
19
19
|
enabled: boolean | 'auto';
|
|
20
20
|
model: string;
|
|
21
21
|
hybridWeight: number;
|
|
22
|
-
/** Embedding backend: 'local' (default) = zero-dependency transformers.js; 'openai' | 'voyage' | 'cohere' = opt-in
|
|
22
|
+
/** Embedding backend: 'local' (default) = zero-dependency transformers.js; 'openai' | 'voyage' | 'cohere' = opt-in
|
|
23
|
+
* API embedder needing the provider's
|
|
23
24
|
* API key in env (OPENAI_API_KEY / VOYAGE_API_KEY / COHERE_API_KEY). See src/embeddings/provider.ts. */
|
|
24
25
|
provider?: 'local' | 'openai' | 'voyage' | 'cohere';
|
|
25
26
|
/** Optional API base-URL override (self-host / proxy). HTTPS only (localhost
|
|
@@ -55,14 +56,16 @@ export interface HippoConfig {
|
|
|
55
56
|
autoTraceCapture: boolean;
|
|
56
57
|
/** Only promote sessions whose session_complete event is within N days. */
|
|
57
58
|
autoTraceWindowDays: number;
|
|
58
|
-
/** Mid-session pinned-rule re-injection through the UserPromptSubmit hook: pinned memories are re-injected each
|
|
59
|
+
/** Mid-session pinned-rule re-injection through the UserPromptSubmit hook: pinned memories are re-injected each
|
|
60
|
+
* turn within the token budget. */
|
|
59
61
|
pinnedInject: {
|
|
60
62
|
enabled: boolean;
|
|
61
63
|
budget: number;
|
|
62
64
|
/** Skip a block identical to the one already injected this session
|
|
63
65
|
* Default true. Needs a session id from the hook payload. */
|
|
64
66
|
skipUnchanged: boolean;
|
|
65
|
-
/** Resend an unchanged block after this many consecutive skips, so long sessions still see pinned rules near the
|
|
67
|
+
/** Resend an unchanged block after this many consecutive skips, so long sessions still see pinned rules near the
|
|
68
|
+
* latest turn (default 10; 0 never
|
|
66
69
|
* resends). */
|
|
67
70
|
refreshTurns: number;
|
|
68
71
|
/** Gate the hook's backfill on the prompt's own content instead of the five
|
|
@@ -79,8 +82,10 @@ export interface HippoConfig {
|
|
|
79
82
|
/** FTS candidate pool size per store before gating. Default 100. */
|
|
80
83
|
promptRecallCandidates: number;
|
|
81
84
|
};
|
|
82
|
-
/** Memory scope isolation (default true): ambient context (`hippo context`, the hook, /v1/context, MCP hippo_context)
|
|
83
|
-
*
|
|
85
|
+
/** Memory scope isolation (default true): ambient context (`hippo context`, the hook, /v1/context, MCP hippo_context)
|
|
86
|
+
* excludes OTHER projects' memories;
|
|
87
|
+
* explicit recall is unaffected. False disables the ORIGIN PARTITION only: the secret veto is unconditional, and
|
|
88
|
+
* no flag re-includes secret-flagged rows. */
|
|
84
89
|
contextProjectIsolation: boolean;
|
|
85
90
|
extraction: {
|
|
86
91
|
enabled: boolean | 'auto';
|
|
@@ -100,12 +105,15 @@ export interface HippoConfig {
|
|
|
100
105
|
enabled: boolean;
|
|
101
106
|
};
|
|
102
107
|
/** Opt-in learned memory-value rescue veto on the sleep decay pass. Default OFF: the frozen weights
|
|
103
|
-
*
|
|
108
|
+
* (src/consolidate/memory-value-weights.ts) only run when enabled; the rescue budget is a code constant, not
|
|
109
|
+
* user-tunable. */
|
|
104
110
|
memoryValue: {
|
|
105
111
|
enabled: boolean;
|
|
106
112
|
};
|
|
107
|
-
/** Dormant memories (src/store/dormant.ts), on by default: the sleep decay pass moves a memory that faded below the
|
|
108
|
-
*
|
|
113
|
+
/** Dormant memories (src/store/dormant.ts), on by default: the sleep decay pass moves a memory that faded below the
|
|
114
|
+
* threshold there instead of deleting it
|
|
115
|
+
* (`hippo dormant restore|forget <id>`); a faded memory the secret detector flags is always deleted. `{"enabled":
|
|
116
|
+
* false}` restores delete-on-fade. */
|
|
109
117
|
dormant: {
|
|
110
118
|
enabled: boolean;
|
|
111
119
|
/** Days a dormant memory is kept before sleep deletes it for good.
|
|
@@ -143,7 +151,8 @@ export interface HippoConfig {
|
|
|
143
151
|
export declare const DEFAULT_CONFIG: HippoConfig;
|
|
144
152
|
export declare function loadConfig(hippoRoot: string): HippoConfig;
|
|
145
153
|
/** True when the store's config.json sets `"sharedStore": true`. Once true, a root stays true for this process,
|
|
146
|
-
*
|
|
154
|
+
* so a broken edit while a server runs cannot turn it off. Reads only this key, so loadConfig's warnings stay
|
|
155
|
+
* loadConfig's. */
|
|
147
156
|
export declare function isSharedStore(hippoRoot: string): boolean;
|
|
148
157
|
/** Reads the root as shared for the rest of this process, whatever its config.json says. */
|
|
149
158
|
export declare function markSharedStore(hippoRoot: string): void;
|