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/index.d.ts
CHANGED
|
@@ -4,27 +4,43 @@ export { passesCliRecallScopeFilter, ScopeForbiddenError } from '../core/recall-
|
|
|
4
4
|
export type { TokenSummary, TokenSurface, TokenSurfaceSummary } from '../store/token-ledger.js';
|
|
5
5
|
export type { FailureSummary } from '../store/failure-log.js';
|
|
6
6
|
export { classifyOriginProject } from '../core/project-identity.js';
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
17
|
-
export
|
|
18
|
-
export
|
|
19
|
-
export
|
|
20
|
-
export
|
|
21
|
-
export
|
|
22
|
-
export
|
|
23
|
-
export
|
|
24
|
-
export
|
|
25
|
-
export
|
|
26
|
-
export
|
|
27
|
-
export
|
|
28
|
-
export
|
|
29
|
-
export
|
|
7
|
+
export { RecallContractError, adminActor, narrowContext, ownerOrSubject, requireHostAdmin } from './types.js';
|
|
8
|
+
export type { Actor, Context, ContextWith, HippoDbContext, StoreContext } from './types.js';
|
|
9
|
+
export { remember } from './memories/remember.js';
|
|
10
|
+
export type { RememberLocal, RememberOpts, RememberResult } from './memories/remember.js';
|
|
11
|
+
export { extractRememberedFacts, rememberLocally } from './memories/remember-local.js';
|
|
12
|
+
export type { FactExtraction, FactExtractionRequest, LocalRememberInput, LocalRememberOutcome, StartedWeak, } from './memories/remember-local.js';
|
|
13
|
+
export type { CliCoreInspection, CliCoreRanker, CliCoreRecall, ContinuityBlock, RecallOpts, RecallResult, RecallResultItem, RecallSuppressionSummary, ShownCliCore, ShownRanking, StoreRanking, } from './recall/types.js';
|
|
14
|
+
export { retrieve } from './recall/recall.js';
|
|
15
|
+
export { DEFAULT_ASSEMBLE_BUDGET, assemble } from './assemble.js';
|
|
16
|
+
export type { AssembleCost, AssembleOpts, AssembleResult, AssembledContextItem } from './assemble.js';
|
|
17
|
+
export { drillDown } from './objects/drill-down.js';
|
|
18
|
+
export type { DrillDownChild, DrillDownCost, DrillDownFailure, DrillDownOpts, DrillDownOutcome, DrillDownResult, DrillDownSummary, } from './objects/drill-down.js';
|
|
19
|
+
export { outcome, outcomeForLastRecall } from './memories/outcome.js';
|
|
20
|
+
export type { OutcomeForLastRecallResult, OutcomeResult } from './memories/outcome.js';
|
|
21
|
+
export { forget, reject, rejectOnHost, unreject } from './memories/forget.js';
|
|
22
|
+
export type { ForgetResult, RejectOpts, RejectResult } from './memories/forget.js';
|
|
23
|
+
export { listConflicts, listOpenConflicts, resolveMemoryConflict } from './memories/conflicts.js';
|
|
24
|
+
export type { ResolveMemoryConflictOpts, ResolveMemoryConflictResult } from './memories/conflicts.js';
|
|
25
|
+
export { listProjectNames, mergeProjectNames, repairProjectNames, repairProjectNamesOnce } from './objects/projects.js';
|
|
26
|
+
export type { MergeProjectNamesOpts, MergeResult, ProjectCollision, ProjectFold, ProjectSummary, RepairResult, } from './objects/projects.js';
|
|
27
|
+
export { archiveRaw, promote, supersede } from './memories/promote.js';
|
|
28
|
+
export type { ArchiveRawOpts, ArchiveRawResult, PromoteResult, SupersedeOverrides, SupersedeResult, } from './memories/promote.js';
|
|
29
|
+
export { DEFAULT_KEY_TTL_DAYS, MAX_TTL_DAYS, authCreate, authCreateSelf, authGrant, authKeyTenant, authListAllTenants, authListRows, authRevoke, authUngrant, } from './auth/auth.js';
|
|
30
|
+
export type { AuthCreateOpts, AuthCreateResult, AuthCreateSelfOpts, AuthCreateSelfResult, AuthGrantResult, AuthRevokeResult, } from './auth/auth.js';
|
|
31
|
+
export { auditList, auditMemoryQuality, computeCutoff, pruneAuditLog, removeAuditErrors, repairMemoryQuality, repairMemoryQualityOnce, } from './auth/audit.js';
|
|
32
|
+
export type { AuditListOpts, AuditPass, PruneAuditOpts, PruneAuditResult } from './auth/audit.js';
|
|
33
|
+
export type { ContextCost, ContextOpts, ContextResult, ContextResultEntry } from './context-types.js';
|
|
34
|
+
export { DEFAULT_CONTEXT_BUDGET, NO_QUERY, ambientSecretAdmit, getContext, oneCopyPerMemory } from './context.js';
|
|
35
|
+
export { failureSummary, recordTokens, tokenSummary } from './tokens.js';
|
|
36
|
+
export { forgetDormant, isDormant, listDormant, restoreDormant } from './sleep/dormant.js';
|
|
37
|
+
export { quarantineApprove, quarantineList, quarantineReject } from './auth/quarantine.js';
|
|
38
|
+
export type { QuarantineListItem } from './auth/quarantine.js';
|
|
39
|
+
export { sleep } from './sleep/sleep.js';
|
|
40
|
+
export type { SleepOpts, SleepResult } from './sleep/sleep.js';
|
|
41
|
+
export { goalComplete, goalList, goalPush, goalResume, goalSuspend } from './objects/goals.js';
|
|
42
|
+
export type { GoalPushOpts } from './objects/goals.js';
|
|
43
|
+
export { CLI_LEARN, MCP_LEARN, invalidateMemories, learn } from './sleep/learn.js';
|
|
44
|
+
export type { InvalidationOptions, InvalidationResult, InvalidationTarget, LearnOpts, LearnProfile, LearnResult, } from './sleep/learn.js';
|
|
45
|
+
export { REFINED_TAG, storeRefinement } from './memories/refine.js';
|
|
30
46
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/index.js
CHANGED
|
@@ -7,27 +7,25 @@ export { isPrivateScope, passesScopeFilterForRecall } from '../core/recall-scope
|
|
|
7
7
|
export { passesCliRecallScopeFilter, ScopeForbiddenError } from '../core/recall-scope.js';
|
|
8
8
|
// classifyOriginProject lives in project-identity.ts (leaf) for the same reason.
|
|
9
9
|
export { classifyOriginProject } from '../core/project-identity.js';
|
|
10
|
-
export
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
17
|
-
export
|
|
18
|
-
export
|
|
19
|
-
export
|
|
20
|
-
export
|
|
21
|
-
export
|
|
22
|
-
export
|
|
23
|
-
export
|
|
24
|
-
export
|
|
25
|
-
export
|
|
26
|
-
export
|
|
27
|
-
export
|
|
28
|
-
export
|
|
29
|
-
export
|
|
30
|
-
export
|
|
31
|
-
export * from './learn.js';
|
|
32
|
-
export * from './refine.js';
|
|
10
|
+
export { RecallContractError, adminActor, narrowContext, ownerOrSubject, requireHostAdmin } from './types.js';
|
|
11
|
+
export { remember } from './memories/remember.js';
|
|
12
|
+
export { extractRememberedFacts, rememberLocally } from './memories/remember-local.js';
|
|
13
|
+
export { retrieve } from './recall/recall.js';
|
|
14
|
+
export { DEFAULT_ASSEMBLE_BUDGET, assemble } from './assemble.js';
|
|
15
|
+
export { drillDown } from './objects/drill-down.js';
|
|
16
|
+
export { outcome, outcomeForLastRecall } from './memories/outcome.js';
|
|
17
|
+
export { forget, reject, rejectOnHost, unreject } from './memories/forget.js';
|
|
18
|
+
export { listConflicts, listOpenConflicts, resolveMemoryConflict } from './memories/conflicts.js';
|
|
19
|
+
export { listProjectNames, mergeProjectNames, repairProjectNames, repairProjectNamesOnce } from './objects/projects.js';
|
|
20
|
+
export { archiveRaw, promote, supersede } from './memories/promote.js';
|
|
21
|
+
export { DEFAULT_KEY_TTL_DAYS, MAX_TTL_DAYS, authCreate, authCreateSelf, authGrant, authKeyTenant, authListAllTenants, authListRows, authRevoke, authUngrant, } from './auth/auth.js';
|
|
22
|
+
export { auditList, auditMemoryQuality, computeCutoff, pruneAuditLog, removeAuditErrors, repairMemoryQuality, repairMemoryQualityOnce, } from './auth/audit.js';
|
|
23
|
+
export { DEFAULT_CONTEXT_BUDGET, NO_QUERY, ambientSecretAdmit, getContext, oneCopyPerMemory } from './context.js';
|
|
24
|
+
export { failureSummary, recordTokens, tokenSummary } from './tokens.js';
|
|
25
|
+
export { forgetDormant, isDormant, listDormant, restoreDormant } from './sleep/dormant.js';
|
|
26
|
+
export { quarantineApprove, quarantineList, quarantineReject } from './auth/quarantine.js';
|
|
27
|
+
export { sleep } from './sleep/sleep.js';
|
|
28
|
+
export { goalComplete, goalList, goalPush, goalResume, goalSuspend } from './objects/goals.js';
|
|
29
|
+
export { CLI_LEARN, MCP_LEARN, invalidateMemories, learn } from './sleep/learn.js';
|
|
30
|
+
export { REFINED_TAG, storeRefinement } from './memories/refine.js';
|
|
33
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Prompt-injection detection for untrusted memory content. Same shape
|
|
3
|
+
* as secret-detect.ts; leaf module, no store/api/shared imports.
|
|
4
|
+
*/
|
|
2
5
|
export interface InstructionDetection {
|
|
3
6
|
flagged: boolean;
|
|
4
7
|
reason: string | null;
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Prompt-injection detection for untrusted memory content. Same shape
|
|
3
|
+
* as secret-detect.ts; leaf module, no store/api/shared imports.
|
|
4
|
+
*/
|
|
2
5
|
const INSTRUCTION_PATTERNS = [
|
|
3
|
-
{
|
|
4
|
-
|
|
6
|
+
{
|
|
7
|
+
name: 'override-instructions',
|
|
8
|
+
re: /\b(?:ignore|disregard|forget)\b[^.\n]{0,40}\b(?:previous|prior|above)\b[^.\n]{0,40}\binstructions?\b/i,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: 'role-reassignment',
|
|
12
|
+
re: /\b(?:you are now|act as|pretend to be)\b[^.\n]{0,40}\b(?:an?\s+)?(?:ai|assistant|agent|system)\b/i,
|
|
13
|
+
},
|
|
5
14
|
{ name: 'chat-role-markup', re: /<\|im_start\|>|<\|system\|>|\[INST\]|<\/?system>|###\s*system\s*:/i },
|
|
6
15
|
{
|
|
7
16
|
name: 'system-prompt-reference',
|
|
@@ -11,16 +20,22 @@ const INSTRUCTION_PATTERNS = [
|
|
|
11
20
|
// "always"/"never" alone (ordinary PR prose) doesn't flag without an agent-facing target nearby too.
|
|
12
21
|
{
|
|
13
22
|
name: 'standing-order',
|
|
14
|
-
re:
|
|
23
|
+
re: new RegExp(String.raw `\b(?:from now on|whenever you|always|never)\b[^.\n]{0,50}\b(?:you must|` +
|
|
24
|
+
String.raw `(?:the ai|the assistant|the agent|claude|copilot)\s+(?:must|should|will)\b)`, 'i'),
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'concealment',
|
|
28
|
+
re: /\b(?:do not|never|don't)\b[^.\n]{0,40}\b(?:tell|mention|reveal)\b[^.\n]{0,40}\bthe user\b/i,
|
|
15
29
|
},
|
|
16
|
-
{ name: 'concealment', re: /\b(?:do not|never|don't)\b[^.\n]{0,40}\b(?:tell|mention|reveal)\b[^.\n]{0,40}\bthe user\b/i },
|
|
17
30
|
{
|
|
18
31
|
name: 'remote-script-exec',
|
|
19
|
-
re:
|
|
32
|
+
re: new RegExp(String.raw `\b(?:curl|wget)\b[^\n|]{0,80}\|\s*(?:sudo\s+)?(?:sh|bash|zsh)\b|` +
|
|
33
|
+
String.raw `\biex\s*\(\s*(?:iwr|invoke-webrequest|new-object\s+net\.webclient)`, 'i'),
|
|
20
34
|
},
|
|
21
35
|
{
|
|
22
36
|
name: 'exfiltration',
|
|
23
|
-
re:
|
|
37
|
+
re: new RegExp(String.raw `\b(?:send|post|upload|exfiltrate)\b[^.\n]{0,40}\b` +
|
|
38
|
+
String.raw `(?:secrets?|tokens?|api[- ]?keys?|credentials?|env(?:ironment)? variables?)\b`, 'i'),
|
|
24
39
|
},
|
|
25
40
|
{ name: 'unicode-tag-chars', re: /[\u{E0000}-\u{E007F}]/u },
|
|
26
41
|
];
|
|
@@ -30,20 +45,59 @@ const ZERO_WIDTH_RUN_RE = /[\u200B-\u200F\u2060-\u2064]{3,}/;
|
|
|
30
45
|
const BIDI_CONTROL_RE = /[\u202A-\u202E\u2066-\u2069]/;
|
|
31
46
|
// A renderer draws a reference as the character it names: decimal, hex, or one of the five names XML defines.
|
|
32
47
|
const CHARACTER_REFERENCE_RE = /&(?:#(\d{1,7})|#[xX]([0-9a-fA-F]{1,6})|(amp|lt|gt|quot|apos));/g;
|
|
33
|
-
const NAMED_REFERENCES = new Map([
|
|
34
|
-
|
|
48
|
+
const NAMED_REFERENCES = new Map([
|
|
49
|
+
['amp', '&'],
|
|
50
|
+
['lt', '<'],
|
|
51
|
+
['gt', '>'],
|
|
52
|
+
['quot', '"'],
|
|
53
|
+
['apos', "'"],
|
|
54
|
+
]);
|
|
55
|
+
// Drawn with no width, so one inside a word splits it for a pattern and not for a reader: soft hyphen, joiners,
|
|
56
|
+
// zero-width and bidi format characters.
|
|
35
57
|
const INVISIBLE_RE = /[\u034F\u00AD\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u2069\uFEFF]/g;
|
|
36
|
-
// Cyrillic, then Greek, letters drawn like a c e i j o p s x y; closed at those, so Russian or Greek prose folds into
|
|
58
|
+
// Cyrillic, then Greek, letters drawn like a c e i j o p s x y; closed at those, so Russian or Greek prose folds into
|
|
59
|
+
// no phrase a pattern names.
|
|
37
60
|
const LOOKALIKES = new Map([
|
|
38
|
-
['\u0430', 'a'],
|
|
39
|
-
['\
|
|
40
|
-
['\
|
|
41
|
-
['\
|
|
42
|
-
['\
|
|
43
|
-
['\
|
|
61
|
+
['\u0430', 'a'],
|
|
62
|
+
['\u0441', 'c'],
|
|
63
|
+
['\u0435', 'e'],
|
|
64
|
+
['\u0456', 'i'],
|
|
65
|
+
['\u0458', 'j'],
|
|
66
|
+
['\u043E', 'o'],
|
|
67
|
+
['\u0440', 'p'],
|
|
68
|
+
['\u0455', 's'],
|
|
69
|
+
['\u0445', 'x'],
|
|
70
|
+
['\u0443', 'y'],
|
|
71
|
+
['\u0410', 'A'],
|
|
72
|
+
['\u0421', 'C'],
|
|
73
|
+
['\u0415', 'E'],
|
|
74
|
+
['\u0406', 'I'],
|
|
75
|
+
['\u0408', 'J'],
|
|
76
|
+
['\u041E', 'O'],
|
|
77
|
+
['\u0420', 'P'],
|
|
78
|
+
['\u0405', 'S'],
|
|
79
|
+
['\u0425', 'X'],
|
|
80
|
+
['\u0423', 'Y'],
|
|
81
|
+
['\u03B1', 'a'],
|
|
82
|
+
['\u03B5', 'e'],
|
|
83
|
+
['\u03B9', 'i'],
|
|
84
|
+
['\u03F3', 'j'],
|
|
85
|
+
['\u03BF', 'o'],
|
|
86
|
+
['\u03C1', 'p'],
|
|
87
|
+
['\u03C7', 'x'],
|
|
88
|
+
['\u03B3', 'y'],
|
|
89
|
+
['\u0391', 'A'],
|
|
90
|
+
['\u0395', 'E'],
|
|
91
|
+
['\u0399', 'I'],
|
|
92
|
+
['\u037F', 'J'],
|
|
93
|
+
['\u039F', 'O'],
|
|
94
|
+
['\u03A1', 'P'],
|
|
95
|
+
['\u03A7', 'X'],
|
|
96
|
+
['\u03A5', 'Y'],
|
|
44
97
|
]);
|
|
45
98
|
const GREEK_OR_CYRILLIC_RE = /[\u0370-\u03FF\u0400-\u04FF]/g;
|
|
46
|
-
// A line break stays: it is the sentence bound the patterns rely
|
|
99
|
+
// A line break stays: it is the sentence bound the patterns rely
|
|
100
|
+
// on where a list or a chat message ends a line with no full stop.
|
|
47
101
|
const SPACE_RUN_RE = /[^\S\n]+/g;
|
|
48
102
|
function referencedCharacter(reference, decimal, hex, name) {
|
|
49
103
|
if (name !== undefined)
|
|
@@ -55,13 +109,13 @@ function referencedCharacter(reference, decimal, hex, name) {
|
|
|
55
109
|
}
|
|
56
110
|
/** `content` as a reader or a model takes it in. For matching only: what is stored is never this. */
|
|
57
111
|
function screeningForm(content) {
|
|
58
|
-
return content
|
|
112
|
+
return (content
|
|
59
113
|
.replace(CHARACTER_REFERENCE_RE, referencedCharacter)
|
|
60
114
|
// Full-width, mathematical and enclosed letters become the plain ones, and every space character a U+0020.
|
|
61
115
|
.normalize('NFKC')
|
|
62
116
|
.replace(INVISIBLE_RE, '')
|
|
63
117
|
.replace(GREEK_OR_CYRILLIC_RE, (letter) => LOOKALIKES.get(letter) ?? letter)
|
|
64
|
-
.replace(SPACE_RUN_RE, ' ');
|
|
118
|
+
.replace(SPACE_RUN_RE, ' '));
|
|
65
119
|
}
|
|
66
120
|
function matchedPattern(text) {
|
|
67
121
|
for (const { name, re } of INSTRUCTION_PATTERNS) {
|
|
@@ -71,7 +125,8 @@ function matchedPattern(text) {
|
|
|
71
125
|
return null;
|
|
72
126
|
}
|
|
73
127
|
export function detectInstruction(content) {
|
|
74
|
-
// The text as written goes first: a phrase in plain sight is named before any smuggling rule, and the screening form
|
|
128
|
+
// The text as written goes first: a phrase in plain sight is named before any smuggling rule, and the screening form
|
|
129
|
+
// only adds flags.
|
|
75
130
|
const plain = matchedPattern(content);
|
|
76
131
|
if (plain !== null)
|
|
77
132
|
return { flagged: true, reason: plain };
|
package/dist/api/ledger-db.d.ts
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { type LedgerTurn } from '../store/ledger-turn.js';
|
|
2
|
+
import { type HippoStore, type StoreReach } from '../store/port.js';
|
|
2
3
|
import type { LastSent, TokenSurface, TokenUse } from '../store/token-ledger.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
/** The slice of a call's store reach that picks the ledger; a shared store has no `global`. */
|
|
5
|
+
export type LedgerReach = Pick<StoreReach, 'hasLocal' | 'global'>;
|
|
6
|
+
/** The ledger is SQLite-only: a local store needs a reach that says so and a SQLite store; no reach books nowhere. */
|
|
7
|
+
export declare function ledgerReachOf(ctx: {
|
|
8
|
+
readonly reach?: StoreReach;
|
|
9
|
+
readonly store?: HippoStore;
|
|
10
|
+
}, shared?: boolean): LedgerReach;
|
|
11
|
+
/** `hippoRoot` when the call has a store of its own, else the global store (the prompt hook fires where none is). */
|
|
12
|
+
export declare function ledgerRoot(hippoRoot: string, reach: LedgerReach): string | null;
|
|
13
|
+
/** Runs `call` on ledgerRoot's store root; undefined on any failure, since a ledger failure must not break recall. */
|
|
14
|
+
export declare function onLedgerRoot<T>(hippoRoot: string, reach: LedgerReach, call: (root: string) => T): T | undefined;
|
|
11
15
|
/** Books one row in ledgerRoot's store, best-effort. */
|
|
12
|
-
export declare function bookTokenUse(hippoRoot: string, use: TokenUse,
|
|
16
|
+
export declare function bookTokenUse(hippoRoot: string, use: TokenUse, reach: LedgerReach): void;
|
|
13
17
|
/** Books a turn's rows and then its delivery event on one connection of ledgerRoot's store, best-effort. */
|
|
14
|
-
export declare function bookLedgerTurn(hippoRoot: string, turn: LedgerTurn,
|
|
18
|
+
export declare function bookLedgerTurn(hippoRoot: string, turn: LedgerTurn, reach: LedgerReach): void;
|
|
15
19
|
/** What the session last sent on `surface` in ledgerRoot's store; undefined with no ledger or a failed read. */
|
|
16
|
-
export declare function ledgerLastSent(hippoRoot: string, tenantId: string, sessionId: string | null | undefined, surface: TokenSurface,
|
|
20
|
+
export declare function ledgerLastSent(hippoRoot: string, tenantId: string, sessionId: string | null | undefined, surface: TokenSurface, reach: LedgerReach): LastSent | null | undefined;
|
|
17
21
|
//# sourceMappingURL=ledger-db.d.ts.map
|
package/dist/api/ledger-db.js
CHANGED
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
// The store the token ledger writes to for a caller's root; context, recall and the session hooks share it.
|
|
2
|
-
import { errorMessage, log } from '../util/log.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (isInitialized(hippoRoot))
|
|
10
|
-
return hippoRoot;
|
|
11
|
-
if (opts?.sharedStore)
|
|
12
|
-
return null;
|
|
13
|
-
const globalRoot = getGlobalRoot();
|
|
14
|
-
return isInitialized(globalRoot) ? globalRoot : null;
|
|
2
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
3
|
+
import { lastSentOnSurface, noteLedgerRowSkipped, recordLedgerTurn, recordTokensAt, } from '../store/ledger-turn.js';
|
|
4
|
+
import { hasGroup } from '../store/port.js';
|
|
5
|
+
/** The ledger is SQLite-only: a local store needs a reach that says so and a SQLite store; no reach books nowhere. */
|
|
6
|
+
export function ledgerReachOf(ctx, shared) {
|
|
7
|
+
const hasLocal = ctx.reach?.hasLocal === true && (ctx.store === undefined || hasGroup(ctx.store, 'localFiles'));
|
|
8
|
+
return shared === true ? { hasLocal } : { hasLocal, global: ctx.reach?.global };
|
|
15
9
|
}
|
|
16
|
-
/**
|
|
17
|
-
export function
|
|
10
|
+
/** `hippoRoot` when the call has a store of its own, else the global store (the prompt hook fires where none is). */
|
|
11
|
+
export function ledgerRoot(hippoRoot, reach) {
|
|
12
|
+
return reach.hasLocal ? hippoRoot : (reach.global?.root ?? null);
|
|
13
|
+
}
|
|
14
|
+
/** Runs `call` on ledgerRoot's store root; undefined on any failure, since a ledger failure must not break recall. */
|
|
15
|
+
export function onLedgerRoot(hippoRoot, reach, call) {
|
|
18
16
|
let root = null;
|
|
19
17
|
try {
|
|
20
|
-
root = ledgerRoot(hippoRoot,
|
|
18
|
+
root = ledgerRoot(hippoRoot, reach);
|
|
21
19
|
}
|
|
22
20
|
catch (error) {
|
|
23
21
|
// An unreadable store root means no ledger write; the ledger must never break context or recall.
|
|
24
|
-
log.debug(`token ledger skipped, store root unreadable: ${errorMessage(error)}
|
|
22
|
+
log.debug(`token ledger skipped, store root unreadable: ${errorMessage(error)}`, errorFields(error));
|
|
25
23
|
return undefined;
|
|
26
24
|
}
|
|
27
25
|
if (root === null)
|
|
@@ -35,15 +33,15 @@ export function onLedgerRoot(hippoRoot, opts, call) {
|
|
|
35
33
|
}
|
|
36
34
|
}
|
|
37
35
|
/** Books one row in ledgerRoot's store, best-effort. */
|
|
38
|
-
export function bookTokenUse(hippoRoot, use,
|
|
39
|
-
onLedgerRoot(hippoRoot,
|
|
36
|
+
export function bookTokenUse(hippoRoot, use, reach) {
|
|
37
|
+
onLedgerRoot(hippoRoot, reach, (root) => recordTokensAt(root, use));
|
|
40
38
|
}
|
|
41
39
|
/** Books a turn's rows and then its delivery event on one connection of ledgerRoot's store, best-effort. */
|
|
42
|
-
export function bookLedgerTurn(hippoRoot, turn,
|
|
43
|
-
onLedgerRoot(hippoRoot,
|
|
40
|
+
export function bookLedgerTurn(hippoRoot, turn, reach) {
|
|
41
|
+
onLedgerRoot(hippoRoot, reach, (root) => recordLedgerTurn(root, turn));
|
|
44
42
|
}
|
|
45
43
|
/** What the session last sent on `surface` in ledgerRoot's store; undefined with no ledger or a failed read. */
|
|
46
|
-
export function ledgerLastSent(hippoRoot, tenantId, sessionId, surface,
|
|
47
|
-
return onLedgerRoot(hippoRoot,
|
|
44
|
+
export function ledgerLastSent(hippoRoot, tenantId, sessionId, surface, reach) {
|
|
45
|
+
return onLedgerRoot(hippoRoot, reach, (root) => lastSentOnSurface(root, tenantId, sessionId, surface));
|
|
48
46
|
}
|
|
49
47
|
//# sourceMappingURL=ledger-db.js.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { MemoryConflict } from '../../store/rows.js';
|
|
2
|
+
import type { CallerProject } from '../prompt-hook.js';
|
|
3
|
+
import { type ContextWith } from '../types.js';
|
|
4
|
+
import type { TenantReach } from './memories.js';
|
|
5
|
+
export interface ResolveMemoryConflictOpts {
|
|
6
|
+
/** One of the conflict's two memories; the other is the loser. */
|
|
7
|
+
keepId: string;
|
|
8
|
+
/** Delete the loser instead of halving its half-life. */
|
|
9
|
+
forget?: boolean;
|
|
10
|
+
/** Tombstone the loser's value as well, which removes it whatever `forget` says. */
|
|
11
|
+
rejectLoser?: boolean;
|
|
12
|
+
/** Kept on the tombstone; a conflict-context reason when unset. */
|
|
13
|
+
reason?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ResolveMemoryConflictResult {
|
|
16
|
+
conflictId: number;
|
|
17
|
+
keptId: string;
|
|
18
|
+
loserId: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Keeps `keepId` and weakens, deletes or rejects the other side of an open conflict in the caller's tenant, auditing as
|
|
22
|
+
* `ctx.actor`.
|
|
23
|
+
* NotFound: missing, untouchable or no longer live. Conflict: already resolved. BadRequest: `keepId` outside the pair.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveMemoryConflict(ctx: ContextWith<'conflicts'>, conflictId: number, opts: ResolveMemoryConflictOpts): Promise<ResolveMemoryConflictResult>;
|
|
26
|
+
/** Open conflicts whose two rows the caller may touch; with `project`, only pairs it could also recall:
|
|
27
|
+
* its repo or user-global, and no scope it was not asked for. */
|
|
28
|
+
export declare function listOpenConflicts(ctx: ContextWith<'conflicts'>, project?: CallerProject): Promise<MemoryConflict[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Conflicts with `status` ('*' for any) in reach, with no scope filter: the host's own view, so the host admin only.
|
|
31
|
+
*/
|
|
32
|
+
export declare function listConflicts(ctx: ContextWith<'conflicts'>, status: string, reach?: TenantReach): Promise<MemoryConflict[]>;
|
|
33
|
+
//# sourceMappingURL=conflicts.d.ts.map
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Conflict resolution for every front end, so the reach, status, pair and liveness checks live in one place.
|
|
2
|
+
import { BadRequestError, ConflictError, NotFoundError } from '../../core/api-errors.js';
|
|
3
|
+
import { chunked } from '../../util/chunked.js';
|
|
4
|
+
import { passesScopeFilterForRecall, personalScopeOf } from '../../core/recall-scope.js';
|
|
5
|
+
import { classifyOriginProject } from '../../core/project-identity.js';
|
|
6
|
+
import { isQuarantineScope } from '../../trust/quarantine.js';
|
|
7
|
+
import { requireHostAdmin } from '../types.js';
|
|
8
|
+
function isLive(entry) {
|
|
9
|
+
return (!entry.superseded_by && (entry.kind === 'raw' || entry.kind === 'distilled') && !isQuarantineScope(entry.scope));
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Keeps `keepId` and weakens, deletes or rejects the other side of an open conflict in the caller's tenant, auditing as
|
|
13
|
+
* `ctx.actor`.
|
|
14
|
+
* NotFound: missing, untouchable or no longer live. Conflict: already resolved. BadRequest: `keepId` outside the pair.
|
|
15
|
+
*/
|
|
16
|
+
export async function resolveMemoryConflict(ctx, conflictId, opts) {
|
|
17
|
+
// Read with every status, so a resolved conflict answers 409 while one holding another person's personal row stays a
|
|
18
|
+
// 404.
|
|
19
|
+
const touchable = await ctx.store.conflicts.listTouchable(ctx.tenantId, '*', ctx.actor);
|
|
20
|
+
const conflict = touchable.find((c) => c.id === conflictId);
|
|
21
|
+
if (!conflict)
|
|
22
|
+
throw new NotFoundError(`conflict not found: ${conflictId}`);
|
|
23
|
+
if (conflict.status !== 'open')
|
|
24
|
+
throw new ConflictError(`conflict ${conflictId} is already resolved`);
|
|
25
|
+
const pair = [conflict.memory_a_id, conflict.memory_b_id];
|
|
26
|
+
if (!pair.includes(opts.keepId)) {
|
|
27
|
+
throw new BadRequestError(`keep must be one of the two memories in conflict ${conflictId}: ${pair.join(', ')}`);
|
|
28
|
+
}
|
|
29
|
+
if ((await ctx.store.entriesByIds(pair, ctx.tenantId)).filter(isLive).length < pair.length) {
|
|
30
|
+
throw new NotFoundError(`conflict ${conflictId} names a memory that is superseded, archived or quarantined`);
|
|
31
|
+
}
|
|
32
|
+
const resolved = await ctx.store.conflicts.resolve(ctx.tenantId, { conflictId, keepId: opts.keepId, forgetLoser: opts.forget === true }, {
|
|
33
|
+
rejectLoserValue: opts.rejectLoser === true,
|
|
34
|
+
reason: opts.reason,
|
|
35
|
+
rejectedBy: ctx.actor.subject,
|
|
36
|
+
});
|
|
37
|
+
// Every check passed above, so null here is another resolver getting there first.
|
|
38
|
+
if (resolved === null)
|
|
39
|
+
throw new ConflictError(`conflict ${conflictId} is already resolved`);
|
|
40
|
+
return { conflictId, keptId: opts.keepId, loserId: resolved.loserId };
|
|
41
|
+
}
|
|
42
|
+
/** Open conflicts whose two rows the caller may touch; with `project`, only pairs it could also recall:
|
|
43
|
+
* its repo or user-global, and no scope it was not asked for. */
|
|
44
|
+
export async function listOpenConflicts(ctx, project) {
|
|
45
|
+
const touchable = await ctx.store.conflicts.listTouchable(ctx.tenantId, 'open', ctx.actor);
|
|
46
|
+
if (!project)
|
|
47
|
+
return touchable;
|
|
48
|
+
const own = personalScopeOf(ctx.actor);
|
|
49
|
+
const ids = [...new Set(touchable.flatMap((c) => [c.memory_a_id, c.memory_b_id]))];
|
|
50
|
+
// entriesByIds reads at most one chunk of ids per call.
|
|
51
|
+
const chunks = await Promise.all(chunked(ids).map((chunk) => ctx.store.entriesByIds(chunk, ctx.tenantId)));
|
|
52
|
+
const rows = new Map(chunks.flat().map((row) => [row.id, row]));
|
|
53
|
+
const shown = (id) => {
|
|
54
|
+
const row = rows.get(id);
|
|
55
|
+
return row !== undefined && classifyOriginProject(row.origin_project, project) !== 'cross-project'
|
|
56
|
+
&& passesScopeFilterForRecall(row.scope ?? null, undefined, own);
|
|
57
|
+
};
|
|
58
|
+
return touchable.filter((c) => shown(c.memory_a_id) && shown(c.memory_b_id));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Conflicts with `status` ('*' for any) in reach, with no scope filter: the host's own view, so the host admin only.
|
|
62
|
+
*/
|
|
63
|
+
export async function listConflicts(ctx, status, reach = {}) {
|
|
64
|
+
requireHostAdmin(ctx, 'Listing conflicts past the scope check');
|
|
65
|
+
return ctx.store.conflicts.list(reach.everyTenant ? null : ctx.tenantId, status);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=conflicts.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { type RejectFlowResult } from '
|
|
2
|
-
import { type Context, type
|
|
1
|
+
import { type RejectFlowResult } from '../../trust/reject-flow.js';
|
|
2
|
+
import { type Context, type ContextWith, type StoreContext } from '../types.js';
|
|
3
3
|
/** Delete a memory by id. Reach is checked inside the delete's write scope, and a
|
|
4
4
|
* row out of reach answers as not found, so a caller learns nothing about it. */
|
|
5
5
|
export interface ForgetResult {
|
|
6
6
|
ok: true;
|
|
7
7
|
id: string;
|
|
8
8
|
}
|
|
9
|
-
export declare function forget
|
|
9
|
+
export declare function forget(ctx: ContextWith<'entryWrites'>, id: string): Promise<ForgetResult>;
|
|
10
10
|
export interface RejectOpts {
|
|
11
11
|
/** By-id form: reject the CURRENT content of an existing memory. */
|
|
12
12
|
memoryId?: string;
|
|
@@ -19,13 +19,15 @@ export interface RejectResult {
|
|
|
19
19
|
digest: string;
|
|
20
20
|
removedIds: string[];
|
|
21
21
|
}
|
|
22
|
-
/** Tombstones a value's normalized digest so a matching write is refused everywhere until `unreject`; pass exactly one
|
|
23
|
-
* `memoryId` also removes every live tenant row with that digest (not others' personal rows);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
/** Tombstones a value's normalized digest so a matching write is refused everywhere until `unreject`; pass exactly one
|
|
23
|
+
* of `memoryId` or `value`. `memoryId` also removes every live tenant row with that digest (not others' personal rows);
|
|
24
|
+
* `reason` is required. Throws on an unknown id or both/neither. */
|
|
25
|
+
export declare function reject(ctx: StoreContext, opts: RejectOpts): Promise<RejectResult>;
|
|
26
|
+
/** `hippo reject` on the host: every row it removed and the rows that kept their other texts. A personal row by id
|
|
27
|
+
* answers with the personal refusal rather than reject's not-found, as the operator can see that row. */
|
|
27
28
|
export declare function rejectOnHost(ctx: Context, opts: RejectOpts): RejectFlowResult;
|
|
28
|
-
/** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws
|
|
29
|
+
/** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws
|
|
30
|
+
* on blank, no match or several. */
|
|
29
31
|
export declare function unreject(ctx: Context, digestOrPrefix: string): {
|
|
30
32
|
ok: boolean;
|
|
31
33
|
digest: string;
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
// Forget a memory, and reject or unreject a value so it cannot be stored again.
|
|
2
|
-
import { BadRequestError, NotFoundError } from '
|
|
3
|
-
import { rejectValue, unrejectValue } from '
|
|
4
|
-
import {
|
|
5
|
-
import { requireHostAdmin } from './types.js';
|
|
2
|
+
import { BadRequestError, NotFoundError } from '../../core/api-errors.js';
|
|
3
|
+
import { rejectValue, unrejectValue } from '../../trust/reject-flow.js';
|
|
4
|
+
import { requireHostAdmin } from '../types.js';
|
|
6
5
|
import { getMemory } from './memories.js';
|
|
7
|
-
import { canTouchScope, personalScopeOf } from '
|
|
8
|
-
export function forget(ctx, id) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
import { canTouchScope, personalScopeOf } from '../../core/recall-scope.js';
|
|
7
|
+
export async function forget(ctx, id) {
|
|
8
|
+
const entryWrites = ctx.store.entryWrites;
|
|
9
|
+
await entryWrites.forget({
|
|
10
|
+
tenantId: ctx.tenantId,
|
|
11
|
+
actor: ctx.actor.subject,
|
|
12
|
+
ownScope: personalScopeOf(ctx.actor),
|
|
13
|
+
id,
|
|
13
14
|
});
|
|
15
|
+
return { ok: true, id };
|
|
14
16
|
}
|
|
15
|
-
/** Tombstones a value's normalized digest so a matching write is refused everywhere until `unreject`; pass exactly one
|
|
16
|
-
* `memoryId` also removes every live tenant row with that digest (not others' personal rows);
|
|
17
|
+
/** Tombstones a value's normalized digest so a matching write is refused everywhere until `unreject`; pass exactly one
|
|
18
|
+
* of `memoryId` or `value`. `memoryId` also removes every live tenant row with that digest (not others' personal rows);
|
|
19
|
+
* `reason` is required. Throws on an unknown id or both/neither. */
|
|
17
20
|
export async function reject(ctx, opts) {
|
|
18
21
|
if (opts.memoryId !== undefined) {
|
|
19
|
-
// Tenant scope: same not-found-shaped denial as forget/promote; rejectValue tenant-checks too, but pre-checking
|
|
22
|
+
// Tenant scope: same not-found-shaped denial as forget/promote; rejectValue tenant-checks too, but pre-checking
|
|
23
|
+
// keeps the error message consistent.
|
|
20
24
|
const entry = await getMemory(ctx, opts.memoryId);
|
|
21
25
|
if (entry === null || !canTouchScope(ctx.actor, entry.scope)) {
|
|
22
26
|
throw new NotFoundError(`memory not found: ${opts.memoryId}`);
|
|
@@ -25,14 +29,15 @@ export async function reject(ctx, opts) {
|
|
|
25
29
|
const result = applyReject(ctx, opts);
|
|
26
30
|
return { digest: result.digest, removedIds: result.removedIds };
|
|
27
31
|
}
|
|
28
|
-
/** `hippo reject` on the host: every row it removed and the rows that kept their other texts. A personal row by id
|
|
29
|
-
*
|
|
32
|
+
/** `hippo reject` on the host: every row it removed and the rows that kept their other texts. A personal row by id
|
|
33
|
+
* answers with the personal refusal rather than reject's not-found, as the operator can see that row. */
|
|
30
34
|
export function rejectOnHost(ctx, opts) {
|
|
31
35
|
requireHostAdmin(ctx, 'Rejecting with the removal report');
|
|
32
36
|
return applyReject(ctx, opts);
|
|
33
37
|
}
|
|
34
38
|
function applyReject(ctx, opts) {
|
|
35
|
-
// SHORTCUT: the tombstone write is hippo.db only, as the port has no rejection group; one when a served store needs
|
|
39
|
+
// SHORTCUT: the tombstone write is hippo.db only, as the port has no rejection group; one when a served store needs
|
|
40
|
+
// reject.
|
|
36
41
|
return rejectValue({
|
|
37
42
|
hippoRoot: ctx.hippoRoot,
|
|
38
43
|
tenantId: ctx.tenantId,
|
|
@@ -43,7 +48,8 @@ function applyReject(ctx, opts) {
|
|
|
43
48
|
ownScope: personalScopeOf(ctx.actor) ?? undefined,
|
|
44
49
|
});
|
|
45
50
|
}
|
|
46
|
-
/** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws
|
|
51
|
+
/** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws
|
|
52
|
+
* on blank, no match or several. */
|
|
47
53
|
export function unreject(ctx, digestOrPrefix) {
|
|
48
54
|
const outcome = unrejectValue(ctx.hippoRoot, ctx.tenantId, digestOrPrefix, ctx.actor.subject);
|
|
49
55
|
if (outcome.status === 'not_found') {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { MemoryEntry } from '../../core/memory.js';
|
|
2
|
+
import type { StrengthTallies } from '../../store/candidates.js';
|
|
3
|
+
import { type ContextWith, type StoreContext } from '../types.js';
|
|
4
|
+
/** The row `id` in the caller's tenant, or null when it is missing or another tenant's. */
|
|
5
|
+
export declare function getMemory(ctx: StoreContext, id: string): Promise<MemoryEntry | null>;
|
|
6
|
+
/** getMemory, but NotFound when the row is another person's
|
|
7
|
+
* personal one, so the reply does not reveal that the id exists. */
|
|
8
|
+
export declare function getTouchableMemory(ctx: StoreContext, id: string): Promise<MemoryEntry | null>;
|
|
9
|
+
export interface MemoryStatus extends StrengthTallies {
|
|
10
|
+
openConflicts: number;
|
|
11
|
+
}
|
|
12
|
+
/** Tenant-wide counts behind the status verbs: strength tallies
|
|
13
|
+
* at `now` (at risk is under `atRiskBelow`) and open conflicts. */
|
|
14
|
+
export declare function getMemoryStatus(ctx: ContextWith<'reports'>, now: Date, atRiskBelow: number): Promise<MemoryStatus>;
|
|
15
|
+
/** Which rows a read covers: the caller's tenant, or with `everyTenant` the whole store. */
|
|
16
|
+
export interface TenantReach {
|
|
17
|
+
everyTenant?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Every memory row in reach, oldest first, read `pageSize` rows per query so no single read grows with the store. */
|
|
20
|
+
export declare function listMemories(ctx: ContextWith<'reports'>, reach?: TenantReach, opts?: {
|
|
21
|
+
pageSize?: number;
|
|
22
|
+
}): Promise<MemoryEntry[]>;
|
|
23
|
+
/** How many memory rows the whole store holds, counted in SQL. */
|
|
24
|
+
export declare function countAllMemories(ctx: ContextWith<'reports'>): Promise<number>;
|
|
25
|
+
/** The rows in reach among `ids`; a missing id or one out of reach is absent. */
|
|
26
|
+
export declare function listMemoriesByIds(ctx: StoreContext, ids: readonly string[], reach?: TenantReach): Promise<MemoryEntry[]>;
|
|
27
|
+
//# sourceMappingURL=memories.d.ts.map
|