hippo-memory 1.72.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/README.md +6 -4
- 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 -5
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/auth/audit.js +58 -0
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
- package/dist/api/{auth.js → auth/auth.js} +66 -54
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
- 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 +14 -4
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +31 -34
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +120 -63
- 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} +23 -17
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/memories/memories.js +52 -0
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/memories/outcome.js +28 -0
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/memories/promote.js +76 -0
- 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} +17 -9
- package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
- package/dist/api/{remember.js → memories/remember.js} +50 -32
- 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 -7
- 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 -3
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -5
- 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 +35 -20
- package/dist/api/prompt-hook.js +66 -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} +185 -101
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +116 -72
- 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 -68
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +36 -8
- package/dist/api/session-end.js +71 -25
- 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} +54 -45
- 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 +27 -12
- 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 +34 -15
- 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 +18 -9
- package/dist/capture/compaction-spool.js +105 -63
- 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 +58 -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 +33 -33
- package/dist/cli/auth.js +23 -31
- 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 -5
- package/dist/cli/client.js +53 -23
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +43 -18
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +5 -4
- package/dist/cli/curate.js +55 -77
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +30 -30
- 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 +34 -10
- package/dist/cli/hook-runtime.js +41 -16
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +35 -20
- 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 +5 -5
- package/dist/cli/object-verbs.js +13 -16
- 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 +17 -22
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +17 -7
- package/dist/cli/remember.js +51 -55
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +28 -18
- package/dist/cli/session-hooks.d.ts +2 -6
- package/dist/cli/session-hooks.js +140 -112
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.js +56 -34
- package/dist/cli/shared.d.ts +4 -2
- package/dist/cli/shared.js +26 -11
- 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 +16 -8
- 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 +4 -4
- package/dist/cli/transfer.js +97 -82
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +1 -1
- package/dist/cli/verb-row.d.ts +2 -0
- package/dist/cli/verbs/health.js +2 -0
- package/dist/cli/verbs/memory.js +47 -53
- package/dist/cli/verbs/objects.js +16 -7
- package/dist/cli/verbs/sessions.js +4 -2
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +14 -18
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -7
- 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 -4
- 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 -5
- 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 -5
- 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 +36 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -3
- 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 -5
- 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 -4
- 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 -5
- 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 +24 -10
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +45 -39
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +28 -17
- 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 +37 -14
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +47 -37
- 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 +42 -39
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +27 -30
- 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 +38 -29
- 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 +22 -17
- 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 +87 -30
- package/dist/core/memory.js +82 -33
- 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 +39 -11
- package/dist/core/physics.js +71 -21
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +35 -18
- 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.d.ts +2 -2
- package/dist/dashboard/dashboard-actions.js +18 -7
- package/dist/dashboard/dashboard-queries.js +2 -7
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +5 -7
- package/dist/dashboard/dashboard.js +22 -8
- 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 -2
- package/dist/db/connect.js +8 -2
- 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 +40 -20
- 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/v11.js +1 -0
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -0
- 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 -8
- package/dist/db/physics-state.js +17 -50
- 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 +20 -5
- package/dist/db/request-stores.js +15 -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 +35 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.js +128 -46
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +11 -7
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +32 -27
- 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 +50 -0
- package/dist/entry/store-kit.js +27 -0
- package/dist/entry/testing.d.ts +6 -0
- package/dist/entry/testing.js +7 -0
- 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 +17 -7
- 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 +72 -33
- 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 +11 -10
- 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 +3 -3
- package/dist/importers/vault.js +61 -45
- package/dist/index.d.ts +33 -7
- package/dist/index.js +26 -8
- package/dist/learn/autolearn.d.ts +21 -6
- package/dist/learn/autolearn.js +57 -26
- 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 +17 -10
- 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 -6
- package/dist/learn/invalidation.js +62 -28
- 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 +21 -20
- 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 +61 -77
- 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 +59 -23
- 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 +19 -9
- 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 +12 -4
- package/dist/search/embed-memories.js +96 -58
- package/dist/search/engine.d.ts +11 -0
- package/dist/search/engine.js +14 -0
- 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 +14 -8
- package/dist/server/auth.d.ts +19 -15
- package/dist/server/auth.js +68 -38
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.js +115 -67
- package/dist/server/client-ip.d.ts +17 -5
- package/dist/server/client-ip.js +56 -21
- 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 +550 -97
- 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 -17
- 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 +40 -18
- package/dist/server/tls.d.ts +10 -2
- package/dist/server/tls.js +25 -5
- package/dist/server/types.d.ts +41 -24
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +17 -49
- package/dist/server.js +33 -40
- package/dist/sharing/global-store.d.ts +6 -12
- package/dist/sharing/global-store.js +8 -48
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +17 -7
- 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 +28 -14
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +40 -18
- package/dist/store/ambient.js +10 -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 +90 -41
- 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 +97 -63
- 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 +101 -37
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +16 -5
- package/dist/store/conflicts.js +104 -48
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +58 -6
- package/dist/store/connectors/event-log.d.ts +122 -0
- package/dist/store/connectors/event-log.js +25 -0
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +30 -48
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +31 -47
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -10
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +70 -28
- package/dist/store/delivery-recorder.d.ts +10 -7
- package/dist/store/delivery-recorder.js +70 -37
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +26 -10
- 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 +45 -19
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +72 -21
- package/dist/store/entry-reads.js +215 -69
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +26 -14
- package/dist/store/entry-writes.d.ts +28 -13
- package/dist/store/entry-writes.js +61 -22
- 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 +11 -12
- 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 +29 -19
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +15 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/half-life.js +2 -2
- package/dist/store/handoffs.d.ts +13 -7
- package/dist/store/handoffs.js +44 -22
- 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 +4 -2
- package/dist/store/index.js +2 -1
- 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 +96 -19
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +6 -3
- package/dist/store/open.js +20 -10
- 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 +261 -219
- 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 +128 -64
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +46 -20
- 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 +20 -13
- package/dist/store/rule-sql.d.ts +7 -3
- package/dist/store/rule-sql.js +26 -13
- package/dist/store/search-rows.d.ts +16 -11
- package/dist/store/search-rows.js +54 -32
- 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 +12 -5
- 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 +9 -6
- 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 +8 -0
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +15 -0
- package/dist/store/sqlite/last-recall-group.js +62 -0
- 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.d.ts +6 -0
- package/dist/store/sqlite/maintenance-groups.js +61 -0
- 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 +97 -38
- 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 -18
- package/dist/store/sqlite/store.js +95 -33
- 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 +25 -11
- package/dist/store/summaries.js +84 -27
- 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 +8 -4
- 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 +28 -11
- 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 +7 -2
- package/dist/util/anthropic-messages.js +18 -7
- package/dist/util/atomic-write.d.ts +8 -3
- package/dist/util/atomic-write.js +36 -21
- 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 +26 -5
- package/dist/util/env.js +87 -25
- package/dist/util/format.d.ts +2 -0
- package/dist/util/format.js +4 -0
- 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 +16 -4
- package/dist/util/request-scope.js +19 -6
- 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 +11 -0
- package/dist/util/spawn-argv.js +66 -0
- package/dist/util/sql.d.ts +3 -0
- package/dist/util/sql.js +6 -0
- 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/vector-codec.d.ts +4 -0
- package/dist/util/vector-codec.js +15 -0
- 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 +4 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/audit.js +0 -56
- 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 -7
- package/dist/api/learn.js +0 -124
- package/dist/api/memories.d.ts +0 -23
- package/dist/api/memories.js +0 -46
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/on-store.d.ts +0 -16
- package/dist/api/on-store.js +0 -38
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/outcome.js +0 -21
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/promote.js +0 -65
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -120
- 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 -10
- package/dist/cli/lenient-id.d.ts +0 -2
- package/dist/cli/lenient-id.js +0 -13
- 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 -21
- package/dist/store/sqlite/local.js +0 -39
package/dist/api/prompt-hook.js
CHANGED
|
@@ -1,61 +1,65 @@
|
|
|
1
|
-
// The per-prompt hook's block and ledger rows, rendered here for `hippo context` and for promptHookContext (a remote
|
|
2
|
-
// promptHookContext keeps the server-side copy of the CLI's getContext flags (cli/context.ts);
|
|
3
|
-
//
|
|
1
|
+
// The per-prompt hook's block and ledger rows, rendered here for `hippo context` and for promptHookContext (a remote
|
|
2
|
+
// hook route's call). promptHookContext keeps the server-side copy of the CLI's getContext flags (cli/context.ts); the
|
|
3
|
+
// CLI parity case in tests/prompt-hook-context.test.ts is all that ties the two.
|
|
4
4
|
import { getContext } from './index.js';
|
|
5
5
|
import { BadRequestError } from '../core/api-errors.js';
|
|
6
6
|
import { isSharedStore, loadConfig } from '../core/config.js';
|
|
7
|
-
import { contextBlockLines, contextCost, crossProjectLines, handoffText, sessionTrailText, settleTokens, snapshotText } from './context-render.js';
|
|
8
|
-
import { createDeliveryRecorder } from '../store/delivery-recorder.js';
|
|
7
|
+
import { contextBlockLines, contextCost, crossProjectLines, handoffText, sessionTrailText, settleTokens, snapshotText, } from './context-render.js';
|
|
8
|
+
import { createDeliveryRecorder, } from '../store/delivery-recorder.js';
|
|
9
9
|
import { realpathOrResolve } from '../util/real-path.js';
|
|
10
10
|
import { MAX_ID_LEN } from '../util/limits.js';
|
|
11
11
|
import { isJsonString } from '../util/json.js';
|
|
12
|
-
import { bookLedgerTurn, ledgerLastSent, ledgerRoot } from './ledger-db.js';
|
|
12
|
+
import { bookLedgerTurn, ledgerLastSent, ledgerReachOf, ledgerRoot } from './ledger-db.js';
|
|
13
13
|
import { noteLedgerRowSkipped } from '../store/ledger-turn.js';
|
|
14
14
|
import { sessionPilotArm } from './pilot-arm.js';
|
|
15
|
-
import { assertCallerProject,
|
|
15
|
+
import { assertCallerProject, MAX_PROJECT_ALIASES } from '../core/project-identity.js';
|
|
16
16
|
import { writeDeliveryEventAtRoot } from '../store/recall-trace.js';
|
|
17
17
|
import { shouldSkipUnchanged } from '../store/token-ledger.js';
|
|
18
18
|
import { hookPayloadString, isSubagentPayload } from '../util/hook-payload.js';
|
|
19
19
|
import { blockHash, estimateTokens } from '../util/token-text.js';
|
|
20
|
-
import { errorMessage, log } from '../util/log.js';
|
|
20
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
21
21
|
import { DEFAULT_CONTEXT_BUDGET } from './context.js';
|
|
22
22
|
/** A delivery recorder for a hook on `ctx.hippoRoot` when the ledger store enables one, else null; never throws. */
|
|
23
23
|
export function startDeliveryRecorder(ctx, start) {
|
|
24
24
|
try {
|
|
25
25
|
// The same store the token ledger writes to, so its config governs both.
|
|
26
|
-
const root = ledgerRoot(ctx.hippoRoot);
|
|
26
|
+
const root = ledgerRoot(ctx.hippoRoot, ledgerReachOf(ctx));
|
|
27
27
|
if (root === null || !loadConfig(root).deliveryLedger.enabled)
|
|
28
28
|
return null;
|
|
29
29
|
return createDeliveryRecorder({
|
|
30
30
|
root,
|
|
31
31
|
storeHash: blockHash(realpathOrResolve(root)),
|
|
32
|
-
|
|
32
|
+
// ledgerRoot falls back to the global root only when the primary is not initialized.
|
|
33
|
+
writeStore: root !== ctx.hippoRoot || ctx.reach?.isGlobal === true ? 'global' : 'local',
|
|
33
34
|
tenantId: ctx.tenantId,
|
|
34
35
|
stdinText: start.stdinText,
|
|
35
36
|
envSessionId: start.envSessionId,
|
|
36
37
|
runtime: start.runtime === 'copilot' ? 'copilot' : undefined,
|
|
37
38
|
eventType: start.eventType,
|
|
39
|
+
fault: start.fault,
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
42
|
catch (error) {
|
|
41
|
-
log.warn(`delivery ledger skipped: ${errorMessage(error)}
|
|
43
|
+
log.warn(`delivery ledger skipped: ${errorMessage(error)}`, errorFields(error));
|
|
42
44
|
return null;
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
|
-
/** A recorder for `hippo capture-error`, only when the failure log and the ledger are one store, so `failure_id` never
|
|
47
|
+
/** A recorder for `hippo capture-error`, only when the failure log and the ledger are one store, so `failure_id` never
|
|
48
|
+
* points into another. */
|
|
46
49
|
export function startToolFailureRecorder(ctx, start) {
|
|
47
50
|
try {
|
|
48
|
-
const root = ledgerRoot(ctx.hippoRoot);
|
|
51
|
+
const root = ledgerRoot(ctx.hippoRoot, ledgerReachOf(ctx));
|
|
49
52
|
if (root === null || realpathOrResolve(root) !== realpathOrResolve(ctx.hippoRoot))
|
|
50
53
|
return null;
|
|
51
54
|
return startDeliveryRecorder(ctx, { ...start, eventType: 'tool-failure' });
|
|
52
55
|
}
|
|
53
56
|
catch (error) {
|
|
54
|
-
log.warn(`delivery ledger skipped: ${errorMessage(error)}
|
|
57
|
+
log.warn(`delivery ledger skipped: ${errorMessage(error)}`, errorFields(error));
|
|
55
58
|
return null;
|
|
56
59
|
}
|
|
57
60
|
}
|
|
58
|
-
/** With `write`, stores on the token ledger's connection (same
|
|
61
|
+
/** With `write`, stores on the token ledger's connection (same
|
|
62
|
+
* store); without it, opens its own. A second flush is a no-op. */
|
|
59
63
|
export function flushDeliveryRecorder(rec, write) {
|
|
60
64
|
if (rec === null)
|
|
61
65
|
return;
|
|
@@ -63,10 +67,11 @@ export function flushDeliveryRecorder(rec, write) {
|
|
|
63
67
|
rec.flush(write ?? ((input) => writeDeliveryEventAtRoot(rec.root, input)));
|
|
64
68
|
}
|
|
65
69
|
catch (error) {
|
|
66
|
-
log.error(`delivery ledger write failed: ${errorMessage(error)}
|
|
70
|
+
log.error(`delivery ledger write failed: ${errorMessage(error)}`, errorFields(error));
|
|
67
71
|
}
|
|
68
72
|
}
|
|
69
|
-
/** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which
|
|
73
|
+
/** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which
|
|
74
|
+
* only the Copilot harness sends. */
|
|
70
75
|
export function sessionStartEnvelope(stdinText) {
|
|
71
76
|
return hookPayloadString(stdinText, 'sessionId') !== null ? 'copilot-session-start' : 'vscode-session-start';
|
|
72
77
|
}
|
|
@@ -86,17 +91,14 @@ export function hasContextData(result) {
|
|
|
86
91
|
export function toRenderItems(entries) {
|
|
87
92
|
return entries.map((r) => ({ entry: r.entry, score: r.score, tokens: r.tokens, isGlobal: r.isGlobal ?? false }));
|
|
88
93
|
}
|
|
89
|
-
/** The hook format's stdout, '' when nothing is sent: a skippable static block (snapshot, handoff, events, pins,
|
|
94
|
+
/** The hook format's stdout, '' when nothing is sent: a skippable static block (snapshot, handoff, events, pins,
|
|
95
|
+
* recent-N) and a never-skipped recall block. */
|
|
90
96
|
export function additionalContextOutput(view) {
|
|
91
97
|
return renderAdditionalContext(view).stdout;
|
|
92
98
|
}
|
|
93
|
-
function
|
|
94
|
-
const { result,
|
|
95
|
-
|
|
96
|
-
const staticCrossEntries = result.entries.filter((r) => r.category === 'cross-project' && !r.promptRecall);
|
|
97
|
-
const staticItems = toRenderItems(staticEntries);
|
|
98
|
-
const recallItems = toRenderItems(result.entries.filter((r) => r.promptRecall));
|
|
99
|
-
const staticBlock = settleTokens((t) => [
|
|
99
|
+
function renderStaticBlock(view, staticItems, staticCrossEntries) {
|
|
100
|
+
const { result, framing } = view;
|
|
101
|
+
return settleTokens((t) => [
|
|
100
102
|
...(result.activeSnapshot ? [snapshotText(result.activeSnapshot)] : []),
|
|
101
103
|
...(result.sessionHandoff ? [handoffText(result.sessionHandoff)] : []),
|
|
102
104
|
...(result.recentEvents && result.recentEvents.length > 0 ? [sessionTrailText(result.recentEvents)] : []),
|
|
@@ -104,9 +106,20 @@ function renderAdditionalContext(view) {
|
|
|
104
106
|
...(staticItems.length > 0 ? contextBlockLines(staticItems, t, framing, { showStrength: false }) : []),
|
|
105
107
|
...crossProjectLines(staticCrossEntries),
|
|
106
108
|
].join('\n'));
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
109
|
+
}
|
|
110
|
+
function renderRecallBlock(recallItems, framing) {
|
|
111
|
+
if (recallItems.length === 0)
|
|
112
|
+
return '';
|
|
113
|
+
return settleTokens((t) => contextBlockLines(recallItems, t, framing, { showStrength: false, heading: 'Prompt-Relevant Memory' }).join('\n'));
|
|
114
|
+
}
|
|
115
|
+
function renderAdditionalContext(view) {
|
|
116
|
+
const { result, rec, framing } = view;
|
|
117
|
+
const staticEntries = result.entries.filter((r) => r.category !== 'cross-project' && !r.promptRecall);
|
|
118
|
+
const staticCrossEntries = result.entries.filter((r) => r.category === 'cross-project' && !r.promptRecall);
|
|
119
|
+
const staticItems = toRenderItems(staticEntries);
|
|
120
|
+
const recallItems = toRenderItems(result.entries.filter((r) => r.promptRecall));
|
|
121
|
+
const staticBlock = renderStaticBlock(view, staticItems, staticCrossEntries);
|
|
122
|
+
const recallBlock = renderRecallBlock(recallItems, framing);
|
|
110
123
|
if (!staticBlock.trim() && !recallBlock.trim()) {
|
|
111
124
|
rec?.delivered({ state: 'empty' });
|
|
112
125
|
return NOTHING_RENDERED;
|
|
@@ -138,13 +151,12 @@ function renderAdditionalContext(view) {
|
|
|
138
151
|
/** True, after booking the skip row, when the hook may omit a static block this session already holds. */
|
|
139
152
|
function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCount) {
|
|
140
153
|
const { hippoRoot, payloadSessionId, rec } = view;
|
|
141
|
-
const ledgerOpts = { sharedStore: view.sharedStore };
|
|
142
154
|
if (!view.pinnedOnly || payloadSessionId === undefined)
|
|
143
155
|
return false;
|
|
144
156
|
// Session start is the only injection Copilot gets, so a resumed session needs the whole block again.
|
|
145
157
|
if (view.envelope === 'copilot-session-start' || view.envelope === 'vscode-session-start')
|
|
146
158
|
return false;
|
|
147
|
-
const injectCfg = loadConfig(hippoRoot).pinnedInject;
|
|
159
|
+
const injectCfg = (view.config ?? loadConfig(hippoRoot)).pinnedInject;
|
|
148
160
|
if (injectCfg.skipUnchanged === false)
|
|
149
161
|
return false;
|
|
150
162
|
const refreshTurns = Number.isFinite(injectCfg.refreshTurns) && injectCfg.refreshTurns >= 0
|
|
@@ -155,7 +167,7 @@ function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCoun
|
|
|
155
167
|
// Before the ledger read, so a caller that did not print this block books no skip row.
|
|
156
168
|
if (view.printedHash !== undefined && view.printedHash !== staticHash)
|
|
157
169
|
return false;
|
|
158
|
-
const last = ledgerLastSent(hippoRoot, view.tenantId, payloadSessionId, surface,
|
|
170
|
+
const last = ledgerLastSent(hippoRoot, view.tenantId, payloadSessionId, surface, view.reach);
|
|
159
171
|
if (!shouldSkipUnchanged(last ?? null, staticHash, refreshTurns))
|
|
160
172
|
return false;
|
|
161
173
|
bookLedgerTurn(hippoRoot, {
|
|
@@ -167,20 +179,24 @@ function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCoun
|
|
|
167
179
|
rec?.delivered({ state: 'reused', staticHash, staticReused: true });
|
|
168
180
|
flushDeliveryRecorder(rec, write);
|
|
169
181
|
},
|
|
170
|
-
},
|
|
182
|
+
}, view.reach);
|
|
171
183
|
return true;
|
|
172
184
|
}
|
|
173
|
-
/** One connection for both rows; a failed row is logged and the other still lands, because a ledger failure must not
|
|
185
|
+
/** One connection for both rows; a failed row is logged and the other still lands, because a ledger failure must not
|
|
186
|
+
* break the hook. */
|
|
174
187
|
function recordAdditionalContextRows(view, surface, staticPart, recallPart) {
|
|
175
188
|
const row = (part, on) => ({
|
|
176
189
|
tenantId: view.tenantId, sessionId: view.ledgerSessionId, surface: on, event: 'inject',
|
|
177
190
|
items: part.items, tokens: estimateTokens(part.text), hash: blockHash(part.text),
|
|
178
191
|
});
|
|
179
192
|
bookLedgerTurn(view.hippoRoot, {
|
|
180
|
-
uses: [
|
|
193
|
+
uses: [
|
|
194
|
+
...(staticPart.text ? [row(staticPart, surface)] : []),
|
|
195
|
+
...(recallPart.text ? [row(recallPart, 'hook_recall')] : []),
|
|
196
|
+
],
|
|
181
197
|
onRowError: noteLedgerRowSkipped,
|
|
182
198
|
delivery: (write) => flushDeliveryRecorder(view.rec, write),
|
|
183
|
-
},
|
|
199
|
+
}, view.reach);
|
|
184
200
|
}
|
|
185
201
|
// The flags HIPPO_PINNED_INJECT_COMMAND gives the local hook; the CLI parity test fails if the two drift.
|
|
186
202
|
const HOOK_INCLUDE_RECENT = 5;
|
|
@@ -191,8 +207,9 @@ const BLOCK_HASH_RE = /^[0-9a-f]{16}$/;
|
|
|
191
207
|
/** The caps on a hook caller's session id and project names, so a caller other than an HTTP route is bounded too. */
|
|
192
208
|
export function assertCallerIds(sessionId, project) {
|
|
193
209
|
const { name, legacyName, aliases = [] } = project;
|
|
194
|
-
if (aliases.length > MAX_PROJECT_ALIASES)
|
|
210
|
+
if (aliases.length > MAX_PROJECT_ALIASES) {
|
|
195
211
|
throw new BadRequestError(`project aliases: at most ${MAX_PROJECT_ALIASES}`);
|
|
212
|
+
}
|
|
196
213
|
if ([sessionId, name, legacyName, ...aliases].some((v) => v.length > MAX_ID_LEN)) {
|
|
197
214
|
throw new BadRequestError(`session id and project names: at most ${MAX_ID_LEN} characters each`);
|
|
198
215
|
}
|
|
@@ -203,20 +220,24 @@ function assertPromptHookRequest(req) {
|
|
|
203
220
|
throw new BadRequestError('printed hash: 16 lowercase hex characters');
|
|
204
221
|
}
|
|
205
222
|
}
|
|
206
|
-
/** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read
|
|
207
|
-
* Omits an unchanged static block only when `printedHash` matches; `arm` is the
|
|
208
|
-
* `
|
|
209
|
-
*
|
|
223
|
+
/** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read
|
|
224
|
+
* on `ctx`'s store for its project. Omits an unchanged static block only when `printedHash` matches; `arm` is the
|
|
225
|
+
* ledger arm (`hippo` or `holdout`, null at rate 0); a holdout gets empty stdout. `staticHash` is the hash to echo back
|
|
226
|
+
* (null with no static block, a sub-agent or a holdout). Scope detection and delivery-ledger events are CLI-only.
|
|
227
|
+
* Throws BadRequestError past the input caps, and on a shared store for a project assertCallerProject refuses, before
|
|
228
|
+
* any arm is booked. */
|
|
210
229
|
export async function promptHookContext(ctx, req, opts = {}) {
|
|
211
230
|
assertPromptHookRequest(req);
|
|
212
231
|
const { sessionId, payload } = req;
|
|
213
232
|
const { sharedStore } = opts;
|
|
214
|
-
|
|
233
|
+
const sharedByReach = ctx.reach ? ctx.reach.shared : isSharedStore(ctx.hippoRoot);
|
|
234
|
+
if (sharedStore || sharedByReach)
|
|
215
235
|
assertCallerProject(req.project);
|
|
216
236
|
// The test the local hook runs on its stdin, so a sub-agent books no arm and no session rows here either.
|
|
217
237
|
const subagent = payload !== undefined && isSubagentPayload(JSON.stringify(payload));
|
|
218
238
|
const ledgerSessionId = subagent ? undefined : sessionId;
|
|
219
|
-
const
|
|
239
|
+
const reach = ledgerReachOf(ctx, sharedStore);
|
|
240
|
+
const arm = sessionPilotArm(ctx.hippoRoot, ctx.tenantId, sessionId, !subagent, { reach, ownTenantOnly: true });
|
|
220
241
|
if (arm === 'holdout')
|
|
221
242
|
return { arm, ...NOTHING_RENDERED };
|
|
222
243
|
const prompt = payload?.prompt;
|
|
@@ -233,8 +254,9 @@ export async function promptHookContext(ctx, req, opts = {}) {
|
|
|
233
254
|
});
|
|
234
255
|
const rendered = hasContextData(result)
|
|
235
256
|
? renderAdditionalContext({
|
|
236
|
-
hippoRoot: ctx.hippoRoot, tenantId: ctx.tenantId, ledgerSessionId,
|
|
237
|
-
pinnedOnly: true, framing: HOOK_FRAMING, rec: null, result,
|
|
257
|
+
hippoRoot: ctx.hippoRoot, config: ctx.config, tenantId: ctx.tenantId, ledgerSessionId,
|
|
258
|
+
payloadSessionId: ledgerSessionId, pinnedOnly: true, framing: HOOK_FRAMING, rec: null, result, reach,
|
|
259
|
+
printedHash: req.printedHash ?? null,
|
|
238
260
|
})
|
|
239
261
|
: NOTHING_RENDERED;
|
|
240
262
|
// A sub-agent's output is not the session's, so its caller must not record it as printed.
|
|
@@ -8,7 +8,9 @@ export interface ProvenanceCoverage {
|
|
|
8
8
|
missing: ('owner' | 'artifact_ref')[];
|
|
9
9
|
}>;
|
|
10
10
|
}
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows
|
|
13
|
+
* are excluded.
|
|
12
14
|
* Coverage 1.0 on a non-empty raw set is the ship gate. */
|
|
13
15
|
export declare function buildProvenanceCoverage(entries: MemoryEntry[]): ProvenanceCoverage;
|
|
14
16
|
//# sourceMappingURL=provenance-coverage.d.ts.map
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows
|
|
3
|
+
* are excluded.
|
|
2
4
|
* Coverage 1.0 on a non-empty raw set is the ship gate. */
|
|
3
5
|
export function buildProvenanceCoverage(entries) {
|
|
4
6
|
const raws = entries.filter((e) => e.kind === 'raw');
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { type AppendAuditOpts, type AuditOp } from '../../store/audit.js';
|
|
2
|
+
import type { HippoStore, RecallWrites } from '../../store/index.js';
|
|
3
|
+
import type { TokenSurface } from '../../store/token-ledger.js';
|
|
4
|
+
import type { AvailabilityHint } from '../availability.js';
|
|
5
|
+
import type { Context, StoreContext } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Anchoring detector (recall-recurrence), pure module: `query_repeat` (a queryHash re-asked within the window returns
|
|
8
|
+
* the same topMemoryId) and
|
|
9
|
+
* `memory_dominance` (the same topMemoryId across >= minDominance distinct queryHashes). Each pipeline keeps its OWN
|
|
10
|
+
* ring Map keyed by (tenant, session),
|
|
11
|
+
* because its top-1 ranking differs. AnchoringHint and PlanningFallacyHint are independent signals. */
|
|
12
|
+
export type AnchoringReason = 'query_repeat' | 'memory_dominance';
|
|
13
|
+
export interface AnchoringHint {
|
|
14
|
+
reason: AnchoringReason;
|
|
15
|
+
/** The memory ID that is anchoring the agent's reasoning. */
|
|
16
|
+
memoryId: string;
|
|
17
|
+
/** For 'memory_dominance': how many distinct queries in the recent window
|
|
18
|
+
* had this memory as their top-1 result. Always >= 3 when emitted. */
|
|
19
|
+
queryCount?: number;
|
|
20
|
+
/** Human-readable summary surfaced to the agent. */
|
|
21
|
+
summary: string;
|
|
22
|
+
/** Discriminator for hint origin; reserved for future variants. */
|
|
23
|
+
source: 'j1-recurrence';
|
|
24
|
+
}
|
|
25
|
+
export interface RecallHistoryEntry {
|
|
26
|
+
/** Hash of the queryText that produced this entry (see hashQueryText). */
|
|
27
|
+
queryHash: number;
|
|
28
|
+
/** Top-1 memory id this recall surfaced; null if zero results. */
|
|
29
|
+
topMemoryId: string | null;
|
|
30
|
+
/** ISO-8601 timestamp; advisory, not used by the detection rules. */
|
|
31
|
+
ts: string;
|
|
32
|
+
/**
|
|
33
|
+
* Memory id of the AnchoringHint that fired on this recall, if any; the caller writes it after detectAnchoring
|
|
34
|
+
* returns, and the cooldown reads it next
|
|
35
|
+
* time. */
|
|
36
|
+
anchoredOn?: string;
|
|
37
|
+
}
|
|
38
|
+
export type RecallHistorySnapshot = readonly RecallHistoryEntry[];
|
|
39
|
+
export interface DetectAnchoringOpts {
|
|
40
|
+
/** memory_dominance threshold: number of distinct queryHashes that must have returned
|
|
41
|
+
* the same topMemoryId. Default 3. */
|
|
42
|
+
minDominance?: number;
|
|
43
|
+
/** query_repeat window: how many recent history entries to scan for query repeat.
|
|
44
|
+
* Default 5. */
|
|
45
|
+
recentRepeatWindow?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Cooldown: suppress when the prior fire (per `anchoredOn`) was for the same topMemoryId within this many history
|
|
48
|
+
* entries. Default 3.
|
|
49
|
+
*/
|
|
50
|
+
cooldown?: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Normalizes a query (lowercase, strip non-alphanumerics, drop short tokens, sort, dedup, join) and hashes it with
|
|
54
|
+
* 32-bit FNV-1a.
|
|
55
|
+
* Reordered words collide intentionally; deterministic across processes and V8 versions. */
|
|
56
|
+
export declare function hashQueryText(query: string): number;
|
|
57
|
+
/**
|
|
58
|
+
* Detects anchoring against the current (queryHash, topMemoryId); memory_dominance wins when both rules fire, since it
|
|
59
|
+
* spans DIFFERENT queries.
|
|
60
|
+
* Cooldown is per memory: a hint on the SAME topMemoryId within `cooldown=3` history entries is suppressed. Returns an
|
|
61
|
+
* AnchoringHint or null.
|
|
62
|
+
*/
|
|
63
|
+
export declare function detectAnchoring(history: RecallHistorySnapshot, currentQueryHash: number, currentTopMemoryId: string | null, opts?: DetectAnchoringOpts): AnchoringHint | null;
|
|
64
|
+
/**
|
|
65
|
+
* Bounded FIFO ring of RecallHistoryEntry (oldest evicted when full); a thin array wrapper so snapshotRing returns a
|
|
66
|
+
* readonly view without copying.
|
|
67
|
+
*/
|
|
68
|
+
export declare class RingBuffer {
|
|
69
|
+
private entries;
|
|
70
|
+
append(entry: RecallHistoryEntry): void;
|
|
71
|
+
snapshot(): RecallHistorySnapshot;
|
|
72
|
+
size(): number;
|
|
73
|
+
}
|
|
74
|
+
/** Builds the (tenant, session) key with a NUL delimiter: tenant and session ids are validated elsewhere to reject NUL,
|
|
75
|
+
* so concatenation cannot collide even though API-key-derived subjects can contain `:`. */
|
|
76
|
+
export declare function buildSessionKey(tenantId: string, sessionId: string): string;
|
|
77
|
+
/**
|
|
78
|
+
* Get-or-create a RingBuffer per session key, capped at `maxSessions` (default 1000); at the cap the oldest-inserted
|
|
79
|
+
* key (first from Map.keys()) is
|
|
80
|
+
* evicted. */
|
|
81
|
+
export declare function getOrCreateRing(map: Map<string, RingBuffer>, key: string, maxSessions?: number): RingBuffer;
|
|
82
|
+
/**
|
|
83
|
+
* Appends a recall to a ring; `anchoredOn` is the memoryId of the hint that fired on THIS recall (or undefined), read
|
|
84
|
+
* by detectAnchoring for cooldown.
|
|
85
|
+
*/
|
|
86
|
+
export declare function appendRecall(ring: RingBuffer, queryHash: number, topMemoryId: string | null, anchoredOn?: string): void;
|
|
87
|
+
/** Snapshot a ring as a readonly RecallHistorySnapshot. */
|
|
88
|
+
export declare function snapshotRing(ring: RingBuffer): RecallHistorySnapshot;
|
|
89
|
+
/**
|
|
90
|
+
* Whether a recall bias hint is enabled; reads env at call time, so `HIPPO_ANCHORING=off` or `HIPPO_AVAILABILITY=off`
|
|
91
|
+
* disables only that kind.
|
|
92
|
+
*/
|
|
93
|
+
export declare function biasHintEnabled(kind: 'anchoring' | 'availability'): boolean;
|
|
94
|
+
/** The ids among `ids` that a tenant's rows in `store` hold. */
|
|
95
|
+
export declare function heldIds(store: HippoStore, ids: readonly string[], tenantId: string): Promise<Set<string>>;
|
|
96
|
+
export type RecallSurface = 'cli' | 'mcp' | 'http';
|
|
97
|
+
/** The session's ring, created on first use; null when anchoring is off or the call has no session. */
|
|
98
|
+
export declare function sessionRing(surface: RecallSurface, tenantId: string, sessionId: string | undefined): RingBuffer | null;
|
|
99
|
+
/** Records this recall's top row and hint, which the next recall's cooldown reads. */
|
|
100
|
+
export declare function noteRecall(ring: RingBuffer, query: string, topId: string | null, anchoredOn: string | undefined): void;
|
|
101
|
+
export declare function resetSessionRings(surface: RecallSurface): void;
|
|
102
|
+
/** Whom a recall audit row names. */
|
|
103
|
+
export interface RecallAuditCaller {
|
|
104
|
+
readonly tenantId: string;
|
|
105
|
+
readonly actor: string;
|
|
106
|
+
}
|
|
107
|
+
export declare function callerOf(ctx: Context): RecallAuditCaller;
|
|
108
|
+
/** The strengthen every ranker of `retrieve` hands to the recall's write: the shown ids, in the caller's tenant. */
|
|
109
|
+
export declare function strengthenOf(ctx: Context, ids: readonly string[]): NonNullable<RecallWrites['strengthen']>;
|
|
110
|
+
type RecallAuditMetadata = Readonly<Record<string, string | number | null>>;
|
|
111
|
+
export declare function recallAuditRow(who: RecallAuditCaller, op: AuditOp, targetId?: string, metadata?: RecallAuditMetadata): AppendAuditOpts;
|
|
112
|
+
export declare function recallAuditMetadata(query: string, results: number): {
|
|
113
|
+
results: number;
|
|
114
|
+
query_hash: string;
|
|
115
|
+
query_length: number;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* No session means no ring; the row hashes with SHA-256/16, since hashQueryText is FNV-1a and easy to reverse on short
|
|
119
|
+
* queries.
|
|
120
|
+
*/
|
|
121
|
+
export declare function anchorSkippedRows(who: RecallAuditCaller, query: string): AppendAuditOpts[];
|
|
122
|
+
export declare function anchoringRows(who: RecallAuditCaller, hint: AnchoringHint | null): AppendAuditOpts[];
|
|
123
|
+
export declare function availabilityRows(who: RecallAuditCaller, hint: AvailabilityHint | null): AppendAuditOpts[];
|
|
124
|
+
export interface ShownRecall {
|
|
125
|
+
readonly query: string;
|
|
126
|
+
readonly ring: RingBuffer | null;
|
|
127
|
+
readonly topId: string | null;
|
|
128
|
+
readonly anchoring: AnchoringHint | null;
|
|
129
|
+
readonly availability: AvailabilityHint | null;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* The hint rows for a list a surface showed, so a surface on the store port can hand them to the recall's one write.
|
|
133
|
+
*/
|
|
134
|
+
export declare function shownRecallRows(who: RecallAuditCaller, shown: ShownRecall): AppendAuditOpts[];
|
|
135
|
+
/** How one surface's recall is recorded. The surfaces differ in
|
|
136
|
+
* these three values and in the list they hand over, nowhere else. */
|
|
137
|
+
export interface RecallRecording {
|
|
138
|
+
/** Whose session rings the recall reads and feeds. */
|
|
139
|
+
readonly ring: RecallSurface;
|
|
140
|
+
/** The label of its token ledger row. */
|
|
141
|
+
readonly ledger: TokenSurface;
|
|
142
|
+
/** 'every': an empty list still reaches the stats write, which
|
|
143
|
+
* then only rewrites stats.json; 'shown': an empty list skips it. */
|
|
144
|
+
readonly stats: 'every' | 'shown';
|
|
145
|
+
}
|
|
146
|
+
/** The surfaces `retrieve` records in full. MCP is pending: src/mcp still feeds its own ring and books its own ledger
|
|
147
|
+
* row, and counts no stats. */
|
|
148
|
+
export declare const RECALL_RECORDING: {
|
|
149
|
+
readonly http: {
|
|
150
|
+
readonly ring: "http";
|
|
151
|
+
readonly ledger: "http_recall";
|
|
152
|
+
readonly stats: "every";
|
|
153
|
+
};
|
|
154
|
+
readonly cli: {
|
|
155
|
+
readonly ring: "cli";
|
|
156
|
+
readonly ledger: "recall";
|
|
157
|
+
readonly stats: "shown";
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
/** What a recorded recall takes into ranking. */
|
|
161
|
+
export interface RecallLead {
|
|
162
|
+
readonly recallHistory: RecallHistorySnapshot | undefined;
|
|
163
|
+
readonly leadingAudit: readonly AppendAuditOpts[];
|
|
164
|
+
}
|
|
165
|
+
/** For a surface whose hint `retrieve` judges: the session's history, or the row saying the recall named no session. */
|
|
166
|
+
export declare function recallLead(ctx: Context, how: RecallRecording, query: string, sessionId: string | undefined): RecallLead;
|
|
167
|
+
/** The list a recall showed, as its ranker counted and priced it. */
|
|
168
|
+
export interface ShownList {
|
|
169
|
+
readonly query: string;
|
|
170
|
+
/** The recall's session, which keys the ring. */
|
|
171
|
+
readonly sessionId: string | undefined;
|
|
172
|
+
readonly topId: string | null;
|
|
173
|
+
/** The memory this recall's anchoring hint named; the next recall's cooldown reads it. */
|
|
174
|
+
readonly anchoredOn: string | undefined;
|
|
175
|
+
readonly items: number;
|
|
176
|
+
readonly tokens: number;
|
|
177
|
+
/** The session the ledger row names: the recall's own on HTTP, the host agent's on the CLI. */
|
|
178
|
+
readonly ledgerSessionId: string | null;
|
|
179
|
+
/** False when the audit rows could not be written and the caller answers anyway. */
|
|
180
|
+
readonly written: boolean;
|
|
181
|
+
}
|
|
182
|
+
/** Runs after the recall's own write, in this order: the ring, then the counter, then the ledger. */
|
|
183
|
+
export declare function recordShownRecall(ctx: StoreContext, store: HippoStore, how: RecallRecording, shown: ShownList): Promise<void>;
|
|
184
|
+
export {};
|
|
185
|
+
//# sourceMappingURL=finish.d.ts.map
|