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/store/sessions.js
CHANGED
|
@@ -30,10 +30,13 @@ function assertKeyedOnSharedStore(fn, hippoRoot, key) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
function insertSnapshot(db, tenantId, snapshot, now, stamp) {
|
|
33
|
-
const result = db
|
|
34
|
-
|
|
33
|
+
const result = db
|
|
34
|
+
.prepare(`
|
|
35
|
+
INSERT INTO task_snapshots(task, summary, next_step, status, source, session_id, scope, tenant_id, created_at,
|
|
36
|
+
updated_at, owner_subject, origin_project)
|
|
35
37
|
VALUES (?, ?, ?, 'active', ?, ?, ?, ?, ?, ?, ?, ?)
|
|
36
|
-
`)
|
|
38
|
+
`)
|
|
39
|
+
.run(redactSecretsStrict(snapshot.task), redactSecretsStrict(snapshot.summary), redactSecretsStrict(snapshot.next_step), snapshot.source ?? 'cli', snapshot.session_id ?? null, snapshot.scope ?? null, tenantId, now, now, stamp?.owner ?? null, stamp?.origin ?? null);
|
|
37
40
|
return Number(result.lastInsertRowid ?? 0);
|
|
38
41
|
}
|
|
39
42
|
export function saveActiveTaskSnapshot(hippoRoot, tenantId, snapshot, key) {
|
|
@@ -45,8 +48,8 @@ export function saveActiveTaskSnapshot(hippoRoot, tenantId, snapshot, key) {
|
|
|
45
48
|
const now = new Date().toISOString();
|
|
46
49
|
try {
|
|
47
50
|
const id = withWriteScope(db, 'save_active_task', () => {
|
|
48
|
-
db.prepare(`UPDATE task_snapshots SET status = 'superseded', updated_at = ? WHERE status = 'active' AND tenant_id =
|
|
49
|
-
.run(now, tenantId, ...(owned?.params ?? []));
|
|
51
|
+
db.prepare(`UPDATE task_snapshots SET status = 'superseded', updated_at = ? WHERE status = 'active' AND tenant_id = ` +
|
|
52
|
+
`?${owned ? ` AND ${owned.sql}` : ''}`).run(now, tenantId, ...(owned?.params ?? []));
|
|
50
53
|
const inserted = insertSnapshot(db, tenantId, snapshot, now, stamp);
|
|
51
54
|
// An older binary's tenant-wide supersede would close other owners' rows, so the first owner row shuts it out.
|
|
52
55
|
if (stamp)
|
|
@@ -95,15 +98,18 @@ export function loadActiveTaskSnapshot(hippoRoot, tenantId, key) {
|
|
|
95
98
|
return loaded;
|
|
96
99
|
}, openStore);
|
|
97
100
|
}
|
|
98
|
-
/** Default freshness bound for AMBIENT active-task-snapshot reads: 72h rather than 48h so a Friday-evening orphan still
|
|
99
|
-
* override via `loadFreshActiveTaskSnapshot`'s `opts.maxAgeMs`; deliberately no env
|
|
101
|
+
/** Default freshness bound for AMBIENT active-task-snapshot reads: 72h rather than 48h so a Friday-evening orphan still
|
|
102
|
+
* offers continuity on Monday; override via `loadFreshActiveTaskSnapshot`'s `opts.maxAgeMs`; deliberately no env
|
|
103
|
+
* knob. */
|
|
100
104
|
export const SNAPSHOT_AMBIENT_MAX_AGE_MS = 72 * HOUR_MS;
|
|
101
|
-
/** A usable session id: non-null, non-empty string; named so the owner-match rule in `loadFreshActiveTaskSnapshot`
|
|
105
|
+
/** A usable session id: non-null, non-empty string; named so the owner-match rule in `loadFreshActiveTaskSnapshot`
|
|
106
|
+
* states its contract once. */
|
|
102
107
|
function isNonEmptySessionId(value) {
|
|
103
108
|
return typeof value === 'string' && value.length > 0;
|
|
104
109
|
}
|
|
105
|
-
/** Bounded read for AMBIENT snapshot surfaces so orphaned snapshots expire. The owner (both session ids non-empty and
|
|
106
|
-
* all others, null ids included (null === null is no match), get it only if
|
|
110
|
+
/** Bounded read for AMBIENT snapshot surfaces so orphaned snapshots expire. The owner (both session ids non-empty and
|
|
111
|
+
* `===`) always sees its own state; all others, null ids included (null === null is no match), get it only if
|
|
112
|
+
* age(updated_at) <= maxAgeMs (default `SNAPSHOT_AMBIENT_MAX_AGE_MS`), else null. */
|
|
107
113
|
export function loadFreshActiveTaskSnapshot(hippoRoot, tenantId, opts = {}, key) {
|
|
108
114
|
return freshActiveSnapshot(loadActiveTaskSnapshot(hippoRoot, tenantId, key), opts);
|
|
109
115
|
}
|
|
@@ -128,7 +134,10 @@ export function clearActiveTaskSnapshot(hippoRoot, tenantId, clearedStatus = 'cl
|
|
|
128
134
|
const now = new Date().toISOString();
|
|
129
135
|
try {
|
|
130
136
|
// SAFETY: active's shape matches the single `id` column selected above.
|
|
131
|
-
const active = db
|
|
137
|
+
const active = db
|
|
138
|
+
.prepare(`SELECT id FROM task_snapshots WHERE status = 'active' AND tenant_id = ? ORDER BY updated_at DESC, id DESC ` +
|
|
139
|
+
`LIMIT 1`)
|
|
140
|
+
.get(tenantId);
|
|
132
141
|
if (!active?.id) {
|
|
133
142
|
removeActiveTaskMirror(hippoRoot, tenantId);
|
|
134
143
|
return false;
|
|
@@ -141,8 +150,8 @@ export function clearActiveTaskSnapshot(hippoRoot, tenantId, clearedStatus = 'cl
|
|
|
141
150
|
closeHippoDb(db);
|
|
142
151
|
}
|
|
143
152
|
}
|
|
144
|
-
/** Close the `active` task snapshot(s) owned by `sessionId` at session end; the WHERE scopes on `session_id` too so an
|
|
145
|
-
* newer session's snapshot. Returns the number of rows closed. */
|
|
153
|
+
/** Close the `active` task snapshot(s) owned by `sessionId` at session end; the WHERE scopes on `session_id` too so an
|
|
154
|
+
* ending session can never close a newer session's snapshot. Returns the number of rows closed. */
|
|
146
155
|
export function closeTaskSnapshotsForSession(hippoRoot, tenantId, sessionId, status = 'session-ended', key) {
|
|
147
156
|
assertTenantId('closeTaskSnapshotsForSession', tenantId);
|
|
148
157
|
if (key)
|
|
@@ -151,7 +160,10 @@ export function closeTaskSnapshotsForSession(hippoRoot, tenantId, sessionId, sta
|
|
|
151
160
|
const db = openStore(hippoRoot);
|
|
152
161
|
const now = new Date().toISOString();
|
|
153
162
|
try {
|
|
154
|
-
const result = db
|
|
163
|
+
const result = db
|
|
164
|
+
.prepare(`UPDATE task_snapshots SET status = ?, updated_at = ? WHERE status = 'active' AND tenant_id = ? AND ` +
|
|
165
|
+
`session_id = ?${owned ? ` AND ${owned.sql}` : ''}`)
|
|
166
|
+
.run(status, now, tenantId, sessionId, ...(owned?.params ?? []));
|
|
155
167
|
return Number(result.changes ?? 0);
|
|
156
168
|
}
|
|
157
169
|
finally {
|
|
@@ -159,10 +171,13 @@ export function closeTaskSnapshotsForSession(hippoRoot, tenantId, sessionId, sta
|
|
|
159
171
|
}
|
|
160
172
|
}
|
|
161
173
|
function insertSessionEventRow(db, tenantId, event, now) {
|
|
162
|
-
const result = db
|
|
163
|
-
|
|
174
|
+
const result = db
|
|
175
|
+
.prepare(`
|
|
176
|
+
INSERT INTO session_events(session_id, task, event_type, content, source, scope, metadata_json, tenant_id,
|
|
177
|
+
created_at)
|
|
164
178
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
165
|
-
`)
|
|
179
|
+
`)
|
|
180
|
+
.run(event.session_id, event.task ?? null, event.event_type, event.content, event.source ?? 'cli', event.scope ?? null, JSON.stringify(event.metadata ?? {}), tenantId, now);
|
|
166
181
|
return Number(result.lastInsertRowid ?? 0);
|
|
167
182
|
}
|
|
168
183
|
function reloadSessionEvent(db, id) {
|
|
@@ -179,13 +194,15 @@ function reloadSessionEvent(db, id) {
|
|
|
179
194
|
}
|
|
180
195
|
function recentSessionEventsOldestFirst(db, tenantId, sessionId, limit) {
|
|
181
196
|
// SAFETY: recentRows' shape matches the nine columns named in the SELECT below.
|
|
182
|
-
const recentRows = db
|
|
197
|
+
const recentRows = db
|
|
198
|
+
.prepare(`
|
|
183
199
|
SELECT id, session_id, task, event_type, content, source, scope, metadata_json, created_at
|
|
184
200
|
FROM session_events
|
|
185
201
|
WHERE session_id = ? AND tenant_id = ?
|
|
186
202
|
ORDER BY created_at DESC, id DESC
|
|
187
203
|
LIMIT ?
|
|
188
|
-
`)
|
|
204
|
+
`)
|
|
205
|
+
.all(sessionId, tenantId, limit);
|
|
189
206
|
return recentRows.map(rowToSessionEvent).reverse();
|
|
190
207
|
}
|
|
191
208
|
export function appendSessionEvent(hippoRoot, tenantId, event) {
|
|
@@ -232,7 +249,8 @@ export function listSessionEvents(hippoRoot, tenantId, options = {}) {
|
|
|
232
249
|
return rows.map(rowToSessionEvent).reverse();
|
|
233
250
|
}, openStore);
|
|
234
251
|
}
|
|
235
|
-
/** Session_ids with a `session_complete` event newer than `sinceMs`; bounds the sleep auto-promotion scan to a fixed
|
|
252
|
+
/** Session_ids with a `session_complete` event newer than `sinceMs`; bounds the sleep auto-promotion scan to a fixed
|
|
253
|
+
* window. */
|
|
236
254
|
export function findPromotableSessions(hippoRoot, tenantId, sinceMs) {
|
|
237
255
|
assertTenantId('findPromotableSessions', tenantId);
|
|
238
256
|
return onHandle(hippoRoot, (db) => {
|
|
@@ -265,7 +283,8 @@ function selectSessionOwnerAt(db, tenantId, sessionId) {
|
|
|
265
283
|
}
|
|
266
284
|
/** Binds `sessionId` to `owner` unless a binding exists; the count is 1 when this call bound it. */
|
|
267
285
|
function insertSessionOwnerAt(db, tenantId, sessionId, owner, createdAt) {
|
|
268
|
-
const result = db
|
|
286
|
+
const result = db
|
|
287
|
+
.prepare(`INSERT OR IGNORE INTO session_owners(tenant_id, session_id, owner_subject, created_at) VALUES (?, ?, ?, ?)`)
|
|
269
288
|
.run(tenantId, sessionId, owner, createdAt);
|
|
270
289
|
return Number(result.changes ?? 0);
|
|
271
290
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { DatabaseSyncLike } from '../db/index.js';
|
|
2
2
|
import { type MemoryEntry } from '../core/memory.js';
|
|
3
|
-
export declare const SYNC_ACTOR = "agent-memories";
|
|
4
3
|
export type SetAsideWhy = 'note-gone' | 'note-changed' | 'handover' | 'project-merge' | 'project-repair';
|
|
5
4
|
export type SetAsideResult = {
|
|
6
5
|
readonly kind: 'untagged';
|
|
@@ -9,6 +8,7 @@ export type SetAsideResult = {
|
|
|
9
8
|
readonly kind: 'dormant';
|
|
10
9
|
readonly id: string;
|
|
11
10
|
};
|
|
12
|
-
/** Design 6's set-aside on the caller's transaction: a pinned row only loses the tag, any other goes dormant,
|
|
11
|
+
/** Design 6's set-aside on the caller's transaction: a pinned row only loses the tag, any other goes dormant,
|
|
12
|
+
* restorable. */
|
|
13
13
|
export declare function setAsideRow(db: DatabaseSyncLike, tag: string, row: MemoryEntry, why: SetAsideWhy): SetAsideResult;
|
|
14
14
|
//# sourceMappingURL=set-aside.d.ts.map
|
package/dist/store/set-aside.js
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
// Takes an imported agent note out of recall on the caller's transaction; the note sync and the project repair both use
|
|
1
|
+
// Takes an imported agent note out of recall on the caller's transaction; the note sync and the project repair both use
|
|
2
|
+
// it.
|
|
2
3
|
import { appendAuditEvent } from './audit.js';
|
|
4
|
+
import { SYNC_ACTOR } from '../core/agent-memory-tools.js';
|
|
3
5
|
import { insertDormantRow } from './dormant.js';
|
|
4
6
|
import { calculateStrength } from '../core/memory.js';
|
|
5
7
|
import { deleteEntryRowInTx, setEntryTagsInTx } from './entry-writes.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
/** Design 6's set-aside on the caller's transaction: a pinned row only loses the tag, any other goes dormant,
|
|
9
|
+
* restorable. */
|
|
8
10
|
export function setAsideRow(db, tag, row, why) {
|
|
9
11
|
const untagged = { ...row, tags: row.tags.filter((t) => t !== tag) };
|
|
10
|
-
const audit = (metadata) => appendAuditEvent(db, {
|
|
12
|
+
const audit = (metadata) => appendAuditEvent(db, {
|
|
13
|
+
tenantId: row.tenant_id,
|
|
14
|
+
actor: SYNC_ACTOR,
|
|
15
|
+
op: 'agent_memory_set_aside',
|
|
16
|
+
targetId: row.id,
|
|
17
|
+
metadata,
|
|
18
|
+
});
|
|
11
19
|
if (row.pinned) {
|
|
12
20
|
setEntryTagsInTx(db, untagged);
|
|
13
21
|
audit({ why, untagged: true });
|
|
@@ -15,7 +23,12 @@ export function setAsideRow(db, tag, row, why) {
|
|
|
15
23
|
}
|
|
16
24
|
const now = new Date();
|
|
17
25
|
// Sleep's dormant move skips kept rows, so the steps are written out here without its filter.
|
|
18
|
-
insertDormantRow(db, {
|
|
26
|
+
insertDormantRow(db, {
|
|
27
|
+
entry: untagged,
|
|
28
|
+
strength: calculateStrength(row, now),
|
|
29
|
+
reason: 'source-deleted',
|
|
30
|
+
dormantAt: now.toISOString(),
|
|
31
|
+
});
|
|
19
32
|
deleteEntryRowInTx(db, row, SYNC_ACTOR);
|
|
20
33
|
audit({ why });
|
|
21
34
|
return { kind: 'dormant', id: row.id };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// AgentImport on hippo.db: each target holds one bare handle, and a container's calls run on it in one scope.
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { closeHippoDb, isSqliteBusy, outsideRequestStores, withTrialScope, withWriteScope, } from '../../db/index.js';
|
|
6
|
+
import { appendAuditEvent } from '../audit.js';
|
|
7
|
+
import { deleteDormantRow, dormantSnapshotsBySourcePrefix, readDormantSnapshot, replaceDormantEntry, } from '../dormant.js';
|
|
8
|
+
import { stampOriginProject } from '../entry-row.js';
|
|
9
|
+
import { entryIdTakenAt, selectLiveEntriesBySourcePrefix, selectRowsOutsideSourcePrefixAt } from '../entry-reads.js';
|
|
10
|
+
import { renameEntrySourceAndOriginAt, renameEntrySourceAt, setEntryTagsInTx, supersedeEntryAt, writeEntryMirrors, } from '../entry-writes.js';
|
|
11
|
+
import { gatedWrite } from '../gated-write.js';
|
|
12
|
+
import { updateStats } from '../index-and-stats.js';
|
|
13
|
+
import { removeEntryMirrors } from '../mirrors.js';
|
|
14
|
+
import { initStore, openBareHandle } from '../open.js';
|
|
15
|
+
import { projectTagReads } from '../project-tags.js';
|
|
16
|
+
import { findRejectedValue, rejectionDigest } from '../rejection.js';
|
|
17
|
+
import { setAsideRow } from '../set-aside.js';
|
|
18
|
+
import { markSummaryDirtyInTx } from '../summary-dirty.js';
|
|
19
|
+
import { resolveTenantId } from '../tenant.js';
|
|
20
|
+
function containerTx(db, root) {
|
|
21
|
+
return {
|
|
22
|
+
liveBySourcePrefix: (tenantId, prefix) => selectLiveEntriesBySourcePrefix(db, tenantId, prefix),
|
|
23
|
+
dormantBySourcePrefix: (tenantId, prefix) => dormantSnapshotsBySourcePrefix(db, tenantId, prefix),
|
|
24
|
+
readDormant: (tenantId, id) => readDormantSnapshot(db, tenantId, id),
|
|
25
|
+
deleteDormant: (tenantId, id) => {
|
|
26
|
+
deleteDormantRow(db, tenantId, id);
|
|
27
|
+
},
|
|
28
|
+
replaceDormant: (tenantId, id, entry) => replaceDormantEntry(db, tenantId, id, entry),
|
|
29
|
+
entryIdTaken: (id) => entryIdTakenAt(db, id),
|
|
30
|
+
isRejected: (tenantId, text) => findRejectedValue(db, tenantId, rejectionDigest(text)) !== null,
|
|
31
|
+
renameSource: (tenantId, id, from, to) => renameEntrySourceAt(db, tenantId, id, from, to),
|
|
32
|
+
renameSourceAndOrigin: (tenantId, id, move) => renameEntrySourceAndOriginAt(db, tenantId, id, move),
|
|
33
|
+
setTags: (entry) => setEntryTagsInTx(db, entry),
|
|
34
|
+
supersede: (tenantId, id, newId) => supersedeEntryAt(db, tenantId, id, newId),
|
|
35
|
+
markSummaryDirty: (summaryId, tenantId, actor) => markSummaryDirtyInTx(db, summaryId, tenantId, actor),
|
|
36
|
+
appendAudit: (event) => appendAuditEvent(db, event),
|
|
37
|
+
gatedWrite: (entry, opts) => gatedWrite(db, root, entry, opts),
|
|
38
|
+
setAside: (tag, row, why) => setAsideRow(db, tag, row, why),
|
|
39
|
+
stampOrigin: (entry) => stampOriginProject(root, entry),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function importTarget(db, root, close) {
|
|
43
|
+
const tenantId = resolveTenantId({});
|
|
44
|
+
return {
|
|
45
|
+
root,
|
|
46
|
+
tenantId,
|
|
47
|
+
liveBySourcePrefix: (prefix) => selectLiveEntriesBySourcePrefix(db, tenantId, prefix),
|
|
48
|
+
rowsOutsideSourcePrefix: (prefix, origins) => selectRowsOutsideSourcePrefixAt(db, tenantId, prefix, origins),
|
|
49
|
+
projectTagReads: () => projectTagReads(db, tenantId),
|
|
50
|
+
inContainer: (scope, dryRun, work) => {
|
|
51
|
+
const run = () => work(containerTx(db, root));
|
|
52
|
+
return dryRun ? withTrialScope(db, scope, run) : withWriteScope(db, scope, run);
|
|
53
|
+
},
|
|
54
|
+
writeMirror: (entry) => writeEntryMirrors(root, entry),
|
|
55
|
+
removeMirror: (id) => removeEntryMirrors(root, id),
|
|
56
|
+
bumpRemembered: (count) => updateStats(root, { remembered: count }),
|
|
57
|
+
close,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export const sqliteAgentImport = {
|
|
61
|
+
create: (root) => initStore(root),
|
|
62
|
+
open: (root, opts) => {
|
|
63
|
+
const db = openBareHandle(root, { busyWaitMs: opts.busyWaitMs });
|
|
64
|
+
return importTarget(db, root, () => closeHippoDb(db));
|
|
65
|
+
},
|
|
66
|
+
openStandIn: () => {
|
|
67
|
+
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'hippo-agent-memories-'));
|
|
68
|
+
// Its folder is deleted at close, so a request scope must not keep the file open past that.
|
|
69
|
+
const db = outsideRequestStores(() => openBareHandle(root));
|
|
70
|
+
return importTarget(db, root, () => {
|
|
71
|
+
closeHippoDb(db);
|
|
72
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
isBusy: (err) => isSqliteBusy(err),
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=agent-import.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Cards } from '../port-groups.js';
|
|
2
|
+
import type { Sync } from '../port.js';
|
|
3
|
+
export declare function sqliteCards(hippoRoot: string): Sync<Cards>;
|
|
4
|
+
/** The group as a served store answers it: a throw rejects as another store's would. */
|
|
5
|
+
export declare function servedCards(sync: Sync<Cards>): Cards;
|
|
6
|
+
//# sourceMappingURL=cards-group.d.ts.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// hippo.db's Cards group: the agent work board.
|
|
2
|
+
import { loadCardDetail } from '../card-detail.js';
|
|
3
|
+
import { addCardComment, blockCard, claimCard, completeCard, createCard, heartbeatCard, listCards, loadCard, loadCardRuns, reclaimExpiredCards, reviewCard, } from '../cards.js';
|
|
4
|
+
export function sqliteCards(hippoRoot) {
|
|
5
|
+
return {
|
|
6
|
+
create: (tenantId, input) => createCard(hippoRoot, tenantId, { ...input, dependsOn: input.dependsOn ? [...input.dependsOn] : undefined }),
|
|
7
|
+
load: (tenantId, id) => loadCard(hippoRoot, tenantId, id),
|
|
8
|
+
detail: (tenantId, id) => loadCardDetail(hippoRoot, tenantId, id),
|
|
9
|
+
list: (tenantId, opts) => listCards(hippoRoot, tenantId, opts),
|
|
10
|
+
runs: (tenantId, id) => loadCardRuns(hippoRoot, tenantId, id),
|
|
11
|
+
claim: (tenantId, id, runtime, sessionId) => claimCard(hippoRoot, tenantId, id, runtime, sessionId),
|
|
12
|
+
heartbeat: (tenantId, id, runId) => heartbeatCard(hippoRoot, tenantId, id, runId),
|
|
13
|
+
block: (tenantId, id, reason, runId) => blockCard(hippoRoot, tenantId, id, reason, runId),
|
|
14
|
+
review: (tenantId, id, runId) => reviewCard(hippoRoot, tenantId, id, runId),
|
|
15
|
+
complete: (tenantId, id, outcome, runId) => completeCard(hippoRoot, tenantId, id, outcome, runId),
|
|
16
|
+
reclaimExpired: (tenantId) => reclaimExpiredCards(hippoRoot, tenantId),
|
|
17
|
+
comment: (tenantId, cardId, author, body) => addCardComment(hippoRoot, tenantId, cardId, author, body),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/** The group as a served store answers it: a throw rejects as another store's would. */
|
|
21
|
+
export function servedCards(sync) {
|
|
22
|
+
return {
|
|
23
|
+
create: async (tenantId, input) => sync.create(tenantId, input),
|
|
24
|
+
load: async (tenantId, id) => sync.load(tenantId, id),
|
|
25
|
+
detail: async (tenantId, id) => sync.detail(tenantId, id),
|
|
26
|
+
list: async (tenantId, opts) => sync.list(tenantId, opts),
|
|
27
|
+
runs: async (tenantId, id) => sync.runs(tenantId, id),
|
|
28
|
+
claim: async (tenantId, id, runtime, sessionId) => sync.claim(tenantId, id, runtime, sessionId),
|
|
29
|
+
heartbeat: async (tenantId, id, runId) => sync.heartbeat(tenantId, id, runId),
|
|
30
|
+
block: async (tenantId, id, reason, runId) => sync.block(tenantId, id, reason, runId),
|
|
31
|
+
review: async (tenantId, id, runId) => sync.review(tenantId, id, runId),
|
|
32
|
+
complete: async (tenantId, id, outcome, runId) => sync.complete(tenantId, id, outcome, runId),
|
|
33
|
+
reclaimExpired: async (tenantId) => sync.reclaimExpired(tenantId),
|
|
34
|
+
comment: async (tenantId, cardId, author, body) => sync.comment(tenantId, cardId, author, body),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=cards-group.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Conflicts } from '../port-groups.js';
|
|
2
|
+
import type { Sync } from '../port.js';
|
|
3
|
+
export declare function sqliteConflicts(hippoRoot: string): Sync<Conflicts>;
|
|
4
|
+
/** The group as a served store answers it: a throw rejects as another store's would. */
|
|
5
|
+
export declare function servedConflicts(sync: Sync<Conflicts>): Conflicts;
|
|
6
|
+
//# sourceMappingURL=conflicts-group.d.ts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// hippo.db's Conflicts group: listing and resolving the memory_conflicts rows.
|
|
2
|
+
import { listMemoryConflicts, listTouchableConflicts, resolveConflict } from '../conflicts.js';
|
|
3
|
+
export function sqliteConflicts(hippoRoot) {
|
|
4
|
+
return {
|
|
5
|
+
list: (tenantId, status) => listMemoryConflicts(hippoRoot, status, tenantId ?? undefined),
|
|
6
|
+
listTouchable: (tenantId, status, actor) => listTouchableConflicts(hippoRoot, status, tenantId, actor),
|
|
7
|
+
resolve: (tenantId, request, opts) => resolveConflict(hippoRoot, { ...request, tenantId }, opts),
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/** The group as a served store answers it: a throw rejects as another store's would. */
|
|
11
|
+
export function servedConflicts(sync) {
|
|
12
|
+
return {
|
|
13
|
+
list: async (tenantId, status) => sync.list(tenantId, status),
|
|
14
|
+
listTouchable: async (tenantId, status, actor) => sync.listTouchable(tenantId, status, actor),
|
|
15
|
+
resolve: async (tenantId, request, opts) => sync.resolve(tenantId, request, opts),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=conflicts-group.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ConnectorEvents, Sync } from '../port.js';
|
|
2
2
|
export declare function sqliteConnectorEvents(hippoRoot: string): Sync<ConnectorEvents>;
|
|
3
|
-
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
3
|
+
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
4
|
+
* another store's would. */
|
|
4
5
|
export declare function servedConnectorEvents(sync: Sync<ConnectorEvents>): ConnectorEvents;
|
|
5
6
|
//# sourceMappingURL=connector-events-group.d.ts.map
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
// hippo.db's half of the ConnectorEvents store group: each call on a handle of its own.
|
|
2
|
-
import { archiveDeletedArtifact, githubEventRecord, githubEventSeenAt, githubRouting, insertGitHubDlq, markGitHubEventSeen } from '../connectors/github.js';
|
|
3
|
-
import { insertSlackDlq, markSlackEventSeen, rawMemoryIdForArtifactAt, slackEventRecord, slackEventSeenAt, slackTeamRoute } from '../connectors/slack.js';
|
|
2
|
+
import { archiveDeletedArtifact, githubEventRecord, githubEventSeenAt, githubRouting, insertGitHubDlq, markGitHubEventSeen, } from '../connectors/github.js';
|
|
3
|
+
import { insertSlackDlq, markSlackEventSeen, rawMemoryIdForArtifactAt, slackEventRecord, slackEventSeenAt, slackTeamRoute, } from '../connectors/slack.js';
|
|
4
4
|
import { onHandle } from '../open.js';
|
|
5
5
|
function eventRecord(hippoRoot, event) {
|
|
6
|
-
return event.connector === 'slack'
|
|
6
|
+
return event.connector === 'slack'
|
|
7
|
+
? slackEventRecord(hippoRoot, event.eventId)
|
|
8
|
+
: githubEventRecord(hippoRoot, event.idempotencyKey);
|
|
7
9
|
}
|
|
8
10
|
function markEventSeen(hippoRoot, event) {
|
|
9
11
|
if (event.connector === 'slack')
|
|
@@ -19,7 +21,15 @@ function deletionTarget(hippoRoot, { event, artifactRef, tenantId }) {
|
|
|
19
21
|
}
|
|
20
22
|
function archiveArtifact(hippoRoot, { tenantId, actor, artifactRef, reason, event }) {
|
|
21
23
|
const { idempotencyKey, deliveryId, eventName } = event;
|
|
22
|
-
return archiveDeletedArtifact(hippoRoot, {
|
|
24
|
+
return archiveDeletedArtifact(hippoRoot, {
|
|
25
|
+
tenantId,
|
|
26
|
+
artifactRef,
|
|
27
|
+
idempotencyKey,
|
|
28
|
+
deliveryId,
|
|
29
|
+
eventName,
|
|
30
|
+
reason,
|
|
31
|
+
who: actor,
|
|
32
|
+
});
|
|
23
33
|
}
|
|
24
34
|
export function sqliteConnectorEvents(hippoRoot) {
|
|
25
35
|
return {
|
|
@@ -29,10 +39,11 @@ export function sqliteConnectorEvents(hippoRoot) {
|
|
|
29
39
|
archiveDeletedArtifact: (archive) => archiveArtifact(hippoRoot, archive),
|
|
30
40
|
slackTeamRoute: (teamId) => slackTeamRoute(hippoRoot, teamId),
|
|
31
41
|
githubRouting: (query) => githubRouting(hippoRoot, query),
|
|
32
|
-
parkDeadLetter: (letter) =>
|
|
42
|
+
parkDeadLetter: (letter) => letter.connector === 'slack' ? insertSlackDlq(hippoRoot, letter) : insertGitHubDlq(hippoRoot, letter),
|
|
33
43
|
};
|
|
34
44
|
}
|
|
35
|
-
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
45
|
+
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
46
|
+
* another store's would. */
|
|
36
47
|
export function servedConnectorEvents(sync) {
|
|
37
48
|
return {
|
|
38
49
|
eventRecord: async (event) => sync.eventRecord(event),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ConnectorWrites, Sync } from '../port.js';
|
|
2
2
|
/** Each call on its own handle; the mirror follows the commit, so a duplicate or a rolled-back write leaves none. */
|
|
3
3
|
export declare function sqliteConnectorWrites(hippoRoot: string): Sync<ConnectorWrites>;
|
|
4
|
-
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
4
|
+
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
5
|
+
* another store's would. */
|
|
5
6
|
export declare function servedConnectorWrites(sync: Sync<ConnectorWrites>): ConnectorWrites;
|
|
6
7
|
//# sourceMappingURL=connector-writes-group.d.ts.map
|
|
@@ -16,13 +16,19 @@ function logEvent(db, event, memoryId) {
|
|
|
16
16
|
return markGitHubEventSeenAt(db, { idempotencyKey, deliveryId, eventName, memoryId });
|
|
17
17
|
}
|
|
18
18
|
function loggedMemory(db, event) {
|
|
19
|
-
return event.connector === 'slack'
|
|
19
|
+
return event.connector === 'slack'
|
|
20
|
+
? slackEventMemoryAt(db, event.eventId)
|
|
21
|
+
: githubEventMemoryAt(db, event.idempotencyKey);
|
|
20
22
|
}
|
|
21
|
-
/** The record, then the log row, go in after the memory row and ahead of its remember row, as a second store must order
|
|
23
|
+
/** The record, then the log row, go in after the memory row and ahead of its remember row, as a second store must order
|
|
24
|
+
* them. */
|
|
22
25
|
function writeWithCompanions(db, { entry, actor, event, quarantine }) {
|
|
23
26
|
writeInOwnTenant(db, entry, actor, (handle, memoryId) => {
|
|
24
|
-
if (quarantine)
|
|
25
|
-
recordQuarantine(handle, {
|
|
27
|
+
if (quarantine) {
|
|
28
|
+
recordQuarantine(handle, {
|
|
29
|
+
tenantId: entry.tenant_id, memoryId, originalScope: quarantine.originalScope, reason: quarantine.reason, actor,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
26
32
|
if (event && !logEvent(handle, event, memoryId))
|
|
27
33
|
throw new EventAlreadyLogged();
|
|
28
34
|
});
|
|
@@ -55,7 +61,8 @@ export function sqliteConnectorWrites(hippoRoot) {
|
|
|
55
61
|
},
|
|
56
62
|
};
|
|
57
63
|
}
|
|
58
|
-
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
64
|
+
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
65
|
+
* another store's would. */
|
|
59
66
|
export function servedConnectorWrites(sync) {
|
|
60
67
|
return {
|
|
61
68
|
writeConnectorEntry: async (write) => sync.writeConnectorEntry(write),
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Consolidation } from '../port/consolidation.js';
|
|
2
|
+
/** Sleep's store work on the hippo.db under `hippoRoot`, each call on its own short-lived handle. */
|
|
3
|
+
export declare function sqliteConsolidation(hippoRoot: string): Consolidation;
|
|
4
|
+
//# sourceMappingURL=consolidation-group.d.ts.map
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { SLEEP_DB_WAIT_MS } from '../../db/index.js';
|
|
2
|
+
import { recordAuditEventsRowByRow, reportAuditWriteFailure } from '../audit.js';
|
|
3
|
+
import { replaceDetectedConflicts } from '../conflicts.js';
|
|
4
|
+
import { commitInChunks, deleteEntriesOneByOne, failedUnitOf, memoriesBackingObjects } from '../delete-and-batch.js';
|
|
5
|
+
import { expireDormantBefore } from '../dormant.js';
|
|
6
|
+
import { loadAllEntries, loadAllEntriesWithBase, loadCurrentDistilledEntries } from '../entry-reads.js';
|
|
7
|
+
import { ftsDrift } from '../entry-row.js';
|
|
8
|
+
import { writeEntriesTogether, writeEntry } from '../entry-writes.js';
|
|
9
|
+
import { loadPendingExtractionTenants, markPendingProcessedUpTo } from '../graph-queue.js';
|
|
10
|
+
import { moveHalfLives, recordedHalfLifeBase } from '../half-life.js';
|
|
11
|
+
import { appendConsolidationRun, incrementSleepCount, loadSessionDecayContext } from '../index-and-stats.js';
|
|
12
|
+
import { findPromotableSessions, listSessionEvents, traceExistsForSession } from '../sessions.js';
|
|
13
|
+
import { applyRebuildResult, childrenKey, clearSummaryDirtyAfterBuild, loadAllDirtySummaries, loadAllL2Summaries, loadChildrenOfSummaries, loadChildrenOfSummary, } from '../summaries.js';
|
|
14
|
+
import { lazyTombstoneChecks } from '../tombstone-checks.js';
|
|
15
|
+
import { loadStoredParticles, saveStoredParticles } from '../vector-index.js';
|
|
16
|
+
import { errorMessage } from '../../util/log.js';
|
|
17
|
+
/** Sleep's store work on the hippo.db under `hippoRoot`, each call on its own short-lived handle. */
|
|
18
|
+
export function sqliteConsolidation(hippoRoot) {
|
|
19
|
+
return {
|
|
20
|
+
entriesWithBase: () => loadAllEntriesWithBase(hippoRoot),
|
|
21
|
+
objectBackedIds: () => memoriesBackingObjects(hippoRoot),
|
|
22
|
+
ftsDrift: (repair) => ftsDrift(hippoRoot, repair),
|
|
23
|
+
sessionDecayContext: () => loadSessionDecayContext(hippoRoot),
|
|
24
|
+
tombstoneChecks: (dryRun) => lazyTombstoneChecks(hippoRoot, dryRun),
|
|
25
|
+
halfLifeBase: () => recordedHalfLifeBase(hippoRoot),
|
|
26
|
+
moveHalfLives: (to, opts, plan) => moveHalfLives(hippoRoot, to, opts, plan),
|
|
27
|
+
promotableSessions: (tenantId, sinceMs) => findPromotableSessions(hippoRoot, tenantId, sinceMs),
|
|
28
|
+
traceExists: (tenantId, sessionId) => traceExistsForSession(hippoRoot, tenantId, sessionId),
|
|
29
|
+
sessionEvents: (tenantId, opts) => listSessionEvents(hippoRoot, tenantId, opts),
|
|
30
|
+
storedParticles: () => loadStoredParticles(hippoRoot),
|
|
31
|
+
saveParticles: (particles) => saveStoredParticles(hippoRoot, particles),
|
|
32
|
+
// The wait is sleep's own, not a server request's 250 ms.
|
|
33
|
+
commitFlush: (components, opts) => commitInChunks(hippoRoot, components, { ...opts, busyWaitMs: SLEEP_DB_WAIT_MS }),
|
|
34
|
+
expireDormant: (cutoffIso, opts) => expireDormantBefore(hippoRoot, cutoffIso, { ...opts, busyWaitMs: SLEEP_DB_WAIT_MS }),
|
|
35
|
+
replaceConflicts: (detected, detectedAt) => replaceDetectedConflicts(hippoRoot, detected, detectedAt),
|
|
36
|
+
recordRun: (run) => appendConsolidationRun(hippoRoot, run),
|
|
37
|
+
countSleep: () => incrementSleepCount(hippoRoot),
|
|
38
|
+
auditEachRow(events) {
|
|
39
|
+
const failed = recordAuditEventsRowByRow(hippoRoot, events);
|
|
40
|
+
for (const { event, error } of failed)
|
|
41
|
+
reportAuditWriteFailure(event.op, errorMessage(error), event.targetId);
|
|
42
|
+
return failed.length;
|
|
43
|
+
},
|
|
44
|
+
reportAuditFailure: (op, reason) => reportAuditWriteFailure(op, reason),
|
|
45
|
+
allEntries: () => loadAllEntries(hippoRoot),
|
|
46
|
+
currentDistilledEntries: () => loadCurrentDistilledEntries(hippoRoot),
|
|
47
|
+
deleteOneByOne: (targets, opts) => deleteEntriesOneByOne(hippoRoot, targets, opts),
|
|
48
|
+
failedUnitOf,
|
|
49
|
+
dirtyGraphTenants: () => loadPendingExtractionTenants(hippoRoot),
|
|
50
|
+
markGraphDrained: (tenantId, maxId) => markPendingProcessedUpTo(hippoRoot, tenantId, maxId),
|
|
51
|
+
writeEntry: (entry) => writeEntry(hippoRoot, entry),
|
|
52
|
+
writeTogether: (entries) => writeEntriesTogether(hippoRoot, entries),
|
|
53
|
+
dirtySummaries: (limit) => loadAllDirtySummaries(hippoRoot, limit),
|
|
54
|
+
childrenOfSummary: (summaryId, tenantId) => loadChildrenOfSummary(hippoRoot, summaryId, tenantId),
|
|
55
|
+
childrenOfSummaries(summaries) {
|
|
56
|
+
const byParent = loadChildrenOfSummaries(hippoRoot, summaries);
|
|
57
|
+
return (summary) => byParent.get(childrenKey(summary.tenant_id, summary.id)) ?? [];
|
|
58
|
+
},
|
|
59
|
+
applyRebuild: (summary, patch) => applyRebuildResult(hippoRoot, summary, patch),
|
|
60
|
+
clearSummaryDirty: (summaryId, tenantId, actor, source) => clearSummaryDirtyAfterBuild(hippoRoot, summaryId, tenantId, actor, source),
|
|
61
|
+
unprofiledTopicSummaries: () => loadAllL2Summaries(hippoRoot),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=consolidation-group.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { pagedDescendants } from '../descendant-page.js';
|
|
2
|
-
import { countSessionRawMemories, loadSessionRawMemories, selectChildrenByParent, selectEntriesByIds } from '../entry-reads.js';
|
|
2
|
+
import { countSessionRawMemories, loadSessionRawMemories, selectChildrenByParent, selectEntriesByIds, } from '../entry-reads.js';
|
|
3
3
|
import { onHandle, openStore } from '../open.js';
|
|
4
4
|
export function sqliteDagReads(hippoRoot) {
|
|
5
5
|
return {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Dormant } from '../port-groups.js';
|
|
2
|
+
import type { Sync } from '../port.js';
|
|
3
|
+
export declare function sqliteDormant(hippoRoot: string): Sync<Dormant>;
|
|
4
|
+
/** The group as a served store answers it: a throw rejects as another store's would. */
|
|
5
|
+
export declare function servedDormant(sync: Sync<Dormant>): Dormant;
|
|
6
|
+
//# sourceMappingURL=dormant-group.d.ts.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// hippo.db's Dormant group: the memories sleep set aside, listed, restored or forgotten for good.
|
|
2
|
+
import { forgetDormantMemory, holdsDormantMemory, loadDormantMemories, restoreDormantMemory } from '../dormant.js';
|
|
3
|
+
import { updateStatsUnlessBusy } from '../index-and-stats.js';
|
|
4
|
+
import { touchableScopeSql } from '../rule-sql.js';
|
|
5
|
+
export function sqliteDormant(hippoRoot) {
|
|
6
|
+
return {
|
|
7
|
+
list: (tenantId, ownScope, opts) => loadDormantMemories(hippoRoot, tenantId, opts, touchableScopeSql('', ownScope)),
|
|
8
|
+
holds: (tenantId, ownScope, id) => holdsDormantMemory(hippoRoot, tenantId, id, touchableScopeSql('', ownScope)),
|
|
9
|
+
restore: (tenantId, request) => restoreDormantMemory(hippoRoot, { ...request, tenantId }),
|
|
10
|
+
forget(tenantId, ownScope, id, actor) {
|
|
11
|
+
const admit = touchableScopeSql('', ownScope);
|
|
12
|
+
if (!forgetDormantMemory(hippoRoot, { tenantId, id, actor, admit }))
|
|
13
|
+
return false;
|
|
14
|
+
// Counted like every other permanent removal (forget, archiveRaw).
|
|
15
|
+
updateStatsUnlessBusy(hippoRoot, { forgotten: 1 }, `removed ${id}`);
|
|
16
|
+
return true;
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/** The group as a served store answers it: a throw rejects as another store's would. */
|
|
21
|
+
export function servedDormant(sync) {
|
|
22
|
+
return {
|
|
23
|
+
list: async (tenantId, ownScope, opts) => sync.list(tenantId, ownScope, opts),
|
|
24
|
+
holds: async (tenantId, ownScope, id) => sync.holds(tenantId, ownScope, id),
|
|
25
|
+
restore: async (tenantId, request) => sync.restore(tenantId, request),
|
|
26
|
+
forget: async (tenantId, ownScope, id, actor) => sync.forget(tenantId, ownScope, id, actor),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=dormant-group.js.map
|
|
@@ -2,17 +2,20 @@ import { type DatabaseSyncLike } from '../../db/index.js';
|
|
|
2
2
|
import { type MemoryEntry } from '../../core/memory.js';
|
|
3
3
|
import { type ArchiveOpts } from '../raw-archive.js';
|
|
4
4
|
import type { EntryWrite, EntryWrites, OutcomeWrite, RawArchive, Sync } from '../port.js';
|
|
5
|
-
import { type
|
|
6
|
-
/** Each call on its own handle; mirrors and the forgotten counter follow the commit, so a rolled-back write leaves
|
|
5
|
+
import { type WriteEntryInternalOptions } from '../entry-writes.js';
|
|
6
|
+
/** Each call on its own handle; mirrors and the forgotten counter follow the commit, so a rolled-back write leaves
|
|
7
|
+
* neither. */
|
|
7
8
|
export declare function sqliteEntryWrites(hippoRoot: string): Sync<EntryWrites>;
|
|
8
9
|
/** A store-side hook writes on the row's handle inside its write scope, so its throw undoes the row. */
|
|
9
|
-
export declare function writeEntryAt(hippoRoot: string, { entry, actor }: EntryWrite, afterWrite?:
|
|
10
|
-
/** A trace link follows the commit on the same handle and names only the ids applied, so a rolled-back outcome leaves
|
|
10
|
+
export declare function writeEntryAt(hippoRoot: string, { entry, actor }: EntryWrite, afterWrite?: WriteEntryInternalOptions['afterWrite']): void;
|
|
11
|
+
/** A trace link follows the commit on the same handle and names only the ids applied, so a rolled-back outcome leaves
|
|
12
|
+
* none. */
|
|
11
13
|
export declare function applyOutcomeAt(hippoRoot: string, outcome: OutcomeWrite, traceId?: number): string[];
|
|
12
|
-
/** Reach is checked inside the archive's write scope. A store-side hook writes on the same handle inside that scope, so
|
|
14
|
+
/** Reach is checked inside the archive's write scope. A store-side hook writes on the same handle inside that scope, so
|
|
15
|
+
* its throw undoes the archive. */
|
|
13
16
|
export declare function archiveRawAt(hippoRoot: string, archive: RawArchive, afterArchive?: ArchiveOpts['afterArchive']): string;
|
|
14
17
|
/** The refusal row lands after `write` has rolled back, in a fresh implicit transaction the aborted one cannot undo. */
|
|
15
18
|
export declare function auditingRefusal<T>(db: DatabaseSyncLike, actor: string, write: () => T): T;
|
|
16
19
|
/** writeEntryAt on the caller's handle, so a sibling group can read on it after the scope has unwound. */
|
|
17
|
-
export declare function writeInOwnTenant(db: DatabaseSyncLike, entry: MemoryEntry, actor: string, afterWrite?:
|
|
20
|
+
export declare function writeInOwnTenant(db: DatabaseSyncLike, entry: MemoryEntry, actor: string, afterWrite?: WriteEntryInternalOptions['afterWrite']): void;
|
|
18
21
|
//# sourceMappingURL=entry-writes-group.d.ts.map
|